MOD: Objective mód
30.01.2007 - 21:46,
(Autor: tomoxm)
Rozsiahly tutoriál ako urobiť mapu v ktorej úlohou je zničiť nejaký objekt.
V tomto tutoriály si ukážeme ako urobiť OBJective mapu. Budeme musieť trochu skirptovať a niečo spraviť aj v mape.

Multiplayerový mód Objective je urobená z častí :

1: Vyrobenie bomby.
2: Trigger (spínač) pre túto bombu.
3: Niečo na vybuchnutie.
4: Veľkosť explózie.
5: Efekt explózie.
6: Trosky pri výbuchu.
7: Niečo čo zostane po explózii.
8: Skriptovanie v .scr súbore.


Takže začnime od začiatku.

-------------------------------------------------------------------------------
(1) Robenie bomby
-------------------------------------------------------------------------------

Vytvorte script_model ( nemajte nič označené a pravým tlačítkom v pohľade zhora vyberte script -> model).

Dajte mu tieto vlastnosti key-value:

#exploder_set 1 // ID ktoré spája všetky časti úlohy (objective). Na pridanie entít pre tento exploder pridajte im key/value #set/1.

$explosion_fx models/fx/fx_explosion.tik // Ktorá explózia sa má aktivovať ak bomba vybuchne( nemusí byť ).

$killarea groundzero // Cieľové meno trigger_multiple brushu ktoré definuje miesto kde budete zabitý explóziou bomby ( nemusí byť, ak sa nezadá bude použitá defaultná hodnota ). Pozri bod 4

$trigger_name panel_trigger // Cieľové meno trigger_use brushu ktoré definuje miesto kde môžete položiť bombu.

model models/items/pulse_explosive.tik // Určuje ktorý model sa má použiť na bombu ( nemusí byť, môžete si spraviť aj vlastnú bombu a preskočiť tento key).

targetname panel_bomb // Meno používane ostatnými entitami pre cieľ ostatných entít.


Teraz by ste mali mať pred vami peknú peknú čierno/žltú bombu.

-------------------------------------------------------------------------------
(2) Trigger (spínač) pre bombu
-------------------------------------------------------------------------------

Vytvorte trigger_use ( nemajte nič označené, pravé tlačítko -> trigger->use ). Pridajte mu tieto key-value :

targetname panel_trigger // Meno používané ostatnými entitami na označenie tejto entity ( napr. bomba ho používa ).

Zmente brush triggeru aby sedel presne tam kam položíte bombu.

-------------------------------------------------------------------------------
(3) Niečo na vybuchnutie
-------------------------------------------------------------------------------

Spravme si nejaký objekt ktorý chceme vyhodiť do vzduchu.

Označte všetky brushe (stavebne kocky :) ) ktoré chcete vyhodiť do vzduchu a spravte z nich script_object ( pravé tlačítko -> script->object ).Pridajte mu tieto key-value :

#set 1 // ID ktoré spája všetky časti objective na bombu.

targetname exploder // Povie systému že toto je objekt ktorý bude zničený.

Takže teraz už máte hotovú štrkuktúru ktorá je určená k zaniknutiu.

-------------------------------------------------------------------------------
(4) Veľkosť explózie
-------------------------------------------------------------------------------

Chcete aby vojaci v blízkosti výbuchu zomreli ? Základné nastavenie poškodenia a vzdialenosti výbuchu sú nastavené v .scr súbore.

Vytvorte trigger_multiple ( nič nemajte označené, pravé tlačítko a vyberte trigger->multiple ). Pridajte im tieto key-value :

targetname groundzero // Meno používané ostatnými entitami na označenie tejto entity

Teraz umiestnite tento triger tak aby dosahoval tam kde chcete aby zabíjal vojakov pri výbuchu.

-------------------------------------------------------------------------------
(5) Efekt explózie
-------------------------------------------------------------------------------

Chceme nejaký vybuchujúci efekt a zvuk výbuchu. Takže si ich spravíme :

Vytvorte dve script_model's ( nič neoznačené, pravé tlačítko script -> model ). Položte ho blázko pri bombe a obidvom dajte tieto key-value :

#set 1 // ID ktoré spája všetky časti úlohy (objective). Na pridanie entít pre tento exploder pridajte im key/value #set/1.

model models/animate/fx_explosion_tank.tik // Ktorý model sa má použiť pre efekt explózie.

targetname exploderfire // Povie systému že toto je predmet ktorý obsahuje špeciálne efekty.

Jednému script_model pridajte tieto hodnoty:

