Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Correlli poslato Mart 10, 2010, 20:26:26 POSLE PODNE

Naslov: Korisne skripte i kodovi
Poruka od: Correlli poslato Mart 10, 2010, 20:26:26 POSLE PODNE
U ovom topiku možete staviti vaše korisne skripte i kodove (ne komande).
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Correlli poslato Mart 10, 2010, 20:26:33 POSLE PODNE
Sa ovom funkcijom možete "prisiliti" bilo kojeg igraća na korištenje komande ako ta komanda postoji u gamemodu ili filterskripti:
Funkcija:
stock ForcePlayerCommand(playerid, command[]) // Emilio "Correlli" Lovrić
{
    if(!IsPlayerConnected(playerid)) return false;
    new
            playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername, sizeof(playername));
    CallRemoteFunctionEx("OnPlayerCommandText", "is", playerid, "/%s", command);
    printf("Forcing player command: Player: \"%s (%i)\", Command: \"/%s\"", playername, playerid, command);
    return true;
}


Primjer:
public OnPlayerCommandText(playerid, cmdtext[])
{
    // ova će komanda pozvati komandu /command
    if(strcmp("/mycmd", cmdtext, true) == 0) return ForcePlayerCommand(playerid, "command");

    // ovo je test komanda koja će izbaciti obićnu poruku "testMsg."
    if(strcmp("/command", cmdtext, true) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "testMsg.");
    return false;
}


/* ime komande morate koristiti bez "/"
ovo je primjer ako želimo pozvati komandu /kick koja ima parametre: ime, razlog */
ForcePlayerCommand(playerid, "kick Marko psovanje");


Trebat će vam CallRemoteFunctionEx funkcija:
// ovaj varijabl će vam trebati za CallRemoteFunctionEx funkciju.
new
        FALSE = 0;


CallRemoteFunctionEx funkcija:
#if !defined CallRemoteFunctionEx
    #define CallRemoteFunctionEx(%0,%1,%2,%3,%4) \  // Emilio "Correlli" Lovrić
    do \
    { \
        new \
                string[64]; \
        format(string, sizeof(string), %3, %4); \
        CallRemoteFunction(%0, %1, %2, string); \
    } \
    while(FALSE)
#endif




Sa ovom funkcijom možete promijeniti ime vašeg servera:
Funkcija:
stock SetServerName(name[])  // Emilio "Correlli" Lovrić
{
    SendRconCommandEx("hostname %s", name);
    printf("Setting server name to: \"%s\"", name);
    return true;
}


Primjer:
SetServerName("SA-MP v0.3a server");


Sa ovom funkcijom možete promijeniti text gamemoda koji je trenutno na vašem serveru:
Funkcija:
stock SetServerGamemode(gamemode[])  // Emilio "Correlli" Lovrić
{
    SendRconCommandEx("gamemodetext %s", gamemode);
    printf("Setting server gamemode name to: \"%s\"", gamemode);
    return true;
}


Primjer:
SetServerGamemode("San Andreas Role-Play");


Sa ovom funkcijom možete promijeniti ime mape vašeg servera:
Funkcija:
stock SetServerMap(map[])  // Emilio "Correlli" Lovrić
{
    SendRconCommandEx("mapname %s", map);
    printf("Setting server map name to: \"%s\"", map);
    return true;
}


Primjer:
SetServerMap("Liberty City");


Za funkcije SetServerName, SetServerGamemode & SetServerMap trebat će vam SendRconCommandEx funkcija:
/* ovaj varijabl će vam trebati za SendRconCommandEx funkciju.
UPOZORENJE: ako već imate ovaj varijabl definiran od prije (CallRemoteFunctionEx funkcija), onda nema potrebe da ga stavljate još jednom. */
new
        FALSE = 0;


SendRconCommandEx funkcija:
#if !defined SendRconCommandEx
    #define SendRconCommandEx(%0,%1) \  // Emilio "Correlli" Lovrić
    do \
    { \
        new \
                string[64]; \
        if(strlen(%0) > 0) \
        { \
            format(string, sizeof(string), %0, %1); \
            SendRconCommand(string); \
        } \
    } \
    while(FALSE)
#endif
Naslov: Odg: Korisne skripte i kodovi
Poruka od: JoeBullet v2.1 poslato Mart 10, 2010, 21:07:15 POSLE PODNE
Eto napokon je ponovno otvorena, inace mislim da se nasla metoda(pomocu AMX opcode) da ne trebas macro stavljati da moze primiti x parametara te iste parametre koristi na format. Imas to tamo kod Y_Less optimization topic, al svejedno i ovo ce raditi(a bit ce i sigurno razumljivije nego opcodovi  :D). Evo jedna za pocetak:


#define is_even(%1) !((%1) & 1)
#define is_odd(%1)  !is_even(%1)


Zasto bi trebali broj bitwise AND-ati da bismo vidjeli jeli paran tj. neparan, razlog:
svi parni brojevi imaju bit koji je prvi s desne strane(tzv. LSB) vrijednosti 0, a neparni 1.
Inace se koristi (x % 2), ali to je sporije od ovoga  ;)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [BM]Daka poslato Mart 10, 2010, 21:27:15 POSLE PODNE
Svidja mi se ovo za tjeranje igraca na neku komandu. Sinula mi je ideja.  :P
Naslov: Odg: Korisne skripte i kodovi
Poruka od: JoeBullet v2.1 poslato Maj 02, 2010, 21:47:30 POSLE PODNE
Eto posto nitko nije postao vec otprilike 2 mjeseca moram ja ovaj topic malo ozivit(nadam se da ce bit aktivan kao i prije):

/**
*  Orginal algorithm:
*      --------------------------
*      str[x] += (3^x) * (x % 15)
*      --------------------------
*          Objasnjenje:
*          # x => trenutna pozicija u stringu
*          # Dodaje (3^x) * (x % 15) na slovo koje je trenutno na poziciji x u stringu(zato nam treba charset)
*          # Takoder se moze vidjeti jako vazna slabost ovdje: ulazna duzina stringa ce biti jednaka izlaznoj duzini stringa
*/
stock Decrypt(str[])
{
new
    result[128];
for(new i = 0, j = strlen(str), z = 0; i < j; i++)
{
    for(new x = 0; charset[x] < sizeof(charset); x++)
    {
new
target = charset[x] + (((3^i) * (i % 15)));
if(((target > 0xFF) ? target-256 : target) == str[i])
{
result[z++] = charset[x];
}
    }
}
return result;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: JoeBullet v2.1 poslato Jun 19, 2010, 20:14:54 POSLE PODNE
[quote author=Luka P. link=topic=4245.msg69131#msg69131 date=1276697770]
Nisam znao jel ima nativna funkcija za ovo, pa sam napravio svoju  :P

...

Ali recimo meni je lakše naći ID kada koristim GivePlayerWeapon, to koristim za /givegun [player] [ime oruzja] [municija]

[/quote]
to se zove lose skriptanje, bolji nacin je:

new const
    g_WeaponTable[46][] =
    {
        "ime prvog oruzja",
        "ime drugog oruzja",
       // i tako sve
    }
stock GetWeaponIDByName(const name[])
{
    new
        id = -1;
    for(new i = 0; i < sizeof(g_WeaponTable); i++)
    {
        if(!strcmp(name, g_WeaponTable[i]))
        {
            id = i;
        }
    }
    return id;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: LuKsA poslato Avgust 01, 2010, 12:09:53 POSLE PODNE
stock GetPlayerFirstName(playerid)
{
new namestring[2][MAX_PLAYER_NAME];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
split(name, namestring, '_');
return namestring[0];
}


stock GetPlayerLastName(playerid)
{
new namestring[2][MAX_PLAYER_NAME];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
split(name, namestring, '_');
return namestring[1];
}


stock GetPlayerNameEx(playerid)//Brise "_" u imenu igraca
{
    new string[24];
    GetPlayerName(playerid,string,24);
    new str[24];
    strmid(str,string,0,strlen(string),24);
    for(new i = 0; i < MAX_PLAYER_NAME; i++)
    {
        if (str[i] == '_') str[i] = ' ';
    }
    return str;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: LordShigi poslato Avgust 14, 2010, 12:42:54 POSLE PODNE
stock SendMessageToAdmins(bool:client,sender,color,msg[])
{
   foreach (Player, i)
{
    if(IsPlayerAdmin(i))
    {
      new string[128];
                 if(client == true)
         {
                new pName[MAX_PLAYER_NAME+1];
                GetPlayerName(i,pName,sizeof(pName));
format(string,sizeof(string),"%s(%d): %s",pName,sender,msg);
SendClientMessage(i,color,string);
}
else
{
        format(string,sizeof(string),"%s",msg);
SendClientMessage(i,color,string);
}
}
}
}


Korištenje: SendMessageToAdmins(bool:client,sender,color,msg[]);
bool:Client - ako je true onda će se adminima poslati msg(poruka) s imenom i IDom sendera, a ako je na false onda ce se poslati samo msg(poruka)
sender - id igraca koji je poslao poruku, koristi se samo ako je Client na true
color - boja u kojoj ce tekst biti poslan adminima
msg[] - poruka koja se šalje adminima



PRIMJERI:
SendMessageToAdmins(true,playerid,0xF95D5DAA,"Test kod")
rezultat: Ime_Prezime(0): Test kod

SendMessageToAdmins(false,0,0xF95D5DAA,"Test kod")
rezultat: Test kod



NAPOMENA: Za ovu funkciju je potreban foreach include koji mozete skinuti OVDJE (http://forum.sa-mp.com/showthread.php?t=92679) .
Naslov: Odg: Korisne skripte i kodovi
Poruka od: nastoe poslato Septembar 04, 2010, 14:08:38 POSLE PODNE

stock DajHelte(playerid,Float:Helti)
{
    new
    Float:Helti;
    GetPlayerHealth( playerid,Helti );
    SetPlayerHealth( playerid, Helti + Helti );
}


UzmiHelte(playerid,- Helti);

stock UzmiHelte( playerid,Float:Helti )
{
    new
    Float:Helti;
    GetPlayerHealth( playerid,Helti );
    SetPlayerHealth( playerid, Helti - Helti );
}


primjer....

cmd:mojakomanda(playerid,params[])
{
    UzmiHelte(playerid,50);
    SCM(playerid,siva,"Odluzelo ti se 50 helti..");
    return 1;
}


ImeIgraca(id igraca);

stock ImeIgraca(playerid)
{
   new
   Ime[ MAX_PLAYER_NAME ];
   GetPlayerName( playerid,Ime, MAX_PLAYER_NAME );
   return Ime;
}


primjer...

format(string, sizeof string,"Igracevo ime je %s",ImeIgraca(id));
SCM(playerid,gf,string);


ClearChat(); - 50 SCM

stock ClearChat()
{
   for( new i = 0; i < 50; i++ )
   {
     SendClientMessageToAll( siva, " " );
   }
   return 1;
}


DodajScore(playerid, +iznos);

stock DodajScore( playerid, valuta )
{
    SetPlayerScore (playerid,  GetPlayerScore( playerid ) + Valuta );
    return 1;
}


Evo jedne macro funkcije koje koristim za ekonomiju u serveru, zelio bi se zahvaliti Don Correlli-u koji mi je pomogao...

new
VALUE = 5;
#define returnValue( %0 ) %0 * VALUE
stock SetNewValue( valuta ) return VALUE = valuta;

// Primjer primjene.....

SetNewValue( 8 );
printf("%i", returnValue( 6 )); // vrati 48 ( prije toga stavimo VALUE kao 8, znači 8 * 6 = 48. )


JeUvodi(playerid);


stock JeUvodi(playerid)
{
new
Float:X,Float:Y,Float:doljegore;
GetPlayerPos(playerid,X,Y,doljegore);
if ((IsPlayerInArea(playerid, 2032.1371, 1841.2656, 1703.1653, 1467.1099) && doljegore <= 9.0484)
|| (IsPlayerInArea(playerid, 2109.0725, 2065.8232, 1962.5355, 10.8547) && doljegore <= 10.0792)
|| (IsPlayerInArea(playerid, -492.5810, -1424.7122, 2836.8284, 2001.8235) && doljegore <= 41.06)
  || (IsPlayerInArea(playerid, -2675.1492, -2762.1792, -413.3973, -514.3894) && doljegore <= 4.24)
  || (IsPlayerInArea(playerid, -453.9256, -825.7167, -1869.9600, -2072.8215) && doljegore <= 5.72)
  || (IsPlayerInArea(playerid, 1281.0251, 1202.2368, -2346.7451, -2414.4492) && doljegore <= 9.3145)
  || (IsPlayerInArea(playerid, 2012.6154, 1928.9028, -1178.6207, -1221.4043) && doljegore <= 18.45)
  || (IsPlayerInArea(playerid, 2326.4858, 2295.7471, -1400.2797, -1431.1266) && doljegore <= 22.615)
  || (IsPlayerInArea(playerid, 2550.0454, 2513.7588, 1583.3751, 1553.0753) && doljegore <= 9.4171)
  || (IsPlayerInArea(playerid, 1102.3634, 1087.3705, -663.1653, -682.5446) && doljegore <= 112.45)
  || (IsPlayerInArea(playerid, 1287.7906, 1270.4369, -801.3882, -810.0527) && doljegore <= 87.123)
  || (doljegore < 1.5))
{
return 1;
}
return 0;
}


stock IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy) // BY Y_Less
{
   new Float:x, Float:y, Float:z;
   GetPlayerPos(playerid, x, y, z);
   if (x > minx && x < maxx && y > miny && y < maxy) return 1;
   return 0;
}


SetPlayerPosEx(playerid, X,Y,Z,Int,VW);

stock SetPlayerPosEx(playerid,Float:X,Float:Y,Float:Z,interior,VirtualWorld)
{
   new
   vozilo = GetPlayerVehicleID(playerid);
   if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
   {
     SetPlayerVirtualWorld(playerid,VirtualWorld);
     SetPlayerPos(playerid, X, Y, Z);
     SetVehiclePos(car, X, Y, Z);
     PutPlayerInVehicle(playerid, vozilo, 0);
     SetPlayerInterior(playerid,interior);
   }
   else
   {
     SetPlayerPos(playerid, X, Y, Z);
   }
   return 1;
}


if(JeBicikl(carid))

stock JeBicikl(carid)
{
   if( GetVehicleModel( carid ) == 481 || GetVehicleModel( carid ) == 509 || GetVehicleModel( carid ) == 510 )
   {
       return 1;
   }
   return 0;
}


IgracIgracu(playerid,playerid2);

stock IgracIgracu(playerid, playerid2)
{
    new
    Float: X, Float: Y, Float Z;
    GetPlayerPos(playerid,X,Y,Z);
    SetPlayerPos(playerid2,X+2,Y,Z);
    return 1;
}

Naslov: Odg: Korisne skripte i kodovi
Poruka od: JoeBullet v2.1 poslato Septembar 04, 2010, 17:40:23 POSLE PODNE
1. de facto u programiranju/skriptanju u vezi ime varijabla, funkcija, i svega sta nije tekst je da bude pisano na Engleskom jer je to internacionalni jezik.

2.

stock DodajScore( playerid, valuta ) 

     SetPlayerScore (playerid,  GetPlayerScore( playerid ) + Valuta ); 
     return 1; 


ovdje ce izbacit error jer si koristio "Valuta"(veliko 'V') umjesto "valuta"

3. Ovdje se moze maknut overhead pozivanja funkcije jer je trivialna

stock JeBicikl(carid) 

    if( GetVehicleModel( carid ) == 481 || GetVehicleModel( carid ) == 509 || GetVehicleModel( carid ) == 510 ) 
    { 
        return 1; 
    } 
    return 0; 
}

bolje:

#define IsBike(%1) (GetVehicleModel(%1) == 481 || GetVehicleModel(%1) == 509 || GetVehicleModel(%1) == 510)


4. Ime funkcije "IgracIgracu" ne govori bas puno, bolje bi ime bilo "SetPlayerPosToPlayer" ili slicno.

5. "JeUvodi" je nesigurna funkcija po tome sto ne mozes tocno pokriti sva podrucja, pa ce nekad vracat krivi rezultat.

6. funkcija SetPlayerPosEx nema bas logike jer ce napravit sto treba kad je igrac vozac al kad nije onda ce mu samo postavit poziciju, pa eto dobre verzije:

stock SetPlayerPosEx(playerid, Float: x, Float: y, Float: z, interior, virtualWorld)
{
    if(SetPlayerVirtualWorld(playerid, virtualWorld))
    { // player is connected
if(SetPlayerInterior(playerid, interior))
{
        new
        vehicle = GetPlayerVehicleID(playerid);
        if(vehicle)
        {
        return SetVehiclePos(vehicle, x, y, z);
        }
        else
        {
        return SetPlayerPos(playerid, x, y, z);
        }
}
     }
     return 0;
}

nisam testirao al trebala bi radit.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: nastoe poslato Septembar 04, 2010, 18:22:22 POSLE PODNE
Dobro hvala na ispravku velikih slova. Drugo, sta se tice jezika znas i sam da neki neznaju osnove engleskog jezika


A sta se tice SetPlayerPosEx sam planiro al mi se nije dalo dodavati da ako je u vozilu da linka vozilo sa INT i da teleportira i vozilo

Svida mi se ova ideja

#define IsBike(%1) (GetVehicleModel(%1) == 481 || GetVehicleModel(%1) == 509 || GetVehicleModel(%1) == 510)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Septembar 26, 2010, 12:35:53 POSLE PODNE
Evo jedne funkcije, nije nesto al mozete si ubrzati freeze i unfreeze jer znam kad ja radim onda uvjek trazim toggleplayercont. jer nikako da zapamtim kako se tocno pise ^^

stock Freeze(playerid,bool:zaleden)
{
if(zaleden == true)
{
// FREEZE
TogglePlayerControllable(playerid,0);
}
else if(zaleden == false)
{
   // UNFREEZE
   TogglePlayerControllable(playerid,1);
}
return false;
}



Znaci primjena, ako nekog zelite freezati onda stavite Freeze(playerid,1); a za unfreeze Freeze(playerid,0);

Freeze(playerid,1); // ZALEDEN (FREEZE)
Freeze(playerid,0); // ODLEDEN (UNFREEZE)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: JoeBullet v2.1 poslato Septembar 26, 2010, 23:47:41 POSLE PODNE
Citat: Luka P. poslato Septembar 26, 2010, 18:29:02 POSLE PODNE
Citat: taft poslato Septembar 26, 2010, 12:35:53 POSLE PODNE
Evo jedne funkcije, nije nesto al mozete si ubrzati freeze i unfreeze jer znam kad ja radim onda uvjek trazim toggleplayercont. jer nikako da zapamtim kako se tocno pise ^^

stock Freeze(playerid,bool:zaleden)
{
if(zaleden == true)
{
// FREEZE
TogglePlayerControllable(playerid,0);
}
else if(zaleden == false)
{
   // UNFREEZE
   TogglePlayerControllable(playerid,1);
}
return false;
}



Znaci primjena, ako nekog zelite freezati onda stavite Freeze(playerid,1); a za unfreeze Freeze(playerid,0);

Freeze(playerid,1); // ZALEDEN (FREEZE)
Freeze(playerid,0); // ODLEDEN (UNFREEZE)


#define Freeze TogglePlayerControllable

#define Freeze(%1,%2) TogglePlayerControllable((%1), !(%2))

tvoje bi radilo obrnuto, znaci kad netko hoce Freeze(playerid, 1); onda bi ga unfreezao.
evo i funkcije pa mozete koristiti sta hocete(i da pokazem kako lakse napraviti nego sta je onaj taft):

stock Freeze(playerid, bool: freeze)
{
    return TogglePlayerControllable(playerid, !freeze);
}

i btw. @taft; tvoj kod bi uvijek vracao false...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Septembar 29, 2010, 13:35:29 POSLE PODNE
hvala bullet, hvala luka...Samo luka ja sam ubiti htio ovo sta je bullet napravio a to je ovo obrnuto "#define Freeze(%1,%2) TogglePlayerControllable((%1), !(%2))" hvala
Naslov: Odg: Korisne skripte i kodovi
Poruka od: LuKsA poslato Oktobar 06, 2010, 21:30:59 POSLE PODNE
Da malo refresham..

Od garsina:

Detekcija dali je igrac pauzao igru
new LastPlayerUpdate[MAX_PLAYERS];
#define IsPlayerPaused(%1,%2) GetTickCount() > (LastPlayerUpdate[%1] + (%2 * 1000))//vraca pauzirano vrijeme u sekundama
// Primjer
public OnPlayerUpdate(playerid)
{
    LastPlayerUpdate[playerid] = GetTickCount();
    return 1;
}

//U Timeru ili slicno
if(IsPlayerPaused(playerid, 300) && GetPlayerState(playerid) != PLAYER_STATE_SPECTATING)
{
    Kick(playerid);
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Novembar 12, 2010, 18:46:29 POSLE PODNE
Macro funkcija:

formatEx ( playerid , string[] , len ) ;

#define DULJINA_FORMATA 128
#define SCM(%0,%1,%2) SendClientMessage(%2,%1,%0)
#define BOJA 0x00FF14FF

#define formatEx(%0,%1,%2) \
do \
{ \
new \
string[DULJINA_FORMATA]; \
format(string, sizeof string, %1, %2); \
SCM(string, BOJA, %0); \
   } \
  while(false)


by [H]265

S ovom funkcijom si skratite muke...Standardni primjer

new
    string[128]
;
format(string , sizeof string, "neka poruka" len );
SendClientMessage(playerid, nekaBoja, string);


a sa ovom funkcijom ce to ovako izgledati....

formatEx(playerid, "%s" ime );

I TO JE SVE! Evo jedan primjer u praksi

public OnPlayerSpawn(playerid)
{
      new
            ime[24]
      ;
      GetPlayerName(playerid, ime, 24);
      formatEx(playerid, "Spawno si se %s", ime);
      return true;
}


Takoder sam napravio ako trebate format za SVE online igrace

#define DULJINA_FORMATA2 128

#define formatExToAll(%0,%1) \
do \
{ \
new \
string[DULJINA_FORMATA2]; \
format(string, sizeof string, %0, %1); \
ScmToAll(BOJA, string); \
} \
while(false)


formatExToAll(string[] , len );

primjer:

public OnPlayerConnect(playerid)
{
       new
           ime[24]
       ;
       GetPlayerName(playerid, ime, 24);
       formatExToAll("|- %s se prikljucio na server -|" , ime);
       return true;
}


U slucaju da dobite ovakav warning

warning 205: redundant code: constant expression is zero
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.


Onda na vrh stavite

new stock
    bool:FALSE = false;


Eto toliko od mene, nista posebno ali zasto si ne olaksati?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Januar 17, 2011, 21:55:03 POSLE PODNE
Evo jedan REFRESH...

Evo nesto sto moze skratit muke:

#define SendMessage(%0,%1) SendClientMessage(%0,0xFFFFFFFF,%1)

To dodate na vrh...

Znaci kako su dosli ovo novo "embed" boja (npr: {FF0000} - crvena) meni je bilo gl*po pisat:

CitatSendClientMessage(id,COLOR_XXX,"{FF0000}pfdhfgdihgfihd");

COLOR_XXX - Naime, to je samo visak jer sam odma na pocetku dodao {FF0000}...

Tako da s ovim defajnom dodajete poruku ovako:

SendMessage(id,"Text");


Ovo sam samo dodao tako da malo refresham, kasnije cu dodat jos koju ali malo jacu....
I bilo bi lijepo da i vi koju stavite :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: []Flynâ„¢ poslato Januar 30, 2011, 01:55:32 PRE PODNE
Evo za AntiDriveBy :)

Pod public OnPlayerDeath dodajte ovo:

if(killerid != INVALID_PLAYER_ID)
{
if(GetPlayerState(killerid) == 2)
{
        SendClientMessage(killerid, ZELENA, "=====================================================");
SendClientMessage(killerid, CRVENA, "DRIVE BY UBISTVO!");
SendClientMessage(killerid, CRVENA, "TO JE ZABRANJENO | NEMOJ TO RADITI");
SendClientMessage(killerid, ZELENA, "=====================================================");
GetPlayerHealth(playa, shealth);
SetPlayerHealth(playa, shealth-5);
GetPlayerPos(playa, slx, sly, slz);
SetPlayerPos(playa, slx, sly, slz+5);
PlayerPlaySound(playa, 1130, slx, sly, slz+5);
return 1;
}
}


Odmah ispod OnPlayerDeath dodajte sledece:
new playa;
new Float:slx, Float:sly, Float:slz;]

I ako cete koristiti ovakav naziv boje kao ja ,trebate to definirati | Skroz gore kod define-a dodajte ovo:
#define CRVENA 0xAA3333AA
#define ZELENA 0x33AA33AA


Znaci kada igrac ubije igraca iz auta , taj igrac automatski dobija /slap komandu ;D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Correlli poslato Januar 30, 2011, 02:02:05 PRE PODNE
Citat: joXy poslato Januar 30, 2011, 01:55:32 PRE PODNE
if(killerid != 255)
{
   // ...
}


INVALID_PLAYER_ID u 0.3 verziji SA:MP-a je definiran kao 0xFFFF (65535), a ne kao 255 (0.2 verzija). Šta želim reći jest da 255 nije više nevažeći ID ako koristiš 0.3 verziju, zato ti je bolje da koristiš definicije poput INVALID_PLAYER_ID.

I šta će ti uopče funkcija GetPlayerName i sa time i varijabl giveplayer kad ne koristiš toga nigdje?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: []Flynâ„¢ poslato Januar 30, 2011, 02:08:55 PRE PODNE
Hvala na savetu i ispravci :)

Citat: Emilijo L. (Correlli) poslato Januar 30, 2011, 02:02:05 PRE PODNE

I šta će ti uopče funkcija GetPlayerName i sa time i varijabl giveplayer kad ne koristiš toga nigdje?

To sam uzeo iz komande /slap - pa je umaklo  :o
Naslov: Odg: Korisne skripte i kodovi
Poruka od: LordShigi poslato Januar 30, 2011, 12:08:06 POSLE PODNE
To ti je zato jer s novim SA:MP 0.3 dolazi podrska za više od 200 igrača pa je sad 255 pravi ID igraća, sad je on moguć pa su morali promijeniti ovo. Ali bi bilo bolje da koristis INVALID_PLAYER_ID nego 255 ili 65535
Naslov: Odg: Korisne skripte i kodovi
Poruka od: []Flynâ„¢ poslato Januar 30, 2011, 15:00:03 POSLE PODNE
Citat: LordShigi poslato Januar 30, 2011, 12:08:06 POSLE PODNE
To ti je zato jer s novim SA:MP 0.3 dolazi podrska za više od 200 igrača pa je sad 255 pravi ID igraća, sad je on moguć pa su morali promijeniti ovo. Ali bi bilo bolje da koristis INVALID_PLAYER_ID nego 255 ili 65535
Fixano  :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: SlicK poslato Februar 02, 2011, 22:51:02 POSLE PODNE
//uzima igracevu brzinu
stock GetPlayerSpeed(playerid,bool:kmh)
{
  new Float:Vx,Float:Vy,Float:Vz,Float:R;
  if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),Vx,Vy,Vz); else   GetPlayerVelocity(playerid,Vx,Vy,Vz);
  R = floatsqroot(floatabs(floatpower(Vx + Vy + Vz,2)));
  return kmh?floatround(R * 100 * 1.61):floatround(R * 100);
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Februar 03, 2011, 12:10:08 POSLE PODNE
Citat: SlicK poslato Februar 02, 2011, 22:51:02 POSLE PODNE
//uzima igracevu brzinu
stock GetPlayerSpeed(playerid,bool:kmh)
{
  new Float:Vx,Float:Vy,Float:Vz,Float:R;
  if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),Vx,Vy,Vz); else   GetPlayerVelocity(playerid,Vx,Vy,Vz);
  R = floatsqroot(floatabs(floatpower(Vx + Vy + Vz,2)));
  return kmh?floatround(R * 100 * 1.61):floatround(R * 100);
}


Mozes li mi pojasniti ovo
bool:kmh ???
Mislim da ovo nije tvoje... A pise: U ovom topiku možete staviti vaše korisne skripte i kodove (ne komande). ali lepo je sto si stavio
Naslov: Odg: Korisne skripte i kodovi
Poruka od: SlicK poslato Februar 03, 2011, 13:16:42 POSLE PODNE
Citat: eXtreme poslato Februar 03, 2011, 12:10:08 POSLE PODNE
Citat: SlicK poslato Februar 02, 2011, 22:51:02 POSLE PODNE
//uzima igracevu brzinu
stock GetPlayerSpeed(playerid,bool:kmh)
{
  new Float:Vx,Float:Vy,Float:Vz,Float:R;
  if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),Vx,Vy,Vz); else   GetPlayerVelocity(playerid,Vx,Vy,Vz);
  R = floatsqroot(floatabs(floatpower(Vx + Vy + Vz,2)));
  return kmh?floatround(R * 100 * 1.61):floatround(R * 100);
}


Mozes li mi pojasniti ovo
bool:kmh ???
Mislim da ovo nije tvoje... A pise: U ovom topiku možete staviti vaše korisne skripte i kodove (ne komande). ali lepo je sto si stavio
"bool:kmh" znaci ako stavis "true" onda ce ti uzimati po km/h,a ako stavis "false" uzimat ce mp/h
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Andrej Davidovic poslato Februar 03, 2011, 13:17:53 POSLE PODNE
Citat: SlicK poslato Februar 03, 2011, 13:16:42 POSLE PODNE
Citat: eXtreme poslato Februar 03, 2011, 12:10:08 POSLE PODNE
Citat: SlicK poslato Februar 02, 2011, 22:51:02 POSLE PODNE
//uzima igracevu brzinu
stock GetPlayerSpeed(playerid,bool:kmh)
{
  new Float:Vx,Float:Vy,Float:Vz,Float:R;
  if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),Vx,Vy,Vz); else   GetPlayerVelocity(playerid,Vx,Vy,Vz);
  R = floatsqroot(floatabs(floatpower(Vx + Vy + Vz,2)));
  return kmh?floatround(R * 100 * 1.61):floatround(R * 100);
}


Mozes li mi pojasniti ovo
bool:kmh ???
Mislim da ovo nije tvoje... A pise: U ovom topiku možete staviti vaše korisne skripte i kodove (ne komande). ali lepo je sto si stavio
"bool:kmh" znaci ako stavis "true" onda ce ti uzimati po km/h,a ako stavis "false" uzimat ce mp/h

Ne nego on misli da to nije tvoje jer pise kilometers per hour
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Februar 13, 2011, 13:25:22 POSLE PODNE
Citat: Lukaâ,,¢ poslato Februar 13, 2011, 00:01:01 PRE PODNE
Evo napravio sam getstr macro. Isti princip kao getarg, samo što će izvući string u neku var.

#define getstr(%0,%1); { for(new _x=0; _x < sizeof(%1); _x++) { %1[_x] = getarg(%0, _x); } }


Primjer:

stock mojafunkcija(...)
{
       new string[128];
       getstr(6, string);

       printf("argument broj 6 = %s", string);
       return 1;
}


Probao sam neradi  :o


Evo napravio sam nesto za loop sad neznam da li radi  :-\


#define loop(%0,%1) for(new %1; %1 < %0; %1++)


Koriscenje:


loop(MAX_PLAYERS,i)
{
    Ban(i);
}

Veoma lep primer :)

Sta je sad ovo:
Da li vam je lakse loop(MAX_PLAYERS ili MAX_HOUSE itd.,i)
ili
for(new i = 0; i < MAX_PLAYERS ili MAX_HOUSE itd.; i++)

???
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Gotti747 poslato Februar 22, 2011, 12:17:59 POSLE PODNE
Po mnogima su hydre najbolji avioni, najbrzi... jedina mana im je mozda sto mogu da pucaju i tako prave veliki DM na serveru


Citatpublic OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
   if(IsPlayerInAnyVehicle(playerid))
   {
       new
           vid = GetPlayerVehicleID(playerid);
       if(GetVehicleModel(vid) == 520 && newkeys & 1)
           SetPlayerHealth(playerid, 0;
   }
   return 1;
}


Ako ubacite ovo, i puknete hydrom server ce vas automatski ubiti tj postavice vam HP na 0, sto znaci da mozete da uzivate u ogromnoj brzini hydre na vasem serveru, a da ne brinete da ce biti deathmatcha :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: JackAss poslato Februar 22, 2011, 13:02:00 POSLE PODNE
Ovo vam nece raditi.

Jel ti znas sta si uradio i sta za cega koji callback sluzi?

Ovaj public proverava koje si dugme na tastaturi ili na misu kliknuo, a ovde stoji samo ako je igrac u vozilu, sto znaci da ces umreti kad udjes u vozilo, a ne kad pucas iz hidre.

Da bi vam to radilo morate ovo uraditi:


// PRESSED(keys)
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(IsPlayerInAnyVehicle(playerid))
    {
        new
            vid = GetPlayerVehicleID(playerid);
        if(GetVehicleModel(vid) == 520 && PRESSED(KEY_FIRE))
        {
            SetPlayerHealth(playerid, 0;
            SCM(playerid,0xFFFFFFFF,"Nesmes pucati iz Hidre, bices ubijen!");
        }
    }
    return 1;
}[/code
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Februar 22, 2011, 13:21:18 POSLE PODNE
Haha, ove prosle su bezveze, meni je bolja ova( Naime, s ovom skriptom ako neko opali, avion ce se srusiti xD ):

Pod OnPlayerKeyStateChange dodate ovo:

if(IsPlayerInAnyVehicle(playerid))
{
new Float:x, Float:y, Float:z, Float:hp;
new v = GetPlayerVehicleID(playerid);
if(GetVehicleModel(v) == 520)
{
if((newkeys == 4))
{
GetPlayerVelocity(playerid,x,y,z);
SetPlayerVelocity(playerid,x,y,z-20);
GetVehicleHealth(v,hp);
SetVehicleHealth(v,100);
SendClientMessage(playerid,0xff0000,"OBOREN!{FFFFFF} Opucao si te su te radari otkrili i srusili!");
}
}
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Gotti747 poslato Februar 23, 2011, 11:00:16 PRE PODNE
JackAss:


Gresis.

testirao sam, i umres samo kad puknes iz aviona ne kada udjes u njega :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: []Flynâ„¢ poslato Februar 23, 2011, 13:48:31 POSLE PODNE
Citat: Gotti747 poslato Februar 23, 2011, 11:00:16 PRE PODNE
JackAss:


Gresis.

testirao sam, i umres samo kad puknes iz aviona ne kada udjes u njega :)
Pa u tome i jeste fora.. lol
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Vilko poslato Mart 16, 2011, 18:52:22 POSLE PODNE
Evo nesto gdje s jednom define funkcijom mjenjate verziju moda, ugl skuzit cete kako radi :)

Prvo morate definirati "Verzija"


#define Verzija"1.0" //Ovo 1.0 mjenjate verziju gamemoda


Onda recimo pod OnGameModeInit dodate nesto ovakvo


    SendRconCommand("hostname Moj Ruzni server V"Verzija"");


Ovako vam nitko nemoze promjeniti ime servera, jer je to "upucano" u gamemode i ako netko promjeni nakon 5 sec se vrati na staro, usput dodaje se ovo "VERZIJA"
Na kraju to vam izadje ovako

Ime servera: Moj Ruzni server V 1.0


SetGameModeText("LoL "Verzija"");


Evo onaj text "Mode" sto pise u SAMP klijentu


Text( playerid, "~w~Dobrodosli na Moj rzni server~n~~g~~h~V "Verzija"",6) && (CreateInfo(playerid));

(ovako sam ja sebi napravio sam, vi se snadjite :) )

I sad ce vam na pocetku izaci Dobrodosli na Moj ruzni server V1.0
Naslov: Odg: Korisne skripte i kodovi
Poruka od: poznaticovik poslato Mart 19, 2011, 15:29:06 POSLE PODNE
Ovo je korisna komanda (naravno tko nema u GM makar većina ima) Clearchat - ovo je dobro pogotovo za neke nove koji neznaju da ovo postoji :)

1. NaÄ'ite callback
public OnPlayerCommandText(playerid, cmdtext[])

2. Ispod njega dodajte sljedeću komandu
if(strcmp(cmd, "/cls", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 1)
{
for(new i = 0; i <= 200; i++)
{
SendClientMessageToAll(COLOR_RED,"         ");
}
GetPlayerName(playerid, sendername, sizeof(sendername));
SendClientMessageToAll(COLOR_LIGHTGREEN, "");
format(string, sizeof(string), "Admin %s je očistio chat!", sendername);
SendClientMessageToAll(COLOR_LIGHTGREEN, string);
return 1; }
}


I evo još neka za početnike kada vam onako sporo trči lik kao curica stavite ovaj kod da bi vam trčao normalno tj. poznatije kao "CJ trčanje"

NaÄ'ite callback
public OnGameModeInit()

I ispod njega dodajte
UsePlayerPedAnims();
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Nxidza poslato Mart 19, 2011, 15:41:45 POSLE PODNE
Citat: Hutch Dano poslato Mart 19, 2011, 15:29:06 POSLE PODNE
Ovo je korisna komanda (naravno tko nema u GM makar većina ima) Clearchat - ovo je dobro pogotovo za neke nove koji neznaju da ovo postoji :)

1. NaÄ'ite callback
public OnPlayerCommandText(playerid, cmdtext[])

2. Ispod njega dodajte sljedeću komandu
if(strcmp(cmd, "/cls", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 1)
{
for(new i = 0; i <= 200; i++)
{
SendClientMessageToAll(COLOR_RED,"         ");
}
GetPlayerName(playerid, sendername, sizeof(sendername));
SendClientMessageToAll(COLOR_LIGHTGREEN, "");
format(string, sizeof(string), "Admin %s je očistio chat!", sendername);
SendClientMessageToAll(COLOR_LIGHTGREEN, string);
return 1; }
}


I evo još neka za početnike kada vam onako sporo trči lik kao curica stavite ovaj kod da bi vam trčao normalno tj. poznatije kao "CJ trčanje"

NaÄ'ite callback
public OnGameModeInit()

I ispod njega dodajte
UsePlayerPedAnims();


Svejedno mogao si koristiti posle pAdmin


SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");


SendClientMessageToAll salje poruku svima na serveru u ovom slucaju praznu tako da ce ocistiti chat ...:P
Naslov: Odg: Korisne skripte i kodovi
Poruka od: poznaticovik poslato Mart 19, 2011, 15:45:08 POSLE PODNE
CitatSvejedno mogao si koristiti posle pAdmin


SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");
SendClientMessageToAll(COLOR_GREY," ");


SendClientMessageToAll salje poruku svima na serveru u ovom slucaju praznu tako da ce ocistiti chat ...:P

