Jump to content
  • 0

Ajutor ZCMD


BorneoJr

Question

Salut, am incercat sa invat sa fac o comanda cu zcmd si sscanf dintr-o comanda strcmp, dar mereu am primit niste erori si alte chestii. Ma puteti ajuta cu un model ?

Sa imi faceti de exemplu asta (strcmp) in zcmd si sscanf, va rog, sa pot invata si eu asta.

    if(strcmp(cmd, "/setvw", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp)) return SendClientMessage(playerid, -1, "USAGE: /setvw [PlayerID/PartOfName] [VirtualWorldID]");
            new playa;
            playa = ReturnUser(tmp);
            new virid;
            tmp = strtok(cmdtext, idx);
            virid = strval(tmp);
            if(PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid, COLOR_GREY, "You are not authorized to use this command.");
            if(IsPlayerConnected(playa))
            {
                if(playa != INVALID_PLAYER_ID)
                {
                    if(IsPlayerNPC(playa)) { return 1; }
                    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
                    GetPlayerName(playerid, sendername, sizeof(sendername));
                    SetPlayerVirtualWorld(playa, virid);
                    format(string, sizeof(string), "* %s set's your VirtualWorld to %d.", sendername, virid);
                    SendClientMessage(playa, COLOR_LIGHTRED, string);
                    format(string, sizeof(string), "AdmCmd: %s set's %s's VirtualWorld to %d !", sendername, giveplayer, virid);
					ABroadCast(COLOR_LIGHTRED,string,1);
                }
            }
        }
        return 1;
    }

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

[glow=red,2,300]Sper sa-ti fie de folos [/glow]

CMD:setvw(playerid,params[])
{
	new id,worldid;
		if (!sscanf(params, "ui",id , worldid))//mai multe detalii despre "ui" gasesti mai jos 
        {
            
                //.. restul de conditii
            
        
        }
        else SendClientMessage(playerid, COLOR_GREY, "USAGE: /setvw [PlayerID/PartOfName] [VirtualWorldID]");
     }
	return 1;
}
in functie de ce parametrii vrei sa citesti poti folosi in loc de "ui" la sscanf altceva :

Specifier(s)			Name				Example values

	i, d			Integer				1, 42, -10
	c			Character			a, o, *
	n			Number				42, 0b010, 0xAC, 045
	f			Float				0.7, -99.5
	u			User name/id (bots and players)	Y_Less, 0
	q			Bot name/id			ShopBot, 27
	r			Player name/id			Y_Less, 42

In cazul de mai sus am folosit :

-u pentru ca primul parametru "ID" este de tip User name/id (bots and players)

-i pentru ca al 2-lea parametru "WORLDID" este de tip Integer

(la fel procedezi pentru toti parametrii pe care vrei sa-i citesti)

Cat despre ZCMD e simplu , tot ce trebuie sa faci este sa folosesti

CMD:comanda(playerid,params[])

{

    return 1;

}

Nu e foarte greu , sincer sa fiu nici nu stiu sa folosesc alta metoda decat sscanf sau ZCMD , sunt foarte simple , trebuie doar sa exersezi putin cu ele , fa-ti un gamemode blank si incearca sa faci tu cateva comenzi , cum ar fi /pm /givecash . . . . si vezi daca iti iese .

Pe mine m-a ajutat foarte mult clipul asta de pe youtube .

http://www.youtube.com/watch?v=HwBeNNjLB8k

Poate te va ajuta si pe tine !

Mai multe informatii gasesti aici :

http://forum.sa-mp.com/showthread.php?t=120356

http://forum.sa-mp.com/showthread.php?t=91354

Link to comment
Share on other sites

Mersi de zcmd, mi-a mers dar am o problema foarte mare.

Deci dupa mutarea pe zcmd imi vin erorile gen :

D:\Jocuri\SERVER~1.3D\GAMEMO~1\server.pwn(9582) : error 017: undefined symbol "cmdtext"
D:\Jocuri\SERVER~1.3D\GAMEMO~1\server.pwn(9583) : error 017: undefined symbol "tmp"
cum ar fi:
tmp = strtok(cmdtext, idx);

Te rog sa ma ajuti, am 100 comenzi la care am problema asta ... :D

Daca asta am sa inteleg , o sa stiu tot, ms fain ;)

Link to comment
Share on other sites

Mersi de zcmd, mi-a mers dar am o problema foarte mare.

Deci dupa mutarea pe zcmd imi vin erorile gen :

D:\Jocuri\SERVER~1.3D\GAMEMO~1\server.pwn(9582) : error 017: undefined symbol "cmdtext"
D:\Jocuri\SERVER~1.3D\GAMEMO~1\server.pwn(9583) : error 017: undefined symbol "tmp"
cum ar fi:
tmp = strtok(cmdtext, idx);

Te rog sa ma ajuti, am 100 comenzi la care am problema asta ... :D

Daca asta am sa inteleg , o sa stiu tot, ms fain ;)

Deci cmdtext dupa cum se vede e un parametru al functiei

public OnPlayerCommandText(playerid, cmdtext[])

Daca tu folosesti ZCMD functia OnPlayerCommandText nu mai e valabila .

Daca pui in ZCMD tmp = strtok(cmdtext, idx); e normal sa nu iti recunoasca cmdtext intrucat putem observa ca parametrii ZCMD sunt : (playerid,params[]) si de aceea nu recunoaste cmdtext

Pentru a rezolva aceasta problema ai 2 variante .

Ori reunuti la metoda veche cea cu strtok si folosesti sscanf ( e cea mai simpla solutie dar majoritatea comenzilor vor trebui rescrise integral daca nu intelegi anumite bucati de cod)

Sau daca nu te descuri cu sscanf poti folosi strtok doar ca o sa il transformi asa : tmp = strtok(params, idx);

Cat despre eroarea undefined symbol "tmp" trebuie sa declari variabila tmp innainte sa o folosesti

new tmp;

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • 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.