Osnove

Pocetak
Dole je kod koji cemo na pocetku koristiti u skripti: main {	print("Zdravo svete!"); return 1; }
 * 1) include 

Krenucemo od objasnjenja prve linije.

Include datoteke

 * 1) include 

Ovo ucitava kod iz foldera i datoteke pawno/include/a_samp.inc u vasu skriptu. Neki od najcescih su:
 * 1) include
 * 2) include
 * 3) include
 * 4) include
 * 5) include
 * 6) include
 * 7) include 
 * 8) include 
 * 9) include 
 * 10) include 

Calls
Sledeci deo ima dve vrste 'poziva'. mainje funkcija u kojoj pisete kod i moze se koristiti bilo gde. print(string[]) je funkcija koja salje obavestenja iz mesta koriscenja (Zdravo svete!). Na kraju ono sto se ucitava je print "Hello World!" (bez "") u server conzoli na kraju. return 1; Vraca vrednost i ne moze se koristiti ni pojavljivati u daljem delu skripte.

Statements (izjave)
Print i Return linije imaju ';' (polu-kolonu) te ovo samo prikazuje kraj reda. Mnogi ljudi koriste odvajajuce linije na istoj liniji, to je ispravno, ali cini kod neurednim, te ponekad ljudi koriste i vrtcaste zagrade{,} primer: main { print("Hello World!"); return 1; } Ovde } zagrada nije na pravom mestu te je potpuno nepotrebna te ce Vam se na toj liniji pokazati error. Zasto nije pozeljno pisati u jednom redu? Kada bismo sklonili zagrade, {}, funkcija ne bi bila pravilano otvorena/zatvorena, te bi to izbacilo error.

Funkcije
Funkcije su zapravo sitni kodovi koji postoje da bi pozivali drugi deo koda da se pokrene.

Pozivanje
print("Zdravo svete!"); Kao sto je vec opisano, ovo poziva funkciju print (koja je definisana u a_samp.inc) i govori joj da ispise Zdravo svete u konzoli. Ne mora se uvek koristi print, ovakva funkcija moze korisiti i sledece parametre: printa; printaa; printab; printac; itd...

Funkcija moze imati koliko god vi parametara zelite: printf("Zdravo svete!", 1, 2, 3, 4, 5, 6);

Definisanje
main {	return MyFunction; } MyFunction {	print("Zdravo svete!"); return 1; } To samo radi tačno isto kao izvorni kod, ali je uređen drugačije. Kada se pozove main na podizanju moda on automatski poziva funkciju MyFunction. Ova funkcija salje sve navedene poruke. Vraca vrednost na 0 return 1; Posto je sada MyFunction definisana mozemo je koristi u skripti kao: main return MyFunction; MyFunction {	print("Zdravo svete!"); return 1; }
 * 1) include 
 * 1) include 

takodje mozete koristi i ovakvu funkciju: main {	MyFunction; return 1; } MyFunction {	print("Zdravo svete!"); return 1; }
 * 1) include 

Varijable
Varijabla je zapravo kolekcija memorije. To je mesto gde se podaci pisu i citaju. Po PAWNO programu varijabla treba da prenese vrednost sa -2147483648 na 2147483647.

Kreiranje varijable
Obicno, na vrehu skripte, dodajemo stereotipan tekst kome menjamo drugi parametar. Pisemo sledece:

new myVariable; Kreirali smo varijablu cija je vrednost 0.

Postavljanje varijable
new myVariable = 7;

Sada dajemo vrednost varijabli (koristimo je): new myVariable = 7; printf("%d", myVariable);

Ponovo koristimo varijablu za server: new myVariable = 7; printf("%d", myVariable); myVariable = 8; printf("%d", myVariable); Ovakv kod ispisace 7, promenice vrednost na 8 i ispisace sve vrednosti na ekranu. myVariable = myVariable + 4;

varijabla opada za 4: myVariable -= 4; za deljenje i mnozenje: myVariable *= 4; myVariable /= 4;

