Pozdrav svima, kao sto vidite po naslavu u ovom tutorijalu cu vam pokazati kako da napravite GreenZone za vas server.
Sistem nece biti dinamican ali u principu sve sto treba uradit je spremit ovo u bazu/fajl i ucitat pri pokretanju GM i eto dinamican je hehe.
Potrebno: STREAMER
STREAMER DOKUMENTACIJA & DL:
https://github.com/samp-incognito/samp-streamer-plugin/wiki
https://github.com/samp-incognito/samp-streamer-plugin/releases
Na vrhu skripte:
[pawn]
#define MAX_GZ (3)
new arGZ[MAX_GZ]; //kreiramo array za dinamicne area-e
new inGZ[MAX_PLAYERS char]; //kreiramo varijablu za provjeru da li je igrac u GZ
static const Float:greenzones[3][4] =
{
{1422.2109, -1584.8275, 1568.6517, -1879.5209}, // ja sam koristio sve iste koordinate samo zbog tutoriala
{1422.2109, -1584.8275, 1568.6517, -1879.5209}, // koordinate unosite u formatu minx, miny, maxx, maxy
{1422.2109, -1584.8275, 1568.6517, -1879.5209}
};
[/pawn]
OnGameModeInit:
[pawn]
for(new i = 0; i < MAX_GZ; i++)
{
arGZ
= CreateDynamicRectangle(greenzones- , greenzones[1], greenzones[2], greenzones[3]); //kreiramo dinamicne area-a ( pravougaonike u formatu minx, miny, maxx, maxy )
}
[/pawn]
OnPlayerEnterDynamicArea
[pawn]
if(arGZ[0] <= areaid <= arGZ[MAX_GZ-1]) //provjera da li je igrac usao u nasu greenzonu
{
inGZ{playerid} = 1; //ukoliko je usao postavljamo vrijednost varijable na "1"
}
[/pawn]
OnPlayerLeaveDynamicArea
[pawn]
if(arGZ[0] <= areaid <= arGZ[MAX_GZ-1])//provjera da li je igrac izasao iz GreenZone
{
inGZ{playerid} = 0;//ukoliko je izasao postavljamo vrijednost varijable na "0"
}
[/pawn]
OnPlayerDisconnect
[pawn]
inGZ{playerid} = 0; //resetovanje varijable na 0 kada se igrac diskonektuje
[/pawn]
OnPlayerKeyStateChange
[pawn]
if((newkeys & KEY_FIRE) || ((newkeys & 128) && (oldkeys & 128) && (newkeys & KEY_SECONDARY_ATTACK))) //provjera da li je igrac pritisnuo lijevi klik ili desni klik + f
{
if(inGZ{playerid} && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) return SCM(playerid, -1, !"INFO: Nasilje je zabrenjeno u GreenZonama."); //ukoliko je igrac pritisnuo lijevi klik ili desni klik + f i ukoliko mu je varijabla inGZ na "1" znaci da je u greenzoni u tom slucaju saljemo mu obavijest, vi mozete da mu oduzmete oruzije ili nesto slicno.
}
[/pawn]
To bi bilo to, nista posebno, a veoma efikasno i potrebno svakom serveru. Pogotovo na lokacijama poslova, opstina, spawna itd...
Lep tutorijal, ali izgleda da ovde sta god objavio korisno svi ce gledati nesto starije tamo i nekorisno..