Ne kužim , hoćeš reć da moj kod nevalja?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: LuKsA poslato Mart 19, 2011, 16:33:12 POSLE PODNE
@[CE]Don_Nxidza, nemozes pricat nista kad je bolje od tebe napravio i efikasnije..
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Vilko poslato Mart 20, 2011, 15:32:49 POSLE PODNE
Zar nije jednostavnije napravit ovako nesto


#define ClearChat(%1,%2) for(new c; c < %2; c++) SendClientMessage(%1,0xFFFFFFAA,"   ")



CMD:brisemdupe(playerid, params[])
{
ClearChat(playerid, 15);
return 1;  
}  
Naslov: Odg: Korisne skripte i kodovi
Poruka od: poznaticovik poslato Mart 20, 2011, 15:35:41 POSLE PODNE
Citat: Vilko | ♦ ♣ ♥ ♠ » poslato Mart 20, 2011, 15:32:49 POSLE PODNE
Zar nije jednostavnije napravit ovako nesto


#define ClearChat(%1,%2) for(new c; c < %2; c++) SendClientMessage(%1,0xFFFFFFAA,"   ")



CMD:brisemdupe(playerid, params[])
{
ClearChat(playerid, 15);
return 1;  
}  


Pa dobro , ja sam sebi složio onako. Kao da je meni bitno , glavno da komanda radi za admine i da briše s učinkovitošću.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Vilko poslato Mart 20, 2011, 16:17:35 POSLE PODNE
Citat: Hutch Dano poslato Mart 20, 2011, 15:35:41 POSLE PODNE
Citat: Vilko | ♦ ♣ ♥ ♠ » poslato Mart 20, 2011, 15:32:49 POSLE PODNE
Zar nije jednostavnije napravit ovako nesto


#define ClearChat(%1,%2) for(new c; c < %2; c++) SendClientMessage(%1,0xFFFFFFAA,"   ")



