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

[转载发布] 【RMXP脚本技巧】战斗开局/结束执行公共事件

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    2026-5-17 18:27
  • 签到天数: 196 天

    连续签到: 1 天

    [LV.7]常住居民III

    2624

    主题

    838

    回帖

    2万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    18491
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    21983

    灌水之王

    发表于 3 天前 | 显示全部楼层 |阅读模式
    为避免大家在每个敌群事件中逐个插入公共事件的繁琐操作,这里分享两个RMXP战斗系统的实用脚本技巧,分别对应战斗正式开始前与战斗结算结束后两个节点,自动执行指定公共事件
    依旧仅需修改原生代码即可实现

    战斗开始:
    Scene_Battle 1 46~52行
    RUBY 代码
    1. # 执行过渡
    2.     if$data_system.battle_transition == ""
    3.       Graphics.transition(20)
    4.     else
    5.       Graphics.transition(40, "Graphics/Transitions/" +
    6.         $data_system.battle_transition)
    7.       end
    复制代码

    下面插入
    RUBY 代码
    1. # ★ 战斗开场执行公共事件
    2.     common_event_id = 1# 可以改成你想要执行的公共事件 ID
    3.     $game_system.battle_interpreter.setup($data_common_events[common_event_id].list, 0)
    4.     loopdo
    5.       @message_window.update
    6.       $game_system.battle_interpreter.update
    7.       Graphics.update
    8.       Input.update
    9.       breakunless$game_system.battle_interpreter.running?
    10.     end
    11.     @status_window.refresh# 执行完自动刷新状态栏
    复制代码

    公共事件中可以输入的指令:
    ​开关变量、更改状态、增减HP/SP、增减物品/金钱、播放音效/战斗动画、等待
    禁止输入:
    地图专属指令(移动角色、设置移动路线、场所移动、更改地图设置等等),此类指令在战斗场景无对应执行对象,会失效甚至报错

    战斗结束:
    这个有些麻烦,因为需要考虑胜利、失败、以及逃跑的场合,因此这3处都需要加
    Scene_Battle 1 114~120行
    RUBY 代码
    1. def judge
    2.     # 全灭判定是真、并且同伴人数为 0 的情况下
    3.     if$game_party.all_dead? or$game_party.actors.size == 0
    4.       # 允许失败的情况下
    5.       if$game_temp.battle_can_lose
    6.         # 还原为战斗开始前的 BGM
    7.         $game_system.bgm_play($game_temp.map_bgm)
    复制代码

    依旧是Scene_Battle 1 131~136行
    RUBY 代码
    1. # 如果存在任意 1 个敌人就返回 false
    2.     for enemy in$game_troop.enemies
    3.       if enemy.exist?
    4.         returnfalse
    5.       end
    6.     end
    复制代码

    Scene_Battle 2 114~115行
    RUBY 代码
    1. # 成功逃跑的情况下
    2.     if success
    复制代码

    的下面,这3处全部要加
    RUBY 代码
    1. $game_temp.common_event_id = 2
    复制代码

    由于执行时机在战斗结束后已经返回地图了,所以应该没什么限制了
                本帖来自P1论坛作者无忧谷主幻,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=498997  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

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

    本版积分规则

    关闭

    幸运抽奖

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

    立即查看

    聊天机器人
    Loading...

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

    GMT+8, 2026-6-3 13:04 , Processed in 0.098384 second(s), 50 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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