SA-MP Forums Archive
[AJUDA] zcmd para strcmp - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [AJUDA] zcmd para strcmp (/showthread.php?tid=307039)



[AJUDA] zcmd para strcmp - isli27 - 28.12.2011

Estou colocando um sistema para strcmp ... Minha dъvida й o sscanf. Como ficaria este comando em strcmp ? ?

pawn Код:
CMD:ircasa(playerid, params[])
{
    new string[ 200 ], Casa;
    if(!IsPlayerAdmin(playerid)) return GameTextForPlayer(playerid,"~n~~n~~n~~y~Sem ~r~AUTORIZACAO~y~!",2000,3);
    if(sscanf(params, "i", Casa)) return SCM(playerid, ErroCor, "{F90700}[ ERRO ] {FFFFFF}Use: {FFFFFF}/ircasa {00E5FF}[CasaID]");
    SetPlayerPos(playerid, CasaI[Casa][CasaX], CasaI[Casa][CasaY], CasaI[Casa][CasaZ]);
    format(string, sizeof(string), "[ {FFEC00}AUTOMSG{FFFFFF} ] {46FE00}Vocк foi atй a casa {00E5FF}%d", Casa);
    SCM(playerid, -1, string);
    format(string, sizeof(string), " [ADMINISTRAЗГO] %s foi atй a casa de id %d", Nome, Casa);
    EscreverLog("LHouse/Logs/Casas.log", string);
    return 1;
}



Re: [AJUDA] zcmd para strcmp - [O.z]Caroline - 28.12.2011

pawn Код:
if(!strcmp(cmdtext,"/ircasa", true))
{
    new string[ 200 ], Casa;
    if(!IsPlayerAdmin(playerid)) return GameTextForPlayer(playerid,"~n~~n~~n~~y~Sem ~r~AUTORIZACAO~y~!",2000,3);
    if(sscanf(params, "i", Casa)) return SCM(playerid, ErroCor, "{F90700}[ ERRO ] {FFFFFF}Use: {FFFFFF}/ircasa {00E5FF}[CasaID]");
    SetPlayerPos(playerid, CasaI[Casa][CasaX], CasaI[Casa][CasaY], CasaI[Casa][CasaZ]);
    format(string, sizeof(string), "[ {FFEC00}AUTOMSG{FFFFFF} ] {46FE00}Vocк foi atй a casa {00E5FF}%d", Casa);
    SCM(playerid, -1, string);
    format(string, sizeof(string), " [ADMINISTRAЗГO] %s foi atй a casa de id %d", Nome, Casa);
    EscreverLog("LHouse/Logs/Casas.log", string);
    return 1;
}
й sу mudar o "CMD:ircasa(playerid, params);" Para "if(!strcmp(cmdtext, "/ircasa", true))".


Re: [AJUDA] zcmd para strcmp - isli27 - 28.12.2011

Nгo nгo й ...

Undefined symbol params, ja tentei de todo jeito


Re: [AJUDA] zcmd para strcmp - [O.z]Caroline - 28.12.2011

Quote:
Originally Posted by isli27
Посмотреть сообщение
Nгo nгo й ...

Undefined symbol params, ja tentei de todo jeito
sim, troca "params" por "cmdtext".


Re: [AJUDA] zcmd para strcmp - isli27 - 28.12.2011

Ai nгo funciona, aparece comando invбlido


Re: [AJUDA] zcmd para strcmp - Ivonete - 29.12.2011

lуgico que funciona,
pois CMDTEXT e PARAMS й a mesma coisa.


Re: [AJUDA] zcmd para strcmp - Lуs - 29.12.2011

Creio que utilize strtok.

pawn Код:
if(!strcmp(cmdtext,"/ircasa", true))
{
    new string[ 200 ], Casa;
    if(!IsPlayerAdmin(playerid)) return GameTextForPlayer(playerid,"~n~~n~~n~~y~Sem ~r~AUTORIZACAO~y~!",2000,3);
    new tmp[128];
    tmp = strtok(cmdtext, idx);
    if(strlen(tmp) == 0) return SCM(playerid, ErroCor, "{F90700}[ ERRO ] {FFFFFF}Use: {FFFFFF}/ircasa {00E5FF}[CasaID]");
    SetPlayerPos(playerid, CasaI[tmp][CasaX], CasaI[tmp][CasaY], CasaI[tmp][CasaZ]);
    format(string, sizeof(string), "[ {FFEC00}AUTOMSG{FFFFFF} ] {46FE00}Vocк foi atй a casa {00E5FF}%d", Casa);
    SCM(playerid, -1, string);
    format(string, sizeof(string), " [ADMINISTRAЗГO] %s foi atй a casa de id %d", Nome, tmp);
    EscreverLog("LHouse/Logs/Casas.log", string);
    return 1;
}
Й altamente raro eu responder alguйm que utilize strtok e strcmp.


Re: [AJUDA] zcmd para strcmp - [O.z]Caroline - 29.12.2011

Quote:
Originally Posted by Los
Посмотреть сообщение
Creio que utilize strtok.