CMD:brisemdupe(playerid, params[])
{
ClearChat(playerid, 15);
return 1; 



Pa dobro , ja sam sebi složio onako. Kao da je meni bitno , glavno da komanda radi za admine i da briše s učinkovitošću.

Pa dobro ja ti samo govorim brzi i jednostavniji nacin!
Naslov: Odg: Korisne skripte i kodovi
Poruka od: cristiane poslato Mart 20, 2011, 22:03:29 POSLE PODNE
Izbrisani bespotrebni postovi sljedeći put dijelim bannove.
Opomena za:joXy,Hutch Dano,eXtreme.
Ovdje se samo postaju korisne skripte/kodovi nema rasprava i svaÄ'e.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: black_dota poslato April 04, 2011, 10:59:54 PRE PODNE
stock Freeze(playerid,on=0)
{
switch(on)
{
case 0: TogglePlayerControllable(playerid,0);
case 1: TogglePlayerControllable(playerid,1);
}
}


Sa 0 se unfreezuje, sa 1 freezuje

Source - http://wiki.sa-mp.com/wiki/Stocks
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato April 04, 2011, 15:25:27 POSLE PODNE
Citat: Luka P. poslato April 04, 2011, 14:49:39 POSLE PODNE
Gl.upost tko god da je to pisao, jer se to može napraviti puno jednostavnije i brže.

#define Freeze(%0,%1) TogglePlayerControllable((%0),(!(%1)))

Upravu si... Ima nekoliko stranica iza isto ovo... I ovo je puno brze i efikasnije  :-\
Naslov: Odg: Korisne skripte i kodovi
Poruka od: bake_pg poslato April 04, 2011, 15:47:19 POSLE PODNE
a Å¡ta Fali TogglePlayerControllable?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [TG:RP]$--L84S--$ poslato April 04, 2011, 16:48:44 POSLE PODNE
Citat: bake_pg poslato April 04, 2011, 15:47:19 POSLE PODNE
a Å¡ta Fali TogglePlayerControllable?
Nefali nista ali je onako bolje i brze  ???
Naslov: Odg: Korisne skripte i kodovi
Poruka od: LuKsA poslato April 04, 2011, 16:58:10 POSLE PODNE
Citat: $--L84S--$ poslato April 04, 2011, 16:48:44 POSLE PODNE
Citat: bake_pg poslato April 04, 2011, 15:47:19 POSLE PODNE
a Å¡ta Fali TogglePlayerControllable?
Nefali nista ali je onako bolje i brze  ???

Nije brze, ali je bolje, tj. bolje je za korisnika da nemora pisati vise..
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato April 04, 2011, 22:22:19 POSLE PODNE
stock NovaPozicija(playerid,bool:WithVehicle,Float:x,Float:y,Float:z,Float:rot) //stock SetPlayerPosEx(playerid,bool:WithVehicle,Float:x,Float:y,Float:z,Float:rot)
{
     //by BloodMaster
if(WithVehicle == true && IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new bu = GetPlayerVehicleID(playerid);
SetVehiclePos(bu,x,y,z);
SetVehicleZAngle(bu,rot);
PutPlayerInVehicle(playerid,bu,0);
return 1;
}
else
{
SetPlayerPos(playerid,x,y,z);
SetPlayerFacingAngle(playerid,rot);
return 1;
}
return 1;
}


Evo da razjasnim:

playerid - Id Igraca koji se teleporta
WithVehicle - Ukoliko je igrac u vozilu, dali ce se i to vozilo portati (true = hoce, false = nece)
x,y,z - Koordinate porta
rot - Rotacija

NPR:


NovaPozicija(playerid,true,5000.56,1005.55,111.5,90);

Ako nije jasno, pitajte na PM pa cu razjasnit ovdje....
Naslov: Odg: Korisne skripte i kodovi
Poruka od: black_dota poslato April 05, 2011, 12:10:07 POSLE PODNE
Citat: Luka P. poslato April 04, 2011, 14:49:39 POSLE PODNE
Gl.upost tko god da je to pisao, jer se to može napraviti puno jednostavnije i brže.

#define Freeze(%0,%1) TogglePlayerControllable((%0),(!(%1)))

Pa moze i onako
Naslov: Odg: Korisne skripte i kodovi
Poruka od: LuKsA poslato April 05, 2011, 15:48:56 POSLE PODNE
Citat: Luka P. poslato April 04, 2011, 22:07:23 POSLE PODNE
Pa baš i nije to, to je obrnuta funkcija od TogglePlayerControllable. Kada bi željeli da imamo kraće za napisati, onda bi samo koristili:

#define Freeze TogglePlayerControllable



Nisi me skuzio izgleda, bolje je za korisnika i sve, ALI je losije optimizirano, tj. naravno da je bolja default funkcija (ne-editana bi se reklo) nego definat za drugu funkciju. Ne mislim da je losije optimizirano u stilu da stavis string sa 1024 celija, nego jednostavno da je malo losije optimizirano.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato April 11, 2011, 17:25:41 POSLE PODNE
Evo jos jedna od mene:

stock SendClientMessageInRangeOfPoint(str[],boja,radius,Float:x,Float:y,Float:z)
{
//by BloodMaster
new players = GetMaxPlayers();
for(new i=0; i<players; i++)
{
if(IsPlayerInRangeOfPoint(i,radius,x,y,z) SendClientMessage(i,boja,str);
}
return 1;
}


Naime, ova funkcija ce poslati poruku svima koju su na odredjenoj koordinati...

str[] - Sto ce pisati
boja - Boja texta
radius - do koje udaljenosti od xyz ce se slati poruka
x,y,z - Koordinate

Evo primjer:

SendClientMessageInRangeOfPoint("Dobar dan, vi ste dosli na poziciju",COLOR_WHITE,5,1115.5,541.44,43.515);

ps- Ovo sam ja bubno koordinate, vi stavite svoje i da, onaj stock dodajete na kraj moda :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato April 11, 2011, 21:54:20 POSLE PODNE
Imam jedno pitanje za tebe...
Gde si pokupio ovaj mutavi str[]
Znam da moze tako al svaka tvoja korisna ima ovo str[], bilo bi logicnije text[]
To moze da zbuni mnoge...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato April 11, 2011, 22:47:50 POSLE PODNE
Skracenica od string...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato April 11, 2011, 22:54:15 POSLE PODNE
Ovo sam vec negde video ProxDetectorEx (http://forum.sa-mp.com/showpost.php?p=1044953&postcount=1634)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato April 13, 2011, 20:20:47 POSLE PODNE
Evo nesto kao /me komanda

Prvo morate imati ovo:

stock SendClientMessageInRangeOfPoint(str[],boja,radius,Float:x,Float:y,Float:z)
{
//by BloodMaster
new players = GetMaxPlayers();
for(new i=0; i<players i++)
{
if(IsPlayerInRangeOfPoint(i,radius,x,y,z) SendClientMessage(i,boja,str);
}
return 1;
}



A zatim ovo:

stock PlayerDoing(playerid,text[]/*Pusa eXtreme*/)
{
//by BloodMaster
if(!IsPlayerConnected(playerid)) return 1;
new ime[20],string[128],Float:x,Float:y,Float:z;
GetPlayerName(playerid,ime,20);
format(string,sizeof string,"* %s %s",ime,text);
GetPlayerPos(playerid,x,y,z);
SendClientMessageInRangeOfPoint(string,C623CF,15,x,y,z);
return 1;
}


Evo jedan primjer:


PlayerDoing(playerid,"ulazi u vozilo.");  //To npr dodate u OnPlayerEnterVehicle

i u igri ce pisati ovako:

*Netko_Netkic ulazi u vozilo.

Nece naravno pisati netko netkic vec ime koje taj igrac koristi... Kul, ha?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato April 13, 2011, 20:47:04 POSLE PODNE
Citat: Luka P. poslato April 13, 2011, 20:42:28 POSLE PODNE
Brže je, ne da mi se sada testirati, ali je očito da je brže kada ne pozivaš funkciju u svakoj iteraciji for-loopa.

Istina, uopce nisam obracao paznju. Nemoras ni testat, tako je.

Hvala ti
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato April 23, 2011, 22:57:36 POSLE PODNE
Evo jedna jednostavna skripta koju sam sada napravio. Za loto :)


#include "a_samp"
#include "foreach"

#define ScmToAll SendClientMessageToAll
#define zuta 0xFFFF00FF

// NAVIGACIJA
#define LOTO_SAT        18 // 18 sati, popodne > [ 0 - 24 ]
#define LOTO_MINUTA     0 // minuta > [ 0 - 59 ]
#define LOTO_SEC        0 // sekunda > [ 0 - 59 ]
#define MAX_DOBITAK     15000000 // MAXIMALNO MOGUCE DOBIT, $15,000,000

public OnGameModeInit()
{
   SetTimer("Timer",1000,1);
return true;
}
forward Timer();
public Timer()
{
new
Sati,
Minute,
Sec,
string[128]
    ;
gettime(Sati,Minute,Sec);
foreach(Player,i)
{
   if(Sati == LOTO_SAT && Minute == LOTO_MINUTA && Sec == LOTO_SEC)
   {
   SetPVarInt(i,"LotoID",random(MAX_PLAYERS));
   if(IsPlayerConnected(GetPVarInt(i,"LotoID")))
   {
  OnPlayerWinLoto();
   }
   else
   {
  format(string, sizeof string,"LOTO: Danasnji izvuceni ID je '%d'. Nitko nije osvojio loto.",GetPVarInt(i,"LotoID"));
  ScmToAll(zuta,string);
   }
   }
}
return true;
}

stock OnPlayerWinLoto()
{
new
  string[128]
   ;
foreach(Player,i)
{
SetPVarInt(i,"LotoDobitak",random(MAX_DOBITAK));
   format(string, sizeof string,"LOTO: %s[%d] je osvojio na lutriji $%d. Cestitamo.",GetName(GetPVarInt(i,"LotoID")),GetPVarInt(i,"LotoID"),GetPVarInt(i,"LotoDobitak"));
   ScmToAll(zuta,string);
   GivePlayerMoney(GetPVarInt(i,"LotoID"),GetPVarInt(i,"LotoDobitak"));
   format(string, sizeof string,"~g~CESTITAMO~n~w~Osvojili ste loto od~n~~g~$%d",GetPVarInt(i,"LotoDobitak"));
   GameTextForPlayer(GetPVarInt(i,"LotoID"),string,5000,4);
}
return true;
}

stock GetName(id)
{
new
 IME[MAX_PLAYER_NAME]
   ;
GetPlayerName(id, IME, MAX_PLAYER_NAME);
return IME;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato April 26, 2011, 17:15:02 POSLE PODNE
Citat: [Banana$]ReadMe.txt poslato April 26, 2011, 16:23:24 POSLE PODNE
Dakle ja radim Wild Wild West OWAA, gdje nece biti NameTagova,
p


Jednostavno ispod OnPlayerSpawn stavite:
for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(playerid, i, false);
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato April 27, 2011, 18:41:11 POSLE PODNE
stock IsAnyPlayerInVehicle(vehicleid)
{
for(new i=0;i<MAX_VEHICLES;i++) if(IsPlayerInVehicle(i,vehicleid)) return 1;
return 0;
}


- Provjerava dali je bilo koji igrac u vozilu vehicleid
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [BU] Gigi_Falcone poslato April 27, 2011, 18:56:48 POSLE PODNE
netacan stock, nije za max_vehicles, nego za max_players

IsPlayerInVehicle (http://wiki.sa-mp.com/wiki/IsPlayerInVehicle)


Pravilno:

#include <foreach>

stock IsAnyPlayerInVehicle(vehicleid)
{
foreach(Player, i) if(IsPlayerInVehicle(i, vehicleid)) return 1;
return 0;
}


zasto foreach? zbog brzeg loop-a
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato April 27, 2011, 23:30:29 POSLE PODNE
Ops, fulo sam. Hvala na ispravci. Koristim ja inace foreach ali ovdje nestavljam s njim jer ga nekoriste svi a zelim da svi mogu koristiti.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Maj 12, 2011, 21:21:30 POSLE PODNE
Evo jedne funkcije koju možete koristiti kao loop poruku...

Spam(playerid,broj_poruka,poruka[])
{
 #define SCM(%0,%1,%2) SendClientMessage(%0,%1,%2)
     for (new i = 0; i < broj_poruka; i++)
     {
static
   LEN = 1;
                 new
                    string[64];
format(string, sizeof string, "%s - %d",poruka,LEN);
SCM(playerid, 0xFFFFFF, string);
printf("%d,%s",LEN,poruka);
LEN++;
     }
     return true;
}


Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Maj 16, 2011, 19:58:21 POSLE PODNE
evo jedne funkcije koju sam izvadio iz moda koju editujem
Naime, s tom funkcijom mozete stavljati rotaciju igraca, znaci ova funkcija se zove SetPlayerPos2 i koristi parametre: X,Y,Z,Rot
Znaci s ovim mozete u svojoj funkcij za teleport igraca koristit i onaj parametar zadnji iz savedpostions zvan rotacija :D

evo

SetPlayerPos2(playerid, Float:X, Float:Y, Float:Z, Float:Ang, text[])
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,X,Y,Z);
SetPlayerFacingAngle(playerid, Ang);
SetCameraBehindPlayer(playerid);
new cmdtext[256];
strmid(cmdtext,text,1,strlen(text));
if(!tele[playerid]){
    tele[playerid] = 1;
    SetTimerEx("Tele", 3000, 0, "d", playerid);
    }
    ResetPlayerWeapons(playerid);
    SetPlayerWorldBounds(playerid, 6666.6666, -6666.6666, 6666.6666, -6666.6666);
}

ostalo:
na vrh
forward Tele(playerid);
ispod ove funkcije
public Tele(playerid) tele[playerid] = 0;
Mislim da bi to trebalo biti sve, ako jos nesto fali recite (nije moja funkcija!)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Maj 16, 2011, 23:33:37 POSLE PODNE

stock Port(playerid, Float:x, Float:y, Float:z)
{
  new
  Float:ox,
  Float:oy,
  Float:oz;
  GetPlayerPos(playerid, ox, oy, oz);
  printf("x: %f, y: %f, z: %f\nox: %f, oy: %f, oz: %f\n\trez: %f", x, y, z, ox, oy, oz, (((ox + oy + oz) >= (x + y + z)) ? ((ox + oy + oz) - (x + y + z)) : ((x + y + z) - (ox + oy + oz))));
  if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SetPlayerPos(playerid, x, y, z);
  SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z);
  return true;
}



Opis
Ovo je koda koju sam poslao za prijavu u CH developer team.
Ja sam licno napravio kodu i dosta je brza.
Sta ona radi? Ona portuje igraca na odredjenu poziciju ali prethodno uzima njegovu staru poziciju i printa...



PS.
Ukoliko posaljete moju kodu Zoranu kao svoju, onda ste dobili veliki - od mene



Zahvale
Luka P.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Maj 20, 2011, 21:36:24 POSLE PODNE
/* stock */ PlayerToPlayer(playerid,playerid2,Float:distance)
{
if(!IsPlayerConnected(playerid) || !IsPlayerConnected(playerid2)) return 0;
new Float:x,Float:y,Float:z; GetPlayerPos(playerid2,x,y,z);
if(IsPlayerInRangeOfPoint(playerid,distance,x,y,z)) return 1;
else return 0;
}


Provjerava jeli playerid u blizini playerid2, u okrugu distance

Edit: Hvala eXtreme-u na ispravci
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Maj 21, 2011, 12:38:47 POSLE PODNE
Citat: [AG] BloodMaster poslato Maj 20, 2011, 21:36:24 POSLE PODNE
/* stock */ PlayerToPlayer(playerid,playerid2,distance)
{
if(!IsPlayerConnected(playerid) || !IsPlayerConnected(playerid2)) return 0;
new Float:x,Float:y,Float:z; GetPlayerPos(playerid2,x,y,z);
if(IsPlayerInRangeOfPoint(playerid,distance,x,y,z)) return 1;
else return 0;
}


Provjerava jeli playerid u blizini playerid2, u okrugu distance
/* stock */ PlayerToPlayer(playerid,playerid2,Float:distance)
{
if(!IsPlayerConnected(playerid) || !IsPlayerConnected(playerid2)) return 0;
new Float:x,Float:y,Float:z; GetPlayerPos(playerid2,x,y,z);
if(IsPlayerInRangeOfPoint(playerid,distance,x,y,z)) return 1;
else return 0;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Maj 30, 2011, 21:00:34 POSLE PODNE
Evo dosao sam na jednu lijepu ideju. Vidim da svi koriste neke streamere i dobro sam pregledao neke. I vidim da vecina radi na IsPlayerInRangeOfPoint i CreatePlayerObject funkcijama a CreateObject se ne pojavljuje.

Zato sam svima odlucio skratiti muke i napraviti ovo:

#if defined CreateDynamicObject
#undef CreateObject
#define CreateObject CreateDynamicObject
#else if defined CreateStreamObject
#undef CreateObject
#define CreateObject CreateStreamObject
#endif


P.S. Ovo ce raditi samo ako koristite Incognito-v streamer ili MidoStreamer

EDIT: E da, zaboravio napisati cemu sluze xD. Naime, ukoliko koristite CreateDynamicObject, a imate vec puno CreateObject, necete ove CreateObject morati mjenjati, oni ce automatski biti streamani...

EDIT2: Sad mi se ovo cini beskorisno, zaboravio sam na CTRL + H xD
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Maj 30, 2011, 22:15:08 POSLE PODNE
Citat: BloadEDIT2: Sad mi se ovo cini beskorisno, zaboravio sam na CTRL + H xD
Samo jedno pitanje za tebe:
Citat: [AG] BloodMaster poslato Maj 20, 2011, 22:46:21 POSLE PODNE
Odes na neki konverter...

primjer: http://gtamap.delux-host.com/converter/ (http://gtamap.delux-host.com/converter/)

Citat: eXtreme poslato Maj 20, 2011, 22:45:04 POSLE PODNE
(http://slike.hr/slike/s/screenshot1_1fddf.png)
CTRL + H

Netocno, CreateObject i CreateDynamicObject imaju razlicite argumente...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Maj 31, 2011, 13:30:53 POSLE PODNE
Citat: [AG] eXtreme poslato Maj 30, 2011, 22:15:08 POSLE PODNE
Citat: BloadEDIT2: Sad mi se ovo cini beskorisno, zaboravio sam na CTRL + H xD
Samo jedno pitanje za tebe:
Citat: [AG] BloodMaster poslato Maj 20, 2011, 22:46:21 POSLE PODNE
Odes na neki konverter...

primjer: http://gtamap.delux-host.com/converter/ (http://gtamap.delux-host.com/converter/)

Citat: eXtreme poslato Maj 20, 2011, 22:45:04 POSLE PODNE
http://slike.hr/slike/s/screenshot1_1fddf.png (http://slike.hr/slike/s/screenshot1_1fddf.png)
CTRL + H

Netocno, CreateObject i CreateDynamicObject imaju razlicite argumente...

To sam ja bio fulo
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Maj 31, 2011, 13:36:18 POSLE PODNE
Znam zato sam i to stavio, CreateDynamicObject ima mogucnost raznih argumenata, ako nestavis naprimer distancu on ce staviti sam... Tako da je moguce...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Maj 31, 2011, 19:16:58 POSLE PODNE
Citat: [AG] eXtreme poslato Maj 31, 2011, 13:36:18 POSLE PODNE
Znam zato sam i to stavio, CreateDynamicObject ima mogucnost raznih argumenata, ako nestavis naprimer distancu on ce staviti sam... Tako da je moguce...
svejedno je bolje otici na ConvertFFS i konvertat u CreateDynamicObject jer koristi drugacije parametre
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Maj 31, 2011, 23:17:58 POSLE PODNE
Citat: [AG] System32 poslato Maj 31, 2011, 19:16:58 POSLE PODNE
Citat: [AG] eXtreme poslato Maj 31, 2011, 13:36:18 POSLE PODNE
Znam zato sam i to stavio, CreateDynamicObject ima mogucnost raznih argumenata, ako nestavis naprimer distancu on ce staviti sam... Tako da je moguce...
svejedno je bolje otici na ConvertFFS i konvertat u CreateDynamicObject jer koristi drugacije parametre

Sto se mucis s tim online konverterima.

http://wiki.sa-mp.com/wiki/Multi_Object_Converter (http://wiki.sa-mp.com/wiki/Multi_Object_Converter)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [BU] Gigi_Falcone poslato Jun 02, 2011, 16:12:23 POSLE PODNE
Citat: [AG] eXtreme poslato Maj 16, 2011, 23:33:37 POSLE PODNE

stock Port(playerid, Float:x, Float:y, Float:z)
{
  new
  Float:ox,
  Float:oy,
  Float:oz;
  GetPlayerPos(playerid, ox, oy, oz);
  printf("x: %f, y: %f, z: %f\nox: %f, oy: %f, oz: %f\n\trez: %f", x, y, z, ox, oy, oz, (((ox + oy + oz) >= (x + y + z)) ? ((ox + oy + oz) - (x + y + z)) : ((x + y + z) - (ox + oy + oz))));
  if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SetPlayerPos(playerid, x, y, z);
  SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z);
  return true;
}


sto tacno predstavlja "rez"? je li razliku, tj predjeni put?

ako "rez" pokazuje udaljenost izmedju stare i nove pozicije, ova funkcija je totalno pogresna
jesi je uopste testirao?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Jun 02, 2011, 22:51:27 POSLE PODNE
cao, evo jedne "funkcije" odnosno skripte s kojom provjerava ako igrac pise sa upaljenim caps lockom i ako napise nesto u text boxu velik slovima u chatu ce to pisati malim

Dodajte ovo pod OnPlayerText
for(new i=0; i<MAX_WORDS; i++)
{
    if(IsPlayerConnected(i))
    {
    while (text[++i])
    {
        if ('A' <= text[i] <= 'Z') text[i] |= 0x20;
}
}
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [BU] Gigi_Falcone poslato Jun 03, 2011, 11:23:11 PRE PODNE
bolje da ga napravis kao stock i pozivas gdje treba, tako da ne moras par puta kopirati isti kod pod OnPlayerText , /b, kao i ostale chat komande koju vecina servera ima
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Jun 03, 2011, 12:00:56 POSLE PODNE
Citat: [BU] Gigi_Falcone poslato Jun 03, 2011, 11:23:11 PRE PODNE
bolje da ga napravis kao stock i pozivas gdje treba, tako da ne moras par puta kopirati isti kod pod OnPlayerText , /b, kao i ostale chat komande koju vecina servera ima
jel to nesto vako?
   
stock CapsLock()
{
for(new i=0; i<MAX_WORDS; i++) 
   { 
       if(IsPlayerConnected(i)) 
       { 
          while (text[++i]) 
          { 
              if ('A' <= text<i> <= 'Z') text<i> |= 0x20; 
         } 
      } 
   }
}

xD ako nevalja reci!
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Jun 03, 2011, 12:21:40 POSLE PODNE
stock CapsLock(text[])
{
for(new i=0; i<MAX_WORDS; i++) 
    {   
          while (text[++i]) 
          { 
              if ('A' <= text <= 'Z') text |= 0x20; 
          } 
    }
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Jun 03, 2011, 12:55:17 POSLE PODNE
ahaa, ok tnx

Sto ne treba ici i IsPlayerConnected u loopu?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Jun 03, 2011, 12:56:44 POSLE PODNE
Citat: [AG] Paradox poslato Jun 03, 2011, 12:22:00 POSLE PODNE
Yep, that's it. :)
Aj have litle problem ju not rid rules


Procitaj glavna pravila foruma (Mada znam da si ih vec citao) ... Brisem post!
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [BU] Gigi_Falcone poslato Jun 03, 2011, 13:03:32 POSLE PODNE
Citat: [AG] System32 poslato Jun 03, 2011, 12:55:17 POSLE PODNE
ahaa, ok tnx

Sto ne treba ici i IsPlayerConnected u loopu?

zato sto loopujes kroz slova a ne kroz igrace
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Jun 03, 2011, 18:30:51 POSLE PODNE
Citat: [AG] System32 poslato Jun 03, 2011, 12:55:17 POSLE PODNE
ahaa, ok tnx

Sto ne treba ici i IsPlayerConnected u loopu?

A sta bi ti? IsWordConnected??
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Jun 04, 2011, 10:22:18 PRE PODNE
Citat: [BU] Gigi_Falcone poslato Jun 02, 2011, 16:12:23 POSLE PODNE
Citat: [AG] eXtreme poslato Maj 16, 2011, 23:33:37 POSLE PODNE

stock Port(playerid, Float:x, Float:y, Float:z)
{
  new
  Float:ox,
  Float:oy,
  Float:oz;
  GetPlayerPos(playerid, ox, oy, oz);
  printf("x: %f, y: %f, z: %f\nox: %f, oy: %f, oz: %f\n\trez: %f", x, y, z, ox, oy, oz, (((ox + oy + oz) >= (x + y + z)) ? ((ox + oy + oz) - (x + y + z)) : ((x + y + z) - (ox + oy + oz))));
  if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SetPlayerPos(playerid, x, y, z);
  SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z);
  return true;
}


sto tacno predstavlja "rez"? je li razliku, tj predjeni put?

ako "rez" pokazuje udaljenost izmedju stare i nove pozicije, ova funkcija je totalno pogresna
jesi je uopste testirao?


Tek sad vidim ovo, ajde napravi fix da vidim kako bi ti to uradio... Je pokazuje udaljenost od stare pozicije i nove pozicije i radi dobro  :-\ Ako treba video da ti snimim...


Edit: Jos nisi napravio?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Jun 06, 2011, 13:57:47 POSLE PODNE
evo jedna funkcija s kojom netrebate vise stavljati u komandi recimo new pName[MAX_PLAYERS]; nego samo u fformatu dodate GetName(playerid ili recimo ako ste definirali za nekog drugog igraca, npr.id)

Funkcija by Y_Less ;)

stock GetName(playerid)
{
new
   pName[MAX_PLAYER_NAME];
   
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
return pName;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Jun 06, 2011, 15:59:18 POSLE PODNE
Kad smo vec kod tog, evo jos jedna dobra:

Float:GetHealth(playerid) { new Float:h; GetPlayerHealth(playerid,h); return h; }

jednostavno, returna koliko igrac ima healtha...

Evo i GivePlayerHealth:

#define GivePlayerHealth(%0, %1)  SetPlayerHealth(%0, GetHealth(playerid)+%1)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [BU] Gigi_Falcone poslato Jun 06, 2011, 19:26:59 POSLE PODNE
Citat: _eXtreme_ poslato Jun 04, 2011, 10:22:18 PRE PODNE
Citat: [BU] Gigi_Falcone poslato Jun 02, 2011, 16:12:23 POSLE PODNE
Citat: [AG] eXtreme poslato Maj 16, 2011, 23:33:37 POSLE PODNE

stock Port(playerid, Float:x, Float:y, Float:z)
{
  new
  Float:ox,
  Float:oy,
  Float:oz;
  GetPlayerPos(playerid, ox, oy, oz);
  printf("x: %f, y: %f, z: %f\nox: %f, oy: %f, oz: %f\n\trez: %f", x, y, z, ox, oy, oz, (((ox + oy + oz) >= (x + y + z)) ? ((ox + oy + oz) - (x + y + z)) : ((x + y + z) - (ox + oy + oz))));
  if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SetPlayerPos(playerid, x, y, z);
  SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z);
  return true;
}


sto tacno predstavlja "rez"? je li razliku, tj predjeni put?

ako "rez" pokazuje udaljenost izmedju stare i nove pozicije, ova funkcija je totalno pogresna
jesi je uopste testirao?


Tek sad vidim ovo, ajde napravi fix da vidim kako bi ti to uradio... Je pokazuje udaljenost od stare pozicije i nove pozicije i radi dobro  :-\ Ako treba video da ti snimim...


Edit: Jos nisi napravio?

sad sam vidio tvoj odgovor, do 10 cu postat moju funkciju, sada nesto radim
btw postacu i cmd sa kojom sam testirao ovo tvoje i vidjeces da nije dobro...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Jun 06, 2011, 19:27:40 POSLE PODNE
Ok izgleda da treba da napravim video evo stize za pola sata...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [BU] Gigi_Falcone poslato Jun 06, 2011, 20:12:44 POSLE PODNE
Evo objasnjenje zasto tvoja skripta ne radi:

http://pastebin.com/PjxSyxJ3


Sacuvaj ovaj kod kao filterskriptu, u njemu je tvoja modifikovana funkcija da ne prikazuje radnju u konzoli nego direktno igracu, ostalo nista nije dirano
Freezuj se sa komandom /freeze a zatim se portuj po navedenom sablonu sa komandom /port [0 do 8]

(http://www.dodaj.rs/f/Z/vo/4EADtaPn/dokaz.png)

Portuj se ovako ( 2 puta u 0 da bi se resetovala razlika):

0,8,1,0 ( na slici predstavlja  O,H,A,O)

Portom od 0 do 8 ima 100.0 jedinica, iz 8 do 1 ima isto 100,0 jedinica, dok iz 1 u 0 po tvojoj skripti ima 200.0 jedinica, sto matematicki nije tacno
Racunanje hipotenuze kod pravouglog trougla se radi pomocu Pitagorine teoreme:

(http://upload.wikimedia.org/math/5/6/a/56a04a849a1772efc82b68e21880cef4.png)

Odnosno u ovom slucaju, udaljenost izmedju 1 i 0 bi trebala biti 141,4213562373095



Takodje kada se portujes iz 6 u 4 (na slici iz F u D) po tvojoj funkciji pise da je 0.0, dok udaljenost treba da bude isto  141,4213562373095
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Jun 06, 2011, 20:24:20 POSLE PODNE
Ok, sad napravi fix da svi na forumu vide kako treba?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [BU] Gigi_Falcone poslato Jun 06, 2011, 21:05:23 POSLE PODNE
Eto:

stock Port(playerid,Float:nX,Float:nY,Float:nZ)
{
new Float:oX,Float:oY,Float:oZ;//old position
new Float:tX,Float:tY,Float:tZ,Float:tDist;//temporary position
new string[128];
GetPlayerPos(playerid,oX,oY,oZ);
tX = nX - oX;
tY = nY - oY;
tZ = nZ - oZ;
tDist = floatsqroot(floatpower(tX,2) + floatpower(tY,2) + floatpower(tZ,2));
SetPlayerPos(playerid, nX, nY, nZ);
format(string,sizeof(string),"x: %f, y: %f, z: %f | ox: %f, oy: %f, oz: %f | trez: %f",nX,nY,nZ,oX,oY,oZ,tDist);
SendClientMessage(playerid,-1,string);
return 1;
}


Moze i krace da se napise, al ovako je jasnije za procitati
Naslov: Odg: Korisne skripte i kodovi
Poruka od: TiXoR_ poslato Jun 07, 2011, 00:02:28 PRE PODNE
Poz.
Evo nešto od mene. :P
Npr.
kada radite ovo:
#define SCM SendClientMessage
Većina misli da je to jedino šta možeš napravit da skratiš kao tu funkciju,ali ti to možeš i za neke druge funkcije.
Npr.
#define STP SetPlayerPos


Nadam se da ste me skužili šta hoću reć. :P
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [BU] Gigi_Falcone poslato Jun 07, 2011, 00:08:37 PRE PODNE
zbog cega skracujete funkcije tako?
pa nije valjda toliko tesko otkucati 5 slova vise?  :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: TiXoR_ poslato Jun 07, 2011, 00:09:42 PRE PODNE
Citat: [BU] Gigi_Falcone poslato Jun 07, 2011, 00:08:37 PRE PODNE
zbog cega skracujete funkcije tako?
pa nije valjda toliko tesko otkucati 5 slova vise?  :)
Cool mi je tako , jer kad mi doÄ'e frend kod mene i vidi GF pa moj pa se uživi.. xD :P
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Jun 07, 2011, 09:16:37 PRE PODNE
Citat: [BU] Gigi_Falcone poslato Jun 06, 2011, 21:05:23 POSLE PODNE
Eto:

stock Port(playerid,Float:nX,Float:nY,Float:nZ)
{
new Float:oX,Float:oY,Float:oZ;//old position
new Float:tX,Float:tY,Float:tZ,Float:tDist;//temporary position
new string[128];
GetPlayerPos(playerid,oX,oY,oZ);
tX = nX - oX;
tY = nY - oY;
tZ = nZ - oZ;
tDist = floatsqroot(floatpower(tX,2) + floatpower(tY,2) + floatpower(tZ,2));
SetPlayerPos(playerid, nX, nY, nZ);
format(string,sizeof(string),"x: %f, y: %f, z: %f | ox: %f, oy: %f, oz: %f | trez: %f",nX,nY,nZ,oX,oY,oZ,tDist);
SendClientMessage(playerid,-1,string);
return 1;
}


Moze i krace da se napise, al ovako je jasnije za procitati
Super svaka cast! Samo malo da uredis i bilo bi to to... Nisam se setio wikija niti icega ali nema veze...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Jun 08, 2011, 15:23:37 POSLE PODNE
Evo da malo oživim topic  ;D
3 Macro funkcije s kojima si skratite vrijeme...


// by [H]265
#define Sec(%0)             (( %0 ) * ( 1000 ))
#define Min(%0)             (( %0 ) * ( 1000*60 ))
#define Sati(%0)            (( %0 ) * ( 1000*60*60 ))


npr.

SetTimerEx(...,Min(5),false...

Uživajte
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Jun 08, 2011, 15:24:39 POSLE PODNE
u to brate ja se bas mucim koliko je jedan sat milisekundi xS
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Jun 08, 2011, 18:08:26 POSLE PODNE
Citat: [H]265 poslato Jun 08, 2011, 15:23:37 POSLE PODNE
Evo da malo oživim topic  ;D
3 Macro funkcije s kojima si skratite vrijeme...


// by [H]265
#define Sec(%0)             (( %0 ) * ( 1000 ))
#define Min(%0)             (( %0 ) * ( 1000*60 ))
#define Sati(%0)            (( %0 ) * ( 1000*60*60 ))


npr.

SetTimerEx(...,Min(5),false...

Uživajte
Super ideja, i dobro odradjeno!
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Jun 10, 2011, 19:38:39 POSLE PODNE
Evo jedne funkcije...

#define MAX_KICKS (5)

#define SetPVarIntEx(%0,%1,%2,%3)  SetPVarInt(%0, %1, GetPVarInt(%0, %1) %2 %3) // by [H]265

#define KickEx(%0) \
do \
{ \
 SetPVarIntEx(%0,"pKicks",+,1); \
 Kick(%0); \
} \
while(FALSE) // by[H]265

new stock
   bool:FALSE = false;

KicksCheck(id) // by [H]265
{
if(GetPVarInt(id,"pKicks") >= MAX_KICKS)
{
BanEx(id,"Previse kickova");
}
return true;
}


Ispod OnPlayerConnect stavite ovako:

public OnPlayerConnect(playerid)
{
       KicksCheck(playerid);
return true;
}


Znači tamo di koristite kick(playerid); sada morate koristiti Kick(playerid);

NAPOMENA: Morate staviti u svoj saving sustav da sprema pKicks varijablu kako bi nakon kicka moglo pamtiti koliko kickova imate inače nemate koristi od ove funkcije...

NAPOMENA 2: Funkciju KickEx NE SMIJETE return-ati npr.

public OnPlayerConnect....
{
     return KickEx(playerid);
}


razlog: macro funkcije se ne mogu return-ati!


Evo još jedna funkcija...


IsPlayerFreeFalling(playerid)
{
     if(GetPlayerAnimationIndex(playerid))
     {
        new
             animlib[32],
             animname[32];
        GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,32,animname,32);
        GivePlayerWeapon(playerid, 46, 1);
    }
    return true;
}


Ako igrač 'pada' s neba dobit će padobran :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Jun 13, 2011, 17:47:16 POSLE PODNE
Lepo ali za ovu poslednju si trebao da das zasluge bar, wikipediji.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Jun 19, 2011, 16:55:56 POSLE PODNE
[code]
HPROX(id,const iString[],color = 0xFFFFF, Float:Distance)
{
new
  Float:Pos[4];
foreach(Player, i)
{
GetPlayerPos(id, Float:Pos[1], Float:Pos[2], Float:Pos[3]);
if(IsPlayerInRangeOfPoint(i, Float:Distance, Float:Pos[1], Float:Pos[2], Float:Pos[3]))
{
   SendClientMessage(i,color,iString);
}
else return false;
}
return true;
}


U praksi...


public OnPlayerText(playerid, text[])
{
HPROX(playerid,text,0xFFFFF,15.0);
return true;
}


Parametri:

playerid - Od tog igraca ce uzeti poziciju i nju ce provoditi tj. poruka ce biti vidljiva u rangu kordinata ovog igraca...
iString - format text-a
color - boja texta
Float:Distance - Range, znači neki krug vidljivosti poruke

NAPOMENA: Funkcija nije testirana.

Citat: _eXtreme_ poslato Jun 13, 2011, 17:47:16 POSLE PODNE
Lepo ali za ovu poslednju si trebao da das zasluge bar, wikipediji.

Šta pričaš ti, kakve zasluge, za šta?
Onda bi trebao davati zasluge za svaku funkciju koju je SA:MP dev. ekipa kreirala zar ne?

[/code]
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Jun 27, 2011, 16:45:15 POSLE PODNE
Da ispravim ovu BloodMasterovu funkciju, posto je donekle korisna:
Citat: [TG] BloodMaster poslato April 13, 2011, 20:20:47 POSLE PODNE
stock SendClientMessageInRangeOfPoint(str[],boja,radius,Float:x,Float:y,Float:z)
{
//by BloodMaster
new players = GetMaxPlayers();
for(new i=0; i<players i++)
{
if(IsPlayerInRangeOfPoint(i,radius,x,y,z) SendClientMessage(i,boja,str);
}
return 1;
}


Luka potpuno si u pravu u vezi GetMaxPlayers zato sto to 2 usporava brzinu cele funkcije.
Ovako je ispravno:

stock SendClientMessageInRangeOfPoint(const str[], boja, Float:radius, Float:X, Float:Y, Float:Z)
{
    new players = GetMaxPlayers();
    for(new i = 0; i < players; i++)
    {
        if(IsPlayerInRangeOfPoint(i, radius, X, Y, Z))
        {
            SendClientMessage(i, boja, string);
        }
    }
    return false;
}

Greske:
radius ne Float:radius da
for(new i=0; i<players i++) ne for(new i = 0; i < players; i++) da (zaboravio si ; )
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Jun 27, 2011, 21:28:54 POSLE PODNE
evo jedne funkcije da vam olaksa posao s teleportom s vozilom :D
isto se koristi kao SetPlayerPos odnosno ima iste parametre samo sto je funkcija SetPlayerPosWithVehicle


stock SetPlayerPosWithVehicle(playerid, Float:X, Float:Y, Float:Z)
{
new cartype = GetPlayerVehicleID(playerid);
SetPlayerPos(playerid, X, Y, Z);
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
LinkVehicleToInterior(cartype, GetPlayerInterior(playerid));
SetVehiclePos(cartype,X,Y,Z);
  PutPlayerInVehicle(playerid,cartype,0);
}
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Jun 28, 2011, 00:22:44 PRE PODNE
SetPlayerPosWithVehicle(playerid, Float:X, Float:Y, Float:Z, Float:kut = 0, vw = 0, int = 0)
{
  if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  {
       new cartype = GetPlayerVehicleID(playerid);
       LinkVehicleToInterior(cartype, int);
       SetVehicleVirtualWorld(cartype,vw);
       SetVehiclePos(cartype,X,Y,Z);
       SetVehicleZAngle(cartype,kut);
       new aa= GetMaxPlayers();
       for(new i=0; i<aa; i++; )
       {
          if(IsPlayerInVehicle(i,cartype))
          {
             SetPlayerInterior(i,int);
             SetPlayerVirtualWorld(i,vw);
          }
       }
       return 1;
   }
  new cartype = GetPlayerVehicleID(playerid);
  SetPlayerPos(playerid, X, Y, Z);
  SetPlayerFacingAngle(playerid,kut);
  SetPlayerInterior(playerid,int);
  SetPlayerVirtualWorld(playerid,vw);
  return 1;
}


Malo ljepse? :D

Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Jun 28, 2011, 01:15:49 PRE PODNE
ljepse ako os int,vw itd.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Jun 28, 2011, 19:45:09 POSLE PODNE
2 macro funkcije:


/*

  MACRO FNC - H_FNC: FNC(parametri)
  by: [H]265
  _______________________________
 
  Umjesto public FNC(parametri) pa onda forward FNC(parametri)
  samo H_FNC: FNC(parametri)
 
*/

#define H_FNC:%0(%1) \
            forward%0(%1); public%0(%1)

/*

  MACRO FNC - H_CB: FNC(parametri)
  by: [H]265
  _______________________________

  Umjesto foward(paramteri) samo H_CB: FNC(paramteri)
 
*/

#define H_CB:%0(%1) \
forward%0(%1); // MACRO FNC by: [H]265


npr. umjesto ovoga


SetTimer("Timer",1000,true);

forward Timer();
public Timer()
{
    return true;
}


samo ovo...


SetTimer("Timer",1000,true);

H_FNC: Timer()
{
     return true;
}


takoÄ'er ako radite neku funkciju koju ćete pozivati iz timera od sada nemorate forwardati nego samo ovako:


forward FNC();



// novi nacin
H_CB: FNC()

NAPOMENA: NE stavljajte na kraju ';'



NAPOMENA: Testirao sam savjet od luke, usporedio sam ga sa MAX_PLAYERS, i MAX_PLAYERS sa GetMaxPlayers bez new players = GetMaxPlayers, ugl. sve upucuje da je GetMaxPlayers brži tako da super :)

ALIII!!

Gledajte ove rezultate:

# foreach - 268
# GetMaxPlayers - 2966


Tako da ipak se isplati foreach više :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Jul 01, 2011, 16:12:06 POSLE PODNE
Moji rezultati (10000 puta "izmucena" koda):

GetMaxPlayers | Direktno: 20 milisec
GetMaxPlayers | Po Lukinom: 11 milisec
Foreach | 3 milisec
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Jul 02, 2011, 20:16:54 POSLE PODNE
Evo jedna funkcija koju sam razvio kad me iziritiralo stalno doubleside, ps. ovo radi samo na staklima:

stock _ALT_CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 200.0)
{
             //by BloodMaster
if(modelid == 1649 || modelid == 3851)
{
CreateDynamicObject(modelid,  x, y, z, rx+180, ry, rz,worldid,interiorid,playerid,distance);
CreateDynamicObject(modelid,  x, y, z, rx, ry, rz, worldid ,interiorid,playerid,distance);
return 1;
}

   return CreateDynamicObject(modelid,  x, y, z, rx, ry, rz, worldid ,interiorid,playerid,distance);
}

#if defined _ALS_CreateDynamicObject
#undef CreateDynamicObject
#else
#define _ALS_CreateDynamicObject
#endif
#define CreateDynamicObject _ALT_CreateDynamicObject


Istina, stakla necete moci micati (MoveDynObject), ali makar na static mapama se necete morati brinuti.

HINT: Ako koristite u MTA double side na staklima, tako ce biti i u sa:mp-u

P.S. Ovo se dodaje prije prvog callbacka!! (ili pri pocetku samog moda)

Naslov: Odg: Korisne skripte i kodovi
Poruka od: SteXi.ılllı. poslato Jul 05, 2011, 00:00:47 PRE PODNE
Mene zanima nesto, ako je Login/Register system dosta star, i jako zeza ?
Mislim nekad ga pokaze kad treba login nekad ne, valja li ga menjati ?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [A]hidroKrilac poslato Jul 05, 2011, 00:02:07 PRE PODNE
[quote author=[OG]SteXi.ılllı. link=topic=4245.msg206818#msg206818 date=1309816847]
Mene zanima nesto, ako je Login/Register system dosta star, i jako zeza ?
Mislim nekad ga pokaze kad treba login nekad ne, valja li ga menjati ?

[/quote]

Valja :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: SteXi.ılllı. poslato Jul 05, 2011, 00:04:48 PRE PODNE
Ok, hvala posto koristim faction-game EDIT a to je Edit Balkan-Undergrounda(prvog) pa je login star vise od 1 godine :S
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Jul 05, 2011, 00:05:44 PRE PODNE
[quote author=[OG]SteXi.ılllı. link=topic=4245.msg206818#msg206818 date=1309816847]
Mene zanima nesto, ako je Login/Register system dosta star, i jako zeza ?
Mislim nekad ga pokaze kad treba login nekad ne, valja li ga menjati ?

[/quote]

Pogrešna tema. Vjerojatno ti je problem do ovoga: http://wiki.sa-mp.com/wiki/TogglePlayerSpectating

BTW: Evo jedne macro funkcije kojom možete napraviti kompaktibilnost sa YCMD & ZCMD


/*
    [H]265 - MACRO CODE
*/
#define YCMD:%1(%0) \
                    H265:%1(%0) // KOMAKTIBILNA FUNKCIJA ( H265 )

#define CMD:%1(%0)\
                 H265:%1(%0,_h_e_l_p_ ) if ( _h_e_l_p_ ) return 0; else

#define COMMAND%0(%1) \
                           CMD%0(%1)


ZAŠTO? - Zato da se nemorate mučiti ako ćete prebacivati iz ZCMD-a u YCMD možete ostaviti samo includajte YCMD a maknite ZCMD iz include-a
Naslov: Odg: Korisne skripte i kodovi
Poruka od: ^X x X^ poslato Jul 05, 2011, 00:07:56 PRE PODNE
@ [H] 265, gde ovo dodam?

IsPlayerFreeFalling(playerid)
{
     if(GetPlayerAnimationIndex(playerid))
     {
        new
             animlib[32],
             animname[32];
        GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,32,animname,32);
        GivePlayerWeapon(playerid, 46, 1);
    }
    return true;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Jul 05, 2011, 00:10:35 PRE PODNE
Na kraj skripte.

koristiš npr.


if(IsPlayerFreeFalling(playerid))
{
     // ako pada s neba
}
else if(!IsPlayerFreeFalling(playerid))
{
    // ako ne pada s neba
}


TakoÄ'er možeÅ¡ staviti u jedan lokalni timer npr. ovako:

if(IsPlayerFreeFalling(i))
{
     // ako pada s neba
}
else if(!IsPlayerFreeFalling(i))
{
    // ako ne pada s neba
}


Ako je ishod točan ( true ) igrač će dobiti padobran. A ako nije uskriptaj šta hoćeš :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Joey_ poslato Jul 17, 2011, 22:46:15 POSLE PODNE
Evo jednog macroa da si olakšate posao:

// Dodati novu varijablu negdje na početku skripte
new
fMsg[128];

// Macro
#define SFM(%0,%1,%2,%3) format(fMsg, 128, %2, %3); SendClientMessage(%0, %1, fMsg)


Primjer:

public OnPlayerConnect(playerid) {
       SFM(playerid, COLOR_RED, "Dobrodosao na server, %!", GetName(playerid));
       return 1;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Jul 17, 2011, 22:48:34 POSLE PODNE
ouuu very nice, ti si paraox?

evo i za SendClientMessageToAll
Kod (System32) [Izaberi]
// Dodati novu varijablu negdje na početku skripte
new
fMsg[128];
        k

// Macro
#define SFM(%0,%1,%2,%3) format(fMsg, 128, %2, %3); SendClientMessageToAll(%1, fMsg)

Naslov: Odg: Korisne skripte i kodovi
Poruka od: Joey_ poslato Jul 17, 2011, 22:55:19 POSLE PODNE
Citat: System32 poslato Jul 17, 2011, 22:48:34 POSLE PODNE
ouuu very nice, ti si paraox?

Da, jesam. :D

Citat: System32 poslato Jul 17, 2011, 22:48:34 POSLE PODNE
evo i za SendClientMessageToAll
Kod (System32) [Izaberi]
// Dodati novu varijablu negdje na početku skripte
new
fMsg[128];
        k

// Macro
#define SFM(%0,%1,%2,%3) format(fMsg, 128, %2, %3); SendClientMessageToAll(%1, fMsg)


Malo si zeznuo macro. Ide ovako:

#define SFMTA(%0,%1,%2) format(fMsg, 128, %1, %2); SendClientMessageToAll(%0, fMsg)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Jul 17, 2011, 23:03:28 POSLE PODNE
Citat: Goose poslato Jul 17, 2011, 22:55:19 POSLE PODNE
Citat: System32 poslato Jul 17, 2011, 22:48:34 POSLE PODNE
ouuu very nice, ti si paraox?

Da, jesam. :D

Citat: System32 poslato Jul 17, 2011, 22:48:34 POSLE PODNE
evo i za SendClientMessageToAll
Kod (System32) [Izaberi]
// Dodati novu varijablu negdje na početku skripte
new
fMsg[128];
        k

// Macro
#define SFM(%0,%1,%2,%3) format(fMsg, 128, %2, %3); SendClientMessageToAll(%1, fMsg)


Malo si zeznuo macro. Ide ovako:

#define SFMTA(%0,%1,%2) format(fMsg, 128, %1, %2); SendClientMessageToAll(%0, fMsg)

kako? Pa jel prvi parametar playerid a toga u SendClientMessageToAll nema
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Joey_ poslato Jul 17, 2011, 23:21:01 POSLE PODNE
Citat: System32 poslato Jul 17, 2011, 23:03:28 POSLE PODNE
kako? Pa jel prvi parametar playerid a toga u SendClientMessageToAll nema

Da, ali ti imaš tu 4 argumenta u macru. A treba ih samo 3.

BTW, usporedi svoj i moj macro pa ćeš uočit razlike. :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Jul 17, 2011, 23:22:09 POSLE PODNE
Citat: Goose poslato Jul 17, 2011, 23:21:01 POSLE PODNE
Citat: System32 poslato Jul 17, 2011, 23:03:28 POSLE PODNE
kako? Pa jel prvi parametar playerid a toga u SendClientMessageToAll nema

Da, ali ti imaš tu 4 argumenta u macru. A treba ih samo 3.

BTW, usporedi svoj i moj macro pa ćeš uočit razlike. :)
a jebiga, zajebo se, svakom se omakne ;)
Naslov: Mob
Poruka od: Rotcod poslato Jul 17, 2011, 23:31:42 POSLE PODNE
Mario ta funkcija odnosno macro vec postoji u ovoj temi.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Jul 17, 2011, 23:39:44 POSLE PODNE
@Paradox & System32

1. Parametar definicije '%' će moći imati samo jedan argument? - Imaš moj tutorial o optional argumentima.
2. Nije baš dobro to raditi sa macro funkcijom jer se ne smije returnati
3. Da se nemora dodavati 'new' na skripti evo načina:
4. Već postoji moja formatEx funkcija u ovom topicu ali nema optional argument i bolje bi bilo napraviti normalno to nego sa macro funkcijom


#define SFM(%0,%1,%2) \
do \
{ \
new \
      string[128]; \
format(string, sizeof string, %1, %2); \
SendClientMessage(%0, string, %2); \
   } \
  while(FALSE)


Ali kao Å¡to sam rekao nije dobro jer stane samo jedna definicija u parametar i ne smije se returnati funkcija.

5. Ako znaš raditi sa macro funkcijama znaš i sam da macro u PAWNCC komapjleru se ponaša ovako

#define SCM(%0,%1,%2) format(string, sizeof string, %1, %2); SendClientMessage(%0,%1,string)

Ispisuje ovako:

format(string, sizeof string, [], len); SendClientMessage(playerid,{hex},[]) < OFC - izbaciti će puno errora

Naslov: Odg: Korisne skripte i kodovi
Poruka od: Joey_ poslato Jul 18, 2011, 00:28:40 PRE PODNE
Citat: _Stranger poslato Jul 17, 2011, 23:31:42 POSLE PODNE
Mario ta funkcija odnosno macro vec postoji u ovoj temi.

Sorry, ali nisam ju našao.

@H265

Pogrješio si u tome da može imati samo jedan argumenat, može ih imati koliko želiš (karikirano).

Evo ti jedan primjer:

public OnPlayerSpawn(playerid) {
new
Name[MAX_PLAYER_NAME] = "Goose",
Age = 15,
Origin[9] = "Hrvatske";

SFM(playerid, 0xFF0000AA, "Dobrodošao na server, %s! Ti imaš %i godina. Dolaziš iz %s.", Name, Age, Origin);
    return 1;
}


I tim primjer dokazujem da možeš imati više argumenata.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Jul 18, 2011, 01:43:17 PRE PODNE
Da ipak nisam u pravu nisam nikad radio sa macro funkcijama sa viÅ¡e argumenata niti sam testirao. Mislio sam da i za macro funkciju postoji odeÄ'eni način kako to napraviti jer uvijek sam radio sa normalnim funkcijama jer kao Å¡to sam rekao naredbe takog tipa ( SendClientMessage ) se često return-aju, a macro funkcije se ne mogu return-ati
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Aleksandar? poslato Jul 18, 2011, 16:21:28 POSLE PODNE
stock PostaviIgraca(playerid, Float:X, Float:Y, Float:Z, Int)
{
       SetPlayerPos(playerid, X, Y, Z);
       SetPlayerInterior(playerid, Int);
       return 1;
}



Kako koristiti?

Pa umesto da koristite u nekoj komandi itd,
SetPlayerPos(playerid, X,Y,Z);
SetPlayerInt(playerid,IDInta);


vi jednostavo stavite PostaviIgraca(playerid,X,Y,Z,IDInta);

Primer:

CMD:a(playerid,params[])
{
PostaviIgraca(playerid,1321.312,123.312,312.12,12);
return true;
}


Takodje,mozete staviti i VirtualWorld..

Malo promenite ovaj stock,da izgleda ovako:
stock PostaviIgraca(playerid, Float:X, Float:Y, Float:Z, Int, VW)
{
       SetPlayerPos(playerid, X, Y, Z);
       SetPlayerInterior(playerid, Int);
       SetPlayerVirtualWorld(playerid, VW);
       return 1;
}


I onda bi koristenje izgledalo :
CMD:a(playerid,params[])
{
PostaviIgraca(playerid, 131.321, 321.312, 414.01, 2, 1);
return true;
}



Napomena: Ove koordinate sam lupao bezveze..

(Nesta slicno mi je danas zatrebalo za jedan system koji radim)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Jul 21, 2011, 03:51:18 PRE PODNE
EDIT: - bespotrebno
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Jul 21, 2011, 08:31:13 PRE PODNE
Extra, cak si postao ovo u 4 ujutro xD


mozda budum i ja napravil digitron :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rick Dunn aka NaNx poslato Jul 21, 2011, 16:16:27 POSLE PODNE
Citat: Luka P. poslato Jul 21, 2011, 14:28:55 POSLE PODNE
Citat: [H265]Primjer:

printf(" 2 + 5 = %d   ", Izracunaj(2,+,5)); return 7
printf(" 2 - 5 = %d   ", Izracunaj(2,-,5)); return -3
printf(" 2 x 5 = %d   ", Izracunaj(2,*,5)); return 10
printf(" 5 / 2 = %d   ", Izracunaj(2,/,5)); return 2 (ide na cijeli broj)


Koja je svrha te funkcije?
printf(" 2 + 5 = %d   ", (2+5));
printf(" 2 - 5 = %d   ", (2-5));
printf(" 2 x 5 = %d   ", (2*5));
printf(" 5 / 2 = %.2f   ", Float:(2/5));



Omg pa najobicniji kalkulator ... lik je samo pokazo
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Jul 21, 2011, 16:18:28 POSLE PODNE
@Luka P. - ImaÅ¡ pravo  :D (bilo je 4 ujutro)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: No Name poslato Jul 25, 2011, 01:36:45 PRE PODNE
Callback by BloodMaster:

stock _ALT_CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 200.0)
{
  if(modelid == 1649 || modelid == 3851)
  {
     CreateDynamicObject(modelid,  x, y, z, rx+180, ry, rz,worldid,interiorid,playerid,distance);
     CreateDynamicObject(modelid,  x, y, z, rx, ry, rz, worldid ,interiorid,playerid,distance);
     return 1;
  }

   return CreateDynamicObject(modelid,  x, y, z, rx, ry, rz, worldid ,interiorid,playerid,distance);
}



Sa ovime ne morate da okrecete objekte koji trebaju biti dupli nego samo ih dodate sa ovim callback-om.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: LuKsA poslato Jul 25, 2011, 01:57:30 PRE PODNE
@No Name, nije to vec tu u temi postano, tj. taj stock (btw. to nije callback :) )?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Jul 26, 2011, 10:42:36 PRE PODNE
Neće raditi, prekopirao si samo stock a ne i hook...

edit:

stock _ALT_CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 200.0)
{
              //by BloodMaster
   if(modelid == 1649 || modelid == 3851)
   {
      CreateDynamicObject(modelid,  x, y, z, rx+180, ry, rz,worldid,interiorid,playerid,distance);
      CreateDynamicObject(modelid,  x, y, z, rx, ry, rz, worldid ,interiorid,playerid,distance);
      return 1;
   }

    return CreateDynamicObject(modelid,  x, y, z, rx, ry, rz, worldid ,interiorid,playerid,distance);
}

            #if defined _ALS_CreateDynamicObject
         #undef CreateDynamicObject
            #else
         #define _ALS_CreateDynamicObject
            #endif
         #define CreateDynamicObject _ALT_CreateDynamicObject
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Avgust 01, 2011, 17:41:31 POSLE PODNE
Počeo sam sa pisanjem ove skripte


#include   "a_samp"
#include   "YSI\y_hooks"

#define H_FNC:%0(%1) \
            forward%0(%1); public%0(%1) // by [H]265

#define Sec(%0) \
      ((%0)*(1000)) // by [H]265

new
bool:inVozilo[MAX_PLAYERS char] = false,
LOCAL_TIMER;

Hook:PINC_OnGameModeInit() return \
    LOCAL_TIMER = SetTimer("Checker", Sec(1), true);

Hook:P2INC_OnGameModeExit() return \
KillTimer(LOCAL_TIMER);

Hook:P3INC_OnPlayerConnect(playerid) return \
    inVozilo{playerid} = false;

Hook:P4INC_OnPlayerStateChange(playerid,newstate,oldstate) { if(newstate == PLAYER_STATE_DRIVER) return \
inVozilo{playerid} = true; }

Hook:P5INC_OnPlayerExitVehicle(playerid, vehicleid) return \
    inVozilo{playerid} = false;

stock SafePutPlayerInVehicle(playerid, vehicleid, seatid) { PutPlayerInVehicle(playerid, vehicleid, seatid); return \
    inVozilo{playerid} = true; }

stock SafeRemovePlayerFromVehicle(playerid) { RemovePlayerFromVehicle(playerid); return \
    inVozilo{playerid} = false; }

stock bool:IsPlayerInAnyVehicleEx(playerid) {
new
statePlayer = GetPlayerState(playerid);
if(statePlayer == PLAYER_STATE_ONFOOT || statePlayer  == PLAYER_STATE_NONE || statePlayer == PLAYER_STATE_WASTED || statePlayer  == PLAYER_STATE_SPAWNED) return \
 inVozilo{playerid} = false;
else if(statePlayer == PLAYER_STATE_DRIVER || statePlayer  == PLAYER_STATE_PASSENGER || statePlayer == PLAYER_STATE_SPECTATING) {
 if(IsPlayerInAnyVehicle(playerid)) return \
  inVozilo{playerid} = true; }

H_FNC: Checker() {
foreach(Player, s) {
  if(IsPlayerInAnyVehicleEx(s) == true) return \
  inVozilo{s} = true;
  else if(IsPlayerInAnyVehicleEx(s) == false) return \
  inVozilo{s} = false; } }


Ovo je više INC nego korisne skripte i kodovi naime skripta nije gotova ali ako netko ima volje neka dovrši mislim da svatko zna da postji GTA bug sa enter/exit iz vozila stoga sam htio napraviti Safe checker ugl. oni koji znaju ako trebaju neka dovrše ja imam svoju staru verziju koju ću koristiti
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [ED] ZicMortal poslato Avgust 01, 2011, 18:19:26 POSLE PODNE
Provjerava igračev armor i vraća vrijednost(float value)/količinu armora.
stock Float:GetArmour(playerid)
{
    new Float:armor; GetPlayerArmour(playerid, armor);
    return armor;
}


Provjerava naziv oružja i vraća vrijednost(string)/naziv oruzja.
stock GetWeapon(gunid)
{
    new gunname[32];
    GetWeaponName(gunid,gunname,sizeof(gunname));
    return gunname;
}


Broji odreÄ'ene znakove unutar teksta. Recimo ako želite provjeriti koliko je igrač upisao odreÄ'enih znakova unutar teksta ova funkcija će vam vratiti vrijednost (integer, brojevnu vrijednost) koliko znakova se nalazi unutar teksta - ovo sam napravio kad sam izraÄ'ivao antiadvertising skriptu ali mi nije trebalo.
stock PrebrojiZnakove(text[], str[])
{
new val;
for(new g = 0; g < strlen(text)+1; g++) if(text[g] == str) val++;
return val;
}


Seif je negdje 'okačio' ovakvu istu funkciju (bar mislim)... ali ja sam pri korištenu shvatio da u njoj nije bilo baš 'sve'. Nedostajali su IDovi oruzja za slot 5 (m4 i ak47) te je nešto još pogriješio (neznam točno). Uglavnom, ispravljeno.. eto..
stock GetWeaponSlot(weaponid)
{
switch (weaponid)
{
    case 0,1: return 0;
    case 2..9: return 1;
    case 22..24: return 2;
    case 25..27: return 3;
    case 28,29,32: return 4;
    case 30,31: return 5;
    case 33,34: return 6;
    case 35..38: return 7;
    case 16..18,39: return 8;
    case 41..43: return 9;
    case 10..15: return 10;
    case 44..46: return 11;
    case 40: return 12;
    default: return -1;
}
return -1;
}



Eto malo, od mene. Ako kome posluži dobro, a ako ne opet dobro :-*
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Avgust 04, 2011, 20:06:53 POSLE PODNE
zic mortale, u ovoj funkciji za weapon name, jel to recimo da mi izbaci ime oruzija, primjer ja u mojoj komandi /givegun printam adminu poruku da je dao tom i tom igracu id tog i tog oruzija, sad ako sam mu dao gun id 38 s tvojom funkcijom bi njemu printalo da mu je dao minigun?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Avgust 04, 2011, 20:08:25 POSLE PODNE
Citat: System32 poslato Avgust 04, 2011, 20:06:53 POSLE PODNE
zic mortale, u ovoj funkciji za weapon name, jel to recimo da mi izbaci ime oruzija, primjer ja u mojoj komandi /givegun printam adminu poruku da je dao tom i tom igracu id tog i tog oruzija, sad ako sam mu dao gun id 38 s tvojom funkcijom bi njemu printalo da mu je dao minigun?

Bi
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Avgust 04, 2011, 20:14:49 POSLE PODNE
sta bi? :O
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Avgust 04, 2011, 20:29:53 POSLE PODNE
Bi, printalo bi mu "minigun"...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Avgust 04, 2011, 20:31:56 POSLE PODNE
aha, hahahha hvala
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Avgust 08, 2011, 19:16:33 POSLE PODNE

stock SetBitEx(biteType, iVar, playerid = INVALID_PLAYER_ID, bool:plus, value) {
    switch(biteType) {   case 2: {
           if(value == true) return Bit2_Set(iVar, playerid, Bit2_Get(iVar, playerid) + value); // +
           else Bit2_Set(iVar, playerid, Bit2_Get(iVar, playerid) - value); // -
        } case 4: {
           if(value == true) return Bit4_Set(iVar, playerid, Bit4_Get(iVar, playerid) + value); // +
           else Bit4_Set(iVar, playerid, Bit4_Get(iVar, playerid) - value); // -
        } case 8: {
           if(value == true) return Bit8_Set(iVar, playerid, Bit8_Get(iVar, playerid) + value); // +
           else Bit8_Set(iVar, playerid, Bit8_Get(iVar, playerid) - value); // -
        } case 16: {
           if(value == true) return Bit16_Set(iVar, playerid, Bit16_Get(iVar, playerid) + value); // +
           else Bit16_Set(iVar, playerid, Bit16_Get(iVar, playerid) - value); // -
        } } }


ili

#define BitSetEx%0(%1, %2, %3, %4) %0_Set(%1, %2, %0_Get(%1, %2) %3 %4)


Eto to sam napravio za one koje koriste Bit support ( 2, 4, 8, 16 bit ) - bit 1 NE PODRAZAVA jer je on 1/0 tj. true/false to ne moze povecavati vrjednost
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Diamond poslato Avgust 08, 2011, 23:16:17 POSLE PODNE
@H265: I Å¡to radi taj tvoj kod?xD
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Avgust 08, 2011, 23:19:27 POSLE PODNE
To je za ćuvanje memorije PAWNCC kompajlera

Za INC koji podrzava (16,8,4,2,1 bit) npr.

var[MAX_PLAYERS char]; < taj kod je 8 bitni to cuva DUPLO manje memorije od 16 bita ali je MAX INPUT = 255 dok je 16 bit = 65505 (0xFFFF)

A kada koristite var samo nes ko true/false tj. 1/0 onda koristite Bit1: Bit1_Set jer ce te sacuvati tako puno memorije koje bi inace sa 16 bit izgubili PUNO PUNO vise a ovaj moj kod je ADD-ON
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Avgust 09, 2011, 08:48:21 PRE PODNE
nte boze kojin ti jezikon pricas :O
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Avgust 09, 2011, 13:54:01 POSLE PODNE
Citat: System32 poslato Avgust 09, 2011, 08:48:21 PRE PODNE
nte boze kojin ti jezikon pricas :O
:D xd ako trebaš objašnjenje reci nije mi problem objasniti detaljnije.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Avgust 09, 2011, 14:33:26 POSLE PODNE
nego sto nego trebam :D

pevaj sreco
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Avgust 09, 2011, 15:54:42 POSLE PODNE
http://forum.sa-mp.com/showthread.php?t=275142

- Primjer, ovo je ADD-ON za ovaj INC koji je napravio Ryder i taj inc je bolji od yless-ovog YSI-ybit's jer podrzava 16, 8, 4, 2 i 1 bit dok ybit's podrzava SAMO 1 bit i sad stvar je u tome sto kad koristis npr. varijablu

new var[MAX_PLAYERS] samo za 1/0 npr.

OnPlayerConnect
{
     var[playerid] = 1;
}

OnPlayerDiscconnect
{
     var[playerid] = 0;
}


Sto nema logike jer je to MALO ISKORISTENO a puno memorije 'IZGUBLJENO' to je isto ko da uzmes cijeli VPS kako bi stavio jedan HTML predlozak na cijeli VPS, ako me razumjes ugl. u ovom primjeru je koristen 16 bit varijabla = 65535 ili ti 0xFFFF (hex kod) inace 65535 je INVALID_PLAYER_ID isto kao 0xFFFF samo je ovo hex kod za to

jednom recenicom, ulozio si vise memorije a premalo iskoristio

ugl. da se vratim na temu, kada trebas koristiti samo za 0/1 (turn on / turn off) koristis 1-bit ugl. u ovom topicu sto sam ti postao imas definicije ako ne znas....
malo prouci mozes sacuvati puno memorije, to je optimizacija a ne ono kada string nije 101 nego 100
Naslov: Odg: Korisne skripte i kodovi
Poruka od: System32 poslato Avgust 09, 2011, 15:57:27 POSLE PODNE
aha kuzim, i sta sad trebas onda sve varijable uredivati, mislim prelagodit ryderovom incu i tvom adonu?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Avgust 09, 2011, 15:58:17 POSLE PODNE
Pa krenes to je isto kao da iz PVarova prebacujes u normalne varijable

BTW: Ispravak normalne varijable su 32 bit ne 16
Naslov: Odg: Korisne skripte i kodovi
Poruka od: kizla poslato Avgust 10, 2011, 15:08:16 POSLE PODNE

#define funkcija%0(%1)     forward%0(%1);\
      public%0(%1)


Macro funkcija by Seif_

npr.


forward poruka();
public poruka()
{
print("Poruka:>:>:>:<");
}


sa ovom funkcijom izgleda ovako:


funkcija poruka()
{
print("Poruka:>:>:>:<");
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Avgust 10, 2011, 15:25:53 POSLE PODNE
@Kizla - ta funkcija već postoji u ovom topicu koju sam ja napravio


EDIT: Eto našao sam je:

/*

   MACRO FNC - H_FNC: FNC(parametri)
   by: [H]265
   _______________________________
   
   Umjesto public FNC(parametri) pa onda forward FNC(parametri)
   samo H_FNC: FNC(parametri)
   
*/

#define H_FNC:%0(%1) \
             forward%0(%1); public%0(%1)

/*

   MACRO FNC - H_CB: FNC(parametri)
   by: [H]265
   _______________________________

   Umjesto foward(paramteri) samo H_CB: FNC(paramteri)
   
*/

#define H_CB:%0(%1) \
forward%0(%1); // MACRO FNC by: [H]265
Naslov: Odg: Korisne skripte i kodovi
Poruka od: []Flynâ„¢ poslato Avgust 10, 2011, 15:34:03 POSLE PODNE
Znaci mesto "public nesto()" ide "funkcija nesto()"

I obrisem forwarde?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: dragan12 poslato Avgust 10, 2011, 15:58:06 POSLE PODNE
Citat: [CRP] Pacijent_ poslato Avgust 10, 2011, 15:34:03 POSLE PODNE
Znaci mesto "public nesto()" ide "funkcija nesto()"

I obrisem forwarde?
Da jer ti funkicija sadrzi taj public i forward. Tacnije ovako nesto
funkcija nesto()
E ona ti je jednaka kao i
foraward nesto();
public nesto()

Tako sam ja skontao
Naslov: Mob
Poruka od: Rotcod poslato Avgust 10, 2011, 20:51:46 POSLE PODNE
[H]265 stvarno mi nije jasno kako za to mozes da kazes da je tvoje, ti mozes reci da si je ti vamo postavio i preimenova + nemoj mi sad s*ati kako si je ti napisao pre seifa ili bilo koga jer to nije tacno , nismo vamo svi glupi pa da mislis da mozes da se kitis tudjim kodama i jos napises da si ti napravio -.-
Naslov: Odg: Korisne skripte i kodovi
Poruka od: kizla poslato Avgust 11, 2011, 07:38:54 PRE PODNE
Citat: Gagi_Corleone poslato Avgust 10, 2011, 15:58:06 POSLE PODNE
Citat: [CRP] Pacijent_ poslato Avgust 10, 2011, 15:34:03 POSLE PODNE
Znaci mesto "public nesto()" ide "funkcija nesto()"

I obrisem forwarde?
Da jer ti funkicija sadrzi taj public i forward. Tacnije ovako nesto
funkcija nesto()
E ona ti je jednaka kao i
foraward nesto();
public nesto()

Tako sam ja skontao

Dobro si skonto :)
Naslov: Odg: Mob
Poruka od: Slay poslato Avgust 11, 2011, 23:20:53 POSLE PODNE
Citat: _Stranger poslato Avgust 10, 2011, 20:51:46 POSLE PODNE
[H]265 stvarno mi nije jasno kako za to mozes da kazes da je tvoje, ti mozes reci da si je ti vamo postavio i preimenova + nemoj mi sad s*ati kako si je ti napisao pre seifa ili bilo koga jer to nije tacno , nismo vamo svi [cenzura]i pa da mislis da mozes da se kitis tudjim kodama i jos napises da si ti napravio -.-

Da se tu ne prepucavam imas PM, nadam se da si shvatio ;)

#define randomEx(%1,%0) \
                    ((random((%0)-(%1))+(%1))) // by [H]265


primjer:

GivePlayerMoney(playerid, randomEx(500,100)); // Igrac ce dobiti minimalno 100, a maximlano 500 $$$ ili nesto izmedu

Evo jedne funkcije sigurno su je svi zatrebali, randomEx(max,min) sto vam je super kada dajete random pickup 'novaca' sada mozete odrediti minimalnu vrjednost i maximalnu :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: kizla poslato Avgust 12, 2011, 09:56:43 PRE PODNE
#define YesNo(%0) ((%0) == (1)) ? ("Yes") : ("No") // by [03]Garisno

new example = random(500);
printf("Is RCON admin: %s", YesNo(IsPlayerAdmin(playerid)));

Ako je igrac bio admin reci ce: Is RCON admin: Yes
u drugom slucaju (igrac nije bio admin) reci ce: Is RCON admin: No

------------------------------

#define Answer(%0,%1,%2) (%0) == (1) ? (%1) : (%2) //by [03]Garisno
// Ista upotreba kao i YesNo samo ovdije ima vise odgovora,,

new example = random(500);
printf("Is RCON admin: %s", Answer(IsPlayerAdmin(playerid), "Da, on je Admin.", "Ne,on nije Admin."));
// ako je igrac bio admin reci ce: Is RCON admin: Da, on je Admin.
// drugacije ce reci: Is RCON admin: Ne,on nije Admin.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Avgust 16, 2011, 19:22:09 POSLE PODNE
- nevaljano.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Avgust 16, 2011, 22:36:52 POSLE PODNE
@h Ovo neće raditi...

Recimo da server ima 3 igrača sa ID-evima: 5,9,11...
A tvoj loop će izvrtiti "3" što nije nijedan igračev ID...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Avgust 16, 2011, 23:02:15 POSLE PODNE
lol da imaš pravo nisam se uopce sjetio toga ^^ sve jedno se vracamo na to da moram koristiti normalan loop sa for petljom, ako necu koristiti static loping, a ne ovim cache - om
Ma iskreno nisam se ni zamarao puno nego sam samo htio napraviti taj cache ne znam dal ce ovo dobro compileati jer sam pisao ovdje kad sam stisnuo 'nova poruka' ^^ sve u svemu editao sam ;)

Rjesenje problema bi bila static syntaxa ali neda mi se sada jeb*at s time tako da cu jednostavno maknuti
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [ED] ZicMortal poslato Avgust 16, 2011, 23:52:17 POSLE PODNE
Evo pošto me zanimalo kako bi se to dalo izvesti, pošto sam vidio kode tu, preformulirao sam ideju u nešto kompliciranije. Molio bih nekoga da testira jer nisam jos testirao, radio sam sve napamet :S
Ako ne valja, lako se pobrise post >.<

#include "YSI\y_hooks"

new PLAYER_CACHE; // use -  u loopu slotova
new CONNECTED[MAX_PLAYERS char]; // use - loop playeridova kroz slotove

#define hloop(%0) for(new %0 = 0; %0 < PLAYER_CACHE; %0++) if(CONNECTED{%0} == 0) continue; %0 = CONNECTED{%0}-1;

Hook:C1_OnPlayerConnect(playerid) return CONNECTED{PLAYER_CACHE} = playerid+1, PLAYER_CACHE++;
Hook:C2_OnPlayerDisconnect(playerid, reason) return CONNECTED{FindCacheValue(playerid)} = 0, ReduceCheck();

stock FindCacheValue(value) // pronalazi slot cija je vrijednost jednaka (=) value, ('value-1' radimo zbog onplayerconnecta)
{
for(new a = 0; a < PLAYER_CACHE; a++) if(CONNECTED{a} == value-1) return a;
}

stock ReduceCheck() // pronalazi slot koji se ne koristi, uvrstava zadnji slot (zadnji connectani) u taj prazni, i smanjuje broj slotova za 1
{
for(new a = 0; a < PLAYER_CACHE; a++) if(CONNECTED{a} == 0) CONNECTED{a} = CONNECTED[PLAYER_CACHE-1], break;
PLAYER_CACHE--;
return 1;
}


for loop je malo kompliciran za shvatit, ako vrijednost slota (PLAYER_CACHE) iznosi 0 onda loop preskace izvrsavanje loopa za tu vrijednost varijable (varijabla se u loopovima povecava). Zatim, ako vrijednost slota ne iznosi 0, onda se vrijednosna varijabla pretvara u playerid odnosno id igraca koji je konektan na serveru (pojavio se - onplayerconnect, a nije izasao - onplayerdisconnect).
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Avgust 17, 2011, 08:39:37 PRE PODNE
Mislim da ce to dobro raditi jedino mora se paziti da loop ide OD -1 pa  nadalje jer '0' je valjani ID, nisam testirao kod ali mi se svida nacin... Takoder koristis char varijablu (MAX 255), a u slucaju da bude vise od 255 online?

Ja nisam razmisljao o takvoj izvedbi nego malo jednostavnijoj a to je sa static syntaxom sto automatski krece sa loopom, ali nema veze zasto raditi nesto sto vec postoji a bolje od toga ne moze (yless xd)

stock intFloat(Float:var, const index[], integ) { /* [H]265 */
if(index[0] == '/' || index[0] == ':') return \
                          floatround(integ/var);
else if(index[0] == '*' || index[0] == 'x') return \
                          floatround(integ*var);
else if(index[0] == '+') return \
                                 floatround(integ+var);
else if(index[0] == '-') return \
                                 floatround(integ-var);
return false;
}


Evo jedne korisne funkcije kojom mozete djeliti/mnoziti/zbrjati/oduzimati integer sa floatom i na kraju returna integer

Primjer:

new
    Float:var0 = 1.5,
    var1 = 1800;

printf("1800 / 1.5 = %d ",intFloat(var0, "/", var1)); // isprat ce 1200
printf("1800 : 1.5 = %d ",intFloat(var0, ":", var1)); // isprat ce 1200 (primjer sa : )


Posto returna integer zaokruzje CIJELI broj, a ne float 1. nesto pa nije bas korisno za + ili - floata ali eto ja sam stavio...
U principu ova funkcija nema nikakve druge koristi jer sve sto napravite ovdje mozete i ovako

new Float:ok = 1.5;
printf("1800 : 1.5 = %d",floatround(1800/ok); // return 1200


Samo je stvar sto kada koristiti enumatore morate prvo spremiti u 'new' pa zatim raditi u floatround naredbi, ovako samo koristite jer je prefix Float: stavljen... ^^


statement's

/ ili : = podjeli
* ili x = pomnozi
+ = zbroji
- = oduzmi
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [ED] ZicMortal poslato Avgust 17, 2011, 10:43:21 PRE PODNE
Citat: [H]265 poslato Avgust 17, 2011, 08:39:37 PRE PODNE
Mislim da ce to dobro raditi jedino mora se paziti da loop ide OD -1 pa  nadalje jer '0' je valjani ID, nisam testirao kod ali mi se svida nacin... Takoder koristis char varijablu (MAX 255), a u slucaju da bude vise od 255 online?

Pa na isto ti doÄ'e otprilike, ako krene od 0 a ID ne postoji, onda ce ga samo preskociti i nastaviti dalje.
Koristim char jer sam navikao koristit prema svom serveru, a na njemu mi sigurno preko 255 nece trebat >.<

Ja vjerujem da je ovo relativno brza izvedba loopa kroz igrace, ali nisam siguran... na sličnu je 'foru' foreach.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Avgust 17, 2011, 11:25:53 PRE PODNE
Pa da to se zove 'cache' nacin tj. hvatanje samo ONLINE igraca. Posto ja koristim MySQL meni ne treba ali inace dobro bi bilo za koristiti cache za loop baze
Inace postoji i nesto puno bolje od 'char' - a, to je rBit INC od Rydera, podrzava 16, 8, 4, 2, 1 bit verziju, a char je 8 bitni i naravno to je puno bolji paket od YSI ovog ybit'sa koji podrzava samo 1 bit varijabl
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [ED] ZicMortal poslato Avgust 17, 2011, 16:18:06 POSLE PODNE
Citat: [H]265 poslato Avgust 17, 2011, 11:25:53 PRE PODNE
Pa da to se zove 'cache' nacin tj. hvatanje samo ONLINE igraca. Posto ja koristim MySQL meni ne treba ali inace dobro bi bilo za koristiti cache za loop baze
Inace postoji i nesto puno bolje od 'char' - a, to je rBit INC od Rydera, podrzava 16, 8, 4, 2, 1 bit verziju, a char je 8 bitni i naravno to je puno bolji paket od YSI ovog ybit'sa koji podrzava samo 1 bit varijabl

Meni to u suÅ¡tini doÄ'e na poprilično isto, Å¡tednja na memoriji se zapravo svodi samo na to. Brzina je ista (obicne i char varijable imaju istu brzinu [testirao])... stoga, viÅ¡e treba gledati varijable s velikim brojem čelija nego da gledaÅ¡ kako ćeÅ¡ uÅ¡tediti sa varijablom sa 50 ili 100 čelija. Ipak, brzina je po meni važna i glavna stvar.. zato jer se sve svodi na brzinu pri velikom broj igrača ili pri velikom broju provjera u timerima (loopovi itd.).
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Zarathos poslato Avgust 19, 2011, 22:55:03 POSLE PODNE
Evo jedna funkcija, ne sjecam se odakle sam je nabavio, ali moze posluziti ( smanjuje .amx size, jer se ne koristi CreateDynamicObject, itd.... )
Funkcija je namjestena za Incognitov streamer plugin...
stock LoadMtaMap(file[])
{
if (!fexist(file)) return 0;
new File:MapFile=fopen(file);
new n, string[400];
new Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz;
new modelid, paintjob, interior, world;
while(fread(MapFile, string))
{
    if (!sscanf(string, "p<\">'object''model='d'interior='d'dimension='d'posX='f'posY='f'posZ='f'rotX='f'rotY='f'rotZ='f", modelid, interior, world, x, y, z, rx, ry, rz))
    {
        n++;
        //modelid x y z rx ry rz interior world
        CreateDynamicObject(modelid, x, y, z, rx, ry, rz);
    }
    else if (!sscanf(string, "p<\">'vehicle''paintjob='d'model='d'interior='d'dimension='d'posX='f'posY='f'posZ='f'rotZ='f", paintjob, modelid, interior, world, x, y, z, rz))
    {
        n++;
       
        new col1, col2, colors[20];
        sscanf(string, "p<\">'color='s[20] ", colors);
        sscanf(colors, "p<,>dd", col1, col2);
        new mods[80], mod[MAX_MODS];
        sscanf(string, "p<\">'upgrades='s[80] ", mods);
        sscanf(mods, "p<,>A<d>(0)["#MAX_MODS"]", mod);
       
        //modelid x y z rz col1 col2 paintjob interior world
new vehicleid = CreateVehicle(modelid, x, y, z, rz, col1, col2, -1);
for (new i; i < MAX_MODS; i++) if (mod[i]) AddVehicleComponent(vehicleid, mod[i]);
            ChangeVehiclePaintjob(vehicleid, paintjob);
            LinkVehicleToInterior(vehicleid, interior);
            SetVehicleVirtualWorld(vehicleid, world);
    }
}
fclose(MapFile);
printf("%d objekata ucitano iz mape '%s'", n, file);
return n;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Avgust 21, 2011, 20:24:04 POSLE PODNE
Citat: [ED] ZicMortal poslato Avgust 17, 2011, 16:18:06 POSLE PODNE
Meni to u suÅ¡tini doÄ'e na poprilično isto, Å¡tednja na memoriji se zapravo svodi samo na to. Brzina je ista (obicne i char varijable imaju istu brzinu [testirao])... stoga, viÅ¡e treba gledati varijable s velikim brojem čelija nego da gledaÅ¡ kako ćeÅ¡ uÅ¡tediti sa varijablom sa 50 ili 100 čelija. Ipak, brzina je po meni važna i glavna stvar.. zato jer se sve svodi na brzinu pri velikom broj igrača ili pri velikom broju provjera u timerima (loopovi itd.).

Memorija nije problem dok se ne odlucis siriti svoj mod na malo vecu granicu sto znaci da ako ne pazis na memoriju moze doci 'Out of memory' sto znaci da si uzeo svu dozvoljenu memoriju PAWNCC kompajlera zato je pametno stediti memoriju dok mozes tako da ako imas priliku, koristi rBits
Naslov: Odg: Korisne skripte i kodovi
Poruka od: LuKsA poslato Avgust 29, 2011, 00:36:59 PRE PODNE
stock IgraciUInterioru(interior)
{
    new inti;
    foreach(Player, i)
    {
        if(GetPlayerInterior(i) == interior)
        {
           inti++;
        }
    }
    return inti;
}


Nesto od mene.. Jednostavan stock, da ozivim temu :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Avgust 31, 2011, 02:51:59 PRE PODNE
stock _HOOK_SetPlayerPos(playerid, Float:X, Float:Y, Float:Z, Float:Angle, interior, vw, bool:teleVeh)
{
    SetPlayerPos(playerid, X, Y, Z); SetPlayerFacingAngle(playerid, Angle);
    SetPlayerInterior(playerid, interior); SetPlayerVirtualWorld(playerid, vw);
   
    if(teleVeh == true)
{
   if(IsPlayerInAnyVehicle(playerid))
   {
           LinkVehicleToInterior(GetPlayerVehicleID(playerid), interior);
           SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), vw);
   SetVehiclePos(GetPlayerVehicleID(playerid), X, Y, Z);
    }
    }
    return true;
}

#if defined _ALS_SetPlayerPos
   #undef SetPlayerPos
#else
   #define _ALS_SetPlayerPos
#endif

#define SetPlayerPos _HOOK_SetPlayerPos


Nista posebno ali sam htio da vidite (oni koji ne znaju) kako se hooka jer je bzvz raditi novi header npr.

stock SetPlayerPosEx.... ili nes drugo pa ako vec radite ovako nes onda hookajte vec postojece funkcije
Naslov: Odg: Korisne skripte i kodovi
Poruka od: LuKsA poslato Avgust 31, 2011, 13:56:56 POSLE PODNE
@[H]265, Lijepo :D, korisno za anticheat tipa SetPlayerHealth.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Septembar 01, 2011, 23:28:43 POSLE PODNE
Evo danas sam pravio jednu macro funkciju za jedan drugi forum ali cu je postati i ovdje


#define formatEx(%0,%1,%2,%3) \
do \
{ \
new string[%1]; \
format(string, sizeof (string), %2, %3); \
SendClientMessage(%0, 0xFFFFF, string); \
} \
while(FALSE)


umiesto

new string[128];
format(string, sizeof string, "NEKI TEXT, MOJE IME %s",GetName(playerid));
SendClientMessage(playerid, boja, string);


samo ovo!

formatEx(playerid, 128, "NEKI TEXT, MOJE IME %s", GetName(playerid));


Takoder sam ponovno napisao SetBitEx funkciju


stock SetBitEx(const type[],playerid = INVALID_PLAYER_ID, const var[], const index[])
{
new typeCount = strlen(type);
for(new i = 0; i <typeCount; i++)
{
  if(playerid != INVALID_PLAYER_ID)
  {
     if(type[i] == 'Bit2') // BIT2
     {
            if(index[0] == '+')
{
               Bit2_Set(var, playerid, Bit2_Get(var, playerid) + strval(index[1]));
}
        else if(index[0] == '-')
        {
               Bit2_Set(var, playerid, Bit2_Get(var, playerid) - strval(index[1]));
        }
     }
     else if(type[i] == 'Bit4') // BIT4
     {
            if(index[0] == '+')
{
               Bit4_Set(var, playerid, Bit4_Get(var, playerid) + strval(index[1]));
}
        else if(index[0] == '-')
        {
               Bit4_Set(var, playerid, Bit4_Get(var, playerid) - strval(index[1]));
        }
     }
     else if(type[i] == 'Bit8') // BIT8
     {
            if(index[0] == '+')
{
               Bit8_Set(var, playerid, Bit8_Get(var, playerid) + strval(index[1]));
}
        else if(index[0] == '-')
        {
               Bit8_Set(var, playerid, Bit8_Get(var, playerid) - strval(index[1]));
        }
     }
     else if(type[i] == 'Bit16') // BIT16
     {
            if(index[0] == '+')
{
               Bit16_Set(var, playerid, Bit16_Get(var, playerid) + strval(index[1]));
}
        else if(index[0] == '-')
        {
               Bit16_Set(var, playerid, Bit16_Get(var, playerid) - strval(index[1]));
        }
     }
  }
}
return (true);
}

Naslov: Загрузить дрова без SMS с обменника
Poruka od: agoxGordBlara poslato Septembar 21, 2011, 16:31:00 POSLE PODNE
//banana
Naslov: Odg: Korisne skripte i kodovi
Poruka od: OptX poslato Septembar 21, 2011, 17:56:35 POSLE PODNE
mozes prevesti na latinicu.   >:(
Naslov: Odg: Korisne skripte i kodovi
Poruka od: K4[Я]!K3 poslato Septembar 21, 2011, 18:53:00 POSLE PODNE
to je bott :/
kako li se uvalio, bože bože ^^

EDIT::
evo jedan kod koji moze pomoc pocetnicima :)
stock GetSetPlayerPos(playerid)
{
  new Float:ppos[3], Float:vpos[4];
  GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]);
  if(IsPlayerInAnyVehicle(playerid))
  {
    GetVehiclePos(GetPlayerVehicleID(playerid), vpos[0], vpos[1], vpos[2]);
    GetVehicleZAngle(GetPlayerVehicleID(playerid), vpos[3]);
    SetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]);
    SetVehiclePos(GetPlayerVehicleID(playerid), vpos[0], vpos[1], vpos[2]);
    SetVehicleZAngle(GetPlayerVehicleID(playerid), vpos[3]);
    PutPlayerInVehicle(playerid, GetPlayerVehicleID(playerid), 0);
    return 1;
  }
  else return SetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]);
}

