Tvorba výtahu


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.