Project1

标题: 关于脚本控制问题。。 [打印本页]

作者: 绯红の夜魔    时间: 2015-1-3 03:15
标题: 关于脚本控制问题。。
紧接着问题又来了。。。QVQ
想用事件脚本来控制脚本开关。。
例如这个视野脚本。。

怎么写才能控制视野大小和开关。。
作者: 绯红の夜魔    时间: 2015-1-3 04:00
本帖最后由 绯红の夜魔 于 2015-1-3 04:11 编辑

脚本附上。
RUBY 代码复制
  1. #==============================================================================
  2. # ★ RGSS3_視界制限 Ver1.11
  3. #==============================================================================
  4. =begin
  5.  
  6. 作者:tomoaky
  7. webサイト:ひきも記 ([url]http://hikimoki.sakura.ne.jp/[/url])
  8.  
  9. 設定した番号のマップだけ視界を制限します。
  10.  
  11. アクター、職業、武器(防具)のメモ欄に下のようなタグを書き込むことで
  12. 視界制限のサイズを補正することができます。
  13. 例)<視界補正 32>
  14. 視界が 32 ドット広がります。
  15. 視界補正値の計算をおこなうのは戦闘メンバーのみとなります。
  16.  
  17. ゲーム変数(初期設定では9番)を使って視界のサイズを補正できます。
  18.  
  19. 実際の視界制限サイズは上記の設定値をすべて加算したものになります。
  20. ただし、マップに視界制限値が設定されていない場合はすべて無効です。
  21.  
  22. 画面全体を覆うスプライトを毎フレーム再描画しているため
  23. 多少重くなります。
  24.  
  25. 動作に必要な画像
  26.   Graphics/System/sight_shadow.png
  27.  
  28. 使用するゲーム変数(初期設定)
  29.   0009
  30.  
  31. 2012.03.07  Ver1.11
  32.  ・メニューから復帰したときに視界制限が途切れる不具合を修正
  33.  
  34. 2012.02.05  Ver1.1
  35.   ・タイマーが隠れてしまわないようにZ座標を調整
  36.   ・ゲーム変数を使って視界制限サイズを補正する機能を追加
  37.  
  38. 2012.01.20  Ver1.0
  39.   公開
  40.  
  41. =end
  42.  
  43. #==============================================================================
  44. # □ 設定項目
  45. #==============================================================================
  46. module TMBLSIGHT
  47.   # 何番のマップをどれだけ視界制限するか
  48.   # 例)SIGHT[3] = 128  # 3番のマップの視界を128ドット四方に制限する
  49.   SIGHT = {}
  50.   SIGHT[1] = 600
  51.   SIGHT[10] = 200
  52.   VN_SIGHT = 999   # 視界のサイズ補正に利用するゲーム変数番号
  53. end
  54.  
  55. #==============================================================================
  56. # □ RPG::BaseItem
  57. #==============================================================================
  58. class RPG::BaseItem
  59.   #--------------------------------------------------------------------------
  60.   # ○ 視界制限の補正値
  61.   #--------------------------------------------------------------------------
  62.   def sight_power
  63.     unless @sight_power
  64.       @sight_power = /<視界補正\s*(\-*\d+)\s*>/ =~ @note ? $1.to_i : 0
  65.     end
  66.     @sight_power
  67.   end
  68. end
  69.  
  70. #==============================================================================
  71. # ■ Game_Actor
  72. #==============================================================================
  73. class Game_Actor
  74.   #--------------------------------------------------------------------------
  75.   # ○ 視界制限の補正値
  76.   #--------------------------------------------------------------------------
  77.   def sight_power
  78.     result = 0
  79.     feature_objects.each {|object| result += object.sight_power}
  80.     result
  81.   end
  82. end
  83.  
  84. #==============================================================================
  85. # □ Sprite_SightShadow
  86. #==============================================================================
  87. class Sprite_SightShadow < Sprite
  88.   #--------------------------------------------------------------------------
  89.   # ● オブジェクト初期化
  90.   #--------------------------------------------------------------------------
  91.   def initialize(viewport = nil)
  92.     super(viewport)
  93.     self.z = 50
  94.     self.bitmap = Bitmap.new(Graphics.width, Graphics.height)
  95.     @bitmap_shadow = Bitmap.new("Graphics/System/sight_shadow")
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 解放
  99.   #--------------------------------------------------------------------------
  100.   def dispose
  101.     self.bitmap.dispose
  102.     @bitmap_shadow.dispose
  103.     super
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● フレーム更新
  107.   #--------------------------------------------------------------------------
  108.   def update
  109.     super
  110.     if TMBLSIGHT::SIGHT[$game_map.map_id]
  111.       self.visible = true
  112.       self.bitmap.clear
  113.       w = TMBLSIGHT::SIGHT[$game_map.map_id]
  114.       $game_party.battle_members.each{|actor| w = [w + actor.sight_power, 48].max}
  115.       w = [w + $game_variables[TMBLSIGHT::VN_SIGHT], 48].max
  116.       x = $game_player.screen_x - w / 2
  117.       y = $game_player.screen_y - w / 2 - 16
  118.       rect = Rect.new(x, y, w, w)
  119.       self.bitmap.stretch_blt(rect, @bitmap_shadow, @bitmap_shadow.rect)
  120.       color = Color.new(0, 0, 0)
  121.       self.bitmap.fill_rect(0, 0, Graphics.width, y, color)
  122.       self.bitmap.fill_rect(0, y + w, Graphics.width, Graphics.height - y - w,
  123.         color)
  124.       self.bitmap.fill_rect(0, y, x, w, color)
  125.       self.bitmap.fill_rect(x + w, y, Graphics.width - x - w, w, color)
  126.     else
  127.       self.visible = false
  128.     end
  129.   end
  130. end
  131.  
  132. #==============================================================================
  133. # ■ Spriteset_Map
  134. #==============================================================================
  135. class Spriteset_Map
  136.   #--------------------------------------------------------------------------
  137.   # ● オブジェクト初期化
  138.   #--------------------------------------------------------------------------
  139.   alias tmblsight_spriteset_map_initialize initialize
  140.   def initialize
  141.     tmblsight_spriteset_map_initialize
  142.     create_sight_shadow
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ○ 視界制限スプライトの作成
  146.   #--------------------------------------------------------------------------
  147.   def create_sight_shadow
  148.     @sight_shadow_sprite = Sprite_SightShadow.new(@viewport2)
  149.     update_sight_shadow
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● 解放
  153.   #--------------------------------------------------------------------------
  154.   alias tmblsight_spriteset_map_dispose dispose
  155.   def dispose
  156.     tmblsight_spriteset_map_dispose
  157.     dispose_sight_shadow
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ○ 視界制限スプライトの解放
  161.   #--------------------------------------------------------------------------
  162.   def dispose_sight_shadow
  163.     @sight_shadow_sprite.dispose
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # ● フレーム更新
  167.   #--------------------------------------------------------------------------
  168.   alias tmblsight_spriteset_map_update update
  169.   def update
  170.     update_sight_shadow
  171.     tmblsight_spriteset_map_update
  172.   end
  173.   #--------------------------------------------------------------------------
  174.   # ○ 視界制限スプライトの更新
  175.   #--------------------------------------------------------------------------
  176.   def update_sight_shadow
  177.     @sight_shadow_sprite.update if @sight_shadow_sprite
  178.   end
  179. end

