Script blog© 2o13

Využitie príkazu spawn

Publikované 07.06.2013 v 00:00 v kategórii Editor, prečítané: 103x

Týmto príkazom môžete veľmi ľahko paralelne spúštať rôzné kódy.
Pomocou tohoto príkazu môžete udržovať funkčnosť misie v jednom hlavnom skripte a samotné části kódu, ktoré ste predtým
púšťali vo viac skriptoch paralelne a ktoré boli rôzne previazané. Teraz je možné udržiavať skripty prehľadne na jednom mieste.

Príklad použitia skriptu:

// --- nastaveni globalnich promenych pro ukonceni mise
mise_uspesna = false;
mise_neuspesna_helikoptery = false;
mise_neuspesna_tanky = false;

private ["tanky","helikoptery","papa_bear","hlidka"];

tanky = group TANK1; // TANK1 - nazev tanku definovaneho v editoru
helikoptery = group COBRA1; // COBRA1 - nazev helikoptery definovane v editoru
hlidka = group player;
papa_bear = [west,"PAPA_BEAR"];

// ---- zacatek mise
[] spawn {
sleep 1;

// --- vytvoreni WP pro hrace na danou kotu na mape
hlidka addWaypoint [position KOTA,0]; // KOTA - pozice definovana v editoru

[hlidka, 1] setWaypointSpeed "NORMAL";
[hlidka, 1] setWaypointBehaviour "STEALTH";
[hlidka, 1] setWaypointCombatMode "RED";
[hlidka, 1] setWaypointType "MOVE";

// --- vytvoreni WP pro skupinu nepratelskych tanku
tanky addWaypoint [position UDOLI,0]; // UDOLI - pozice definovana v editoru

[tanky, 1] setWaypointSpeed "LIMITED";
[tanky, 1] setWaypointBehaviour "AWARE";
[tanky, 1] setWaypointCombatMode "YELLOW";
[tanky, 1] setWaypointType "MOVE";
[tanky, 1] setWaypointFormation "COLUMN";
};

// ---- komunikace po dorazeni hrace na kopec
[] spawn {
waitUntil {player distance KOTA<40};
sleep 5;
player sideChat "Crossroad, tady Alfa. Jsme na kote 314.";
sleep 5;
papa_bear sideChat "Crossroad Alfe. Najdete si vhodnou pozici a pozorujte deni v udoli. Hlaste jakykoliv pohyb nepritele. Do niceho se zatim nepoustejte.";
};

// ---- komunikace po detekci tanku hracem
[] spawn {
waitUntil {{player knowsAbout vehicle _x>0} count units tanky>0};
player sideChat "Crossroad, tady Alfa, slysite me ? Udolim se k nasi pozici blizi nepratelska obrnena technika.";
sleep 5;
papa_bear sideChat "Tady Crossroad. Posilame helikoptery. Vydrzte na miste a kontrolujte situaci.";
sleep 8;
player sideChat "Rozumim, budeme vas informovat";

// --- vytvoreni dynamickeho WP helikopteram
helikoptery addWaypoint [position leader tanky,0];

[helikoptery, 1] setWaypointTimeout [1,3,2];
[helikoptery, 1] setWaypointSpeed "FULL";
[helikoptery, 1] setWaypointBehaviour "COMBAT";
[helikoptery, 1] setWaypointCombatMode "RED";
[helikoptery, 1] setWaypointType "DESTROY";
};

// ---- doresení konce mise (uspech i neuspech)
[] spawn {
waitUntil {({canMove vehicle _x} count units tanky==0) OR ({canMove vehicle _x} count units helikoptery==0) OR ({vehicle _x distance UDOLI<20} count units tanky>0)};
sleep 3;

try {
if ({canMove vehicle _x} count units helikoptery==0) then {throw "heliny out"};
if ({vehicle _x distance UDOLI<20} count units tanky>0) then {throw "tanky projely"};

// ---- komunikace pri zniceni celeho konvoje nepratelskych tanku
leader helikoptery sideChat "Crossroad, hlasime vyrazeni nepratelske techniky.";
sleep 7;
papa_bear sideChat "Tady Crossroad. Rozumim. Alfo, muzete to potvrdit ?";
sleep 7;
player sideChat "Crossroad, tady Alfa. Potvrzujeme zniceni nepratelske techniky";
sleep 7;
papa_bear sideChat "Dobra prace.";
sleep 5;

// --- uspesne ukonceni mise pres spinac Konec c.1
mise_uspesna = true;

} catch {

// ---- komunikace pri zniceni vsech helikopter
if (_exception == "heliny out") then {
player sideChat "Crossroad, tady Alfa. Prisli jsme o helikoptery !";
sleep 7;
papa_bear sideChat "Tady Crossroad. Rozumim, stahnete se.";
sleep 5;

// --- neuspesne ukonceni mise pres spinac Konec c.2
mise_neuspesna_helikoptery = true; };

// ---- komunikace pri projeti nepratelskych tanku
if (_exception == "tanky projely") then {
papa_bear sideChat "Crossroad Alfe. Nepratelske tanky projely. Stahnete se.";
sleep 5;

// --- neuspesne ukonceni mise pres spinac Konec c.3
mise_neuspesna_tanky = true; };

};
};