爱的燃火 发表于 2014-10-20 18:50:02

贤知有您 发表于 2014-10-20 12:26
ERA的插件下有个 dismiss last stack.bin
可以让英雄解散最后的部队实现裸奔.不过裸奔的英雄仍然无法从城 ...

看起来是两个jmp啊,不知道3。1里能不能用。。。。

贤知有您 发表于 2014-10-20 21:08:37

爱的燃火 发表于 2014-10-20 18:50
看起来是两个jmp啊,不知道3。1里能不能用。。。。

就一个jmp,erm需要这样处理而已。

贤知有您 发表于 2014-10-25 12:25:09

改变宝物的加四维效果
!?PI;
!!FU9129:P宝物ID/攻击/防御/力量/知识;
!?GM0;
!!FU9129:P宝物ID/攻击/防御/力量/知识;

!?FU9129; [设置宝物加四维状态]ERA
!!VRy1:S8094552;
!!VRy2:Sx1*4+y1;
!!UN:Cy2/1/x2;
!!VRy2:+1;
!!UN:Cy2/1/x3;
!!VRy2:+1;
!!UN:Cy2/1/x4;
!!VRy2:+1;
!!UN:Cy2/1/x5;

例如:
!!FU9129:P169/1/2/3/4; [那么169宝物效果为+1攻2防3力量4知识]

贤知有您 发表于 2014-10-25 12:28:07

改变城镇的特殊额外资源
ZVSE
!?FU40078;
**x1 - 城镇类型, x2 - 资源类型(0-6), x3 - 数量
!!VRy1:Sx1*7+x2*4 +6852356;
!!UN:Cy1/4/x3;

*举例,人族的城镇将增加1宝石(非原来的矿石和木材)
!?PI;
!!FU40078:P0/0/0;[去掉原来加木头]
!!FU40078:P0/2/0;[去掉原来加石头]
!!FU40078:P0/5/1;[增加宝石]
!?GM0;
!!FU40078:P0/0/0;
!!FU40078:P0/2/0;
!!FU40078:P0/5/1;

贤知有您 发表于 2014-10-25 12:29:07

使四神使可以攻击生物(出自:OxFEA)
!!UN:C7696529/2/15083;
!!UN:C7718934/4/50000;
!!UN:C7718943/4/50001;
!!UN:C7727325/4/50000;
!!UN:C7727334/4/50001;

爱的燃火 发表于 2014-10-25 12:58:32

贤知有您 发表于 2014-10-25 12:28
改变城镇的特殊额外资源
ZVSE
!?FU40078;


额外资源能直接突破2样的限制吗?sod里超过2样就出错了,虽然能找到查询次数,但懒得追代码。。。。

沧海一粟 发表于 2014-10-25 13:19:46

作为封神基石帖,每天进来瞧瞧是必须的:good_job:

贤知有您 发表于 2014-10-28 08:47:44

解决WOG/ERA中部队只有小天使时,查看士气的文本BUG.
ZVSE
!?PI;
!!UN:C7735887/4/2425393296;
!!UN:C7735891/1/144;

!?GM0;
!!UN:C7735887/4/2425393296;
!!UN:C7735891/1/144;


贤知有您 发表于 2014-10-28 08:53:42

全局性修改重生的比例
原重生比例为20%,包括凤凰和经验特技重生.
可只改重生比例,最后两句可照搬,不考虑余数效应.

!!UN:C4624542/4/14456457;
!!UN:C4624546/4/3247112192;
!!UN:C4624550/1/187;
!!UN:C4624551/4/5;[修改为IDIV模式,第一次除以5](表示重生比例为1/5,改成2则为1/2)
!!UN:C4624555/1/153;
!!UN:C4624556/4/3633052663;
!!UN:C4624560/4/2425405835;
!!UN:C4624564/4/2425393296;
!!UN:C4624569/4/1;[原版第二个除以5的位置,计算是否有余数](改成1的话,就不考虑余数效应了)
!!UN:C4624593/4/5;[原版第三个除以5的位置,计算上面余数效应,通过一个随机数除以5整除时增加重生个数]

