赞 | 2 |
VIP | 0 |
好人卡 | 20 |
积分 | 5 |
经验 | 26304 |
最后登录 | 2024-2-11 |
在线时间 | 487 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 473
- 在线时间
- 487 小时
- 注册时间
- 2011-10-12
- 帖子
- 407
|
本帖最后由 gaogs123456 于 2014-4-5 23:41 编辑
你可以用这个版本的视界限制,完全没有问题。
顺便可以下下我不久前制作完成的RPG玩玩,工程未加密。
http://pan.baidu.com/s/1o6jWrNk
另外插入脚本用‘添加代码’这个功能会更好。- #==============================================================================
- # ★ 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[12] = 100 #墓地
-
- VN_SIGHT = 19 # 視界のサイズ補正に利用するゲーム変数番号
- 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 = 99
- 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
复制代码 |
评分
-
查看全部评分
|