Jistě znáte takové to chodbové osvětlení, které se spouští pohybovým čidlem a po nějaké době se samo vypne - tak o to se dnes pokusíme.
Nejprve budeme potřebovat chodbu, kam dáme světlo. Světlo bude klasicky func_wall s nějakou texturou světla a 2x entita light - jedné dáme světelnost 100 a druhé 25 (světelnost je to poslední číslo z čtyřčíslí Brightness). Těmto světlům nastavíme jména 1p a 1p2 a ve flags jim nastavíme Initially dark a nakonec je přesuneme na stejné místo, takže 1p bude klasicé světlo co bude svítit a 1p2 bude takový ten mezistupeň před úplným zhasnutím.
![chodba_svetlo1](images/articles/chodba_svetlo1.png)
Nyní si vytvoříme brush čidla (lepší by byl model, ale teď bude stačit brush), já jsem využil textury RED, která vyzařuje červené světlo. Tento brush převedeme na func_illusionary, ať nám nepřekáží a hlavně ať se na něm nepočítají zbytečné stíny.
![chodba_svetlo2](images/articles/chodba_svetlo2.png)
Teď si musíme nějakým způsobem vytvořit okruh, který bude naše čidlo snímat. Vytvoříme válec, který nám bude symbolizovat oblast, kterou snímá čidlo. Otexturujeme ho texturou AAATRIGGER a převedeme na trigger_multiple. Nastavíme mu Target na 1pm a Delay before reset na 0.001. Teď je potřeba ho ořezat Clipping toolem tak, aby nevylézal "mimo mapu" - aby byl pouze uvnitř chodby. V mojí dvoupatrové příkladové mapě jedna oblast čidla vypadá takto:
![chodba_svetlo3](images/articles/chodba_svetlo3.png)
Konečně se dostáváme k skriptování - tentokrát použijeme 4x trigger_relay a 3x multi_manager. Tak do toho, začneme reléčkama:
1. trigger_relay
Name: 1pon
Target: 1p
Trigger State: On
2. trigger_relay
Name: 1p2on
Target: 1p2
Trigger State: On
3. trigger_relay
Name: 1poff
Target: 1p
Trigger State: Off
4. trigger_relay
Name: 1p2off
Target: 1p2
Trigger State: Off
teď multimanažeři (hodnoty vkládáme s vyplým SmartEdit):
1. multi_manager
targetname 1pm
1pon 0
1poff 10
1p2on 10
1p2off 15
2. multi_manager
targetname 1pm
1pon 0
1p2off 0
3. multi_manager
targetname game_playerspawn
1poff 0
1p2off 0
Pokud máte ještě dost chuti, můžete si zkusit vytvořit ještě jedno čidlo - v příkladové mapě máte 2 patra - v prvním patře se entity jmenují 1p... a v druhém 2p...
![chodba_svetlo4](images/articles/chodba_svetlo4.png)
Takže - jak to teda funguje? Trigger_relay jsou takové zapínače/vypínače - dokážou buď entitu zapnout, nebo vypnout. Já jsem je použil, aby nedocházelo k chybám. Po vstupu do triggeru se aktivuje 1. multi_manager, který nám rozžne první světlo, po 10 sekundách vypne první světlo a zapne druhé světlo; po 15 sekundách vypne druhé světlo. Takhle by nám ale světlo zhaslo i kdybychom pod tím čidlem jančili. Proto je tu 2. multi_manager se stejným jménem jako 1. multi_manager; ten nám pořád zapíná první světlo a vypíná druhé světlo - uržuje světlo zaplé. 3. multi_manager tu je z toho důvodu, aby nám světla nezůstala svítit do dalšího kola.
Přestože jsem se snažil se všech sil, zůstaly mi v tomto principu dvě chyby. První chyba je ta, že pokud opustíte trigger mezi desátou a patnáctou sekundou, světlo zůstane rosvícené navždy (do dalšího kola). Druhá chyba je ta, že pokud kolo skončí mezi nultou a desátou sekundou aktivovaného multi_manageru, v dalším kole je na začátku tma, ale poté se zapne druhé světlo, které po 5 vteřinách zhasne.
Příkladová mapa |
(i když to vypadá, že mají stejnou funkci, je tomu jinak než jsem si myslel)