设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 287|回复: 0
打印 上一主题 下一主题

[交流讨论] 求ACE大佬看下脚本,为什么我设置ID地图,不实现黑暗

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1063
在线时间
89 小时
注册时间
2023-12-26
帖子
127
跳转到指定楼层
1
发表于 2024-2-7 10:49:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
求ACE大佬看下脚本,为什么我设置ID地图,不实现黑暗,,,我从三国搬来的烛光脚本。说是只要设置地图ID就行。,我搬到别处不行。说要注释,我又去重装机兵搬来注释。不行。


我想要图上那个效果。。。。一直弄不来,有没大佬改下,变成通用脚本,只要让小白设置地图ID就行?谢谢.

#==============================================================================
# ★ RGSS3_視界制限 Ver1.2
#==============================================================================
=begin

作者:tomoaky
webサイト:ひきも記 (http://hikimoki.sakura.ne.jp/)

設定した番号のマップだけ視界を制限します。

アクター、職業、武器(防具)、ステートなどのメモ欄にタグを書き込むことで
視界制限のサイズを補正することができます。
  例)<視界補正 32>
視界が 32 ドット広がります。
視界補正値の計算をおこなうのは戦闘メンバーのみとなります。

ゲーム変数(初期設定では9番)を使って視界のサイズを補正できます。

実際の視界制限サイズは上記の設定値をすべて加算したものになります。
ただし、マップに視界制限値が設定されていない場合はすべて無効です。

プレイヤーの画面上の座標が常に変わるような状況(1画面分の小さなマップなど)、
視界補正値がリアルタイムに変化する状況などでは頻繁にスプライトの再描画を
実行するため処理が重くなります

動作に必要な画像
  Graphics/System/sight_shadow.png
  
使用するゲーム変数(初期設定)
  0009

2013.01.22  Ver1.2
  ・毎フレーム再描画をおこなっていた処理を改善
  ・環境によってエラー落ちの原因となる部分を修正
  
2012.03.07  Ver1.11
 ・メニューから復帰したときに視界制限が途切れる不具合を修正
  
2012.02.05  Ver1.1
  ・タイマーが隠れてしまわないようにZ座標を調整
  ・ゲーム変数を使って視界制限サイズを補正する機能を追加
  
2012.01.20  Ver1.0
  公開

=end


#=begin
#==============================================================================
# □ 設定項目
#==============================================================================
module TMBLSIGHT
  # 何番のマップをどれだけ視界制限するか
  # 例)SIGHT[3] = 128  # 3番のマップの視界を128ドット四方に制限する
  SIGHT = {}
    SIGHT[1] = 360  # 这些是设置地图的视野范围的
  SIGHT[023] = 60
  SIGHT[024] = 60
  #SIGHT[865] = 120
  VN_SIGHT = 1    # 視界のサイズ補正に利用するゲーム変数番号
end

#==============================================================================
# □ RPG::BaseItem
#==============================================================================
class RPG::BaseItem
  #--------------------------------------------------------------------------
  # ○ 視界制限の補正値
  #--------------------------------------------------------------------------
  def sight_power
    unless @sight_power
      @sight_power = /<視界補正\s*(\-*\d+)\s*>/ =~ @note ? $1.to_i : 0
    end
    @sight_power
  end
end

#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor
  #--------------------------------------------------------------------------
  # ○ 視界制限の補正値
  #--------------------------------------------------------------------------
  def sight_power
    feature_objects.inject(0) {|result, object| result + object.sight_power }
  end
end

#==============================================================================
# □ Sprite_SightShadow
#==============================================================================
class Sprite_SightShadow < Sprite
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(viewport = nil)
    super(viewport)
    self.z = 199
    self.bitmap = Bitmap.new(Graphics.width, Graphics.height)
    @bitmap_shadow = Bitmap.new("Graphics/System/sight_shadow")
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  def dispose
    self.bitmap.dispose
    @bitmap_shadow.dispose
    super
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    if TMBLSIGHT::SIGHT[$game_map.map_id]
      self.visible = true
      w = TMBLSIGHT::SIGHT[$game_map.map_id]      # マップに設定された補正値
      w += $game_variables[TMBLSIGHT::VN_SIGHT]   # ゲーム変数による補正値
      $game_party.battle_members.each do |actor|
        w = [w + actor.sight_power, 48].max       # 戦闘メンバーの補正値
      end
      x = $game_player.screen_x - w / 2
      y = $game_player.screen_y - w / 2 - 16
      if w != @last_w || x != @last_x || y != @last_y
        @last_w = w
        @last_x = x
        @last_y = y
        self.bitmap.clear
        rect = Rect.new(x, y, w, w)
        self.bitmap.stretch_blt(rect, @bitmap_shadow, @bitmap_shadow.rect)
        color = Color.new(0, 0, 0)
        self.bitmap.fill_rect(0, 0, Graphics.width, y, color)
        self.bitmap.fill_rect(0, y + w, Graphics.width, Graphics.height - y - w, color)
        self.bitmap.fill_rect(0, y, x, w, color)
        self.bitmap.fill_rect(x + w, y, Graphics.width - x - w, w, color)
      end
    else
      self.visible = false
    end
  end
end

#==============================================================================
# ■ Spriteset_Map
#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias tmblsight_spriteset_map_initialize initialize
  def initialize
    tmblsight_spriteset_map_initialize
    create_sight_shadow
  end
  #--------------------------------------------------------------------------
  # ○ 視界制限スプライトの作成
  #--------------------------------------------------------------------------
  def create_sight_shadow
    @sight_shadow_sprite = Sprite_SightShadow.new(@viewport2)
    update_sight_shadow
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  alias tmblsight_spriteset_map_dispose dispose
  def dispose
    dispose_sight_shadow
    tmblsight_spriteset_map_dispose
  end
  #--------------------------------------------------------------------------
  # ○ 視界制限スプライトの解放
  #--------------------------------------------------------------------------
  def dispose_sight_shadow
    @sight_shadow_sprite.dispose
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias tmblsight_spriteset_map_update update
  def update
    update_sight_shadow
    tmblsight_spriteset_map_update
  end
  #--------------------------------------------------------------------------
  # ○ 視界制限スプライトの更新
  #--------------------------------------------------------------------------
  def update_sight_shadow
    @sight_shadow_sprite.update if @sight_shadow_sprite
  end
end

#=end
====================================

1B071E07D0F75D559F76DD2DEA39B554.png (179.74 KB, 下载次数: 31)

1B071E07D0F75D559F76DD2DEA39B554.png
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-22 02:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表