商店可出售物品数空间扩展
因论坛搜索引擎废了,所以不知道有没大佬发过商店资料,有发过的话,请知情管理员删了吧,否则就为原版留点资料吧!
前言:
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
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
/+27C处:
/偏移字节:物品数 * 8 + 1FC
0046A96C ADD ECX,27C
0046AF0F ADD ECX,27C
004726F6 ADD ECX,27C
//至此商店对物品数上的限制就解放了
//至于要新加什么物品,加多少就得修改以下三条函数了,这里也顺便列出来
00466B2D:***商店:可贩卖物品写入列表框处理(武器、防具、辅助)
00466C87:***商店:可贩卖物品写入列表框处理(消耗品)
0046871C:***商店:刷新物品项目(暗or亮),能不能购买标记
//成果预览:
[ 本帖最后由 a117398902 于 2026-3-21 19:49 编辑 ]
图片附件:
无标题.jpg (2026-3-16 20:27, 114.89 K)
|