口袋改版教程吧 关注:936贴子:4,865
  • 11回复贴,共1

【改版教程】脚本 - 新增交换者,和NPC交换宝可梦

只看楼主收藏回复

本教程依然有点跳级了,但应吧友需要,所以提前放出。
不废话了,开始正文吧。
什么是交换者,游戏中玩家与玩家可以用传输线或者无线等在两台设备之间进行交换宝可梦。
这样以达到获得更多种类和更强力的宝可梦。
其实游戏中也可以和一些NPC交换一些指定的宝可梦,也算是收集宝可梦的一种途径。
编辑交换者的工具是“Trader Advanced”,大家可以到本吧“改版工具箱”中下载。
首先打开并载入ROM

看界面,可以进行交换者的名字,宝可梦昵称,训练师ID,持有道具,性格,特性的修改。
有些项目显示乱码,是因为软件作者是国外的,对汉化版兼容不佳造成的,不过对功能是没关系的。只能通过尝试修改并通过实际游戏来确实是不是某项内容。
特性一项只能选择第1项或者第2项,这是预先设定好的。
交换者一项就是关键了
上面一项是npc的宝可梦,下面一项是你的宝可梦,英文查阅一下无压力。
点击“+”可进行npc宝可梦的努力值设定:

了解了这些就可以进行增加新的交换者了。
点击菜单”交换 - 修改交换者数量“。
因为新增数据需要占用ROM 空间,所以建议一次性计算好需要增加的数量,而不是想到一个增加一个。

比如我直接填上新的交换者数量为10个
地址,这里需要手动去搜索一个足够大空位,比如我填了F7B260,大家不要和我一样。
要多大呢,旁边就能看到240个字节。
最后点击重定向。

原版有4个,那我就从第5个开始,并进行一系列的修改
我要新增一个npc要古空棘鱼,而换给我的是鲤鱼王。
其他的一系列内容我也一并写上,点击保存即可:


IP属地:意大利1楼2014-09-23 00:56回复
    接下来就让它在游戏中生效:
    和NPC对话是通过脚本来操作的,所以得先编写脚本:
    #dynamic 0xF7B580 【此处0xF7B580为脚本开始,需要搜索空位,请不要和我一样】
    #org @start
    lock
    faceplayer
    checkflag 0x100A 【此处0x100A为判断交换是否完成的标识,哪些标识未使用未统计,请不要和我一样】
    if 0x1 goto @snippet1
    setvar 0x8008 0x4 【此处0x4为Trader Advanced中的交换者编号,第1个是0x0,所以第5个为0x4】
    copyvar 0x8004 0x8008
    special2 LASTRESULT 0xFF
    copyvar 0x8009 LASTRESULT
    msgbox @string1 MSG_YESNO
    compare LASTRESULT 0x0
    if 0x1 goto @snippet2
    special 0xA2
    waitstate
    copyvar 0x800A 0x8004
    compare 0x8004 0xFF
    if 0x1 goto @snippet2
    copyvar 0x8005 0x800A
    special2 LASTRESULT 0x102
    copyvar 0x800B LASTRESULT
    comparevars LASTRESULT 0x8009
    if 0x5 goto @snippet3
    copyvar 0x8004 0x8008
    copyvar 0x8005 0x800A
    special 0x100
    special 0x101
    waitstate
    msgbox @string2 MSG_KEEPOPEN
    setflag 0x100A 【设定标识,同上】
    release
    end
    #org @snippet1
    msgbox @string3 MSG_KEEPOPEN
    release
    end
    #org @snippet2
    msgbox @string4 MSG_KEEPOPEN
    release
    end
    #org @snippet3
    bufferpokemon 0x0 0x8009
    msgbox @string5 MSG_KEEPOPEN
    release
    end
    #org @string1
    = 是否要用我的[buffer2]跟你换[buffer1]。 【此处及以下为文本对话,需要用文本大师转换才能直接通过脚本写入】
    #org @string2
    = 刚完成交换时的对话。
    #org @string3
    = 交换完成后,再次对话的闲聊。
    #org @string4
    = 取消交换的对话。
    #org @string5
    = 选错宝可梦,这看上去不是[buffer1]


    IP属地:意大利2楼2014-09-23 00:58
    回复
      脚本写完了,就需要在游戏中应用
      用AdvanceMap打开ROM,并选取一个NPC:

      并在这个npc的“脚本地址”处填写,之前写入脚本的开始地址,保存。
      然后点击打开脚本(需要预设脚本编辑器,否则此按钮是灰的)
      将之前编写的脚本:
      #dynamic开始到最后#org @string5末尾的文本全部粘帖覆盖。
      点击写入

      出现以下窗口即为写入成功,关闭即可:


      IP属地:意大利3楼2014-09-23 00:59
      回复
        那进入游戏看看实际效果吧

        啊哦,好像交换的宝可梦和被交换的宝可梦顺序搞错了。
        总之还是成功的。
        需要设置其他交换者的话,在“Trader Advanced”中编辑6号7号等交换者即可。
        注意每个交换者的判断标识不能相同,也不能是游戏中被用过的,至于怎么才算没被用过。
        答案是未知的,看运气了。
        另外再次提醒教程中的空位地址请自行搜索。
        完结


        IP属地:意大利4楼2014-09-23 00:59
        回复
          蛋疼吧主居然不精


          IP属地:意大利来自Android客户端5楼2014-09-23 07:35
          回复
            吧主好像不在……


            IP属地:吉林6楼2014-09-23 16:43
            收起回复
              以加精,最没法上贴吧


              IP属地:福建7楼2014-09-24 12:17
              收起回复
                口袋妖怪♂♀


                IP属地:意大利来自Android客户端8楼2014-10-19 07:44
                回复