tvorbamap.cz

tvorbamap.cz

Navigace

bullet.gif

Domů


bullet.gif

Články


bullet.gif

Ke stažení


bullet.gif

Fórum


bullet.gif

FAQ



bullet.gif

Herní server


bullet.gif

Chat


bullet.gif

Převod jednotek



bullet.gif

Soutěž


bullet.gif

Síň slávy



bullet.gif

Podpořte nás


bullet.gif

Kontakt


bullet.gif

Vyhledávání


bullet.gif

RSS


Herní server

Shoutbox

Pro přidání zprávy do shoutboxu, musíte být přihlášeni.

20.06.2017 23:02:22
Jo, to je další možnost..že jsem barvoslepy, nebo úplně slepý :D ale tak byl to jen návrh:D
±0


20.06.2017 20:13:13
Udělej si test barvosleposti, já přečtu každou... :D
±0


20.06.2017 11:46:16
Měl bych takový návrh, při registraci jak je ten captcha kód, je to dělané velmi pěkně jako brushe :D ale ono to nejde přečíst vůbec, já jsem musel 30x změnit kód, abych to přečetl a bylo to správně =D
±0


19.06.2017 19:52:01
ok
±0


19.06.2017 00:25:14
Jak žijete lidi? :D Jestli teda žijete :@
±0


12.05.2017 22:22:13
Abych naštval Backapu, že má další práci, tak jsem mu tam hodil jednu prosbu.
Děkuji ;)
±0


11.05.2017 15:29:38
O hodně přicházíš :D
±0


11.05.2017 11:14:29
Jsem antisociál a na srazy nejezdím... :D
±0


10.05.2017 21:53:37
Už dlouho jsem to tu nenapsal, takže....
... zakalíme? Pívo? Dejvice nebo Jižák?
#TMsraz
±0


08.05.2017 19:32:50
dik moc
±0


Master, multisource a env_global

(Oříšky)

Zamykání dveří a zakazování/povolování různých entit. Ukažte svým entitám kdo je jejich pán.

Master



Co je to Master (pán)? Je to vlastnost entity, která umožňuje uzamčení (zakázání) dané entity nadřazenou entitou (Masterem). Do tohoto políčka napíšeme jméno entity, která mu bude nadřazená. Masterem můžou být pouze dvě entity a to multisource a game_team_master (který v csku nefunguje správně).

Mastera můžeme vyplnit u všech těchto entit:
tankovité: func_tank, func_tanklaser, func_tankmortar
dvéřité: func_door, func_door_rotating, momentary_door, func_water
spínačové: trigger_counter, trigger_autosave, trigger_gravity, trigger_hurt, trigger_multiple, trigger_once, trigger_push, trigger_teleport,
herní: game_counter, game_counter_set, game_end, game_player_equip, game_player_hurt, game_player_team, game_score, game_team_master, game_team_set, game_text, game_zone_player
tlačné: func_button, func_rot_button, button_target, momentary_rot_button

Master u části z nich ale nefunguje, takže pokud narazíte na nějakou takovou entitu, nahlašte jí v komentářích a já ji vyškrtnu.

multisource



Multisource je nejpoužívanější entita jako Master. Jakmile ji aktivujeme (např. tlačítkem), odemknou se všechny entity, které ji mají uvedenou jako mastera. Jednoduchý příklad se zamykáním dveří:

func_door - Master: zlypan
multisource - Name: zlypan
func_button - Target: zlypan

master_schema1.png

Dveře jsou na začátku zamčené, protože zlypan čeká na aktivaci tlačítka. Jakmile tlačítko zmáčkneme, dveře se odemknou. Když se tlačátko deaktivuje, opět se zamknou.
Toto funguje ale jen pro tlačítko, které "vyprší". Pokud bychom chtěli spíše spínač - toggle tlačítko, musíme přidat trigger_relay.

func_door - Master: zlypan
multisource - Name: zlypan
trigger_relay - Name: rele, Target: zlypan
func_button - Target: rele

master_schema2.png

Funguje to úplně stejně jako předtím. Důvod, proč musíme použít relé, je chyba ve zdrojovém kódu.
Poznámka pro Valve: v souboru buttons.cpp na řádce 761 má být else if

Tohle ale není jediná funkce multisource. Jak už název napovídá, umožňuje zpracování více zdrojů. Jednoduchý příklad s odemykáním dveří dvěma tlačítky:

func_door - Master: zlypan
multisource - Name: zlypan
func_button - Target: zlypan
func_button - Target: zlypan

master_schema3.png

Dveře jsou zamčené dokud nesepneme obě tlačítka naráz. Jakmile se jedno znich deaktivuje, dveře se opět zamknou.
V případě toggle tlačítek musíme opět použít relé.

Další funkce multisource nesouvisí s Masterem, ale také se hodí znát. Jakmile je multisource aktivován vším co ho aktivuje, je možné nastavit Target, který se spustí.
Příklad - máme vysouvací dveře, které jsou aktuálně ve vrchní pozici a jsou podepřeny dřevěnými zábranami, aby nespadly dolů.

func_door - Name: dvere
multisource - Name: zlypan, Target: dvere
func_breakable - Target: zlypan
func_breakable - Target: zlypan
...

master_schema4.png

Po rozstřílení všech zábran dveře spadnou dolů. (Pozor, toto nebude fungovat v dalším kole!)

Poslední funkcí multisource je možnost číst tzv. Global State - proměnná, která se chová jako takový master pro multisource. Ještě předtím, než se multisource aktivuje a odemkne své poddané (např. nějaké ty dveře) zkontroluje Global State. Pokud je vyplněn a je nastaven na On, multisource se odemkne. Jakmile se Global State změní na Off, multisource se zamkne.

