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

 找回密码
 加入VME

QQ登录

只需一步,快速开始

搜索
查看: 2383|回复: 21

[求助] 脚本问题求助!!!!

[复制链接]
发表于 2015-12-13 03:31:28 来自手机 | 显示全部楼层 |阅读模式
原版是这样的:当发射子弹为ammo_A时触发

if ((typeOf _ammo) == 'ammo_A')
  then {
       
我现在想在ammo_A基础条件上再并列一种ammo_B子弹,就是改成当子弹为ammo_A或者ammo_B时触发。下面这个是我自己写的,但是显然不对。

if ((typeOf _ammo) == 'ammo_A') or (typeOf _ammo) == 'ammo_B'))  
then {

求会脚本的朋友帮忙看一下,非常感谢。       
发表于 2015-12-13 20:32:09 | 显示全部楼层
  1. if (typeOf _ammo =="ammo_A"||typeOf _ammo== "ammo_B")  
  2. then {};
复制代码
发表于 2015-12-13 14:16:01 | 显示全部楼层
哦,明白了,你应该写成这样
if ((typeOf _ammo) == 'ammo_A' || (typeOf _ammo) == 'ammo_B')  

反正明显是你括弧的数量不对
if ((typeOf _ammo) == 'ammo_A') 已经结束if判断了。
然后你后面加“or (typeOf _ammo) == 'ammo_B'))”  语法肯定是错的。。。
写代码应该形成先关闭括弧然后往里面填内容的习惯。


点评

目测根据优先级连括弧都省了,当然,If的不能省  发表于 2015-12-13 18:38
 楼主| 发表于 2015-12-13 03:33:32 来自手机 | 显示全部楼层
实际测试时,只触发一种子弹效果可以但是我并列上ammo_B以后,两种子弹就都失效了。
 楼主| 发表于 2015-12-13 03:35:19 来自手机 | 显示全部楼层
另附上完整的脚本:
 楼主| 发表于 2015-12-13 03:36:28 来自手机 | 显示全部楼层
private ["_ammo", "_impactPos"]; _ammo = _this select 0;  if ((typeOf _ammo) == 'KA_M7290_ammo')  then {         _impactPos = getPosATL _ammo;         while {alive _ammo} do         {                 _impactPos = getPosATL _ammo;                 sleep 0.1;         };         [[_impactPos],"SUPER_fnc_CheckForEffect",true,false] call BIS_fnc_MP;         //[[[_impactPos],"\super_flash\scripts\flashbang.sqf"],"BIS_fnc_execVM",true,false] spawn BIS_fnc_MP; };
发表于 2015-12-13 07:02:21 | 显示全部楼层
这么写行么?
if (typeOf _ammo == 'ammo_A' || typeOf _ammo == 'ammo_B')  
发表于 2015-12-13 07:04:43 | 显示全部楼层
更正下,应该写成这样。


if ((typeOf _ammo) == 'ammo_A' || (typeOf _ammo) == 'ammo_B')  



PS没注意typeOf 和 _ammo之间有空格,所以当成一个变量了。很久不看这么难看的代码风格鸟。。。。 ╮(╯_╰)╭
发表于 2015-12-13 12:40:54 | 显示全部楼层
cycle6 发表于 2015-12-13 07:04
如过不行试试加括弧
if ((typeOf _ammo == 'ammo_A') || (typeOf _ammo == 'ammo_B'))

哇哈哈,原来资深玩家C6对脚本的编写规则与语法也是门外汉啊,真是让我大跌眼镜啊,笑死我了,还如果这种写法不行就试试加括弧这一神回复,嘎嘎。

点评

点评就是为了避免回复,哈哈。其实脚本里很多语法错误都是符号的问题,尤其以括号(),等号(=),赋值号(==)频率为高。  发表于 2015-12-14 18:08
说的你非常叼一样,这口气。  发表于 2015-12-14 11:46
发表于 2015-12-13 13:50:10 | 显示全部楼层
看上去不觉得有问题啊,要不换成 if (typeOf _ammo in [ 'ammo_A',  'ammo_B'])  用判断元素是否存在数组方式两个子弹类名一定要注意大小写,在if前面加下面两句可以可视化一下返回值顺便把类名复制到剪贴板方便除错
player groupChat format [" %1 ", typeOf _ammo];
copyToClipBoard format ["%1", typeOf _ammo];
发表于 2015-12-13 14:09:36 | 显示全部楼层
曾经沧海 发表于 2015-12-13 12:40
哇哈哈,原来资深玩家C6对脚本的编写规则与语法也是门外汉啊,真是让我大跌眼镜啊,笑死我了,还如果这种 ...

╮(╯▽╰)╭ 如果BIS wiki写的有错我也没办法。。。
发表于 2015-12-14 06:19:13 | 显示全部楼层
曾经沧海 发表于 2015-12-13 12:40
哇哈哈,原来资深玩家C6对脚本的编写规则与语法也是门外汉啊,真是让我大跌眼镜啊,笑死我了,还如果这种 ...

靠!明明几种写法都没错,你个编程小白还不赶紧退散 (╯°Д°)╯︵ ┻━┻
发表于 2015-12-14 09:52:28 来自手机 | 显示全部楼层
cycle6 发表于 2015-12-14 06:19
靠!明明几种写法都没错,你个编程小白还不赶紧退散 (╯°Д°)╯︵ ┻━┻

掀桌表情好评,虽然我不知道他说的你的问题在哪,但typeof_ammo一定要加括号么
发表于 2015-12-14 10:59:32 | 显示全部楼层
ZWB 发表于 2015-12-14 09:52
掀桌表情好评,虽然我不知道他说的你的问题在哪,但typeof_ammo一定要加括号么


原来以为TypeOf语句优先级可能没有==高。按照chaoduichen和qevhytpl的说法其实没有。所以不需要加括号。

我对脚本语言向来无爱,什么if then,end之类的废话特别多,而且有些语句对括号或者字串的要求还特别繁琐。加上SQS跟SQF的风格又超级不面向对象。
本来ArmA 3说要用Java做脚本的,现在看来也是。。。 ╮(╯▽╰)╭
发表于 2015-12-14 11:17:18 | 显示全部楼层
cycle6 发表于 2015-12-14 06:19
靠!明明几种写法都没错,你个编程小白还不赶紧退散 (╯°Д°)╯︵ ┻━┻

嘿嘿,小得收到,立即消失。
您需要登录后才可以回帖 登录 | 加入VME

本版积分规则

小黑屋|中国虚拟军事网

GMT+8, 2024-4-26 03:35

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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