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

 找回密码
 加入口袋中心
搜索
12
返回列表 发新帖
楼主: 744865306
打印 上一主题 下一主题

求助,我写的特性未能达成想要的效果:

[复制链接]

118

帖子

1186

现金

0

勋章券

与恶势力的交锋

Rank: 7Rank: 7Rank: 7

积分
454

时光印记Lv.1

16#
发表于 2021-7-29 09:21:12 | 显示全部楼层
744865306 发表于 2021-7-29 06:57
我直接抄的战斗脚本

脚本应该是正确的,具体问题看上一楼的回复
业余改版爱好者
回复 支持 反对

使用道具 举报

118

帖子

1186

现金

0

勋章券

与恶势力的交锋

Rank: 7Rank: 7Rank: 7

积分
454

时光印记Lv.1

17#
发表于 2021-7-29 14:09:25 | 显示全部楼层
744865306 发表于 2021-7-29 11:29
我的新精灵编号是放在了r0,这样不会盖掉嘛?

那你把他放到其他寄存器或者栈里保护起来不就行了
业余改版爱好者
回复 支持 反对

使用道具 举报

118

帖子

1186

现金

0

勋章券

与恶势力的交锋

Rank: 7Rank: 7Rank: 7

积分
454

时光印记Lv.1

18#
发表于 2021-7-29 14:36:46 | 显示全部楼层
744865306 发表于 2021-7-29 11:50
经过一番修改后,我发现变成了0号精灵,代码如下:

首先你hook的位置问题就很大 你应该在
  1. case 1: //end turn abilities
复制代码
下hook,因为如果我没记错的话饱了又饿特性是回合末发动的。
其次,这个函数的参数本来就有bank,而且并不一定是attacker,你写的这些操作
  1. ldr r5,=0x0202420B
  2. ldrb r5,[r5]
  3. .......
  4. ldrh r5,[r2]
  5.         ; 经过计算将"空腹花纹"编号存入r2
复制代码
是错误而且毫无意义的,建议你好好再看一下这个函数的逻辑
然后,
  1. mov r0,r2
  2. mov r1,#0xFF
  3. add r1,#0x22
  4. lsl r1,r1,#1
复制代码
这些是干什么的?不管是干什么的,他都起不到作用,因为后面调用了函数,重设了r0-r3的值
最后,你把需要变更的精灵的种族放在了r0,然后就没有操作了?直接执行变更的脚本,不出bug才怪了。
总而言之,还是老话:按照界限盾壳的写法写就可以了
业余改版爱好者
回复 支持 反对

使用道具 举报

118

帖子

1186

现金

0

勋章券

与恶势力的交锋

Rank: 7Rank: 7Rank: 7

积分
454

时光印记Lv.1

19#
发表于 2021-7-29 15:05:05 | 显示全部楼层
744865306 发表于 2021-7-29 14:50
界限盾壳不是这样写的嘛?(懵)
  1. new_battlestruct->various.var1 = POKE_MINIOR_METEOR; //应该是变化后的种族吧
  2. new_battlestruct->various.var2 = 0x242; //不知道是啥,应该照抄
复制代码
这个你有写吗?
业余改版爱好者
回复 支持 反对

使用道具 举报

118

帖子

1186

现金

0

勋章券

与恶势力的交锋

Rank: 7Rank: 7Rank: 7

积分
454

时光印记Lv.1

20#
发表于 2021-7-29 15:07:10 | 显示全部楼层
744865306 发表于 2021-7-29 14:56
r1没有那些数据的话根本就转换不了,回合末的地址的话我找不到……

你用nogba走一下就知道回合末在哪了
业余改版爱好者
回复 支持 反对

使用道具 举报

118

帖子

1186

现金

0

勋章券

与恶势力的交锋

Rank: 7Rank: 7Rank: 7

积分
454

时光印记Lv.1

21#
发表于 2021-7-29 15:36:49 | 显示全部楼层
744865306 发表于 2021-7-29 15:29
有啊,那俩数据我存在了r0和r1

那你把他们存起来了吗 我没有在你的代码里看到new_battlestruct的指针0x02024218
业余改版爱好者
回复 支持 反对

使用道具 举报

118

帖子

1186

现金

0

勋章券

与恶势力的交锋

Rank: 7Rank: 7Rank: 7

积分
454

时光印记Lv.1

22#
发表于 2021-7-29 15:38:37 | 显示全部楼层
744865306 发表于 2021-7-29 15:29
有啊,那俩数据我存在了r0和r1
  1. mov r0,r2
  2. mov r1,#0xFF
  3. add r1,#0x22
  4. lsl r1,r1,#1
复制代码
写出来没用啊,得存到对应的地方才行
业余改版爱好者
回复 支持 反对

使用道具 举报

118

帖子

1186

现金

0

勋章券

与恶势力的交锋

Rank: 7Rank: 7Rank: 7

积分
454

时光印记Lv.1

23#
发表于 2021-7-29 20:35:13 | 显示全部楼层
744865306 发表于 2021-7-29 19:27
大佬,我这样写,结果精灵转变成了妙蛙草且卡死,能看看是什么原因嘛?

.gba

我比较忙,抽不出具体时间帮你分析,只能用零碎时间给你提点建议。
你用nogba看看哪里卡死的,是不是在你函数内部卡死的。
还有卡死是哪种卡死?是nogba崩溃了还是卡在战斗界面但无法操作?如果是第一种估计是你的函数有问题,第二种估计是战斗脚本有问题。不过既然都能变化形态说明函数估计也没有什么大问题,就是要看看为什么变得不是你想要的精灵。
另外,之前就说了,这个函数的参数里自带bank,不要
  1. ldr r5,=0x0202420B
  2. ldrb r5,[r5]
  3. ......
  4. ldrh r5,[r2]
复制代码
用他的bank
业余改版爱好者
回复 支持 反对

使用道具 举报

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

本版积分规则

手机版|Archiver|Pokemon Center

GMT+8, 2024-5-21 17:48 , Processed in 0.062155 second(s), 24 queries , Eaccelerator On.

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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