Global State není entita sama o sobě, je to pouze jméno nějaké té proměnné, ze které může číst multisource a trigger_auto (opět má smysl spíše v singleplayeru) a měnit její obsah může env_global.

env_global



Jak již bylo zmíněno, env_global mění obsah určité globální proměnné. Rozebereme si jeho vlastnosti:
Name - klasika, jméno entity
Global State to Set - jméno globální proměnné, kterou budeme nastavovat
Trigger Mode:
> On - vždy nastaví hodnotu na On
> Off - nastaví hodnotu na Off
> Dead - zruší proměnnou
> Toggle - přepne hodnotu z On na Off nebo naopak
Initial State - v kombinaci s Flagem Set Initial State nastaví hodnotu proměnné po startu mapy; výchozí hodnota je Off

Uvedeme si zase nějaký jednoduchý příklad, opět zamykací dveře (s toggle tlačítkem):

func_door - Master: zlypan
multisource - Name: zlypan, Global State Master: zamek
env_global - Name: odemkni, Global State to Set: zamek, Trigger Mode: Toggle
func_button - Target: odemkni

master_schema5.png

Dveře jsou zamčené, aktivujeme tlačítko, změníme GS, tím se odemkne multisource a naše dveře. Deaktivací tlačítka se dveře opět zamknou. Musíme použít toggle tlačítko, protože normální tlačítko nevysílá signál o deaktivaci (resp. vysílá ho pouze pro multisource).

Env_global se hodí, když chceme mít např. jedno tlačítko pro zamčení dveří a druhé pro odemčení.

func_door - Master: zlypan
multisource - Name: zlypan, Global State Master: zamek
env_global - Name: odemkni, Global State to Set: zamek, Trigger Mode: On
func_button - Target: odemkni
env_global - Name: zamkni, Global State to Set: zamek, Trigger Mode: Off
func_button - Target: zamkni

master_schema6.png

A aby to náhodou nebylo moc lehké, můžeme mít pro zamčení a odemčení vždy dvě tlačítka.

func_door - Master: zlypan
multisource - Name: zlypan, Global State Master: zamek
env_global - Name: odemkni, Global State to Set: zamek, Trigger Mode: On
multisource - Name: odemykac, Target: odemkni
func_button - Target: odemykac
func_button - Target: odemykac
env_global - Name: zamkni, Global State to Set: zamek, Trigger Mode: Off
multisource - Name: zamykac, Target: zamkni
func_button - Target: zamykac
func_button - Target: zamykac

master_schema7.png

Global State není globální jen tak, protože to je hezké jméno. Jmenuje se tak kvůli tomu, že hodnota této proměnné se zachovává i přes loadingy do dalších map (v singleplayeru). Pokud tedy dumáte, jak v HL1 udělali Blast Pit, tak je to právě přes env_global.
Zmiňoval jsem entitu trigger_auto, která umí číst Global State, ale není příliš vhodná do multiplayeru. Její (ne)výhoda je, že se aktivuje po startu mapy. V singlu je to super funkce, v multi to může udělat nečekané věci, pokud máme Global State inicializovaný na On.

Příkladová mapa.

Příště se mrkneme na nějaký opravdový oříšek. :)

Komentáře

#1 |
XXL_cz dne 11.07.2013 13:23:05 |
±0
Tak konečně vím, jak se používá master - další výborný článek :)

A u těch dveří, které spadnou po zničení zábran jak to nefunguje v dalším kole - To se dá nahradit game_counterem místo mutisource, když se tam dá počet aktivací podle počtu zábran. A na začátku dalšího kola samozřejmě game_counter_set na reset.
#2 |
KoRis dne 17.07.2013 15:08:19 |
±0
XXL: To si pamatuji, jak jsme toto spolu řešili.
Multisource je prostě jen do singlu a obejít to jde různě. Třeba já ho nahradil v mapě de_secret_labs (kde se dá po spuštění asi osmy "spínačů" otevřít tajná místnost na CT spawnu) přes func_train.
Zkrátka multisource je zbytečná entita.

Přidat komentář

Pro přidání komentáře musíte být přihlášený.

Hodnocení

Pro hodnocení musíte být registrovaný.

Prosím přihlašte se nebo se zaregistrujte.

Výborné! Výborné! 100% [3 Hlasů]
Chvalitebné Chvalitebné 0% [Žádné hlasy]
Dobré Dobré 0% [Žádné hlasy]
Dostačující Dostačující 0% [Žádné hlasy]
Nedostačující Nedostačující 0% [Žádné hlasy]

Přihlášení

Jméno

Heslo



Nejste členem?
Zaregistrujte se!

Ztracené heslo?

Seznam článků

Diskuze fóra

Nejnovější příspěvky


bullet.gif

Problém se zbra...

(Backup)
bullet.gif

batch compiler

(Backup)
bullet.gif

problem s RAD

(Backup)
bullet.gif

problém s .pts

(Backup)
bullet.gif

Mapa se...

(Gordon Freeman)
bullet.gif

nazdar

(Backup)
bullet.gif

osvět...

(Dominik Rozporka)
bullet.gif

spawn...

(Dominik Rozporka)
bullet.gif

BOMBA

(Gordon Freeman)
bullet.gif

SourceMod Tvorb...

(EMINEM)

Odkazy

Kotelna Mix-Arena.eu - Gaming portál AMX Mod X nonsteam.cz - seznam CZ/SK Non-Steam Counter Strike serverů

Twitter & FB


Kdo je on-line

bullet.gif Hosté on-line: 1

bullet.gif Členové on-line: 0

bullet.gif Registrovaní členové: 911
bullet.gif Nejnovější člen: NoobYT