Autor : Ali Stáhnout script
Zpět na scripty
Krabice
; krabice_boom.sqs
; Ali ( aleshw@gmail.com )
; pro verzi hry 1,75+
; ----------------------------------------------------------
; script na simulaci výbuchu krabice s municí
; script se spouští [,[],] exec 'krabice_boom.sqs'
; *legenda*
; -krabice - jméno krabice, pro kterou script platí, která pøi zásahu vybouchne
; -zvuky - seznam zvukù (muže byt i jeden), ze kterého script náhodnì vybere jeden a pøi zásahu krabice pøehraje
; -zvuky musí byt v 'uvozovkách' a když jich bude více, tak je tøeba je oddìlit èárkami ',' (bez citací)
; -pokud parametr nevyplníte, tak se pøehrají zvuky, které jsou zadány hned na zaèátku scriptu v promìnné '_defaultni_zvuky'
; -mùžete zmìnit samozøejmì podle potøeby, ale nezapomeòte je zadefinovat v 'description.ext' !!
; -zvuky by mìli mít všechny stejnou dobu trvání
; -doba - délka zvuku udávána v sekundách, parametr se udává jenom z toho dùvodu, aby vizuální efekt skonèil zároveò se zvukovým
; -pokud nevyplníte parametr 2 , tak nevyplòujte ani tento
;
; zvuky, použité v ukázkové misí jsou ze hry Max Payne 2
;
; pøíklad spuštìni scriptu
; [this,['zvuk1','zvuk2','zvuk3']] exec 'krabice_boom.sqs' nebo [this] exec 'krabice_boom.sqs'
; ----------------------------------------------------------
private ['_defaultni_zvuky','_parametry','_unit','_dam','_cas'];
; ----------------------------------------------------------
; ===tyhle zvuky musí byt zadefinovány v 'description.ext' !! pokud nezadáte parametr 2 ===
_defaultni_zvuky = ['krab_1','krab_2','krab_3'];
; ===tyhle zvuky musí byt zadefinovány v 'description.ext' !! pokud nezadáte parametr 2 ===
; ----------------------------------------------------------
_parametry = count _this;
if (_parametry > 0) then {_unit = _this select 0; _dam = damage _unit} else {hint 'Chyba!! Parametry scriptu nebyly zadány správnì!!'; exit};

#control
~0.1
if (damage _unit == _dam) then {goto 'control'} else {goto 'start'};
exit;

#start
private ['_zvuk','_zvuky','_sound','_ran'];
if (_parametry > 1) then {_zvuk = (_this select 1); _zvuky = count _zvuk; if (_zvuky > 1) then {_ran = (random (count _zvuk)) + 0.4; _ran = _ran - (_ran % 1); _sound = (_zvuk select _ran)} else {_sound = _zvuk}; if (_parametry > 2) then {_cas = (_this select 2)} else {hint 'Chyba!! Parametry scriptu nebyly zadány správnì!!'; exit}} else {_ran = (random (count _defaultni_zvuky)) + 0.4; _ran = _ran - (_ran % 1); _sound = (_defaultni_zvuky select _ran); _cas = 2};
private ['_detector','_waterDetector','_result'];
_detector = 'EmptyDetector' createVehicle [0,0,0];
_waterDetector = {_detector setPos [(position _unit select 0),(position _unit select 1),0]; _result = (position _detector select 2); _result};
if ((abs (_this call _waterDetector)) < 2) then {exit};
private ['_timer','_bod','_x','_y','_z','_randy','_randx','_rand','_kulka'];
_timer = time;
_bod = 'EmptyDetector' createVehicle position _unit;
_x = 0; _y = 0; _z = 0;
_bod say _sound;
_randy = (random 100);
_randx = (random 100);
drop ['kouleSvetlo','','Billboard',1,0.2,[0,0,-1],[0,0,0],3,1,1,0.5,[10,13,7],[[0.72,0.63,0.03,0.4],[0.72,0.63,0.03,0]],[1,1,1],0,0,'','',_bod];
drop ['cl_basic','','Billboard',1,(random 5),[_x,_y,_z],[0,0,0],3,1,1,0.7,[8+(random 2),11+(random 2),13+(random 2)],[[0,0,0,0],[0,0,0,0.3],[0,0,0,0.4],[0,0,0,0]],[0,1,1],0,0,'','',_bod];
'grenade' createVehicle [(position _bod select 0),(position _bod select 1),(position _bod select 2)];
deleteVehicle _unit;

#loop
_rand = (random 100);
if ((random 100) < 50) then {drop ['cl_basic','','Billboard',1,(random 5),[_x,_y,_z],[0,0,0],3,1,1,0.7,[4+(random 2),6+(random 2),8+(random 2)],[[0,0,0,0],[0,0,0,0.2],[0,0,0,0.3],[0,0,0,0]],[0,1,1],0,0,'','',_bod]};
drop ['kouleSvetlo','','Billboard',1,0.1,[_x,_y,_z],[0,0,0],3,1,1,0.5,[5,7,3],[[0.72,0.63,0.03,0.5],[0.72,0.63,0.03,1]],[1,1,1],0,0,'','',_bod];
_kulka = 'BulletSniperE' createVehicle [(position _bod select 0)+(_x+(random 10)-(random 10)),(position _bod select 1)+(_y+(random 10)-(random 10)),(position _bod select 2)+(random 1)];
_kulka setVelocity [(random 500) - (random 500),(random 500) - (random 500),(random 5)];
if (_z < 1 + (random 2)) then {_z = _z + (random 0.7)} else {_z = _z - (random 0.5)};
if (_randy < 50) then {_y = _y + (random 0.1)} else {_y = _y - (random 0.1)};
if (_randx < 50) then {_x = _x + (random 0.1)} else {_x = _x - (random 0.1)};
~0.05

if (time < (_timer + _cas)) then {goto 'loop'};
exit;