- 积分
- 10811
- 威望
- 64
- 魅力
- 63
- 经验
- 7160
- 热心度
- 3
- 注册时间
- 2015-11-15
- 最后登录
- 2024-2-20
- 主题
- 104
- 回帖
- 1839
- 精华
- 8
- 阅读权限
- 120
TA的每日心情 | 开心 2015-12-9 01:09 |
---|
签到天数: 9 天 连续签到: 1 天 [LV.3]火元素使者
版主
- 积分
- 10811
|
@贤知有您 说:死亡一击经验特技中的等级几率指的是触发原版20%几率死亡一击的几率。
那么我设置了一个每级100%触发死亡一击经验特技:
!!EA201:Bv5245/1/101/37/100/100/100/100/100/100/100/100/100/100/100;
这样的实际效果应该是20%的触发几率。
封神中有对死亡一击等级几率的修复。如下截取。但是看得似懂非懂的。
大概理解是这样的。。。
战斗开始前设置一个hook,在死亡一击被使用的时候
触发FU111122,程序记录显示的等级几率,根据是不是死骑(y5=67)进行修改
再触发Fu777713,考虑兵种是不是死骑,英雄特技,物品特技对几率加成,
最后修改程序实际使用的死亡一击几率。
战斗结束后,关闭hook。
但是我没发现关于其他兵种使用致命一击时的几率修改。那么我上面100%几率的设定,放到封神里,将还是20%的净几率?
或者,触发FU111122时,y5=67检测的不是兵种,而只是有没有死亡一击这个技能,那么就变成净100%触发了?
!?FU777713&1000/v6103=0;
!!UN:Cx2/4/?y3;
!!if&y3=67:;
这里的y3=67,检测的是不是兵种呢?或者只是检测有没有死亡一击这个技能?
*******************************************************************
死亡一击判断前触发器模块——最后更新 2014-10-25
*******************************************************************
*007的FU触发器约定用3个FU函数代表一次内存HOOK:
*第一函数用于新增HOOK(x1=0为HOOK,x1=1为UNHOOK)
*第二函数是被HOOK的函数,在HOOK位置上获得一些信息(处理寄存器),传递给第三函数.(使用第一函数号+1)
*第三函数相当于一个触发器.强烈建议不修改FU触发器的x参数,以便每次触发均得到正确的参数(使用777700开始的函数)
*FU777713[x1,x2,x3,x4] 判断死亡一击前触发(FU111121-FU111122)x1=堆栈,x2=寄存地址[028468d4]当地址为67时表示可以产生死亡一击,x3=修改死亡一击实际几率的地址(1字节) x4=原系统计算的死亡一击几率
*-----------------------------初始化HOOK或解除HOOK---------------
!?BA0&1000;[战斗前]
!!FU111121:P0;[判断死亡一击前触发]
!?BA1&1000;[战斗后]
!!FU111121:P1;[判断死亡一击前触发]
!!UN:C4470496/1/20;
*------------------------------------------------------------
*死亡一击出现前触发(FU111121-FU111122)
!?FU111121&x1=0;[判断死亡一击前触发]
*004436DE - 83 f8 14 - cmp eax,14
*00766DB4 - a1 d4 68 84 02- mov eax,[028468d4] : 00000000 ->HOOK入
*00766DB9 - 83 e8 43- sub eax,43
!!SN:L^EraPlugins\erm_hooker.era^/?y1 Ay1/^SetHook^/?y2;
!!SN:Ey2/1/7761332/111122; hook at 0x00766DB4 => FU111122
!?FU111121&x1=1;[死亡一击出现前触发]解除HOOK
!!SN:L^EraPlugins\erm_hooker.era^/?y1 Ay1/^UnsetHook^/?y2;
!!SN:Ey2/1/7761332;
!?FU111122;[判断死亡一击前触发]
*此时[02846888]为堆栈内存,[028468d4]为返回生物类型的地址(用于触发器参数x2的返回地址),[02860220]为获得经验特技的几率(静态,包括死亡骑士的20%),计算几率地址4470496 x4=原死亡一击几率
!!UN:C42231944/4/?y4;[堆栈内存]
!!UN:C42232020/4/?y5;[返回生物类型的寄存地址]
!!UN:C42336800/4/?y6;[死亡一击的几率(经验特技或死亡骑士)]
!!UN:C6919200/4/?y10;
!!VRy11:Sy4-y10-21708:1352;[堆栈号]
!!VRy12:Sy4-y10-21708%1352;
!!FU|y12<>0/y11<0/y11>41:E;[堆栈错误]
!!VRy6&y6>100:S100;
!!VRy6&y6<0:S0;
!!UN&y5=67:C4470496/1/y6;[用于修复原死亡一击经验特技的BUG(几率无效bug)]
!!BMy11:T?y13;[实际的类型]
!!UN&y13=67/y6<20:C4470496/1/20;[保留原死亡骑士的20%触发几率(当经验特技几率低于20%时)](有待研究是否有必要)
!!FU777713:Py11/42232020/4470496/y6;
*致命一击判断前触发------
!?FU777713&1000/v6103=0;
!!UN:Cx2/4/?y3;
!!if&y3=67:;
!!SN:W^Monsters.67^/?y1;
!!if&y1>0:;
!!UN:Cx3/1/100;
!!en:;
!!en:;
|
|