Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Alapok #1
#1
Kedves fórumozók!
Ebben a témában az alapokról lesz szó, hogy hogyan is kell a Call of Duty 2 nevezetű játékot szerkeszteni.

A nevezett játékot elég egyszerű szerkeszteni, mivel a fájlokat .iwd-ben tárolja amit könnyet megtudsz nyitni WinRar-al.
Amiket tudni kell, a játék szerkesztéséhez:

xmodelsurfs, xmodelparts, xmodel - ezekben vannak a modellek és a hozzájuk tartozó fájlok. (nincs kiterjesztés)

materials, images - ezekben vannak a képek és a hozzájuk tartozó fájlok.  (images (.iwi) materials (nincs kiterjesztés))

weapons/mp vagy weapons/sp - ezekben vannak a fegyverek adatai és a 2 közül az mp mappa kell leginkább mivel abba vannak a multiplayer fegyverek. (nincs kiterjesztés)

ui_mp, ui_mp/scriptmenus - ezekbe vannak a menük és a hozzájuk tartozó fájlok. (.menu)

sound - ebbe vannak a hangok. (.wav, .mp3, stb)

soundaliases - ebben vannak a hangok kódjai "frekvencia" nélkülük nem játszaná le a hangot a cod2. (.csv)

fx - ebben vannak az effektek. (.efx)

localizedstrings - ebben vannak a menühöz tartozó ki írások pl.: főmenüben: Start new server, Options. (.str)

mp - ebben vannak pl.: a pályanevek (.arena)

maps/mp - ebben vannak a pályák (.d3dbsp) és a hozzájuk tartozó scriptek.

maps/mp/gametypes - ebben vannak a játéktípusok és a hozzájuk tartozó egyéb scriptek. (.gsc)


Mindennek az alapja a játéktípus (A játéktípus scripteket az iw_15 (.iwd) és az iw_07-be (.iwd) találhatóak.) 

Minden script függvényekből áll. Fontos függvények: 

Callback_StartGameType() // a játék indulásakor fut le 
Callback_PlayerConnect() // csatlakozáskor fut le a csatlakozó/csatlakozott játékosnak. 
Callback_PlayerDisconnect() // lelépéskor fut le a lelépő játékosnak. 
Callback_PlayerDamage() // a játékos sebződésekor fut le a sebződött játékosnak. 
Callback_PlayerKilled() // a játékos halálakor fut le a halott játékosnak. 
spawnPlayer() // spwanoláskor fut le a spawnolt játékosnak. 
menuSpectator() // spectatorba lépéskor fut let az odalépő játékosnak. 
menuAutoAssign() // véletlenszerű csapatkiválasztáskor fut le az adott játékosnak. 
menuAllies() // alliesba lépéskor fut le az odalépő játékosnak. (brit,orosz,amcsi) 
menuAxis() // axisba lépéskor fut le az odalép játékosnak. (német)


Script íráskor csak az angol ABC betűit használhatjuk számmal együtt.


Kezdjük a magyarázattal:
// valami...

/* sok 
sok
sok
sok
valami...
*/
 
Persze magyarázatkor használhatunk ékezet is.

Kezdjük akkor egy alap script írással:
Code:
fuggveny()
{ // minden függvényt kapcsos zárójellel kezdünk.
valami1(); // a függvényen belül mindent ;-vel zárunk és egy függvényen belül több függvényt is meghívhatunk.
valami2();
} // minden függvényt kapcsos zárójellel zárunk.

Itt már nem használunk ékezetet csak a magyarázatban és "fontos" még a tabulátor használata:
Code:
fuggveny()
{
    valami1();
    valami2();
}

2 fajta meghívás van:
Code:
valami1();
És
Code:
thread valami1();
Az 1. variációnál a hívó függvény megáll (fuggveny()) és a hívott függvény fut le (valami1();) majd amikor lefutott ismét el indul a hívó függvény (fuggveny()).

A 2. variációnál a hívó és a hívott függvény együtt fut. (fuggveny(), valami1();).

Jöjjenek a változók, amiket 3 fele csoportosíthatunk:
Code:
level.valtozo // ez bárhol elérhető
Code:
self.valtozo // ez csak az adott játékosnál érhető el
Code:
valtozo // ez csak az adott függvényen belül érhető el
A változók is csak az angol ABC betűiből és számokból állhatnak, de számmal nem kezdődhetnek.

A függvényen belül feltételeket is szabhatunk:
Code:
fuggveny()
{
if(self.health==0) self iprintlnbold("Meghaltál!"); else self iprintlnbold("Még élsz!"); // == -> egyenlőséget jelent, iprintlnbold -> középre író függvény de van iprintln -> ez meg az oldalra író függvény.

ugyan ez egyszerűbben: if(!self.health) self iprintlnbold("Meghaltál!"); else self iprintlnbold("Még élsz!"); // az if részben a ! az azt jelenti hogy ha 0 az életed akkor ki írja hogy meghaltál ha viszont a feltétel nem igaz akkor az else után rész fut le.

if(self.pers["team"]=="axis") self iprintlnbold("Németben vagy!"); // ezen kívül még lehet allies, spectator

if(self.sessionstate=="dead") self iprintlnbold("Meghaltál!"); // ezen kívül még lehet playing, spectator, intermission

if(self.sessionteam=="axis") self iprintlnbold("Németben vagy!"); // ezen kívül még lehet allies, spectator
}

Egy kis jelmagyarázat: 

== értékellenőrzés 
= értékadás 
!, != ha valami nem egyenlő egy adott értékkel 
/, * osztás, szorzás 
% maradékkal való osztás 
+, - összeadás, kivonás 
++, -- egy változó értékét megnöveli 1-el vagy el vesz belőle 1-et 
+=, -= egy változóhoz hozzá ad valamennyit vagy el vesz belőle 
&& és jel (and) tehát: if(valtozo1==2 && valtozo2==2) self iprintlnbold("A változó értékeid egyenlők 2-vel"); // ha a valtozo1 és a valtozo2 egyenlő 2-vel akkor ki írja a szöveget. 
|| vagy jel (or) tehát: if(valtozo1==2 || valtozo2==2) self iprintnlbold("Valamelyik változód egyenlő 2-vel"); // ha a valtozo1 vagy a valtozo2 egyenlő 2-vel akkor ki írja a szöveget. 

Sipex
#2
Python alapú a scriptelése ahogy látom! Big Grin
[Image: 1453876818-b8928becdb9a3058b7c9ff22ccc5caf6.jpeg]
#3
(02-05-2018, 09:25 PM)Pisti95 Wrote: You are not allowed to view links. Register or Login to view.Python alapú a scriptelése ahogy látom! Big Grin

Nem nem, ez c++ Smile
"Egyetlen ismeretlen van, a többi csak toldás: Alattad a föld, fölötted az ég, benned a létra!"
-Weöres Sándor-  Angel
#4
(02-05-2018, 09:25 PM)Pisti95 Wrote: You are not allowed to view links. Register or Login to view.Python alapú a scriptelése ahogy látom! Big Grin

Majdnem talált, de nem!  Angel
#5
C++-al kevert Python az, ahogy jobban látom. Self.valtozo() az python. Az if statementek, vagyis ágak C++-al vannak, mert kapcsos zárójellel nyit-zár az ág.

Metin2 forrása is C++ és Python.
[Image: 1453876818-b8928becdb9a3058b7c9ff22ccc5caf6.jpeg]


Forum Jump:


Users browsing this thread: 1 Guest(s)