[TuT] SSCANF u ZCMD komandama

Započeo []Flynâ„¢, Jul 25, 2011, 02:52:31 PRE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.





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 [IgracevID]");




"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 [Broj]");




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




"d"
- integer, isto sto i parametar "i"
Primer:
if (!sscanf(params, "ud", igrac, kolicina)) return SCM(playerid, 0xFFFFFFFF, "Komanda: /givemoney [IgracevID] [Iznos]");//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 [kordinata] i portat ce te na isto mesto samo drugu visinu
Primer:
if(sscanf(params,"f",ZPos)) SCM(playerid, boja, "KOMANDA:"C_bijela" /visina[Coordinata]");




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

Parametar "u"
CMD:freeze(playerid, params[])
{
       new string[128], string2[128], igrac;
       if (PlayerInfo[playerid][Admin] >= 1)
       {
               if(sscanf(params, "u", igrac)) return SendClientMessage(playerid, -1, "KoriÅ¡tenje: /freeze [IgracevID]");
               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[128], string2[128], igrac;
       if (PlayerInfo[playerid][Admin] >= 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[128], tmp[128], hour, broj;
 hour = strval(tmp);
 if(sscanf(params, "i", broj)) return SCM(playerid, -89, "INFO: /tod [0-23]");
 if (PlayerInfo[playerid][pAdmin] >= 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[velicina]"
CMD:o(playerid, params[])
{
 new tekst[128];
 new string[128];
 if (PlayerInfo[playerid][pAdmin] >= 1)
 {
    if(sscanf(params, "s[128]", tekst)) return SendClientMessage(playerid, -1, "KoriÅ¡tenje: /o [Tekst]");
  format(string, sizeof(string), "[OOC] 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[40]
kolicina;
if (!sscanf(params, "ud", igrac, kolicina)) return SCM(playerid, 0xFFFFFFFF, "Komanda: /givemoney [IgracevID] [Iznos]");
{
  if(PlayerInfo[playerid][Admin] >= 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[Coordinata]");
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
Poslednja Izmena: Novembar 06, 2011, 23:39:53 POSLE PODNE od -300-

Odlican Tutorial, samo navedi da treba da imaju sscanf (incude & plugin) i zcmd (include). (stavio sam linkove, samo kliknite na zcmd ili sscanf)
Poslednja Izmena: Jul 25, 2011, 03:06:53 PRE PODNE od No Name




Citat: No Name poslato Jul 25, 2011, 03:05:54 PRE PODNE
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...
Poslednja Izmena: Jul 25, 2011, 03:11:01 PRE PODNE od [CRP] Pacijent_

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.

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 [IgracevID]");


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...
Poslednja Izmena: Jul 25, 2011, 03:23:53 PRE PODNE od SlicK
Mysterious roleplay

Citat: SlicK poslato Jul 25, 2011, 03:21:40 PRE PODNE
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 [IgracevID]");


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...

Ima jos tih parametri,ali stavio si najbitnije,to je oke,dobro ce doc nekima :)
Mysterious roleplay

Citat: SlicK poslato Jul 25, 2011, 03:28:04 PRE PODNE
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  ;D

Pardon,ja se ispricavam, "u" je za igrace i botove,a "r" samo za igrace...
Sry smotao sam se... ::)
Mysterious roleplay

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...
Just one more time.

lijep tutorijal, siguran sam da ce nekom pomoci

Citat: EM|Pacino poslato Jul 25, 2011, 11:41:05 PRE PODNE
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.




Citat: tbedy.amx poslato Jul 25, 2011, 11:45:47 PRE PODNE
lijep tutorijal, siguran sam da ce nekom pomoci
Hvala...

Odlican tutorial, bas mi je ovo trebalo, hvala.

sscanf se nekoristi samo u komandama... Nisi objasnio sve argumente i nisi naveo razliku izmeÄ'u velikih i malih slova...
Nije nešto...

Citat: [TG] BloodMaster poslato Jul 25, 2011, 17:28:41 POSLE PODNE
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.