[Tutorial] Truques com icmd7
#1

Aqui alguns truques que podes usar com icmd:




Vбrios comandos em um sу


PHP код:
public OnPlayerCommandText(playeridcommandidparams[]) {
    switch(
commandid) {
        case 
iscmd("v,i,d,a"), iscmd("h,e,a,l,t,h"),  : {
            if(!
params[0]) {
                return 
SendClientMessage(playerid, -1"[Erro]: Use /vida /health");
            }
            
SetPlayerHealth(playeridfloatstr(params));
            return 
true;
        }
        default: return 
SendClientMessage(playerid, -1"[Erro]: Comando desconhecido, desculpe.");
    }
    return 
false;

Neste exemplo, caso digitar /health ou /vida. Ambos comandos farгo mesmo efeito.

Estes casos podem ser expandidos para muitos outros.

Como:

PHP код:
public OnPlayerCommandText(playeridcommandidparams[]) {
    switch(
commandid) {
        case 
iscmd("v,i,d,a"), iscmd("h,e,a,l,t,h"), iscmd("v"), iscmd("r,e,c,u,p,e,r,a,r") : {
            if(!
params[0]) {
                return 
SendClientMessage(playerid, -1"[Erro]: Use /vida /health /v /recuperar");
            }
            
SetPlayerHealth(playeridfloatstr(params));
            return 
true;
        }
        default: return 
SendClientMessage(playerid, -1"[Erro]: Comando desconhecido, desculpe.");
    }
    return 
false;

Nesse caso, os quatros comandos farгo o mesmo efeito! Em outros processadores como ZCMD, precisava

PHP код:
cmd(comando1,playeridparams[]) {
}
cmd(comando2,playeridparams[]) return cmd_comando1(playeridparams[]); 




Fazer o jogador digitar comandos

Alйm do mйtodo tradicional. em icmd7 vocк pode fazer o usuбrio digitar comandos atravйs de iscmd. Basta usar:

pawn Код:
OnPlayerCommandText( playerid, iscmd("v,i,d,a"), ""); /* /vida */
ou com params:

pawn Код:
OnPlayerCommandText( playerid, iscmd("v,i,d,a"), "40.5"); /* /vida 40.5 */
este mйtodo й mais veloz, por puxar a callback com valores e nгo com strings. Dessa maneira vбrias (talvez dezenas) de cйlulas a menos sгo criadas para repassar






Controle de comandos

Essa dica parece fбcil, mas sу й possнvel com icmd7 ser feita de forma fбcil

Caso fizeres:
pawn Код:
public OnPlayerCommandText(playerid, commandid, params[]) {

   if(commandid != iscmd("v,i,d,a")) {
      printf("Vocк nгo digitou /vida, mas sim outro comando");
      return true;
   }
}
Dessa maneira, й ao contrбrio. O jogador poderб digitar qualquer comando, mas sу irб ser processado se o comando for diferente de /vida






Listagem de comandos

pawn Код:
public OnPlayerCommandText(playerid, commandid, params[]) {

    switch(commandid) {


        case iscmd("a") .. iscmd("z"): {
             return SendClientMessage(playerid, -1, "Vocк digitou /a /b /c /d .. ou /z");
        }


        default: return SendClientMessage(playerid, -1, "[Erro]: Comando desconhecido, desculpe.");
    }

    return false;
}
Dessa maneira й declarado, que comandos de /a a /z irгo executar a mensagem. Neste caso /a /b /c /d /e /f /g e por aн vai. Este caso pode ser expandido para

PHP код:
iscmd("/aa") .. iscmd("/zz"
assim os comandos pegos serгo /aa /ab /ac /ad .. /za /zb /cc

Tambйm lembrando, que se o compilador detectar comandos iguais, ele anuncia o erro, da seguinte forma:

pawn Код:
case iscmd("a") .. iscmd("z"): {
             return SendClientMessage(playerid, -1, "Oi");
}

case iscmd("b"): {
             return SendClientMessage(playerid, -1, "Tchau");
}
Quote:

error 040: duplicate "case" label (value X)

pois o comando iscmd("b") estб incluнdo no iscmd("a") .. iscmd("z")






Comandos em forma de nъmeros

Em icmd7, todos comandos representam ids, dessa maneira vocк pode equivaler as s,t,r,i,n,g,s a nъmeros!

Para pegar o ID faзa:

pawn Код:
printf("%d", iscmd("c,o,m,a,n,d,o"));
e retornarб um nъmero, no caso:

Quote:

[19:35:38] 187935

Entгo basta fazer:


pawn Код:
public OnPlayerCommandText(playerid, commandid, params[]) {

    switch(commandid) {

        case 187935: {
             return SendClientMessage(playerid, -1, "Vocк digitou /comando");
        }



        default: return SendClientMessage(playerid, -1, "[Erro]: Comando desconhecido, desculpe.");
    }

    return false;
}
Estranho, nгo?



Conforme as atualizaзхes, icmd7 serб atualizado e vira novos truques para fazer.

Em breve estarei estendendo este tutorial
Reply


Messages In This Thread
Truques com icmd7 - by ipsBruno - 08.10.2013, 22:21
Re: Truques com icmd7 - by PT - 08.10.2013, 22:25
Re: Truques com icmd7 - by N3XTMapper - 08.10.2013, 22:29
Re: Truques com icmd7 - by ipsBruno - 08.10.2013, 22:30
Re: Truques com icmd7 - by N3XTMapper - 08.10.2013, 22:34
Re: Truques com icmd7 - by PT - 08.10.2013, 22:37
Re: Truques com icmd7 - by ipsBruno - 08.10.2013, 22:39
Re: Truques com icmd7 - by N3XTMapper - 08.10.2013, 22:42
Re: Truques com icmd7 - by Petrick™ - 08.10.2013, 22:57
Re: Truques com icmd7 - by PT - 08.10.2013, 22:58

Forum Jump:


Users browsing this thread: 2 Guest(s)