扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 135|回复: 0

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

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 114 天

    连续签到: 4 天

    [LV.6]常住居民II

    2338

    主题

    403

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    10607
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    13376

    灌水之王

    发表于 2024-4-19 17:23:24 | 显示全部楼层 |阅读模式
    地图事件名称包含一次结束触发条件为自动执行的情況下只会执行一次

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

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

                 本帖来自P1论坛作者soulsaga,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=495279  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-3-14 23:12 , Processed in 0.059903 second(s), 54 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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