我想, vmexiaoma及许多人会想问, 到底该怎么写这个脚本, 是吗?
这样吧, 我在这里说个简单的写法, 各位可以依样画葫芦, 将它改成你喜欢的效果.
先假设有一台坦克, 我们管它叫 Tank1 吧.
Tank1 要先帮它弄个 Eventhandler 是吧.
如果不是在插件本身config中加入的话,
就请在随便一个地方, 例如 trigger, 或 Tank1本身的init字段上打上一段命令.
Tank1 addeventhandler ["killed",{_this exec “smokeEffect.sqs"}]
在这里的smokeEffect.sqs 是自个儿命名定义的脚本,随便你高兴怎么写都行.
来说说smokeEffect.sqs的内容吧:
_obj = _this select 0
_exp1 = 4 + random 5
_exp1 = _exp1 – (_exp1 mod 1)
_i = 0
#explo
[_obj] exec “explo1.sqs”
_i = _i + 1
?(_i < _exp1): goto “explo”
_smoketime = 400
_lifetime = 40
_tim = 0.1
_exp2 = 0
#loop
drop ["cl_basic","","Billboard",1,_lifetime,[0,0,-2], [random 0.3, random 0.3, random 0.3], 1, 0.0045, 0.004, 0.2, [1 + random 10,10 + random 10, 10 + random 20], [[0.1, 0.1, 0.1, 0], [0.1, 0.1, 0.1, 0.85],[0.2, 0.2, 0.2, 0.7], [0.3, 0.3, 0.3, 0.7], [0.5, 0.5, 0.5, 0]], [0,1,0], 0.2, 0.2, "", "", _obj]
drop ["cl_fire", "", "Billboard", 1, 1.5, getpos _obj, [random 0.3, random 0.3, 3], 1, 0.004, 0.004, 0.1, [1,(1 + random 7),0], [[1,0.5,0.5,0], [0.2,0.2,0,0.7], [1,1,0,0.5], [1,1,0.1,0]], [0,1], 0.5, 0.05, "", "",""]
~_tim
_smoketime = _smoketime - _tim
?(_smoketime < 350) && _exp2 == 0: _exp2 = 1; [_obj] exec “explo2.sqs”
?(_smoketime > 0): goto “loop”
exit
这里我故意示范两种drop的写法,除了烟和火的不同之外, 还有标定对象的不同, 前者是在最后标明_obj 再以[0,0,-2]表示由_obj的下方两米产生出来, 后者的写法则是最后一个值改成空值, 而直接以getpos _obj来定位, 两者的写法各有其用处,可以试试.
这里有个explo1.sqs, 一样,是自个儿随便写的.
主要用来产生破片,飞溅四散用的.
_exp1 = 4 + random 5
_exp1 = _exp1 – (_exp1 mod 1)
这是设定爆炸破片产生数量, mod 1 是整除余数,用它来取得整数.
至于explo1.sqs的大致写法如下:
_obj = _this select 0
_Arr = ["FxExploArmor1","FxExploArmor2","FxExploArmor3","FxExploArmor4"]
_ran = random 3.9
_ran = _ran – (_ran mod 1)
_tim = 0.1
_expobj = (_Arr select _ran) createvehicle getpos _obj
?( _ran == 0): _x = -1; _y = -1
?( _ran == 1): _x = 1; _y = -1
?( _ran == 2): _x = -1; _y = 1
?( _ran == 3): _x = 1; _y = 1
_expobj setvelocity [_x * (3 + random 8) , _y * (3 + random 8) , (5 + random 15) ]
#loop
drop ["cl_basic","","Billboard",1,20,[0,0,-2], [random 0.3, random 0.3, random 0.3], 1, 0.0045, 0.004, 0.2, [1 + random 10,10 + random 10, 10 + random 20], [[0.1, 0.1, 0.1, 0], [0.1, 0.1, 0.1, 0.85],[0.2, 0.2, 0.2, 0.7], [0.3, 0.3, 0.3, 0.7], [0.5, 0.5, 0.5, 0]], [0,1,0], 0.2, 0.2, "", "", _expobj]
drop ["cl_fire", "", "Billboard", 1, 1.5, getpos _expobj, [random 0.3, random 0.3, 3], 1, 0.004, 0.004, 0.1, [1,(1 + random 7),0], [[1,0.5,0.5,0], [0.2,0.2,0,0.7], [1,1,0,0.5], [1,1,0.1,0]], [0,1], 0.5, 0.05, "", "",""]
~_tim
_i = _i + _tim
?(_i < 6): goto "loop"
~1
deletevehicle _expobj
exit
接下来是explo2.sqs了,是吧, 它更简单了,意思是用来第二次爆炸.
_obj = _this select 0
_obj setdammage 0
_obj setdammage 1
Exit
就是这么简单.
以上是大致的演示, 火和烟要多大多小多浓,请自己改来练习.
[ 本帖最后由 AndyLee054 于 2009-1-7 13:28 编辑 ] |