熊教授 发表于 2022-4-1 00:46:14

极简方法对联机场景中玩家编号,id,序号的xs订正

本帖最后由 熊教授 于 2022-4-1 10:30 编辑

今天太晚了,简单写几句
众所周知,每个玩家都有一个编号,比如在1号位置的玩家约等于玩家1。
同时,在联机场景中的玩家编号不一定等于地编中的玩家编号,也不一定等于ai信号里面的玩家编号
也不一定等于xs语法中的玩家编号。

游戏大厅中,玩家如果更换颜色,更换位置。其颜色对应的玩家序号就不一致了。
导致蓝色玩家的id编号可以是1-8的任何一个数字。


只需要轻轻一点这个绿色小按钮,所有联机触发白写……
这也是去年3月以来,大量的ai,场景地图下线,停更以及出现bug的原因之一。包括野蛮人和撸蛇到现在很难使用。

现在有个非常简单的方法,只需要3分钟就能对玩家序号正确排序,完成准确的触发动作。


1、第一步,用xs语句为玩家1-8的8号无用资源分别设置数量为1-8
void a1()
{
xsSetPlayerAttribute(1, 8, 1);

xsSetPlayerAttribute(2, 8, 2);
}


2、第二步更简单了,设置一个自动循环触发,在8号无用资源大于1时,减去1资源,变量“玩家1序号”的值增加1.
也就是让变量1-8的值等于各玩家的无用资源值。

3、第三步最简单了。
所有的触发中需要填写玩家序号的,都替换为“玩家1序号”变量的值,例如“玩家1序号”变量是12号变量,也就是第13个变量。xsTriggerVariable(12)
例:
原版增加所有塔0.01的攻击速度
void attspeed1()
{
xsEffectAmount(cAddAttribute, 952, 10, -0.01, 1);
}

其中952是种属,10是攻速,-0.01是修改值,1是玩家序号。
导致联机场景中出现问题的就是最后的1
替换后例:
void attspeed1()
{
xsEffectAmount(cAddAttribute, 952, 10, -0.01, xsTriggerVariable(12));
}


看,是不是超级简单,超级方便,只需要9个小小触发就全部搞定。
需要注意的是,本触发有运行时间约8秒。
因此最好将其他所有玩家序号的触发后置于8秒后开始运行。
还有除了8号无用资源,不一定所有无用资源的初始值都是0.

cly806 发表于 2022-4-1 00:59:18

有啥结论可共享给专栏,十分欢迎补充,当然请支持一下我的独家xs专栏

熊教授 发表于 2022-4-1 01:01:13

cly806 发表于 2022-4-1 00:59
有啥结论可共享给专栏,十分欢迎补充,当然请支持一下我的独家xs专栏

大佬说的必须支持

cly806 发表于 2022-4-1 01:03:10

本帖最后由 cly806 于 2022-4-1 16:52 编辑

熊教授 发表于 2022-4-1 01:01
大佬说的必须支持
阁下可是马桶游击队?有没有机会修复aoesp的项目啊,不能用实在太可惜,另外的鬼佬文字编辑器已更新,支持最新版本,可否从他的代码中寻求修改的思路,新桶那个等于不能用

你的帖子很有建设性思路非常的好,对联机玩家有很大的参考意义
讲几点建议,前面的cAddAttribute应该改用4比较稳妥,0设置4加减5倍乘,这几个用的比较多,255字符限制下,字符寸字寸金,能省则省
另外8个触发完全可以写成1个触发8条xs效果


举例P8
void P8(){
int a=xsPlayerAttribute(8,8);
int b=xsTriggerVarible(8);
while(a>=1){
a--;b++;}
xsSetTriggerVarible(8,b);
}

熊教授 发表于 2022-4-1 01:12:40

cly806 发表于 2022-4-1 01:03
阁下可是马桶游击队?有没有机会修复aoesp的项目啊,不能用实在太可惜,另外的鬼佬文字编辑器已更新,支持 ...

亲是的啊,咱俩常聊呢。我也是没办法被催过来修复地图,最近这次更新后好多以前做的图都没法用了,大半夜一堆人等着我修图,头发都掉完了。aoesp是非常重要的项目,修复那个难度太大了,上次修复的时候改了一小半的变量,工作量太大了,而且更新好频繁,修复后很可能也管不了多久。我感觉很难使上劲,实在是超出能力范围了。

cly806 发表于 2022-4-1 01:27:27

熊教授 发表于 2022-4-1 01:12
亲是的啊,咱俩常聊呢。我也是没办法被催过来修复地图,最近这次更新后好多以前做的图都没法用了,大半夜 ...
基本上56005后官方的更新都差不多,估计dlc前不会有大改动的,我说退而求其次起码保证了新桶代码那个导入txt能在游戏里打开这个修复了也就差不多了,重排ID的这种aoesp进阶功能相对而言没有那么紧急

熊教授 发表于 2022-4-2 13:16:39

本帖最后由 cly806 于 2022-4-3 11:21 编辑

cly806 发表于 2022-4-1 01:03
阁下可是马桶游击队?有没有机会修复aoesp的项目啊,不能用实在太可惜,另外的鬼佬文字编辑器已更新,支持 ...
哦哦哦看懂了,原来这个语法可以直接用序号代替,还能这么用,学会了。0是设置,1是增减,2是科技启用禁用,3是升级,4是增加,5是乘以。有机会试试试试。

熊教授 发表于 2022-4-2 22:06:50

cly806 发表于 2022-4-1 01:03
阁下可是马桶游击队?有没有机会修复aoesp的项目啊,不能用实在太可惜,另外的鬼佬文字编辑器已更新,支持 ...

顺便问一下,怎么读取玩家id写入字符串变量,或者读取到玩家id的字符串字节长度。想做个存档系统。

cly806 发表于 2022-4-3 11:23:17

熊教授 发表于 2022-4-2 22:06
顺便问一下,怎么读取玩家id写入字符串变量,或者读取到玩家id的字符串字节长度。想做个存档系统。 ...

这个估计要用ai,目前字符串只能是xsEffectAmount(0,952,50,123434,1);这种读取自定义字符串表的字符串

cly806 发表于 2022-4-3 11:33:54

熊教授 发表于 2022-4-2 13:16
哦哦哦看懂了,原来这个语法可以直接用序号代替,还能这么用,学会了。0是设置,1是增减,2是科技启用禁用 ...

你试试while那个能不能用,如果能用能少几个触发的,看看有没有效果
页: [1]
查看完整版本: 极简方法对联机场景中玩家编号,id,序号的xs订正