如此。。日语看不懂哎。。
作者: 三途亚梦    时间: 2015-1-3 05:11
你试试把下面这段写在 事件 - 脚本 里,然后激活事件试试。
  1. TMBLSIGHT::SIGHT[1] = XXX
复制代码
其中XXX是一个数值,从使用100和999进行测试。

如果我猜的没错可以控制1号地图的视线大小。
作者: tseyik    时间: 2015-1-3 08:01
本帖最后由 tseyik 于 2015-1-3 08:08 编辑

1.2版本,(處理軽量化)
這脚本我在地球村有解譯過
https://rpg.blue/thread-221710-1-2.html
  1. #==============================================================================
  2. # ★ RGSS3_視界制限 Ver1.2
  3. #==============================================================================
  4. =begin

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

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

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

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

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

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

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

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

  37. =end

  38. #==============================================================================
  39. # □ 設定項目
  40. #==============================================================================
  41. module TMBLSIGHT
  42.   # 何番のマップをどれだけ視界制限するか
  43.   # 例)SIGHT[3] = 128  # 3番のマップの視界を128ドット四方に制限する
  44.   SIGHT = {}
  45.   SIGHT[3] = 256
  46.   
  47.   VN_SIGHT = 9    # 視界のサイズ補正に利用するゲーム変数番号
  48. end

  49. #==============================================================================
  50. # □ RPG::BaseItem
  51. #==============================================================================
  52. class RPG::BaseItem
  53.   #--------------------------------------------------------------------------
  54.   # ○ 視界制限の補正値
  55.   #--------------------------------------------------------------------------
  56.   def sight_power
  57.     unless @sight_power
  58.       @sight_power = /<視界補正\s*(\-*\d+)\s*>/ =~ @note ? $1.to_i : 0
  59.     end
  60.     @sight_power
  61.   end
  62. end

  63. #==============================================================================
  64. # ■ Game_Actor
  65. #==============================================================================
  66. class Game_Actor
  67.   #--------------------------------------------------------------------------
  68.   # ○ 視界制限の補正値
  69.   #--------------------------------------------------------------------------
  70.   def sight_power
  71.     feature_objects.inject(0) {|result, object| result + object.sight_power }
  72.   end
  73. end

  74. #==============================================================================
  75. # □ Sprite_SightShadow
  76. #==============================================================================
  77. class Sprite_SightShadow < Sprite
  78.   #--------------------------------------------------------------------------
  79.   # ● オブジェクト初期化
  80.   #--------------------------------------------------------------------------
  81.   def initialize(viewport = nil)
  82.     super(viewport)
  83.     self.z = 199
  84.     self.bitmap = Bitmap.new(Graphics.width, Graphics.height)
  85.     @bitmap_shadow = Bitmap.new("Graphics/System/sight_shadow")
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● 解放
  89.   #--------------------------------------------------------------------------
  90.   def dispose
  91.     self.bitmap.dispose
  92.     @bitmap_shadow.dispose
  93.     super
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ● フレーム更新
  97.   #--------------------------------------------------------------------------
  98.   def update
  99.     super
  100.     if TMBLSIGHT::SIGHT[$game_map.map_id]
  101.       self.visible = true
  102.       w = TMBLSIGHT::SIGHT[$game_map.map_id]      # マップに設定された補正値
  103.       w += $game_variables[TMBLSIGHT::VN_SIGHT]   # ゲーム変数による補正値
  104.       $game_party.battle_members.each do |actor|
  105.         w = [w + actor.sight_power, 48].max       # 戦闘メンバーの補正値
  106.       end
  107.       x = $game_player.screen_x - w / 2
  108.       y = $game_player.screen_y - w / 2 - 16
  109.       if w != @last_w || x != @last_x || y != @last_y
  110.         @last_w = w
  111.         @last_x = x
  112.         @last_y = y
  113.         self.bitmap.clear
  114.         rect = Rect.new(x, y, w, w)
  115.         self.bitmap.stretch_blt(rect, @bitmap_shadow, @bitmap_shadow.rect)
  116.         color = Color.new(0, 0, 0)
  117.         self.bitmap.fill_rect(0, 0, Graphics.width, y, color)
  118.         self.bitmap.fill_rect(0, y + w, Graphics.width, Graphics.height - y - w, color)
  119.         self.bitmap.fill_rect(0, y, x, w, color)
  120.         self.bitmap.fill_rect(x + w, y, Graphics.width - x - w, w, color)
  121.       end
  122.     else
  123.       self.visible = false
  124.     end
  125.   end
  126. end

  127. #==============================================================================
  128. # ■ Spriteset_Map
  129. #==============================================================================
  130. class Spriteset_Map
  131.   #--------------------------------------------------------------------------
  132.   # ● オブジェクト初期化
  133.   #--------------------------------------------------------------------------
  134.   alias tmblsight_spriteset_map_initialize initialize
  135.   def initialize
  136.     tmblsight_spriteset_map_initialize
  137.     create_sight_shadow
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ○ 視界制限スプライトの作成
  141.   #--------------------------------------------------------------------------
  142.   def create_sight_shadow
  143.     @sight_shadow_sprite = Sprite_SightShadow.new(@viewport2)
  144.     update_sight_shadow
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ● 解放
  148.   #--------------------------------------------------------------------------
  149.   alias tmblsight_spriteset_map_dispose dispose
  150.   def dispose
  151.     dispose_sight_shadow
  152.     tmblsight_spriteset_map_dispose
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ○ 視界制限スプライトの解放
  156.   #--------------------------------------------------------------------------
  157.   def dispose_sight_shadow
  158.     @sight_shadow_sprite.dispose
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● フレーム更新
  162.   #--------------------------------------------------------------------------
  163.   alias tmblsight_spriteset_map_update update
  164.   def update
  165.     update_sight_shadow
  166.     tmblsight_spriteset_map_update
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ○ 視界制限スプライトの更新
  170.   #--------------------------------------------------------------------------
  171.   def update_sight_shadow
  172.     @sight_shadow_sprite.update if @sight_shadow_sprite
  173.   end
  174. end


复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1