Pokemon Center | 口袋中心 以口袋妖怪为主题并带有其他动漫游戏的讨论

 找回密码
 加入口袋中心
搜索
查看: 624|回复: 9

【原创】用PKHeX的Event Flags修改事件是否完成;教你还原王冠极限特训效果

[复制链接]

2万

帖子

4186

现金

261

勋章券

管理员

起源の钻角犀兽

Rank: 27Rank: 27Rank: 27

积分
47698
QQ

Missingno论坛十周年纪念物水中王者勋章Lv3时光印记Lv.3Omega红宝石发售确认纪念章Alpha蓝宝石发售确认纪念章

发表于 2017-4-18 22:03:57 | 显示全部楼层 |阅读模式
转载请注明作者及原帖地址:http://www.pmcenter.cn/forum.php ... &extra=page%3D1

前言:虽然我潜水那么多年了,国内PM圈大环境还是日常关注下的,不想宝可梦走到第七世代因为机子的破解正版氛围是反不如六代时了,所以PKHeX(最牛的宝可梦正统作全世代记录修改器,原地址:https://projectpokemon.org/forum ... -1-7-savpkm-editor/)的使用者也变多了,昨天入睡前突然想写点什么,就决定讲讲怎么用PKHeX修改某个事件是否完成吧。当然我说这个前言的初衷么,还是希望,破解机都打通了PKHeX可以修改正版卡记录了,那游戏你总搞个正版卡带比较好你说是吧?!

好了,言归正传,我们来看看,这是Event Flags功能读取日/月记录时的界面,当然你不要问我Event Flags在哪点出来,选择中文时叫做“事件旗标”,这个翻译怎么说呢,我想“立Flag”这个网络用语大家都懂吧,所以这翻的…我还是习惯性的用英文界面来讲好了
Flag01.png

先简单粗暴的解释下,Flag是啥意思。抛开计算机专用的词汇性质,你理解为旗帜也可以啊。我打个简单的比方,古代打仗,我占领了你的营地,我会做啥呢?把我的旗帜竖起来,宣告这里我占领了。所以旗帜起到的是一个“标识”的作用,旗帜竖起来,就是1,表示事情做好了,反之则是0,表示这个事情未完成。

我现在想做这么一件事,我的月版里在月轮湖已经把小星云领掉了,但是日版还没有触碰这个剧情过,所以我能不能通过观察剧情完成前后的Flag情况对比来还原月版里日月神“交合”留下个小星云让你带走的剧情呢?这当然可以。
上图的记录就是我的日版带着索尔迦雷欧保存在触发剧情的地理坐标前。我们要尽可能的得到有效的信息,那就得尽量减少操作及不同项。游戏里这个剧情是走到某个坐标满足条件则自动触发的,所以我选择在前一格保存,提取记录,触发后一等操作权回到玩家手上,马上保存,再提取记录,通过这两个记录的比对去得到我们想要的Flag变化情况。

细心的盆友可能发现了,你这不是多此一举吗,你看图中不是Received Gift Cosmog有的直接选择是否打钩吗?如果你玩过这个功能,你会发现,我本来小星云已经领了,现在把打钩去掉了,到了日/月轮湖,不是重新触发日月神“交合”的动画留下小星云让你带走,而是直接省略了这一步,只是小星云站在原地等你来带走它,这是什么道理?咦?你可仔细看好了,我的记录是在触碰这个剧情前,Received Gift Cosmog可是打着勾的,这和字面意思根本就是违背的啊!其实原因很简单,比如说地上有个道具,我捡了,这个道具就没了,这样的事件只有两个状态,我捡走了或我还没捡走,因此往往只需要一个Flag就能表达了。但这个剧情并不是,我至少得先用一个Flag标记,我是否激活了小星云,再用一个Flag去标记我是否领取了小星云。因为一个Flag只能是1或0,不能表达两个以上的状态,所以这个剧情中,我们至少要用到两个Flag,那么该剧情软件直接提供的这个单选框能起到完美还原的作用吗?明显是不能的。我也不卖关子了吧,Received Gift Cosmog这个单选框,本质就是Status为1216号的Flag,见图中右下角区域。我把这个勾去掉,Received Gift Cosmog的勾也会一同去掉,他们等效,因为指向的是同一个存储地址啊。所以左上角的Event Flags区域内的功能,就是包含在右下角Status中的5个罢了,只是明确了意义,又比较用得到,作者才单独给他们做了功能区域。

接下来我们来比对下前文说的两个记录的不同,用左下角的FlagDiff Researcher的功能,Load Old打开触发前的记录,Load New打开触发后的记录,软件会把不同之处给你检索出来,请看下图(先跳了个消息弹窗“No Event Constant diff found.“,这很好,右下角区域的Constant就不用管啦)
Flag02.png

看到没,IsSet 1217,UnSet 1216.
这是啥意思呢,说明触发以后的记录(用Load New打开的)产生了两个变化,即Status为1217号的Flag由0变成了1,Status为1216号的Flag由1变成了0.如果我们打开对应记录观察这两个Flag,得到的结果会是一致的。
这时候可能有人就想啊,我打开我已经完成小星云领取的记录文件,把1217和1216号Flag的情况改成和触发前的存档中一样,即1217为0,1216为1,是不是就能把该剧情还原到触碰前了呢?于是试了下发现,哎,奇怪,剧情没有再触发啊,小星云也不在那,怎么没看到任何变化呢?
这个问题,只要仔细想想就能明白疏忽在哪了。我的记录是小星云领完了,这个剧情是分解成”①剧情未触发②小星云诞生,你可以去领了③我领好了,剧情完成“三个步骤,你用①和②比对,不能得出②到③剧情继续的Flag变化,这是比较容易脑抽犯错的地方。于是我把②和③的两个提取的记录比较下,②是Old,③是New,得出”IsSet 0503,1216,“。再用①作Old和③作New对比下,得出”IsSet 0503,1217,“。
通过上述信息,我们可以整理出来
                  Flag    0503    1216    1217
整个触发剧情前      0          1          0
小星云可以领了      0          0          1
小星云领取完成      1          1          1

这时你明白该怎么把这个剧情彻底还原到触发前了吧,也明白为什么仅仅修改Received Gift Cosmog(作者便捷提供的单选框,即1216号Flag)只能使得小星云站在那让你领了吧~

事例讲解就到这吧,有兴趣的盆友可以自己挖一些Flag的含义,不要忘记分享,我先抛砖引玉一下好了~

①还原对战树门口的赤红(这是道风景啊~)
0500置0,0981置0

②之前说了道具一般就一个Flag控制么,那就来个欧哈纳牧场地上的护符金币再现吧~
1837置0
啊咧咧,又挖坑不填哎╮(╯▽╰)╭

告别真新镇后不知经过多久,擦伤,砍伤,朋友的数目,让我有点自豪,那时候因为流行而跑去买的,这双轻便的运动鞋,现在成了,找遍全世界也找不到的,最棒的破鞋子……
口袋中心·绿宝石·改(更新1.6.4版)
【口袋中心出品】魂银·壹式改点壹(全493)
好吧,这是官方微博-_-    好吧,这是我的微博-_-
个人制作的FC魂斗罗2代hack版    建了之后就没怎么管理的blog-_,-|||  
回复

使用道具 举报

2万

帖子

4186

现金

261

勋章券

管理员

起源の钻角犀兽

Rank: 27Rank: 27Rank: 27

积分
47698
QQ

Missingno论坛十周年纪念物水中王者勋章Lv3时光印记Lv.3Omega红宝石发售确认纪念章Alpha蓝宝石发售确认纪念章

 楼主| 发表于 2017-4-18 23:15:48 | 显示全部楼层
上文中我们讲的软件是PKHeX,忽然想到PKheX我没有找到可以还原个体值王冠判定的地方(该项个体值存在王冠判定的话框的背景色是绿的,没找到可以更改的地方,或许以后会有吧……也可能我没发现么?),于是接着上文,我再讲讲怎么还原王冠判定(不要问我王冠有啥用…)

案例:把不久前配信的闪光卡噗·鸣鸣练好了,我忽然觉得为了我换配招使用时可能会用到的急速折返多蹭点血,物攻个体值(在数值表象上)也有必要极限,于是我对这只卡噗·鸣鸣的物攻使用了一发银色王冠。
使用银色王冠前后的卡噗·鸣鸣的第七世代精灵数据文件(可以用PKHeX导入导出,文件后缀名.pk7)的数据不同之处,通过16进制比对软件,如下图所示
WGHY01.png

不同之处有两处,一处是偏移量0x06,一处是0xDE(0x表示数值是16进制表示)。
和第六世代一样,0x06-0x07是Checksum的值,至于Checksum是啥,简单的来说,字面意思校验和,知道校验二字的意思就可以了,说明该值是会随着其他内容的改变而改变的。那么很明显,剩下的0xDE就是王冠判定的数据存储字节所在了,0x06是由于0xDE的变动跟着改变的。
王冠判定也就两可能,是或否,所以每个个体值的王冠判定只需要一位就可以存储,我们把0xDE的字节展开为二进制
0x04 = 0000 0100
0x06 = 0000 0110

可知控制物攻个体值王冠判定的位了(咦,你问我为什么这块内容比上文写的简单很多,因为晚了我要去睡觉了啊~

于是给个结果示意图,懂了吧(按顺序存储在0xDE的低6位)~
王冠判定(0xDE):
00000000(无)
00000001(HP)
00000010(物攻)
00000100(防御)
00001000(特攻)
00010000(特防)
00100000(速度)


二进制和十六进制的转换用电脑自带的计算器就可以了。
接着只要用16进制编辑软件如WinHex改一下偏移量0x06和0xDE的值就可以了(你问我0x06怎么改?F6 - F4 = 06 - 04 = 02,民不民白?)。
顺便给一下图中所用的16进制比对软件↓
HexComparison_3.0_XiaZaiBa.zip (682.85 KB, 下载次数: 36)
啊咧咧,又挖坑不填哎╮(╯▽╰)╭

告别真新镇后不知经过多久,擦伤,砍伤,朋友的数目,让我有点自豪,那时候因为流行而跑去买的,这双轻便的运动鞋,现在成了,找遍全世界也找不到的,最棒的破鞋子……
口袋中心·绿宝石·改(更新1.6.4版)
【口袋中心出品】魂银·壹式改点壹(全493)
好吧,这是官方微博-_-    好吧,这是我的微博-_-
个人制作的FC魂斗罗2代hack版    建了之后就没怎么管理的blog-_,-|||  
回复 支持 反对

使用道具 举报

1544

帖子

295

现金

6

勋章券

黑暗山洞中的修炼

Rank: 13Rank: 13Rank: 13

积分
2585
QQ

时光印记Lv.1水中王者勋章Lv2御姐型LUGIA金银好CP-Ho-oh/LUGIA【真·正常向】黑白系列男主角【白日版】论坛十周年纪念物个别的十一人勋章


利欧路 Lv:39
发表于 2017-4-19 19:22:37 | 显示全部楼层
虽然我看不懂,但正版卡带咱是买了的,7年了,算是还了任天堂一张票吧。
另外,沙发
FC码:3712-1820-9923,玩口袋妖怪的可以互加,其他游戏暂时没精力玩
回复 支持 反对

使用道具 举报

836

帖子

81

现金

1

勋章券

黑暗山洞中的修炼

Rank: 13Rank: 13Rank: 13

积分
2614
QQ

No.281 奇鲁莉安论坛十周年纪念物黑白系列男主角【白日版】黑白系列女主角【白日版】黑白系列NPC【白日版】水中王者勋章Lv1时光印记Lv.1ORAS活动限定勋章Ver.1


沙奈朵 Lv:64
发表于 2017-4-20 12:01:01 | 显示全部楼层
论海大码农能力的觉醒
口袋的魅力在于培养,在于冒险,所有RPG吸引人的地方我觉得都在冒险方面,拿起自己的精灵球扬帆远航吧
回复 支持 反对

使用道具 举报

2万

帖子

4186

现金

261

勋章券

管理员

起源の钻角犀兽

Rank: 27Rank: 27Rank: 27

积分
47698
QQ

Missingno论坛十周年纪念物水中王者勋章Lv3时光印记Lv.3Omega红宝石发售确认纪念章Alpha蓝宝石发售确认纪念章

 楼主| 发表于 2017-4-20 18:47:17 | 显示全部楼层
暗影之刺 发表于 2017-4-20 12:01
论海大码农能力的觉醒

图中毫不涉及编程啊

点评

只是我毫无依据的胡说啦,顺便路过应援下暖帖  发表于 2017-4-20 20:27
啊咧咧,又挖坑不填哎╮(╯▽╰)╭

告别真新镇后不知经过多久,擦伤,砍伤,朋友的数目,让我有点自豪,那时候因为流行而跑去买的,这双轻便的运动鞋,现在成了,找遍全世界也找不到的,最棒的破鞋子……
口袋中心·绿宝石·改(更新1.6.4版)
【口袋中心出品】魂银·壹式改点壹(全493)
好吧,这是官方微博-_-    好吧,这是我的微博-_-
个人制作的FC魂斗罗2代hack版    建了之后就没怎么管理的blog-_,-|||  
回复 支持 反对

使用道具 举报

533

帖子

428

现金

2

勋章券

阳光绿叶的映衬者

Rank: 18Rank: 18

积分
10134

金银好CP-Ho-oh/LUGIA【真·正常向】金银好CP-Ho-oh/LUGIA【里】金银好CP第二弹-LUGIA金银好CP第二弹-凤王黑白系列女主角【白日版】水中王者勋章Lv1时光印记Lv.1论坛十周年纪念物


哈克龙 Lv:46
发表于 2017-4-25 00:14:33 | 显示全部楼层
成功还原赤红!
不过第一次成为冠军和究极空间剧情即使把勾去掉了依旧不能再次触发
回复 支持 反对

使用道具 举报

2万

帖子

4186

现金

261

勋章券

管理员

起源の钻角犀兽

Rank: 27Rank: 27Rank: 27

积分
47698
QQ

Missingno论坛十周年纪念物水中王者勋章Lv3时光印记Lv.3Omega红宝石发售确认纪念章Alpha蓝宝石发售确认纪念章

 楼主| 发表于 2017-4-25 18:48:26 | 显示全部楼层
AIOの酱 发表于 2017-4-25 00:14
成功还原赤红!
不过第一次成为冠军和究极空间剧情即使把勾去掉了依旧不能再次触发

这两个肯定比较复杂,不会只有1个flag控制的
啊咧咧,又挖坑不填哎╮(╯▽╰)╭

告别真新镇后不知经过多久,擦伤,砍伤,朋友的数目,让我有点自豪,那时候因为流行而跑去买的,这双轻便的运动鞋,现在成了,找遍全世界也找不到的,最棒的破鞋子……
口袋中心·绿宝石·改(更新1.6.4版)
【口袋中心出品】魂银·壹式改点壹(全493)
好吧,这是官方微博-_-    好吧,这是我的微博-_-
个人制作的FC魂斗罗2代hack版    建了之后就没怎么管理的blog-_,-|||  
回复 支持 反对

使用道具 举报

2万

帖子

4186

现金

261

勋章券

管理员

起源の钻角犀兽

Rank: 27Rank: 27Rank: 27

积分
47698
QQ

Missingno论坛十周年纪念物水中王者勋章Lv3时光印记Lv.3Omega红宝石发售确认纪念章Alpha蓝宝石发售确认纪念章

 楼主| 发表于 2017-6-18 23:47:57 | 显示全部楼层
AIOの酱 发表于 2017-4-25 00:14
成功还原赤红!
不过第一次成为冠军和究极空间剧情即使把勾去掉了依旧不能再次触发


忽然想起我的日版里UB剧情是恶食大王抓好了但是没去找帅哥,于是看了下数值变化
恶食大王抓完 → 整个UB剧情结束:
IsSet:0146,1006,3444,
UnSet:0999,3369,
除了上述Flag的Status的布尔判定变迁,还有Constant编号722的值(Value)从16变成了18

所以你的问题,是不是要注意下Constant的值?

顺便,玛机雅娜领取前后的变化是:
IsSet:0276,1209,3487,
啊咧咧,又挖坑不填哎╮(╯▽╰)╭

告别真新镇后不知经过多久,擦伤,砍伤,朋友的数目,让我有点自豪,那时候因为流行而跑去买的,这双轻便的运动鞋,现在成了,找遍全世界也找不到的,最棒的破鞋子……
口袋中心·绿宝石·改(更新1.6.4版)
【口袋中心出品】魂银·壹式改点壹(全493)
好吧,这是官方微博-_-    好吧,这是我的微博-_-
个人制作的FC魂斗罗2代hack版    建了之后就没怎么管理的blog-_,-|||  
回复 支持 反对

使用道具 举报

386

帖子

1145

现金

23

勋章券

火岛温泉中的舒心

Rank: 10Rank: 10

积分
1275
QQ

时光印记Lv.1水中王者勋章Lv1

发表于 昨天 23:49 | 显示全部楼层
怎么提升阅读权限到255啊,渴求培训
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入口袋中心

本版积分规则

手机版|Archiver|Pokemon Center

GMT+8, 2017-6-28 02:54 , Processed in 0.054785 second(s), 53 queries , Eaccelerator On.

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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