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

[转载发布] 仿《 DELTARUNE》战斗物品动态字幕评价脚本

[复制链接]
累计送礼:
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

    灌水之王

    发表于 前天 23:59 | 显示全部楼层 |阅读模式
    RUBY 代码
    1. #==============================================================================
    2. # ■ 仿《德尔塔符文》战斗物品动态字幕评价
    3. #==============================================================================
    4. # 作者:瑞吉
    5. # 标签说明:
    6. #   单人:
    7. #   双人:
    8. #   多人:
    9. # 适用范围:物品、技能
    10. #==============================================================================
    11. module DataManager
    12.   class  { user_speech: 台词, targets: { target_id => 台词 } } }
    13.   def load_notetag_subtitle_final
    14.     @subtitle_map = {}
    15.     @subtitle_pair_map = {}
    16.     @multi_subtitle_map = {}
    17.     # 单人
    18.     self.note.scan(//i)do |match|
    19.       @subtitle_map[match[0].to_i] = match[1].to_s
    20.     end
    21.     # 双人
    22.     self.note.scan(//i)do |match|
    23.       @subtitle_pair_map[[match[0].to_i, match[1].to_i]] = {
    24.         ci: match[2].to_s,
    25.         pi: match[3].to_s
    26.       }
    27.     end
    28.     # 多人
    29.     self.note.scan(//i)do |match|
    30.       user_id = match[0].to_i
    31.       content = match[1].to_s
    32.       target_map = {}
    33.       user_speech = nil
    34.       content.split('|').eachdo |part|
    35.         part = part.strip
    36.         if part =~ /^US\s*:\s*(.+)/i
    37.           user_speech = $1.to_s.strip
    38.         elsif part =~ /^(\d+)\s*:\s*(.+)/i
    39.           target_map[$1.to_i] = $2.to_s.strip
    40.         end
    41.       end
    42.       @multi_subtitle_map[user_id] = {
    43.         user_speech: user_speech,
    44.         targets: target_map
    45.       }
    46.     end
    47.   end
    48.   def subtitle_for(actor_id)
    49.     return@subtitle_map[actor_id]if@subtitle_map.key?(actor_id)
    50.     return@subtitle_map[0]if@subtitle_map.key?(0)
    51.     nil
    52.   end
    53.   def pair_subtitle_for(user_id, target_id)
    54.     @subtitle_pair_map[[user_id, target_id]]
    55.   end
    56.   def multi_subtitle_for(user_id)
    57.     @multi_subtitle_map[user_id]
    58.   end
    59. end
    60. #==============================================================================
    61. # ■ Scene_Battle
    62. #==============================================================================
    63. class Scene_Battle < Scene_Base
    64.   alias use_item_subtitle_final use_item
    65.   def use_item
    66.     @last_used_item = @subject.current_action.item
    67.     @last_user = @subject
    68.     @last_targets = @subject.current_action.make_targets.compact
    69.     use_item_subtitle_final
    70.     show_subtitle_final if should_show_subtitle_final?
    71.   end
    72.   def should_show_subtitle_final?
    73.     returnfalseunless@last_used_item.is_a?(RPG::UsableItem)
    74.     returnfalseunless@last_used_item.respond_to?(:subtitle_for)
    75.     item = @last_used_item
    76.     user = @last_user
    77.     multi = item.multi_subtitle_for(user.id)
    78.     if multi
    79.       targets = multi[:targets]
    80.       returntrueif@last_targets.any? { |t| t.is_a?(Game_Actor) && targets.key?(t.id)}
    81.       returntrueif multi[:user_speech] && !multi[:user_speech].empty?
    82.     end
    83.     @last_targets.eachdo |t|
    84.       returntrueif t.is_a?(Game_Actor) && item.pair_subtitle_for(user.id, t.id)
    85.     end
    86.     returntrueif item.subtitle_for(user.id)
    87.     false
    88.   end
    89.   def show_subtitle_final
    90.     item = @last_used_item
    91.     user = @last_user
    92.     returnunless@log_window
    93.     # 1. 多人评价
    94.     multi_data = item.multi_subtitle_for(user.id)
    95.     if multi_data
    96.       targets_map = multi_data[:targets]
    97.       user_speech = multi_data[:user_speech]
    98.       # 使用者台词
    99.       if user_speech && !user_speech.empty?
    100.         user_name = $game_actors[user.id].name
    101.         @log_window.add_text("#{user_name}:#{user_speech}")
    102.         wait(30)
    103.       end
    104.       # 队友台词
    105.       shown = false
    106.       @last_targets.eachdo |target|
    107.         nextunless target.is_a?(Game_Actor)
    108.         text = targets_map[target.id]
    109.         nextunless text
    110.         name = $game_actors[target.id].name
    111.         @log_window.add_text("#{name}:#{text}")
    112.         wait(20)
    113.         shown = true
    114.       end
    115.       if shown || user_speech
    116.         wait(30)
    117.         return
    118.       end
    119.     end
    120.     # 2. 双人评价
    121.     @last_targets.eachdo |target|
    122.       nextunless target.is_a?(Game_Actor)
    123.       pair = item.pair_subtitle_for(user.id, target.id)
    124.       if pair
    125.         user_name = $game_actors[user.id].name
    126.         target_name = $game_actors[target.id].name
    127.         @log_window.add_text("#{user_name}:#{pair[:ci]}\n#{target_name}:#{pair[:pi]}")
    128.         wait(60)
    129.         return
    130.       end
    131.     end
    132.     # 3. 单人评价
    133.     single = item.subtitle_for(user.id)
    134.     if single
    135.       user_name = $game_actors[user.id].name
    136.       @log_window.add_text("#{user_name}:#{single}")
    137.       wait(60)
    138.     end
    139.   end
    140. end
    复制代码










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

    本帖子中包含更多资源

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

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

    使用道具 举报

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

    本版积分规则

    关闭

    幸运抽奖

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

    立即查看

    聊天机器人
    Loading...

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

    GMT+8, 2026-4-23 07:44 , Processed in 0.106069 second(s), 52 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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