pawn Код:
if(!strcmp(cmdtext,"/ircasa", true))
{
    new string[ 200 ], Casa;
    if(!IsPlayerAdmin(playerid)) return GameTextForPlayer(playerid,"~n~~n~~n~~y~Sem ~r~AUTORIZACAO~y~!",2000,3);
    new tmp[128];
    tmp = strtok(cmdtext, idx);
    if(strlen(tmp) == 0) return SCM(playerid, ErroCor, "{F90700}[ ERRO ] {FFFFFF}Use: {FFFFFF}/ircasa {00E5FF}[CasaID]");
    SetPlayerPos(playerid, CasaI[tmp][CasaX], CasaI[tmp][CasaY], CasaI[tmp][CasaZ]);
    format(string, sizeof(string), "[ {FFEC00}AUTOMSG{FFFFFF} ] {46FE00}Vocк foi atй a casa {00E5FF}%d", Casa);
    SCM(playerid, -1, string);
    format(string, sizeof(string), " [ADMINISTRAЗГO] %s foi atй a casa de id %d", Nome, tmp);
    EscreverLog("LHouse/Logs/Casas.log", string);
    return 1;
}
Й altamente raro eu responder alguйm que utilize strtok e strcmp.
Claro que й raro, o strtok foi criado no tempo em que minha vу era metaleira, sйrio!
e alйm de ser um dos piores sistema e um dos mais lentos, tem a incrнvel "poзгo" de ser
o mais usado.
entгo calcule suas palavras antes de falar ta moзinho!

Isto deve bastar, й o mesmo comando com a mesma funзгo, que NГO usa nenhum processador de comando.
Isso que й raro alguйm postar por aqui...
pawn Код:
if(!strcmp(cmdtext,"/ircasa", true, 6))
{
    if(!IsPlayerAdmin(playerid)) return GameTextForPlayer(playerid,"~n~~n~~n~~y~Sem ~r~AUTORIZACAO~y~!",2000,3);
    if(!cmdtext[8])
        return SendClientMessage(playerid, -1, "Correto: /IrCasa <id da cas>");
       
    new string[128];
    SetPlayerPos(playerid, CasaI[strval(cmdtext[8])][CasaX], CasaI[strval(cmdtext[8])][CasaY], CasaI[strval(cmdtext[8])][CasaZ]);
    format(string, sizeof(string), "[ {FFEC00}AUTOMSG{FFFFFF} ] {46FE00}Vocк foi atй a casa {00E5FF}%d", strval(cmdtext[8]));
    SCM(playerid, -1, string);
    format(string, sizeof(string), " [ADMINISTRAЗГO] %s foi atй a casa de id %d", Nome, strval(cmdtext[8]));
    EscreverLog("LHouse/Logs/Casas.log", string);
    return 1;
}



Re: [AJUDA] zcmd para strcmp - rjjj - 29.12.2011

Nгo se deve usar strcmp no OnPlayerCommandText (mais especificamente com o cmdtext) para detectar se o comando foi mandado nesse caso, pois o mesmo tem parвmetros .



Sendo assim utilize strfind ao invйs de strcmp .



Assim fica o seu comando entгo, com sscanf, como vocк pediu:


pawn Код:
if(!strfind(cmdtext, "/ircasa", true))
    {
        if(cmdtext[7] == 0 || cmdtext[7] == 32)
        {
            new string[ 200 ], Casa;
            if(!IsPlayerAdmin(playerid)) return GameTextForPlayer(playerid,"~n~~n~~n~~y~Sem ~r~AUTORIZACAO~y~!",2000,3);
            if(sscanf(cmdtext[8], "i", Casa)) return SCM(playerid, ErroCor, "{F90700}[ ERRO ] {FFFFFF}Use: {FFFFFF}/ircasa {00E5FF}[CasaID]");
            SetPlayerPos(playerid, CasaI[Casa][CasaX], CasaI[Casa][CasaY], CasaI[Casa][CasaZ]);
            format(string, sizeof(string), "[ {FFEC00}AUTOMSG{FFFFFF} ] {46FE00}Vocк foi atй a casa {00E5FF}%d", Casa);
            SCM(playerid, -1, string);
            format(string, sizeof(string), " [ADMINISTRAЗГO] %s foi atй a casa de id %d", Nome, Casa);
            EscreverLog("LHouse/Logs/Casas.log", string);
            return 1;
        }
    }


Espero ter ajudado .


Re: [AJUDA] zcmd para strcmp - Jason` - 29.12.2011

Й isso que estб procurando?

Quote:
Originally Posted by Pharrel
Посмотреть сообщение
Substituir o strtok por sscanf em comparaзгo de strings (strcmp)

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[50 char], params[100 char];
    unformat(cmdtext, "s[50]S( )[100]",cmd,params);//deixe estas 2 linhas no topo da public

    //agora nos comandos vc usa assim:
    if(strcmp(cmd, "/comando", true))
    {
        if(sscanf(params, "formato que vc quiser", variaveis que vc quiser))
        //resto do comando e da public.
exemplo, comando /pagar [id] [dinheiro]

pawn Код:
if(!strcmp(cmd, "/pagar", true))
{
    new id, dinheiro;
    if(sscanf(params, "ud", id, dinheiro))
        return SendClientMessage(playerid, 0xAA0000, "Uso: /pagar [id] [valor]");
    GivePlayerMoney(id, dinheiro);
}
E pronto, seu GM estara menos vulneravel a erros.
by Pharrel