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

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

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

[复制链接]

100

回帖

699

现金

0

勋章券

手举徽章的兴奋

Rank: 6Rank: 6

积分
372

时光印记Lv.1

发表于 2021-7-25 20:39:44 来自手机 | 显示全部楼层 |阅读模式
.gba
.thumb
.create "test.gba",0x8000000
.close
.open "绿宝石.gba","test.gba",0x8000000

.org 0x08F00000
.func new
        lsl r0,r0,#4
        and r4,r0
        cmp r4,#0
        bne NoPPReduce
        mov r1,#0x58
        ldr r0,=0x0202420B
        ldrb r0,[r0]
        mul r0,r1
        ldr r1,=0x020240A4
        add r0,r1
        ldrb r0,[r0]
        cmp r0, #79 ;"饱了又饿"特性编号
        beq yes1
end:
        ldr r3,=(0x08046B04|1)
        bx r3
yes1:
        ldr r0,=0x02024084
        ldrh r0,[r0]
        cmp r0,#1 ;空腹花纹编号
        bne changenull
        mov r1,#2 ;满腹花纹编号
keep:
        strh r1,[r0]
        b end
changenull:
        mov r1,#1 ;空腹花纹编号
NoPPReduce:
        ldr r3,=(0x08046BDC|1)
        bx r3
.endfunc
.pool

.org 0x08046AFC
        ldr r3,=(new|1)
        bx r3
.pool

.close
回复

使用道具 举报

115

回帖

1440

现金

0

勋章券

与恶势力的交锋

Rank: 7Rank: 7Rank: 7

积分
457

时光印记Lv.1

发表于 2021-7-26 17:15:35 | 显示全部楼层
744865306 发表于 2021-7-26 16:00
emmm,找不到特性代码,而且技能效果是用BS脚本的吧

战斗系统完全升级工程里面搜索ABILITY_SHIELDS_DOWN然后看相关逻辑 说实话用hook实现的话确实有点复杂
业余改版爱好者
回复 支持 1 反对 0

使用道具 举报

100

回帖

699

现金

0

勋章券

手举徽章的兴奋

Rank: 6Rank: 6

积分
372

时光印记Lv.1

 楼主| 发表于 2021-7-25 21:26:08 | 显示全部楼层
重新修改了下,不过还是没成功,话说果然只有电脑端能回复这么多行呢

.gba
.thumb
.create "test.gba",0x8000000
.close
.open "绿宝石.gba","test.gba",0x8000000

.org 0x08F00000
.func new
        lsl r0,r0,#4
        and r4,r0
        cmp r4,#0
        bne NoPPReduce
        mov r1,#0x58
        ldr r0,=0x0202420B
        ldrb r0,[r0]
        mul r0,r1
        ldr r1,=0x02024084
        add r0,r1
        add r0,#0x20
        ldrb r0,[r0]
        cmp r0, #79 ;"饱了又饿"特性编号
        beq yes1
end:
        ldr r3,=(0x08046B04|1)
        bx r3
yes1:
        ldr r3,=0x0202420B
        ldrb r3,[r3]
        mov r0,#0x58
        mul r3,r0
        add r1,r3
        ldrh r1,[r1]
        cmp r1,#1 ;空腹花纹编号
        bne changenull
        mov r0,#2 ;满腹花纹编号
keep:
        strh r0,[r1]
        b end
changenull:
        mov r0,#1 ;空腹花纹编号
NoPPReduce:
        ldr r3,=(0x08046BDC|1)
        bx r3
.endfunc
.pool

.org 0x08046AFC
        ldr r3,=(new|1)
        bx r3
.pool

.close
回复 支持 反对

使用道具 举报

115

回帖

1440

现金

0

勋章券

与恶势力的交锋

Rank: 7Rank: 7Rank: 7

积分
457

时光印记Lv.1

发表于 2021-7-25 21:26:45 | 显示全部楼层
战斗中变更种族不是这么直接改的...不记得绿宝石里有没有了,反正802里面是有一个函数专门完成这个操作,逻辑如下:
  1. static void species_change(u8 bank, u16 new_species)
  2. {
  3.     battle_participants[bank].species = new_species;
  4.     active_bank = bank;
  5.     bb2_setattributes_in_battle(0, 1, 0, 2, &battle_participants[bank].species); //0x08033900|1
  6.     mark_buffer_bank_for_execution(bank); //0x0803F800|1
  7. }
复制代码
如果绿宝石石里没有你可以自己写一个。然后在战斗脚本的callasm库里面加一个函数即可
业余改版爱好者
回复 支持 反对

使用道具 举报

115

回帖

1440

现金

0

勋章券

与恶势力的交锋

Rank: 7Rank: 7Rank: 7

积分
457

时光印记Lv.1

发表于 2021-7-25 21:28:52 | 显示全部楼层
另外,建议你把代码用代码框框起来 看着好看点。全部选中点击上面的<>就行了
  1. 就像这样
复制代码
业余改版爱好者
回复 支持 反对

使用道具 举报

100

回帖

699

现金

0

勋章券

手举徽章的兴奋

Rank: 6Rank: 6

积分
372

时光印记Lv.1

 楼主| 发表于 2021-7-26 09:54:40 来自手机 | 显示全部楼层
本站第一萌新 发表于 2021-7-25 21:26
战斗中变更种族不是这么直接改的...不记得绿宝石里有没有了,反正802里面是有一个函数专门完成这个操作,逻 ...

……emmm,看不太懂
回复 支持 反对

使用道具 举报

115

回帖

1440

现金

0

勋章券

与恶势力的交锋

Rank: 7Rank: 7Rank: 7

积分
457

时光印记Lv.1

