Project1
标题:
烛光脚本
[打印本页]
作者:
V5洛
时间:
2018-3-6 20:37
标题:
烛光脚本
能不能围着某物品区域性增加范围! 就是在角落摆个灯 点亮以后就那个事件范围增大光亮不在黑暗 人物依旧是<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
复制代码
作者:
zhang493154524
时间:
2024-10-1 21:11
解决了吗
作者:
zhang493154524
时间:
2024-10-1 23:12
这个前置脚本能发下吗
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1