FANDOM


Pocetak Edit

Dole je kod koji cemo na pocetku koristiti u skripti:

#include <a_samp>
 
main()
{
	print("Zdravo svete!");
	return 1;
}

Krenucemo od objasnjenja prve linije.

Include datoteke Edit

#include <a_samp>

Ovo ucitava kod iz foldera i datoteke pawno/include/a_samp.inc u vasu skriptu. Neki od najcescih su:

#include <core>
#include <float>
#include <string>
#include <file>
#include <time>
#include <datagram>
#include <a_players>
#include <a_vehicles>
#include <a_objects>
#include <a_sampdb>

Calls Edit

Sledeci deo ima dve vrste 'poziva'. main()je 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) Edit

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 Edit

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

Pozivanje Edit

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 Edit

#include <a_samp>
 
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:

#include <a_samp>
 
main() return MyFunction();
 
MyFunction()
{
	print("Zdravo svete!");
	return 1;
}

takodje mozete koristi i ovakvu funkciju:

#include <a_samp>
 
main()
{
	MyFunction();
	return 1;
}
 
MyFunction()
{
	print("Zdravo svete!");
	return 1;
}

Varijable Edit

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 Edit

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

new myVariable;

Kreirali smo varijablu cija je vrednost 0.

Postavljanje varijable Edit

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;

</pre>myVariable /= 4;</pre>

Arrays (nizovi) Edit

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 Edit

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 Edit

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 Edit

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 Edit

To je jedan specijalan karakter definisan kao:

'\'

ili:

"\">/pre>

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

Tagovi Edit

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 Edit

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;
    printf("%d", j);
    j++;
}

I izbaci print:

1
1
1

Staticna lokalna varijabla Edit

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 Edit

Slicne su obicnim globalnim samo se mogu koristi na mestu naznacenom u skripti: FIle1:

static
    gsMyVar = 4;
 
MyFunc()
{
    printf("%d", gsMyVar);
}
 
#include "File2"

File2:

MyFunc2()
{
    // This is wrong as gsMyVar doesn't exist here
    printf("%d", gsMyVar);
}

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.