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

Project1

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

[转载] 【VA】RGSS3_能见度限制

[复制链接]

Lv1.梦旅人

梦石
0
星屑
90
在线时间
308 小时
注册时间
2010-8-10
帖子
794
跳转到指定楼层
1
发表于 2014-1-24 21:32:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
脚本来源http://hikimoki.sakura.ne.jp/rgs ... IyIFESaj1GXR5vfaKk_
脚本网页http://hikimoki.sakura.ne.jp/rgss3/script_map/tmblsight.rb

需要用到图片
使用Graphics/System/sight_shadow.png


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

Lv3.寻梦者

梦石
0
星屑
2816
在线时间
1051 小时
注册时间
2011-8-2
帖子
300
2
发表于 2014-1-26 16:36:43 | 只看该作者
怎么使用【我知道插入脚本】
为方便新人,建议大家一同换上此签名(当然我没指最下面的宣传……)
RM各版本下载链接
RMXP:http://pan.baidu.com/s/1qWLZjIW
RMVX:http://pan.baidu.com/s/1sjBhM2L
以上链接由妖精蕾贝卡 提供
--------------------------------------------------------------------------------
RMVA:http://pan.baidu.com/s/1jG1mDUY
以上链接由VIPArcher 提供
——————————————————————————
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
188 小时
注册时间
2014-1-18
帖子
254
3
发表于 2014-2-9 13:05:38 | 只看该作者
不是早有了吗,这帖子算挖坟吧...(VA图书馆里就有)
没事的过来瞄一眼,有事的也过来瞄一眼...群组,XAS PS VA
http://rpg.blue/forum.php?mod=group&fid=537
XAS探索目录:http://rpg.blue/home.php?mo ... o=blog&id=12595
如果有人对你说,你如此帅气(美丽),你要分三个角度去想:
1.就像妈妈对你说:“你如此帅气(美丽)。”(安慰)
2.就像女(男)朋友对你说:“你如此帅气(美丽)”(欺瞒)
3.就像乞丐对你说:“你如此帅气(美丽)”(讨好)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
4
发表于 2014-3-20 21:32:08 | 只看该作者
要翻墙的么,那网页我居然打不开呢
最近在研究XAS
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 21:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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