uzima koordinate igraca i postavlja ga na iste!

primjer:
COMMAND:playerpos(playerid, params[])
{
  GetSetPlayerPos(playerid);
  SCM(playerid, -1,"postavljen ^^");
  return 1;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Septembar 26, 2011, 18:01:15 POSLE PODNE
Evo isto to samo na kraći način:

#define GetSetPlayerPos(%0) TogglePlayerControllable(%0,0); TogglePlayerControllable(%0,1);

edit: [cenzura]i postovi će biti izbrisani za 5... 4... 3... 2... 1... obrisani...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Septembar 30, 2011, 15:05:25 POSLE PODNE
Popravio manji bug sa onom mojom starom SetBitEx fnc


stock SetBitEx(const type[],playerid = INVALID_PLAYER_ID, const var[], const index[])
{
new typeCount = strlen(type);
for(new i = 0; i <typeCount; i++)
{
   if(playerid != INVALID_PLAYER_ID)
   {
      if(type[i] == 'Bit2') // BIT2
      {
             if(index[0] == '+')
{
                Bit2_Set(var, playerid, Bit2_Get(var, playerid) + strval(index[1]));
}
         else if(index[0] == '-')
         {
                Bit2_Set(var, playerid, Bit2_Get(var, playerid) - strval(index[1]));
         }
      }
      else if(type[i] == 'Bit4') // BIT4
      {
             if(index[0] == '+')
{
                Bit4_Set(var, playerid, Bit4_Get(var, playerid) + strval(index[1]));
}
         else if(index[0] == '-')
         {
                Bit4_Set(var, playerid, Bit4_Get(var, playerid) - strval(index[1]));
         }
      }
      else if(type[i] == 'Bit8') // BIT8
      {
             if(index[0] == '+')
{
                Bit8_Set(var, playerid, Bit8_Get(var, playerid) + strval(index[1]));
}
         else if(index[0] == '-')
         {
                Bit8_Set(var, playerid, Bit8_Get(var, playerid) - strval(index[1]));
         }
      }
      else if(type[i] == 'Bit16') // BIT16
      {
             if(index[0] == '+')
{
                Bit16_Set(var, playerid, Bit16_Get(var, playerid) + strval(index[1]));
}
         else if(index[0] == '-')
         {
                Bit16_Set(var, playerid, Bit16_Get(var, playerid) - strval(index[1]));
         }
      }
   }
}
return (true);
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BIRSAâ„¢ poslato Oktobar 05, 2011, 18:30:07 POSLE PODNE
Molio bih ako neko zna kako npr: kad sad neki igrac a da nije taj igraac admin, da on udje u neko bolje i da ga server odma kicka jer sam napravio jednu mapu neka baza samo za admine, ali ne zelim ono tipa kapija i tako jer nije ugledno :D , ako neko zna molio bih da mi kaze...i jos nesto ako neko zna kako mijenjati boju auta u pawnu da mi kaze :D HVALA!!!
Naslov: Odg: Korisne skripte i kodovi
Poruka od: dragan12 poslato Oktobar 05, 2011, 19:03:55 POSLE PODNE
Citat: Nermin(CH) poslato Oktobar 05, 2011, 18:30:07 POSLE PODNE
Molio bih ako neko zna kako npr: kad sad neki igrac a da nije taj igraac admin, da on udje u neko bolje i da ga server odma kicka jer sam napravio jednu mapu neka baza samo za admine, ali ne zelim ono tipa kapija i tako jer nije ugledno :D , ako neko zna molio bih da mi kaze...i jos nesto ako neko zna kako mijenjati boju auta u pawnu da mi kaze :D HVALA!!!
Vec si otvorio temu tako da nemoj to ovde traziti. I ovo ne sluzi za to nego za stavljanje nekih korisnih skripti.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: LordShigi poslato Oktobar 16, 2011, 22:11:04 POSLE PODNE
Funkcija moze crashati igru svima ili određenom igracu.
stock Crash(playerid,bool:all)
{
if(all == true)
{
GameTextForAll("~CRASH", 10000, 3);
}
else
{
GameTextForPlayer(playerid,"~CRASH", 10000, 3);
}
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: BloodMaster poslato Oktobar 17, 2011, 21:15:42 POSLE PODNE
Citat: LordShigi poslato Oktobar 16, 2011, 22:11:04 POSLE PODNE
Funkcija moze crashati igru svima ili odreÄ'enom igracu.
stock Crash(playerid,bool:all)
{
if(all == true)
{
GameTextForAll("~CRASH", 10000, 3);
}
else
{
GameTextForPlayer(playerid,"~CRASH", 10000, 3);
}
}


Koja domišljata ideja... Pošto samo ~ na početku crasha igru... Samo si na kraj bio dodao }}

Al to će biti uklonjeno u 0.3d
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Wang poslato Oktobar 18, 2011, 18:39:12 POSLE PODNE

Funkcija namjeÅ¡ta odreÄ'enom igraču helte i armour u isto vrijeme.
stock SetPlayerHiA(playerid, Float:value)
{
    SetPlayerHealth(playerid, value);
    SetPlayerArmour(playerid, value);
    return 1;
}


Citat: LordShigi poslato Oktobar 16, 2011, 22:11:04 POSLE PODNE
Funkcija moze crashati igru svima ili odreÄ'enom igracu.
stock Crash(playerid,bool:all)
{
if(all == true)
{
GameTextForAll("~CRASH", 10000, 3);
}
else
{
GameTextForPlayer(playerid,"~CRASH", 10000, 3);
}
}

Ne treba ti bool.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Oktobar 18, 2011, 18:41:23 POSLE PODNE
Citat: Wang poslato Oktobar 18, 2011, 18:39:12 POSLE PODNE
Citat: LordShigi poslato Oktobar 16, 2011, 22:11:04 POSLE PODNE
Funkcija moze crashati igru svima ili odreÄ'enom igracu.
stock Crash(playerid,bool:all)
{
if(all == true)
{
GameTextForAll("~CRASH", 10000, 3);
}
else
{
GameTextForPlayer(playerid,"~CRASH", 10000, 3);
}
}

Ne treba ti bool.
I just lol'd, bool je napravljen sa zeljom da stvoris jednom igracu crash ili vise igraca crash
Ako je 1 onda ce svima, ako je 0 onda ce samo odredjenom idu
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Wang poslato Oktobar 18, 2011, 18:54:28 POSLE PODNE
Citat: MicroD poslato Oktobar 18, 2011, 18:41:23 POSLE PODNE
Citat: Wang poslato Oktobar 18, 2011, 18:39:12 POSLE PODNE
Citat: LordShigi poslato Oktobar 16, 2011, 22:11:04 POSLE PODNE
Funkcija moze crashati igru svima ili odreÄ'enom igracu.
stock Crash(playerid,bool:all)
{
if(all == true)
{
GameTextForAll("~CRASH", 10000, 3);
}
else
{
GameTextForPlayer(playerid,"~CRASH", 10000, 3);
}
}

Ne treba ti bool.
I just lol'd, bool je napravljen sa zeljom da stvoris jednom igracu crash ili vise igraca crash
Ako je 1 onda ce svima, ako je 0 onda ce samo odredjenom idu


stock Crash(playerid)
{
   if(playerid == INVALID_PLAYER_ID)  GameTextForAll("~CRASH", 10000, 3);
   else GameTextForPlayer(playerid,"~CRASH", 10000, 3);
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Fall Out Boy poslato Oktobar 19, 2011, 16:45:34 POSLE PODNE
Citat: Wang poslato Oktobar 18, 2011, 18:54:28 POSLE PODNE
stock Crash(playerid)
{
   if(playerid == INVALID_PLAYER_ID)  GameTextForAll("~CRASH", 10000, 3);
   else GameTextForPlayer(playerid,"~CRASH", 10000, 3);
}


Mene bi bila sramota tako krast nečiji rad , prvo na službenom SA:MP forumu ukradeÅ¡ od Shigija ovaj kod i tamo ga postaÅ¡ u Useful Functions onda ti je ovaj napisao da je to krivo i postavio ono Å¡to valja i ti kopirao i od njega. Kako jadno  :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Wang poslato Oktobar 19, 2011, 16:55:23 POSLE PODNE
Citat: Lemonade Mouth poslato Oktobar 19, 2011, 16:45:34 POSLE PODNE
Citat: Wang poslato Oktobar 18, 2011, 18:54:28 POSLE PODNE
stock Crash(playerid)
{
  if(playerid == INVALID_PLAYER_ID)  GameTextForAll("~CRASH", 10000, 3);
  else GameTextForPlayer(playerid,"~CRASH", 10000, 3);
}


Mene bi bila sramota tako krast nečiji rad , prvo na službenom SA:MP forumu ukradeÅ¡ od Shigija ovaj kod i tamo ga postaÅ¡ u Useful Functions onda ti je ovaj napisao da je to krivo i postavio ono Å¡to valja i ti kopirao i od njega. Kako jadno  :D
Ajde ne trabunjaj [cenzura]osti kad nisi bio s nama na skype-u kad je njemu sinula ta ideja i ne znaš o čemu se radi.Ja sam tamo postavio Crash funkciju ako kome zatreba a tu sam stavio ispravak od onog lika tako da....radije pssst

EDIT: 

Citatprvo na službenom SA:MP forumu ukradeš od Shigija
Ovo nije službeni SA:MP forum.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Fall Out Boy poslato Oktobar 19, 2011, 16:58:49 POSLE PODNE
Citat: Wang poslato Oktobar 19, 2011, 16:55:23 POSLE PODNE
Citat: Lemonade Mouth poslato Oktobar 19, 2011, 16:45:34 POSLE PODNE
Citat: Wang poslato Oktobar 18, 2011, 18:54:28 POSLE PODNE
stock Crash(playerid)
{
   if(playerid == INVALID_PLAYER_ID)  GameTextForAll("~CRASH", 10000, 3);
   else GameTextForPlayer(playerid,"~CRASH", 10000, 3);
}


Mene bi bila sramota tako krast nečiji rad , prvo na službenom SA:MP forumu ukradeÅ¡ od Shigija ovaj kod i tamo ga postaÅ¡ u Useful Functions onda ti je ovaj napisao da je to krivo i postavio ono Å¡to valja i ti kopirao i od njega. Kako jadno  :D
Ajde ne trabunjaj [cenzura]osti kad nisi bio s nama na skype-u kad je njemu sinula ta ideja i ne znaš o čemu se radi.Ja sam tamo postavio Crash funkciju ako kome zatreba a tu sam stavio ispravak od onog lika tako da....radije pssst

EDIT: 

Citatprvo na službenom SA:MP forumu ukradeš od Shigija
Ovo nije službeni SA:MP forum.

Zabunio sam se , ali svejedno predstavio si kod kao svoj.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Wang poslato Oktobar 19, 2011, 17:00:55 POSLE PODNE
Tko kaže da sam ja predstavio kod kao svoj?

Jednostavno sam dao ljudima kod jer mnogima zatreba a nigdje nepiše "By Wang...".
Naslov: Odg: Korisne skripte i kodovi
Poruka od: poznaticovik poslato Novembar 08, 2011, 18:17:26 POSLE PODNE
Eto me nakon par mjeseci vidim jako super novih funkcija u 0.3d. Pa evo pojednostavljena za početnike :

Kod (Matt) [Izaberi]
stock PlayAudioStreamForAll(link[])
{
 foreach(Player,i)
 {
PlayAudioStreamForPlayer(i,link);
for(new c; c < 20; c++) SendClientMessage(i,-1,"  ");
SendClientMessageToAll(-1,"Pjesma pustena svima!");
 }
 return true;
}


PlayAudioStreamForAll - pušta glazbu za sve igrače na serveru , primjer korištenja :

Kod (Matt) [Izaberi]
CMD:play(playerid,params[])
{
 PlayAudioStreamForAll("http://users2.ml.mindenkilapja.hu/users/fuchida/uploads/Green_Day_-_Holiday.mp3");
 return true;
}


I funkcija za gašenje pjesme svima :

Kod (Matt) [Izaberi]
stock StopAudioStreamForAll()
{
 foreach(Player,i)
 {
StopAudioStreamForPlayer(i);
SendClientMessageToAll(-1,"Pjesma ugasena svima!");
 }
 return true;
}


Primjer korištenja :

Kod (Matt) [Izaberi]
CMD:stop(playerid,params[])
{
 StopAudioStreamForAll();
 return true;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [SA] 'Ace ! poslato Decembar 22, 2011, 21:49:03 POSLE PODNE
Citat: matt! poslato Novembar 08, 2011, 18:17:26 POSLE PODNE
Eto me nakon par mjeseci vidim jako super novih funkcija u 0.3d. Pa evo pojednostavljena za početnike :

Kod (Matt) [Izaberi]
stock PlayAudioStreamForAll(link[])
{
 foreach(Player,i)
 {
PlayAudioStreamForPlayer(i,link);
for(new c; c < 20; c++) SendClientMessage(i,-1,"  ");
SendClientMessageToAll(-1,"Pjesma pustena svima!");
 }
 return true;
}


PlayAudioStreamForAll - pušta glazbu za sve igrače na serveru , primjer korištenja :

Kod (Matt) [Izaberi]
CMD:play(playerid,params[])
{
 PlayAudioStreamForAll("http://users2.ml.mindenkilapja.hu/users/fuchida/uploads/Green_Day_-_Holiday.mp3");
 return true;
}


I funkcija za gašenje pjesme svima :

Kod (Matt) [Izaberi]
stock StopAudioStreamForAll()
{
 foreach(Player,i)
 {
StopAudioStreamForPlayer(i);
SendClientMessageToAll(-1,"Pjesma ugasena svima!");
 }
 return true;
}


Primjer korištenja :

Kod (Matt) [Izaberi]
CMD:stop(playerid,params[])
{
 StopAudioStreamForAll();
 return true;
}

Kako da napravim da neku muziku pusta samo na odredjenom mjestu
Pokusao sam to ali kad dodjem na to mjesto pise mi Audio Streamer : Link koji sam postavio
Sta nisam dobro uradio ?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: NoFear poslato Decembar 23, 2011, 19:26:13 POSLE PODNE
Citat: [GE] Palic poslato Decembar 22, 2011, 21:49:03 POSLE PODNE
Kako da napravim da neku muziku pusta samo na odredjenom mjestu
Pokusao sam to ali kad dodjem na to mjesto pise mi Audio Streamer : Link koji sam postavio
Sta nisam dobro uradio ?
Ti mozda jesi sve dobro uradio ali pogledaj da ti nije kojim slucajem zvuk radija ugasen. Moras ga pojacati da bi cuo i tu pesmu.


Evo usput sam napravio jednu jednostavnu funkciju koja ce postaviti poziciju vozila a pritom ga ne "zalediti", odnosno zakociti.

SetVehiclePosUsingVelocity ( playerid , Float:x , Float:y, Float:z )
{
   if ( IsPlayerInAnyVehicle ( playerid ) )
   {
       new Float:Vvelocity[3];
       GetVehicleVelocity ( GetPlayerVehicleID ( playerid ) , Vvelocity[0] , Vvelocity[1] , Vvelocity[2] );
SetVehiclePos ( GetPlayerVehicleID ( playerid ), x , y , z );
SetVehicleVelocity ( GetPlayerVehicleID ( playerid ) , Vvelocity[0] , Vvelocity[1] , Vvelocity[2] );
   }
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Billie Joe Armstrong poslato Decembar 31, 2011, 17:58:00 POSLE PODNE
Najjednostavniji anti swear sistem. Prvo što trebate uraditi jest definirati zabranjene riječi po vašem izboru.

new Forbidden[][] =
{
  "sisa",
  // dodajte rijeci koje zelite...
};


Te ćemo napraviti provjeru da vidimo dali je igrač upisao zabranjenu riječ (ovu provjeru možete koristiti u svim komandama,funkcijama,callbackovima itd...)

stock IsInputForbiddenWord(playerid,input[])
{
#pragma unused playerid
for(new c;c<sizeof(Forbidden);c++)
{
  if(strfind(input,Forbidden[c])!=-1){}
}
return true;
}


I jedan primjer korištenja u OnPlayerText

public OnPlayerText(playerid,text[])
{
  if(IsInputForbiddenWord(playerid,text)) return Kick(playerid);
  return true;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: []Flynâ„¢ poslato Decembar 31, 2011, 18:19:05 POSLE PODNE
Evo od mene za zabranjene NICKove.

new ZabranjenaImena[][] = {
    "Majmun", "Sekegfge", "Administrator", "Brate_", "Srbija","Hrvatska"
};


itd...

Koriscenje:

public OnPlayerConnect(playerid) {
    for(new i = 0; i < sizeof(ZabranjenaImena); i ++ ) {
        if(!strcmp(name, i, true)) {
            SendClientMessage(playerid, -1, "Greska: Takvo ime nije dozvoljeno!");
            SendClientMessage(playerid, -1, "Izbaceni ste sa Servera.");
            Kick(playerid);
        }
    }
    return 1;
}


new name[MAX_PLAYER_NAME];
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Billie Joe Armstrong poslato Decembar 31, 2011, 18:22:13 POSLE PODNE
Nisi nigdje definirao "name" , tako da će ljudima izbacit error , fixaj to.

Uh , tek sam sad skužio da si napravio veliku grešku

Promjeni ovo if(!strcmp(name, i, true)) {  

U

if(strfind(name,ZabranjenaImena[i])!=-1){
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Joey_ poslato Decembar 31, 2011, 20:26:06 POSLE PODNE
Citat: 20 Dollar Nosebleed poslato Decembar 31, 2011, 17:58:00 POSLE PODNE
Najjednostavniji anti swear sistem. Prvo što trebate uraditi jest definirati zabranjene riječi po vašem izboru.

new Forbidden[][] =
{
  "sisa",
  // dodajte rijeci koje zelite...
};


Te ćemo napraviti provjeru da vidimo dali je igrač upisao zabranjenu riječ (ovu provjeru možete koristiti u svim komandama,funkcijama,callbackovima itd...)

stock IsInputForbiddenWord(playerid,input[])
{
#pragma unused playerid
for(new c;c<sizeof(Forbidden);c++)
{
  if(strfind(input,Forbidden[c])!=-1){}
}
return true;
}


I jedan primjer korištenja u OnPlayerText

public OnPlayerText(playerid,text[])
{
  if(IsInputForbiddenWord(playerid,text)) return Kick(playerid);
  return true;
}


Zašto si stavio #pragma unused playerid? To je nepotrebno.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Billie Joe Armstrong poslato Decembar 31, 2011, 20:28:10 POSLE PODNE
Isto ti je - bez baca warning - sa nebaca , svejedno ti je kako ćeš staviti :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Joey_ poslato Decembar 31, 2011, 21:11:16 POSLE PODNE
A u biti kad sam bolje pogledao kod onda sam vidio da ti niti ne treba playerid u argumentima. ;)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: NoFear poslato Januar 03, 2012, 20:09:38 POSLE PODNE
Citat: Get busy living or Get busy dying poslato Decembar 31, 2011, 17:58:00 POSLE PODNE
new Forbidden[][] =
{
 "sisa",
 // dodajte rijeci koje zelite...
};

Zasto bi deo tela bio zabranjen (http://fotl-clan.ru/Smileys/fotl/sad.gif)


Plus morao sam da se nadovezem na postove iznad uopste ti nije potreban argument playerid u celom tom kodu kad je potrebno u callbacku samo da proveri taj kako is nazvao 'input' string.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: kizla poslato Januar 05, 2012, 11:28:07 PRE PODNE
Mali refresh, malo koristenje emita ;)


stock Negativan(broj)
{
    //Uzima broj
   #emit LOAD.S.PRI broj
    //Stavlja taj broj u negativno stanje
   #emit NEG
    //Mice specificni broj iz stacka...
   #emit RETN

   return 0;
}

stock Nije(broj)
{
    //uzima ga...
   #emit LOAD.S.PRI broj
    //Uzima neki broj koji nije jednak broju koji je zadan
   #emit NOT
    //vec objasnio
   #emit RETN

   return 0;
}

stock Povecaj(broj)
{
    //uzima
   #emit LOAD.S.PRI broj
    // Povecava broj za 1
   #emit INC.PRI
   #emit RETN

   return 0;
}

stock Smanji(broj)
{
   #emit LOAD.S.PRI broj
    //smanjuje odredeni broj za 1
   #emit DEC.PRI
   #emit RETN

   return 0;
}

stock Zbroji(brojA, brojB)
{
#emit LOAD.S.PRI brojA
#emit LOAD.S.ALT brojB
        // Zbraja odredene brojeve
#emit ADD
#emit RETN

return 0;
}

stock Oduzmi(brojA, brojB)
{
#emit LOAD.S.PRI brojA
#emit LOAD.S.ALT brojB
        //Oduzima odredene brojeve
#emit SUB
#emit RETN

return 0;
}

stock Mnozi(brojA, brojB)
{
#emit LOAD.S.PRI brojA
#emit LOAD.S.ALT brojB
        //Mnozi odredene brojeve
#emit SMUL
#emit RETN

return 0;
}

stock Dijeli(brojA, brojB)
{
#emit LOAD.S.PRI brojA
#emit LOAD.S.ALT brojB
       // Dijeli odredene brojeve
#emit SDIV
#emit RETN

return 0;
}


i koristite ih npr. ovako:


public OnGameModeInit()
{
printf("Negativan broj od broja 7 je: %d", Negativan(7));
printf("Random broj koji nije broj 4: %d", Nije(4));
printf("Broj koji je za 1 veci od 10: %d", Povecaj(10));
printf("Broj koji je za 1 manji od 15: %d", Smanji(15));
printf("Zbroj broja 7 i 5 je: %d", Zbroji(7, 5));
printf("Razlika broja 9 i 4 je: %d", Oduzmi(9, 4));
printf("Umnozak broja 3 i 13 je: %d", Mnozi(3, 13));
printf("Kolicnik broja 46 i 2 je: %d", Dijeli(46, 2));
return 1;
}


Nadam se da vam se svida :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: NoFear poslato Januar 05, 2012, 14:16:32 POSLE PODNE
Citat: kizla poslato Januar 05, 2012, 11:28:07 PRE PODNE
Mali refresh, malo koristenje emita ;)


stock Negativan(broj)
{
    #emit LOAD.S.PRI broj
    #emit NEG
    #emit RETN

    return 0;
}

stock Nije(broj)
{
    #emit LOAD.S.PRI broj
    #emit NOT
    #emit RETN

    return 0;
}

stock Povecaj(broj)
{
    #emit LOAD.S.PRI broj
    #emit INC.PRI
    #emit RETN

    return 0;
}

stock Smanji(broj)
{
    #emit LOAD.S.PRI broj
    #emit DEC.PRI
    #emit RETN

    return 0;
}

stock Zbroji(brojA, brojB)
{
#emit LOAD.S.PRI brojA
#emit LOAD.S.ALT brojB
#emit ADD
#emit RETN

return 0;
}

stock Oduzmi(brojA, brojB)
{
#emit LOAD.S.PRI brojA
#emit LOAD.S.ALT brojB
#emit SUB
#emit RETN

return 0;
}

stock Mnozi(brojA, brojB)
{
#emit LOAD.S.PRI brojA
#emit LOAD.S.ALT brojB
#emit SMUL
#emit RETN

return 0;
}

stock Dijeli(brojA, brojB)
{
#emit LOAD.S.PRI brojA
#emit LOAD.S.ALT brojB
#emit SDIV
#emit RETN

return 0;
}


i koristite ih npr. ovako:


public OnGameModeInit()
{
printf("Negativan broj od broja 7 je: %d", Negativan(7));
printf("Random broj koji nije broj 4: %d", Nije(4));
printf("Broj koji je za 1 veci od 10: %d", Povecaj(10));
printf("Broj koji je za 1 manji od 15: %d", Smanji(15));
printf("Zbroj broja 7 i 5 je: %d", Zbroji(7, 5));
printf("Razlika broja 9 i 4 je: %d", Oduzmi(9, 4));
printf("Umnozak broja 3 i 13 je: %d", Mnozi(3, 13));
printf("Kolicnik broja 46 i 2 je: %d", Dijeli(46, 2));
return 1;
}


Nadam se da vam se svida :)

Mogao bi da objasnis sta koji emit radi, ako si ti pravio kod naravno.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: kizla poslato Januar 05, 2012, 14:24:09 POSLE PODNE
nebi posto kod da nisam ja uradio ;)

edito i napiso kaj koji radi...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Billie Joe Armstrong poslato Januar 07, 2012, 04:34:03 PRE PODNE
Lijepo kizla , baš mi je trebalo to sa #emit , to ni dok sam u C++ radio nisam kužio što radi , sada sam donekle skužio , hvala.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: []Flynâ„¢ poslato Januar 13, 2012, 03:37:29 PRE PODNE
stock ChangeVehicleModel( vehicleid, objectid, Float: offset = 0.0 )
{
    AttachObjectToVehicle( CreateObject( objectid, 0.0, 0.0, 0.0, 0, 0, 0 ), vehicleid, 0, 0, 0, 0, 0, 0 + offset );
    LinkVehicleToInterior( vehicleid, 12 );
}


by Lorenc_

Primer: Mozete voziti kolica za ducan
(http://www.zaslike.com/files/mj0j9ux8gzrw0mwyein_thumb.jpg) (http://www.zaslike.com/viewer.php?file=mj0j9ux8gzrw0mwyein.jpg)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: | S-RP | K@lib@r .300 poslato Januar 18, 2012, 15:57:17 POSLE PODNE
Ja treba Cod da nemoram ravnati redove.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: K4[Я]!K3 poslato Januar 18, 2012, 15:59:13 POSLE PODNE
Citat: | S-RP | Kalibar .300 poslato Januar 18, 2012, 15:57:17 POSLE PODNE
Ja treba Cod da nemoram ravnati redove.
imaš temu za to...
#pragma tabsize 0
Naslov: Odg: Korisne skripte i kodovi
Poruka od: []Flynâ„¢ poslato Januar 22, 2012, 00:11:12 PRE PODNE
//Removes vending machines
RemoveBuildingForPlayer(playerid, 1302, 0.0, 0.0, 0.0, 6000.0);
RemoveBuildingForPlayer(playerid, 1209, 0.0, 0.0, 0.0, 6000.0);
RemoveBuildingForPlayer(playerid, 955, 0.0, 0.0, 0.0, 6000.0);
RemoveBuildingForPlayer(playerid, 1775, 0.0, 0.0, 0.0, 6000.0);
RemoveBuildingForPlayer(playerid, 1776, 0.0, 0.0, 0.0, 6000.0);


Za RP Servere...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: | S-RP | K@lib@r .300 poslato Februar 09, 2012, 21:57:59 POSLE PODNE
Trazim kod da nemoram ravnati redove objekata. Imam #pragma tabsize 0, i moram ravnati redove od objekata
Naslov: Odg: Korisne skripte i kodovi
Poruka od: []Flynâ„¢ poslato Februar 09, 2012, 22:00:34 POSLE PODNE
Citat: | S-RP | K@lib@r .300 poslato Februar 09, 2012, 21:57:59 POSLE PODNE
Trazim kod da nemoram ravnati redove objekata. Imam #pragma tabsize 0, i moram ravnati redove od objekata

Nemoguće da moras, to #pragma tabsize 0 stavi na pocetak moda ispod includea

I po drugi put ti se kaze da ovo nije tema za trazenje, ima tema za to.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Billie Joe Armstrong poslato Februar 09, 2012, 22:10:03 POSLE PODNE
Citat: | S-RP | K@lib@r .300 poslato Februar 09, 2012, 21:57:59 POSLE PODNE
Trazim kod da nemoram ravnati redove objekata. Imam #pragma tabsize 0, i moram ravnati redove od objekata

Jel ti kužiš da postoji tema "Trebam nešto" ovo je korisne skripte i kodovi!
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [TG:RP]$--L84S--$ poslato Februar 09, 2012, 22:34:19 POSLE PODNE
Nemoj raditi DP...
takoder ovo NIJE korisno  >:(
c/p iz GF-a , strcmp  :'(
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Vegas. poslato Februar 12, 2012, 10:53:59 PRE PODNE
Evo vam jedna /aodg komanda
Opis : U pitanje je komanda koja omogućava da admin igraču odgovori na njegovo pitanje u bilo kojem trenutku

if(strcmp(cmd, "/aodg", true) == 0)
   {
       if(IsPlayerConnected(playerid))
       {
         if(PlayerInfo[playerid][pAdmin] == 1)
         {
             SendClientMessage(playerid, COLOR_WHITE, "   Niste ovlasteni da koristite ovu komandu.");
             return 1;
         }
           if(gPlayerLogged[playerid] == 0)
           {
               SendClientMessage(playerid, COLOR_WHITE, "   Niste se prijavili!");
               return 1;
           }
         tmp = strtok(cmdtext, idx);
         if(!strlen(tmp))
         {
            SendClientMessage(playerid, COLOR_WHITE, "Koriscenje: /aodg [ID Igraca/Dio Imena] [text]");
            return 1;
         }
         giveplayerid = ReturnUser(tmp);
            if(PlayerInfo[playerid][pAdmin] >= 1)
          {
         if (IsPlayerConnected(giveplayerid))
         {
             if(giveplayerid != INVALID_PLAYER_ID)
             {
                 if(HidePM[giveplayerid] > 0)
                 {
                     SendClientMessage(playerid, COLOR_GREY, " ");
                     return 1;
                 }
               GetPlayerName(playerid, sendername, sizeof(sendername));
               GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
               new length = strlen(cmdtext);
               while ((idx < length) && (cmdtext[idx] <= ' '))
               {
                  idx++;
               }
               new offset = idx;
               new result[64];
               while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
               {
                  result[idx - offset] = cmdtext[idx];
                  idx++;
               }
               result[idx - offset] = EOS;
               if(!strlen(result))
               {
                  SendClientMessage(playerid, COLOR_WHITE, "Koriscenje: /aodg [ID Igraca/Dio Imena] [text]");
                  return 1;
               }
               format(string, sizeof(string), "{FFFFFF}[ID:%d{FFFFFF}] {{FFD200}Admin {FFD200}%s {0000FF}odgovor: {FFFFFF}%s", playerid, sendername, (result));
               SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
               format(string, sizeof(string), "{FFFFFF}[ID:{FF00FF}%d{FFFFFF}] {00B9FF}Admin {FFD200}%s: {FFFFFF}%s", giveplayerid, giveplayer, (result));
               SendClientMessage(playerid,  COLOR_LIGHTRED, string);
               return 1;
            }
         }
         else
         {
               format(string, sizeof(string), "Taj ID:%d Nije Aktivan na serveru.", giveplayerid);
               SendClientMessage(playerid, COLOR_GRAD1, string);
         }
         }
      }
      return 1;
   }
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Billie Joe Armstrong poslato Februar 12, 2012, 11:39:49 PRE PODNE
Ovo je tema za komande ! http://balkan-samp.com/forum/index.php?topic=7222.0

To ionako nije korisno , kopirano samo i za GF je jedino.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: dock poslato Februar 28, 2012, 11:06:45 PRE PODNE

CMD:adm(playerid,params[])
{
new id, text[128];
if(sscanf(params, "iu", id, text)) return SendClientMessage(playerid, 0xE1E1E1AA, "KORISTI: /adm [ID igraca/Deo imena] [Poruka]");
else if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xE1E1E1AA, " (GRESKA) Korisnik nije online!");
new imekorisnika[32]; new imeadmina[32];
GetPlayerName(playerid, imeadmina, sizeof(imeadmina));
GetPlayerName(id, imekorisnika, sizeof(imekorisnika));
SendClientMessage(playerid, 0xFFFFFFFF, " >> ADM: Poruka poslana igracu %s: %s", imekorisnika, text);
SendClientMessage(id, 0x00FFFFAA, " Admin %s: %s", imeadmina, text);
return 1;
}


Oprostite ako ima gresaka, ja nauceno radim strcmp-om, a posto vecina koristi ZCMD reko da pokusam da napisem nesto korisno i za to :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: TiXoR_ poslato Mart 01, 2012, 23:09:34 POSLE PODNE
Freeze & Unfreeze System


Potrebno: zcmd (include)


stock Freeze(playerid)
{
TogglePlayerControllable(playerid,0);
return 1;
}


stock Unfreeze(playerid)
{
TogglePlayerControllable(playerid,0);
return 1;
}



KOMANDA za test:


CMD:test1(playerid, params[])
{
Freeze(playerid);
SendClientMessage(playerid, -1, "Freeze");
return 1;
}

CMD:test2(playerid, params[])
{
Unfreeze(playerid);
SendClientMessage(playerid, -1, "UnFreeze");
return 1;
}



Nadam se da će nekome poslužit. :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Joey_ poslato Mart 01, 2012, 23:49:32 POSLE PODNE
Malo si se zeznuo. U Unfreeze funkciji u TogglePlayerControllable ide 1 poslije playerid-a, a ne 0.

A i postoji lakši način za to:

#define Freeze(%0) TogglePlayerControllable(%0, 0)
#define Unfreeze(%0) TogglePlayerControllable(%0, 1)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: TiXoR_ poslato Mart 03, 2012, 00:20:30 PRE PODNE
Citat: Joey_ poslato Mart 01, 2012, 23:49:32 POSLE PODNE
Malo si se zeznuo. U Unfreeze funkciji u TogglePlayerControllable ide 1 poslije playerid-a, a ne 0.

A i postoji lakši način za to:

#define Freeze(%0) TogglePlayerControllable(%0, 0)
#define Unfreeze(%0) TogglePlayerControllable(%0, 1)


Brzina pisanja. ^^
Znam ali dosada ubija ^^
Naslov: Odg: Korisne skripte i kodovi
Poruka od: dock poslato Mart 04, 2012, 01:37:08 PRE PODNE
ovo na kraj scripte:


new Text3D:ZaIgraca[MAX_PLAYERS];
stock Napravi3DTextLabelZaIgraca(idigraca, text[],boja, offsetx, offsety, offsetz, radius, vw)
{// idigraca - id igraca kome se stavlja 3dtext | text[] - text koji se ispisuje | boja - boja texta | offsetx/offsety/offsetz - koliko da bude udaljeno od igraca po osama | radius - na kolikoj daljini da se vidi | vw - virtual world u kome se stavlja (uglavnom 0)
ZaIgraca[idigraca] = Create3DTextLabel(text,boja, 0, 0, 0, radius, vw, 1);
Attach3DTextLabelToPlayer(ZaIgraca[idigraca], idigraca, offsetx, offsety, offsetz);
}
stock Makni3DTextLabelZaIgraca(idigraca, textid)
{
Delete3DTextLabel(ZaIgraca[idigraca]);
}


Za korisnike koji se redovno muce sa Attachovanjem 3D Texta za igraca :D

Primer:


CMD:test(playerid,params[])
{
if(IsPlayerConnected(playerid))
{
    Napravi3DTextLabelZaIgraca(playerid, "Ovo je test", 0xFF0000AA, 0.0,0.0,0.6,20,0);
}
return 1;
}


Obavezno na OnPlayerDisconnect staviti:


Makni3DTextLabelZaIgraca(playerid, ZaIgraca[playerid]);





Ne znam da li ce raditi, ali nebi trebalo da ima problema sa ovime... (nemam sa kim da testam jer nemam opciju port forwardinga)

Nadam se da sam pomogao :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: creator poslato Mart 04, 2012, 10:52:13 PRE PODNE
Te 2 funkcije već postoje u SA:MP-u i kada već radiš funkcije najbolje bi ti bilo da ih pišeš na engleskom.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [TG:RP]$--L84S--$ poslato Mart 04, 2012, 14:25:59 POSLE PODNE
Citat: dock poslato Mart 04, 2012, 01:37:08 PRE PODNE
ovo na kraj scripte:


new Text3D:ZaIgraca[MAX_PLAYERS];
stock Napravi3DTextLabelZaIgraca(idigraca, text[],boja, offsetx, offsety, offsetz, radius, vw)
{// idigraca - id igraca kome se stavlja 3dtext | text[] - text koji se ispisuje | boja - boja texta | offsetx/offsety/offsetz - koliko da bude udaljeno od igraca po osama | radius - na kolikoj daljini da se vidi | vw - virtual world u kome se stavlja (uglavnom 0)
ZaIgraca[idigraca] = Create3DTextLabel(text,boja, 0, 0, 0, radius, vw, 1);
Attach3DTextLabelToPlayer(ZaIgraca[idigraca], idigraca, offsetx, offsety, offsetz);
}
stock Makni3DTextLabelZaIgraca(idigraca, textid)
{
Delete3DTextLabel(ZaIgraca[idigraca]);
}


Za korisnike koji se redovno muce sa Attachovanjem 3D Texta za igraca :D

Primer:


CMD:test(playerid,params[])
{
if(IsPlayerConnected(playerid))
{
    Napravi3DTextLabelZaIgraca(playerid, "Ovo je test", 0xFF0000AA, 0.0,0.0,0.6,20,0);
}
return 1;
}


Obavezno na OnPlayerDisconnect staviti:


Makni3DTextLabelZaIgraca(playerid, ZaIgraca[playerid]);





Ne znam da li ce raditi, ali nebi trebalo da ima problema sa ovime... (nemam sa kim da testam jer nemam opciju port forwardinga)

Nadam se da sam pomogao :D
Ovo ti je nepotrebno GF  :    if(IsPlayerConnected(playerid))
   http://wiki.sa-mp.com/wiki/DeletePlayer3DTextLabel
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Marley poslato April 04, 2012, 13:12:35 POSLE PODNE
SetPlayerHealth(playerid, 100); //ovo 100 je koliko helta ce dobiti 100 je maximalno
SetPlayerArmour(playerid, 100); //takodje
GivePlayerWeapon(playerid, 30, 100); //30 je id oruzja, u ovom slucaju ak47, a 100 je broj metaka
GivePlayerMoney(playerid, 1000); //ovo 1000 je da dobije igrac 1000 $, ako ocete da mu se oduzme novac stavite - ispred broja
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Joey_ poslato April 04, 2012, 13:21:39 POSLE PODNE
Citat: Marley poslato April 04, 2012, 13:12:35 POSLE PODNE
SetPlayerHealth(playerid, 100); //ovo 100 je koliko helta ce dobiti 100 je maximalno
SetPlayerArmour(playerid, 100); //takodje
GivePlayerWeapon(playerid, 30, 100); //30 je id oruzja, u ovom slucaju ak47, a 100 je broj metaka
GivePlayerMoney(playerid, 1000); //ovo 1000 je da dobije igrac 1000 $, ako ocete da mu se oduzme novac stavite - ispred broja

To nije baš niti korisna skripta niti kod. To su osnove i svatko bi to trebao znati.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Marley poslato April 04, 2012, 14:55:17 POSLE PODNE
Citat: Joey_ poslato April 04, 2012, 13:21:39 POSLE PODNE
Citat: Marley poslato April 04, 2012, 13:12:35 POSLE PODNE
SetPlayerHealth(playerid, 100); //ovo 100 je koliko helta ce dobiti 100 je maximalno
SetPlayerArmour(playerid, 100); //takodje
GivePlayerWeapon(playerid, 30, 100); //30 je id oruzja, u ovom slucaju ak47, a 100 je broj metaka
GivePlayerMoney(playerid, 1000); //ovo 1000 je da dobije igrac 1000 $, ako ocete da mu se oduzme novac stavite - ispred broja

To nije baš niti korisna skripta niti kod. To su osnove i svatko bi to trebao znati.
znam ali ipak ima pocetnika koji ni to neznaju, a cesto pitaju kako da napravim gun shop,drogu,hranu ili nesto slicno xd
Naslov: Odg: Korisne skripte i kodovi
Poruka od: ★dknez15★ poslato April 04, 2012, 16:42:53 POSLE PODNE
Trebaju mi kodovi za ono sto se moze mrdati kamara u sampu kao camhack al bolja je, i ono sto svjetla strecaju od vozila, policijskih kad se upali sirena...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: ...Nikola... poslato April 04, 2012, 17:05:50 POSLE PODNE
Citati ono sto svjetla strecaju od vozila, policijskih kad se upali sirena...
Nerazumem ovaj deo.
Evo ti to kao camhack  http://www.mediafire.com/?2tjea4dzwdzqvca
Naslov: Odg: Korisne skripte i kodovi
Poruka od: ★dknez15★ poslato April 04, 2012, 17:12:14 POSLE PODNE
Citat: ...Nikola... poslato April 04, 2012, 17:05:50 POSLE PODNE
Citati ono sto svjetla strecaju od vozila, policijskih kad se upali sirena...
Nerazumem ovaj deo.
Evo ti to kao camhack  http://www.mediafire.com/?2tjea4dzwdzqvca

Camhack vec imam, hvala ali ima neke skripte da se mrda kamera na sampu i jos je bolja, a to sto strecaju svjetla ako si ikad uso na ch ili na lsrp tamo policijska vozila imaju tako da prednja svjetla strecaju

http://www.youtube.com/watch?v=LyC3b6gUijE&feature=related
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [TG:RP]$--L84S--$ poslato April 04, 2012, 18:56:58 POSLE PODNE
Citat: dknez15 poslato April 04, 2012, 16:42:53 POSLE PODNE
Trebaju mi kodovi za ono sto se moze mrdati kamara u sampu kao camhack al bolja je, i ono sto svjetla strecaju od vozila, policijskih kad se upali sirena...
Ovdje postas korisne komande , a ne trazis !!
to trazis u temi trebam nesto ...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: TiXoR_ poslato Maj 01, 2012, 18:48:01 POSLE PODNE
stock SetHealthToAll(Float:health)
{
  foreach(Player,i)
  {
SetPlayerHealth(i, health);
  }
  return true;
}



CMD:sethptoall(playerid, params[])
{
if(IsPlayerAdmin(playerid))
{
new id, hp, pName[MAX_PLAYER_NAME], string[128];

if(sscanf(params, "d", hp)) SendClientMessage(playerid, -1, "koristite: /sethptoall <health>");

SetHealthToAll(hp);

GetPlayerName(id, pName, sizeof(pName));

format(string, sizeof(string), "Admin %s, je postavio svim igračima health na: %d%", pName, hp);
SendClientMessageToAll(-1, string);

}
else SendClientMessage(playerid, -1,"ERROR: nisi admin");
return 1;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: creator poslato Maj 05, 2012, 23:28:49 POSLE PODNE
Još da je tvoja :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Demir-s poslato Maj 22, 2012, 13:56:50 POSLE PODNE
znali ko kako da ubacim te kodovo npr da promjenim ime servera i to ako neko zna nek se javi Hitno mi je ???Ili ako neko moze da mi pokaze preko TeamViwera??
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Pixel poslato Maj 22, 2012, 14:14:44 POSLE PODNE
Citat: Demir-s poslato Maj 22, 2012, 13:56:50 POSLE PODNE
znali ko kako da ubacim te kodovo npr da promjenim ime servera i to ako neko zna nek se javi Hitno mi je ???Ili ako neko moze da mi pokaze preko TeamViwera??

Citaj pravila, krivo si postao.


Al ako vec pitas, di da promjenis u GM-u ili os ovak opcenito u server.cfg-u?

*Dalje nemoj tu pisati nek mi posalji poruku pa cemo rijesiti ;)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Brian Brendell poslato Jun 15, 2012, 13:02:19 POSLE PODNE
i meni treba preveden JunkBuster da li neko ima? :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: vlado_plavsic poslato Jun 15, 2012, 13:59:57 POSLE PODNE
Citat: Edis Macic poslato Jun 15, 2012, 12:56:49 POSLE PODNE
Treba mi JunkBuster preveden jel Neko Ima?!

Citat: Brian Brendell poslato Jun 15, 2012, 13:02:19 POSLE PODNE
i meni treba preveden JunkBuster da li neko ima? :)

Cek jeste vi retardiradi? Ne kontam,jel to radite namerno ili sta?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Dr.Ivex → ♫ poslato Jun 19, 2012, 19:37:48 POSLE PODNE
Evo jedne funkcije koja ce mozda nekima koristit. Funkcija provjerava jel sjedalo u odreÄ'enom autu zauzeto:

stock ZauzetoSjedalo(vozilo, sjedalo)
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(GetPlayerVehicleID(i) == vozilo && GetPlayerVehicleSeat(i) == sjedalo) return 1;
}
return 0;
}



a koristi se npr:


stock PutPlayerInFreeSeat(CarID, PlayerID)
{
for(sjedalo = 0; sjedalo < 4; sjedalo++)
{
if(ZauzetoSjedalo(CarID, sjedalo) == 0)
  {
    PutPlayerInVehicle(PlayerID, CarID, sjedalo);
    break;
            }
}
return 1;
}


Nadam se da ce vam raditi (nazalost nemam kako isprobati)..
Naslov: Odg: Korisne skripte i kodovi
Poruka od: vlado_plavsic poslato Jul 05, 2012, 10:42:29 PRE PODNE
Evo jedna funkcija da vam skrati posao:

#define CreateListDialog(%1,%2,%3,%4); ShowPlayerDialog(%1, %2, DIALOG_STYLE_LIST, %3, %4, "Izaberi", "Odustani");

Primer:

CreateListDialog(playerid,3," Naslov "," Dugme1\nDugme2 ");

Isto tako mozete i za ostale dialoge da napravite,samo zamenite DIALOG_SYLE i prilagodite parametre :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Kabum,Kabum poslato Jul 09, 2012, 21:25:14 POSLE PODNE
//na vrhu
#include <zcmd> //to morate skinuti
#include <sscanf> //ovo takodje morate skinuti
#include <double-o-Files> //i ovo isto morate skinuti

new ADM[MAX_PLAYERS];
new upoz[MAX_PLAYERS];

//komanda
CMD:dwarn(playerid,cmdtext[])
{
   if(!ADM[playerid]) return SendClientMessage(playerid,COLOR_GREEN,"Nisi ADM"); //adm promijenite po zelji
   new id,powod[64];
   if(sscanf(cmdtext,"ADM",id,powod)) return SendClientMessage(playerid,COLOR_GREEN,"Koristi: /dwarn [ID] [Razlog]");
   if(id < 0 || id > GetMaxPlayers()) return SendClientMessage(playerid,-1,"Igrac nije konektovan!");

   Warn[id]++;
   new x[124];
   format(x,sizeof(x),"Igrac %s (id: %d) je dobio upozorenje (%d/2) od strane ADM. Razlog:%s",PlayerName(id),id,upoz[id],powod);
   SendClientMessageToAll(COLOR_ADMIN,x);

   if(Warn[id] == 2)


   {
      new string[124];
      format(string,sizeof(string),"Igrac %s (id: %d) je uklonje sa servera! Razlog:%s",PlayerName(id),id);
      SendClientMessageToAll(COLOR_ADMIN,string);
      print(string);
      Kick(id);
      return 1;


   }
   return 1;
}
CMD:dunwarn(playerid,params[])
{
   if(!ADM[playerid]) return SendClientMessage(playerid,COLOR_GREEN,"Nisi ADM");
   new id = strval(params);
   if(id < 0 || id > GetMaxPlayers()) return SendClientMessage(playerid,COLOR_YELLOW,"Koristi: /dunwarn [ID]");
   Warn[id] --;
   new string[256];
   format(string,sizeof(string),"Discret Admin skida upozorenja (%d/2) igracu %s (id: %d)",Warn[id],PlayerName(playerid),playerid);
   SendClientMessageToAll(COLOR_ADMIN,string);
   return 1;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Kopra poslato Jul 26, 2012, 23:49:25 POSLE PODNE
Samo ime kaze sta rade:  8)

////////////////////////////////////////////////////////////////////////////////
stock GivePlayerHealth(playerid,Float:Health)
{
new Float:health; GetPlayerHealth(playerid,health);
SetPlayerHealth(playerid,health+Health);
}
////////////////////////////////////////////////////////////////////////////////
stock GivePlayerArmour(playerid,Float:Armour)
{
new Float:armour; GetPlayerHealth(playerid,armour);
SetPlayerArmour(playerid,armour+Armour);
}
////////////////////////////////////////////////////////////////////////////////
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Snooker(stari profil) poslato Jul 27, 2012, 08:48:34 PRE PODNE
@KopriVa malo bolji nacin:

stock GivePlayerHealth(playerid, Float:Health)
{
new Float:currentHealth;
        GetPlayerHealth(playerid, currentHealth);
SetPlayerHealth(playerid, floatadd(currentHealth, Health));
}

stock GivePlayerArmour(playerid, Float:Armour)
{
new Float:currentArmour;
GetPlayerHealth(playerid, currentArmour);
SetPlayerArmour(playerid, floatadd(currentArmour, Armour));
}


- Mali speed test


Rezultati:
   Tvoja: 6 ms
   Moja: 5 ms



Rezultati:
   Tvoja: 5 ms
   Moja: 5 ms



Rezultati:
   Tvoja: 6 ms
   Moja: 5 ms


Test skripta: http://pastebin.com/LFpvYcj4
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Dm0nSt€R poslato Avgust 02, 2012, 14:44:51 POSLE PODNE
Evo GivePlayerHealth,GivePlayerArmour i GivePlayerScore funkcije  ;)

