SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 21/12/2019, 09:00 PM   #11
Ermanhaut
Gangsta
 
Ermanhaut's Avatar
 
Join Date: Apr 2016
Location: Brazil
Posts: 653
Reputation: 47
Default Re: Processadores de comandos

Quote:
Originally Posted by CALENZ021 View Post
Mas uma questão... Vocês usam sscanf2 para os comandos com argumentos?
Quem não usa sscanf? ;-;
__________________
try, try and try again
Ermanhaut is offline   Reply With Quote
Old 21/12/2019, 11:35 PM   #12
Malandrin
Huge Clucker
 
Malandrin's Avatar
 
Join Date: Jun 2018
Posts: 406
Reputation: 23
Default Re: Processadores de comandos

Quote:
Originally Posted by CALENZ021 View Post
Mas uma questão... Vocês usam sscanf2 para os comandos com argumentos?
Sim! Eu particularmente utilizo em todos os meus projetos ou simples sistemas, facilita muito.
Malandrin is offline   Reply With Quote
Old 23/12/2019, 02:20 AM   #13
CALENZ021
Big Clucker
 
Join Date: Jun 2018
Location: Latin America
Posts: 92
Reputation: 5
Default Re: Processadores de comandos

Eu usava strcmp então não precisa de sscanf2 e sim strtok e strrest. Então não sabia se tinha outro além do sscanf2...
Quote:
Originally Posted by Ermanhaut View Post
Quem não usa sscanf? ;-;
Hm
Quote:
Originally Posted by Malandrin View Post
Sim! Eu particularmente utilizo em todos os meus projetos ou simples sistemas, facilita muito.
__________________
CALENZ021 is offline   Reply With Quote
Old 23/12/2019, 03:02 PM   #14
AdrianoStk
Huge Clucker
 
AdrianoStk's Avatar
 
Join Date: Jan 2013
Location: Presidente Prudente-SP
Posts: 460
Reputation: 31
Lightbulb Re: Processadores de comandos

Resumo geral!
A grande resposta de qual processador ou método de processar o comando depende!

Minha opinião!


strcmp+ strtok

Geralmente costumo utilizar quando faço sistemas(GMs) pequenos que terão uma média de 10 a 15 comandos, com média de no máximo 50 player, utilizo isso para ser simples, evitar colocar mais plugins uma vez que plugins pode ter um consumo razoável de memória!

ZCMD + sscanf
Já usei bastante porem é muito fácil de manipular parâmetros, processador de comandos mais rápido que strcmp com strtok, algumas funções limitadas, se possuir um server robusto com uma quantidade grande de comandos, da pra utilizar tranquilamente! (Atualmente utilizo para sistemas que pessoas me encomendam)

Pawn CMD + sscanf

Atualmente utilizo no meu projeto, que tem exatamente 187 comandos, e pretendo ter uma média de 200 player online (em testes já consegui bater 90 players)
Melhor processador de comandos em termo de desempenho e velocidades, sua programação é igual ao do ZCMD, possui funcionalidades como mesclar vários comandos em um único!

Outros...
Não posso opinar pois nunca testei outros processadores de comando!

Penso assim, em servidores grandes, a otimização é a base para evitar lag!
Então não meço esforços para otimização!
__________________
Hayllander Server's


Breve, nos servidores


Discord
AdrianoStk is offline   Reply With Quote
Old 23/12/2019, 05:04 PM   #15
RiqueP
Gangsta
 
RiqueP's Avatar
 
Join Date: Jan 2014
Posts: 853
Reputation: 58
Default Re: Processadores de comandos

Quote:
Originally Posted by CALENZ021 View Post
Respeito sua decisão e concordo com o fato do que o código é essencial para otimização.


Vou pesquisar mas a respeito das aliases e as flags, quanto a os plugins ColAndreas e MapAndreas eu não uso e não sei pra que que server tal.


Mas uma questão... Vocês usam sscanf2 para os comandos com argumentos?
aliases você pode criar comandos com nomes diferentes mas que possuem a mesma função. Exemplo: /profissoes e /profs. Ambos fazem a mesma coisa, então ao invés de vc usar um CTRL + C e CTRL + V, você reutiliza o código ao invés de repeti-lo. Isso pode salvar vidas dependendo do contexto. Se você por exemplo for mudar um comando grande, terá que mudar no outro código também. Com aliases, você muda apenas uma vez.