Arrays (nizovi)
Array (niz) je mesto u kome mozete skladisti ogroman broj podataka koristenih u skripti. Dobar primer za ovo je MAX_PLAYERS array, koji prebrojava broj online i maximalan broj igraca u isto vreme. new myArray[5]; Ovaj kod namesta 5 slotova za MyArray new myVariable = 5, myArray[myVariable];

Pristup
Postavljanje vrednosti: new myArray[5]; myArray[2] = 7; Ovo ce definisati 5 slotova a dati 2 slotu vrednost 7. 0, 0, 7, 0, 0

nalazi se 5 slotova, ali nema slota broj 5? NE POSTOJI SLOT 5 TO IZAZIVA CRASH SREVERA! new myArray[5]; myArray[5] = 7; Zasto izaziva crash? myArray[2] = myArray[2] + 1; myArray[2] += 1; myArray[2]++;

Primeri
Kao sto je vec receno gore imamo array MAX_PLAYERS. Ovaj broj moze imati veliki kapacite (i do 10000) i samim tim definicija u arreyu se povecava. Primer za to je: new gPlayer0, gPlayer1, gPlayer2, gPlayer3; SetPlayerValue(playerid, value) {	switch(playerid) {	   case 0: gPlayer0 = value; case 1: gPlayer1 = value; case 2: gPlayer2 = value; case 3: gPlayer3 = value; } }

Kontrolni deo ovoga je na vrhu skripte, definisan pomocu 'nizova' new gPlayers[MAX_PLAYERS]; SetPlayerValue(playerid, value) {	gPlayers[playerid] = value; }

String
String je specijalna vrsta niza ili varijable sa posebnom vrstom teksta ili funkcije. Karakteri su enkodirani pomocu ASCII te je slovo 'A' stavljeno na broj 65. Stringovi u pawno su uvek definisani na 0 te se njigova vrednost uvek vraca. To je takozvani 'NULL termination character'. Primer za to je: new myString[16] = "Zdravi svete!";

Ovaj string definise fuknciju dugu 15 karaktera sa stringom Zdravo svete!. Za to ce niz izgledati ovako: 104 101 108 108 111 0 x x x x x x x x x x

String moze biti koristen i kroz normalan niz: new myString[16] = "Zdravo svete!"; myString[1] = 97;

Izlazni karakter
Ovo je radio Tsipras '\' ili: "\">/pre>

Dobicemo compile error zato sto \ ne vraca ni ne definise neku vrednost: new myString[4] = "\"";

Tagovi
Tag je dodatno mesto u skripti koje definise varijablu koja moze biti koristena u skripti: Primeri za to su: new Float:a = 6.0; A taj float je definisan kao: native SetGravity(Float:gravity); To znaci da bi kod izlgedao kao: SetGravity(6.0); new Float:fGrav = 5.0; SetGravity(fGrav);

Lokalna varijabla
To je varijabla koja se moze koristiti samo u odredjenom prostoru u skripti tacnije sve do vracanja vrednosti. MyFunc {   new var1 = 4; printf("%d", var1); {       // var1 nema vise uticaja new var2 = 8; printf("%d %d", var1, var2); }   // var2 nema vise uticaja }

Lokalne varijable se uvek resetuju: for (new i = 0; i < 3; i++) {   new j = 1;0 printf("%d", j); j++; } I izbaci print: 1 1 1

Staticna lokalna varijabla
Mesto u skripti vraca staru vrendost: MyFunc {   static var1 = 4; printf("%d", var1); {        //nema vise efekta static var2 = 8; printf("%d %d", var1, var2); }   // var2 nema vise efekta }

Globalna Static Varijabla
Slicne su obicnim globalnim samo se mogu koristi na mestu naznacenom u skripti: FIle1: static gsMyVar = 4; MyFunc {   printf("%d", gsMyVar); } File2: MyFunc2 {   // This is wrong as gsMyVar doesn't exist here printf("%d", gsMyVar); }
 * 1) include "File2"