Friday - 18. 09. 2026 •  Ucitavanje...
Link #1 Link #2 Link #3 Link #4 Link #5

!!

Registruj se i otključaj pun sadržaj

Kao gost imaš ograničen pristup forumu.
Registracijom dobijaš pristup svim temama, možeš pisati poruke, učestvovati u diskusijama i biti dio naše zajednice.

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - V01D

Pages: 1 [2] 3
16
Maps / Re: Mapa RP Seta
« on: November 26, 2024, 09:09:21 PM »
Nije lose

17
Maps / Re: Zapadni BalkanBet
« on: November 26, 2024, 09:08:54 PM »
Lose texture, fali jos detaljaaaa

18
Filterscipts | Includes | Plugins / Re: Winter Update
« on: November 26, 2024, 09:08:15 PM »
You are not allowed to view links. Register or Login
"nece napraviti neku DRASTICNU razliku", U PRAVU SI


OnPlayerUpdate

This callback is called, on average, 30 times per second, per player; only use it when you know what it's meant for (or more importantly what it's NOT meant for). The frequency with which this callback is called for each player varies, depending on what the player is doing. Driving or shooting will trigger a lot more updates than idling.


Da, nece napraviti bog zna koliko drasticnu razliku, radite SAMP server, ne pravite sistem za NASU....

19
OFFTOPIC / Re: #1 -> Glavni Razgovor
« on: November 26, 2024, 08:09:37 PM »
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
selam, sta ima

Sve po starom, moja rano :'(
Sve po starom, dan za danom
Deo duše odlomiš tu i tamo

Apel da se doda radio na forum

20
Filterscipts | Includes | Plugins / Re: Winter Update
« on: November 26, 2024, 07:55:17 PM »
Okej par stvari koje mi nemaju smisla :

Promenljive za Jelke :

Code: You are not allowed to view links. Register or Login
Text3D:label[sizeof(JelkaInfo)], NapravljenaJelka;
Nemaju potrebu da postoje xD

Label nigde konkretno ne koristis, ne brises, ne pomeras tako da nema neke potrebe da ga cuvas u promenljivu

Sto se objekta tice, imalo bi smisla da si koristi NapravljenaJelka[MAX_JELKI], tako da taj kreirani objekat cuvas u promenljivu, posto je globalna promenljiva, gubice staru vrednost i ostace samo ona koja je zadnja ucitana ili kreirana. U prevodu jedini nacin da obrises objekat je da obrises fajl. Pritom ovako kako je napravljeno ne mozes da napravis da funkcionise brisanje preko komande kako treba, zato sto gubis vrednost objekta.

Cuvanje je takodje problem, zato sto ce dobiti ID objekta koji si kreirao.

Pravilnije bi bilo da se odradi ovako :

Code: You are not allowed to view links. Register or Login
stock getNextTreeID(const len) { //uzima prvi slobodan ID za kreiranje jelke
    new id = (-1);
    for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
       provjera = ( loop+1 );
       format( Data_, ( sizeof Data_ ), JelkeFile, provjera );
       if(!fexist(Data_)) {
          id = ( provjera );
          break; } }
    return ( id );
}

YCMD:kreirajjelku( playerid, params[], help ) {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage( playerid, -1, "{0070D0}VaporG - {FFFFFF}Morate biti ulogovani na rcon." ); {
        new Float:X,Float:Y,Float:Z,Float:A;
        GetPlayerPos(playerid, X,Y,Z);
        GetPlayerFacingAngle(playerid, A);

        new id = getNextTreeID(MAX_JELKI); //uzimamo id
        if(id == -1) return SendClientMessage(playerid, -1, "Imas max broj kreiranih jelki!"); //ukoliko vrati -1 znaci da je svaki fajl zauzet

        NapravljenaJelka[id] = CreateObject(19076, X-1,Y,Z-1.5, 0.0, 0.0, A, 300.0); //kreiramo objekat ali stavljamo da bude array(niz), tako da mozemo objekat da koristimo
        label[id] = Create3DTextLabel("{0070D0}[ VaporG JELKA ]\n{0070D0}- {FFFFFF}SRECNA NOVA 2019. GODINA {0070D0}-", 0xFFFFFFFF, X,Y,Z+1, 10.0, 0, 0); //kreiramo label na osnovu ID-a
        JelkaInfo[ id ][ jX ] = X; //postavljamo promenljive
        JelkaInfo[ id ][ jY ] = Y;
        JelkaInfo[ id ][ jZ ] = Z-1.5;
        JelkaInfo[ id ][ jA ] = A;
        save_xmastree( id ); //cuvamo drvo u prvi slobodan ID
    }
    return 1;
}

