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

[转载发布] 配合バトルリトライ战败重来脚本的失败信息扩展脚本

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    前天 02:22
  • 签到天数: 193 天

    连续签到: 1 天

    [LV.7]常住居民III

    2604

    主题

    789

    回帖

    2万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

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

    灌水之王

    发表于 6 天前 | 显示全部楼层 |阅读模式
    RUBY 代码
    1. #==============================================================================
    2. #  ★ RGSS3 ★
    3. #    战斗重试失败信息扩展
    4. #    作者:ruigi
    5. #    功能:显示最后对你造成伤害的敌人的自定义备注信息。
    6. #    备注格式:Over:"信息" 或 Over:“信息”(中英文引号均可)
    7. #
    8. #    放置位置:请在脚本列表最底部(Main之前)插入本脚本。
    9. #==============================================================================
    10. module Rokan
    11.   module DefeatMessage
    12.     DEBUG_MODE = true   # 改为 true 可在控制台查看详细信息
    13.   end
    14. end
    15. #==============================================================================
    16. # ■ 数据记录模块(直接嵌入 Game_Battler,保证记录)
    17. #==============================================================================
    18. class Game_Battler < Game_BattlerBase
    19.   alias:defeat_msg_execute_damage:execute_damage
    20.   def execute_damage(user)
    21.     defeat_msg_record_last_attacker(user)
    22.     defeat_msg_execute_damage(user)
    23.   end
    24.   def defeat_msg_record_last_attacker(user)
    25.     returnunless SceneManager.scene_is?(Scene_Battle)
    26.     returnunless user.is_a?(Game_Enemy)      # 仅当攻击者是敌人
    27.     returnif$game_party.all_dead?           # 已全灭不再记录(可选)
    28.     scene = SceneManager.scene
    29.     scene.instance_variable_set(:@_last_attacker_enemy, user)
    30.     ifRokan::DefeatMessage::DEBUG_MODE
    31.       p"[记录] 敌人 #{user.name} 造成了伤害,已被记录为最后攻击者"
    32.     end
    33.   end
    34. end
    35. #==============================================================================
    36. # ■ Scene_Battle(管理记录重置与信息显示)
    37. #==============================================================================
    38. class Scene_Battle < Scene_Base
    39.   #--------------------------------------------------------------------------
    40.   # ● 开始处理(初始化记录)
    41.   #--------------------------------------------------------------------------
    42.   alias defeat_msg_start start
    43.   def start
    44.     defeat_msg_start
    45.     @_last_attacker_enemy = nil
    46.   end
    47.   #--------------------------------------------------------------------------
    48.   # ● 回合开始(每回合重置记录)
    49.   #--------------------------------------------------------------------------
    50.   alias defeat_msg_turn_start turn_start
    51.   def turn_start
    52.     @_last_attacker_enemy = nil
    53.     defeat_msg_turn_start
    54.   end
    55.   #--------------------------------------------------------------------------
    56.   # ● 开始重试选择(显示信息窗口)
    57.   #--------------------------------------------------------------------------
    58.   alias defeat_msg_start_retry_selection start_retry_selection
    59.   def start_retry_selection
    60.     create_defeat_message_window if defeat_message_text != ""
    61.     defeat_msg_start_retry_selection
    62.   end
    63.   #--------------------------------------------------------------------------
    64.   # ● 放弃战斗(释放窗口)
    65.   #--------------------------------------------------------------------------
    66.   alias defeat_msg_giveup_battle giveup_battle
    67.   def giveup_battle
    68.     dispose_defeat_message_window
    69.     defeat_msg_giveup_battle
    70.   end
    71.   #--------------------------------------------------------------------------
    72.   # ● 重置战斗(释放窗口)
    73.   #--------------------------------------------------------------------------
    74.   alias defeat_msg_reset_battle reset_battle
    75.   def reset_battle
    76.     dispose_defeat_message_window
    77.     defeat_msg_reset_battle
    78.   end
    79.   #--------------------------------------------------------------------------
    80.   # ● 结束处理(保险释放)
    81.   #--------------------------------------------------------------------------
    82.   alias defeat_msg_terminate terminate
    83.   def terminate
    84.     dispose_defeat_message_window
    85.     defeat_msg_terminate
    86.   end
    87.   #--------------------------------------------------------------------------
    88.   # ● 提取失败信息文本
    89.   #--------------------------------------------------------------------------
    90.   def defeat_message_text
    91.     return@defeat_message_textif@defeat_message_text
    92.     # 1. 优先最后攻击者
    93.     last_enemy = @_last_attacker_enemy
    94.     if last_enemy && last_enemy.is_a?(Game_Enemy)
    95.       text = extract_over_text(last_enemy.enemy.note)
    96.       if text
    97.         @defeat_message_text = text
    98.         p"[成功] 从最后攻击者 #{last_enemy.name} 提取到信息:#{text}"ifRokan::DefeatMessage::DEBUG_MODE
    99.         return text
    100.       end
    101.     end
    102.     # 2. 兜底:遍历当前敌群
    103.     $game_troop.members.eachdo |enemy|
    104.       text = extract_over_text(enemy.enemy.note)
    105.       if text
    106.         @defeat_message_text = text
    107.         p"[兜底] 从敌群敌人 #{enemy.name} 提取到信息:#{text}"ifRokan::DefeatMessage::DEBUG_MODE
    108.         return text
    109.       end
    110.     end
    111.     @defeat_message_text = ""
    112.   end
    113.   #--------------------------------------------------------------------------
    114.   # ● 从备注中提取 Over 信息(支持中英文引号)
    115.   #--------------------------------------------------------------------------
    116.   def extract_over_text(note)
    117.     # 匹配格式:Over:"内容"  或  Over:“内容”
    118.     if note =~ /Over[::]\s*["“](.*?)["”]/
    119.       return $1.to_s
    120.     end
    121.     nil
    122.   end
    123.   #--------------------------------------------------------------------------
    124.   # ● 创建信息窗口
    125.   #--------------------------------------------------------------------------
    126.   def create_defeat_message_window
    127.     @defeat_message_window = Window_DefeatMessage.new(@viewport)
    128.   end
    129.   #--------------------------------------------------------------------------
    130.   # ● 释放信息窗口
    131.   #--------------------------------------------------------------------------
    132.   def dispose_defeat_message_window
    133.     returnunless@defeat_message_window
    134.     @defeat_message_window.close
    135.     update_basic while@defeat_message_window.openness > 0
    136.     @defeat_message_window.dispose
    137.     @defeat_message_window = nil
    138.   end
    139. end
    140. #==============================================================================
    141. # ■ Window_DefeatMessage(信息窗口)
    142. #==============================================================================
    143. class Window_DefeatMessage < Window_Base
    144.   def initialize(viewport = nil)
    145.     super(0, 0, Graphics.width, fitting_height(1))
    146.     self.viewport = viewport
    147.     self.z = 200
    148.     self.openness = 0
    149.     refresh
    150.     update_placement
    151.     open
    152.   end
    153.   def update_placement
    154.     self.x = 0
    155.     self.y = 0
    156.   end
    157.   def refresh
    158.     contents.clear
    159.     message = SceneManager.scene.defeat_message_textrescue""
    160.     returnif message.empty?
    161.     draw_text(contents.rect, message, 1)
    162.   end
    163. end
    复制代码





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

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

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

    本版积分规则

    关闭

    幸运抽奖

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

    立即查看

    聊天机器人
    Loading...

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

    GMT+8, 2026-4-23 07:42 , Processed in 0.119718 second(s), 54 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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