发表于 2021-7-26 10:53:38 | 显示全部楼层
744865306 发表于 2021-7-26 09:54
……emmm,看不太懂

你仿照绿宝石战斗系统完全升级里面小陨星那个特性或者古老之歌,流星冲闪这些做就行了。
业余改版爱好者
回复 支持 反对

使用道具 举报

100

回帖

699

现金

0

勋章券

手举徽章的兴奋

Rank: 6Rank: 6

积分
372

时光印记Lv.1

 楼主| 发表于 2021-7-26 16:00:07 来自手机 | 显示全部楼层
本站第一萌新 发表于 2021-7-26 10:53
你仿照绿宝石战斗系统完全升级里面小陨星那个特性或者古老之歌,流星冲闪这些做就行了。

emmm,找不到特性代码,而且技能效果是用BS脚本的吧
回复 支持 反对

使用道具 举报

100

回帖

699

现金

0

勋章券

手举徽章的兴奋

Rank: 6Rank: 6

积分
372

时光印记Lv.1

 楼主| 发表于 2021-7-26 21:31:13 来自手机 | 显示全部楼层
本站第一萌新 发表于 2021-7-26 17:15
战斗系统完全升级工程里面搜索ABILITY_SHIELDS_DOWN然后看相关逻辑 说实话用hook实现的话确实有点复杂

好的,谢谢大佬
回复 支持 反对

使用道具 举报

100

回帖

699

现金

0

勋章券

手举徽章的兴奋

Rank: 6Rank: 6

积分
372

时光印记Lv.1

 楼主| 发表于 2021-7-27 11:48:46 | 显示全部楼层
本站第一萌新 发表于 2021-7-26 17:15
战斗系统完全升级工程里面搜索ABILITY_SHIELDS_DOWN然后看相关逻辑 说实话用hook实现的话确实有点复杂

大佬,我之前去看了一下,找到了如下代码:
  1. case ABILITY_SHIELDS_DOWN:
  2.                 if(battle_participants[bank].species==POKE_MINIOR_CORE && (battle_participants[bank].current_hp >= (battle_participants[bank].max_hp >> 1)) && !battle_participants[bank].status2.transformed)
  3.                 {
  4.                     common_effect = 1;
  5.                     new_battlestruct->various.var1 = POKE_MINIOR_METEOR;
  6.                     new_battlestruct->various.var2 = 0x242;
  7.                     script_ptr = BS_STAT_ONLY_FORMCHANGE_END3;
  8.                 }
  9.                 break;
复制代码
但我还是有些地方不太理解,为什么common_effect要写入1,还有后面那个为什么要写入0x242,以及后面的BS脚本我并没有找到代码
回复 支持 反对

使用道具 举报

115

回帖

1440

现金

0

勋章券

与恶势力的交锋

Rank: 7Rank: 7Rank: 7

积分
457

时光印记Lv.1

发表于 2021-7-27 14:33:12 | 显示全部楼层
744865306 发表于 2021-7-27 11:48
大佬,我之前去看了一下,找到了如下代码:但我还是有些地方不太理解,为什么common_effect要写入1,还有 ...

为什么要写入1,因为后面有这些代码
  1. if (common_effect)
  2. {
  3.     effect = true;
  4.     battle_scripting.active_bank = bank;
  5.     bs_execute(script_ptr);
  6. }
复制代码
另外这个bs_execute就是我之前说的执行战斗脚本的函数 位于0x08E073E4(802 3.0版本)
至于BS脚本你也是直接搜索就行,在battlescritps.s里面
业余改版爱好者
回复 支持 反对

使用道具 举报

100

回帖

699

现金

0

勋章券

手举徽章的兴奋

Rank: 6Rank: 6

积分
372

时光印记Lv.1

 楼主| 发表于 2021-7-27 15:35:45 | 显示全部楼层
本站第一萌新 发表于 2021-7-27 14:33
为什么要写入1,因为后面有这些代码另外这个bs_execute就是我之前说的执行战斗脚本的函数 位于0x08E073E4 ...

感谢大佬,话说大佬之前说的那个用了ASM杂项集合代码没说的人可能是我,真的非常抱歉
回复 支持 反对

使用道具 举报

115

回帖

1440

现金

0

勋章券

与恶势力的交锋

Rank: 7Rank: 7Rank: 7

积分
457

时光印记Lv.1

发表于 2021-7-27 15:57:42 | 显示全部楼层
744865306 发表于 2021-7-27 15:35
感谢大佬,话说大佬之前说的那个用了ASM杂项集合代码没说的人可能是我,真的非常抱歉

没事,下次用之前记得说一下就行
业余改版爱好者
回复 支持 反对

使用道具 举报

100

回帖

699

现金

0

勋章券

手举徽章的兴奋

Rank: 6Rank: 6

积分
372

时光印记Lv.1

 楼主| 发表于 2021-7-27 16:08:21 来自手机 | 显示全部楼层
本站第一萌新 发表于 2021-7-27 15:57
没事,下次用之前记得说一下就行

好的,谢谢大佬
回复 支持 反对

使用道具 举报

100

回帖

699

现金

0

勋章券

手举徽章的兴奋

Rank: 6Rank: 6

积分
372

时光印记Lv.1

 楼主| 发表于 2021-7-27 17:46:49 来自手机 | 显示全部楼层
本站第一萌新 发表于 2021-7-27 15:57
没事,下次用之前记得说一下就行

那个……这个特性应该在哪跳转
回复 支持 反对

使用道具 举报

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

本版积分规则

手机版|Archiver|Pokemon Center

GMT+8, 2024-11-21 21:36 , Processed in 0.113613 second(s), 38 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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