中国虚拟军事网(VME)- 专注于武装突袭系列虚拟军事游戏

 找回密码
 加入VME

QQ登录

只需一步,快速开始

搜索
查看: 2510|回复: 11

[讨论] 写了个判断敌我规模是否让传送标志失效的脚本,请大家帮忙检查下

[复制链接]
发表于 2013-4-2 13:20:17 | 显示全部楼层 |阅读模式
本帖最后由 cccbss 于 2013-4-2 13:22 编辑

这个功能是这样的:
首先目标地区中有一个用于红方玩家传送判断的触发器,这触发器满足下面条件时他的值被一次性设为1,则红方传送将无法进行,也就是只要条件满足这个传送点就作废。

那么这个条件是设定一个500m半径的区域内只有蓝方单位,没有任何红方单位时:

_list= [_xpos,_ypos] nearObjects ["man",500];

{if(side _x=west)then WestNum[]=_x;}forech _list;

count WestNum;

{if(side _x=red)then RedNum[]=_x;}forech _list;

count RedNum;

if (WestNum - RedNum == WestNum) then {trigN[]=1} else {trigN[]=0};

我就在传送脚本中写如果 trigN=1则无法传送,由于目标区此时已永远被设置成trigN=1了,所以也就是永远不能传送了

请大家帮忙检查,只有这些代码就可以了么?比如trigN[]这种参数不需要在别处定义或声明了吧?
 楼主| 发表于 2013-4-2 13:39:32 | 显示全部楼层
不行,这个脚本有问题,如果一开局目标区域蓝方兵力=0,红方兵力=0,就直接屏蔽了传送点了
发表于 2013-4-2 20:21:11 | 显示全部楼层
if(side _x=west)then WestNum[]=_x;
首先这句我就完全没看懂。能确定_list是一堆单位吗?就是[unit1, unit2],而没有其他的数值?我有点怀疑,建议确认。
然后,如果是,那么至少应该是 WestNum[]=WestNum[]+[_x];吧,否则WestNum就等于单位了。
发表于 2013-4-2 20:22:15 | 显示全部楼层
然后,不太敢肯定,但是建议提前定义一下trigN[],当然如果是global变量也许不用提前定义?反正定义没坏处。
 楼主| 发表于 2013-4-2 20:30:00 | 显示全部楼层
谢谢,我提前定义看看,不过发现这个逻辑有bug,比较苦恼
发表于 2013-4-2 22:21:47 | 显示全部楼层
DragonZen 发表于 2013-4-2 20:21
if(side _x=west)then WestNum[]=_x;
首先这句我就完全没看懂。能确定_list是一堆单位吗?就是,而没有其 ...

_list 应该只能得到人员的数组,不会有其他数值了。
发表于 2013-4-2 22:30:18 | 显示全部楼层
提前定义 WestNum=[]; 这是一个全局变量数据空集。

{if(side _x=west)then WestNum[]=_x}forech _list;应该改成{if(side _x==west)then{ WestNum=WestNum+[_x]}}forech _list;注意我用的符号
做一个重复分拣运算。
然后就可以得到所有蓝方人员了。
count WestNum;这个不要放了,完全不知道有什么作用。
红方依此类推。
 楼主| 发表于 2013-4-3 11:33:00 | 显示全部楼层
qevhytpl 发表于 2013-4-2 22:30
提前定义 WestNum=[]; 这是一个全局变量数据空集。

{if(side _x=west)then WestNum[]=_x}forech _list;应 ...

了解!谢谢指教
发表于 2013-4-3 11:58:31 | 显示全部楼层
any_=[] spawn {  while {true} do { sleep 1;  _list= position name_pos nearObjects ["man",500];  trigN=if(({side _x == west} count _list > 0)&&({side _x == east} count _list == 0))then{1}else{0};   };};
 楼主| 发表于 2013-4-3 12:11:36 | 显示全部楼层
fan 发表于 2013-4-3 11:58
any_=[] spawn {  while {true} do { sleep 1;  _list= position name_pos nearObjects ["man",500];  trig ...

这个是根据所在地区域内是否完全只有美军来设定一个全局变量值any_的取值么?
发表于 2013-4-3 12:48:43 | 显示全部楼层
不是。
目的:不间断地赋予并还回‘trigN’当前的值:1或0.  name_pos 区域:有西方没东方=1,其他情况都=0.
这不是你要的嘛.没看出哪里有错啊?
‘any_ =’ 只是为了直接将脚本贴放编辑器里满足语法结构的需要,如果是调用不写也没关系.
 楼主| 发表于 2013-4-3 12:57:55 | 显示全部楼层
fan 发表于 2013-4-3 12:48
不是。
目的:不间断地赋予并还回‘trigN’当前的值:1或0.  name_pos 区域:有西方没东方=1,其他情况都= ...

谢谢!我试试
您需要登录后才可以回帖 登录 | 加入VME

本版积分规则

小黑屋|中国虚拟军事网

GMT+8, 2024-4-28 23:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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