Pretraga

Pritisnite Enter za pretragu ili Escape za zatvaranje

Zaključano

[TuT] SSCANF u ZCMD komandama

pre 14 godina
9,496
pregleda
36
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
Marjan_King
Kingpin
pre 14 godina



U ovom Tutorialu cu pokusati da vam sto bolje objasnim kako koristiti SSCANF.
Pa da pocnemo...


Za ovo ce vam trebati sledece:
Include ZCMD - http://forum.sa-mp.com/showthread.php?t=91354[/url
Include SSCANF - http://forum.sa-mp.com/showthread.php?t=120356[/url



U SSCANFu ne postoji CMDText, while, result itd kao u STRCMP...
Sve sto ima je sscanf i params



Vecina ne shvata parametre i mislim da je to najveci problem.
Sada cu vam pokazati parametre i sta koji parametar sluzi.





Parametri:

"u"
- Za igracev ID/DeoImena + njega mozete koristiti za botove
Primer:
if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, "Korištenje: /komanda ");




"r"
- Za igracev ID/DeoImena
Primer:
if(sscanf(params, "r", igrac)) return SendClientMessage(playerid, -1, "Korištenje: /komanda [IgracevID/DeoImena]");




"i"
- Za neki broj
Primer:
if(sscanf(params, "i", broj)) return SendClientMessage(playerid, -1, "Korištenje: /komanda ");




"s"
- Za tekst, uvek morate stavljati velicinu. (Ja uvek stavim s )
Primer:
if(sscanf(params, "s", tekst)) return SendClientMessage(playerid, -1, "Korištenje: /komanda ");




"d"
- integer, isto sto i parametar "i"
Primer:
if (!sscanf(params, "ud", igrac, kolicina)) return SCM(playerid, 0xFFFFFFFF, "Komanda: /givemoney ");//Zanemarite ovo "u", to mora zbog IDa, nmg se setim komande samo za "d"




"f"
- "f" znaci ako koristis neku poziciju tj "Float",u ovom primeru ti napises /visina i portat ce te na isto mesto samo drugu visinu
Primer:
if(sscanf(params,"f",ZPos)) SCM(playerid, boja, "KOMANDA:"C_bijela" /visina");




Sada cemo napraviti za svaki parametar jedan pravi primer(komandu) da bi lakse shvatili.

Parametar "u"
CMD:freeze(playerid, params[])
{
       new string, string2, igrac;
       if (PlayerInfo >= 1)
       {
               if(sscanf(params, "u", igrac)) return SendClientMessage(playerid, -1, "KoriÅ¡tenje: /freeze ");
               TogglePlayerControllable(igrac, 0);
               format(string, sizeof(string), "Freezao si igraca: %s",GetName(igrac));
               SendClientMessage(playerid, -1, string);
               format(string2, sizeof(string2), "Freezao te je Admin: %s ",GetName(playerid));
               SendClientMessage(igrac, -1, string2);
       }
       return 1;
}




Parametar "r"
CMD:freeze(playerid, params[])
{
       new string, string2, igrac;
       if (PlayerInfo >= 1)
       {
               if(sscanf(params, "r", igrac)) return SendClientMessage(playerid, -1, "KoriÅ¡tenje: /freeze [IgracevID/DeoImena]");
               TogglePlayerControllable(igrac, 0);
               format(string, sizeof(string), "Freezao si igraca: %s",GetName(igrac));
               SendClientMessage(playerid, -1, string);
               format(string2, sizeof(string2), "Freezao te je Admin: %s ",GetName(playerid));
               SendClientMessage(igrac, -1, string2);
       }
       return 1;
}




Parametar "i"
CMD:tod(playerid, params[])
{
 new string, tmp, hour, broj;
 hour = strval(tmp);
 if(sscanf(params, "i", broj)) return SCM(playerid, -89, "INFO: /tod [0-23]");
 if (PlayerInfo >= 1337) return SCM(playerid, COLOR_GRAD1, "Niste ovlasteni da koristite tu komandu !");
 {
    SetWorldTime(hour);
 format(string, sizeof(string), "Vreme je podeseno na %d sati.", hour);
 BroadCast(COLOR_GRAD1, string);
 }
 return 1;
}




Parametar "s"
CMD😮(playerid, params[])
{
 new tekst;
 new string;
 if (PlayerInfo >= 1)
 {
    if(sscanf(params, "s", tekst)) return SendClientMessage(playerid, -1, "KoriÅ¡tenje: /o ");
  format(string, sizeof(string), " Admin: %s kaze: %s " , GetName(playerid), tekst);
  SendClientMessageToAll(-1, string);
 }
 return 1;
}




Parametar "d"
CMD:givemoney(playerid, params[])//Ne mogu se setim komande samo sa parametrom "d" tako da ovde je i parametar "u"
{
new
igrac,
tekst
kolicina;
if (!sscanf(params, "ud", igrac, kolicina)) return SCM(playerid, 0xFFFFFFFF, "Komanda: /givemoney ");
{
  if(PlayerInfo >= 1337)
 GivePlayerMoney(igrac, kolicina);
 format(tekst, sizeof(tekst), "Dobio si $%d od Administratora!", kolicina);
 SendClientMessage(igrac, 0x00FF00FF, tekst);
}
return 1;
}