Uglavnom, cuvamo ID kako treba, tako da ce krenuti od 1 pa nadalje, takodje stavljamo NapravljenaJelka da bude niz, koji je vezan za ID drveta ( fajl )

Sada ce ti cuvati jelka_1.ini pa jelka_2.ini pa jelka_3.ini itd do 500...

Sada mozes da radis i brisanje kako treba, ucitavanje itd...

Dalje...

Ovo :

Code: You are not allowed to view links. Register or Login
task dah_system[2500]() {
    for( new i = 0; i < MAX_PLAYERS; i++ ) {
        if( IsPlayerConnected( i )) {
            if( GetPlayerInterior( i ) == 0 && GetPlayerVirtualWorld( i ) == 0 ) {
                RemovePlayerAttachedObject( i, OBJECT_SLOT_FREE );
                PlayerEffect[ i ] = SetPlayerAttachedObject( i, OBJECT_SLOT_FREE, 18696, 2,0.0,0.1,-0.2,-25.5000,0.0,0.0,0.10,0.3,0.15);
}
}
}
return 1;
}

Tutnuti u :

Code: You are not allowed to view links. Register or Login
ptask dah_system[2500](i) {
   
    if( IsPlayerConnected( i )) {
        if( GetPlayerInterior( i ) == 0 && GetPlayerVirtualWorld( i ) == 0 ) {
            RemovePlayerAttachedObject( i, OBJECT_SLOT_FREE );
            PlayerEffect[ i ] = SetPlayerAttachedObject( i, OBJECT_SLOT_FREE, 18696, 2,0.0,0.1,-0.2,-25.5000,0.0,0.0,0.10,0.3,0.15);
}
}
return 1;
}

Kada vec postoji xDD

Za jelke umesto CreateObject koristiti dinamicne objekta, takodje bilo bi dobro dodati EditObject ( da ga moze pomeriti pri kreiranju )

Ovo :

Code: You are not allowed to view links. Register or Login
public OnPlayerUpdate( playerid ) {
    if( Snow[ playerid ] ) {
  if( GetPlayerInterior( playerid ) == 0 && GetPlayerVirtualWorld( playerid ) == 0 ) {
new Float:Pos[ 3 ];
        GetPlayerCameraPos( playerid, Pos[ 0 ], Pos[ 1 ], Pos[ 2 ] );
        MovePlayerObject( playerid, SnowObject[ playerid ], Pos[ 0 ], Pos[ 1 ], Pos[ 2 ]-2.5, 4000.0 );
  }
}
return true;
}

Takodje moze u ptask mada manje vise isti kurac, nece napraviti neku DRASTICNU razliku

Uglavnom ima par stvari koje treba doraditi, ali ako si ti sve pravio, nije lose. Poraditi na ucitavanju i cuvanju ovih jelki. Ne znam da li si testao da ucitas u nekom malo vecem modu ovu FS? Po ovome kako jeste jelke ne bi trebalo da ucitavanju kako treba

Sve u svemu, pohvale za trud

21
OFFTOPIC / Re: #1 -> Glavni Razgovor
« on: November 26, 2024, 07:35:06 PM »
You are not allowed to view links. Register or Login
selam, sta ima

Sve po starom, moja rano :'(

22
SA-MP Gamemode & Skripte / Re: Balkan Night
« on: November 25, 2024, 06:05:24 PM »
Dobro jeee :D

23
SA-MP Gamemode & Skripte / Re: Balkan Premium
« on: November 25, 2024, 06:04:27 PM »
Nije lose

24
SA-MP Gamemode & Skripte / Re: Miami House
« on: November 25, 2024, 06:03:53 PM »
Oh no

25
SA-MP Gamemode & Skripte / Re: Mexico Gaming
« on: November 25, 2024, 06:02:50 PM »
Meh onako

26
SA-MP Gamemode & Skripte / Re: Elitez Gaming v1.0.0
« on: November 25, 2024, 06:02:06 PM »
Cool