stock GivePlayerHealth(playerid,Float:Health)
{
new Float:health; GetPlayerHealth(playerid,health);
SetPlayerHealth(playerid,health+Health);
}


stock GivePlayerArmour(playerid,Float:Armour)
{
new Float:armour; GetPlayerArmour(playerid,armour);
SetPlayerArmour(playerid,armour+Armour);
}


stock GivePlayerScore(playerid,Float:Score)
{
    SetPlayerScore(playerid,GetPlayerScore(playerid)+Score);
}


EDIT: Ovo nije moje nasao sam na Sluzbenom SA:MP forumu..
Naslov: Odg: Korisne skripte i kodovi
Poruka od: TiXoR_ poslato Avgust 02, 2012, 17:03:09 POSLE PODNE
Citat: ¤¤R0x0r¤¤ poslato Avgust 02, 2012, 14:44:51 POSLE PODNE
Evo GivePlayerHealth,GivePlayerArmour i GivePlayerScore funkcije  ;)

stock GivePlayerHealth(playerid,Float:Health)
{
new Float:health; GetPlayerHealth(playerid,health);
SetPlayerHealth(playerid,health+Health);
}


stock GivePlayerArmour(playerid,Float:Armour)
{
new Float:armour; GetPlayerArmour(playerid,armour);
SetPlayerArmour(playerid,armour+Armour);
}


stock GivePlayerScore(playerid,Float:Score)
{
    SetPlayerScore(playerid,GetPlayerScore(playerid)+Score);
}



http://forum.sa-mp.com/showthread.php?t=151210

bič pliz
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Dm0nSt€R poslato Avgust 02, 2012, 23:43:58 POSLE PODNE
Citat: [BURPG] TiXoR_ poslato Avgust 02, 2012, 17:03:09 POSLE PODNE
Citat: ¤¤R0x0r¤¤ poslato Avgust 02, 2012, 14:44:51 POSLE PODNE
Evo GivePlayerHealth,GivePlayerArmour i GivePlayerScore funkcije  ;)

stock GivePlayerHealth(playerid,Float:Health)
{
new Float:health; GetPlayerHealth(playerid,health);
SetPlayerHealth(playerid,health+Health);
}


stock GivePlayerArmour(playerid,Float:Armour)
{
new Float:armour; GetPlayerArmour(playerid,armour);
SetPlayerArmour(playerid,armour+Armour);
}


stock GivePlayerScore(playerid,Float:Score)
{
    SetPlayerScore(playerid,GetPlayerScore(playerid)+Score);
}



http://forum.sa-mp.com/showthread.php?t=151210

bič pliz

Jesam napisao da je moje?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Joey_ poslato Avgust 02, 2012, 23:45:54 POSLE PODNE
@Dm0nStâ,¬R, ali nigdje nisi naveo da nije tvoje. ;)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Dm0nSt€R poslato Avgust 02, 2012, 23:49:26 POSLE PODNE
Citat: Joey_ poslato Avgust 02, 2012, 23:45:54 POSLE PODNE
@Dm0nStâ,¬R, ali nigdje nisi naveo da nije tvoje. ;)

EDIT..
Naslov: Odg: Korisne skripte i kodovi
Poruka od: ThE P.A.W.n ! poslato Avgust 05, 2012, 23:36:15 POSLE PODNE
Citat: Snooker(stari profil) poslato Jul 27, 2012, 08:48:34 PRE PODNE
@KopriVa malo bolji nacin:

stock GivePlayerHealth(playerid, Float:Health)
{
new Float:currentHealth;
        GetPlayerHealth(playerid, currentHealth);
SetPlayerHealth(playerid, floatadd(currentHealth, Health));
}

stock GivePlayerArmour(playerid, Float:Armour)
{
new Float:currentArmour;
GetPlayerHealth(playerid, currentArmour);
SetPlayerArmour(playerid, floatadd(currentArmour, Armour));
}


- Mali speed test


Rezultati:
   Tvoja: 6 ms
   Moja: 5 ms



Rezultati:
   Tvoja: 5 ms
   Moja: 5 ms



Rezultati:
   Tvoja: 6 ms
   Moja: 5 ms


Test skripta: http://pastebin.com/LFpvYcj4

Hvala na ispravljanju,radio sam neki war sistem za nekog lika pa sam ovo na brzinu odradio :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rotcod poslato Avgust 11, 2012, 22:12:23 POSLE PODNE
SetPlayerSkinEx


stock SetPlayerSkinEx(skinid, ...)
{
    new nArg = numargs();
    for(new i = 1; i < nArg; i++)
    {
        new playerid = getarg(i);
        if(IsPlayerConnected(playerid)) SetPlayerSkin(playerid, skinid);
    }
}


Upotreba (primer):
SetPlayerSkinEx(115, 3, 2, 1, 10, 9, 6); // 3, 2, 1, 10, 9, 6 su ID-ovi igraca, a 115 je skinid

Moje misljenje:
Nije najbolja funkcija, ali moze da posluzi u dosta slucajeva.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: SANY poslato Avgust 12, 2012, 22:52:21 POSLE PODNE
Mislim da ima ljudi koji ovo traze pa eto da objavim
Trebate sistem da vam ucitava admine i online i offline?
Neznate bez MySQL?
Evo samo ovo uradite:

idite u scriptfiles i napravite file:
admini
ovo stavite ko /makeadmin(zamijenjite vasu cmd sa mojom):
if(strcmp(cmd, "/makeadmin", true) == 0)
{
    if(IsPlayerConnected(playerid))
    {
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Koriscenje: /makeadmin [ID Igraca/Dio Imena] [level(1-3)]");
return 1;
}
new para1;
new level;
para1 = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
level = strval(tmp);
if(PlayerInfo[playerid][pAdmin] >= 1340)
{
    if(IsPlayerConnected(para1))
    {
        if(para1 != INVALID_PLAYER_ID)
        {
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
PlayerInfo[para1][pAdmin] = level;
printf("AdmCmd: Admin je %s-u dao odredjeni admin level.", sendername, giveplayer, level);
format(string, sizeof(string), "  Admin vam je dao/oduzeo admin level ", level, sendername);
SendClientMessage(para1, COLOR_WHITE, string);
format(string, sizeof(string), "   Dali/oduzeli ste %s-u admin level .", giveplayer,level);
SendClientMessage(playerid, COLOR_WHITE, string);
dfasfascc(para1,level);
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "{FF0000}[ERROR] {FFFFFF}Niste ovlasteni da koristite tu komandu!");
}
}
return 1;
}



A komandu /admini zamijenite sa :
if (strcmp(cmd, "/admini", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new klok[1300];
new mic;
for(new i = 0; i < 100; i++)
{
new FileName[128];
format(FileName, sizeof(FileName), "admini/Admin_%d.ini", i);
if(fexist(FileName) )
{
mic=1;
Admin[i][adIme]= dini_Get(FileName, "Ime" );
Admin[i][adRank]= dini_Int(FileName, "Rank" );
new blabla[300];
new blabla2[300];
if(IsPlayerConnected(GetPlayerIDS(Admin[i][adIme])))
{
format(blabla, sizeof(blabla),"{80FF00}[ONLINE] %s",Admin[i][adIme]);
strcat(klok, blabla);
strcat(klok, "{ffffff} Rank:");
format(blabla2, sizeof(blabla2), "{FFFF00}%d",Admin[i][adRank]);
strcat(klok,blabla2);
strcat(klok, "\n");
}
else if(!IsPlayerConnected(GetPlayerIDS(Admin[i][adIme])))
{
format(blabla, sizeof(blabla) ,"{FFFF00}[OFFLINE]%s",Admin[i][adIme]);
strcat(klok, blabla);
strcat(klok, "{9c9c9c} Rank:");
format(blabla2, sizeof(blabla2), "{80FF00}%d",Admin[i][adRank]);
strcat(klok,blabla2);
strcat(klok, "\n");
}
}
}
if(mic==0)
{
SendClientMessage(playerid,COLOR_GREEN, "Trenutno nema admina online !");
}
else
{ShowPlayerDialog(playerid,36,DIALOG_STYLE_MSGBOX,"Lista admina",klok,"OK","");
}
}

Dodajte i ovaj stock:
stock dfasfascc(giver,level)
{
adminsteras(giver);
if(level != 0)
{
new giveplayer[MAX_PLAYER_NAME];
GetPlayerName(giver, giveplayer, sizeof(giveplayer));
new lolcina = 1;
for(new mica = 1; mica < 100; mica++)
{
new stringers[600];
format(stringers, sizeof(stringers), "admini/Admin_%d.ini", mica);
if(lolcina == 0){return 1;}
if(!fexist(stringers))
{
lolcina = 0;
strmid(Admin[mica][adIme],giveplayer, 0, strlen(giveplayer), 255);
Admin[mica][adRank]=level;
dini_Create(stringers);
SaveAdmine();
}
}
}
return 1;
}

Nadam se da sam nekom pomogo :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: LuKsA poslato Avgust 24, 2012, 20:23:17 POSLE PODNE
IsValidSkin(skinid)
{
    #define MAX_BAD_SKINS 22
new badSkins[MAX_BAD_SKINS] = { 3, 4, 5, 6, 8, 42, 65, 74, 86, 119, 149, 208, 268, 273, 289 };
    if (skinid < 0 || skinid > 299) return false;
    for (new i = 0; i < MAX_BAD_SKINS; i++) { if (skinid == badSkins[i]) return false; }
    #undef MAX_BAD_SKINS
    return 1;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: dock poslato Avgust 25, 2012, 01:27:31 PRE PODNE
#define SendFormatMessage(%0,%1,%2,%3,%4)   new %0[128];\
format(%0,128,%3,%4);\
SendClientMessage(%1, %2, %0)


%0 - za new (pre ovoga sam koristio statican new ali su se mesali formati pa sam odlucio staviti ovo...
%1 - id igraca kojem saljete poruku
%2 - boja
%3 - poruka
%4 - varijable ...


kako koristiti (primer):

new ime[MAX_PLAYER_NAME]; GetPlayerName(playerid, ime, sizeof(ime));
SendFormatMessage(string,playerid,0xff0000aa,"Moje ime je: %s", ime);


Ne znam koliko je ovo korisno ali mene nervira kad stalno kucam format itd pa sam napravio ovo :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: SlicK poslato Avgust 26, 2012, 21:42:03 POSLE PODNE
Neznam jel netko vec napravio nesto ovako ali stavit cu.Dakle ova funkcija provjerava dal je igrac u blizini nekog objekta,naprimjer:
IsPlayerNearObject(playerid,kapija,10);
-playerid-igracev id
-kapija-id objekta
-10-koliko je udaljen od objekta

Funkcija:
stock IsPlayerNearObject(playerid,objectid,range){
new float:ObjX,float:ObjY,float:ObjZ;
GetObjectPos(objectid,ObjX,ObjY,ObjZ);
    IsPlayerInRangeOfPoint(playerid,range,Obj:X,Obj:Y,Obj:Z);
    return 1;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: ThE P.A.W.n ! poslato Avgust 27, 2012, 17:51:51 POSLE PODNE
Citat: SlicK poslato Avgust 26, 2012, 21:42:03 POSLE PODNE
Neznam jel netko vec napravio nesto ovako ali stavit cu.Dakle ova funkcija provjerava dal je igrac u blizini nekog objekta,naprimjer:
IsPlayerNearObject(playerid,kapija,10);
-playerid-igracev id
-kapija-id objekta
-10-koliko je udaljen od objekta

Funkcija:
stock IsPlayerNearObject(playerid,objectid,range){
new float:ObjX,float:ObjY,float:ObjZ;
GetObjectPos(objectid,ObjX,ObjY,ObjZ);
    IsPlayerInRangeOfPoint(playerid,range,Obj:X,Obj:Y,Obj:Z);
    return 1;
}


Imas malu gresku,ovo ce returnovati 1 i ako jeste i ako nije blizu objekta,evo kako bih ja to uradio:

stock IsPlayerNearObject(playerid,objectid,range) {
       new Float:Pos[3];
       GetObjectPos(objectid,Pos[0],Pos[1],Pos[2]);
       IsPlayerInRangeOfPoint(playerid,range,Pos[0],Pos[1],Pos[2]); {
       return true; }
       return false;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: dock poslato Avgust 29, 2012, 02:30:54 PRE PODNE
//nije radilo

Ne znam da li ce ovo raditi al kolko znam nivo mora je u sampu na 0.0 visini :D

*EDIT:Ne radi ovo moram srediti :P

*EDIT 2:

evo ga testirano :)


stock IgracUMoru(pl)
{
new Float:p[3];
    new animacija[32];
    new imeanimacije[32];
    GetPlayerPos(pl,p[0],p[1],p[2]);
    GetAnimationName(GetPlayerAnimationIndex(pl),animacija,32,imeanimacije,32);
    if(strcmp(animacija, "SWIM", true) == 0 && p[2] < 0.0 && !IsPlayerInAnyVehicle(pl)) { return true; }
else return false;
}


Jedini "bug" je to sto ako se u moru sa autom ne pokazuje da je u moru sve dok ne izadjete iz auta... :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: SlicK poslato Avgust 29, 2012, 02:56:48 PRE PODNE
Citat: dock poslato Avgust 29, 2012, 02:30:54 PRE PODNE
//nije radilo

Ne znam da li ce ovo raditi al kolko znam nivo mora je u sampu na 0.0 visini :D

*EDIT:Ne radi ovo moram srediti :P

*EDIT 2:

evo ga testirano :)


stock IgracUMoru(pl)
{
new Float:p[3];
    new animacija[32];
    new imeanimacije[32];
    GetPlayerPos(pl,p[0],p[1],p[2]);
    GetAnimationName(GetPlayerAnimationIndex(pl),animacija,32,imeanimacije,32);
    if(strcmp(animacija, "SWIM", true) == 0 && p[2] < 0.0 && !IsPlayerInAnyVehicle(pl)) { return true; }
else return false;
}


Jedini "bug" je to sto ako se u moru sa autom ne pokazuje da je u moru sve dok ne izadjete iz auta... :)
Hmmm...Oce to radit i kod one brane u LV-u? :-\
Naslov: Odg: Korisne skripte i kodovi
Poruka od: dock poslato Avgust 29, 2012, 02:59:40 PRE PODNE
Evo upravo sam testirao radi :D ... ukoliko ima neka voda iznad nivoa mora (nez dal je GP jezero vise od 0.0 :D) jednostavno obrisite deo p[2] < 0.0 jer je nepotreban al neka ga za svaki slucaj :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: SlicK poslato Avgust 29, 2012, 03:20:02 PRE PODNE
Citat: dock poslato Avgust 29, 2012, 02:59:40 PRE PODNE
Evo upravo sam testirao radi :D ... ukoliko ima neka voda iznad nivoa mora (nez dal je GP jezero vise od 0.0 :D) jednostavno obrisite deo p[2] < 0.0 jer je nepotreban al neka ga za svaki slucaj :D

Imas par bazena kraj kuca...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Vegas. poslato Avgust 29, 2012, 04:00:41 PRE PODNE
Citat: Sany Boy poslato Avgust 12, 2012, 22:52:21 POSLE PODNE
Mislim da ima ljudi koji ovo traze pa eto da objavim
Trebate sistem da vam ucitava admine i online i offline?
Neznate bez MySQL?
Evo samo ovo uradite:

idite u scriptfiles i napravite file:
admini
ovo stavite ko /makeadmin(zamijenjite vasu cmd sa mojom):
if(strcmp(cmd, "/makeadmin", true) == 0)
{
    if(IsPlayerConnected(playerid))
    {
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Koriscenje: /makeadmin [ID Igraca/Dio Imena] [level(1-3)]");
return 1;
}
new para1;
new level;
para1 = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
level = strval(tmp);
if(PlayerInfo[playerid][pAdmin] >= 1340)
{
    if(IsPlayerConnected(para1))
    {
        if(para1 != INVALID_PLAYER_ID)
        {
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
PlayerInfo[para1][pAdmin] = level;
printf("AdmCmd: Admin je %s-u dao odredjeni admin level.", sendername, giveplayer, level);
format(string, sizeof(string), "  Admin vam je dao/oduzeo admin level ", level, sendername);
SendClientMessage(para1, COLOR_WHITE, string);
format(string, sizeof(string), "   Dali/oduzeli ste %s-u admin level .", giveplayer,level);
SendClientMessage(playerid, COLOR_WHITE, string);
dfasfascc(para1,level);
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "{FF0000}[ERROR] {FFFFFF}Niste ovlasteni da koristite tu komandu!");
}
}
return 1;
}



A komandu /admini zamijenite sa :
if (strcmp(cmd, "/admini", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new klok[1300];
new mic;
for(new i = 0; i < 100; i++)
{
new FileName[128];
format(FileName, sizeof(FileName), "admini/Admin_%d.ini", i);
if(fexist(FileName) )
{
mic=1;
Admin[i][adIme]= dini_Get(FileName, "Ime" );
Admin[i][adRank]= dini_Int(FileName, "Rank" );
new blabla[300];
new blabla2[300];
if(IsPlayerConnected(GetPlayerIDS(Admin[i][adIme])))
{
format(blabla, sizeof(blabla),"{80FF00}[ONLINE] %s",Admin[i][adIme]);
strcat(klok, blabla);
strcat(klok, "{ffffff} Rank:");
format(blabla2, sizeof(blabla2), "{FFFF00}%d",Admin[i][adRank]);
strcat(klok,blabla2);
strcat(klok, "\n");
}
else if(!IsPlayerConnected(GetPlayerIDS(Admin[i][adIme])))
{
format(blabla, sizeof(blabla) ,"{FFFF00}[OFFLINE]%s",Admin[i][adIme]);
strcat(klok, blabla);
strcat(klok, "{9c9c9c} Rank:");
format(blabla2, sizeof(blabla2), "{80FF00}%d",Admin[i][adRank]);
strcat(klok,blabla2);
strcat(klok, "\n");
}
}
}
if(mic==0)
{
SendClientMessage(playerid,COLOR_GREEN, "Trenutno nema admina online !");
}
else
{ShowPlayerDialog(playerid,36,DIALOG_STYLE_MSGBOX,"Lista admina",klok,"OK","");
}
}

Dodajte i ovaj stock:
stock dfasfascc(giver,level)
{
adminsteras(giver);
if(level != 0)
{
new giveplayer[MAX_PLAYER_NAME];
GetPlayerName(giver, giveplayer, sizeof(giveplayer));
new lolcina = 1;
for(new mica = 1; mica < 100; mica++)
{
new stringers[600];
format(stringers, sizeof(stringers), "admini/Admin_%d.ini", mica);
if(lolcina == 0){return 1;}
if(!fexist(stringers))
{
lolcina = 0;
strmid(Admin[mica][adIme],giveplayer, 0, strlen(giveplayer), 255);
Admin[mica][adRank]=level;
dini_Create(stringers);
SaveAdmine();
}
}
}
return 1;
}

Nadam se da sam nekom pomogo :)
Ovo je Teške radio, mogao si creditse stavit !
Naslov: Odg: Korisne skripte i kodovi
Poruka od: SANY poslato Avgust 31, 2012, 19:19:58 POSLE PODNE
lol,ja sam to uradio -.-
Naslov: Odg: Korisne skripte i kodovi
Poruka od: ...Nikola... poslato Avgust 31, 2012, 19:56:34 POSLE PODNE
Daj balavac nemoj da seres i lazes bezveze kad si ti nub idi igraj Super Mario ili tako nesto de si naso ovde da nas lazes
Naslov: Odg: Korisne skripte i kodovi
Poruka od: ThE P.A.W.n ! poslato Septembar 01, 2012, 00:21:05 PRE PODNE
Citat: dock poslato Avgust 29, 2012, 02:30:54 PRE PODNE
Jedini "bug" je to sto ako se u moru sa autom ne pokazuje da je u moru sve dok ne izadjete iz auta... :)

stock IgracUMoru(pl)
{
    new Float:p[3];
    new animacija[32];
    new imeanimacije[32];
    GetPlayerPos(pl,p[0],p[1],p[2]);
    GetAnimationName(GetPlayerAnimationIndex(pl),animacija,32,imeanimacije,32);
    if(strcmp(animacija, "SWIM", true) == 0 && p[2] < 0.0) { return true; } // obrises !IsPlayerInAnyVehicle(pl)
    else return false;
}


Samo obrises !IsPlayerInAnyVehicle(pl) i trebalo bi da radi bez problema :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: dock poslato Septembar 01, 2012, 00:39:54 PRE PODNE
Ako si u vozilu automatski prikazuje da si u vodi .. nez zas.. zato sam stavio to :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Kopra poslato Septembar 01, 2012, 20:54:39 POSLE PODNE
Citat: dock poslato Septembar 01, 2012, 00:39:54 PRE PODNE
Ako si u vozilu automatski prikazuje da si u vodi .. nez zas.. zato sam stavio to :D


Zato sto si vec ispunio ovaj uslov:
&& p[2] < 0.0
Naslov: Odg: Korisne skripte i kodovi
Poruka od: dock poslato Septembar 01, 2012, 20:56:20 POSLE PODNE
Nije, u autu si na visini 100 recimo izbacuje da si u vodi NE znam zasto ali to stoji sve sa razlogom tu :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Vegas. poslato Septembar 03, 2012, 02:57:12 PRE PODNE
Citat: Sany Boy poslato Avgust 31, 2012, 19:19:58 POSLE PODNE
lol,ja sam to uradio -.-
Kako to onda ima u extreme modu, to je Teške radio, sad bi ti se nagovorio svega al uzdržaću se, idi crtaj šumu i izgubi se, ili skoči pa pogini.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: dock poslato Septembar 12, 2012, 15:49:50 POSLE PODNE
2 stocka ... jedan za proveru 2D zone drugi za proveru 3D zone

2D zona proverava kvadrat u zonama koje ste odabrali koordinatama minx,maxx,miny i maxy, visina nije bitna dokle god su X i Y koordinate izmedju min i max tacno je. U suprotnom nije tacno (ovo je testano i radi :) )