flags é uma outra forma de economizar código e manter a consistência. Digamos que você possuí um comando de admin, em vez de vc ficar repetindo sempre o código da mensagem "Você não é um administrador", você simplesmente passa a flag pro comando e passa a condição da flag em OnPlayerCommandReceived(playerid, cmd[], params[], flags).

No próprio tópico do plugin ensina como usar isso e o código é super curto e fácil de entender.

Sobre o sscanf; sim. O sscanf é práticamente crucial hoje em dia, não só para comandos.

Sobre o ColAndreas e o MapAndreas. O MapAndreas é um plugin que detecta o ponto de colisão com o chão; ou seja, ele obtém a posição Z (altura) através da posição X e Y. Com isso da pra fazer muuuita coisa bacana como um sistema de bombardeio, um sistema de descer em corda estilo SWAT, e muitas outras coisas se você for criativo.

O ColAndreas consegue realizar o mesmo feito, e mais um pouco. O MapAndreas funciona de forma 2D e o ColAndreas funciona em 3D. Com isso, você consegue detectar um ponto de colisão não só com o chão, mas também em sua frente e etc. Ele é bem usado para criar zombies com NPC. Você consegue ver se tem algum objeto entre o NPC e o Player e assim criar um sistema de visibilidade por exemplo. Outra coisa boa e ruim do ColAndreas é que ele vem com um streamer embutido para você criar objetos com ele. Isso pq se você criar um objeto, ele não será detectado pelo MapAndreas e nem pelo ColAndreas. Mas se você criar esse objeto via ColAndreas, o ColAndreas poderá detecta-lo. Porém, isso consome uma boa memória.

Enfim, eu dei umas dicas de uso, mas cara, sinceramente, você consegue fazer muita mágica usando criatividade e o plugin.

Quote:
Originally Posted by CALENZ021 View Post
Eu usava strcmp então não precisa de sscanf2 e sim strtok e strrest. Então não sabia se tinha outro além do sscanf2...


Hm
Você pode usar, se prefirir, strtok com pawn.cmd ou zcmd. Mas não seria uma boa.
__________________
Discord: RiqueP#1666

Last edited by RiqueP; 23/12/2019 at 09:08 PM.
RiqueP is online now   Reply With Quote
Old 24/12/2019, 07:46 PM   #16
CALENZ021
Big Clucker
 
Join Date: Jun 2018
Location: Latin America
Posts: 92
Reputation: 5
Default Re: Processadores de comandos

Eu vou estar usando Pawn.CMD + sscanf2. O meu projeto ele é grande e terá mais de 200 comandos então cheguei nessa conclusão dita anteriormente.
Quote:
Originally Posted by AdrianoStk View Post
Resumo geral!
A grande resposta de qual processador ou método de processar o comando depende!

Minha opinião!


strcmp+ strtok

Geralmente costumo utilizar quando faço sistemas(GMs) pequenos que terão uma média de 10 a 15 comandos, com média de no máximo 50 player, utilizo isso para ser simples, evitar colocar mais plugins uma vez que plugins pode ter um consumo razoável de memória!

ZCMD + sscanf
Já usei bastante porem é muito fácil de manipular parâmetros, processador de comandos mais rápido que strcmp com strtok, algumas funções limitadas, se possuir um server robusto com uma quantidade grande de comandos, da pra utilizar tranquilamente! (Atualmente utilizo para sistemas que pessoas me encomendam)

Pawn CMD + sscanf

Atualmente utilizo no meu projeto, que tem exatamente 187 comandos, e pretendo ter uma média de 200 player online (em testes já consegui bater 90 players)
Melhor processador de comandos em termo de desempenho e velocidades, sua programação é igual ao do ZCMD, possui funcionalidades como mesclar vários comandos em um único!

Outros...
Não posso opinar pois nunca testei outros processadores de comando!

