SA-MP Forums Archive
[Tutorial] Usando processador de comandos PawnCMD + sscanf - 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)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Tutorial] Usando processador de comandos PawnCMD + sscanf (/showthread.php?tid=645998)

Pages: 1 2


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

Код:
Pawn.CMD.inc
Adicionar a include na pasta include do Pawno.

Код:
pawncmd.dll
Adicionar o plugin na pasta plugins na raiz do servidor. .dll se for windowns
Код:
pawncmd.so
.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(playeridparams[]) // comando simples para criar uma jetpack
{
    
SetPlayerSpecialAction(playerid2);
    
SendClientMessage(playerid, -1"Jetpack criada com sucesso.");
    return 
1;
}
CMD:colete(playeridparams[]) // comando simples para criar um colete
{
    
SetPlayerArmour(playerid100);
    
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(playeridparams[])
{
    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"100false"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(playeridparams[]) // comando simples para criar uma jetpack
{
    
SetPlayerSpecialAction(playerid2);
    
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(playeridparams[])
{
    
SetPlayerSpecialAction(playerid2);
    
SendClientMessage(playerid, -1"Jetpack criada com sucesso.");
    return 
1;
}
CMD:kick(playeridparams[])
{
    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"100false"i"ID);
    return 
1;

PHP код:
public OnPlayerCommandReceived(playeridcmd[], 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(playeridcmd[], params[], resultflags)
{
    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(playeridparams[])
{
    
SetPlayerSpecialAction(playerid2);
    
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
View Post
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(playeridcmd[], params[], resultflags

    if(
result == -1
    { 
        
SendClientMessage(playerid, -1"SERVER: Comando Invбlido."); 
        return 
0
    } 
    return 
1

ZCMD
PHP Code:
public OnPlayerCommandPerformed(playeridcmdtext[], 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(playeridnewkeysoldkeys)
{
    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
View Post
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
View Post
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(playeridnewkeysoldkeys)
{
    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
View Post
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_
View Post
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
View Post
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.