教你如何用pokescript修改口袋游戏剧情

上传人:平*** 文档编号:16328083 上传时间:2017-11-07 格式:DOC 页数:30 大小:160.25KB
返回 下载 相关 举报
教你如何用pokescript修改口袋游戏剧情_第1页
第1页 / 共30页
教你如何用pokescript修改口袋游戏剧情_第2页
第2页 / 共30页
教你如何用pokescript修改口袋游戏剧情_第3页
第3页 / 共30页
教你如何用pokescript修改口袋游戏剧情_第4页
第4页 / 共30页
教你如何用pokescript修改口袋游戏剧情_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《教你如何用pokescript修改口袋游戏剧情》由会员分享,可在线阅读,更多相关《教你如何用pokescript修改口袋游戏剧情(30页珍藏版)》请在金锄头文库上搜索。

1、教你如何用 pokescript 修改口袋游戏剧情! 嗯看了上个帖子的人应该多少对文章有一定了解了,这个教程就是对软件pokescript 的一番讲解。pokescript 是什么呢?它是老外开发的一款剧情编辑工具,输入脚本,就可以直接操作 ROM,相当方便。本文是我 liuyanghejerry 在看了软件作者 Irish witch 的教程之后翻译修改的,使得文章能让我们看的更顺眼,部分教程还做了调整,不过有些不好翻译的地方我仍旧保持着原文(看目录就知道了) ,如果有什么地方看不懂,大家可以跟帖表示,我会尽我所能回答的。OK 以下开始正文:Pokescript 教程我注意到许多人来到我们论

2、坛都会问道一个共同的问题:如何利用 Pokescript 制作改版?那么现在就让我来完整的回答这个问题吧.当然,我所讲的一切都基于我的软件Pokescript.首先,我们需要下载两样东西:Pokescript(见附件), 以及一个数据库,PkmAdv(见附件).PokeScript 的安装相当简单,通常会安装在 c:/pokewitch,而 PkmAdv 也是一样的,注意保持它们在相同的文件夹内即可.下面我们来看看教程的安排,也就是目录:0. 准备知识1. 基础内容1.1 开始学习1.2 显示一段文字1.3 写入 ROM1.4 真正显示于游戏2. 关于物品赠送2.1 只给一次的情形处理(使用标

3、识)2.2 是或不是的问题处理2.3 接收物品2.4 检查物品2.5 删除物品3. 关于精灵赠送3.1 让精灵消失3.2 给予精灵的情形处理3.3 给精灵起个昵称3.4 让图鉴工作起来3.5 统计精灵3.6 选择精灵 4. 野外的场景4.1 控制 NPC 移动4.2 计算路线4.3 开始移动4.4 设置路标 4.5 跟随 NPC5. 道馆中的情形5.1 地图中的人物5.2 与野生精灵战斗5.3 寻找训练师5.4 基本的训练师战斗5.5 双人战斗5.6 道馆馆主5.7 再次相遇的战斗5.8 训练师的可视范围0.准备知识 现在让我们来接触一下需要了解的一些基础知识吧.十六进制数字十六进制数字是相对

4、于十进制的一种数字表达方法,它用的不是 0,1,2,3,4,5,6,7,8,9 而是 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 这十六个字符.使用十六进制数字更有利于和二进制的处理器交换数据,但我们不需要深入了解.通常,我们表示时在前面加上&H或者0x.你无需使用十六进制数字去做什么艰难的工作,顶多,就是用它们写写地址之类的东西.那么接下来要说的就是地址.地址是什么?我没法具体的去说明它,而且也没有必要,我们只需要知道它长这样:0x800100.但实际上在 Pokescript 当中我们并不(或者说很少)用到这种表达方式,我们会用到这个:$Offset,来看一段简单的示例