stock IgracU2DZoni(playerid,Float:minx,Float:miny,Float:maxx,Float:maxy)
{
new Float:p[3];
GetPlayerPos(playerid, p[0],p[1],p[2]);
if(p[0] >= minx && p[0] <= maxx && p[1] >= miny && p[1] <= maxy)
{
    return true;
}
else return false;
}


3D zona je nesto kao KUTIJA, sto je dosta korisnije od 2D zone ali su vam potrebne minz i maxz ukoliko se nadjete u kutiji tacno je, ukoliko ne nije (logicno xD) ... (ovo nije testano :) )


stock IgracU3DZoni(playerid,Float:minx,Float:miny,Float:maxx,Float:maxy,Float:minz,Float:maxz)
{
new Float:p[3];
GetPlayerPos(playerid, p[0],p[1],p[2]);
if(p[0] >= minx && p[0] <= maxx && p[1] >= miny && p[1] <= maxy && p[2] >= minz && p[2] <= maxz)
{
    return true;
}
else return false;
}


to je to valjda od mene :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Septembar 12, 2012, 18:58:06 POSLE PODNE
Citat: dock poslato Septembar 12, 2012, 15:49:50 POSLE PODNE
stock IgracU2DZoni(playerid,Float:minx,Float:miny,Float:maxx,Float:maxy)
{
   new Float:p[3];
   GetPlayerPos(playerid, p[0],p[1],p[2]);
   if(p[0] >= minx && p[0] <= maxx && p[1] >= miny && p[1] <= maxy)
   {
       return true;
   }
   else return false;
}

Ovo je Yless-ova funkcija!
Naslov: Odg: Korisne skripte i kodovi
Poruka od: ShocK_ poslato Novembar 01, 2012, 21:13:01 POSLE PODNE
Evo od mene jedan stock.Sluzi za dobijanje igracevog imena
stock IgracevoIme(playerid)
{
    new
        pName[MAX_PLAYER_NAME];

    GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
    return pName;
}

Naslov: Odg: Korisne skripte i kodovi
Poruka od: Djokoš poslato Novembar 17, 2012, 17:11:29 POSLE PODNE
Poz,evo ovo mi netreba pa da dam /lideri da vidite listu online lidera

//aktivni lideri
if (strcmp(cmd, "/lideri", true) == 0)
{
        if(IsPlayerConnected(playerid))
    {
        SendClientMessage(playerid, COLOR_RED, " ");
        SendClientMessage(playerid, COLOR_RED, "-Trenutno Aktivni Lideri na Serveru-");
foreach (Player, i)
{
if(PlayerInfo[i][pLeader] >= 1 && PlayerInfo[i][pLeader] < 17)
    {
    new admtext[64];
        if(PlayerInfo[i][pLeader] == 1) { admtext = "LS PD"; } //stavite koju ocete org
        else if(PlayerInfo[i][pLeader] == 2) { admtext = "FBI"; } //stavite koju ocete org
    else if(PlayerInfo[i][pLeader] == 3) { admtext = "SWAT"; } //stavite koju ocete org
    else if(PlayerInfo[i][pLeader] == 4) { admtext = "Hitna Pomoc"; } //stavite koju ocete org
    else if(PlayerInfo[i][pLeader] == 5) { admtext = "Yakuza"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 6) { admtext = "LCN"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 7) { admtext = "Gradonacelnik"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 8) { admtext = "Hitman"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 9) { admtext = "Novinari"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 10) { admtext = "Taxi ORG"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 11) { admtext = "SF PD"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 12) { admtext = "Ruska Mafija"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 13) { admtext = "------------"; } //stavite koju ocete org ili stavite vasu novu org
else if(PlayerInfo[i][pLeader] == 14) { admtext = "------------"; } //stavite koju ocete org ili stavite vasu novu org
else if(PlayerInfo[i][pLeader] == 15) { admtext = "Clovers"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 16) { admtext = "Bloods"; } //stavite koju ocete org
else { admtext = "------------"; }
GetPlayerName(i, sendername, sizeof(sendername));
if(AdminDuty[i] == 0)
{
format(string, 256, "%s ( %s )", sendername, admtext);
SendClientMessage(playerid, COLOR_WHITE, string);
}
else
{
    format(string, 256, "%s ( %s )", sendername, admtext);
SendClientMessage(playerid, COLOR_YELLOW, string);
}
}
}
}
return 1;
}


to to :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: pllopen poslato Novembar 17, 2012, 18:27:43 POSLE PODNE
Citat: [RX-RP]Djordje_Veljkovic poslato Novembar 17, 2012, 17:11:29 POSLE PODNE
Poz,evo ovo mi netreba pa da dam /lideri da vidite listu online lidera

//aktivni lideri
if (strcmp(cmd, "/lideri", true) == 0)
{
        if(IsPlayerConnected(playerid))
    {
        SendClientMessage(playerid, COLOR_RED, " ");
        SendClientMessage(playerid, COLOR_RED, "-Trenutno Aktivni Lideri na Serveru-");
foreach (Player, i)
{
if(PlayerInfo[i][pLeader] >= 1 && PlayerInfo[i][pLeader] < 17)
    {
    new admtext[64];
        if(PlayerInfo[i][pLeader] == 1) { admtext = "LS PD"; } //stavite koju ocete org
        else if(PlayerInfo[i][pLeader] == 2) { admtext = "FBI"; } //stavite koju ocete org
    else if(PlayerInfo[i][pLeader] == 3) { admtext = "SWAT"; } //stavite koju ocete org
    else if(PlayerInfo[i][pLeader] == 4) { admtext = "Hitna Pomoc"; } //stavite koju ocete org
    else if(PlayerInfo[i][pLeader] == 5) { admtext = "Yakuza"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 6) { admtext = "LCN"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 7) { admtext = "Gradonacelnik"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 8) { admtext = "Hitman"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 9) { admtext = "Novinari"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 10) { admtext = "Taxi ORG"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 11) { admtext = "SF PD"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 12) { admtext = "Ruska Mafija"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 13) { admtext = "------------"; } //stavite koju ocete org ili stavite vasu novu org
else if(PlayerInfo[i][pLeader] == 14) { admtext = "------------"; } //stavite koju ocete org ili stavite vasu novu org
else if(PlayerInfo[i][pLeader] == 15) { admtext = "Clovers"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 16) { admtext = "Bloods"; } //stavite koju ocete org
else { admtext = "------------"; }
GetPlayerName(i, sendername, sizeof(sendername));
if(AdminDuty[i] == 0)
{
format(string, 256, "%s ( %s )", sendername, admtext);
SendClientMessage(playerid, COLOR_WHITE, string);
}
else
{
    format(string, 256, "%s ( %s )", sendername, admtext);
SendClientMessage(playerid, COLOR_YELLOW, string);
}
}
}
}
return 1;
}


to to :D
Citaj naslov teme! Ovo bgm nije kroisno ...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: ShocK_ poslato Novembar 17, 2012, 23:17:16 POSLE PODNE
Citat: [RX-RP]Djordje_Veljkovic poslato Novembar 17, 2012, 17:11:29 POSLE PODNE
Poz,evo ovo mi netreba pa da dam /lideri da vidite listu online lidera

//aktivni lideri
if (strcmp(cmd, "/lideri", true) == 0)
{
        if(IsPlayerConnected(playerid))
    {
        SendClientMessage(playerid, COLOR_RED, " ");
        SendClientMessage(playerid, COLOR_RED, "-Trenutno Aktivni Lideri na Serveru-");
foreach (Player, i)
{
if(PlayerInfo[i][pLeader] >= 1 && PlayerInfo[i][pLeader] < 17)
    {
    new admtext[64];
        if(PlayerInfo[i][pLeader] == 1) { admtext = "LS PD"; } //stavite koju ocete org
        else if(PlayerInfo[i][pLeader] == 2) { admtext = "FBI"; } //stavite koju ocete org
    else if(PlayerInfo[i][pLeader] == 3) { admtext = "SWAT"; } //stavite koju ocete org
    else if(PlayerInfo[i][pLeader] == 4) { admtext = "Hitna Pomoc"; } //stavite koju ocete org
    else if(PlayerInfo[i][pLeader] == 5) { admtext = "Yakuza"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 6) { admtext = "LCN"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 7) { admtext = "Gradonacelnik"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 8) { admtext = "Hitman"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 9) { admtext = "Novinari"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 10) { admtext = "Taxi ORG"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 11) { admtext = "SF PD"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 12) { admtext = "Ruska Mafija"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 13) { admtext = "------------"; } //stavite koju ocete org ili stavite vasu novu org
else if(PlayerInfo[i][pLeader] == 14) { admtext = "------------"; } //stavite koju ocete org ili stavite vasu novu org
else if(PlayerInfo[i][pLeader] == 15) { admtext = "Clovers"; } //stavite koju ocete org
else if(PlayerInfo[i][pLeader] == 16) { admtext = "Bloods"; } //stavite koju ocete org
else { admtext = "------------"; }
GetPlayerName(i, sendername, sizeof(sendername));
if(AdminDuty[i] == 0)
{
format(string, 256, "%s ( %s )", sendername, admtext);
SendClientMessage(playerid, COLOR_WHITE, string);
}
else
{
    format(string, 256, "%s ( %s )", sendername, admtext);
SendClientMessage(playerid, COLOR_YELLOW, string);
}
}
}
}
return 1;
}


to to :D

Prvo citaj naslov teme.
Drugo ovo si samo izvuko iz nekog moda.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Decembar 13, 2012, 20:38:30 POSLE PODNE
Evo jedne funkcije koja vam može koristiti...

funkciju u koju upišete neki string (brojeve, slova...) i ona OD svakog unesenog znaka uzima ASCII vrijednost (npr. u ASCII tablici je veliko slovo C, 67) i zbraja je sa ostalim znakovima znači ako unesete velika slova C i D funkcija će returnati 135 (jer je C=67 D=68)... znači, na RP serveru svaki igrač ima svoje ime (Primjer: Kristijan_Stipic) funkcija ce uzeti ASCII vrijedost od

K-r-i-s-t-i-j-a-n-_-S-t-i-p-i-c

i time će returnati zbroj svih znakova u stringu ASCII vrijednosti, broj!

stock int:getAscii(tekst[]) // by Slay
{
   new
      ascii = (0);
   for(new i=0;i<strlen(tekst);++i)
   {
      if(tekst == '\0') break;
      ascii += (tekst);
   }
   return (ascii);
}

PRIMJER:

new
      primjerVarijabla[MAX_PLAYERS char] = (0);
primjerVarijabla{playerid} = (getAscii(GetName(playerid))); // OVO JE SAMO PRIMJER KAKO DA VRIJEDNOST PRENESETE U VARIJABLU ZA ONE KOJI NE ZNAJU
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Rossâ„¢ =] poslato Januar 06, 2013, 11:22:28 PRE PODNE
jao decki proso sam od 1. pa do 19. stranice,nea koju komandu nisam probo xD

hvala svima!
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Januar 20, 2013, 03:20:00 PRE PODNE
Evo bilo mi je malo dosadno pa sam se sjetio nečega šta može koristiti skripterima za RP servere.
Primjer: Ime_Prezime ti je dao $1000.
Primjetio sam da na većinu servera tako ispisuje ime igrača, pa sam mislio da bi više RP bilo kada bi bilo

Ime Prezime ti je dao $1000
Znači da prikazuje ime bez _

stock getName(playerid)
{
    new sNick_[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sNick_, MAX_PLAYER_NAME);
    for(new iX__ = (0); iX__ < strlen(sNick_); ++ iX__) if(sNick_[iX__] == '_') sNick_[iX__] = (32);
    return format(sNick_, MAX_PLAYER_NAME, "%s", sNick_), (sNick_);
}


VAŽNO: Skripteri početnici pripazite sa ovom funkcijom ako će te je koristiti, koristite je SAMO tamo di se ispisuje nick, znači tamo di je vidljivo jer ako je koristite za spremanje user accounta ili loadanje tu će nastati problemi tu nastavite koristiti GetName(playerid) i isto tako ako će te promjeniti iz getName u GetName onda će te imati problema sa loadanjem i spremanjem accounta i sa sscanf-om npr. /mojid ime_prezime - neće vam pronaći taj nick jer sscanf koristi GetName za provjeru U vrijednosti u parametrima... Eto, znači ime funkcije nemojte imati kao GetName, osim ako niste početnik pa znate kako se odnositi u tome slučaju.

Još jedan primjer, recimo da mi je nick na serveru Kristijan_Stipic

new string[64];
format(string, (sizeof string), "Moje ime je: %s", getName(playerid));
SendClientMessage(playerid, -1, string);


Server će ispisati poruku:

Moje ime je: Kristijan Stipic
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Joey_ poslato Januar 20, 2013, 14:07:20 POSLE PODNE
@Slay, evo malo bolje verzije (bez for petlje):

stock getName(playerid)
{
new pName[MAX_PLAYER_NAME], usPos;

GetPlayerName(playerid, pName, MAX_PLAYER_NAME);

usPos = strfind(pName, "_");

if (usPos != -1) pName[usPos] = ' ';
return pName;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Januar 20, 2013, 16:02:08 POSLE PODNE
Vidiš nisam se uopće sjetio strfind funkcije, hvala :)

EDIT: Nisam siguran ali mislim da moraš svejedno prvo formatirati cijeli string pa onda ga tek returnati, nisam na svom kompu pa ne mogu testati...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Joey_ poslato Januar 20, 2013, 16:14:41 POSLE PODNE
Ne trebaš, testirao sam ja već. :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Blaeks poslato Januar 21, 2013, 00:51:11 PRE PODNE
Citat: ZHIVAC poslato Januar 20, 2013, 16:17:01 POSLE PODNE
Pomoce Pocetnicima :D

da l si ti covece normalan? ovo su korisne funkcije a ne tutorijali
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Mart 02, 2013, 12:18:15 POSLE PODNE
Evo vam jedna funkcija koja vam omogućuje npr. preko dialoga kada upišete \n da postavi novi red, a ne da piše \n
Primjer u praksi:

Želite preko dialog inputa staviti 3DText string i ako koristite OVO JE NEKI TEKST\nA OVO JE NOVI RED
U 3Dtextu će biti  OVO JE NEKI TEKST\nA OVO JE NOVI RED
A trebalo bi biti:

OVO JE NEKI TEKST
A OVO JE NOVI RED

Razlog zašto je to tako je jednostavan, ASCII vrijednost kada koristite \n je 92 110 a novi red (\n) nije \+n nego \n kao cijela vrijednost isto kao što je LJ jedno slovo, a ne L+J (to su dva slova)

stock postaviNoviRed(string[]) // by Slay_
{
    for(new i = (0), s = strlen(string); i < s; ++ i)
    {
        if(string == 92 && string[i+1] == 110) // isto kao da sam koristio string == '\' && string[i+1] == 'n'
        {
            string = '\n'; // postavlja pravu vrijednost koju vi želite
            string[i+1] = '\r'; // vrača na početak linije
        }
    }
}


Sada ako želite npr. spremiti string u neki file, a taj string želite formatirati, nastat će problem jer korištenjem placeholdera %s će te izgubiti \n i to vam može postaviti problem, slijedeća funkcija će vam riješiti taj problem tako da će placeholder %s pripremiti na korištenje \ u stringu, a \ se u stringu može koristiti samo ako stavite duplu, primjer: \\

stock pripremiNoviRed(string[]) // by Slay_
{
    for(new i = (0), s = strlen(string); i < s; ++ i)
    {
        if(string == '\n' && string[i+1] == '\r')
        {
            string = '\\';
            string[i+1] = 'n'; // sprema string kao \n
        }
    }
}


Poz!

EDIT: ako nekoga zanima neki drugi znakovi ascii tablice ovo vam može pomoći
http://balkan-samp.com/forum/index.php?topic=66952.0

ili

http://www.asciitable.com/index/asciifull.gif
Naslov: Odg: Korisne skripte i kodovi
Poruka od: pax95 poslato Mart 18, 2013, 10:07:11 PRE PODNE
Citat: StjepanS poslato Mart 17, 2013, 10:02:28 PRE PODNE
Napravio sam da ukoliko imate pancirku u bilo kojem trenutku da vam se objekat pancirke stavi.


public OnPlayerUpdate(playerid)
{
new Float:armour;
for(new i=i;i<MAX_PLAYERS;i++)
{
   GetPlayerArmour(i, armour);// Funkcija koja provjerava vas Armour
   if(armour > 0.0)// Provjerava da li vam je armour veci od 0
   {
      SetPlayerAttachedObject(i, 6, 373, 1, 0.286006, -0.034657, -0.158132, 67.128456, 21.916156, 33.972290, 1.000000, 1.000000, 1.000000);// Stavlja objekt pancirke na slotu 6
   }
   else if(armour == 0.0)// Provjerava da li vam je armour na 0
   {
      RemovePlayerAttachedObject(i, 6);// Uklanja objekt pancirke na slotu 6
   }
}
return 0;
}


Naravno ovaj slot se moze mjenjat po vasem izboru, ali mora i na stvaranju i uklanjanju biti isti!
Nema potrebe za for petljom i loop-om igraca jer sam OnPlayerUpdate je tiimer koji se poziva nekoliko puta u sekundi. U prevodu izbaci for petlju i koristi playerid koji vec imas....
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato Mart 27, 2013, 00:19:50 PRE PODNE
Evo jednog načina za dinamične sustave kako da napravite da nemorate upisivati ID kuće i tako stalno morate paziti koji je zadnji ID i slično, ovo može raditi na svemu što spremate kao integer tj. broj npr. COS sustav ako vozila spremate po IDu i onda u scriptfiles/vozila/ imate

1.ini
2.ini
3.ini
i slicno

ali vam je problem kada radite dinamicno da morate upisivati rucno ID, ovo vam moze pomoci, ova funkcija ce automatski pronaci slobodan slot i returnat ga....

stock getEmptyID(const len, const lokacija[])
{
    new id = (-1);
    for(new loop = (0), provjera = (-1), Data_[64] = "\0"; loop != len; ++ loop)
    {
       provjera = (loop+1);
       format(Data_, (sizeof Data_), lokacija ,provjera);
       if(!fexist(Data_))
       {
          id = (provjera);
          break;
       }
   }
   return (id);
}


Znači sada jednostavno umjesto da admin koji kreira kuću/biz/vozilo mora upisivati ID u koji će spremiti podatke o nečemu samo stavite npr.

new houseid = getEmptyID(MAX_HOUSES, "Kuce/%d.ini");

i varijabla houseid ce postati vase rjesenje kao prvi slobodan slot... jer npr.
ako u folderu Kuce imate

1.ini
5.ini
9.ini

znaci ako nejde po redu funkcija ce returnati PRVO slobodno mjesto

2 pa 3 pa 4 pa onda 6, 7, 8 i tek onda 10 pa tako na dalje...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Blaeks poslato April 12, 2013, 12:16:10 POSLE PODNE
evo jedne kratke funkcije koja proverava da li ima ljudi u vozilu stock CheckPeopleInVehicle(vehicleid)
{
foreach(Player, i)
{
if(IsPlayerInAnyVehicle(i))
{
if(GetPlayerVehicleID(i) == vehicleid && i != GetVehicleDriver(vehicleid))
{
return 1;
}
}
}
return 0;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slay poslato April 12, 2013, 14:14:27 POSLE PODNE
GetVehicleDriver nije nativna funkcija...ako postavljas bez nativnih funkcija onda postavi kod
Naslov: Odg: Korisne skripte i kodovi
Poruka od: .ılllı. Wlseco .ılllı. poslato April 18, 2013, 14:31:55 POSLE PODNE
Evo komanda refresh kako bi se vratili u vw 0

YCMDYCMD:refresh(playerid, params[], help)
{
#pragma unused help
#pragma unused params
SetPlayerVirtualWorld(playerid, 0);
SendClientMessage(playerid, -1, "SERVER: Uspjesno ste osvjezeni - ukoliko imate jos problema obratite se adminima");
return 1;
}


ZCMDCMD:refresh(playerid, params[])
{
#pragma unused params
SetPlayerVirtualWorld(playerid, 0);
SendClientMessage(playerid, -1, "SERVER: Uspjesno ste osvjezeni - ukoliko imate jos problema obratite se adminima");
return 1;
}


STRCMP (njega ne preporucujem jer je najsporiji sistem komandi)if(strcmp(cmd, "/refresh", true) == 0)
{
SetPlayerVirtualWorld(playerid, 0);
SendClientMessage(playerid, -1, "SERVER: Uspjesno ste osvjezeni - ukoliko imate jos problema obratite se adminima");
return 1;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Nadroj poslato Maj 01, 2013, 09:13:35 PRE PODNE
EDIT: izvinjavam se ucinilo mi se da sam stavio u pdf korisne komande :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: --Lood-- poslato Maj 12, 2013, 22:05:55 POSLE PODNE
Evo nesto od mene.
Upitanju je VehicleRangeDetector
forward LooDDetectorV(Float:radi, playerid, vehicleid);
public LooDDetectorV(Float:radi, playerid, vehicleid)
{
    if(IsPlayerConnected(playerid))
   {
      new Float:posx, Float:posy, Float:posz;
      new Float:oldposx, Float:oldposy, Float:oldposz;
      new Float:tempposx, Float:tempposy, Float:tempposz;
      GetPlayerPos(playerid, oldposx, oldposy, oldposz);
      //radi = 2.0; //Trigger Radius
      GetVehiclePos(vehicleid, posx, posy, posz);
      tempposx = (oldposx -posx);
      tempposy = (oldposy -posy);
      tempposz = (oldposz -posz);
      if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
      {
         return 1;
      }
   }
   return 0;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: WilliamS poslato Jul 19, 2013, 12:49:54 POSLE PODNE
//Komande su beskorisne,i mozda ce odmognuti nekome
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Riv3R4 poslato Jul 19, 2013, 12:51:14 POSLE PODNE
brate pretjera ga ti ako ti je to korisno...  i ko to nezna napraviti 2 funkcije?
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Blaeks poslato Jul 19, 2013, 14:48:03 POSLE PODNE
procitaj naslov teme, dao si 2 bezkorisne i nepravilne komande
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Ermin. poslato Oktobar 27, 2013, 00:05:53 PRE PODNE
Citat: David (Sabljak) A.k.A SABO(T) poslato Jul 19, 2013, 20:10:17 POSLE PODNE
Citat: Willyâ,,¢ poslato Jul 19, 2013, 12:49:54 POSLE PODNE
Evo dve jednostavne komande...

CMD:heal(playerid, params [])
SendClientMessage(playerid,-1 "Izlecili ste se!");
SetPlayerHealth(playerid,100)

CMD:kill(playerid, params [])
SendClientMessage,-1 "Ubili ste se!");
SetPlayerHealth(playerid,0)



i ako ovo uspjies compilat dam ti moderatora :D

LOL :/

btw, da postavim neku funkciju nisam nikad, mozda i ima ova nisam gledo

stock izracunajPostotak(Float:postotak, broj)
{
       new Float:kolicina;
       kolicina = ((postotak / 100) * (broj));
       return kolicina;
}


jednostavno ali eto da postam sta bilo (spamerski post:D)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Vegas. poslato Januar 16, 2014, 23:55:34 POSLE PODNE
Veoma koristan kod u slučaju pozicioniranja igrača.

stock V_SetPos(playerid, Float:x, Float:y, Float:z, Float:a)
{
if(IsPlayerInAnyVehicle(playerid)) { SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z); SetVehicleZAngle(GetPlayerVehicleID(playerid), a); }
else { SetPlayerPos(playerid, x, y, z); SetPlayerFacingAngle(playerid, a); }
return 1;
}


Mali pokazatelj. YCMD:gethere(playerid, params[], help)
{
#pragma unused help
new igr, Float:X, Float:Y, Float:Z, Float:A; GetPlayerPos(playerid, X, Y, Z); GetPlayerFacingAngle(playerid, A);
if(sscanf(params, "")) returm SendClientMessage(playerid, -1, "/gethere [ID/Ime]");
V_SetPos(igr, X, Y, Z+2, A);
return 1;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Ermin. poslato Januar 18, 2014, 14:06:00 POSLE PODNE
Citat: Vegas. poslato Januar 16, 2014, 23:55:34 POSLE PODNE
Veoma koristan kod u slučaju pozicioniranja igrača.

stock V_SetPos(playerid, Float:x, Float:y, Float:z, Float:a)
{
if(IsPlayerInAnyVehicle(playerid)) { SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z); SetVehicleZAngle(GetPlayerVehicleID(playerid), a); }
else { SetPlayerPos(playerid, x, y, z); SetPlayerFacingAngle(playerid, a); }
return 1;
}


Mali pokazatelj. YCMD:gethere(playerid, params[], help)
{
#pragma unused help
new igr, Float:X, Float:Y, Float:Z, Float:A; GetPlayerPos(playerid, X, Y, Z); GetPlayerFacingAngle(playerid, A);
if(sscanf(params, "")) returm SendClientMessage(playerid, -1, "/gethere [ID/Ime]");
V_SetPos(igr, X, Y, Z+2, A);
return 1;
}


Ovo bi trebalo postavit igracevo vozilo na koordinate a igraca izbacit iz vozila ? Ili ?
Izvini ako sam te pogresno razumio :D ;)

stock v_SetPos(playerid, Float:x, Float:y, Float:z, Float:a, inte = 0, world = 0, bool:iVehicle = false)
{
    if( iVehicle )
    {
        if( IsPlayerInAnyVehicle( playerid ) )
        {
            new
                veh = GetPlayerVehicleID( playerid );
                iSeat = GetPlayerVehicleSeat( playerid );
            ;
            SetVehiclePos( veh, x, y, z );
            SetVehicleZAngle( veh, a );
            if( inte != 0 )
            {
                LinkVehicleToInterior( veh, inte );
            }
            if( world != 0 )
            {
                SetVehicleVirtualWorld( veh, world );
            }
            PutPlayerInVehicle( playerid, iSeat );
        }
    }
    else
    {
        SetPlayerPos( playerid, x, y, z );
        SetPlayerInterior( playerid, inte );
        SetPlayerVirtualWorld( playerid, world );
    }
    return 1;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: yabb3 poslato Februar 17, 2014, 18:20:27 POSLE PODNE
Jednostavan headshot sistem za 0.3z

new JeDobioVuglu[MAX_PLAYERS];

forward OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart);
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
{
    if(bodypart == HIT_HEAD) // Glava
    {
        if(PlayerInfo[playerid][AdminNaDuÅ¡nostiVarijabla] != 1) // Admin protekcija
        {
    if(AkoJeHitman(issuerid)) // Ako je pripadnik odreÄ'ene organizacije
    {
        switch(weaponid)
        {
            case 22,23,24,25,26,27,28,29,30,31,32,33,34: // tip Oružija
            {
                SetPlayerHealth(playerid, 0);
                JeDobioVuglu[playerid] = 1;
}
}
}
else
{
    switch(weaponid) // Ako je Snajper
    {
        case 34:
        {
            SetPlayerHealth(playerid, 0);
            JeDobioVuglu[playerid] = 1;
}
}
}
}
}
        if(PlayerInfo[issuerid][JeAdmin] == 1 && PlayerInfo[playerid][AdminNaDužnosti] == 1) // Ako je admin na dužnosti
{
return 0;
}
        return 1;
}


Funkcija ako je hitmen

forward AkoJeHitman(playerid);
public AkoJeHitman(playerid)
{
if(IsPlayerConnected(playerid)) // ako je konektovan
{
    new leader = PlayerInfo[playerid][pLeader]; // lider
    new member = PlayerInfo[playerid][pMember]; // member
    if(member==ID ORGANIZACIJE) // ako je member organizacije te i te
    {
return 1;
}
else if(leader==ID ORGANIZACIJE) // ako je lider organizacije te i te
{
    return 1;
}
}
return 0;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Blaeks poslato Februar 17, 2014, 18:33:21 POSLE PODNE
AkoJeHitman - zanimljiva funkcija
Naslov: Odg: Korisne skripte i kodovi
Poruka od: yabb3 poslato Februar 17, 2014, 18:34:39 POSLE PODNE
Citat: Blaeks poslato Februar 17, 2014, 18:33:21 POSLE PODNE
AkoJeHitman - zanimljiva funkcija

Primera radi...

Eto dodata je i primer funkcija ako je hitmen.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Blaeks poslato Februar 17, 2014, 18:35:40 POSLE PODNE
Citat: |BN| - Niko poslato Februar 17, 2014, 18:34:39 POSLE PODNE
Citat: Blaeks poslato Februar 17, 2014, 18:33:21 POSLE PODNE
AkoJeHitman - zanimljiva funkcija

Primera radi...
los primer, upotrebis funkciju a ne das njen kod
Naslov: Odg: Korisne skripte i kodovi
Poruka od: קlเשค poslato Februar 19, 2014, 09:59:08 PRE PODNE
...Niko...
lijepo od tebe,ali svakako ne preporucam ovaj kod.

Cemo carijabla i zbog cega je ona integer,ako vec ima potrebe za njom:
JeDobioVuglu
Naslov: Odg: Korisne skripte i kodovi
Poruka od: yabb3 poslato Februar 25, 2014, 04:16:52 PRE PODNE
Citat: קlเשà¸,, poslato Februar 19, 2014, 09:59:08 PRE PODNE
...Niko...
lijepo od tebe,ali svakako ne preporucam ovaj kod.

Cemo carijabla i zbog cega je ona integer,ako vec ima potrebe za njom:
JeDobioVuglu

Pa ona se može upotrebiti dalje (tipa Hitmen) za ugovore, ostavita je ideja pa ko ima maÅ¡te samo nadograÄ'uje
Naslov: Odg: Korisne skripte i kodovi
Poruka od: LuKsA poslato Februar 26, 2014, 15:15:45 POSLE PODNE
Dijelomično istina, može se koristiti dalje, ali na tebi je da daš korisnu skriptu ili kod, a ne varijablu koja se može koristiti dalje; To bi igrači sami morali raditi, ukoliko žele. Ovako stavljaš totalno bespotrebnu varijablu koja neće biti nigdje korištena osim za assignanje integera "1" njoj.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: yabb3 poslato Februar 26, 2014, 16:22:03 POSLE PODNE
Citat: LuKsA poslato Februar 26, 2014, 15:15:45 POSLE PODNE
Dijelomično istina, može se koristiti dalje, ali na tebi je da daš korisnu skriptu ili kod, a ne varijablu koja se može koristiti dalje; To bi igrači sami morali raditi, ukoliko žele. Ovako stavljaš totalno bespotrebnu varijablu koja neće biti nigdje korištena osim za assignanje integera "1" njoj.

Razumem sad, hvala tebi i mr. Blaeksu na savetima
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Blazey poslato Februar 28, 2014, 01:06:16 PRE PODNE
Po što su ovo korisne/skripte kodovi,npr : možeteli nešto napraviti npr.Materijal kako treba to uraditi u modu i povezati samo sa bandom? nezz smijeli se tražiti zahtjevi ovde,ali po što vidim ne piše nigjde ako sam pogrješio delete odma post :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Blaeks poslato Februar 28, 2014, 01:15:23 PRE PODNE
Citat: RoleX :) poslato Februar 28, 2014, 01:06:16 PRE PODNE
Po što su ovo korisne/skripte kodovi,npr : možeteli nešto napraviti npr.Materijal kako treba to uraditi u modu i povezati samo sa bandom? nezz smijeli se tražiti zahtjevi ovde,ali po što vidim ne piše nigjde ako sam pogrješio delete odma post :D
nisi shvatio razlog otvaranja teme ? ovo nisu tutoriali
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Blazey poslato Februar 28, 2014, 01:17:55 PRE PODNE
Citat: Blaeks poslato Februar 28, 2014, 01:15:23 PRE PODNE
Citat: RoleX :) poslato Februar 28, 2014, 01:06:16 PRE PODNE
Po što su ovo korisne/skripte kodovi,npr : možeteli nešto napraviti npr.Materijal kako treba to uraditi u modu i povezati samo sa bandom? nezz smijeli se tražiti zahtjevi ovde,ali po što vidim ne piše nigjde ako sam pogrješio delete odma post :D
nisi shvatio razlog otvaranja teme ? ovo nisu tutoriali
Dobro po što baš i nisam skontao ali nema veze,pobriši nam postove ako hočeš :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: קlเשค poslato Mart 02, 2014, 22:18:04 POSLE PODNE
Evo korisne stvari.Nije skripta,ali je Online Tidy Pawn.Odnosno ureÄ'uje vaÅ¡ kod.Ukoliko imate primjera radi:
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/help", true)){
SendClientMessage(playerid, 0xFFFFFFFF, "SERVER: This is the /help command!");
return 1;
}
return 0;
}