贤知有您 发表于 2014-10-28 08:56:01

零级或低级水系也能对敌我使用单体驱散魔法
原版只有中级水系可以对敌我使用单体驱散,零级和低级只能对己方使用.

!?PI;
!!UN:C5932168/2/8171 C5932170/1/144;
!?GM0;
!!UN:C5932168/2/8171 C5932170/1/144;

贤知有您 发表于 2014-10-28 08:59:12

屏蔽159龙之心和143怪物之力宝物功能

屏蔽:
!!UN:C7763913/2/59792;[屏蔽龙之心]
!!UN:C7736080/2/37008;[屏蔽 143怪物之力 功能(祈祷)]

还原:
!!UN:C7763913/2/33807;[还原 还原龙之心]
!!UN:C7736080/2/629;[还原 143怪物之力]

贤知有您 发表于 2014-10-28 09:20:17

各种显示对话框界面

1.调出城镇大地图右键暗示[贤知有您]
示例
!?CM0;
!!CM:I?y1 F?y2;
!!FU&y1<>1/y2<>14:E;[冒险界面右键点 小地图]
!!CM:R0;
!!FU9999949:P0/-1/-1/0;[屏幕中心,显示0#城镇的信息]

!?FU9999949;
*右键点击时调用,用于显示城镇暗示信息对话框.右键松开则自动释放.
*ByHawaiing 007
*x1=城镇编号(0-47)
*x2=对话框中心x坐标(像素)
*x3=对话框中心y坐标(像素)
*x4=0-1 (是否带阴影)
!!FU|x1<0/x1>47:E;
!!VRx4|x4<0/x4>1:S0;
!!UN:C6918840/4/?y1;
!!VRx2|x2<97/x2>703:S400;
!!VRx3|x3<93/x3>507:S300;[默认居中]
!!SN:E4286208/2/y1/x1/x2/x3/0;


2.战场调出生物经验特技界面(通过堆栈号)[贤知有您]
!?FU100625; [调出堆栈生物经验特技界面]
**x1=堆栈编号(0-41)**
!!FU|x1<0/x1>41:E;
!!BMx1:T?y1;
!!FU&y1<0:E;
!!UN:C6919200/4/?y2;
!!VRy3:Sx1 *1352 +21708 +y2;
!!SN:E7490260/1/y3;

3.战场调用生物属性界面(通过堆栈号)[贤知有您]
!?FU100619; [显示战场生物属性By007]
**x1=堆栈号(0-41)
**x2=0-1 (是否暗示形式)
!!FU|x1<0/x1>41:E;
!!UN:C6919200/4/?y1;
!!BMx1:T?y2 N?y3;
!!FU|y2<0:E;
!!VRy4:Sx1 *1352 +21708 +y1;
!!SN:E4621376/2/y1/y4/x2;

4.英雄界面中调出生物属性对话框
!?FU70003; OPEN CREATURE FROM HERO SLOT WINDOW
;Master Of Puppets
; Convention - thiscall
; x1 = 0 该函数使用0(作者设定)
; x2 - object number(?): HE:N 英雄编号
; x3 - slot 生物槽(0-6)
; x4 - Dismiss button: 1 - present, 0 - absent (是否有解雇部队按钮)
; x5 - close the dialog on mouse release: 1 - yep, 0 - nope (是否是暗示形式)
!!UN:C6933756/4/?y5;
!!OW:C?y2;
!!VRy1:Sy2*360;
!!VRy5:-y1;
!!UN:C6919480/4/?y10;4byte->82516904
!!if&x1=0;
!!HE-1&x2=-1:N?x2;
!!VRy1:Sx2*1170+y5+3041;
!!VRy3:Sx3*4+y1;
!!UN:Cy3/4/<0;
!!FU&1:E;
!!VRy3:Sy1-145;
!!SN:E5007632/2/y10/y1/x3/y3/0/119/20/x4/x5;
!!en;

5.大地图调出英雄界面
!!SN:E5118576/1/x1/x2;
x1=英雄编号
x2=释放鼠标关闭(是否暗示形式) 0,否;1,是.

6.显示普通生物经验特技 [贤知有您]
!?CM0;
!!CM:I?y1 F?y2;
!!FU&y1<>1/y2<>14:E;
!!CM:R0;
!!SN:E7489350/1/150/1/0/0;[显示150#生物经验特技,数量为1,经验为0,第四参数填0]

7.指挥官对话框
!?FU@FunctionNumber@;
; x1: 英雄编号
; x2: 0 - 正常对话框, 1 - 暗示对话框
; x3: 0 - 带OK按钮, 1 - 无
; x4: 返回
!!VRy1:Sv1;
!!VRx1:*296+42344640;
!!SN:E7775342/2/x1/x2/x3/0;
!!SN:E7812840/1/42337496;
!!VRx4:Sv1;
!!VRv1:Sy1;

8.战场调出堆栈生物经验特技界面[贤知有您]
!?FU100625; [战场调出堆栈生物经验特技界面By007]
**x1=堆栈编号(0-41)**
!!FU|x1<0/x1>41:E;
!!BMx1:T?y1;
!!FU&y1<0:E;
!!UN:C6919200/4/?y2;
!!VRy3:Sx1 *1352 +21708 +y2;
!!SN:E7490260/1/y3;

9.显示大地图英雄简洁界面对话框(类似右键点英雄出现的小对话框)[贤知有您]
!!UN:C6919480/4/?y1;
!!VRy2:S155;
!!SN:E4285680/2/y1/y2/400/300/0;

10.其它特殊对话框[作者未知]
查看冒险日志
!!SN:E5433616/1;

调出市场界面
!!SN:E6202336/1;
注:在游戏刚启动时会引致崩溃,需先进入城镇.

调用当前城镇的17号建筑(如宝物商店,逃逸之路,黑暗天幕等)
!!SN:E6201632/1;

(城镇界面下)触发点击地狱城的城堡大门
!?CM1;
!!CA-1:H1/<0; [是否有访问英雄]
!!FU&1:E;
!!UN:C6919500/4/?y1;
!!SN:E6129792/2/y1;

(城镇界面下)进入城镇大厅
!?CM1;
!!UN:C6919500/4/?y1;
!!SN:E6106032/2/y1;

贤知有您 发表于 2014-10-30 09:18:14

修正格挡降防BUG [贤知有您]

ZVSE
!?PI;[修正格挡降防BUG](不作还原处理)
!!UN:C7456392/4/3321954758;
!!UN:C7456396/4/2416181825;
!!UN:C7456400/4/2425393296;
!!UN:C7456404/4/2425393296;
!!UN:C7456408/4/2425393296;
!!UN:C7456412/1/144;

!?GM0;[修正格挡降防BUG](不作还原处理)
!!UN:C7456392/4/3321954758;
!!UN:C7456396/4/2416181825;
!!UN:C7456400/4/2425393296;
!!UN:C7456404/4/2425393296;
!!UN:C7456408/4/2425393296;
!!UN:C7456412/1/144;

贤知有您 发表于 2014-10-30 10:09:44

关于取消生物槽的亮框
一般在初次点击生物槽且生物槽有生物存在时,会在槽周边显示一个亮框.如果把该生物槽的生物类型清空(-1),此时亮框还在,鼠标点击此空生物槽会引发崩溃.这种情况最容易发生在类似快速交兵分兵的场合.
可以使用内存修改去掉这些亮框以避免崩溃

取消英雄界面的生物选择框亮框

!!UN:C6911880/4/-1; disable selection
!!UN:C6911880/4/[]; Selected slot id (-1..6), yellow border.

取消英雄交换界面的选择框

!!UN:C6962576/4/?v6;
!!VRv6:+72;
!!UN:Cv6/4/-1;
!!VRv9:Sv6+8;
!!UN:Cv9/4/-1;
!!VRv10:Sv9+8;
!!UN:Cv10/4/-1;
[或MOP方法]
!!UN:C6962576/4/?y71;
!!SN:E5957888/2/y71;

取消城镇界面生物槽选择框

!!UN:C6919500/4/?y71;
!!SN:E6117680/2/y71 E7415683/1;

贤知有您 发表于 2014-11-3 16:32:43

探讨无限移动力BUG的内部机制
无限移动力BUG存在于各个版本中,不管是SOD还是WOG/ERA.
一般操作方法是:
1.英雄需要有海洋之帽(自由上下船)以及增加陆地移动力的宝物(如神行靴或骑士手套).
2.下水前不能带"增加陆地移动力"的宝物,然后带上"增加陆地移动力"宝物后上岸,一般可以看到移动力比之前更多了.如此反复可不断递增到一个很大的数.


相信很多人都只知道这个效果,但不清楚内部机制.通过研究内存可以略知一二.
1.内部有个专门函数来判断英雄的基准移动力,分开陆地和海洋2个部分.比如轮到某颜色玩家操作时,系统会根据这个函数来给予该系列颜色英雄一个初始移动力(HE:G).
2.这个判断基准移动力的函数可以实时反应,由英雄的当前状态来决定.比如一些英雄陆地或海洋移动力的宝物,当英雄装备和卸载时,其计算的移动力都会不一样.
3.当英雄带有海洋之帽时,陆地和海洋间移动力的转换是一套简单机制:分别计算地形前后的英雄基准移动力作为一个除法比例再乘以当前移动力.
具体就是:
陆地到海洋后移动力=当前移动力*(海洋基准移动力/陆地基准移动力)
海洋到陆地后移动力=当前移动力*(陆地基准移动力/海洋基准移动力)


透明这个机制,你可以很容易想象到,下水之前脱下神行靴和骑士手套,则能获得最佳的航海移动力.(因为系统计算的陆地基准移动力将减少)
由于海洋基准移动力一般不变化(海洋之帽是前提),无限移动力的BUG就是因为陆地基准移动力的改变问题.另外需要了解的是,下水或上岸英雄都移动了一步,也就是移动力会先减少100.


下面来实际计算一下,一次下水上岸的过程,神行靴和骑士手套能增加多少移动力.
克里斯丁(6)大哥带了一队枪兵(速度=4).没有后勤术等其它因素影响移动力.


首先说明一下怎么获得内部系统的计算基准移动力.也就是调用内存函数.
!?FU9999953;
*计算当前英雄状态的基准移动力
*x1=英雄ID,x2=0陆地1海洋,返回变量
!!VRx3:S0;
!!FU|x1<0/x1>155/x2<0/x2>1:E;
!!UN:C6919480/4/?y1;
!!VRy2:Sx1 *1170 +136736 +y1;
!!SN:E5131264/2/y2/x2;
!!VRx3:Sv1;

!?CM0&1000; [大地图右键]
!!CM:F?y1 I?y2 S?y3;
!!FU|y1<>512/y2<>1/y3<>14:E; [右键小地图]
!!FU9999953:P6/0/?v2;
!!FU9999953:P6/1/?v3;
!!HE6:W?v4;
!!IF:M^6#英雄
陆地=%V2
海洋=%V3
当前移动力=%V4^;



我们分别在英雄"下水前/下水后/下水装备宝物后/上岸后"的4个阶段分别用ERM语句检测英雄的陆地基准移动力+海洋基准移动力和当前移动力.
然后可以对比上下船机制的算法,看看是否一致.
结果如下图.
可以看到,一个上下船的过程,英雄的移动力由1560上升至2231.
基本可以归纳为,只要上岸时的基准陆地移动力高于下水时的陆地基准移动力,就有机会增大英雄的移动力.
宝典中也提到,可以通过英雄交换高低速的兵来得到相似效果,不过操作略显麻烦而已.


数学方面:
假设
A=下水前基准陆地移动力
B=基准海洋移动力(上下船基本不会变)
C=下水前的当前移动力
D=上岸时基准陆地移动力的增幅(比如神行靴+600,骑士手套+300之类)
那么最终计算结果为:(数学公式)
((C-100)*B/A -100)*(A+D)/B
此时可以和原来的C比较.有数学基础的不妨推论一下各种情况.


要修复这个BUG,最有效的方法是:
让英雄上岸时系统计算的陆地基准移动力不再考虑"带兵速度影响和宝物影响",因为玩家能操控的增幅移动力无非就这2种情况.
具体一点可以这样:
1.用bersy的ERM_HOOK插件HOOK住英雄上岸时计算陆地基准移动力的过程.
2.由于手动计算英雄基准移动力非常繁琐(几乎不可能),可考虑先通过内存修改更改掉原计算基准移动力的内存函数,让它忽略带兵速度和宝物的影响,再调用这个函数获得一个修正后的基准移动力.
3.把修正后的基准移动力回调到原HOOK相关位置上.再还原一下修改过的内存函数即可.
(暂没有修复BUG的脚本放出,因为这是个繁琐的工作,有空我会跟进处理的)





贤知有您 发表于 2014-11-12 09:54:24

昨天看到的几个关于魔法的特殊数字内存地址.

流沙陷阱 的施放个数
依照(0-3)等级分别是:4,4,6,8
地址在 0x00642224 连续4个4字节.
(即UN:C 十进制的6562340/6562344/6562348/6562352)

埋设地雷 的施放个数
依照(0-3)等级分别是:4,4,6,8
地址在: 0x00642234 连续4个4字节.
(即UN:C 十进制的6562356/6562360/6562364/6562368)

连锁闪电 的目标个数
依照(0-3)等级分别是4,4,5,5
地址在:0x00642284 连续4个4字节区域

爱的燃火 发表于 2015-1-24 13:13:09

3。1内存地址表,可用于era的内存搜索参考。


开始地址    结束地址            说明   
4CCD4    4CD4D            模式1
79AA6    79B36            箭矢
7D600    7D678            特技1
7E3CA    7E412            特技2
7FC93    7FCDA            死敌
861E7    86260            施法类型
8721E    87297            模式2
8A6BE    8A733            魔免
8BBF8    8BC59            魔防
CEBAD    CEBE9            08
16D9DB   16DA0C         08
17CD70   17CDDC         招魂术
2DDBC5   2DDC55         08
3AE000   3AE0EE         秘籍加密码
3AE12C   3AE15C         冒险界面图标1
3AE16C   3AE1A5         解码表
3AE1E0   3AE2B8         冒险界面图标2
3AE540   3AE990         音效名称
3AE9A0   3AE9C0         未知
3AE9D0   3AE9E8         船只
3AE9F4   3AEBC8         冒险地图英雄旗帜
3AEBD4   3AECA0         英雄冒险地图形象
3AF29C   3AF75C         未知数值
3AF9F4   3B03D0         未明宝物属性
3B08A0   3B08DC         紫龙施法
3B0904   3B09E4         箭矢名称
3B09F4   3B0A64         生物音效后缀
3B0CD4   3B0D4C         未知
3B0DAC   3B0F74         地址转跳地址
3B0F84   3B1048         冒险界面右下角相关
3B1240   3B12A4         战役选择
3B1434   3B1518         战役地图背景
3B1524   3B9D94         战役关卡颜色名称
3B9DB4   3BA3E4         战役动画大缩略图名称
3BA404   3BA6C8         音乐名称
3BA6D8   3BA7D0         战役名称
3BA7DC   3BA90C         战役选择缩略图名称   
3BAA28   3BAB44         战场英雄施法动画属性
3BABA8   3BB4AC         障碍地形属性
3BB4B0   3BBC60         障碍物体属性
3BBD90   3BBE00         战场初始坐标
3BC6BC   3BC73C         攻城背景(反向排列)
3BC74C   3BC7AC         魔法障碍名称
3BC7BC   3BCD5C         障碍物体名称
3BCD6C   3BCF6C         障碍地形名称
3BCF7C   3BDE8C         攻城建筑界面(反向排列)
3BDE9C   3BDF68         战场英雄动画名称(反向排列)
3BE5A4   3BE6E0         生物巢穴
3BE720   3BF470         生物动画声音(反向排列)
3BFBA8   3BFFA8         战役剧情动画声音名称
3BFFAC   3C141C         建筑缩略图名称(反向排列)
3C27C4   3C293C         音效名称
3C2B20   3C2CC0         城堡外观(反向排列)
3C33D8   3C3470         游戏模式
3C3574   3C37B0         宝物四维
3C37B4   3C38C0         辅助技能
3C3B3C   3C4F97         英雄头像名称(反向排列)
3C54BC   3C664C         建筑前置
3C70B8   3C7130         开始界面
3C81A0   3C824C         藏宝图属性
3C8C04   3C8C94         生物背景(反向排列)
3C9DD4   3CA014         骷髅转换场
3CB2D0   3CB910         动画名称(反向排列)
3CF1DC   3D0448         建筑def(反向排列)
3CE748   3CE764         未知
3CE768   3CE788         城镇铁匠铺(显示)
3CE78C   3CE917         建筑深度
3CE918   3CE938         城镇背景图像名称地址
3CE93C   3CEF68         建筑DEF名称地址
3D0454   3D0494         建筑背景(反向排列)
3D049C   3D13F8         建筑线条(反向排列)
3D1428   3D14A8         魔法行会背景(反向排列)
3D14B8   3D1548         招兵背景(反向排列)
3FBF24   3FE594         战役关卡颜色名称地址
3FEEE8   3FF210         战役大缩略图名称地址
3FF2B8   3FF440         音乐名称地址
3FF498   3FFAD5         战役选择界面
3FFADC   3FFB28         战役名称地址
3FFC80   3FFE7F         二进制值
3FFFC0   401670         攻城城堡界面
401B54   401C58         生物银行
401C98   40608C         生物属性08F08600
406090   406288         城镇生物
40708C   4076B8         建筑缩略图地址
4076BC   40784C         战役剧情动画声音名称地址
407B28   407B40         矿场产量
407CC8   407DDC         初始资源
407DE0   407DF8         矿场显示
407EA0   407F1C         汇率
408000   40985C         特长
40986A   40987E         经验值
409DA0   40D810         英雄属性
410BEC   4112AA         藏宝图坐标
4112AC   41160A         藏宝图去除顺序
411850   4119E0         未知数值
4119EC   411FC8         地图选择相关
412068   412B68         动画属性
412E44   415940         魔法属性
416260   416384         附加生长率
416388   416948         建筑排序(作用未知)
41694C   416978         未知
41697C   416A74         物资仓库
416CCC   4172F8         建筑线条地址
4172FC   417C40         建筑坐标
417F80   
41AE20   41AF28         未知数值
41BFE0   41C22C         未知
41E000   41F18C         未知地址
41F1C4   420AE8         未知代码
42100C   42468C         未知
4246C0   42488C         未知
424890   427F04         未知
427F08   428974         版权说明
429000   4474F8         未知













猎影之狼 发表于 2015-1-25 17:44:48

知识贴!!学习了······

爱的燃火 发表于 2015-2-2 12:30:14

宝丽拱猪 发表于 2015-1-31 15:55
ce在封神里怎么用?只能找到金钱的地址,兵种数量第二次寻找找不到

要根据数量设置相应的字节数才行。

hdhhhz 发表于 2015-2-25 13:32:18

关于生物特技还有部分没有列出来啊。
页: 1 [2] 3 4
查看完整版本: ERM内存修改和函数调用探讨专题

捐赠