Lecke/fejlesztés tartalma: Bevezetés a projectbe és ismerkedés az alapokkal,
Szükséges pluginok és includék: ZCMD parancsfeldolgozóFelhívás: A létrehozásnál a leglényegesebb arra figyelnünk, hogy minden funkciónk címkézve legyen. Lásd egyes ábra.
[hs width=50 height=50]
http://i.imgur.com/d6xIa.jpg[/hs] (Kattintással nagyítható)
Elsõ lépés:
Az elsõ lépésben a játékmód formaságait fogjuk megadni. Létrehozzuk a létfontosságú beágyazásokat, elõre meghatározunk színkódokat és a játékmódot elnevezzük.
Az alap szervercsomag tartalmazza az
\'a_samp\' nevû függvénykönyvtárat így ezt nekünk nem kell külön beszereznünk. Viszont a késõbbiekben nagy segítségünkre lehet a
ZCMD (aki nem ismerné itt megtalálja a leírást és a letöltést) parancsfeldolgozó így a késõbbiekben a parancsaink egyszerûbbek és gyorsabbak lesznek. A parancsokkal majd egy késõbbi leckében fogunk foglalkozni.
A játékmód elején adjuk meg a szükséges beágyazásokat. Lényeges, hogy elé semmilyen funkciót ne írjunk mivel okozhat késõbbiekben problémát.
#include <a_samp>
#include <zcmd>
Így már elérhetõek számunkra a SAMP által nyújtott funkciók. Most adjuk meg azokat az állandókat amiket a késõbbiekben fogunk használni. Ezek most a színek lesznek.
Itt elérhetõ egy színpaletta/színkeverõ ami autómatikusan definícióba írja a kikevert színt.Azt tudnunk kell, hogy átfordításnál fentrõl lefelé kerül a játékmód konvertálásra így a definíciókat már csak az átláthatóság miatt is érdemes a beágyazások alatt létrehozni. A lényeg az, hogy mindig a funkciónk elõtt legyen. Lehet pontosan elé is írni de nem célszerû mivel nagyobb terjedelmû módnál átláthatósági problémákat okoz. Illetve esztétikusabb a módunk ha minden sorban egy helyen található meg lásd egyes ábra.
Tehát kezdjünk el kikeverni olyan 10 színt és definíciókba adjuk meg a színek neveit (fent definíció neve) és a hozzátartozó értékeket. Javaslom a SZIN_ elõtagot így a késõbbiekben könnyebben elkülönülnek a többi állandótól. A webes \'program\' létrehozza nekünk a teljes kódot átalakítani legfeljebb a tabulátorozást kell, viszont ez csak esztétikai dolog nincs kihatással a módunk mûködésére. Persze azért címkézzük fel, hogy itt a színek kerülnek megadásra.
Nekem a webes verzióban a tabulátorok elcsúszhatnak.
#define SZIN_PIROS 0xff0000AA
#define SZIN_SARGA 0xffa600AA
#define SZIN_ZOLD 0x227305AA
#define SZIN_KEK 0x08027aAA
A késõbbiekben nem kell beírnunk azt, hogy
\'0x08027aAA\' csupán elég lesz annyi, hogy SZIN_KEK.
Második lépés:
Ebben a lépésben fogjuk elnevezni a játékmódunkat.
main()
{
print(\"\\n----------------------------------\");
print(\" SAMPFORUM.HU PAWN GYAKORLATI tanfolyam\");
print(\"----------------------------------\\n\");
}
A main funkció a játékmód indulásakor kerül meghívásra. Ezt nem lehet kihagyni a játékmódból, enélkül nem indul el. Továbbá csak a játékmód indulásakor kerül meghívásra.
A print funkció egy képernyõ üzenetet ír ki. Ezt használhatjuk debugolásra is akár (fõleg erre célszerû).
Térjünk át az
public OnGameModeInit()
{
return 1;
}
Callbackhez. Elõször is láthatjuk, hogy nincsenek megadva paraméterek (a paraméterek a zárójelben lévõ részben vesszõvel elválasztva találhatóak), másrészt ez az eljárás is a játékmód indulásakor fut le. Így itt beállíthatunk pár globális dolgot. Elsõnek adjunk hozzá egy skint az
AddPlayerClass függvénnyel tehetjük meg. Itt már jóval több paraméterünk van. Én ezeket nem fogom taglalni a linken megtaláljátok.
Ami kérdés, hogy ugyebár mi egy autós játékmódot készítünk akkor miért szükséges karakter hozzáadása? A válasz rá igen egyszerû mivel ha nem adsz hozzá legalább egy karaktert akkor elõfordulhat az, hogy a játékosok kifagynak spawnoláskor (lehet ez már 0.3e verzióban javítva lett). Értékeket nem kell megadnunk az argrumentumokban -vagy másnéven paraméterekben. Tehát nyugodtan írjunk 0 értékeket, kivéve ahol lebegõpontos számot kér ott egy tizedes jegy pontossággal töltsük ki a paramétert. Tehát összesítve ez nekem így néz ki most:
public OnGameModeInit()
{
AddPlayerClass(0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
return 1;
}
Itt látszik is egy óriási probléma ha csak erre hivatkozunk, hogy mindössze 3 fegyvert adhatunk a játékosnak. Késõbbiekben egy másik út taglalásra kerül.
Érdemes lenne elnevezni a játékmódot. Amikor a kliensbe a szervert nézed akkor a
\'Mode\' felirat alatt olvasható a játékmód neve.
Ehhez a
SetGameModeText(string[]) függvény lesz a segítségünkre. Amit tudni érdemes róla, hogy egy darab szöveges argrumentuma van. A szöveget amit megadunk benne lehet akár elõre változóban formázott és úgy hivatkozhatunk rá. De erre nekünk most még nincs szükségünk ezért csak natúr beírjuk a játékmód nevét.
public OnGameModeInit()
{
AddPlayerClass(0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
SetGameModeText(\"Sampforum Carmageddon v0.1b\");
return 1;
}
Amire figyelnünk kell az az, hogy a nem változóból kiolvasandó szövegeket tegyük idézõjelekbe. Ez amolyan elkülönítési mód.
Csupán annyi a teendõnk már, hogy ctrl+s billentyûkombinációval mentsük el a pwn fájlunkat. Konvertálás egyelõre nem szükséges még.
Összesítés:
#include <a_samp>
#include <zcmd>
#define SZIN_PIROS 0xff0000AA
#define SZIN_SARGA 0xffa600AA
#define SZIN_ZOLD 0x227305AA
#define SZIN_KEK 0x08027aAA
main()
{
print(\"\\n----------------------------------\");
print(\" SAMPFORUM.HU PAWN GYAKORLATI tanfolyam\");
print(\"----------------------------------\\n\");
}
public OnGameModeInit()
{
AddPlayerClass(0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
SetGameModeText(\"Sampforum Carmageddon v0.1b\");
return 1;
}