VaÅ¡ kod nakon ureÄ'ivanja ce izgledati ovako:

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/help", true))
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "SERVER: This is the /help command!");
        return 1;
    }
    return 0;
}


Link: http://pliva.bu-rp.info/pawn/ (http://pliva.bu-rp.info/pawn/)

Online editor nisam ja napravio,ali odlucio sam ga postaviti na web jer vidim da imaju mnogi problema s tim.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [PL]Roberto_Escobar poslato Avgust 12, 2014, 00:30:07 PRE PODNE
Pozdrav, pomocu ove komande mozete izbrisati vozilo koje ste uzeli na /veh.To ostane na serveru i onda uzmu igraci i bude dosta problema :D Zato sam odlucio postavit ovaj kod :)
CMD:bveh(playerid, params[], help)
{

    new vehicle = GetPlayerVehicleID(playerid);
if(PlayerInfo[playerid][pAdmin] < 1) return SCM(playerid, COLOR_GREY,"{FF6600}* {FFFFFF}Ne mozes ti to!"), PlayerPlaySound(playerid, 1085, 0, 0 , 0);
    if(!IsACreatedCar(vehicle)) return SendClientMessage(playerid, COLOR_GREY,"{FF6600}* {FFFFFF}Mozes da obrises samo stvorena vozila");
if(IsPlayerInAnyVehicle(playerid))
{
        new sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new string[256];
    format(string, 256, "{FFFFFF}[{FF6600}WARN{FFFFFF}]: %s {FFFFFF}je unistio vozilo: {FF6600}%d.",sendername,GetPlayerVehicleID(playerid));
SendAdminMessage(-1, string);
    DestroyVehicle(GetPlayerVehicleID(playerid));
RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid, COLOR_GREY, "{FF6600}* {FFFFFF}Vozilo unisteno!");
}
return 1;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: dr.нoυѕe poslato Januar 06, 2015, 22:13:21 POSLE PODNE
Korisno ukoliko pravite srw da se netko ne može koristit odreÄ'ene nickove sa drugih srwa od admina,da njima ne može naÅ¡tetiti da izgube pozicije.


public OnPlayerConnect(playerid)
{
   new ime[MAX_PLAYER_NAME];
   GetPlayerName(playerid, ime, sizeof(ime));
   if(strcmp(ime, "Ime_Prezime", false)
   SendClientMessage(playerid, -1, "INFO: Razlog.:");
   Ban(playerid);
   return 1;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: ▂ ▃ ▅ Rudimental ▅ ▃ ▂ poslato Januar 24, 2015, 00:52:36 PRE PODNE
BUMP
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [CH]Lenon poslato Januar 24, 2015, 13:08:23 POSLE PODNE
Posto je ProxDetector zastario (inace sluzio je za slanje poruke u odredjenom rangeu), evo vam nesto savremenije :D



stock SendMessageToRange(color, message[], Float:range, Float:X, Float:Y, Float:Z)
{
foreach(Player, i)
{
if(IsPlayerInRangeOfPoint(i, range, X, Y, Z))
SendClientMessage(i, color, message);
}
return true;
}


Potrevan vam je include "foreach", njega mozete skinuti ovdje: KLIKNI ME (http://forum.sa-mp.com/showthread.php?t=92679).

Primjer koristenja:


public OnPlayerText(playerid, text[])
{
    new ime[MAX_PLAYER_NAME], string[128], Float:X, Float:Y, Float:Z;
    GetPlayerName(playerid, ime, sizeof(ime));
    GetPlayerPos(playerid, X, Y, Z);
    format(string, sizeof(string), "%s: %s", ime, text);
    SendMessageToRange(-1, string, 20.0, X, Y, Z);
    return 0;
}



CREDITS: forum.sa-mp.com
Naslov: Odg: Korisne skripte i kodovi
Poruka od: dock poslato Februar 16, 2015, 03:31:43 PRE PODNE
Imao sam potrebu da napravim ovo za jedan sistem, deluje kao fina f-ja koju samp team nije ubacio a trebalo je..

#define OUTPUT_SIZE     128
stock strreplace(string[],strsize,what[],withwhat[]) {
new pos = strfind(string,what,true);
new whatsize = strlen(what);
new withwhatsize = strlen(withwhat);
new currentsize = strlen(string);
if(pos != -1) {
    if(currentsize - whatsize + withwhatsize <= strsize) {
        strdel(string, pos, pos + whatsize);
        strins(string, withwhat, pos, strsize);
    }
}
new output[OUTPUT_SIZE]; format(output,OUTPUT_SIZE,"%s",string);
return output;
}


Primer koriscenja:


print(strreplace(string,sizeof(string),"jebem","*****"));


u sustini meni je trebalo zbog dinamicnog sistema bandi za DM server gde ima tagova za nickove.. neke bande imaju tag u formatu [F]IME[A] pa da bih mogao da napravim takve tagove dinamicno koristio sam ovo..

Hope it helps somebody

*OUTPUT_SIZE sam stavio na 128 radi testiranja, ukoliko vam nije potreban toliko veliki output size ili vam je premali vi promenite.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: arnel avdic poslato April 20, 2015, 18:15:47 POSLE PODNE
Evo ovako da napišem jednu skripticu pomoću koje možete ,u ovom mom slučaju prijavljivati bugove IG te se to sacuva u fajl jedan .

Prvo idemo includovati sve potrebno
#include <a_samp>
#include <zcmd>
#include <sscanf2>

Zatim definišemo fajl u koji ćemo spremati bugove u ovom slucaju to je scriptfiles ---> Bug Log.txt
#define FAJL_BUG_LOG            "Bug Log.txt"

Zatim pravimo komandu jednu sa kojom prijavljujemo bugove !
CMD:prijavibug(playerid,params[])
{
new result[256];
if(sscanf(params, "s[100]", result)) return SendClientMessage(playerid,-1,"[ Koristi ] /prijavibug [tekst]");
SendClientMessage(playerid,-1,"[BUG] Uspješno ste prijavili bug !");
  new unos[200];
format(unos, 200, "|| PRIJAVA BUGA || Igrac :%s || Bug: %s", GetName(playerid),result);
UpisiLog(FAJL_BUG_LOG, unos);
return 1;
}


Ovaj stock je najbitniji u cijeloj skripti jer sa njim cemo upisati bug u datoteku !
stock UpisiLog(fajl[], string[])
{
new unos[256];
new sat, minut, sekund, dan, mesec, godina;
gettime(sat, minut, sekund);
getdate(godina, mesec, dan);
format(unos, 256, "[%d/%d/%d - %d:%d:%d] %s\r\n", dan, mesec, godina, sat, minut, sekund, string);
new File:hFile;
hFile = fopen(fajl, io_append);
fwrite(hFile, unos);
fclose(hFile);
}
stock GetName(playerid)
{
new JName[MAX_PLAYER_NAME];
GetPlayerName(playerid,JName,MAX_PLAYER_NAME);
return JName;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Crazyn3ss poslato April 21, 2015, 15:23:37 POSLE PODNE
stock GetPlayerID(const ime[])
{
    for(new i; i<MAX_PLAYERS; i++)
    {
        new ime2[MAX_PLAYER_NAME];
        GetPlayerName(i, ime2, sizeof(ime2));
        if(strcmp(ime, ime2, true)==0)
        {
          return i;
        }
    }
    return -1;
}


s foreachom
stock GetPlayerID(const ime[])
{
    foreach(Player, i)
{
        new ime2[MAX_PLAYER_NAME];
        GetPlayerName(i, ime2, sizeof(ime2));
        if(strcmp(ime, ime2, true)==0)
        {
          return i;
        }
    }
    return -1;
}



pomocu ovog koda mozete otkrit id igraca preko njegovog imena, ja sam sebi ovo jos davno napravio, za prodaju imovine, evo kako se moze iskoristiti:


   
new idigraca = GetPlayerID(KucaInfo[i][kVlasnik]);//ovaj i oznacava id kuce
if(IsPlayerConnected(idigraca))
{
SCM(idigraca, -1, "Admin je prodo vasu kucu");
PlayerInfo[idigraca][pKucaKljuc] = -1;
}


ovo se odnosi kad igracu prodajete imovinu a on je na serveru, i onda cemo izbacit ovu poruku
Naslov: Odg: Korisne skripte i kodovi
Poruka od: [CH]Lenon poslato April 21, 2015, 15:48:24 POSLE PODNE
Citat: Crazyn3ss poslato April 21, 2015, 15:23:37 POSLE PODNE
stock GetPlayerID(const ime[])
{
    for(new i; i<MAX_PLAYERS; i++)
    {
        new ime2[MAX_PLAYER_NAME];
        GetPlayerName(i, ime2, sizeof(ime2));
        if(strcmp(ime, ime2, true)==0)
        {
          return i;
        }
    }
    return -1;
}


pomocu ovog koda mozete otkrit id igraca preko njegovog imena, ja sam sebi ovo jos davno napravio, za prodaju imovine, evo kako se moze iskoristiti:


   new IME[MAX_PLAYER_NAME];
new idigraca = GetPlayerID(KucaInfo[i][kVlasnik]);//ovaj i oznacava id kuce
if(IsPlayerConnected(idigraca))
{
SCM(idigraca, -1, "Admin je prodo vasu kucu");
PlayerInfo[idigraca][pKucaKljuc] = -1;
}


Zasto for petlja? Ovdje ti je bolje foreach staviti, da ti petlja prolazi kroz sve online igrace, a sa MAX_PLAYERS ti prolazi kroz sve slotove (zavisi koliko si ih definisao).
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Crazyn3ss poslato April 21, 2015, 17:32:21 POSLE PODNE
znam ja to sve, kod mene je foreach, al da sam njega stavio bio bi komenatar zasto foreach kad ga ne koriste svi, al dodat cu sad i tako
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Sonwebrt poslato Jul 13, 2015, 23:40:36 POSLE PODNE
Dali mozete mi dati skriptu kad admin pise na /b da je sa zuta boja a gm kad pise sa plava boja
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Vuzimir poslato Jul 14, 2015, 10:07:24 PRE PODNE
Citat: Sonwebrt poslato Jul 13, 2015, 23:40:36 POSLE PODNE
Dali mozete mi dati skriptu kad admin pise na /b da je sa zuta boja a gm kad pise sa plava boja

CMD:b(playerid, params[])
{
if (isnull(params)) return SendClientMessage(playerid, -1, "{C0C0C0}USAGE: /b < message >");

new Float:X, Float:Y, Float:Z, String[128], Name[25];

GetPlayerPos(playerid, X, Y, Z);
GetPlayerName(playerid, Name, 25);
if(PlayerInfo[playerid][pAdmin] > 0)
        {
format(String, 128, "(( [%d] %s: {FFFF00}%s{FFFFFF} ))", playerid, Name, params);
        }
        else if(PlayerInfo[playerid][pGM] > 0)
        {
format(String, 128, "(( [%d] %s: {0080FF}%s{FFFFFF} ))", playerid, Name, params);
        }
        else
        {
         format(String, 128, "(( [%d] %s: %s ))", playerid, Name, params);
        }

for(new i = 0; i < MAX_PLAYERS; i++)
{
    if (IsPlayerInRangeOfPoint(i, X, Y, Z))
    {
        SendClientMessage(playerid, 0xC0C0C0FF, String);
}
}

return true;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Yoker00 poslato Novembar 26, 2015, 15:01:09 POSLE PODNE
Da li moze neko da mi da sistem admin slotova znci kad postavljam admina pise id level i slot to da se sprema u ini formatu tj da vec imaju ini formati i ono se samo upisuje i brise kad skidam i cmd /admini da pise offline i online admini. Hvala unapred :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Niksaâ„¢ poslato Februar 04, 2016, 20:54:23 POSLE PODNE
Evo da i ja nesto dam :D. Koristen je ZCMD i sscanf2.

CMD:skin(playerid, params[])
{
new skinnumber, skinid, msg[128];
if(sscanf(params, "s", skinid)) return SendClientMessage(playerid, 0xFFFFAA, "INFO: /skin [skinID]");
else if(skinid < 0 || skinid > 299) return SendClientMessage(playerid, 0xFFFFAA, "Nevazeci skin ID.");
else if(IsPlayerAdmin(playerid) == 1) return SendClientMessage(playerid, 0xFFFFAA, "INFO: /skin [skinID]");
else
{
    SetPlayerSkin(playerid, skinid);
    skinnumber = GetPlayerSkin(playerid);
    format(msg, sizeof(msg), "Uspjesno ti je postavljen skin %s.", skinnumber);
    SendClientMessage(playerid, -1, msg);
}
return 1;
}


CMD:kick(playerid, params[])
{
new targetid;
if(sscanf(params, "d", targetid)) return SendClientMessage(playerid, 0xFFFFAA, "INFO: /kick [playerid]");
else if(IsPlayerAdmin(playerid) == 1) return SendClientMessage(playerid, 0xFFFFAA, "Nisi admin.");
else
{
    Kick(targetid);
}
return 1;
}

CMD:ban(playerid, params[])
{
new targetid;
if(sscanf(params, "d", targetid)) return SendClientMessage(playerid, 0xFFFFAA, "INFO: /ban [playerid]");
else if(IsPlayerAdmin(playerid) == 1) return SendClientMessage(playerid, 0xFFFFAA, "Nisi admin.");
else
{
    Ban(targetid);
}
return 1;
}



I ak moze jedno pitanje. Zasto kad ja napravim filterscript i ubacim, udjem u srw i ne rade komande
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Keno_Caponee poslato Jun 09, 2016, 18:53:16 POSLE PODNE
Evo za muziku bre !

[pawn]YCMD:playmusic(playerid, params[], help)
{
    #pragma unused help
    new
        link[128];
    if (sscanf(params, "s[128]", link)) return SCM (playerid, -1, "/playmusic [link]");
    else
    {
        foreach (Player, i)
      {
         PlayAudioStreamForPlayer(i, link);
      }
    }
   return 1;
}[/pawn]
Naslov: Odg: Korisne skripte i kodovi
Poruka od: berroni.pwn poslato Avgust 25, 2016, 20:02:45 POSLE PODNE
Briše oružje

forward RemoveWeapon(playerid);
public RemoveWeapon(playerid)
{
    ResetPlayerWeapons(playerid);
    SendClientMessage(playerid,red,"Your weapons have been removed.");
return 1;
}
Naslov: Odg: Korisne skripte i kodovi
Poruka od: index poslato Decembar 31, 2016, 17:07:46 POSLE PODNE
Evo jedno resenje za warning loose indetitaion
Ovo upisati na vrhu skripte
[pawn]#Pragma tabsize 0[/pawn]
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato Januar 15, 2017, 03:19:36 PRE PODNE
Citat: Jevtic Script poslato Decembar 31, 2016, 17:07:46 POSLE PODNE
Evo jedno resenje za warning loose indetitaion
Ovo upisati na vrhu skripte
[pawn]#Pragma tabsize 0[/pawn]
Jeste li vi realni kakve vi gluposti ovde stavljate? Kao prvo mogu da dokazem da ne znas ni sta znaci pragma a ni tabsize a ni 0 ta, a i bas je tesko poravnat linije.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: xsar.p poslato Januar 24, 2017, 16:27:16 POSLE PODNE
Eh, sada, vidim, da svi objavljuju ovde neke kodove  ::)
I resio sam i ja da objavim jedan, dakle, ovo je, kada igrac promasi rcon, server ga banuje. Korisno je. :D

                                                       Pod OnRconLoginAttempt ubacite ovo:
public OnRconLoginAttempt(ip[], password[], success)
{
    if(!success)
    {
        printf("Krivi RCON login | IP: %s | Password pokusaja %s",ip, password);
        new pip[16];
        for(new i=0; i<MAX_PLAYERS; i++)
        {
            GetPlayerIp(i, pip, sizeof(pip));
            if(!strcmp(ip, pip, true))
            {
                SendClientMessage(i, 0xFFFFFFFF, "Adio, Krivi Password!!");
                SetTimerEx("KonektBan", 1000, 0, "d", i);
            }
        }
    }
    return 1;
}



                                                                           Zatim, tamo gde su vam forwardovi.

Ako zelite da ga srw kickuje!

forward KonektKick(playerid);
public KonektKick(playerid)
{
Kick(playerid);
return 1;
}


A, ukoliko zelite da igrac dobije ban, stavite ovako.

forward KonektBan(playerid);
public KonektBan(playerid)
{
Ban(playerid);
return 1;
}


Credits: Skripteru Winchester RP (nisam siguran da je tacno ime)
Kod je uzet sa Winchester RP Skripte!


Naslov: Odg: Korisne skripte i kodovi
Poruka od: Muma poslato Februar 25, 2017, 15:37:21 POSLE PODNE
Kada igrač pada može iskoristiti animacije da bi preživio pad, pa evo kako bi mogli da spriječite abuse, samo ovo dodajte kod svake animacije.

[pawn]if( GetPlayerAnimationIndex( playerid ) == 1130 ) return SendClientMessage( playerid, "{FF0000}[GREŠKA] {FFFFFF}Ne možeš sada koristiti animacije!" );[/pawn]
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Fqris poslato Mart 16, 2017, 15:44:45 POSLE PODNE
Jel ima neko skriptu za pustanje muzike sa yt.. da je preko linka ili da upisem samo ime pjesme :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Bolex_ poslato April 29, 2017, 14:31:32 POSLE PODNE
Pozdrav svima,
Vidim da je ovaj PF neaktivan i da treba da se malo ukljucimo. Nista toliko tesko ili sa mukom cu vam pokazati dvije jako korisne komande koju dosta njih trazi a ne znaju kako da to urade.

1. Komanda za davanje plaće administraciji ( Mozete i mijenjati za Promotere/Gamemastere itd )

(http://i.imgur.com/eEwyk3t.jpg?1)

[pawn]
CMD:asplaca(playerid, params[])
{
    new AS_PLACA, string[100], e_Name[24];
    if(sscanf(params,"d",AS_PLACA)) return SendClientMessage( playerid, -1, "{FF8000}[!]: {FFFFFF}/asplaca (kolicina)");
    if(!IsPlayerAdmin(playerid)) return SendClientMessage( playerid, -1, "{FF8000}[!]: {FFFFFF}Nemate ovlasti za koristenje ove komande!");
    GetPlayerName(playerid, e_Name,sizeof(e_Name));
    format( string,sizeof(string), "{FF8000}[ASPLACA] {FFFFFF}Vlasnik: %s je podijelio placu za administraciju u iznosu ($%d)", e_Name, AS_PLACA );
    for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++) if(IsPlayerAdmin(playerid))
    {
        GivePlayerMoney( i, AS_PLACA);
        SendClientMessage( i, -1, string);
    }
    return 1;
}
[/pawn]



Postavite svoju provjeru dali je korisnik administrator/vlasnik:

[pawn]if(!IsPlayerAdmin(playerid)) return SendClientMessage( playerid, -1, "{FF8000}[!]: {FFFFFF}Nemate ovlasti za koristenje ove komande!");[/pawn]




Postavite provjeru dali je igrac admin ili ti administrator kako bi se samo njima slao novac i poslao poruku

[pawn] for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++) if(IsPlayerAdmin(playerid)) //To se nalazi tu if(IsPlayerAdmin(playerid))[/pawn]




2. Komanda za izbacivanje suputnika u vozilu

- Tu vam necu nista objasnjavati, nadam se da znate cemu ovo sluzi

[pawn]
CMD:izbaciputnika( playerid, params[ ] )
{
    new vehicleid, vcount, string[40], e_Name[24], playerstate = GetPlayerState( playerid );
    GetPlayerName(playerid, e_Name,sizeof(e_Name));

   if ( !IsPlayerInAnyVehicle( playerid ) )
      return SendClientMessage( playerid,-1, "Niste ni u jednom vozilu" );

   if ( playerstate == PLAYER_STATE_PASSENGER )
      return SendClientMessage( playerid,-1, "Suputnici ne mogu korisiti ovu komandu!" );

    vehicleid = GetPlayerVehicleID( playerid );

    foreach(new i: Player)
    {
        if ( IsPlayerInVehicle( i, vehicleid ) && i != playerid )
        {
            vcount++;
            RemovePlayerFromVehicle( i );
            format( string,sizeof(string), "Izbaceni ste iz %s vozila", e_Name );
            SendClientMessage( i, -1, string);
        }
   }
    if ( vcount == 0 )
    {
        SendClientMessage( playerid,-1, "Nema suputnika u tvom vozilu" );
        return 1 ;
    }
    return 1 ;
}
[/pawn]

- Uskoro stize jos toga ukoliko nadem vremena. Ako vas nesto zanima i zelite da nesto uradim pitajte ovdje !




Naslov: Odg: Korisne skripte i kodovi
Poruka od: lyutox poslato April 29, 2017, 14:36:54 POSLE PODNE
Odlicno
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Bolex_ poslato April 29, 2017, 17:29:20 POSLE PODNE
Hvala, Inace ako imate kakva pitanja, ili trebate komande bla bla pitajte ovdje. Dok imam vremena uradim nesto na brzinu
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato April 29, 2017, 23:20:23 POSLE PODNE
Jedan kod koji sam uradio iz dosade, radio sam nekih 5 min (nisam testirao al trebalo bi raditi)

[pawn]CMD:makechatbubble(playerid, params[])
{
   new id,tekst[20],drawdistanca,globalni[128];
   if(sscanf(params,"u[24]s[20]i",id,tekst,drawdistanca)) return SendClientMessage(playerid, -1, "/makechatbubble (playername/id) (tekst - max 20 slova) (draw distanca)");
   if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "Korisnik nije na serveru!");
   if(strlen(tekst) < 1 || strlen(tekst) > 20) return SendClientMessage(playerid, -1, "Tekst ne moze biti manji od 1 slova ili veci od 20 slova!");
   if(drawdistanca < 5 || drawdistanca > 15) return SendClientMessage(playerid, -1, "Draw distanca ne moze biti manja od 5 i veca od 15");
   SetPlayerChatBubble(id, tekst, 0xFFFFFFFF, drawdistanca, 86400000);
   format(globalni,sizeof(globalni), "Igraču %s ste postavili chat bubble sa tekstom %s", GetName(id), tekst);
   SendClientMessage(playerid, -1, globalni);
   format(globalni,sizeof(globalni), "Administrator %s vam je postavio chat bubble sa tekstom %s!", GetName(playerid), tekst);
   SendClientMessage(id, -1, globalni);
   return 1;
}[/pawn]

[pawn]GetName(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    return name;
}
[/pawn]
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Vasic poslato Maj 20, 2017, 11:48:17 PRE PODNE
Evo kod da vam vas server ne crasha.
------------------------------------------------------------
[pawn]//=======================================[ AntiCrasher by Cyllox ]=======================================//
public OnPlayerUpdate(playerid)
{
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) {
    new Float:vec[3];
    GetPlayerCameraFrontVector(playerid, vec[0], vec[1], vec[2]);
    new bool:possible_crasher = false; for (new i = 0; !possible_crasher && i < sizeof(vec); i++)
    if (floatabs(vec) > 10.0) possible_crasher = true;
    if (possible_crasher) return 1;
}
[/pawn]
------------------------------------------------------------
Nadam se da ce vam pomoci :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: B185 poslato Maj 20, 2017, 12:31:44 POSLE PODNE
Kao sto kazu, ProxDetector je malo zastareo, pa sam uradio malo jednostavnije:

Inlcude Foreach mozete skinete ovde: KLINKI (http://forum.sa-mp.com/showthread.php?t=92679)

[pawn]stock RadiusPoruka(Float:Radius, playerid, color, const string[])
{
   new Float:Pos[3];
   GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
   foreach(new i : Player)
   {
      if( IsPlayerInRangeOfPoint(i, Radius, Pos[0], Pos[1], Pos[2]))
      {
         SendClientMessage(i, color, string);
      }
   }
   return false;
}[/pawn]
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato Maj 21, 2017, 17:53:20 POSLE PODNE
Citat: RESPOSNE poslato Maj 20, 2017, 12:31:44 POSLE PODNE
Kao sto kazu, ProxDetector je malo zastareo, pa sam uradio malo jednostavnije:

Inlcude Foreach mozete skinete ovde: KLINKI (http://forum.sa-mp.com/showthread.php?t=92679)

[pawn]stock RadiusPoruka(Float:Radius, playerid, color, const string[])
{
   new Float:Pos[3];
   GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
   foreach(new i : Player)
   {
      if( IsPlayerInRangeOfPoint(i, Radius, Pos[0], Pos[1], Pos[2]))
      {
         SendClientMessage(i, color, string);
      }
   }
   return false;
}[/pawn]
[pawn]RadiusPoruka(Float:Radius, playerid, color, const string[])
{
    new Float:PosX,Float:PosY,Float:PosZ;
    GetPlayerPos(playerid, PosX, PosY, PosZ);
    foreach(Player, i)
    {
        if(IsPlayerInRangeOfPoint(i, Radius, PosX, PosY, PosZ))
        {
            SendClientMessage(i, color, string);
        }
    }
    return false;
}[/pawn]
Eto poboljsano zbog memorije, gj za ovo :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: B185 poslato Maj 21, 2017, 21:01:07 POSLE PODNE
Evo uradio sam nesto sto je mnogo bolje i manje pisanje na jednoj linija, u vezi dozvole, logovanja i ostalih errora za komande.

[pawn]PRIMER:

if(PlayerInfo[playerid][pAdmin] < 4) return errorMessage(playerid, 1); // Kao sto je uradjeno pod stockom, samo stavimo mesto teksta id te poruke koju zelite da stavite.
if(UlogovanProvera[playerid] == 0) return errorMessage(playerid, 2); // Sada smo stavili id 2 to je kada je igrac na loginu ili registeru da mu izadje text pod id 2.

stock errorMessage(playerid, id)
{
   switch(id)
   {
       case 01: SendErrorMessage(playerid, "Nemate dozvolu da koristite ovu komandu.");
       case 02: SendErrorMessage(playerid, "Morate biti ulogovani da bi ste koristili komandu.");
       case 03: SendErrorMessage(playerid, "Morate biti na duznosti da bi ste koristili komandu.");
       case 04: SendErrorMessage(playerid, "Odabrani igrac je van mreze.");
   }
   return 1;
}
[/pawn]
Naslov: Odg: Korisne skripte i kodovi
Poruka od: andr00- poslato Maj 21, 2017, 21:04:41 POSLE PODNE
Citat: RESPOSNE poslato Maj 21, 2017, 21:01:07 POSLE PODNE
Evo uradio sam nesto sto je mnogo bolje i manje pisanje na jednoj linija, u vezi dozvole, logovanja i ostalih errora za komande.

[pawn]PRIMER:

if(PlayerInfo[playerid][pAdmin] < 4) return errorMessage(playerid, 1); // Kao sto je uradjeno pod stockom, samo stavimo mesto teksta id te poruke koju zelite da stavite.
if(UlogovanProvera[playerid] == 0) return errorMessage(playerid, 2); // Sada smo stavili id 2 to je kada je igrac na loginu ili registeru da mu izadje text pod id 2.

stock errorMessage(playerid, id)
{
   switch(id)
   {
       case 01: SendErrorMessage(playerid, "Nemate dozvolu da koristite ovu komandu.");
       case 02: SendErrorMessage(playerid, "Morate biti ulogovani da bi ste koristili komandu.");
       case 03: SendErrorMessage(playerid, "Morate biti na duznosti da bi ste koristili komandu.");
       case 04: SendErrorMessage(playerid, "Odabrani igrac je van mreze.");
   }
   return 1;
}
[/pawn]
Dobra ideja, good job. :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: B185 poslato Maj 21, 2017, 21:33:33 POSLE PODNE
Citat: Łukmember=1996][/member] link=topic=4245.msg727852#msg727852 date=1495382000]
Citat: RESPOSNE poslato Maj 20, 2017, 12:31:44 POSLE PODNE
Kao sto kazu, ProxDetector je malo zastareo, pa sam uradio malo jednostavnije:

Inlcude Foreach mozete skinete ovde: KLINKI (http://forum.sa-mp.com/showthread.php?t=92679)

[pawn]stock RadiusPoruka(Float:Radius, playerid, color, const string[])
{
   new Float:Pos[3];
   GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
   foreach(new i : Player)
   {
      if( IsPlayerInRangeOfPoint(i, Radius, Pos[0], Pos[1], Pos[2]))
      {
         SendClientMessage(i, color, string);
      }
   }
   return false;
}[/pawn]
[pawn]RadiusPoruka(Float:Radius, playerid, color, const string[])
{
    new Float:PosX,Float:PosY,Float:PosZ;
    GetPlayerPos(playerid, PosX, PosY, PosZ);
    foreach(Player, i)
    {
        if(IsPlayerInRangeOfPoint(i, Radius, PosX, PosY, PosZ))
        {
            SendClientMessage(i, color, string);
        }
    }
    return false;
}[/pawn]
Eto poboljsano zbog memorije, gj za ovo :D

Hvala :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: B185 poslato Maj 21, 2017, 21:40:04 POSLE PODNE
Citat: anDro_ poslato Maj 21, 2017, 21:04:41 POSLE PODNE
Citat: RESPOSNE poslato Maj 21, 2017, 21:01:07 POSLE PODNE
Evo uradio sam nesto sto je mnogo bolje i manje pisanje na jednoj linija, u vezi dozvole, logovanja i ostalih errora za komande.

[pawn]PRIMER:

if(PlayerInfo[playerid][pAdmin] < 4) return errorMessage(playerid, 1); // Kao sto je uradjeno pod stockom, samo stavimo mesto teksta id te poruke koju zelite da stavite.
if(UlogovanProvera[playerid] == 0) return errorMessage(playerid, 2); // Sada smo stavili id 2 to je kada je igrac na loginu ili registeru da mu izadje text pod id 2.

stock errorMessage(playerid, id)
{
   switch(id)
   {
       case 01: SendErrorMessage(playerid, "Nemate dozvolu da koristite ovu komandu.");
       case 02: SendErrorMessage(playerid, "Morate biti ulogovani da bi ste koristili komandu.");
       case 03: SendErrorMessage(playerid, "Morate biti na duznosti da bi ste koristili komandu.");
       case 04: SendErrorMessage(playerid, "Odabrani igrac je van mreze.");
   }
   return 1;
}
[/pawn]
Dobra ideja, good job. :)

Hvala :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: B185 poslato Maj 28, 2017, 20:25:17 POSLE PODNE
Uradio sam System Reporta, Svako ko zeli da koristi ovaj system neka prilagodi svom modu.

[pawn]//==============================================================================
//                          SYSTEM REPORT
//                     SCRIPTED BY RESPONSE
//                          VERSION v1.0
//==============================================================================
#include <YSI\y_hooks>
#include <YSI\y_va>
#include <sscanf2>
#include <zcmd>
//==============================================================================
#define MAX_REPORTS 10
//==============================================================================
enum report
{
   report_ID,
   report_Name[MAX_PLAYER_NAME+1],
   report_Text[200],
   report_Answer[200],
}
new reportInfo[MAX_REPORTS][report];
//==============================================================================
enum fullReport
{
   full_Reports,
}
new fullInfo[fullReport];
//==============================================================================
enum playerReport
{
   player_Report,
   player_Reported,
   player_Reports[200],
}
new playerInfo[MAX_PLAYERS][playerReport];
//==============================================================================
// Moze da stavite komandu CMD: ili YCMD:(TO AKO KORISTITE y_commands);
command(report, playerid, params[])
{
   new text[200];
   if(playerInfo[playerid][player_Report] == 1) return SendClientMessage(playerid, -1, "Vec imate postavljen report!");
   if(fullInfo[full_Reports] == 10) return SendClientMessage(playerid, -1, "Trenutno ne mozete postaviti report!");
   if(sscanf(params, "s[200]", text)) return SendClientMessage(playerid, -1,  "/report [Text]");
   creatingReport(reportingID, text, GetName(playerid));
   fullInfo[full_Reports]++;
   playerInfo[playerid][player_Reported] = fullInfo[full_Reports];
   
   SendClientMessage(playerid, -1, "Vas report je poslat, administracija ga trenutno obradjuje!");
   SendClientMessage(playerid, -1, "Da vidite odgovor na vas report kucajte -> '/viewasnwer'.");
   return 1;
}
//==============================================================================
// Moze da stavite komandu CMD: ili YCMD:(TO AKO KORISTITE y_commands);
command(viewanswer, playerid, params[])
{
    new id = playerInfo[playerid][player_Reported];
    if(playerInfo[playerid][player_Report] == 0) return SendClientMessage(playerid, -1, "Nemate postavljen report!");
    format(playerInfo[playerid][player_Reports], 200, reportInfo[id][report_Answer]);
    va_SendClientMessage(playerid, -1, "'%s'.", playerInfo[playerid][player_Reports]);
   
    playerInfo[playerid][player_Report] = 0;
    playerInfo[playerid][player_Reported] = -1;
    format(playerInfo[playerid][player_Reports], 200, "Empty");
    fullInfo[full_Reports]--;
    return 1;
}
//==============================================================================
stock creatingReport(reportingID, reportingText[200], reportingName[MAX_PLAYER_NAME+1]) // Kreiraj report fajl;
{
    reportInfo[reportingID][report_ID] = fullInfo[full_Reports];
    format(reportInfo[reportingID][report_Name], MAX_PLAYER_NAME+1, reportingName);
    format(reportInfo[reportingID][report_Text], 200, reportingText);
    format(reportInfo[reportingID][report_Answer], 200, "Empty");
    return 1;
}
//==============================================================================[/pawn]

Naslov: Odg: Korisne skripte i kodovi
Poruka od: B185 poslato Maj 28, 2017, 20:31:21 POSLE PODNE
Citat: RESPOSNE poslato Maj 28, 2017, 20:25:17 POSLE PODNE
Uradio sam System Reporta, Svako ko zeli da koristi ovaj system neka prilagodi svom modu.

[pawn]//==============================================================================
//                          SYSTEM REPORT
//                     SCRIPTED BY RESPONSE
//                          VERSION v1.0
//==============================================================================
#include <YSI\y_hooks>
#include <YSI\y_va>
#include <sscanf2>
#include <zcmd>
//==============================================================================
#define MAX_REPORTS 10
//==============================================================================
enum report
{
   report_ID,
   report_Name[MAX_PLAYER_NAME+1],
   report_Text[200],
   report_Answer[200],
}
new reportInfo[MAX_REPORTS][report];
//==============================================================================
enum fullReport
{
   full_Reports,
}
new fullInfo[fullReport];
//==============================================================================
enum playerReport
{
   player_Report,
   player_Reported,
   player_Reports[200],
}
new playerInfo[MAX_PLAYERS][playerReport];
//==============================================================================
// Moze da stavite komandu CMD: ili YCMD:(TO AKO KORISTITE y_commands);
command(report, playerid, params[])
{
   new text[200];
   if(playerInfo[playerid][player_Report] == 1) return SendClientMessage(playerid, -1, "Vec imate postavljen report!");
   if(fullInfo[full_Reports] == 10) return SendClientMessage(playerid, -1, "Trenutno ne mozete postaviti report!");
   if(sscanf(params, "s[200]", text)) return SendClientMessage(playerid, -1,  "/report [Text]");
   creatingReport(reportingID, text, GetName(playerid));
   fullInfo[full_Reports]++;
   playerInfo[playerid][player_Reported] = fullInfo[full_Reports];
   
   SendClientMessage(playerid, -1, "Vas report je poslat, administracija ga trenutno obradjuje!");
   SendClientMessage(playerid, -1, "Da vidite odgovor na vas report kucajte -> '/viewasnwer'.");
   return 1;
}
//==============================================================================
// Moze da stavite komandu CMD: ili YCMD:(TO AKO KORISTITE y_commands);
command(viewanswer, playerid, params[])
{
    new id = playerInfo[playerid][player_Reported];
    if(playerInfo[playerid][player_Report] == 0) return SendClientMessage(playerid, -1, "Nemate postavljen report!");
    format(playerInfo[playerid][player_Reports], 200, reportInfo[id][report_Answer]);
    va_SendClientMessage(playerid, -1, "'%s'.", playerInfo[playerid][player_Reports]);
   
    playerInfo[playerid][player_Report] = 0;
    playerInfo[playerid][player_Reported] = -1;
    format(playerInfo[playerid][player_Reports], 200, "Empty");
    fullInfo[full_Reports]--;
    return 1;
}
//==============================================================================
stock creatingReport(reportingID, reportingText[200], reportingName[MAX_PLAYER_NAME+1]) // Kreiraj report fajl;
{
    reportInfo[reportingID][report_ID] = fullInfo[full_Reports];
    format(reportInfo[reportingID][report_Name], MAX_PLAYER_NAME+1, reportingName);
    format(reportInfo[reportingID][report_Text], 200, reportingText);
    format(reportInfo[reportingID][report_Answer], 200, "Empty");
    return 1;
}
//==============================================================================[/pawn]

Izaci ce vam Error za GetName, evo vam i taj kod, naravno ko nema u modu, a ko ima, nece da pravi nikakve probleme, enjoy! :D

[pawn]stock GetName(playerid)
{
   new Ime_Igraca[MAX_PLAYER_NAME];
   GetPlayerName(playerid, Ime_Igraca, MAX_PLAYER_NAME);
   return Ime_Igraca;
}[/pawn]
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato Maj 29, 2017, 19:56:50 POSLE PODNE
Citat: RESPOSNE poslato Maj 28, 2017, 20:31:21 POSLE PODNE
Citat: RESPOSNE poslato Maj 28, 2017, 20:25:17 POSLE PODNE
Uradio sam System Reporta, Svako ko zeli da koristi ovaj system neka prilagodi svom modu.

[pawn]//==============================================================================
//                          SYSTEM REPORT
//                     SCRIPTED BY RESPONSE
//                          VERSION v1.0
//==============================================================================
#include <YSI\y_hooks>
#include <YSI\y_va>
#include <sscanf2>
#include <zcmd>
//==============================================================================
#define MAX_REPORTS 10
//==============================================================================
enum report
{
   report_ID,
   report_Name[MAX_PLAYER_NAME+1],
   report_Text[200],
   report_Answer[200],
}
new reportInfo[MAX_REPORTS][report];
//==============================================================================
enum fullReport
{
   full_Reports,
}
new fullInfo[fullReport];
//==============================================================================
enum playerReport
{
   player_Report,
   player_Reported,
   player_Reports[200],
}
new playerInfo[MAX_PLAYERS][playerReport];
//==============================================================================
// Moze da stavite komandu CMD: ili YCMD:(TO AKO KORISTITE y_commands);
command(report, playerid, params[])
{
   new text[200];
   if(playerInfo[playerid][player_Report] == 1) return SendClientMessage(playerid, -1, "Vec imate postavljen report!");
   if(fullInfo[full_Reports] == 10) return SendClientMessage(playerid, -1, "Trenutno ne mozete postaviti report!");
   if(sscanf(params, "s[200]", text)) return SendClientMessage(playerid, -1,  "/report [Text]");
   creatingReport(reportingID, text, GetName(playerid));
   fullInfo[full_Reports]++;
   playerInfo[playerid][player_Reported] = fullInfo[full_Reports];
   
   SendClientMessage(playerid, -1, "Vas report je poslat, administracija ga trenutno obradjuje!");
   SendClientMessage(playerid, -1, "Da vidite odgovor na vas report kucajte -> '/viewasnwer'.");
   return 1;
}
//==============================================================================
// Moze da stavite komandu CMD: ili YCMD:(TO AKO KORISTITE y_commands);
command(viewanswer, playerid, params[])
{
    new id = playerInfo[playerid][player_Reported];
    if(playerInfo[playerid][player_Report] == 0) return SendClientMessage(playerid, -1, "Nemate postavljen report!");
    format(playerInfo[playerid][player_Reports], 200, reportInfo[id][report_Answer]);
    va_SendClientMessage(playerid, -1, "'%s'.", playerInfo[playerid][player_Reports]);
   
    playerInfo[playerid][player_Report] = 0;
    playerInfo[playerid][player_Reported] = -1;
    format(playerInfo[playerid][player_Reports], 200, "Empty");
    fullInfo[full_Reports]--;
    return 1;
}
//==============================================================================
stock creatingReport(reportingID, reportingText[200], reportingName[MAX_PLAYER_NAME+1]) // Kreiraj report fajl;
{
    reportInfo[reportingID][report_ID] = fullInfo[full_Reports];
    format(reportInfo[reportingID][report_Name], MAX_PLAYER_NAME+1, reportingName);
    format(reportInfo[reportingID][report_Text], 200, reportingText);
    format(reportInfo[reportingID][report_Answer], 200, "Empty");
    return 1;
}
//==============================================================================[/pawn]

Izaci ce vam Error za GetName, evo vam i taj kod, naravno ko nema u modu, a ko ima, nece da pravi nikakve probleme, enjoy! :D

[pawn]stock GetName(playerid)
{
   new Ime_Igraca[MAX_PLAYER_NAME];
   GetPlayerName(playerid, Ime_Igraca, MAX_PLAYER_NAME);
   return Ime_Igraca;
}[/pawn]

stock izbriši, stavi samo

[pawn]GetName(playerid)
{
   new Ime_Igraca[MAX_PLAYER_NAME];
   GetPlayerName(playerid, Ime_Igraca, MAX_PLAYER_NAME);
   return Ime_Igraca;
}
[/pawn]
TakoÄ'er rekao sam ti i za bool, gj :)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: CADILAB poslato Maj 29, 2017, 20:04:01 POSLE PODNE
kakve veze ima to sa stockom vidim spominjes vec par puta ?
to apsolutno nikakve veze nema, stock koristis samo ako funkciju pozivas vise puta ili nikako a suprotno ako je pozivas sigurno.
sve je stvar navike ako je navikao sa stockom neka pise tako, to je isto kao da si ti desnjak i neko ti dodje i natera da pises levom rukom.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato Maj 29, 2017, 20:13:29 POSLE PODNE
Citat: Cadilab poslato Maj 29, 2017, 20:04:01 POSLE PODNE
kakve veze ima to sa stockom vidim spominjes vec par puta ?
to apsolutno nikakve veze nema, stock koristis samo ako funkciju pozivas vise puta ili nikako a suprotno ako je pozivas sigurno.
sve je stvar navike ako je navikao sa stockom neka pise tako, to je isto kao da si ti desnjak i neko ti dodje i natera da pises levom rukom.
stock se većinom koristi samo u includeovima, jer tu ne znaš hoće li onaj koji bude koristio taj include pozivati ikako tu funkciju.

> http://wiki.sa-mp.com/wiki/Stock#stock
Citatstock is used to declare variables and functions which may not be used but which you don't want to generate unused warnings for
@Cadilab 
Naslov: Odg: Korisne skripte i kodovi
Poruka od: CADILAB poslato Maj 29, 2017, 20:23:23 POSLE PODNE
to je do njih kako vec koriste, ono sto ja pokusavam reci

CitatAdding that modifier won't make a difference, it will NEVER make your function faster nor slower. Your piece of code reflects the optimization and the speed of it. For example, calculating something very intensive in your function will obviously make that function "abit" slower than the normal one having nothing just a "printf()" statement for say.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato Maj 29, 2017, 20:32:07 POSLE PODNE
Citat: Cadilab poslato Maj 29, 2017, 20:23:23 POSLE PODNE
to je do njih kako vec koriste, ono sto ja pokusavam reci

CitatAdding that modifier won't make a difference, it will NEVER make your function faster nor slower. Your piece of code reflects the optimization and the speed of it. For example, calculating something very intensive in your function will obviously make that function "abit" slower than the normal one having nothing just a "printf()" statement for say.
Ja samo preporucujem da koriste bez stocka, jer to prikriva warninge, ako ne koristis, a nekad i kad koristis stock, a ne koristis tu funkciju, ne prikazuje ti warning, a nepotrebna ti je, tkd
Naslov: Odg: Korisne skripte i kodovi
Poruka od: B185 poslato Maj 29, 2017, 20:46:34 POSLE PODNE
Pa koliko zna stock ne kvari nista, jeste da neko koristi bez stocka, ali ja sam navikao za stock i to je to. Problem nije nikakav sa stockom ili ne, bitno je da funkcionise kako treba;)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Bolex_ poslato Maj 29, 2017, 21:51:11 POSLE PODNE
Cemu toliki problemi dali uzimat sa stock ili bez. S ovim primjerom što je pokazao @Łuk@ dobit ce te "warn" u slucaju da ne koristis tu "funkciju". Prvu samo ignorira/unused
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato Maj 30, 2017, 00:25:04 PRE PODNE
Citat: Bolex_ poslato Maj 29, 2017, 21:51:11 POSLE PODNE
Cemu toliki problemi dali uzimat sa stock ili bez. S ovim primjerom što je pokazao @Łuk@ dobit ce te "warn" u slucaju da ne koristis tu "funkciju". Prvu samo ignorira/unused
dap :3
Naslov: Odg: Korisne skripte i kodovi
Poruka od: anderson87 poslato Jun 02, 2017, 00:31:55 PRE PODNE
Ev i ja da objavim ingame postavljanje opena nadam se da ce nekom posluzit

Komanda pomocu koje ce te mjenjati hostname ali ja cu vam dati samo za postavljanje opena ingame

[pawn]#define Info(%0,%1) SendClientMessage(%0, -1, "{0B68F4}Info: {FFFFFF}"%1)[/pawn]

[pawn]#define SERVER          "{0B68F4}"
#define ZELENA          "{408080}"[/pawn]





[pawn]YCMD:server(playerid, params[], help)
{
    #pragma unused help
   D_Show(playerid, 0, DSL, ""SERVER"Balkan Gaming - Changer",""BELA"Hostname", odaberi, odustani);
   return 1;
}[/pawn]

[pawn]Dialog:0(playerid, response, listitem, inputtext[])
{
   if(!response) return 1;
   D_Show(playerid, 1, DSL, ""SERVER"Balkan Gaming Hostname",""BELA"[1] Open", odaberi, odustani);
   return 1;
}[/pawn]

[pawn]Dialog:1(playerid, response, listitem, inputtext[])
{
   if(!response) return 1;
    switch(listitem)
     {
         case 0:
         {
             D_Show(playerid, 2, DSI, ""SERVER"Balkan Gaming Hostname",""BELA"Unesite datum i vrijeme u koliko ce se sati otvoriti server!", unesi, odustani);
      }
   }
}[/pawn]

[pawn]Dialog:2(playerid, response, listitem, inputtext[])
{
   if(!response) return 1;
    if(response)
    {
      new string[500], dan, mjesec, sat, minuta, ezy[500], ezyy[500];
      if(sscanf(inputtext, "iiii", dan, mjesec, sat, minuta)) return D_Show(playerid, 348, DSI, ""SERVER"Balkan Gaming Hostname",""BELA"Unesite datum i vrijeme u koliko ce se sati otvoriti server!", unesi, odustani);
      if(dan < 0 || dan > 31) return Info(playerid, "U mjesecu ne moze biti vise od 31 dana i manje od 0!");
      if(mjesec < 0 || mjesec > 12) return Info(playerid, "U godini ne moze biti vise od 12 mjeseci i manje od 0!");
      // ================================================================== //
      if(sat < 0 || sat > 24) return Info(playerid, "U danu ne moze biti vise od 24 sata i manje od 0!");
      if(minuta < 0 || minuta > 60) return Info(playerid, "U satu ne moze biti vise od 60 minuta i manje od 0!");
      format(string, sizeof(string), "hostname BG: Big Open [ %d.%d || %d:%dH ] || Ocekujemo vas!", dan, mjesec, sat ,minuta);
      SendRconCommand(string);
      // ================================================================== //
      format(ezy, sizeof(ezy), ""SERVER"BIG OPEN: "BELA"Veliko Otvorenjo zakazano je za %d.%d u %d:%d sati.", dan, mjesec, sat ,minuta);
      format(ezyy, sizeof(ezyy), "Owner "BELA"%s "ZELENA"je zakazao datum za Veliko Otvorenje "BELA"!", GetName(playerid));
      SCM(playerid, -1, ezy);
      SCM(playerid, zelena, ezyy);
      SendRconCommand("password bgamingscript");
      // ================================================================== //
   }
}[/pawn]

Napomena: Ja sam koristio easyDialog za krieranje dialoga vi mozete staviti ispor OnDialogResponse takoder ako imate dialogid sa 0,1,2 izmjenite jer ce doci do mjesanja dialoga, i ako neku boju nisam gore define mozete je sami definisati

Ako bude kakvih problema javite se ptem PM da sredimo
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato Jun 02, 2017, 03:59:16 PRE PODNE
Citat: няÏ...Ñ•Ñ,αиσνιÏ, poslato Jun 02, 2017, 00:31:55 PRE PODNE
Ev i ja da objavim ingame postavljanje opena nadam se da ce nekom posluzit

Komanda pomocu koje ce te mjenjati hostname ali ja cu vam dati samo za postavljanje opena ingame

[pawn]#define Info(%0,%1) SendClientMessage(%0, -1, "{0B68F4}Info: {FFFFFF}"%1)[/pawn]

[pawn]#define SERVER          "{0B68F4}"
#define ZELENA          "{408080}"[/pawn]





[pawn]YCMD:server(playerid, params[], help)
{
    #pragma unused help
   D_Show(playerid, 0, DSL, ""SERVER"Balkan Gaming - Changer",""BELA"Hostname", odaberi, odustani);
   return 1;
}[/pawn]

[pawn]Dialog:0(playerid, response, listitem, inputtext[])
{
   if(!response) return 1;
   D_Show(playerid, 1, DSL, ""SERVER"Balkan Gaming Hostname",""BELA"[1] Open", odaberi, odustani);
   return 1;
}[/pawn]

[pawn]Dialog:1(playerid, response, listitem, inputtext[])
{
   if(!response) return 1;
    switch(listitem)
     {
         case 0:
         {
             D_Show(playerid, 2, DSI, ""SERVER"Balkan Gaming Hostname",""BELA"Unesite datum i vrijeme u koliko ce se sati otvoriti server!", unesi, odustani);
      }
   }
}[/pawn]

[pawn]Dialog:2(playerid, response, listitem, inputtext[])
{
   if(!response) return 1;
    if(response)
    {
      new string[500], dan, mjesec, sat, minuta, ezy[500], ezyy[500];
      if(sscanf(inputtext, "iiii", dan, mjesec, sat, minuta)) return D_Show(playerid, 348, DSI, ""SERVER"Balkan Gaming Hostname",""BELA"Unesite datum i vrijeme u koliko ce se sati otvoriti server!", unesi, odustani);
      if(dan < 0 || dan > 31) return Info(playerid, "U mjesecu ne moze biti vise od 31 dana i manje od 0!");
      if(mjesec < 0 || mjesec > 12) return Info(playerid, "U godini ne moze biti vise od 12 mjeseci i manje od 0!");
      // ================================================================== //
      if(sat < 0 || sat > 24) return Info(playerid, "U danu ne moze biti vise od 24 sata i manje od 0!");
      if(minuta < 0 || minuta > 60) return Info(playerid, "U satu ne moze biti vise od 60 minuta i manje od 0!");
      format(string, sizeof(string), "hostname BG: Big Open [ %d.%d || %d:%dH ] || Ocekujemo vas!", dan, mjesec, sat ,minuta);
      SendRconCommand(string);
      // ================================================================== //
      format(ezy, sizeof(ezy), ""SERVER"BIG OPEN: "BELA"Veliko Otvorenjo zakazano je za %d.%d u %d:%d sati.", dan, mjesec, sat ,minuta);
      format(ezyy, sizeof(ezyy), "Owner "BELA"%s "ZELENA"je zakazao datum za Veliko Otvorenje "BELA"!", GetName(playerid));
      SCM(playerid, -1, ezy);
      SCM(playerid, zelena, ezyy);
      SendRconCommand("password bgamingscript");
      // ================================================================== //
   }
}[/pawn]

Napomena: Ja sam koristio easyDialog za krieranje dialoga vi mozete staviti ispor OnDialogResponse takoder ako imate dialogid sa 0,1,2 izmjenite jer ce doci do mjesanja dialoga, i ako neku boju nisam gore define mozete je sami definisati

Ako bude kakvih problema javite se ptem PM da sredimo
Nista pretesko,
imas gresku u kodu
-
[pawn]return D_Show(playerid, 348, DSI, ""SERVER"Bal[/pawn]
Trebao si provjeru napraviti za sve mjesece kad vec to radis
[pawn]if(dan < 0 || dan > 31) return Info(playerid, "U mjesecu ne moze biti vise od 31 dana i manje od 0!");[/pawn]
Npr da ako stavi mjesec 2, da ne moze vise od 28 dana itd
Moglo se sve oko lagano uraditi u jednoj komandi al et,
i ovo...
[pawn]new string[500];[/pawn]...
Naslov: Odg: Korisne skripte i kodovi
Poruka od: anderson87 poslato Jun 02, 2017, 07:34:11 PRE PODNE
Citat: Łukmember=1996][/member] link=topic=4245.msg730661#msg730661 date=1496368756]
Nista pretesko,
imas gresku u kodu
-
[pawn]return D_Show(playerid, 348, DSI, ""SERVER"Bal[/pawn]
Trebao si provjeru napraviti za sve mjesece kad vec to radis
[pawn]if(dan < 0 || dan > 31) return Info(playerid, "U mjesecu ne moze biti vise od 31 dana i manje od 0!");[/pawn]
Npr da ako stavi mjesec 2, da ne moze vise od 28 dana itd
Moglo se sve oko lagano uraditi u jednoj komandi al et,
i ovo...
[pawn]new string[500];[/pawn]...
Nema potrebe praviti provjeru za sve mjesece imas mjesec i dan koji postavljas za open i ja da sam htio uraditi u jednoj komandi uradio bi
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato Jun 03, 2017, 13:50:40 POSLE PODNE
Citat: няÏ...Ñ•Ñ,αиσνιÏ, poslato Jun 02, 2017, 07:34:11 PRE PODNE
Citat: Łukmember=1996][/member] link=topic=4245.msg730661#msg730661 date=1496368756]
Nista pretesko,
imas gresku u kodu
-
[pawn]return D_Show(playerid, 348, DSI, ""SERVER"Bal[/pawn]
Trebao si provjeru napraviti za sve mjesece kad vec to radis
[pawn]if(dan < 0 || dan > 31) return Info(playerid, "U mjesecu ne moze biti vise od 31 dana i manje od 0!");[/pawn]
Npr da ako stavi mjesec 2, da ne moze vise od 28 dana itd
Moglo se sve oko lagano uraditi u jednoj komandi al et,
i ovo...
[pawn]new string[500];[/pawn]...
Nema potrebe praviti provjeru za sve mjesece imas mjesec i dan koji postavljas za open i ja da sam htio uraditi u jednoj komandi uradio bi
pda, stavis open u drugom mjesecu 31og dana.., ako vec radis, misli na sve
Naslov: Odg: Korisne skripte i kodovi
Poruka od: anderson87 poslato Jun 04, 2017, 14:47:49 POSLE PODNE
Citat: Łukmember=1996][/member] link=topic=4245.msg731193#msg731193 date=1496490640]
Citat: няÏ...Ñ•Ñ,αиσνιÏ, poslato Jun 02, 2017, 07:34:11 PRE PODNE
Citat: Łukmember=1996][/member] link=topic=4245.msg730661#msg730661 date=1496368756]
Nista pretesko,
imas gresku u kodu
-
[pawn]return D_Show(playerid, 348, DSI, ""SERVER"Bal[/pawn]
Trebao si provjeru napraviti za sve mjesece kad vec to radis
[pawn]if(dan < 0 || dan > 31) return Info(playerid, "U mjesecu ne moze biti vise od 31 dana i manje od 0!");[/pawn]
Npr da ako stavi mjesec 2, da ne moze vise od 28 dana itd
Moglo se sve oko lagano uraditi u jednoj komandi al et,
i ovo...
[pawn]new string[500];[/pawn]...
Nema potrebe praviti provjeru za sve mjesece imas mjesec i dan koji postavljas za open i ja da sam htio uraditi u jednoj komandi uradio bi
pda, stavis open u drugom mjesecu 31og dana.., ako vec radis, misli na sve
Jel ti vidis provjeru za mjesec i dan? ako stavi mjesec 2 onda ce logicno staviti i koji je dan a provjera je da ne moze biti vise od 31 dan u mjesecu sto je naravno vece od 28 i logicno je da 2 mjesec ima 28 dana
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato Jun 10, 2017, 23:43:51 POSLE PODNE
Citat: няÏ...Ñ•Ñ,αиσνιÏ, poslato Jun 04, 2017, 14:47:49 POSLE PODNE
Citat: Łukmember=1996][/member] link=topic=4245.msg731193#msg731193 date=1496490640]
Citat: няÏ...Ñ•Ñ,αиσνιÏ, poslato Jun 02, 2017, 07:34:11 PRE PODNE
Citat: Łukmember=1996][/member] link=topic=4245.msg730661#msg730661 date=1496368756]
Nista pretesko,
imas gresku u kodu
-
[pawn]return D_Show(playerid, 348, DSI, ""SERVER"Bal[/pawn]
Trebao si provjeru napraviti za sve mjesece kad vec to radis
[pawn]if(dan < 0 || dan > 31) return Info(playerid, "U mjesecu ne moze biti vise od 31 dana i manje od 0!");[/pawn]
Npr da ako stavi mjesec 2, da ne moze vise od 28 dana itd
Moglo se sve oko lagano uraditi u jednoj komandi al et,
i ovo...
[pawn]new string[500];[/pawn]...
Nema potrebe praviti provjeru za sve mjesece imas mjesec i dan koji postavljas za open i ja da sam htio uraditi u jednoj komandi uradio bi
pda, stavis open u drugom mjesecu 31og dana.., ako vec radis, misli na sve
Jel ti vidis provjeru za mjesec i dan? ako stavi mjesec 2 onda ce logicno staviti i koji je dan a provjera je da ne moze biti vise od 31 dan u mjesecu sto je naravno vece od 28 i logicno je da 2 mjesec ima 28 dana
[pawn]if(mjesec == 2)
{
    if(dan <= 0 || dan >= 29)
    {
       SendClientMessage(playerid, -1, "kurac");
    }
    else
    {
       ..
    }
}[/pawn]
A sta ako pogrijesi dan ? stavi slucajno 30 ? eh, kad vec radis, misli na sve.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slade poslato Jun 21, 2017, 23:16:28 POSLE PODNE
Formatiranje broja , urednije razdvajanje.
[pawn]stock formatNum(number) {

   new
      numStr[32],
      numLen,
      bool:negativeFlag
   ;

   if(number < 0) {

       negativeFlag = true;
       number = -number;
   }
   valstr(numStr, number, false);

   for(numLen = strlen(numStr); numLen > 3; numLen -= 3)
      strins(numStr, ",", numLen - 3, sizeof(numStr));
   
   if(negativeFlag)
       strins(numStr, "-", 0, sizeof(numStr));

   return numStr;
}[/pawn]




Primjer:
Bez korištenja
Brojevi:
10
100
1000
10000
100000
1000000

Sa korištenjem
10
100
1,000
10,000
100,000
1,000,000



Zasluge: Lordzy
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato Jun 25, 2017, 00:13:37 PRE PODNE
Citat: Slade poslato Jun 21, 2017, 23:16:28 POSLE PODNE
Formatiranje broja , urednije razdvajanje.
[pawn]stock formatNum(number) {

   new
      numStr[32],
      numLen,
      bool:negativeFlag
   ;

   if(number < 0) {

       negativeFlag = true;
       number = -number;
   }
   valstr(numStr, number, false);

   for(numLen = strlen(numStr); numLen > 3; numLen -= 3)
      strins(numStr, ",", numLen - 3, sizeof(numStr));
   
   if(negativeFlag)
       strins(numStr, "-", 0, sizeof(numStr));

   return numStr;
}[/pawn]




Primjer:
Bez korištenja
Brojevi:
10
100
1000
10000
100000
1000000

Sa korištenjem
10
100
1,000
10,000
100,000
1,000,000



Zasluge: Lordzy

Najs
Naslov: Odg: Korisne skripte i kodovi
Poruka od: xsar.p poslato Jul 10, 2017, 00:47:20 PRE PODNE
Evo i ja ovde nesto da objavim.
Uglavnom, ovo je obican stock, koji vam moze dosta pomoci, da ne morate stalno pisati SendClientMessage.
Samo dodate return Ovlascen(playerid);
Define Boje:


[pawn]
#define CRVENA          "{F81414}"
#define BELA            "{FFFFFF}"
[/pawn]


[pawn]
stock Ovlascen(playerid)
{
SCM(playerid,-1,""CRVENA"[SG] "BELA"Niste ovlasteni za koristenje ove komande");
return 1;
}
[/pawn]
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato Jul 10, 2017, 21:41:46 POSLE PODNE
Citat: SejnurHD poslato Jul 10, 2017, 00:47:20 PRE PODNE
Evo i ja ovde nesto da objavim.
Uglavnom, ovo je obican stock, koji vam moze dosta pomoci, da ne morate stalno pisati SendClientMessage.
Samo dodate return Ovlascen(playerid);
Define Boje:


[pawn]
#define CRVENA          "{F81414}"
#define BELA            "{FFFFFF}"
[/pawn]


[pawn]
stock Ovlascen(playerid)
{
SCM(playerid,-1,""CRVENA"[SG] "BELA"Niste ovlasteni za koristenje ove komande");
return 1;
}
[/pawn]
Moze ovo i pod define
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slade poslato Avgust 06, 2017, 18:47:53 POSLE PODNE
Citat: Łukmember=1996][/member] link=topic=4245.msg742669#msg742669 date=1499715706]
Citat: SejnurHD poslato Jul 10, 2017, 00:47:20 PRE PODNE
Evo i ja ovde nesto da objavim.
Uglavnom, ovo je obican stock, koji vam moze dosta pomoci, da ne morate stalno pisati SendClientMessage.
Samo dodate return Ovlascen(playerid);
Define Boje:


