Usando processador de comandos PawnCMD + sscanf -
Cleyson - 08.12.2017
• Introduзгo
Ola pessoal do forum SAMP, estou trazendo um tutorial de como usar o processador de comandos PawnCMD
para a Board PT/BR do forum pois vejo que poucos membros falar sobre e usar.
Apesar de bem simples muitos nгo conhecem ainda ou tem receio de usб-la.
Ja uso a algum tempo e recomendo, bem simples de usar e na minha opniгo bem mais rбpido e prбtico.
Pawn.CMD - um novo processador de comando que funciona atravйs de um plugin.
Este plugin й compatнvel com qualquer versгo do SA:MP.
Seu uso e bastante parecido com ZCMD, porem nos testes do autor,
a PawnCMD se destaca na velocidade de resposta comparada entre os outros processadores de comandos.
Veja a imagem:
(atraso entre RPC_ServerCommand receber e chamada cmd_test (1k comandos))
• Instalaзгo
Para comeзar, devemos baixar a versгo atualizada do Plugin/Include
Download
Adicionar a include na pasta include do Pawno.
Adicionar o plugin na pasta plugins na raiz do servidor. .dll se for windowns
.so se for Linux.
Edite "server.cfg" e adicione
pawncmd na linha plugins.
• Exemplo de uso
Exemplo de uso com comando simples sem uso de parametros:
PHP код:
#include <Pawn.CMD>
CMD:jetpack(playerid, params[]) // comando simples para criar uma jetpack
{
SetPlayerSpecialAction(playerid, 2);
SendClientMessage(playerid, -1, "Jetpack criada com sucesso.");
return 1;
}
CMD:colete(playerid, params[]) // comando simples para criar um colete
{
SetPlayerArmour(playerid, 100);
SendClientMessage(playerid, -1, "Colete adicionado com sucesso.");
return 1;
}
Exemplo de uso com paramentros. Usaremos sscanf para exemplo:
PHP код:
#include <Pawn.CMD>
#include <sscanf2>
CMD:kick(playerid, params[])
{
new ID;
if(sscanf(params, "u", ID)) return SendClientMessage(playerid, -1, "Uso correto /kick [ID]");
if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1, "Erro, id invalido.");
SendClientMessage(playerid, -1, "Comando efetuado com sucesso.");
SendClientMessage(ID, -1, "Vocк foi kickado por um admin.");
SetTimerEx("Kickar", 100, false, "i", ID);
return 1;
}
forward Kickar(playerid);
public Kickar(playerid) return Kick(playerid);
Simples nгo й ?
• Uso de comandos adicionais
Para usar comandos adicionais com a mesma funзхes usaremos
alias exemplos:
PHP код:
CMD:jetpack(playerid, params[]) // comando simples para criar uma jetpack
{
SetPlayerSpecialAction(playerid, 2);
SendClientMessage(playerid, -1, "Jetpack criada com sucesso.");
return 1;
}
alias:jetpack("criarjetpack", "cjet"); // Ou seja, /criarjetpack ou /cjet tem a mesma funзгo que /jetpack
• Uso de restriзхes em comandos
Para criar restriзгo nos comandos podemos usar a callback
OnPlayerCommandReceived
Veja exemplos:
PHP код:
#include <Pawn.CMD>
#include <sscanf2>
new CMD_ADMIN = 1;
flags:jetpack(CMD_ADMIN); // Use flags:cmd(CMD_ADMIN) para restringir o comando, lembre se de criar a restriзгo em OnPlayerCommandReceived
flags:kick(CMD_ADMIN);
CMD:jetpack(playerid, params[])
{
SetPlayerSpecialAction(playerid, 2);
SendClientMessage(playerid, -1, "Jetpack criada com sucesso.");
return 1;
}
CMD:kick(playerid, params[])
{
new ID;
if(sscanf(params, "u", ID)) return SendClientMessage(playerid, -1, "Uso correto /kick [ID]");
if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1, "Erro, id invalido.");
SendClientMessage(playerid, -1, "Comando efetuado com sucesso.");
SendClientMessage(ID, -1, "Vocк foi kickado por um admin.");
SetTimerEx("Kickar", 100, false, "i", ID);
return 1;
}
PHP код:
public OnPlayerCommandReceived(playerid, cmd[], params[], flags)
{
if((flags & CMD_ADMIN) && Admin[playerid] == 0) // Deve se trocar "Admin[playerid]" pela variavel de admin usada em seu GM.
{
SendClientMessage(playerid, -1, "Erro, comando restrito a administradores.");
return 0;
}
return 1;
}
• Inexistencia de comando digitado
Use a callback
OnPlayerCommandPerformed para o player receber a mensagem de inexistencia de comando:
PHP код:
public OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags)
{
if(result == -1)
{
SendClientMessage(playerid, -1, "Erro, comando inexistente.");
return 0;
}
return 1;
}
• Forзar player a usar o comando
Use
callcmd para forзar player a usar um determinado comando:
PHP код:
public OnPlayerSpawn(playerid)
{
callcmd::jetpack(playerid, ""); // exemplo forзaremos o player usar o comando /jetpack quando ele spawnar
return 1;
}
CMD:jetpack(playerid, params[])
{
SetPlayerSpecialAction(playerid, 2);
SendClientMessage(playerid, -1, "Jetpack criada com sucesso.");
return 1;
}
• Download & Creditos
Download GitHub
Criador da PawnCMD:
YourShadow
Qualquer dъvida e erros por favor me informar.
Re: Usando processador de comandos PawnCMD + sscanf -
Buda - 08.12.2017
Sу uma pequena correзгo, a palavra й "opiniгo" e nгo "opniгo". (Nгo sei porque mas muita gente aqui na board escreve com esse p mudo que nгo existe...)
Fora isso, excelente tutorial, acho atй que й o primeiro sobre PawnCMD na board PT/BR!
Re: Usando processador de comandos PawnCMD + sscanf -
C4rtm4n - 08.12.2017
Muito bom.
Re: Usando processador de comandos PawnCMD + sscanf -
Pool - 08.12.2017
Eu estive utilizando a diretiva, pois ainda nгo conhecia algumas funзхes adicionais como a: 'alias' e 'flags'.
Agora sim, consigo compreender corretamente o uso das funзхes.
Obrigado!
+REP
Re: Usando processador de comandos PawnCMD + sscanf - Whoo - 08.12.2017
Boa!! Tinha gente que nem sabia desse plugin, mas ainda prefiro strcmp
Re: Usando processador de comandos PawnCMD + sscanf -
Locky_ - 08.12.2017
Este й um уtimo plugin. Utilizo ele e tenho bastante comando pelo servidor.
Gostei bastante de seu tutorial, detalhou bem o uso do plugin.
+REP
Re: Usando processador de comandos PawnCMD + sscanf -
Cleyson - 08.12.2017
Quote:
Originally Posted by Buda
Sу uma pequena correзгo, a palavra й "opiniгo" e nгo "opniгo". (Nгo sei porque mas muita gente aqui na board escreve com esse p mudo que nгo existe...)
Fora isso, excelente tutorial, acho atй que й o primeiro sobre PawnCMD na board PT/BR!
|
Haha, й mal costume, sei que nгo й p mudo, mas as vezes nem percebo.
Quote:
Originally Posted by C4rtm4n
Muito bom.
|
Quote:
Originally Posted by Marllun
Agora sim eu entendi o uso do flags.
|
Quote:
Originally Posted by Pool
Eu estive utilizando a diretiva, pois ainda nгo conhecia algumas funзхes adicionais como a: 'alias' e 'flags'.
Agora sim, consigo compreender corretamente o uso das funзхes.
Obrigado!
+REP
|
Quote:
Originally Posted by Whoo
Boa!! Tinha gente que nem sabia desse plugin, mas ainda prefiro strcmp
|
Quote:
Originally Posted by Locky_
Este й um уtimo plugin. Utilizo ele e tenho bastante comando pelo servidor.
Gostei bastante de seu tutorial, detalhou bem o uso do plugin.
+REP
|
Obrigado a todos pelo feedback, acho que a Board precisa ser atualizada com plugins novos e atualizados.
Re: Usando processador de comandos PawnCMD + sscanf -
IlanZ - 08.12.2017
Bom tutorial, ultimamente ta surgindo uns tutorial foda.
Re: Usando processador de comandos PawnCMD + sscanf -
NathanT - 10.12.2017
Este й um belo processador de comando, й recente, atualizado e rбpido.
Muito boa a quantidade de informaзгo contida neste tutorial, bom trabalho.
Re: Usando processador de comandos PawnCMD + sscanf -
ViDaLoKa1 - 10.12.2017
Bom tutorial, bem simples mais irб ajudar quem nunca usou esse plugin. Eu jб uso ele tem um tempo e foi muito ъtil por incluir funзхes como
PC_EmulateCommand. Lembrando que quem for usa-lo em filterscripts й necessбrio colocar #define FILTERSCRIPT.
Re: Usando processador de comandos PawnCMD + sscanf -
MediaCL - 13.12.2017
Uma Dъvida rsrs
eu uso ZCMD
se eu trocar o ZCMD
por PawnCmd
eu iria ter que mexer em alguns comandos ?
Tъtorial bom de mais !!
Bastante explicativo so tive essa dъvida mesmo rs
Re: Usando processador de comandos PawnCMD + sscanf -
Locky_ - 13.12.2017
Quote:
Originally Posted by MediaCL
Uma Dъvida rsrs
eu uso ZCMD
se eu trocar o ZCMD
por PawnCmd
eu iria ter que mexer em alguns comandos ?
Tъtorial bom de mais !!
Bastante explicativo so tive essa dъvida mesmo rs
|
Nos comandos nгo. Mas talvez tenha que mudar as callbacks onde vocк recebe se um comando foi usado com sucesso ou nгo.
Re: Usando processador de comandos PawnCMD + sscanf -
Marllun - 13.12.2017
Como Locky_ disse.
Pawn.CMD
PHP Code:
public OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags)
{
if(result == -1)
{
SendClientMessage(playerid, -1, "SERVER: Comando Invбlido.");
return 0;
}
return 1;
}
ZCMD
PHP Code:
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
if(!success)
return SendClientMessage(playerid, -1, "SERVER: Comando Invбlido.");
return 1;
}
Re: Usando processador de comandos PawnCMD + sscanf -
GSFBart - 13.12.2017
Eu uso Pawn.CMD a um tempo, mas um problema que tenho й que nгo consigo usar FS com outro processador de comandos, o comando nгo existe quando executado, e se o FS tambйm for Pawn.CMD, nгo atualiza os CMDS com o reloadfs, tem que reiniciar o servidor. Serб alguma configuraзгo dele que tem como alterar?
Re: Usando processador de comandos PawnCMD + sscanf -
Gguiz - 16.12.2017
Minha ъnica dъvida й se devo usar o "alias" para retornar comandos, nгo quero substituir por outros, como por exemplo:
Em zcmd:
PHP Code:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_YES)
{
cmd_portao(playerid, #);
}
return 1;
}
Criei o comando "portao" e faзo ele ser chamado na callback OnPlayerKeyStateChange para ser utilizado com a letra 'Y', em Pawn.CMD й diferente, obviamente. Essa й minha dъvida.
Re: Usando processador de comandos PawnCMD + sscanf -
Locky_ - 16.12.2017
Quote:
Originally Posted by GSFBart
Eu uso Pawn.CMD a um tempo, mas um problema que tenho й que nгo consigo usar FS com outro processador de comandos, o comando nгo existe quando executado, e se o FS tambйm for Pawn.CMD, nгo atualiza os CMDS com o reloadfs, tem que reiniciar o servidor. Serб alguma configuraзгo dele que tem como alterar?
|
Acredito que й sу compilar os scripts com comandos tambйm usando o Pawn.CMD.
GMX/Reload na minha opiniгo nгo й muito bom usar quando vocк faz alteraзхes. Sempre й bom desligar e ligar o servidor.
Quote:
Originally Posted by Gguiz
Minha ъnica dъvida й se devo usar o "alias" para retornar comandos, nгo quero substituir por outros, como por exemplo:
Em zcmd:
PHP Code:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_YES)
{
cmd_portao(playerid, #);
}
return 1;
}
Criei o comando "portao" e faзo ele ser chamado na callback OnPlayerKeyStateChange para ser utilizado com a letra 'Y', em Pawn.CMD й diferente, obviamente. Essa й minha dъvida.
|
No caso ficaria
Code:
callcmd::portao(playerid, "");
Re: Usando processador de comandos PawnCMD + sscanf -
Cleyson - 18.12.2017
Quote:
Originally Posted by GSFBart
Eu uso Pawn.CMD a um tempo, mas um problema que tenho й que nгo consigo usar FS com outro processador de comandos, o comando nгo existe quando executado, e se o FS tambйm for Pawn.CMD, nгo atualiza os CMDS com o reloadfs, tem que reiniciar o servidor. Serб alguma configuraзгo dele que tem como alterar?
|
Nгo sou muito a favor de usar FS, gosto de implementar tudo no GM ou usar mуdulos. Mas se o problema continuar ocorrendo por favor me avise que comunico o criador do plugin.
Quote:
Originally Posted by Locky_
No caso ficaria
Code:
callcmd::portao(playerid, "");
|
Bem lembrado, irei adicionar ao tуpico.
Re: Usando processador de comandos PawnCMD + sscanf -
Gguiz - 18.12.2017
Tentei utilizar o PawnCMD, modifiquei as callbacks necessбrias, instalei a plugin, porйm quando fui testar in-game, os comandos simplesmente nгo deram sinal de vida, nгo funcionou nenhum comando.
Se alguйm tiver alguma soluзгo ou passou pelo problema parecido, me comunique.
Re: Usando processador de comandos PawnCMD + sscanf -
Cleyson - 18.12.2017
Quote:
Originally Posted by Gguiz
Tentei utilizar o PawnCMD, modifiquei as callbacks necessбrias, instalei a plugin, porйm quando fui testar in-game, os comandos simplesmente nгo deram sinal de vida, nгo funcionou nenhum comando.
Se alguйm tiver alguma soluзгo ou passou pelo problema parecido, me comunique.
|
Assim sem ver o cуdigo й complicado de ter soluзгo. Foi algum erro seu que passou despercebido rsrs. Mas tenta fazer um script separado visando somente o Pawn.CMD com alguns comandos bбsicos e testa. Assim que estiver familiarizado com o plugin ai vocк modifica sua gamemode.
Re: Usando processador de comandos PawnCMD + sscanf -
Benner - 18.12.2017
Gostei do tutorial, ele tirou a minha duvida do FLAG e do ALIAS
Parabкns cleyson.