[AJUDA] zcmd para strcmp
#1

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;
}
Reply
#2

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))".
Reply
#3

Nгo nгo й ...

Undefined symbol params, ja tentei de todo jeito
Reply
#4

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

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

Ai nгo funciona, aparece comando invбlido
Reply
#6

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

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.
Reply
#8

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;
}
Reply
#9

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 .
Reply
#10

Й 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
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)