Jump to content

Sscanf si ZCMD


WiDuAlK

Recommended Posts

Salutare , bine v-am regasit(sanatosi sper ), am stat si m-am gandit si am zis , hai sa mai  fac un tutorial , pe care ii pot ajuta pe newbie-i(ma scuzati daca nu am folosit termenul corect), sa foloseasca sscanf.
Eu , cand am inceput sa imi fac un GM, de la 0 bine inteles, m-am gandit asa:"Cum pot sa imi fac GM mai optim?"Mi-au venit in minte mai multe pluginuri, printre care si sscanf. M-am interesat si am descoperit ca sscanf e un strtok, dar mult mai rapid.
Conform wiki, strtok este folosit pentru a cauta un string(sir de caractere, in cazul de fata string = sir de litere) si se intoarce la comanda. Astfel , sscanf va face acelasi lucru , dar intr-un mod mai rapid.
Pentru inceput , va prezint specificatori, as mai vrea sa adaug aici , ca i-am luat de pe un site.

 

specificatori(s) Name Example values
i, d Integer 1, 42, -10
c Character a, o, *
l Logical true, false
b Binary 01001, 0b1100
h, x Hex 1A, 0x23
o Octal 045 12
n Number 42, 0b010, 0xAC, 045
f Float 0.7, -99.5
g IEEE Float 0.7, -99.5, INFINITY, -INFINITY, NAN, NAN_E
u User name/id (bots and players) Y_Less, 0
q Bot name/id ShopBot, 27
r Player name/id Y_Less, 42

 

Odata ce stim specificatori, voi face un exemplu pentru comanda, eu voi face o comanda simpla , pentru a intelege oricine.

 

CMD:givemoney(playerid,params[])
{
    new targetid, suma;// targetid va fi persoana caruia ii vom da banii, iar suma , bine-nteles suma pe care vrem sa ii dam
    
    if(sscanf(params,"ud",targetid,suma))// apelam la sscanf sa caute parametri. "u"- conform specificatorilor reprezinta numele persoanei/id ei. "d"- reprezinta un intenger = cifra(cifra de bani in cazul nostru)
            return SendClientMessage(playerid,culoarea_dorita,"Se foloseste: /givemoney [Nume_Player/ID] [Suma]");// daca playerul greseste una din conditi, ii va da acest mesaj
    if(!IsPlayerConnected(playerid))// Verificam daca playerul nu este conectat
            return SendClientMessage(playerid,culoarea_dorita,"Playerul nu este conectat!");//Atunci cand playerul nu este conectat(de aceea am folosit "!") ii va returna acest mesaj
    
    //Daca conditiile de mai sus sunt respectate, playerul primeste banii.
    GivePlayerMoney(targetid,suma);//targetid- numele/id persoanei pe care aplicam comanda ii va da suma pe care am pus-o.
    return 1;
}

 

Tutorialul e scris 100% de mana mea!

 

Pace!

  • Upvote 3
Link to comment
Share on other sites

  • 1 year later...
CMD:givecash(playerid, params[])
{
	new sumabani, query[256], string [144], tinta;
	if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, -1, "Nu esti conectat");
	if(P_Data[playerid][pAdmin] >=3)
	{
	    if(sscanf(params,"ii", tinta, sumabani)) return SendClientMessage(playerid, -1,"[Dreivian]:/Givecash [id][suma de bani]");
  		GivePlayerMoney(tinta, sumabani);
		format(string, sizeof(string),"I-ai dat lui %s o suma de %i $ ",GetName(tinta), sumabani);
		SendClientMessage(playerid,-1, string);
		format(string, sizeof(string),"Ai primit bani de la %s",GetName(playerid));
		SendClientMessage(tinta,-1, string);
		format(query,256 , "UPDATE `conturi` SET `Bani` = '%i' WHERE `Nume` = '%s'" , P_Data[tinta][pBani], GetName(tinta) );
		mysql_tquery( handle ,query, "" , "" );
	}
	else return SendClientMessage(playerid, -1, "Daca nu esti admin de ce incerci sa folosesti aceasta comanda?");
	return 1;
}

asta am facut'o inainte sa iti citesc tutorialul. si am o intrebare daca schimb la mysql SET 'Bani' + '%i'  imi aduna in baza de date suma care o avea cu suma pe care o primeste akm ?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.