27
SAMP Tutorijali / [TUTORIAL] Samp Voice
« on: November 24, 2024, 09:05:14 PM »
Samp Voice Tutorial

E ovako, vec dosta vas je sigurno culo za sampvoice, ubacivanje voice chat-a itd..
Odlucio sam da napravim ovaj tutorial opet sa razlogom na ima nesto malo detaljnije objasnjeno na
ovom forumu, pa da sami mozete iskoristiti za nesto svoje.


Pre svega, sta je samp voice?

- Samp voice je plugin i include koji omogucava implementaciju voice chat-a tacnije pricanja unutar samp igre.
- Za samp voice su potrebni server-side ( plugin i include ) i client-side ( fajl koji igrac skida i ubacuje u gta sa )


Za sta se koristi?

- Pricanje ingame, ali njegove mogucnosti su mnogo sire od toga, pored raznih voice kanala koje igraci mogu koristiti,
i dobra stvar ovoga je sto se moze staviti na skoro bilo koju tipku koja postoji na tastaturi


Gde se moze skinuti sampvoice?

You are not allowed to view links. Register or Login

Na github linku mozete naci server-side i client-side, kao i source kod client-side dela koji mozete build-ati i napraviti
neku svoju modifikaciju.


Kako da ubacim sampvoice u svoj server?

- Pre svega, u sampvoice pluginu je moguce napraviti 2 vrste stream-a, jedan globalni, drugi lokalni. Globalni nije vezan za lokaciju ili bilo sta slicno,
dok lokalni moze biti vezan za objekat, lokaciju, igraca ili slicno..

- Jako prosto, bice objasnjeno u kodu ispod
- Sada cu sa slicnim koracima objasniti i drugi nacin upotrebe ( oba slucaja cu staviti u jedan kod  i detaljno objasniti unutar koda )
- Na primer, u ovom slucaju zelimo da svaka banda i mafija na serveru imaju poseban voice chat izmedju sebe
- I takodje da mogu da se cuju globalno, bilo gde
- Ovo moze da sluzi kao radio za PD, radio za bande/mafije, moze da se koristi za razne stvari

Code: You are not allowed to view links. Register or Login
#include <sampvoice> //Prvo negde pri vrhu skripte include-amo sampvoice.inc

#define nekiKey                 0x58 //Ovo na sluzi za define KEY-a koji ce igrac pritisnuti za voice chat
#define orgKey                  0x42 //Ovo ce nam sluziti kao define za KEY koji ce igras pritiskati za org chat

//Izecemo i u obzir jednu promenljivu kada su u pitanju dinamicne organizacije ( sto vecina modova koristi )
#define MAX_ORG                 15 //Na primer

//I takodje uzecemo u obzir clana organizacije kao PlayerInfo[playerid][xClan]

// < ! >

new SV_LSTREAM:lstream[MAX_PLAYERS] = { SV_NULL, ... }; //Deklarisemo lokalni stream gde cemo da ubacujemo igrace koji su u blizini
new SV_GSTREAM:orgStream[MAX_ORG] = { SV_NULL, ... }; //Deklarisemo globalni stream, gde ubacujemo clanove iste organizacije


public SV_VOID:OnPlayerActivationKeyPress(SV_UINT:playerid, SV_UINT:keyid) //Ovo je callback koji se poziva kada igrac pritisne activation key koji smo dodali
{
    if(keyid == nekiKey && lstream[playerid]) SvAttachSpeakerToStream(lstream[playerid], playerid);
    if(keyid == orgKey && orgStream[PlayerInfo[playerid][xClan]]) SvAttachSpeakerToStream(orgStream[PlayerInfo[playerid][xClan]], playerid); //Ako igrac pritisne orgKey, ubacuje ga u voice sa ostalim clanovima svoje organizacije
}

public SV_VOID:OnPlayerActivationKeyRelease(SV_UINT:playerid, SV_UINT:keyid) //Callback gada prestane da ga drzi
{
    if(keyid == nekiKey && lstream[playerid]) SvDetachSpeakerFromStream(lstream[playerid], playerid);
    if(keyid == orgKey && orgStream[PlayerInfo[playerid][xClan]]) SvDetachSpeakerToStream(orgStream[PlayerInfo[playerid][xClan]], playerid); //slican princip kao gore
}