5、:code:#inline $Variable 1 = Hi Im John!$Variable 1 = Hi Im John!以上说的什么?你完全不用理会,你需要注意的是这个$Variable.在 Pokescript 当中,一个英文词语前加$就可以表示一个地址,当然,这个词语当中不允许有任何符号.至于它表示的地址具体是什么,完全不必理会(至少现在如此), 那是程序的任务 .注:在一些特别的时候 ,我们需要将地址表示为 0x800100 的形式,因为这是所有工具都认识的格式下面开始进入正题:1. 基础内容在我的教程中,我们时刻都要考虑你的脚本需要做什么,比如现在正要说的显示信息和道具给予.1

6、.1 开始学习 通常在整个改版过程中,我们得有一套完整的事件流程,就像一个剧本,比如:1. 你在地图上激活一个 NPC.2. NPC 将会问你一个问题.3. 如果你回答是,那么他将会给你一块饼干.4. 如果你已经要过饼干了,那么他会说另一段话以上是一个很基本的例子,但我们现在还不到那个地步,我们得先来点更简单的:显示信息,也就是让 NPC 对你说一句话,然后来看看脚本是如何输出并写入 ROM 的.首先打开记事本,并在其中输入以下的内容:Code:#ORG $ShowTextLockFaceplayer以上是几条最为基本的命令,最开始的是地址标志,也就是$ShowText,前面我们曾经说过.而#

7、ORG 则表示脚本开始.这两个命令相当重要,因为它们不仅在这里要用到,而且以后几乎所有的脚本中都要用到,我们把它们看做一条命令,必须牢记.第二行的命令 Lock 表示将 NPC 锁定,而不是让他跑动.第三行命令更好理解,它表示面对主角.通常开始一段对话的时候都要写以上的部分,这几乎成了惯例.那么下一步就是:1.2 显示一段文字以上的那些命令在每次显示一段文字时都要用到,那么来看看下面的代码:message $NoCookie$NoCookie 1 = Im not made of cookies!lYou only get one.boxset 6$NoCookie 的格式前面已经说过,是一个

8、地址,但不仅仅表示地址,此处我们认为它是一个变量.(变量是编程中用到的词语 ,完全不懂的话可以百度一下,当然,你跟着教程也能自己悟出)而 Im not made of cookies!lYou only get one.则是我们想要显示的信息,其中l 表示换行.与l 类似的还有n 和p ,区别大家可以自己体会.boxset 是设置对话框的意思,表示这里的内容在对话框中显示,6 表示普通的文本对话框.看起来我们已经完成了所要做的,但请等一下,在末尾加上:releaseend表示恢复 NPC 原始形态,并结束脚本.这样整个脚本就是:#ORG $ShowTextLockFaceplayermessa

9、ge $NoCookie $NoCookie 1 = Im not made of cookies!lYou only get one.boxset 6releaseend现在我们在记事本当中,选择另存为,存为*.rbc 格式即可 .接下来我们将脚本写入 ROM.1.3 写入 ROM现在在我的电脑 中找到刚才保存好的脚本 ,右键可以看到 合并脚本到 ROM的相关字样(英文:complie the script),点击 .这时程序会弹出两个窗口,一个类似于工作日志,我们关闭它;而另一个则是 Pokescript 合并器的主窗口.(如果这个窗口未能弹出,那么双击同目录生成的文件即可)紧接着我们有两

10、个方法来完成剩余的工作.比较直接的方法单击那个好像书本一样的按钮,然后载入你想合并的 ROM.注意,如果此时底下的列表中有多项内容你希望添加,那么使用 shift 可以复选,否则选中一个就好.现在就会弹出一个小窗口此窗口会告诉你,即将写入的信息有多少以及 ROM 有多少剩余空间、从什么地方开始写起.如果是第一次使用,那么我们大可按照默认的地址0x800000 开始写入,因为在原来的 ROM 中,这个地方是空的.按下你需要写入的地址,然后点assign.瞧,又回到主窗口了.点击file菜单中的Burn, 程序就开始工作了.工作完毕后千万不要直接关闭,记下程序回显中紧跟着起始地址的一行数字,我们一

