标题: 商店可出售物品数空间扩展
性别:未知-离线 a117398902
(G仔)

Rank: 4
组别 士兵
级别 牙门将军
功绩 5
帖子 547
编号 301657
注册 2008-12-18


发表于 2026-3-16 20:22 资料 个人空间 短消息 只看该作者
商店可出售物品数空间扩展

因论坛搜索引擎废了,所以不知道有没大佬发过商店资料,有发过的话,请知情管理员删了吧,否则就为原版留点资料吧!

前言:

1:完全没有编程基础的不用看

2:这里只讲引擎上的扩容,解放引擎上商店的限制。

3:原版商店最多只能出售16件物品,因为商店列表框缓存只提供了存放16件物品数据的空间,超过了商店就崩给你看!

4:这段空间位于列表框缓存 +60 至 +DF8字节一组,共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)



顶部

正在浏览此帖的会员 - 1 人在线 - 0 位会员(0 隐身), 1 位游客




当前时区 GMT+8, 现在时间是 2026-3-17 19:43
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.009179 second(s), 9 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP