V misi s přehradou můžete používat výtah. Jak ho ale vytvořit ? Je to
jednoduché:
1) Vytvořte kabinu výtahu:
Dejte ji do spodní zastávky, když ji dáte do horní, tak vám v mapě ujede stropem
a už ho nikdy nikdo neuvidí. Je tak udělaný skript, aby první pohyb vedl nahoru.
2) Klikněte pravým tlačítkem ve 2d pohledu a vyberte script/brushmodel. Pak stiskněte N a napište do řádku:
CODE |
Key: targetname Value: elevatormodel |
3) Pak si vytvořte nebo vložte model, který nám bude
představovat přivolávač výtahu. Jako model doporučuji vložit model xmodel/shipswitch1
(jak to udělat je popsáno v tutoriálu vkládání modelů). Model shipswitch je
vidět na obrázku vpravo. Nebo si udělejte vlastní pomocí brushů.
4) Teď udělejte brush kolem celého modelu, dejte mu texturu
common/trigger (nebo stačí i common/caulk, funguje
to taky), potom v 2d pohledu klikněte pravým myšítkem a vyberte
trigger/use.
Nakonec stiskněte N, do Key napište targetname a do value: elevatorswitch. Pak
model i s otexturovaným brushem zkopírujte a přeneste do druhé zastávky, abyste
mohli výtah přivolávat jak zdola nahoru, tak i shora dolů.
CODE |
Key: targetname Value: elevatorswitch |
Pozor při umísťování spínačů. Brush, který jste udělali kolem spínače (common/trigger) nesmí zasahovat do jiného brushe jinak vám spínač nebude fungovat !
5) Otexturujte viditelné části výtahu.
Nezapomeňte, že výtah musíte otexturovat i ze shora a zespoda, nejen zevnitř, jinak by byl výtah průhledný pro toho, kdo se dívá ze shora (jde to totiž použít i pro multiplayerovou mapu).
Tak, to by bylo hotovo pro mapu, teď trocha toho skriptování.
1) V Total Commanderu stiskněte Shift + F4 a vytvořte soubor jmenovasimapy.csv
Vložte do něj tento text:
CODE |
name,sequence,file,vol_min,vol_max,pitch_min,pitch_max,dist_min,dist_max,channel ,type,probability,loop,masterslave,loadspec,subtitle null,,null.wav,,,,,,,,,,,,, # Personal Sounddefinitions,,,,,,,,,,,,,,, elevator1,,misc/elevator_med.wav,,,,,,,auto,,,,,, |
2) Vytvořte stejným způsobem soubor jmenovasimapy.gsc
Vložte tam:
CODE |
main() { level.elevatorDown = true; level.elevatorMoving = false; thread elevator_start(); } elevator_start() { elevator = getentarray ("elevatorswitch","targetname"); if ( isdefined(elevator) ) for (i = 0; i < elevator.size; i++) elevator[i] thread elevator_think(); } elevator_think() { while (1) { self waittill ("trigger"); if (!level.elevatorMoving) thread elevator_move(); } } elevator_move() { elevatormodel = getent ("elevatormodel", "targetname"); level.elevatorMoving = true; speed = 2; height = 192; wait (1); if (level.elevatorDown) { elevatormodel playsound ("elevator1"); wait (1); elevatormodel moveZ (height, speed); elevatormodel waittill ("movedone"); level.elevatorDown = false; } else { elevatormodel playsound ("elevator1"); wait (1); elevatormodel moveZ (height - (height * 2), speed); elevatormodel waittill ("movedone"); level.elevatorDown = true; } level.elevatorMoving = false; } |
Tady si nastavíte rychlost výtahu a výšku jeho cesty. Najděte řádky speed = 2
a height= 192
Speed: NEZNAMENÁ RYCHLOST, ALE KOLIK ČASU BUDE VÝTAH POTŘEBOVAT NA
PŘEJEZD MEZI PATRY, TAKŽE ČÍM MENŠÍ ČÍSLO, TÍM VĚTŠÍ RYCHLOST. Optimální hodnota
je tak 1/100 jednotek, tzn když máte patra, kde výtah zastavuje, 400 políček od
sebe, sem napište 4, ale nemusíte. Já sám vždycky udělám výtah, co jede o 5000
jednotek víc (čili cca 112.5 m) a nechám rychlost 2, Nahoru jedete 2 vteřiny a
dolů padáte 12 vteřin…
Height: Pro každý výtah jiná hodnota, výšku změříte tak že uděláte brush
od podlahy výtahu (která je ve stejné úrovni jako podlaha spodního patra) k
podlaze horního patra, viz obrázek:
Tak, a je to, pokud by to nefungovalo, projděte si v editoru
funkce, jestli tam jsou všechny, někdy se tam při ukládání ztratí třeba entita
Key: targetname nebo Value: elevatormodel. Tak to zkuste.
Autorem překladu je M!R0R.