#pause 0.5 // Oneskorenie explózie o 0.5 sekúnd po tom ako bomba vybuchne.

Takže teraz budete mať dvoj stupňový výbuch.

-------------------------------------------------------------------------------
(6) 6: Trosky pri výbuchu
-------------------------------------------------------------------------------

Určite ste si všimli že pri výbuchu Control Panelu v mape V2 lietajú trosky. My si to tu tiež trochu rozoberieme ako na to.

Vytvorte kópiu objektu ktorý má vybuchnúť. Tento objekt potom rozštvrťte. Označte všetky štyri časti a urobte z nich script_object. Dajte im tieto key-value vlastnosti:

#set 1

targetname exploderchunk // Povie systému že toto je objekt, ktorý po výbuchu odletí zo svojho miesta. Vaše 4 kúsky posunte trochu viac do vonka od pôvodného celého objektu (nebojte sa, systém sa postará o to aby sa tieto kúsky skryli pokiaľ nebuchne bomba).

A teraz otázka kde sa majú tieto kúsky vymrštiť.

Vytvorte script_origin pre každý kúsok ktorý odletí na miesto kde má odletieť (nezabudnite mať všetko odznačené, klávesa ESC).

Odznačte všetko, označte prvý kúsok a script_origin, potom stlačte CTRL+K (týmto sa spojia obidve entity)
Poznámka : Je dôležité v akom poradí ich označujete.

Teraz by ste mali mať trosky ktorých modré šípky určujú smer odletu pri výbuchu.

-------------------------------------------------------------------------------
(7) Niečo čo zostane po explózii?
-------------------------------------------------------------------------------

Niekedy je potrebné aby niečo po výbuchu zostalo. Napríklad skrútený Flak88 kanón, alebo diera v stene...

Vytvorte čo zostane po explózii. Označte to a vytvorte z toho script_object (pravé tlačítko -> script->object ).Pridajte tieto key-value vlastnosti:

#set 1

targetname explodersmashed

Týmto sa nahradí objekt po explózii.

-------------------------------------------------------------------------------
(8) Skriptovanie v .scr súbore
-------------------------------------------------------------------------------

Tu je skript pre objective mapu. Text za // je komentár

// Objective test mapa
// ARCHITECTURE: Bjarne Grönnevik
// SCRIPTING: Bjarne Grönnevik


main:


setcvar "g_obj_alliedtext1" "Znicenie control"
setcvar "g_obj_alliedtext2" "panelu"
setcvar "g_obj_alliedtext3" ""
setcvar "g_obj_axistext1" "Obranit control"
setcvar "g_obj_axistext2" "panel"
setcvar "g_obj_axistext3" ""
setcvar "g_scoreboardpic" "none"


level waittill prespawn


exec global/DMprecache.scr
level.script = maps/obj/cust_obj_test.scr
exec global/ambient.scr cust_obj_test
thread global/exploder.scr::main // Inicializácia exploder sub-systému


level waittill spawn

level.defusing_team = "axis" // Team ktorý bude odistovať bombu
level.planting_team = "allies" // Team ktorý bude pokladať bombu
level.targets_to_destroy = 1 // Počet vecí ktoré treba zničiť v mape
level.bomb_damage = 200 // Škoda ktorú bomba napácha
level.bomb_explosion_radius = 2048 // Plocha výbuchu bomby

// Nastavenie parametrov pre round based match
level.dmrespawning = 0 // 1 or 0 (0=bez respawnu)
level.dmroundlimit = 5 // počet minút pre kolo
level.clockside = axis // tu zadajte axis, allies, kills, alebo draw (podľa toho kto po vypršaní času má vyhrať)

// level waittill roundstart // odkomentujte tento riadok vymazaním // aby ste
mohli testovať mapu sám (môžete pokladať bez protivníka)

$panel_bomb thread global/obj_dm.scr::bomb_thinker // "panel_bomb" je targetname
použitá na bombu v mohradiante thread allies_win_bomb // skok na allies_win_bomb navestie
$panel_bomb
thread axis_win_timer // skok na axis_win_bomb navestie
end // koniec main

// Test výhry allies


allies_win_bomb:
while(level.targets_destroyed < level.targets_to_destroy) // ak zostanú nezničené
objective waitframe // pauza
teamwin allies // Žiaden objective neosta, allies vyhrali
end

// Test výhry axis


axis_win_timer:
level waittill axiswin // Na konci vyhrajú axis
end


 

Napísať otázku k tutoriálu

Meno: Dátum:
Kontrolný kód : 5 + sedem =