// < ! >

public OnPlayerConnect(playerid) { //Kada se igrac connectuje na server

        if(!SvGetVersion(playerid)) SendClientMessage(playerid, -1, "Nemate validnu verziju SAMPA ( R1 ili R3 ) ili nemate voice chat!"); //Proverava verziju sampa i da li igrac ima voice chat
    else if(!SvHasMicro(playerid)) SendClientMessage(playerid, -1, "Nemate mikrofon za voice chat!"); //provera da li ima mikrofon
    else if((lstream[playerid] = SvCreateDLStreamAtPlayer(40.0, SV_INFINITY, playerid, 0xff0000ff, "L"))) { // red color

        SendClientMessage(playerid, -1, "Voice Chat uspesno ucitan, koristite tipku 'X' za pricanje!");
        SvAddKey(playerid, nekiKey);
        SvAddKey(playerid, orgKey); //Ovde dodajemo key-eve koji ce se koristiti

        //Ukoliko ispuni sve uslove, ubacuje ga u lokalni chat i dodaje key koji smo naveli gore
    }

        return 1;
}

public OnGameModeInit() {

        //Pri ucitavanju organizaciju dodajte sledece ( to mozete naci preko labela ili pickup-a za org u OnGameModeInit )
        orgStream[orgID] = SvCreateGStream(0xffff0000, "ORG CHAT");

        return 1;
}

public OnPlayerDisconnect(playerid) { //kada igrac izadje sa servera

        if(lstream[playerid]) { //Ako se nalazi u lokalnom stream-u
        SvDeleteStream(lstream[playerid]); //Izbacuje ga iz voice chat-a
        lstream[playerid] = SV_NULL;
    }

        return 1;
}

// < ! >
// Sada moramo napraviti nesto cime ce igrac organizacije zapravo da udje u taj stream, moze to da se radi
// Pri connectu ukoliko je igrac clan organizacije, da ga ubaci u taj stream
// I takodje kada zapravo ucitamo njegov account
if(PlayerInfo[playerid][xClan] >= 1) {

        SvAttachListenerToStream(orgStream[PlayerInfo[playerid][xClan]], playerid); //Ubacuje ga u stream organizacije koje je clan
}

Kako promeniti neki key koji zelimo da koristimo?

- KEY-eve mozemo da menjamo koristeci ASCII tabelu i hex vrednosti odredjenih karaktera ( You are not allowed to view links. Register or Login )
- Sada, sve sto treba da uradimo je da izvucemo hexadecimalnu vrednost karaktera koji zelimo da koristimo
- Primer : Ako zelimo da koristimo slovo 'P' za pokretanje voice chat-a ( You are not allowed to view links. Register or Login )
- Isto vazi za svaki karakter, kada smo nasli odgovarajuci broj, dodamo 0x ispred njega i stavimo umesto naseg define-a za key

Zakljucak?

- Interesantan include i plugin koji nije za svakoga. Onaj koji zeli da koristi nadam se da ce pomocu ovoga uspeti da napravi nesto novo i zanimljivo koristeci plugin, posto ima ogroman broj mogucnosti koji koristimo samo kao lokalni chat.. Na GitHub linku imaju prikazane funkcije i za sta zapravo sluze. Sada je ostalo samo na vama na pustite masti na volju i odradimo nesto zanimljivo sa ovim :D <3

28
SAMP Tutorijali / [TUTORIAL] Ternary Operator
« on: November 24, 2024, 09:01:43 PM »
TERNARY OPERATOR UPOTREBA

Pravim ovaj tutorial zato sto ljudi idalje ne znaju zasto se koristi niti da uopste postoji ternary operator. Trudio sam se da objasnim najbanalnije moguce i najosnovnije tako da kada pocetnici vide da neko ovo koriste, ne pomisle da je neka crna magija u pitanju..

Code: You are not allowed to view links. Register or Login
new bool:isPlayerHelper[MAX_PLAYERS]; //Uzmimo za primer jednu bool promenljivu

//Negde u skripti joj dodelimo vrednost true ili false
isPlayerHelper[playerid] = true;


//Zatim primer ternary operatora mozemo videti u par primera :

