翔鹰帝国网|帝国时代论坛|帝国时代系列|神话时代
 找回密码
 注册翔鹰会员(昵称)
搜索
查看: 651|回复: 9

[已解决] 怎么实现当玩家1获得资源时玩家2获得等量资源

[复制链接]

6

主题

0

精华

114

积分

男爵

耕战
0
鹰币
80
天龙币
0
回帖
28
附庸关系0
 楼主| 发表于 2023-7-14 10:32:16 | 显示全部楼层 |阅读模式
本帖最后由 gwh6662 于 2023-7-22 20:48 编辑

如题,触发怎么实现玩家1获得500食物时玩家2也获得500食物。


我想用堆积属性,但是这个条件只能代表当前拥有量,没法表示“获得”这一属性,玩家1不消耗这500食物这个条件就一直满足。
回复

使用道具 举报

91

主题

14

精华

2万

积分

都主教

耕战
3368
鹰币
20766
天龙币
0
回帖
1387
附庸关系1
发表于 2023-7-15 02:39:09 | 显示全部楼层
用编程吧,玩家1或得a资源,玩家2也获得a资源不就行了,研究一下语法和数学模型,试着自己写写
回复

使用道具 举报

417

主题

19

精华

8万

积分

教皇

耕战
13421
鹰币
41665
天龙币
18
回帖
6021

特级嘉禾勋章三级帝国勋章十字军勋章翔鹰建站十周年纪念章

附庸关系0
发表于 2023-7-15 07:39:37 本帖来自手机 | 显示全部楼层
需要用xs来实现。对一种资源R设置一个变量P,和一条规则:
当R>P,则玩家2获得(R-P)资源,然后P=R;
当R<P,则只设置P=R。
004时代:战役时代
我很乐意看到有人在MOD技术上超过我。
回复

使用道具 举报

6

主题

0

精华

114

积分

男爵

耕战
0
鹰币
80
天龙币
0
回帖
28
附庸关系0
 楼主| 发表于 2023-7-16 20:55:09 | 显示全部楼层
好的,我去试一下
回复

使用道具 举报

6

主题

0

精华

114

积分

男爵

耕战
0
鹰币
80
天龙币
0
回帖
28
附庸关系0
 楼主| 发表于 2023-7-18 22:37:48 | 显示全部楼层
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作差,但是好像这个间隔太短了,还是没法检测到。
回复

使用道具 举报

6

主题

0

精华

114

积分

男爵

耕战
0
鹰币
80
天龙币
0
回帖
28
附庸关系0
 楼主| 发表于 2023-7-19 17:32:50 | 显示全部楼层
我想到怎么做了,搞一个循环触发,定时器两秒,持续检测玩家1的食物量
回复

使用道具 举报

91

主题

14

精华

2万

积分

都主教

耕战
3368
鹰币
20766
天龙币
0
回帖
1387
附庸关系1
发表于 2023-7-19 19:29:41 | 显示全部楼层
gwh6662 发表于 2023-7-19 17:32
我想到怎么做了,搞一个循环触发,定时器两秒,持续检测玩家1的食物量

这个方法明显是不行的
回复

使用道具 举报

91

主题

14

精华

2万

积分

都主教

耕战
3368
鹰币
20766
天龙币
0
回帖
1387
附庸关系1
发表于 2023-7-19 19:31:04 | 显示全部楼层
gwh6662 发表于 2023-7-18 22:37
void test()
{
float a=xsPlayerAttribute(1,0);

逻辑明显有问题,没有体现a或500b获500的预期效果
回复

使用道具 举报

417

主题

19

精华

8万

积分

教皇

耕战
13421
鹰币
41665
天龙币
18
回帖
6021

特级嘉禾勋章三级帝国勋章十字军勋章翔鹰建站十周年纪念章

附庸关系0
发表于 2023-7-19 21:23:32 | 显示全部楼层
gwh6662 发表于 2023-7-18 22:37
void test()
{
float a=xsPlayerAttribute(1,0);

同一次调用里面当然是一样的结果了,所以要和上一次调用时的值进行比较,可以用变量来实现。
以下程序,init()开始只执行一次,目的是初始化变量的值为食物量;test()循环执行,用来判断和增加食物:


  1. void init() {
  2.         float r = xsPlayerAttribute(1, 0);
  3.         xsSetTriggerVariable(1, r);
  4. }

  5. void test() {
  6.         float p = xsTriggerVariable(1);
  7.         float r = xsPlayerAttribute(1, 0);
  8.         float b = xsPlayerAttribute(2, 0);
  9.         
  10.         if(r > p){
  11.                 xsSetPlayerAttribute(2, 0, b + r - p);
  12.         }
  13.         xsSetTriggerVariable(1, r);
  14. }
复制代码

点评

看是外置还是内置,如选择外置可以考虑直接写rule不用循环触发,循环耗性能很严重  发表于 2023-7-20 23:06
004时代:战役时代
我很乐意看到有人在MOD技术上超过我。
回复

使用道具 举报

本版积分规则

排行榜|小黑屋|翔鹰帝国

GMT+8, 2024-12-21 01:51 , Processed in 0.169130 second(s), 109 queries , File On.

Powered by Hawk Studio  QS Security Corp.® Licensed

Copyright © 2001-2023, Hawkaoe.net All Rights Reserved

快速回复 返回顶部 返回列表