Penso assim, em servidores grandes, a otimização é a base para evitar lag!
Então não meço esforços para otimização!
O aliases até entendi facilmente, já o flags eu vou ver o tópico como você citou, pois estou com um pequeno problema. Eu fiz uma comparação pra se o player estiver preso não poder usar comandos, mas tem o alguns comandos que eu queria que ele pode-se usar como: /aceitar, /recusar e /advogados só que não sei como fazer tal script. Em relação ao ColAndreas e MapAndreas eu consegui entender e é bastante interessante já que meu projeto só tem 2 profissões e eu pretendo criar muitas ainda. Enquanto eu passava meus comandos de strcmp para Pawn.CMD pode perceber que podia manter o strtok como você disse, mas como não era o ideal eu não mantive.
Quote:
Originally Posted by RiqueP View Post
aliases você pode criar comandos com nomes diferentes mas que possuem a mesma função. Exemplo: /profissoes e /profs. Ambos fazem a mesma coisa, então ao invés de vc usar um CTRL + C e CTRL + V, você reutiliza o código ao invés de repeti-lo. Isso pode salvar vidas dependendo do contexto. Se você por exemplo for mudar um comando grande, terá que mudar no outro código também. Com aliases, você muda apenas uma vez.

flags é uma outra forma de economizar código e manter a consistência. Digamos que você possuí um comando de admin, em vez de vc ficar repetindo sempre o código da mensagem "Você não é um administrador", você simplesmente passa a flag pro comando e passa a condição da flag em OnPlayerCommandReceived(playerid, cmd[], params[], flags).

No próprio tópico do plugin ensina como usar isso e o código é super curto e fácil de entender.

Sobre o sscanf; sim. O sscanf é práticamente crucial hoje em dia, não só para comandos.

Sobre o ColAndreas e o MapAndreas. O MapAndreas é um plugin que detecta o ponto de colisão com o chão; ou seja, ele obtém a posição Z (altura) através da posição X e Y. Com isso da pra fazer muuuita coisa bacana como um sistema de bombardeio, um sistema de descer em corda estilo SWAT, e muitas outras coisas se você for criativo.

O ColAndreas consegue realizar o mesmo feito, e mais um pouco. O MapAndreas funciona de forma 2D e o ColAndreas funciona em 3D. Com isso, você consegue detectar um ponto de colisão não só com o chão, mas também em sua frente e etc. Ele é bem usado para criar zombies com NPC. Você consegue ver se tem algum objeto entre o NPC e o Player e assim criar um sistema de visibilidade por exemplo. Outra coisa boa e ruim do ColAndreas é que ele vem com um streamer embutido para você criar objetos com ele. Isso pq se você criar um objeto, ele não será detectado pelo MapAndreas e nem pelo ColAndreas. Mas se você criar esse objeto via ColAndreas, o ColAndreas poderá detecta-lo. Porém, isso consome uma boa memória.

Enfim, eu dei umas dicas de uso, mas cara, sinceramente, você consegue fazer muita mágica usando criatividade e o plugin.


Você pode usar, se prefirir, strtok com pawn.cmd ou zcmd. Mas não seria uma boa.
Obrigado pela opinião de vocês dois( +Rep )
__________________
CALENZ021 is offline   Reply With Quote
Old 25/12/2019, 04:59 AM   #17
RiqueP
Gangsta
 
RiqueP's Avatar
 
Join Date: Jan 2014
Posts: 853
Reputation: 58
Default Re: Processadores de comandos