CMD:jesamlihelper(playerid) { //Banalan primer u komandi

   SendClientMessage(playerid, -1, isPlayerHelper[playerid] ? "Jeste Helper" : "Nije helper");

   //Uzimamo primer SendClientMessage koja ima 3 argumenta

   // playerid -> ID igraca kome saljemo poruku
   // boja -> U ovom slucaju -1 ( BELA )
   // string -> Poruka koja se salje

   return 1;
}

E sada, u primeru iznad, zamenili smo argument string iz SendClientMessage funckije i iskoristili ternary operator u istoj

U prevodu proverili smo vrednost promenljive isPlayerHelper[playerid] i na osnovu vrednosti iste poslali odredjenu poruku

Ternary Operator je zapravo kraca verzija if/else provere, i moze dosta da skrati posao

Kako bi ovaj primer izgledao sa IF/ELSE ?

Code: You are not allowed to view links. Register or Login
CMD:jesamlihelper(playerid) { //Banalan primer u komandi

   if(isPlayerHelper[playerid]) {
      SendClientMessage(playerid, -1, "Jeste Helper");
   }
   else {
      SendClientMessage(playerid, -1, "Nije helper");
   }

   return 1;
}


Sta se zapravo desava?

Ternary operator funkcionise tako sto prvo postavimo odredjeni uslov, a zatim sta ce se desiti ako je uslov ispunjen ili nije ispunjen


Code: You are not allowed to view links. Register or Login
USLOV ? akoJeIspunjen : akoNijeIspunjen

Takodje, ternary operator se moze koristiti u raznim slucajevima, takodje jos jedan banalniji primer sa brojevima :

Code: You are not allowed to view links. Register or Login
new a = 3,
   b = 5;

new rezultat;

//Sada cemo da proverimo da li su a i b jednaki, ako jesu pomozicemo ih, ako nisu sabracemo ih i staviti vrednost u promenljivu rezultat

rezultat = (a == b) ? a * b : a + b;

//Ovde bi promenljiva rezultat imala vrednost 8

Nadam se da je sada malo jasnije cemu ovo sve sluzi, zasto se koristi i koliko je zapravo korisno za upotrebu

Ukoliko nekome bilo sta iz ovog tutoriala nije jasno, slobodno moze da pita

29
SAMP Tutorijali / [TUTORIAL] Y_TIMERS
« on: November 24, 2024, 08:56:03 PM »
Y_TIMERS
Posto vidim da ljudi idalje, iz bog zna kog razloga, koriste SetTimer i SetTimerEx, odlucio sam napraviti cool tutorial na temu Y_Timers koji su definitivno laksa i bolja varijanta..

NAMENJENO POCETNICIMA

Ovaj include se nalazi unutar YSI!

Pa da pocnemo..

POZIVANJE TIMERA

Pre svega, kako pozivamo najobcniji timer
Za pozivanje koristimo "defer"

Code: You are not allowed to view links. Register or Login
defer NekiTimer(vrednosti koje zelimo preneti);
Ovo deluje zbunjujuce, ali sada cu pokazati upotrebu u tipa robu banke..

Code: You are not allowed to view links. Register or Login
CMD:robbanka(playerid, params[])
{
defer BankaRobTimer(playerid);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, 0x1874CDFF, "Zapoceo si pljacku banke!Ukoliko izadjes, pljacka ce se prekinuti!");
return 1;
}

Iznad se nalazi najprostija komanda za rob banke.. Pre svega, defer sluzi kao i SetTimer, pritom kod njega ne moramo da definisemo timer, vec samo da ga "upotrebimo"
Unutar
Code: You are not allowed to view links. Register or Login
( ) mozemo videti "playerid", znaci da prenosimo varijablu playerid, takodje mozemo preneti bilo koju varijablu i da pritom moze da se iskoristi unutar samog timera..

Kako oznaciti kraj timera??

Code: You are not allowed to view links. Register or Login
timer BankaRobTimer[90000](playerid)
{
        TogglePlayerControllable(playerid, 1);
        SendClientMessage(playerid, 0x1874CDFF, "Uspesno si opljackao banku!");
        GivePlayerMoney(playerid, 90000);
}

Za to koristimo "timer", prosto, brzo, lako i jednostavno :D

Sta ovo sve znaci??