Parametar "f"
CMD:visina(playerid,params[]){
new Float:ZPos;
if(sscanf(params,"f",ZPos)) SCM(playerid, boja, "KOMANDA:"C_bijela" /visina");
else{
              new Float:X,Float:Y,Float:Z;
              GetPlayerPos(playerid,X,Y,Z);
              SetPlayerPos(playerid,X,Y,ZPos);
return 1;
}





Credits:
Pacijent_ - Tutorial

System32 - Naucio me je da koristim SSCANF

SlicK - Objasnjenje "f" parametra
Dario_1996
Wheel Man
pre 14 godina
Odlican Tutorial, samo navedi da treba da imaju sscanf (incude & plugin) i zcmd (include). (stavio sam linkove, samo kliknite na zcmd ili sscanf)
Marjan_King
Kingpin
pre 14 godina
No Name wrote on July 25, 2011, 1:05 am:
Odlican Tutorial, samo navedi da treba da imaju sscanf (incude & plugin) i zcmd (include). (stavio sam linkove, samo kliknite na zcmd ili sscanf)

Hvala 🙂 Dodao sam...
CadrRa
Kingpin
pre 14 godina
I brate da objasnis sta je to,ako vec nisi,cim sam vidio da na vrhu nema objasnjenje nisam citao.Ipak hvala ti u ime onih koji znaju sta je to.
bero
Underboss
pre 14 godina
Da te ispravim:
"u" 
- Za igracev ID [Samo za ID ne za DeoImena]
Primer:
Kod: (c)
if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, "Korištenje: /komanda ");


Skracenica od "user" i kad to koristis nemoras pisat samo id mozes i dio imena,a
"r" 
- Za igracev ID i DeoImena
Primer:
Kod: (c)
view plaincopy to clipboardprint?
if(sscanf(params, "r", igrac)) return SendClientMessage(playerid, -1, "KoriÅ¡tenje: /komanda [IgracevID/DeoImena]");  

"r" ti je isto,samo sta njega mozes koristiti i za igrace,i za botove...
Marjan_King
Kingpin
pre 14 godina
SlicK wrote on July 25, 2011, 1:21 am:
Da te ispravim:
"u" 
- Za igracev ID [Samo za ID ne za DeoImena]
Primer:
Kod: (c)
if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, "Korištenje: /komanda ");


Skracenica od "user" i kad to koristis nemoras pisat samo id mozes i dio imena,a
"r" 
- Za igracev ID i DeoImena
Primer:
Kod: (c)
view plaincopy to clipboardprint?
if(sscanf(params, "r", igrac)) return SendClientMessage(playerid, -1, "KoriÅ¡tenje: /komanda [IgracevID/DeoImena]");  

"r" ti je isto,samo sta njega mozes koristiti i za igrace,i za botove...


Fixano!

Hvala na ispravci...
bero
Underboss
pre 14 godina
Ima jos tih parametri,ali stavio si najbitnije,to je oke,dobro ce doc nekima 🙂
Marjan_King
Kingpin
pre 14 godina
SlicK wrote on July 25, 2011, 1:28 am:
Ima jos tih parametri,ali stavio si najbitnije,to je oke,dobro ce doc nekima 🙂

Naravno da ima. Updateovacu za koji dan i staviti jos, jer nisam ni ja jos sve shvatio  😁
bero
Underboss
pre 14 godina
Pardon,ja se ispricavam, "u" je za igrace i botove,a "r" samo za igrace...
Sry smotao sam se... 🙄
| Pacino
Made Man
pre 14 godina
Nije lose, ali moglo je bolje.... Gdje su ti npr. Optional arguments, string splitteri, itd itd...

Ovo nije nista sta si sve mogao i trebao staviti da bi ovo bio pravi tut o sscanf-u...
[BR]WeeD
Shot Caller
pre 14 godina
lijep tutorijal, siguran sam da ce nekom pomoci
Marjan_King
Kingpin
pre 14 godina
EM|Pacino wrote on July 25, 2011, 9:41 am:
Nije lose, ali moglo je bolje.... Gdje su ti npr. Optional arguments, string splitteri, itd itd...

Ovo nije nista sta si sve mogao i trebao staviti da bi ovo bio pravi tut o sscanf-u...

Ovo je nesto sasvim osnovno i dovoljno za koriscenje SSCANFa.
A kao sto sam vec rekao, dodavacu jos dosta toga, samo da ga jos malo proucim.




tbedy.amx wrote on July 25, 2011, 9:45 am:
lijep tutorijal, siguran sam da ce nekom pomoci

Hvala...
ado
Made Man
pre 14 godina
Odlican tutorial, bas mi je ovo trebalo, hvala.
Viky
Crime Lord
pre 14 godina
sscanf se nekoristi samo u komandama... Nisi objasnio sve argumente i nisi naveo razliku između velikih i malih slova...
Nije nešto...
Marjan_King
Kingpin
pre 14 godina
Quote from July 25, 2011, 3:28 pm:
sscanf se nekoristi samo u komandama... Nisi objasnio sve argumente i nisi naveo razliku između velikih i malih slova...
Nije nešto...

Onda nisam stavio dobar naslov, mislio sam SSCANF u komandama. Sad cu ispraviti.

Znam da nije nesto, jel nisam jos sve shvatio, znam da koristim u komandama(te osnovne parametre) Ostalo jos uvek ne shvatam....
Ali pocetnicima je ovo sasvim dovoljno i shvatice lako, tj. lepo je objasnjeno.

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava