じ☆ve冰风 发表于 2024-11-21 17:34:14

烛光脚本

能不能围着某物品区域性增加范围!   就是在角落摆个灯 点亮以后就那个事件范围增大光亮不在黑暗人物依旧是 但是事件那能不能 应该怎么做?
=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 ==
    @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


            本帖来自P1论坛作者V5洛,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg. blue/forum.php?mod=viewthread&tid=405974若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页: [1]
查看完整版本: 烛光脚本