timer BankaRobTimer[90000](playerid) ->
                      timer -> Naznacavamo da je timer, da ne objasnjavam previse xD
                      BankaRobTimer -> Ovde navodimo ime timera
                      [90000] -> Broj u milisekundama nakon koga ce se timer zavrsiti
                      (playerid) -> varijabla koju smo preneli u timer

Sve ovo unutar timera :

Code: You are not allowed to view links. Register or Login
TogglePlayerControllable(playerid, 1);
        SendClientMessage(playerid, 0x1874CDFF, "Uspesno si opljackao banku!");
        GivePlayerMoney(playerid, 90000);

Je zapravo ono sto se desi kada se timer zavrsi..

PTASK

Ovo je zanimljiva stvar, za sta sluzi PTASK?

PTASK je timer koji vrti za svakog igraca posebno, nesto nalik onoga sto vidjate na mnogo modova za PlayerTD-ove, banka, plata..

To je jedan nacin na koji moze da se koristi, on se ponavlja neogranicen broj puta ukoliko se ne zaustavi..

Code: You are not allowed to view links. Register or Login
ptask TimerIgrac[1000](playerid)
{
    new banka[10], zlato[10], plata[10], level[5];
    format(banka, 10, "%d$", PlayerInfo[playerid][pBankaNovac]);
    PlayerTextDrawSetString(playerid,BankaTD[playerid], banka);
    format(zlato, 10, "%dg", PlayerInfo[playerid][pBankaZlato]);
    PlayerTextDrawSetString(playerid, ZlatoTD[playerid], zlato);
    format(plata, 10, "%d$", PlayerInfo[playerid][pPlata]);
    PlayerTextDrawSetString(playerid, PlataTD[playerid], plata);
    format(level, 5, "%d", PlayerInfo[playerid][pLevel]);
    PlayerTextDrawSetString(playerid, LevelTD[playerid], level);
}

Ovo je jedan primer, na svaku jednu sekundu da se igracu "update-uju" tdovi za platu, zlato, level i novac u banci.. Ukoliko samo odradite ovo, timer ce sam da se automatski pokrene kada igrac udje na server, tako da ne morate da brinete gde ce te ga staviti itd itd..

TASK

Task je ista stvar kao i PTASK, ponavljajuci timer koji vrti za sve igrace.. Ovo bi mozda biti neke server poruke ili tako nesto, zavisi sta preferirate.

Takodje se koristi isto kao i PTASK, samo bez varijabli

Code: You are not allowed to view links. Register or Login
task ImeTimera[vreme]()
STOPIRANJE TIMERA

Ukoliko ipak zelite da zaustavite odredjeni timer, ide malo na cudniji nacin :/
Code: You are not allowed to view links. Register or Login
new Timer:NovoImeTimera; //Prvo cemo napraviti novu varijablu NovoImeTimera

NovoImeTimera = defer NasTimer(playerid); //Zatim cemo pokrenuti timer

stop NasTimer; //Koristimo "stop" da bi ga zaustavili kada to nama odgovara

Takodje, NasTimer koristimo kao i obican timer, pozivamo ga, zatim koristimo "timer" da bi oznacili sta ce se desiti kada se zavrsi
"Stop" koristimo kada zelimo da timer prestane a pritom ne dodje do kraja, tako da ukoliko ga "stopiramo", ono sto smo stavili da se desi u "timer" se nece ni desiti..

ZAKLJUCAK

Po meni, jako korisna stvar, pogotovo za pocetnike, takodje je mnogo "optimizovanija" nego SetTimer i SetTimerEx..
Svako ima svoje misljenje..
Prvi mi je tutorial, tako da prihvatam svaku kritiku.. Tutorial je takodje namenjen pocetnicima, tako da sam se potrudio pojasnim uz razne primere, sto bolje mogu.
Hvala na citanju <3 ;D

30
TextDraws / Re: [TEXTDRAW] Battlepass
« on: November 24, 2024, 08:41:15 PM »
Odlicno

Pages: 1 [2] 3

Vrati se na pocetak
SMF 2.0.19 | SMF © 2021, Simple Machines
Page created in 0.047 seconds with 17 queries.
ZBS © 2011 - 2024, Zapadni Balkan SA:MP
Weiss X 10.2 © 2014, Jade Works Studio
Footer background belongs to GTA Forums
SimplePortal 2.3.7 © 2008-2026, SimplePortal