じ☆ve冰风 发表于 2024-4-19 17:23:24

修改原生脚本功能地图自动执行僅执行一次

地图事件名称包含一次结束触发条件为自动执行的情況下只会执行一次

另一个是公共事件名称包含无条件为无视开关条件执行並行公共事件或自动事件

RUBY 代码
class Game_CommonEvent
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
    # 建立必须的处理并行事件用的解释器
    ifself.trigger == 2and$game_switches == trueorself.trigger == 2and name.include?("无条件")
      if@interpreter == nil
      @interpreter = Interpreter.new
      end
    else
      @interpreter = nil
    end
end
end

class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_accessor   :starting               # 启动中标志

class Interpreter
#--------------------------------------------------------------------------
# ● 设置启动中事件
#--------------------------------------------------------------------------
def setup_starting_event
    # 刷新必要的地图
    if$game_map.need_refresh
      $game_map.refresh
    end
    # 如果调用的公共事件被预约的情况下
    if$game_temp.common_event_id > 0
      # 设置事件
      setup($data_common_events[$game_temp.common_event_id].list, 0)
      # 解除预约
      $game_temp.common_event_id = 0
      return
    end
      # 更改独立开关
    # 循环 (地图事件)
    for event in$game_map.events.values
      # 生成独立开关
      key = [$game_map.map_id, event.id, "1"]
      event.starting=falseif$game_self_switches
      # 如果找到了启动中的事件
      if event.starting
      # 如果不是自动执行
      if event.trigger < 3
          # 清除启动中标志
          event.clear_starting
          # 锁定
          event.lock
      end
      map = load_data(sprintf("Data/Map%03d.rxdata", $game_map.map_id))
      # 设置事件
      setup(event.list, event.id)
      $game_self_switches=map.events.name.include?("一次结束")
      return
      end
    end
    # 循环(公共事件)
    for common_event in$data_common_events.compact
      # 目标的自动执行开关为 ON 的情况下
      if common_event.trigger == 1and
         $game_switches == trueor common_event.trigger == 1and common_event.name.include?("无条件")
      # 设置事件
      setup(common_event.list, 0)
      return
      end
    end
end
end

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