Portal SAMP
[Ajuda] corrigir meu codigo - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] corrigir meu codigo (/showthread.php?tid=3670)



corrigir meu codigo - LOS_SANTOS - 05/06/2023

aq e  um comando de instrutor que ele vende a carteira para um player o problema e q nao sei colocar uma mensagem dizendo voce nao pode ussar esse comando para vc mesmo , tipo toda vez q uso o comando eu posso vender para mim mesmo queria saber como faco pra bloquear isso ,tipo para quando eu usar o comando pra mim mesmo eu nao poder vender para meu propio id     



rsumindo pra quem nao me entendeu sou muito enrolado pra explicar colocar o comando proibindo de vender para o propio id  tipo eu sou exemplo um id 0 e eu o comando colocar ele pra dizer voce nao pode vender pra si mesmo 



Código:
if(strcmp(cmd, "/Terrestre", true) == 0)
{
if(PlayerInfo[ playerid ][pProfissao] == Instrutor )
{
new cmdmk[15], id, valor;
if ( sscanf(cmdtext, "sdd",cmdmk, id, valor)) return SendClientMessage(playerid, -1, "| ERRO | Correto: /Terrestre [id - player] [valor]");
if(IsPlayerConnected(id))
{
if(GetDistanceBetweenPlayers(id,playerid) > 10)
{
SendClientMessage(playerid,Vermelho,"| ERRO | Você esta muito longe chegue mais perto.");
return 1;
}
if(valor < 1000)
{
new String[222];
new pname[MAX_PLAYER_NAME];
GetPlayerName(id, pname, MAX_PLAYER_NAME);
    format(String,sizeof(String),"| INFO | Você ofereceu a %s uma habilitação terrestre, espere ele aceitar",pname);
SendClientMessage(playerid,-1, String);
    format(string,sizeof(string),"| INFO | O Instrutor %s esta te oferecendo uma habilitação terrestre por %d, você pode aceitar ou recusar /Aceitar /Recusar",PlayerName(playerid),valor);
SendClientMessage(id,0x0080C0AA, string);
INS_OF[id] = 1;
INS_VALOR[id] = valor;
INS_ID[id] = playerid;
}
else return SendClientMessage(playerid,Vermelho,"| ERRO | Valor máximo de 1 a 1000");
}
else SendClientMessage(playerid,Vermelho,"| ERRO | Este player não esta online");
return 1;
}
else SendClientMessage(playerid,Vermelho,"| ERRO | Você não tem permissão");
return 1;
}



RE: corrigir meu codigo - k2bi_YT - 05/06/2023

Só adicionar essa condição:

Código PHP:
if(id == playerid) return SendClientMessage("Mensagem de erro"); 



RE: corrigir meu codigo - pushline - 05/06/2023

Também deverias mudar o sscanf pra isso:

Código PHP:
new idvalor;
if (
sscanf(cmdtext"rd"idvalor))
    return 
SendClientMessage(playerid, -1"| ERRO | Correto: /Terrestre [id - player] [valor]"); 

Você estava usando 3 parâmetros no sscanf, e na mensagem de erro só diz 2. O "r", como diz na documentação do sscanf, serve pra id / nome de players ao mesmo tempo. Outro exemplo é o "u" que é igual, mas acrescenta que o id/nome também serve para bots.


RE: corrigir meu codigo - Carlos Victor - 05/06/2023

Procure um manipulador de comandos (não sei se é assim que se refere), mas é melhor do que utilizar o strcmp da idade das pedras! Se você for para um ZCMD da vida (que não é um dos mais rápidos) já melhora 90% aí do seu código e entendimento dele.


RE: corrigir meu codigo - White_Blue - 06/06/2023

(05/06/2023 21:08)Carlos Victor Escreveu: Procure um manipulador de comandos (não sei se é assim que se refere), mas é melhor do que utilizar o strcmp da idade das pedras! Se você for para um ZCMD da vida (que não é um dos mais rápidos) já melhora 90% aí do seu código e entendimento dele.

Eu não usaria zcmd, é recomendado usar o Pawn.CMD que é muito mais rápido além de ter muito mais funcionalidades e ser praticamente a mesma coisa que zcmd em termos de sintaxe.


RE: corrigir meu codigo - xbruno1000x - 06/06/2023

(06/06/2023 05:58)White_Blue Escreveu: Eu não usaria zcmd, é recomendado usar o Pawn.CMD que é muito mais rápido além de ter muito mais funcionalidades e ser praticamente a mesma coisa que zcmd em termos de sintaxe.

O grande problema do Pawn.CMD, é que quando você usa alguma filterscript em ZCMD, ele acaba não reconhecendo os comandos do FS. ZCMD é mais lento, porém tem seu valor por não precisar de um plugin. Ambas seriam alternativas ótimas ao strcmp.


RE: corrigir meu codigo - Carlos Victor - 07/06/2023

De qualquer forma, eu acredito que qualquer processador de comandos que não a comparação do então strcmp é melhor que o strcmp, irei anexar uma imagem e um tópico do Pawn.CMD que por sinal é um ótimo processador de comandos, porém tem seus pontos negativos, como o que o Bruno disse.

[Imagem: v43AinV.png]

Tópico: Pawn.CMD » Processador de comandos (portalsamp.com)