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.
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.
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:
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...
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)