查看: 91|回复: 0

[转载发布] 制作攻略必备——宝箱导出工具

[复制链接]
  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 37 天

    连续签到: 3 天

    [LV.5]常住居民I

    2028

    主题

    32

    回帖

    7260

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5184
    OK点
    16
    积分
    7260
    发表于 同元一千年八月六日(秋) | 显示全部楼层 |阅读模式
    RUBY 代码
    1. #==============================================================================
    2. # ■ Treasure_Export
    3. #------------------------------------------------------------------------------
    4. #  宝箱导出工具 by SailCat
    5. #   该程序能够导出工程中的全部宝箱,包括剧情获得道具,方便查错。
    6. #   使用说明:
    7. #     插入本脚本到Game_Temp(注意:不是Main)之前后执行就可以,你也可以手工做:
    8. #     treasure = Treasure_Export.new
    9. #     treasure.export_treasure(1)  # 导出第1张地图的宝箱
    10. #     treasure.export_all_treasures # 导出所有地图的宝箱
    11. #     导出的对话写在工程目录下的TreasureScript.txt文件里
    12. #     注释掉第109行及以下的语句可以屏蔽这个功能,正常测试游戏
    13. #==============================================================================
    14. class Treasure_Export
    15.   #--------------------------------------------------------------------------
    16.   # ● 初期化
    17.   #--------------------------------------------------------------------------
    18.   def initialize
    19.     # 删除前次导出的文件
    20.     ifFileTest.exist?("TreasureScript.txt")
    21.       File.delete("TreasureScript.txt")
    22.     end
    23.     @item_data = load_data("Data/Items.rxdata")
    24.     @weapon_data = load_data("Data/Weapons.rxdata")
    25.     @armor_data = load_data("Data/Armors.rxdata")
    26.     @map_infos = load_data("Data/MapInfos.rxdata")
    27.   end
    28.   #--------------------------------------------------------------------------
    29.   # ● 执行导出宝箱
    30.   #     map_id: 地图ID
    31.   #--------------------------------------------------------------------------
    32.   def export_treasure(map_id)
    33.     File.open("TreasureScript.txt", "a")do |f|
    34.       map_name = sprintf("Data/Map%03d.rxdata", map_id)
    35.       ifFileTest.exist?(map_name)
    36.         # 载入当前地图
    37.         map = load_data(map_name)
    38.         m = false
    39.         # 循环地图中所有事件
    40.         for i in1..999
    41.           event = map.events[i]
    42.           if event != nil
    43.             t = false
    44.             # 循环事件的每一页
    45.             event.pages.eachdo |page|
    46.               # 如果指令不为空
    47.               if page.list.length > 0
    48.                 # 循环页的所有指令
    49.                 page.list.eachdo |command|
    50.                   # 检查宝箱指令
    51.                   info = ""
    52.                   case command.code
    53.                   when125# 增减金钱
    54.                     if command.parameters[0] == 0
    55.                       info = sprintf("金钱: %s%d", command.parameters[1] == 1 ?
    56.                       "变量" : "", command.parameters[2])
    57.                     end
    58.                   when126# 增减道具
    59.                     if command.parameters[1] == 0  
    60.                       info = sprintf("道具: %s x %s%d", @item_data[command.parameters[0]].name,
    61.                       command.parameters[2] == 1 ? "变量" : "", command.parameters[3])
    62.                     end
    63.                   when127# 增减武器
    64.                     if command.parameters[1] == 0  
    65.                       info = sprintf("武器: %s x %s%d", @weapon_data[command.parameters[0]].name,
    66.                       command.parameters[2] == 1 ? "变量" : "", command.parameters[3])
    67.                     end
    68.                   when128# 增减防具
    69.                     if command.parameters[1] == 0  
    70.                       info = sprintf("防具: %s x %s%d", @armor_data[command.parameters[0]].name,
    71.                       command.parameters[2] == 1 ? "变量" : "", command.parameters[3])
    72.                     end
    73.                   end
    74.                   if info != ""
    75.                     # 输出事件提示字样
    76.                     if !m
    77.                       f.write("-----------------------------------------------------\n")
    78.                       f.write(sprintf(" ■ Map: %d (%s)\n", map_id, @map_infos[map_id].name))
    79.                       f.write("-----------------------------------------------------\n")
    80.                       m = true
    81.                     end
    82.                     if !t
    83.                       f.write(sprintf(" □ 坐标: (%03d, %03d); ", event.x, event.y))
    84.                       t = true
    85.                     else
    86.                       f.write("                      ")
    87.                     end
    88.                     # 输出宝箱
    89.                     f.write(info)
    90.                     f.write("\n")
    91.                   end
    92.                 end
    93.               end
    94.             end
    95.           end
    96.         end
    97.       end
    98.     end
    99.   end
    100.   #--------------------------------------------------------------------------
    101.   # ● 批量导出宝箱
    102.   #--------------------------------------------------------------------------
    103.   def export_all_treasures
    104.     for map_id in1..999
    105.       export_treasure(map_id)
    106.     end
    107.   end
    108. end
    109. t=Treasure_Export.new
    110. t.export_all_treasures
    111. exit
    复制代码


    导出效果展示:

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

    本帖子中包含更多资源

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

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

    使用道具 举报

    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-5-10 21:37 , Processed in 0.047148 second(s), 44 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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