本帖最后由 Skylert 于 2025-4-20 00:41 编辑
帝国时代2决定版 一个关于淬毒stingers的xs脚本写法,可以实现新dlc辽道、白羽卫兵、斡鲁朵骑兵的效果,以及其他想要的效果。
查看了一下AGE中官方给辽道的设定,官方是穷举了除了建筑、船只、攻城武器以外的常规单位的种属。
以下是探索写法中发现的问题,最后会列出一个推荐的写法。
我尝试根据官方上个月发布的公告信息,给玩家1的精锐弯刀勇士一个攻击步兵后,拥有与辽道(攻击后使目标3秒内持续掉血,速率-180/min)一样的特殊能力。
int building_id =1018; float Effect_value =-180;//Effect_value我们用来规定影响对象的值,与辽道相同 float Effect_time=3;//Effect_time我们用来规定影响对象时的持续时间,与辽道相同 float Effect_xs_properties=109;//Effect_xs_properties我们用来规定影响的属性,根据官方公告,目前只影响5(移动速度)、109(回血、掉血速率,我记得正常设定这个属性为负是不会掉血的,也有可能记错了)、10(攻击间隔)、120(百分比回血、掉血速率)
xsEffectAmount(0, building_id, 63, 128); //开启属性交互能力,这是本次更新属性63新增的flag128(activate stingers) xsTaskAmount(0, Effect_value); //影响对象属性的值,我们上面已经规定为-180 xsTaskAmount(1, Effect_time); //持续时间,为负时永久持续,我们已经规定为3 xsTaskAmount(2,1); // 0影响自身,1影响敌人 xsTaskAmount(4, Effect_xs_properties); //影响的属性id,上面我们已经规定为109 xsTaskAmount(5,2); //1把Effect_value用于乘算而不是加算 2避免task156修改相关资源,暂无实际作用;这里保险起见设定为2,不知道设定为3能不能实现既乘算又保险的效果。
xsTask(1018,157,906,1);//玩家1的弯刀勇士对906(步兵)种属生效task157。
经过测试,这个写法生效了,现在我们尝试一下添加骑兵种属: 如果再加一行 xsTask(1018,157,912,1) 912是骑兵种属,此时不会对骑兵生效,还是只对步兵生效。
我们尝试像写光环时一样给一个偏移: 改成添加 xsTaskAmount(4,0.00001+109); xsTask(1018,157,912,1); 依然不会对骑兵生效。
到这一步我感觉无法实现和辽道完全相同的效果了,不过我没有测试多写几个函数是否会同时生效。 但是我发现xsTask(1018,157,906,1)可以改写为xsTask(1018,157,-1,1),此时可以对所有单位生效,包括船只、建筑等;这样可以实现一个足够让人满意的效果。如果各位发现有更好的方式实现辽道完全相同的效果可以一起讨论下。
最后,我们写一个精锐弯刀勇士攻击任何单位都能造成掉血的函数,大家可以直接照抄: void stingers1() { int building_id =1018; float Effect_value =-180; float Effect_time=3; float Effect_xs_properties=109; xsEffectAmount(0,1018,63,128); xsTaskAmount(0,Effect_value); xsTaskAmount(1,Effect_time); xsTaskAmount(2,1); xsTaskAmount(4,Effect_xs_properties); xsTaskAmount(5,2); xsTask(1018,157,-1,1); } 以上。 -----------2025/4/20----------- 测试了好几次之后,突然使用偏移居然生效了,而我没有修改的我的代码,我感觉是游戏的问题。。 xsTaskAmount(4,0.00001+109); xsTask(1018,157,912,1);
|