赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 4 |
经验 | 0 |
最后登录 | 2018-3-23 |
在线时间 | 20 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 394
- 在线时间
- 20 小时
- 注册时间
- 2018-2-22
- 帖子
- 41
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
能不能围着某物品区域性增加范围! 就是在角落摆个灯 点亮以后就那个事件范围增大光亮不在黑暗 人物依旧是<sight 100> 但是事件那能不能<sight 235> 应该怎么做?
- =begin
- =========================================================================
- ★ require Taroxd基础设置
- 需要将 sight_shadow.png 放入 Graphics/system 文件夹中才会生效
- ------------------------------------------------------------------------------
- 使用方法:在地图备注<sight x>,则该地图限制视野。x 为该地图的可见范围
- 在角色、职业、装备、状态上备注<sight x>,则可以设置 x 的视野补正
- 备注位置对应的获取视野补正的条件分别是:
- 角色:该角色在队伍中
- 职业:队伍中有该职业的角色。可累加
- 技能:队伍中有角色习得了该技能。无视生死,可累加
- 装备:队伍中有角色装备了该装备。可累加
- 状态:队伍中有角色获得了该状态。可累加
- =========================================================================
- =end
-
- RPG::Map.note_i :sight, false
- RPG::BaseItem.note_i :sight
-
- class Game_Map
- #--------------------------------------------------------------------------
- # ● 视野限制值
- #--------------------------------------------------------------------------
- def shadow_sight
- @map.sight
- end
- end
-
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # ● 视野补正值
- #--------------------------------------------------------------------------
- def sight_power
- note_objects.sum(&:sight)
- end
- end
-
- class Sprite_SightShadow < Sprite_Base
- #--------------------------------------------------------------------------
- # ● 初始化
- #--------------------------------------------------------------------------
- def initialize(viewport = nil)
- super(viewport)
- self.z = 199
- self.bitmap = Bitmap.new(Graphics.width, Graphics.height)
- end
- #--------------------------------------------------------------------------
- # ● 阴影的位图
- #--------------------------------------------------------------------------
- def shadow_bitmap
- Cache.system('sight_shadow')
- end
- #--------------------------------------------------------------------------
- # ● 释放
- #--------------------------------------------------------------------------
- def dispose
- bitmap.dispose
- shadow_bitmap.dispose
- super
- end
- #--------------------------------------------------------------------------
- # ● 更新
- #--------------------------------------------------------------------------
- def update
- super
- self.visible = $game_map.shadow_sight
- return unless visible
- w = $game_party.sum($game_map.shadow_sight, &:sight_power)
- x = $game_player.screen_x - w / 2
- y = $game_player.screen_y - w / 2 - 16
- return if @last_position == [w, x, y]
- @last_position = w, x, y
- width, height = Graphics.width, Graphics.height
- rect = Rect.new(x, y, w, w)
- black = Color.new(0, 0, 0)
- bitmap.clear
- bitmap.stretch_blt(rect, shadow_bitmap, shadow_bitmap.rect)
- bitmap.fill_rect(0, 0, width, y, black)
- bitmap.fill_rect(0, y + w, width, height - y - w, black)
- bitmap.fill_rect(0, y, x, w, black)
- bitmap.fill_rect(x + w, y, width - x - w, w, black)
- end
- end
-
- class Spriteset_Map
- #--------------------------------------------------------------------------
- # ● 初始化
- #--------------------------------------------------------------------------
- def_after(:initialize) { create_sight_shadow }
- #--------------------------------------------------------------------------
- # ● 创建阴影
- #--------------------------------------------------------------------------
- def create_sight_shadow
- @sight_shadow_sprite = Sprite_SightShadow.new(@viewport2)
- update_sight_shadow
- end
- #--------------------------------------------------------------------------
- # ● 释放
- #--------------------------------------------------------------------------
- def_before(:dispose) { @sight_shadow_sprite.dispose }
- #--------------------------------------------------------------------------
- # ● 更新
- #--------------------------------------------------------------------------
- def_before(:update) { update_sight_shadow }
- #--------------------------------------------------------------------------
- # ● 更新视野限制
- #--------------------------------------------------------------------------
- def update_sight_shadow
- @sight_shadow_sprite.update if @sight_shadow_sprite
- end
- end
复制代码
|
|