商店可出售物品数空间扩展
因论坛搜索引擎废了,所以不知道有没大佬发过商店资料,有发过的话,请知情管理员删了吧,否则就为原版留点资料吧!
前言:
1:完全没有编程基础的不用看
2:这里只讲引擎上的扩容,解放引擎上商店的限制。
3:原版商店最多只能出售16件物品,因为商店列表框缓存只提供了存放16件物品数据的空间,超过了商店就崩给你看!
4:这段空间位于列表框缓存 +60 至 +DF ,8字节一组,共80字节,所以要做的就是改变这段空间大小,但因为这段空间在缓存中间存放,所以改大的话,随之后面的数据位置也要做调整。
进入主题:
//列表框缓存:原版采用堆栈空间做缓存用:所以照着原思路扩吧,省点事!!!
//要扩展多少件物品,自己就按着下面【注释】计算空间改写下面列出的代码吧。
/主函数:00461D18(创建商店:+8栈参数:0=买 1=卖)
00461D30 |. 81EC 100A0000 SUB ESP,0A10 ; 申请堆栈空间总字节(自己视情况而定),这里实际是A1C字节
下面3个294不能比这个大,否则就需改大这个值
00461D53 | 8D8D 6CFDFFFF LEA ECX,DWORD PTR SS:[EBP-294] ; /列表框总缓存(294字节):物品数*8+214
00461D73 | 8D8D 6CFDFFFF LEA ECX,DWORD PTR SS:[EBP-294]
00461D85 | 8D8D 6CFDFFFF LEA ECX,DWORD PTR SS:[EBP-294]
//后续数据偏移改动:大部分都在0046AA02函数里
/+E0处:
/偏移字节:物品数 * 8 + 60
0046A948 ADD ECX,0E0
0046AA34 ADD ECX,0E0
0046AA3D MOV EDX,DWORD PTR DS:[EAX+E0]
0046AAD9 ADD ECX,0E0
0046AAE2 MOV EAX,DWORD PTR DS:[EDX+E0]
0046AFD1 ADD ECX,0E0
0046B022 ADD ECX,0E0
0047271A ADD ECX,0E0
/+1B0处:
/偏移字节:物品数 * 8 + 130
0046A95A ADD ECX,1B0
0046A98E ADD EDX,1B0
0046A9AA ADD ECX,1B0
0046AA6F ADD ECX,1B0
0046AA7D ADD ECX,1B0
0046AB71 ADD ECX,1B0
0046AB81 ADD ECX,1B0
0046AB9C ADD ECX,1B0
0046ABA5 MOV EAX,DWORD PTR DS:[EDX+1B0]
0046ABCB ADD ECX,1B0
0046ABF4 ADD ECX,1B0
0046ACAF ADD ECX,1B0
0046ACC6 ADD ECX,1B0
0046AD46 ADD ECX,1B0
0046AD58 ADD ECX,1B0
0046AFC1 ADD ECX,1B0
0046AFFE ADD ECX,1B0
00472708 ADD ECX,1B0
/+27C处:
/偏移字节:物品数 * 8 + 1FC
0046A96C ADD ECX,27C
0046AF0F ADD ECX,27C
004726F6 ADD ECX,27C
/另在0046AA02函数中还有以下几条偏移数据,暂未发现作用(各种对话框都试了),应该与商店无关,所以暂时不改
0046AC12 ADD ECX,1B0
0046AC20 ADD ECX,1B0
0046AC2F ADD ECX,1B0
0046AC38 MOV EAX,DWORD PTR DS:[EDX+1B0]
0046AC44 ADD ECX,1B0
0046AC62 ADD ECX,1B0
0046AC70 ADD ECX,1B0
0046AC7F ADD ECX,1B0
0046AC88 MOV EAX,DWORD PTR DS:[EDX+1B0]
0046AC94 ADD ECX,1B0
0046AD34 ADD ECX,1B0
//至此商店对物品数上的限制就解放了
//至于要新加什么物品,加多少就得修改以下三条函数了,这里也顺便列出来
00466B2D:***商店:可贩卖物品写入列表框处理(武器、防具、辅助)
00466C87:***商店:可贩卖物品写入列表框处理(消耗品)
0046871C:***商店:刷新物品项目(暗or亮),能不能购买标记
//成果预览:
[ 本帖最后由 a117398902 于 2026-3-16 20:27 编辑 ]
图片附件:
无标题.jpg (2026-3-16 20:27, 114.89 K)
|