赞 | 4 |
VIP | 86 |
好人卡 | 31 |
积分 | 27 |
经验 | 114447 |
最后登录 | 2025-2-14 |
在线时间 | 563 小时 |
Lv3.寻梦者 贝鲁耶的依叶森林 持镰的苍色水野
- 梦石
- 2
- 星屑
- 659
- 在线时间
- 563 小时
- 注册时间
- 2007-4-8
- 帖子
- 1304
![第4届短篇游戏比赛季军](static/image/common/短篇4奖章.png) ![短篇八RM组亚军](static/image/common/dbrm02.png)
|
最简单的视界限制脚本 使用要靠你自己了
放入graphic里的system里- #==============================================================================
- # ★ 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[3] = 256
-
- VN_SIGHT = 9 # 視界のサイズ補正に利用するゲーム変数番号
- 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 = 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
- 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
复制代码 |
|