08.10.2013, 22:21
Aqui alguns truques que podes usar com icmd:
Vбrios comandos em um sу
Neste exemplo, caso digitar /health ou /vida. Ambos comandos farгo mesmo efeito.
Estes casos podem ser expandidos para muitos outros.
Como:
Nesse caso, os quatros comandos farгo o mesmo efeito! Em outros processadores como ZCMD, precisava
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:
ou com params:
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:
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
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
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:
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:
e retornarб um nъmero, no caso:
Entгo basta fazer:
Estranho, nгo?
Conforme as atualizaзхes, icmd7 serб atualizado e vira novos truques para fazer.
Em breve estarei estendendo este tutorial
Vбrios comandos em um sу
PHP код:
public OnPlayerCommandText(playerid, commandid, params[]) {
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(playerid, floatstr(params));
return true;
}
default: return SendClientMessage(playerid, -1, "[Erro]: Comando desconhecido, desculpe.");
}
return false;
}
Estes casos podem ser expandidos para muitos outros.
Como:
PHP код:
public OnPlayerCommandText(playerid, commandid, params[]) {
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(playerid, floatstr(params));
return true;
}
default: return SendClientMessage(playerid, -1, "[Erro]: Comando desconhecido, desculpe.");
}
return false;
}
PHP код:
cmd(comando1,playerid, params[]) {
}
cmd(comando2,playerid, params[]) return cmd_comando1(playerid, params[]);
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 */
pawn Код:
OnPlayerCommandText( playerid, iscmd("v,i,d,a"), "40.5"); /* /vida 40.5 */
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;
}
}
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;
}
PHP код:
iscmd("/aa") .. iscmd("/zz")
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) |
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"));
Quote:
[19:35:38] 187935 |
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;
}
Conforme as atualizaзхes, icmd7 serб atualizado e vira novos truques para fazer.
Em breve estarei estendendo este tutorial