Korisne skripte i kodovi

Započeo Correlli, Mart 10, 2010, 20:26:26 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 3 gostiju pregledaju ovu temu.

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?
Kristijan Stipić

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 :)
Poslednja Izmena: Januar 17, 2011, 21:56:07 POSLE PODNE od [Saw]BloodMaster

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
Poslednja Izmena: Januar 30, 2011, 14:59:17 POSLE PODNE od joXy

Correlli

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?
Poslednja Izmena: Januar 30, 2011, 02:02:50 PRE PODNE od Emilijo L. (Correlli)

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

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


RESPECT 4 EVER: John, GLC,bAndzi, Nikola, Sop, Zoki, Bruno_Venuti, Mele, Luka P,ExtremePower,Wang(neki kineski frajer)

NAJBOLJI CITATI:
Citat: [GF]Alive poslato Jun 24, 2010, 18:20:19 POSLE PODNE
Paizte ljud mozda je KayLoger! ! !
MOJI RADOVI:
[FS]Trofeji

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  :)

//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);
}
Mysterious roleplay

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
Poslednja Izmena: Februar 03, 2011, 12:11:00 POSLE PODNE od eXtreme

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
Mysterious roleplay

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



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++)

???
Poslednja Izmena: Februar 13, 2011, 13:38:47 POSLE PODNE od eXtreme

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
Poslednja Izmena: Februar 22, 2011, 12:18:49 POSLE PODNE od Gotti747
Citat: ...Neno... poslato Januar 26, 2013, 23:31:02 POSLE PODNE
Poceo sam mapati i tu je doslo do problema.Nakon par mapa,vidio sam post Gottia i kaze da nista nevalja da je katastrofa,i pocnemo se svadjati,psovati.Popusimo bananu obojica,i nakon toga nesto sam napravio (mapu) i Gotti kaze dobra,uh reko opet me zajebava,i saljem ja njemu na pm reko ti mene zajebavas,kaze on ne,i pomirimo se.Nakon toga postali smo dosta dobri

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

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!");
}
}
}