Sobre não poder usar comandos preso (exceto /aceitar, /recusar e /advogados):
PHP Code:
public OnPlayerCommandReceived(playeridcmd[], params[], flags) {
    if(
Preso(playerid)) {
        if(
strcmp(cmd"/aceitar") && strcmp(cmd"/recusar") && strcmp(cmd"/advogados")) {
            
SendClientMessage(playerid0xFF0000FF"(ERRO) Você não pode usar comandos estando preso!");
            return 
0;
        }
    }
    return 
1;

__________________
Discord: RiqueP#1666
RiqueP is online now   Reply With Quote
Old 25/12/2019, 02:40 PM   #18
CALENZ021
Big Clucker
 
Join Date: Jun 2018
Location: Latin America
Posts: 92
Reputation: 5
Default Re: Processadores de comandos

Quote:
Originally Posted by RiqueP View Post
Sobre não poder usar comandos preso (exceto /aceitar, /recusar e /advogados):
PHP Code:
public OnPlayerCommandReceived(playeridcmd[], params[], flags) {
    if(
Preso(playerid)) {
        if(
strcmp(cmd"/aceitar") && strcmp(cmd"/recusar") && strcmp(cmd"/advogados")) {
            
SendClientMessage(playerid0xFF0000FF"(ERRO) Você não pode usar comandos estando preso!");
            return 
0;
        }
    }
    return 
1;

Valeu mano. Nossa que falta de raciocínio da minha parte!!
__________________
CALENZ021 is offline   Reply With Quote
Old 26/12/2019, 07:04 PM   #19
CALENZ021
Big Clucker
 
Join Date: Jun 2018
Location: Latin America
Posts: 92
Reputation: 5
Default Re: Processadores de comandos

Quote:
Originally Posted by RiqueP View Post
Sobre não poder usar comandos preso (exceto /aceitar, /recusar e /advogados):
PHP Code:
public OnPlayerCommandReceived(playeridcmd[], params[], flags) {
    if(
Preso(playerid)) {
        if(
strcmp(cmd"/aceitar") && strcmp(cmd"/recusar") && strcmp(cmd"/advogados")) {
            
SendClientMessage(playerid0xFF0000FF"(ERRO) Você não pode usar comandos estando preso!");
            return 
0;
        }
    }
    return 
1;

Eu fiz isso mano e manda a msg e o comando funciona mesmo recebendo o erro.

Callback:
pawn Code:
public OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags)
{
    if(PlayerInfo[playerid][Logado] == false)
    {
        SendClientMessage(playerid, Erro, "| ERRO | Você não está logado!");
        return 0;
    }
    if(PlayerInfo[playerid][Afk] == true)
    {
        SendClientMessage(playerid, Erro, "| ERRO | Antes de usar comando, digite: /Sairafk");
        return 0;
    }
    if(Algemado[playerid] == true)
    {
        SendClientMessage(playerid, Erro, "| ERRO | Você está algemado e não pode usar comando!");
        return 0;
    }
    if(strcmp(cmd, "/aceitar") && strcmp(cmd, "/recusar") && strcmp(cmd, "/advogados") && PrisonEnum[playerid][pTempo] != 0)
    {
        SendClientMessage(playerid, Erro, "| ERRO | Você está preso e não pode usar comando!");
        return 0;
    }
    if(result == -1)
    {
        SendClientMessage(playerid, Erro, "| ERRO | Comando Inválido!");
        return 0;
    }

    for(new i=0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerHelper(i) && viewcmds[i] == true)
        {
            format(String, sizeof(String), "| BCM-Admin | O(A) jogador(a) %s[%d] digitou o comando: %s", PlayerInfo[playerid][Nome], playerid, cmd);
            SendClientMessage(i, adm, String);
        }
    }
    return 1;
}

Um dos erros... Mesmo estando algemado, preso, afk,... etc. o return 0; é ignorado. Ou está executando o comandos antes dessas comparações.
__________________
CALENZ021 is offline   Reply With Quote
Old 26/12/2019, 07:08 PM   #20
RiqueP
Gangsta
 
RiqueP's Avatar
 
Join Date: Jan 2014
Posts: 853
Reputation: 58
Default Re: Processadores de comandos

Você deve usar OnPlayerCommandReceived. Essa callback é chamada antes do comando ser processado, por isso se deve usar ela para fazer essas verificações; a que você usou é chamada logo depois que o comando é executado.
__________________
Discord: RiqueP#1666
RiqueP is online now   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Off] Quais são as diferencias de processadores? Felpz Português/Portuguese 7 30/05/2017 02:38 AM
[Ajuda] Como fazer aquela Telinha (Exemplo: /comandos ai aparece uma telinha com os comandos) J4S0N Português/Portuguese 11 08/02/2015 01:12 AM
[Ajuda] Comandos Ts3 Português/Portuguese 7 28/08/2014 06:33 AM


All times are GMT. The time now is 12:59 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.