[pawn]
#define CRVENA          "{F81414}"
#define BELA            "{FFFFFF}"
[/pawn]


[pawn]
stock Ovlascen(playerid)
{
SCM(playerid,-1,""CRVENA"[SG] "BELA"Niste ovlasteni za koristenje ove komande");
return 1;
}
[/pawn]
Moze ovo i pod define

[pawn]#define NoPerm(%0) \
   SendClientMessage(%0, -1, "{F81414}[Server] {FFFFFF}Nisi ovlascen.")[/pawn]
[pawn]else return NoPerm( id );[/pawn]
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Muslimovic poslato Avgust 08, 2017, 13:26:11 POSLE PODNE
Jel može pomoć ? Novi sam pa ne znam . Počeo sam da pravim svoj mod jer mi je tako najlakse skontati , kad imam svoje cmd i to, dal bi neko poslao mod koji ima samo register i login odnosno save/load.Bio bi mu zahvalan? Nije server upste MySQL nego obicni , cuo sam da nije to tesko narpaviti samo ako se neko razumije u to
Naslov: Odg: Korisne skripte i kodovi
Poruka od: ogil poslato Avgust 08, 2017, 13:48:50 POSLE PODNE
Citat: Mevlo Kapić poslato Avgust 08, 2017, 13:26:11 POSLE PODNE
Jel može pomoć ? Novi sam pa ne znam . Počeo sam da pravim svoj mod jer mi je tako najlakse skontati , kad imam svoje cmd i to, dal bi neko poslao mod koji ima samo register i login odnosno save/load.Bio bi mu zahvalan? Nije server upste MySQL nego obicni , cuo sam da nije to tesko narpaviti samo ako se neko razumije u to

http://balkan-samp.com/forum/index.php?topic=112796.0
@Mevlo Kapić
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato Avgust 08, 2017, 17:01:48 POSLE PODNE
Citat: [CG] ogi corleone poslato Avgust 08, 2017, 13:48:50 POSLE PODNE
Citat: Mevlo Kapić poslato Avgust 08, 2017, 13:26:11 POSLE PODNE
Jel može pomoć ? Novi sam pa ne znam . Počeo sam da pravim svoj mod jer mi je tako najlakse skontati , kad imam svoje cmd i to, dal bi neko poslao mod koji ima samo register i login odnosno save/load.Bio bi mu zahvalan? Nije server upste MySQL nego obicni , cuo sam da nije to tesko narpaviti samo ako se neko razumije u to

http://balkan-samp.com/forum/index.php?topic=112796.0
@Mevlo Kapić
Imas gresku u opisu, nisi fino napisao jednu rijec
Naslov: Odg: Korisne skripte i kodovi
Poruka od: ogil poslato Avgust 08, 2017, 17:05:06 POSLE PODNE
Citat: Łukmember=1996][/member] link=topic=4245.msg750053#msg750053 date=1502204508]
Citat: [CG] ogi corleone poslato Avgust 08, 2017, 13:48:50 POSLE PODNE
Citat: Mevlo Kapić poslato Avgust 08, 2017, 13:26:11 POSLE PODNE
Jel može pomoć ? Novi sam pa ne znam . Počeo sam da pravim svoj mod jer mi je tako najlakse skontati , kad imam svoje cmd i to, dal bi neko poslao mod koji ima samo register i login odnosno save/load.Bio bi mu zahvalan? Nije server upste MySQL nego obicni , cuo sam da nije to tesko narpaviti samo ako se neko razumije u to

http://balkan-samp.com/forum/index.php?topic=112796.0
@Mevlo Kapić
Imas gresku u opisu, nisi fino napisao jednu rijec

Pošto si citirao oba posta pretpostavljam da sam ja nešto sjebao xD samo šta
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato Avgust 08, 2017, 23:01:13 POSLE PODNE
Citat: [CG] ogi corleone poslato Avgust 08, 2017, 17:05:06 POSLE PODNE
Citat: Łukmember=1996][/member] link=topic=4245.msg750053#msg750053 date=1502204508]
Citat: [CG] ogi corleone poslato Avgust 08, 2017, 13:48:50 POSLE PODNE
Citat: Mevlo Kapić poslato Avgust 08, 2017, 13:26:11 POSLE PODNE
Jel može pomoć ? Novi sam pa ne znam . Počeo sam da pravim svoj mod jer mi je tako najlakse skontati , kad imam svoje cmd i to, dal bi neko poslao mod koji ima samo register i login odnosno save/load.Bio bi mu zahvalan? Nije server upste MySQL nego obicni , cuo sam da nije to tesko narpaviti samo ako se neko razumije u to

http://balkan-samp.com/forum/index.php?topic=112796.0
@Mevlo Kapić
Imas gresku u opisu, nisi fino napisao jednu rijec

Pošto si citirao oba posta pretpostavljam da sam ja nešto sjebao xD samo šta

(http://imgur.com/wQ9bwSN.png)
Naslov: Odg: Korisne skripte i kodovi
Poruka od: #A.J. poslato Avgust 08, 2017, 23:01:56 POSLE PODNE
Luka, gospodar skriptanja :D
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Muslimovic poslato Avgust 28, 2017, 10:01:54 PRE PODNE
Citat: [CG] ogi corleone poslato Avgust 08, 2017, 13:48:50 POSLE PODNE
Citat: Mevlo Kapić poslato Avgust 08, 2017, 13:26:11 POSLE PODNE
Jel može pomoć ? Novi sam pa ne znam . Počeo sam da pravim svoj mod jer mi je tako najlakse skontati , kad imam svoje cmd i to, dal bi neko poslao mod koji ima samo register i login odnosno save/load.Bio bi mu zahvalan? Nije server upste MySQL nego obicni , cuo sam da nije to tesko narpaviti samo ako se neko razumije u to

http://balkan-samp.com/forum/index.php?topic=112796.0
@Mevlo Kapić
Hvala dobar je mod .. Rcon Login to mi nece da radi , vec imam pripremljene cmd za rcon
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Muslimovic poslato Avgust 28, 2017, 11:23:07 PRE PODNE
Oprostite na DP(Dupli post) ali ja ovdje ne vidim opciju "uredi" , jel zna neko kako da ovo rijesim http://imgur.com/a/JY6HA
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Slade poslato Septembar 02, 2017, 22:23:06 POSLE PODNE
Citat: Mevlo Kapić poslato Avgust 28, 2017, 11:23:07 PRE PODNE
Oprostite na DP(Dupli post) ali ja ovdje ne vidim opciju "uredi" , jel zna neko kako da ovo rijesim http://imgur.com/a/JY6HA

Otvori temu u ovom boardu, ostavi kod i označi liniju na kojoj ti je problem, pošto ovo nije tema za pomaganje, nego za prikazivanje korisnih kodova
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Terza Lazarevic poslato Septembar 03, 2017, 00:38:49 PRE PODNE
Citat: Mevlo Kapić poslato Avgust 28, 2017, 11:23:07 PRE PODNE
Oprostite na DP(Dupli post) ali ja ovdje ne vidim opciju "uredi" , jel zna neko kako da ovo rijesim http://imgur.com/a/JY6HA
Otvori novu temu u 'Razgovor u vezi PAWN - skriptanja'
Naslov: Odg: Korisne skripte i kodovi
Poruka od: .бутиган poslato Novembar 16, 2017, 15:20:56 POSLE PODNE
Provera da li je ime rp preko regexa.
[pawn]
stock ProveraRPImena(ime[])
{
   new regex:r = regex_new("([A-Z]{1,1})[a-z]{2,9}+_([A-Z]{1,1})[a-z]{2,9}");
   new check = regex_check(ime, r);
   regex_delete(r);
   return check;
}
[/pawn]

note. pawn.regex plugin je u pitanju.
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Kamberovic poslato Decembar 12, 2017, 20:05:59 POSLE PODNE
Citat: Muslimovic poslato Avgust 08, 2017, 13:26:11 POSLE PODNE
Jel može pomoć ? Novi sam pa ne znam . Počeo sam da pravim svoj mod jer mi je tako najlakse skontati , kad imam svoje cmd i to, dal bi neko poslao mod koji ima samo register i login odnosno save/load.Bio bi mu zahvalan? Nije server upste MySQL nego obicni , cuo sam da nije to tesko narpaviti samo ako se neko razumije u to
Evo ovde, http://balkan-samp.com/forum/index.php?topic=109678.0
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Savana poslato Januar 02, 2018, 09:40:36 PRE PODNE
[pawn]#define ERROR(%0,%1) \
   SendClientMessageEx(%0, -1, "{ff6600}Greska | {FFFFFF} "%1) //primjer koristenja ERROR(playerid, "text");

#define JOB(%0,%1) \
   SendClientMessageEx(%0, -1, "{36AB00}(Posao) {FFFFFF} "%1) //primjer koristenja JOB(playerid, "text");

#define USAGE(%0,%1) \
   SendClientMessageEx(%0, -1, "{F5052D}(Koristite) {FFFFFF} "%1) //primjer koristenja USAGE(playerid, "text");
   
#define INFO(%0,%1) \
   SendClientMessageEx(%0, -1, "{2e9cd1}(Info) {FFFFFF} "%1) //primjer koristenja INFO(playerid, "text");


//#define PORUKA(%0,%1) \
//   SendClientMessageEx(%0, -1, "{BOJA}(Server) {FFFFFF} "%1) //primjer koristenja za daljnje poruke
[/pawn]
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato Januar 02, 2018, 16:57:16 POSLE PODNE
Citat: Savana poslato Januar 02, 2018, 09:40:36 PRE PODNE
[pawn]#define ERROR(%0,%1) \
   SendClientMessageEx(%0, -1, "{ff6600}Greska | {FFFFFF} "%1) //primjer koristenja ERROR(playerid, "text");

#define JOB(%0,%1) \
   SendClientMessageEx(%0, -1, "{36AB00}(Posao) {FFFFFF} "%1) //primjer koristenja JOB(playerid, "text");

#define USAGE(%0,%1) \
   SendClientMessageEx(%0, -1, "{F5052D}(Koristite) {FFFFFF} "%1) //primjer koristenja USAGE(playerid, "text");
   
#define INFO(%0,%1) \
   SendClientMessageEx(%0, -1, "{2e9cd1}(Info) {FFFFFF} "%1) //primjer koristenja INFO(playerid, "text");


//#define PORUKA(%0,%1) \
//   SendClientMessageEx(%0, -1, "{BOJA}(Server) {FFFFFF} "%1) //primjer koristenja za daljnje poruke
[/pawn]
nisi stavio SendClientMessageEx funkciju
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Savana poslato Januar 03, 2018, 10:27:17 PRE PODNE
Citat: Savana poslato Januar 02, 2018, 09:40:36 PRE PODNE
[pawn]#define ERROR(%0,%1) \
   SendClientMessageEx(%0, -1, "{ff6600}Greska | {FFFFFF} "%1) //primjer koristenja ERROR(playerid, "text");

#define JOB(%0,%1) \
   SendClientMessageEx(%0, -1, "{36AB00}(Posao) {FFFFFF} "%1) //primjer koristenja JOB(playerid, "text");

#define USAGE(%0,%1) \
   SendClientMessageEx(%0, -1, "{F5052D}(Koristite) {FFFFFF} "%1) //primjer koristenja USAGE(playerid, "text");
   
#define INFO(%0,%1) \
   SendClientMessageEx(%0, -1, "{2e9cd1}(Info) {FFFFFF} "%1) //primjer koristenja INFO(playerid, "text");


//#define PORUKA(%0,%1) \
//   SendClientMessageEx(%0, -1, "{BOJA}(Server) {FFFFFF} "%1) //primjer koristenja za daljnje poruke
[/pawn]

ah pardon ..

[pawn]stock SendClientMessageEx(playerid, color, const str[], {Float,_}:...) {
   static
       args,
       start,
       end,
       string[144]
   ;
   #emit LOAD.S.pri 8
   #emit STOR.pri args

   if (args > 12)
   {
      #emit ADDR.pri str
      #emit STOR.pri start

       for (end = start + (args - 12); end > start; end -= 4)
      {
           #emit LREF.pri end
           #emit PUSH.pri
      }
      #emit PUSH.S str
      #emit PUSH.C 144
      #emit PUSH.C string
      #emit PUSH.C args
      #emit SYSREQ.C format

      SendClientMessage(playerid, color, string);

      #emit LCTRL 5
      #emit SCTRL 4
      #emit RETN
   }
   return SendClientMessage(playerid, color, str);
}[/pawn]
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Savana poslato Januar 03, 2018, 11:14:54 PRE PODNE
Ne mogu urediti..

Evo kod za forward + public, ja sam si smanjio skriptu za 1800 kodova.. znaci za timere, i neke funkcije tebate frward, a neko nekad zaboravi, pa samo ovo prebacite na vrh..

[pawn]#define PF:%0(%1)       forward %0(%1); \
                                        public %0(%1) [/pawn]

stari primjer


[pawn]forward test();

public test(){
return 1;
}
}[/pawn]

novi primjer

te samo upisete

[pawn]PF: (){//
return 1;
}[/pawn]
Naslov: Odg: Korisne skripte i kodovi
Poruka od: ogil poslato Januar 03, 2018, 12:44:35 POSLE PODNE
Citat: Savana poslato Januar 03, 2018, 11:14:54 PRE PODNE
Ne mogu urediti..

Evo kod za forward + public, ja sam si smanjio skriptu za 1800 kodova.. znaci za timere, i neke funkcije tebate frward, a neko nekad zaboravi, pa samo ovo prebacite na vrh..

[pawn]#define PF:%0(%1)       forward %0(%1); \
                                        public %0(%1) [/pawn]

stari primjer


[pawn]forward test();

public test(){
return 1;
}
}[/pawn]

novi primjer

te samo upisete

[pawn]PF: (){//
return 1;
}[/pawn]

Ne znam Å¡ta je korisno u ovom kodu, al' hajd'. To je starije od kamena, peska, zemlje i Sunca :))
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Łuk@ poslato Januar 03, 2018, 14:03:22 POSLE PODNE
Citat: Savana poslato Januar 03, 2018, 11:14:54 PRE PODNE
Ne mogu urediti..

Evo kod za forward + public, ja sam si smanjio skriptu za 1800 kodova.. znaci za timere, i neke funkcije tebate frward, a neko nekad zaboravi, pa samo ovo prebacite na vrh..

[pawn]#define PF:%0(%1)       forward %0(%1); \
                                        public %0(%1) [/pawn]

stari primjer


[pawn]forward test();

public test(){
return 1;
}
}[/pawn]

novi primjer

te samo upisete

[pawn]PF: (){//
return 1;
}[/pawn]
nisi za 1800 kodova nego za 1800 linija prije,

manje linija veca brzina kompilanja vljd
Naslov: Odg: Korisne skripte i kodovi
Poruka od: Savana poslato Januar 05, 2018, 11:37:07 PRE PODNE
Citat: σgí poslato Januar 03, 2018, 12:44:35 POSLE PODNE
Ne znam Å¡ta je korisno u ovom kodu, al' hajd'. To je starije od kamena, peska, zemlje i Sunca :))

je je, zato svaki drugi mod u gamemodes bez macro koda, tolko je staro da nitko ne koristi, haj me ne nasmijavaj