怎么实现当玩家1获得资源时玩家2获得等量资源
本帖最后由 gwh6662 于 2023-7-22 20:48 编辑如题,触发怎么实现玩家1获得500食物时玩家2也获得500食物。
我想用堆积属性,但是这个条件只能代表当前拥有量,没法表示“获得”这一属性,玩家1不消耗这500食物这个条件就一直满足。
用编程吧,玩家1或得a资源,玩家2也获得a资源不就行了,研究一下语法和数学模型,试着自己写写 需要用xs来实现。对一种资源R设置一个变量P,和一条规则:
当R>P,则玩家2获得(R-P)资源,然后P=R;
当R<P,则只设置P=R。 好的,我去试一下 void test()
{
float a=xsPlayerAttribute(1,0);
float b=xsPlayerAttribute(2,0);
if(a<xsPlayerAttribute(1,0)){
b=b+xsPlayerAttribute(1,0)-a;
xsSetPlayerAttribute(2,0,b);}
}
这样写有问题吗,我没啥编程基础,想了半天如何实现检测到食物资源的增加,后来才想到这个程序是从上往下运行的,调用两次xsPlayerAttribute作差,但是好像这个间隔太短了,还是没法检测到。 我想到怎么做了,搞一个循环触发,定时器两秒,持续检测玩家1的食物量 gwh6662 发表于 2023-7-19 17:32
我想到怎么做了,搞一个循环触发,定时器两秒,持续检测玩家1的食物量
这个方法明显是不行的 gwh6662 发表于 2023-7-18 22:37
void test()
{
float a=xsPlayerAttribute(1,0);
逻辑明显有问题,没有体现a或500b获500的预期效果
gwh6662 发表于 2023-7-18 22:37
void test()
{
float a=xsPlayerAttribute(1,0);
同一次调用里面当然是一样的结果了,所以要和上一次调用时的值进行比较,可以用变量来实现。
以下程序,init()开始只执行一次,目的是初始化变量的值为食物量;test()循环执行,用来判断和增加食物:
void init() {
float r = xsPlayerAttribute(1, 0);
xsSetTriggerVariable(1, r);
}
void test() {
float p = xsTriggerVariable(1);
float r = xsPlayerAttribute(1, 0);
float b = xsPlayerAttribute(2, 0);
if(r > p){
xsSetPlayerAttribute(2, 0, b + r - p);
}
xsSetTriggerVariable(1, r);
}
页:
[1]