GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => Tanuljunk PAWN nyelvet => SA-MP: Szerverfejlesztés => PAWN gyakorlati tanfolyam => A témát indította: Gentleman - 2012. Szeptember 23. - 19:58:34

Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: Gentleman - 2012. Szeptember 23. - 19:58:34
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;
}
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: ChrisJ - 2012. Szeptember 24. - 15:53:58
Cool. Jöhet a következõ  :D
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: JackBronson - 2012. Szeptember 25. - 07:50:14
Jo de nallam  a kep az homalyos kicsit :D
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: Csabesz - 2012. Szeptember 25. - 17:44:22
Idézetet írta: JaCk date=1348552214\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"27889\" data-ipsquote-contentclass=\"forums_Topic
Jo de nallam  a kep az homalyos kicsit :D
 
Ha kinagyítod a négyzet jobb alsó sarkában van 1 ikon, arra kattintva kiszélesíti.  ;)
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: N@rbirock - 2012. Szeptember 25. - 18:00:15
Nekem valamiért nem jó a nagyítás.
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: Fade - 2012. Szeptember 25. - 18:59:51
Az egyetlen baj, hogy a ZCMD szép, jó, és gyors, de ahogy a téma nevében is benne van \"ALAPOKKAL\", tehát az alap parancs írást kéne megtanítani az újoncoknak, a ZCMD, és egyéb parancsfeldolgozó használata meg lehetne egy extra téma.
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: doboka98 - 2012. Szeptember 25. - 19:12:33
Fade, annál jobb ha a ZCMD -t tanulják meg alapul, mostmár mindenki azt használja.
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: Depi - 2012. Szeptember 25. - 19:13:21
Idézetet írta: Fade date=1348592391\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"27889\" data-ipsquote-contentclass=\"forums_Topic
Az egyetlen baj, hogy a ZCMD szép, jó, és gyors, de ahogy a téma nevében is benne van \"ALAPOKKAL\", tehát az alap parancs írást kéne megtanítani az újoncoknak, a ZCMD, és egyéb parancsfeldolgozó használata meg lehetne egy extra téma.
 
Igazából már a ZCMD-t is lehetne tekinteni alapnak, kevés ember használja már a régi verziót.
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: Gentleman - 2012. Szeptember 25. - 19:50:00
Én személy szerint a ZCMD parancsfeldolgozót részesítem elõnyben. Egyszerûbb és átláthatóbb, nem tudok indokot felhozni, hogy miért elõnyösebb a régi logikai elv.
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: T0ny - 2012. Szeptember 25. - 20:02:31
Én is jobban kedvelem a ZCMD-t :)
A Második lecke kb. mikorra várható?:)
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: Gentleman - 2012. Szeptember 25. - 20:04:38
Idézetet írta: T0ny date=1348596151\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"27889\" data-ipsquote-contentclass=\"forums_Topic
Én is jobban kedvelem a ZCMD-t :)
A Második lecke kb. mikorra várható?:)
 
Hétfõ, Kedd, Szerda húzós nap sajnos a sulimban. Csütörtök nyugisabb én akkor tudnék összedobni egy másodikat. Utána egyeztetni is kellene a szerkesztõkkel, hogy mit mi hol hogyan.
Remélem megértitek. Az iskola kicsit fontosabb de szeretnék heti 1-2 leckét kitenni.
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: ChrisJ - 2012. Szeptember 26. - 16:07:39
a ZCMD-s link rossz. a feladatot ettõlfüggetlenül megcsináltam, de a ZCMD nincs meg.
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: tonyo - 2012. Szeptember 26. - 17:09:21
Nálam semmi gond a linkkel.
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: Gentleman - 2012. Szeptember 26. - 17:34:07
Holnap összedobom a következõt utána már meglesz az alap így a \'tanárok\' is tudnak majd dolgozni :)
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: Olie - 2012. Szeptember 26. - 18:33:35
Idézetet írta: Gentleman date=1348673647\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"27889\" data-ipsquote-contentclass=\"forums_Topic
Holnap összedobom a következõt utána már meglesz az alap így a \'tanárok\' is tudnak majd dolgozni :)
 
Végül kik kerültek be \"tanárnak\"? :)
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: ChuckNorris - 2012. Szeptember 26. - 19:11:00
Idézetet írta: Olie date=1348677215\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"27889\" data-ipsquote-contentclass=\"forums_Topic


Holnap összedobom a következõt utána már meglesz az alap így a \'tanárok\' is tudnak majd dolgozni :)
 
Végül kik kerültek be \"tanárnak\"? :)
 
[/quote]
Hát például te :P
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: Kovacs_Bela - 2012. Szeptember 26. - 22:01:33
Jó lett grat!
Cím: Elsõ lecke - Bevezetés a projectbe és ismerkedés az alapokkal
Írta: Fade - 2012. Szeptember 29. - 10:03:30
Idézetet írta: doboka98 date=1348593153\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"27889\" data-ipsquote-contentclass=\"forums_Topic
Fade, annál jobb ha a ZCMD -t tanulják meg alapul, mostmár mindenki azt használja.
 
Attól eltekintve az strcmp, és egyéb karakterlánc kezelõ függvényt is meg kell tanulni elõbb-utóbb, és erre a legjobb példa az alap parancsírás.