Pretraga

Pritisnite Enter za pretragu ili Escape za zatvaranje

Zaključano

Korisne skripte i kodovi

Započeo Obrisan korisnik
pre 15 godina
87,711
pregleda
366
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
taft
Underboss
pre 14 godina
Evo jedne funkcije...
#define MAX_KICKS (5)

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

#define KickEx(%0) \
do \
{ \
 SetPVarIntEx(%0,"pKicks",+,1); \
 Kick(%0); \
} \
while(FALSE) // by265

new stock
   bool:FALSE = false;

KicksCheck(id) // by 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,
             animname;
        GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,32,animname,32);
        GivePlayerWeapon(playerid, 46, 1);
    }
    return true;
}


Ako igrač 'pada' s neba dobit će padobran 🙂
pavle.bakun
Crime Lord
pre 14 godina
Lepo ali za ovu poslednju si trebao da das zasluge bar, wikipediji.
taft
Underboss
pre 14 godina

HPROX(id,const iString[],color = 0xFFFFF, Float:Distance)
{
new
  Float:Pos;
foreach(Player, i)
{
GetPlayerPos(id, Float:Pos, Float:Pos, Float:Pos);
if(IsPlayerInRangeOfPoint(i, Float:Distance, Float:Pos, Float:Pos, Float:Pos))
{
   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😄istance - Range, znači neki krug vidljivosti poruke

NAPOMENA: Funkcija nije testirana.

_eXtreme_ wrote on June 13, 2011, 3:47 pm:
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?

pavle.bakun
Crime Lord
pre 14 godina
Da ispravim ovu BloodMasterovu funkciju, posto je donekle korisna:
Quote from April 13, 2011, 6:20 pm:
stock SendClientMessageInRangeOfPoint(str[],boja,radius,Float:x,Float:y,Float:z)
{
//by BloodMaster
new players = GetMaxPlayers();
for(new i=0; 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
Mr.Lowrey
Godfather
pre 14 godina
evo jedne funkcije da vam olaksa posao s teleportom s vozilom 😄
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);
}
}
Viky
Crime Lord
pre 14 godina
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        {
          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? 😄
Mr.Lowrey
Godfather
pre 14 godina
ljepse ako os int,vw itd.
taft
Underboss
pre 14 godina
2 macro funkcije:

/*

  MACRO FNC - H_FNC: FNC(parametri)
  by: 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: 265
  _______________________________

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

#define H_CB:%0(%1) \
forward%0(%1); // MACRO FNC by: 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 🙂
pavle.bakun
Crime Lord
pre 14 godina
Moji rezultati (10000 puta "izmucena" koda):

GetMaxPlayers | Direktno: 20 milisec
GetMaxPlayers | Po Lukinom: 11 milisec
Foreach | 3 milisec
Viky
Crime Lord
pre 14 godina
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)
SteX
OG Legend
pre 14 godina
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 ?
Ralph
Made Man
pre 14 godina
Quote from July 4, 2011, 10:00 pm:
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 ?


Valja 😄
SteX
OG Legend
pre 14 godina
Ok, hvala posto koristim faction-game EDIT a to je Edit Balkan-Undergrounda(prvog) pa je login star vise od 1 godine :S
taft
Underboss
pre 14 godina
Quote from July 4, 2011, 10:00 pm:
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 ?


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

/*
    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
RpC
Wheel Man
pre 14 godina
@ 265, gde ovo dodam?

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

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava