Hali! Ebben a kis cikkben bemutatom, hogyan lehet egyszerűen mozgólépcsőket csinálni. Sajnos nem tudtam teljesen automatizálni a scriptet, ezért olyanok vágjanak bele akik már ismerik vmennyire a dolgot, persze így se lesz nehéz. :)
A dolog lényege hogy a lépcsőfokok egymást fogják "kergetni". Mindig az előtte lévő helyére akar majd menni.
Radiantelső körben csináljunk egy lépcsőfokot, és az aljára egy origin texturájú brusht.

Utána mindkettőt kijelölve
jobbklikk>script>brushmodel.
Másoljuk le és pakoljuk egymás mellé őket.

Úgy pakold őket, hogy majd ha szépen egymás után mennek, akkor úgy nézzen ki mint egy mozgólépcső. Ezt talajhoz képest-i helyzetünkél is vedd figyelembe.

Most jelöld ki az egyik lépcsőfokot(mind1 hogy melyiket), majd
Entity-ben,
targetname -> mlepcso1.

Most haggyuk kijelölve ezt a lépcsőfokot és jelöljök még ki a következő lépcsőfokot, majd nyomjunk
W.

Majd ezt a lépcsőfokot és hozzá a következőt, majd megint
W. Egészen addig amíg körbe nem érünk.

Ezzel a módszerrel csinálhatunk több mozgólépcsőt is, csak azoknak más legyen a
targetname-jük.
Nekem végül így nézett ki, két mozgólépcső egyiket úgy kötetöttem össze, hogy felfele a másikat meg úgy, hogy lefele menjen. A targetname-jük: mlepcso és mlepcso2.
ScriptKezdjük azzal, hogy megnyitjuk a jegyzettömbünket és beleírjuk ezt a pár sort:
main() { mozgolepcso1 = getent ("mlepcso","targetname"); mozgolepcso1 thread mozgolepcso1_mukodes(); mozgolepcso2 = getent ("mlepcso2","targetname"); mozgolepcso2 thread mozgolepcso2_mukodes(); }
mozgolepcso1_mukodes() { Lepesek[1] = self; Lepesek[2] = getent(Lepesek[1].target,"targetname"); Lepesek[3] = getent(Lepesek[2].target,"targetname"); Lepesek[4] = getent(Lepesek[3].target,"targetname"); Lepesek[5] = getent(Lepesek[4].target,"targetname"); Lepesek[6] = getent(Lepesek[5].target,"targetname"); Lepesek[7] = getent(Lepesek[6].target,"targetname"); Lepesek[8] = getent(Lepesek[7].target,"targetname"); Lepesek[9] = getent(Lepesek[8].target,"targetname"); Lepesek[10] = getent(Lepesek[9].target,"targetname"); Lepesek[11] = getent(Lepesek[10].target,"targetname"); Lepesek[12] = getent(Lepesek[11].target,"targetname"); Lepesek[13] = getent(Lepesek[12].target,"targetname"); Lepesek[14] = getent(Lepesek[13].target,"targetname"); Lepesek[15] = Lepesek[1]; Lepesek thread mozgom(); } mozgolepcso2_mukodes() { Lepesek[1] = self; Lepesek[2] = getent(Lepesek[1].target,"targetname"); Lepesek[3] = getent(Lepesek[2].target,"targetname"); Lepesek[4] = getent(Lepesek[3].target,"targetname"); Lepesek[5] = getent(Lepesek[4].target,"targetname"); Lepesek[6] = getent(Lepesek[5].target,"targetname"); Lepesek[7] = getent(Lepesek[6].target,"targetname"); Lepesek[8] = getent(Lepesek[7].target,"targetname"); Lepesek[9] = getent(Lepesek[8].target,"targetname"); Lepesek[10] = getent(Lepesek[9].target,"targetname"); Lepesek[11] = getent(Lepesek[10].target,"targetname"); Lepesek[12] = getent(Lepesek[11].target,"targetname"); Lepesek[13] = getent(Lepesek[12].target,"targetname"); Lepesek[14] = getent(Lepesek[13].target,"targetname"); Lepesek[15] = Lepesek[1]; Lepesek thread mozgom(); }
mozgom(){ while (1) { for(i=1;i<self.size;i++){ f=i+1; self[i] moveto (self[f].origin,1); } self[i] waittill ("movedone"); } } |
A kék rész az ami úgy ahogy van kell a scriptbe. Egy mozgó lépcsőhöz két fő dolog kell. első a mainban:
SCRIPTNÉV = getent ("NÉV","targetname"); SCRIPTNÉV thread SCRIPTNÉV_mukodes(); |
SCRIPTNÉV - a scriptben szereplő név, mind1 hogy mi
NÉV - amit a radiantban megadtunk neki
A második rész a függvénye.
SCRIPTNÉV_mukodes() { Lepesek[1] = self; Lepesek[2] = getent(Lepesek[1].target,"targetname"); Lepesek[3] = getent(Lepesek[2].target,"targetname"); Lepesek[4] = getent(Lepesek[3].target,"targetname");
....
Lepesek[N] = getent(Lepesek[N-1].target,"targetname"); Lepesek[N+1] = Lepesek[1]; Lepesek thread mozgom(); } |
SCRIPTNÉV - a scriptben szereplő név(amit a mainban adtunk emg neki)
A narancssárga részben olvassuk be a scriptbe a lépcsőfokokat. Az én mapomon 14 lépcsőfok volt, ezért a fenti scriptben is ez a vége:
Lepesek[14] = getent(Lepesek[13].target,"targetname"); Lepesek[15] = Lepesek[1]; |
Ahány lépcsőfokot raktál le annyi sort kell beírni a minta szerint, remélem rájössz a minta alapján hogyan kell.
Ezt a két dolgot kell megcsinálni mind a 2 script résznél. Egyes mozgólépcsőknek lehet különböző lépcsőszáma, ennek következtében a scriptjei is hosszabbak/rövidebbek lesznek.
Most mentsük el
mozgo.gsc néven az
IWD\maps\mp mappába.
Már csak a pályánk fő gsc fájlában kell megnyitnunk ezzel a sorral:
maps\mp\mozgo::main();Az áltálam készített minta pálya
map fájla és
IWD fájla
innen letölthető.
Kis videóm is van róla:
Ksisu 2010 - TotalConverion.hu