[休闲娱乐]死亡一击几率关联到单位上
本帖最后由 sakuya452 于 2013-11-21 14:30 编辑所有该类脚本所用空间集中到一起,如有问题就名正言顺的使用全局Z变量占用的空间好了。一个全局Z变量占用512字节,平时很少用到那么多,拿来实现一个或几个棘手的问题是非常安全划算的:D
附上说明,这个的性质比较接近于修复原有问题,无需任何设置,作为事件版内置到地图中即有效果,一般没特殊要求的请不必理会脚本是怎么处理的
ZVSE
!?BF&1000;
!!UN:C4470497/4/1444391657;
!!UN:C4470501/2/36864;
!!UN:C10112656/4/4171139923;
!!UN:C10112660/4/2197815296;
!!UN:C10112664/4/62654;
!!UN:C10112668/4/2215575552;
!!UN:C10112672/4/3;
!!UN:C10112676/4/974504835;
!!UN:C10112680/4/2588828291;
!!UN:C10112684/4/2400148224;
!!UN:C10112688/4/4289325530;
!!UN:C10112692/4/2850565865;
!!UN:C10112696/2/37119;
!?BA53&1000;
!!UN:C4470497/4/27758351;
!!UN:C4470501/2/0;
!!UN:C10112656/4/0;
!!UN:C10112660/4/0;
!!UN:C10112664/4/0;
!!UN:C10112668/4/0;
!!UN:C10112672/4/0;
!!UN:C10112676/4/0;
!!UN:C10112680/4/0;
!!UN:C10112684/4/0;
!!UN:C10112688/4/0;
!!UN:C10112692/4/0;
!!UN:C10112696/2/0;
!!UN:C10112610/4/0;
!!UN:C10112614/4/0;
!!UN:C10112618/4/0;
!!UN:C10112622/4/0;
!!UN:C10112626/4/0;
!!UN:C10112630/4/0;
!!UN:C10112634/4/0;
!!UN:C10112638/4/0;
!!UN:C10112642/4/0;
!!UN:C10112646/4/0;
!!UN:C10112650/2/0;
!?BG0&1000;
!!BG:A?y1;
!!if|y1=6/y1=7:;
!!BG:N?y2 E?y3;
!!if&y2>-1/y2<42:;
!!SN:W^Stack.DS^/0;
!!VRy4:Sy2*-1-1;
!!DO43008/6/13/1:Py4/0; 获取攻击单位死亡一击几率存到 Stack.DS中
!!SN:W^Stack.DS^/?y10;
!!VRy10&y10<0:S0;
!!VRy10&y10>100:S100;
!!VRy11:Sy2+10112610;
!!UN:Cy11/1/y10;
!!en:;
!!if&y3>-1/y3<42:;
!!SN:W^Stack.DS^/0;
!!VRy4:Sy3*-1-1;
!!DO43008/6/13/1:Py4/0; 获取被攻击单位死亡一击几率存到 Stack.DS中
!!SN:W^Stack.DS^/?y10;
!!VRy10&y10<0:S0;
!!VRy10&y10>100:S100;
!!VRy11:Sy3+10112610;
!!UN:Cy11/1/y10;
!!en:;
!!en:;
!?FU43008;
!!FU&x2<>0:E;
!!EAx1:Bx16/?y21/?y22/d/d/d/d/d/d/d/d/d/d/d/d;
!!FU|y21<>1/y22<>101:E;
!!VRy10:Sx1*-1-1;
!!UN:C6919200/4/?y1;
!!VRy2:Sy1+21708;
!!VRy3:Sy10*1352+y2;
!!SN:E7455085/1/y3/1;
!!UN:C8682900/4/?y4;
!!EAx1&y4=0:Bx16/d/d/d/?y23/d/d/d/d/d/d/d/d/d/d;
!!EAx1&y4=1:Bx16/d/d/d/d/?y23/d/d/d/d/d/d/d/d/d;
!!EAx1&y4=2:Bx16/d/d/d/d/d/?y23/d/d/d/d/d/d/d/d;
!!EAx1&y4=3:Bx16/d/d/d/d/d/d/?y23/d/d/d/d/d/d/d;
!!EAx1&y4=4:Bx16/d/d/d/d/d/d/d/?y23/d/d/d/d/d/d;
!!EAx1&y4=5:Bx16/d/d/d/d/d/d/d/d/?y23/d/d/d/d/d;
!!EAx1&y4=6:Bx16/d/d/d/d/d/d/d/d/d/?y23/d/d/d/d;
!!EAx1&y4=7:Bx16/d/d/d/d/d/d/d/d/d/d/?y23/d/d/d;
!!EAx1&y4=8:Bx16/d/d/d/d/d/d/d/d/d/d/d/?y23/d/d;
!!EAx1&y4=9:Bx16/d/d/d/d/d/d/d/d/d/d/d/d/?y23/d;
!!EAx1&y4=10:Bx16/d/d/d/d/d/d/d/d/d/d/d/d/d/?y23;
!!SN:W^Stack.DS^/y23;
!!VRx2:S1;
本帖最后由 dadds 于 2013-11-5 14:07 编辑
;tl;大神又出手了,这意思是被攻击的对象等级越高触发几率越低么? 本帖最后由 sakuya452 于 2013-11-5 14:13 编辑
dadds 发表于 2013-11-5 14:06
大神又出手了,这意思是被攻击的对象等级越高触发几率越低么?
不是,是单位死亡一击经验特技的几率是多少,实际战斗时就是多少。欢迎测试,H3也有用伪随机,就算99%的死亡一击几率,只要你能掌握随机因子和随机算法,控制的好,也可以连续很多次不出死亡一击 谢谢楼主分享。不过最好编辑一下帖子,附上使用说明,毕竟坛子里还有N多的脚本小白,只有更多的玩家能傻瓜式的使用本脚本,才算是一个强大的脚本。 好!!这个要顶,我抄回去试试! 好东西,又修复了一个难解的BUG 那么如果没开生物经验呢?死骑的特技概率会怎样? songfx 发表于 2013-11-5 19:58
那么如果没开生物经验呢?死骑的特技概率会怎样?
没开生物经验也可以有0级的生物经验特技,仍然能获取到几率
也可以在地图加载的时候检查是否有开启生物,来决定是否执行这脚本 本帖最后由 沧海一粟 于 2013-11-5 21:33 编辑
yunings 发表于 2013-11-5 16:41
谢谢楼主分享。不过最好编辑一下帖子,附上使用说明,毕竟坛子里还有N多的脚本小白,只有更多的玩家能傻瓜 ...
呵呵,老大,按我的经验我只想说,楼主的这种写法是史无前例的,以前从来没有人这样写过(包括HC论坛也没有),以后也应该或者说没几个人有能力这样搞脚本。楼主是内存修改方面的专业人士,即使加再多再细的注释,我等小白也一样不懂的(即使懂也不会用)。要我说,这已经超出了ERA的理解范围了,与其叫脚本,不如直接说是游戏外挂了。膜拜下:good_job: 本帖最后由 sakuya452 于 2013-11-5 21:51 编辑
沧海一粟 发表于 2013-11-5 21:29
呵呵,老大,按我的经验我只想说,楼主的这种写法是史无前例的,以前从来没有人这样写过(包括HC论坛也没 ...
呵呵,这其实是主要逻辑写到内存里了,ERM/ERA为辅,为了兼容性,才选择这么个尽量少改内存的方式
目前3.59内核还是可以用的,不过总是会有例外,可以增加个版本检查来是否启用这类脚本
无条件的在任意单位后获得行动优先权又不跳回合的思路我已经想好了,但是我想加4个检测条件上去,好让某单位杀死敌人有50%的几率可以再次行动或者给予别的单位再次行动的这类效果可以实现,本来这些条件应该在ERM/ERA的脚本里检测是最好的,但却因为时点问题,往往获取不了想要的数值。
而且这过程中,由于原先的格挡加防御标志BUG,造成无法正确检测单位是否真正的防御过,会有不小影响。
为了阻止BUG,保证单一脚本的正常运作,我会在自己的逻辑里加条件检测有防御标志的单位不能获得再次行动,但是如格挡BUG,有格挡单位未防御,但是触发格挡了,也就不能获得再次行动了
所以,我在写着格挡降防BUG的另一个解决方法,很快就更新对应修复贴,自己提出怕别人用到防御奖励数值的顾虑,没想到自己先用上了
如果搭配新的格挡修复脚本,就可以让防御单位也能再次行动而不出问题
sakuya452 发表于 2013-11-5 21:45
呵呵,这其实是主要逻辑写到内存里了,ERM/ERA为辅,为了兼容性,才选择这么个尽量少改内存的方式
目 ...
非常期待楼主伸出热心援手帮忙解决ERM\ERA貌似已经无法解决的问题。
另外,小声地发句牢骚,我白天不能上论坛,真的非常郁闷{:2_166:} sakuya452 发表于 2013-11-5 21:45
呵呵,这其实是主要逻辑写到内存里了,ERM/ERA为辅,为了兼容性,才选择这么个尽量少改内存的方式
目 ...
ERM/ERA为辅助,神马都是浮云.......看楼主修改才知道什么是修改游戏。;exp; 沧海一粟 发表于 2013-11-5 21:29
呵呵,老大,按我的经验我只想说,楼主的这种写法是史无前例的,以前从来没有人这样写过(包括HC论坛也没 ...
哥表示确实看不懂。不过你们几个,光叫好,不给射精,哥表示很生气,很生气! 经过沧版和贤知版主的私下大力推荐【因为我是脚本方面的纯小白,除了玩游戏什么都不懂,更看不懂楼主写的这些高深内容,汗一个】,希望楼主能接受论坛嘉宾的称号,希望不要推脱。 兽哥哥 发表于 2013-11-5 22:30
经过沧版和贤知版主的私下大力推荐【因为我是脚本方面的纯小白,除了玩游戏什么都不懂,更看不懂楼主写的这 ...
不要啊,我喜欢当自由人士;sl;随时撤掉吧
sakuya452 发表于 2013-11-5 23:21
不要啊,我喜欢当自由人士随时撤掉吧
别误会,论坛嘉宾是一种身份,是对对论坛有贡献的会员的一种奖励和尊重,并没有其他的什么像版主一样的管理板块的职责,基本属于自由人士。所以不要担心,快点换个拉轰的头像才是正道;kl;
这个代码写得真是专业,的确~~~;tl; 强烈要求授予楼主 论坛嘉宾的称号.
强烈要求楼主 接受论坛嘉宾称号.
这等高手,往哪儿找.十年难得一遇的呢.
另外请教楼主,这种额外开辟的语句占用的内存,有没有可能被其它事项占用的呢? 这是专业做软件的吧,牛人! 本帖最后由 sakuya452 于 2013-11-6 15:04 编辑
贤知有您 发表于 2013-11-6 08:47
强烈要求授予楼主 论坛嘉宾的称号.
强烈要求楼主 接受论坛嘉宾称号.
这等高手,往哪儿找.十年难得一遇的呢 ...
也就担心这个吧,说兼容什么的就是指这个可能存在的问题。下面的推测比较多(因为我也不是很了解),随便看看就好,等以后学会了,自行分析吧
目前使用的这些内存一般都是很少被程序访问或者改写的(监测了一定时间后推测),而且我看了下,也就只有加载地图(有些地址是WOG化)时,这些内存地址部分地址(并不是连续的)按一定规律跳跃赋值为0(立即数寻址,这个0是否是txt之类的常量,暂不清楚),似乎不是变量赋值的,而且地图游戏期间又没有被访问过(监测了一定时间后推测),所以可能没有从其它文件读取值并使用吧
ERM/ERA的脚本似乎是h3era运行到某些地址的指令后(可能在这些地址附近调用了dll之类的库吧),转到自身平台的逻辑进行处理,然后返回一些参数给h3era,实现脚本功能,并不占用h3era的内存空间(找了一些,没发现ERM/ERA在h3era中的指令,就做的推测)
附加额外指令以让其正常运作的一个关键原理就是在不被访问和使用的期间临时添加,再还原回原值(反正看了都是0,也不知道是不是其它文件中的常量),这样在访问/使用的时候也是正常的值,完全没问题,就算有冲突,也可以根据情况转移这些附加指令的存储位置
这类脚本只有经得起时间测试,没发现任何问题,才能说稳定,所以就不要做成通用脚本了(改内存的都有风险,要是内核变动大,战场地址基址不再是00699420的话,那么一堆使用UN:C6919200的脚本也会跟着出错,必须要重新定位新基址,然后更新脚本),适合内置到特定图中,使用UN:C越多的情况,相对使用的少的情况就越要冒更多风险。在测试的时候,需要多注意一些奇怪的地方
可以通过转移到合适(其它更隐蔽的,更偏僻的,已确定不会在应用时被程序访问或使用)的地址(目前使用的存储指令的地址,一般不会造成游戏跳出,如果有问题的话,最多应该是数据不符吧,没办法,我能力有限,不可能什么情况都能测试到的)或时机来解决一些冲突,也是首要解决冲突的方法。
正常来说,能用ERM/ERA解决的就用ERM/ERA解决(UN:C类似于外挂的东西,自觉的从ERM/ERA中排除比较好),UN:C实现一些ERM/ERA暂不提供支持的功能就足够了(使用UN:C的好处是不受时点限制,比SN:E强大的一个地方),老外没人使用UN:C这么写也是挺合理的,需求也没有国内的那么高吧,还有ERA可以期待;kl;ERA更强大的话,我就转向ERA来写一些功能型脚本
请保持正常的心态来看待这类脚本,不要过分吹嘘了,除非目前的ERA不再更新,UN:C才可能占据重要地位。要是做游戏修改器什么的,动态分配内存来存放附加指令就不会出问题了,但是使用上没有内置脚本来的方便
页:
[1]
2