11、会有用的哦.推荐的方法回到刚才,弹出小窗口的时候.大家应该注意到assign按钮上有一个复选框,钩选之后按钮就会显示Reserve,如此你所写入 ROM 的信息就不会覆盖到任何其它数据了( 如果这不是个 Clean ROM 的话).1.4 真正显示于游戏经过刚才的步骤,脚本已经被输入到 ROM 当中了,但是我们并没有让脚本的内容进入游戏.打开经典的工具 Advanced Map,调至你所想要修改对话的 NPC(在 event view 页面选中),在地图右边找到Script Offset一项(也就是地址了 ),还记得刚才我要大家记下的数字吗 ?粘贴替换掉现在那个,保存,测试!那么,现在一个最基

12、本的步骤就算结束了,后面,我们就来完成一开始的那个小剧本吧.注意了,如果您在 ROM 当中发现修改后的对话成为了乱码,那么您必须参见这里解决:http:/ 2. 关于物品赠送学习完以上的内容,大家应该对脚本制作有一个大概的了解了.如何开始一个脚本、如何结束一个脚本以及如何使脚本在游戏中实现,都必须牢记.现在让我们来看看关于物品赠送的部分.以下的例子和上文中的很相似,不过这次我们给变量一个新名字:$GotCookie(上文名为$ShowText).2.1 只给一次的情形处理(使用标识)当然,就和前面一样,我们的脚本仍然这么开头:#org $StartscriptLockFaceplayer为了能

13、使得游戏知道每一个事件,我们通常要用到一个命令:setflag,中文即是设立标识.这就好比公交车站牌一样,告诉公交车何时该停下.大概有 6000 个标识可以使用。但是,在 0x300 - 0x400 和 0x800 - 0x900 有许多游戏本身使用的,所以要避开这些去进行 HACK.标识通常写作 16 进制,不过我们这会还不用亲自设立标识,而只需要让游戏检查标识.说到这大家可能晕了,什么是检查标识?我们并没有设立任何标识啊.是这样的,检查标识是一个预备性的命令,而关于设立标识,则是以后几节的重点,现在只要认得这个:checkflag 0x200if B_TRUE goto $GotCooki

14、e你可能看不懂以上的脚本,没关系,我现在来讲解一下.checkflag 这个命令在检查标识 0x200.而这里,B_TRUE 也可以写作 1 或者 0x1,它们都表示正确.$GotCookie 是我们事先写好的脚本.也就是这么个意思:检查标识 0x200,如果该标识存在,则进入脚本$GotCookie为了能更好的理解上面所说的,我们来进入下一节.当一切联系起来的时候,你就会明了了.2.2 是或不是的问题处理是或不是的问题在对话时显得相当简洁,同时在结构上和之前显示对话的样式也很相似,因为它们都由对话引起.message $AskMe$AskMe 1 = Would you like a Lav

15、a Cookie?boxset 5以上的脚本和之前的很相似,唯一的区别就是命令 boxset 后的数字了.我们前面学过,6表示普通的文本对话框,那么 5 呢?5 则表示一个是或否的选择框.游戏中我们经常见到这样的选择框,不是吗?比如在捕捉到新精灵时,系统会自动问你,要起昵称吗,此时用到的就是这个了.与 checkflag 型的语法不同,语句块是不可以直接跟在 if 之后的,我们需要这样做:compare LASTRESUILT B_TRUEif B_False goto $DontGetcompare 命令是在做对比 ,即如果以上的 YES OR NO 的问题中你选则了和 YES 不同的答案,

16、那么将跳转到$DontGet 部分的脚本.当然,compare 命令不只可以用在 YES OR NO 的问题判断中,它还可以处理其它多值问题当中 ,这一点我们将在增加精灵一节展示出来,你会发现那是多么的事半功倍.而现在,我们得看看如何接收物品了.2.3 接收物品在上例中,我们最终会得到一块饼干,饼干的值是 0x26.你可以从附件中的 items.txt 获得(L:文章的最后我会提供下载的).在获得饼干的过程中不必担心背包已满而发生数据溢出的问题,系统会自动处理这一切:回绝别人的赠送.紧跟着上面的代码,我们还要加一句:setflag 0x200很眼熟吧?这就是上节中我们检查的那个标识,有了 setflag 这个命令,标识 0x200 就被建立起来了,而当 checkflag 再次检查

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号