[TuT] SSCANF u ZCMD komandama


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

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

[]Flynâ„¢

*

Never look down on anybody unless you're helping them up.





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:
Kod: c
if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, "Korištenje: /komanda [IgracevID]");





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





"i"
- Za neki broj
Primer:
Kod: c
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:
Kod: c
if(sscanf(params, "s[128]", tekst)) return SendClientMessage(playerid, -1, "Korištenje: /komanda [Text]");





"d"
- integer, isto sto i parametar "i"
Primer:
Kod: c
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:
Kod: c
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"
Kod: c
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"
Kod: c
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"
Kod: c
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]"
Kod: c
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"
Kod: c
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"
Kod: c
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




[]Flynâ„¢

*

Never look down on anybody unless you're helping them up.

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

[]Flynâ„¢

*

Never look down on anybody unless you're helping them up.

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

[]Flynâ„¢

*

Never look down on anybody unless you're helping them up.

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

[]Flynâ„¢

*

Never look down on anybody unless you're helping them up.

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.

BloodMaster

*

Ex. Super Moderator

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

[]Flynâ„¢

*

Never look down on anybody unless you're helping them up.

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.