查看: 2420|回复: 3

[已经解决] 关于脚本控制问题。。

[复制链接]
梦石
0
星屑
50
在线时间
19 小时
注册时间
2014-12-25
回帖
23
发表于 2015-1-3 03:15:26 | 显示全部楼层 |阅读模式

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

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

×
紧接着问题又来了。。。QVQ
想用事件脚本来控制脚本开关。。
例如这个视野脚本。。
QQ截图20150103031233.png
怎么写才能控制视野大小和开关。。

点评

但是这个部分没有说明是否可以使用开关控制,你需要提供一些脚本全体。  发表于 2015-1-3 03:43
这个得看脚本的具体说明,你截图的这个部分 SIGHT[3] = 128的意思是 在id3的地图进行128像素的四方限制。  发表于 2015-1-3 03:42
梦石
0
星屑
50
在线时间
19 小时
注册时间
2014-12-25
回帖
23
 楼主| 发表于 2015-1-3 04:00:38 | 显示全部楼层
本帖最后由 绯红の夜魔 于 2015-1-3 04:11 编辑

脚本附上。
[pre lang="ruby" line="1"]#==============================================================================
# ★ RGSS3_視界制限 Ver1.11
#==============================================================================
=begin

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

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

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

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

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

画面全体を覆うスプライトを毎フレーム再描画しているため
多少重くなります。

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

2012.03.07  Ver1.11
 ・メニューから復帰したときに視界制限が途切れる不具合を修正
  
2012.02.05  Ver1.1
  ・タイマーが隠れてしまわないようにZ座標を調整
  ・ゲーム変数を使って視界制限サイズを補正する機能を追加
  
2012.01.20  Ver1.0
  公開

=end

#==============================================================================
# □ 設定項目
#==============================================================================
module TMBLSIGHT
  # 何番のマップをどれだけ視界制限するか
  # 例)SIGHT[3] = 128  # 3番のマップの視界を128ドット四方に制限する
  SIGHT = {}
  SIGHT[1] = 600
  SIGHT[10] = 200
  VN_SIGHT = 999   # 視界のサイズ補正に利用するゲーム変数番号
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
    result = 0
    feature_objects.each {|object| result += object.sight_power}
    result
  end
end

#==============================================================================
# □ Sprite_SightShadow
#==============================================================================
class Sprite_SightShadow < Sprite
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(viewport = nil)
    super(viewport)
    self.z = 50
    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
      self.bitmap.clear
      w = TMBLSIGHT::SIGHT[$game_map.map_id]
      $game_party.battle_members.each{|actor| w = [w + actor.sight_power, 48].max}
      w = [w + $game_variables[TMBLSIGHT::VN_SIGHT], 48].max
      x = $game_player.screen_x - w / 2
      y = $game_player.screen_y - w / 2 - 16
      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)
    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
    tmblsight_spriteset_map_dispose
    dispose_sight_shadow
  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
[/pre]
如此。。日语看不懂哎。。
回复

使用道具 举报

闇吼者の災悪眷族

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
回帖
6408
发表于 2015-1-3 05:11:30 | 显示全部楼层
你试试把下面这段写在 事件 - 脚本 里,然后激活事件试试。
  1. TMBLSIGHT::SIGHT[1] = XXX
复制代码
其中XXX是一个数值,从使用100和999进行测试。

如果我猜的没错可以控制1号地图的视线大小。

点评

成功了~大半夜的感谢指教~辛苦了。  发表于 2015-1-3 05:41

评分

参与人数 1星屑 +200 收起 理由
VIPArcher + 200 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2015-1-3 08:01:38 | 显示全部楼层
本帖最后由 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


复制代码

点评

感谢~不客气的使用了。  发表于 2015-1-3 15:19
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部