设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 869|回复: 1
打印 上一主题 下一主题

[原创发布] 修改原生脚本功能地图自动执行僅执行一次

[复制链接]

Lv5.捕梦者

梦石
0
星屑
36427
在线时间
10796 小时
注册时间
2009-3-15
帖子
4814
跳转到指定楼层
1
发表于 2024-1-11 09:22:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 soulsaga 于 2024-1-11 12:59 编辑

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

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

RUBY 代码复制
  1. class Game_CommonEvent
  2.   #--------------------------------------------------------------------------
  3.   # ● 刷新
  4.   #--------------------------------------------------------------------------
  5.   def refresh
  6.     # 建立必须的处理并行事件用的解释器
  7.     if self.trigger == 2 and $game_switches[self.switch_id] == true or self.trigger == 2 and name.include?("无条件")
  8.       if @interpreter == nil
  9.         @interpreter = Interpreter.new
  10.       end
  11.     else
  12.       @interpreter = nil
  13.     end
  14.   end
  15. end
  16.  
  17. class Game_Event < Game_Character
  18.   #--------------------------------------------------------------------------
  19.   # ● 定义实例变量
  20.   #--------------------------------------------------------------------------
  21.   attr_accessor   :starting                 # 启动中标志
  22.  
  23.   class Interpreter
  24.   #--------------------------------------------------------------------------
  25.   # ● 设置启动中事件
  26.   #--------------------------------------------------------------------------
  27.   def setup_starting_event
  28.     # 刷新必要的地图
  29.     if $game_map.need_refresh
  30.       $game_map.refresh
  31.     end
  32.     # 如果调用的公共事件被预约的情况下
  33.     if $game_temp.common_event_id > 0
  34.       # 设置事件
  35.       setup($data_common_events[$game_temp.common_event_id].list, 0)
  36.       # 解除预约
  37.       $game_temp.common_event_id = 0
  38.       return
  39.     end
  40.       # 更改独立开关
  41.     # 循环 (地图事件)
  42.     for event in $game_map.events.values
  43.       # 生成独立开关
  44.       key = [$game_map.map_id, event.id, "1"]
  45.       event.starting=false if $game_self_switches[key]
  46.       # 如果找到了启动中的事件
  47.       if event.starting
  48.         # 如果不是自动执行
  49.         if event.trigger < 3
  50.           # 清除启动中标志
  51.           event.clear_starting
  52.           # 锁定
  53.           event.lock
  54.         end
  55.         map = load_data(sprintf("Data/Map%03d.rxdata", $game_map.map_id))
  56.         # 设置事件
  57.         setup(event.list, event.id)
  58.         $game_self_switches[key]=map.events[event.id].name.include?("一次结束")
  59.         return
  60.       end
  61.     end
  62.     # 循环(公共事件)
  63.     for common_event in $data_common_events.compact
  64.       # 目标的自动执行开关为 ON 的情况下
  65.       if common_event.trigger == 1 and
  66.          $game_switches[common_event.switch_id] == true  or common_event.trigger == 1 and common_event.name.include?("无条件")
  67.         # 设置事件
  68.         setup(common_event.list, 0)
  69.         return
  70.       end
  71.     end
  72.   end
  73. end
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-22 01:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表