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

Project1

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

[转载] 【RGSS3用】视野遮罩脚本V1.2

[复制链接]

Lv2.观梦者

Adam

梦石
0
星屑
713
在线时间
841 小时
注册时间
2010-8-24
帖子
2595
跳转到指定楼层
1
发表于 2015-9-19 16:26:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 李光兆 于 2015-9-19 16:29 编辑

与V1.1相比,取消了关闭菜单和存档的一瞬间会取消视野遮罩的BUG,看6R貌似没有,就发出来好啦
RUBY 代码复制
  1. #==============================================================================
  2. # ★ RGSS3_視界制限 Ver1.2
  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. プレイヤーの画面上の座標が常に変わるような状況(1画面分の小さなマップなど)、
  23. 視界補正値がリアルタイムに変化する状況などでは頻繁にスプライトの再描画を
  24. 実行するため処理が重くなります
  25.  
  26. 動作に必要な画像
  27.   Graphics/System/sight_shadow.png
  28.  
  29. 使用するゲーム変数(初期設定)
  30.   0009
  31.  
  32. 2013.01.22  Ver1.2
  33.   ・毎フレーム再描画をおこなっていた処理を改善
  34.   ・環境によってエラー落ちの原因となる部分を修正
  35.  
  36. 2012.03.07  Ver1.11
  37.  ・メニューから復帰したときに視界制限が途切れる不具合を修正
  38.  
  39. 2012.02.05  Ver1.1
  40.   ・タイマーが隠れてしまわないようにZ座標を調整
  41.   ・ゲーム変数を使って視界制限サイズを補正する機能を追加
  42.  
  43. 2012.01.20  Ver1.0
  44.   公開
  45.  
  46. =end
  47.  
  48. #==============================================================================
  49. # □ 設定項目
  50. #==============================================================================
  51. module TMBLSIGHT
  52.   # 何番のマップをどれだけ視界制限するか
  53.   # 例)SIGHT[3] = 128  # 3番のマップの視界を128ドット四方に制限する
  54.   SIGHT = {}
  55.   SIGHT[3] = 256
  56.  
  57.   VN_SIGHT = 9    # 視界のサイズ補正に利用するゲーム変数番号
  58. end
  59.  
  60. #==============================================================================
  61. # □ RPG::BaseItem
  62. #==============================================================================
  63. class RPG::BaseItem
  64.   #--------------------------------------------------------------------------
  65.   # ○ 視界制限の補正値
  66.   #--------------------------------------------------------------------------
  67.   def sight_power
  68.     unless @sight_power
  69.       @sight_power = /<視界補正\s*(\-*\d+)\s*>/ =~ @note ? $1.to_i : 0
  70.     end
  71.     @sight_power
  72.   end
  73. end
  74.  
  75. #==============================================================================
  76. # ■ Game_Actor
  77. #==============================================================================
  78. class Game_Actor
  79.   #--------------------------------------------------------------------------
  80.   # ○ 視界制限の補正値
  81.   #--------------------------------------------------------------------------
  82.   def sight_power
  83.     feature_objects.inject(0) {|result, object| result + object.sight_power }
  84.   end
  85. end
  86.  
  87. #==============================================================================
  88. # □ Sprite_SightShadow
  89. #==============================================================================
  90. class Sprite_SightShadow < Sprite
  91.   #--------------------------------------------------------------------------
  92.   # ● オブジェクト初期化
  93.   #--------------------------------------------------------------------------
  94.   def initialize(viewport = nil)
  95.     super(viewport)
  96.     self.z = 199
  97.     self.bitmap = Bitmap.new(Graphics.width, Graphics.height)
  98.     @bitmap_shadow = Bitmap.new("Graphics/System/sight_shadow")
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● 解放
  102.   #--------------------------------------------------------------------------
  103.   def dispose
  104.     self.bitmap.dispose
  105.     @bitmap_shadow.dispose
  106.     super
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ● フレーム更新
  110.   #--------------------------------------------------------------------------
  111.   def update
  112.     super
  113.     if TMBLSIGHT::SIGHT[$game_map.map_id]
  114.       self.visible = true
  115.       w = TMBLSIGHT::SIGHT[$game_map.map_id]      # マップに設定された補正値
  116.       w += $game_variables[TMBLSIGHT::VN_SIGHT]   # ゲーム変数による補正値
  117.       $game_party.battle_members.each do |actor|
  118.         w = [w + actor.sight_power, 48].max       # 戦闘メンバーの補正値
  119.       end
  120.       x = $game_player.screen_x - w / 2
  121.       y = $game_player.screen_y - w / 2 - 16
  122.       if w != @last_w || x != @last_x || y != @last_y
  123.         @last_w = w
  124.         @last_x = x
  125.         @last_y = y
  126.         self.bitmap.clear
  127.         rect = Rect.new(x, y, w, w)
  128.         self.bitmap.stretch_blt(rect, @bitmap_shadow, @bitmap_shadow.rect)
  129.         color = Color.new(0, 0, 0)
  130.         self.bitmap.fill_rect(0, 0, Graphics.width, y, color)
  131.         self.bitmap.fill_rect(0, y + w, Graphics.width, Graphics.height - y - w, color)
  132.         self.bitmap.fill_rect(0, y, x, w, color)
  133.         self.bitmap.fill_rect(x + w, y, Graphics.width - x - w, w, color)
  134.       end
  135.     else
  136.       self.visible = false
  137.     end
  138.   end
  139. end
  140.  
  141. #==============================================================================
  142. # ■ Spriteset_Map
  143. #==============================================================================
  144. class Spriteset_Map
  145.   #--------------------------------------------------------------------------
  146.   # ● オブジェクト初期化
  147.   #--------------------------------------------------------------------------
  148.   alias tmblsight_spriteset_map_initialize initialize
  149.   def initialize
  150.     tmblsight_spriteset_map_initialize
  151.     create_sight_shadow
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ○ 視界制限スプライトの作成
  155.   #--------------------------------------------------------------------------
  156.   def create_sight_shadow
  157.     @sight_shadow_sprite = Sprite_SightShadow.new(@viewport2)
  158.     update_sight_shadow
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● 解放
  162.   #--------------------------------------------------------------------------
  163.   alias tmblsight_spriteset_map_dispose dispose
  164.   def dispose
  165.     dispose_sight_shadow
  166.     tmblsight_spriteset_map_dispose
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ○ 視界制限スプライトの解放
  170.   #--------------------------------------------------------------------------
  171.   def dispose_sight_shadow
  172.     @sight_shadow_sprite.dispose
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ● フレーム更新
  176.   #--------------------------------------------------------------------------
  177.   alias tmblsight_spriteset_map_update update
  178.   def update
  179.     update_sight_shadow
  180.     tmblsight_spriteset_map_update
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ○ 視界制限スプライトの更新
  184.   #--------------------------------------------------------------------------
  185.   def update_sight_shadow
  186.     @sight_shadow_sprite.update if @sight_shadow_sprite
  187.   end
  188. end
嘛,摸了。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
26 小时
注册时间
2015-10-13
帖子
19
2
发表于 2015-10-25 14:24:57 | 只看该作者
收下了谢谢楼主
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

3
发表于 2015-11-16 16:42:12 | 只看该作者
虽然不知道是什么,怎么用。先拿来再说

点评

不会用,而且没有sight_shadow.png  发表于 2015-11-16 16:53
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1883
在线时间
157 小时
注册时间
2016-1-29
帖子
267
4
发表于 2018-11-29 09:36:39 | 只看该作者
这个怎么用啊?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-21 23:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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