Começaremos explicando o processador de Comandos Do Proprio Sa-mp, que e o strcmp.
e ele deve ser usado dentro da public OnPlayerCommandText, Diferente de Zcmd...
public OnPlayerCommandText(playerid, cmdtext[]) { if(!strcmp(cmdtext, "/comando", true)) { SendClientMessage(playerid,0x008000AA,"Ola,esse e um Comando Simples de SendClientMessage"); return 1; } return 0; }
Explicaçao:
public OnPlayerCommandText(playerid, cmdtext[]) A Calback do processador de comandos originais do samp.
if(!strcmp(cmdtext, "/comando", true))o if significa:Se , o Strcmp que e para processar o comando,o /comando e o comando que quando digitar acontera a funçao definida no comando,no caso desse,o SendClientMessage, e o True e igual a Verdadeiro,no pawn, true e verdadeiro,pode ser usado como True ou como numero 1,o compiler lera da mesma forma...
Agora resumindo : Se Digitar /comando verificara se o comando e verdadeiro(True ou 1),e se for executara a funçao dele.
SendClientMessage(playerid,0x008000AA,"Ola,esse e um Comando Simples de SendClientMessage");
SendClientMessage = Enviar Mensagem Ao Cliente.
Playerid = Armazenara o id do player e executara aquela funçao a ele.
0x008000AA = Cor da mensagem
"Ola,esse e um Comando Simples de SendClientMessage" = Aspas abre e fecha a mensagem,e dentro fica a mensagem. e o ; finaliza a funçao.
return 1; retornara verdade ou 1,pois no pawn True = 1,False = 0,entao pode se usar por palavras ou por numeros,voce e quem escolhe.
} A Chave que fechara o comando em,nao a public.
return 0; Agora sim,Isto fecha a calback,0 = False,ou seja se nao existir o comando que o player digitar retornara Server : Unknown Command
} E Nessa chave e a que fecha a calback,
Conclusão Sobre Chaves: Toda chave que se abre deve ser fechada,Observe que na public, Depois de Public OnPlayerCommandText... tem uma chave abrindo a public,e essa ultima depois do return 0 e a que fecha a public
agora,vou ensinar algo mais sobre chaves(estou falando tanto assim de chaves,porque qualquer chave aberta que nao e fechada e vice-versa Causa 26 Erros no seu Script,em linhas que nao contem erros,entao,quando voce tiver 26 erros em Lugares onde nao tem erros,isso e causado por Chaves,e ultimamente,no forum esta cheio de duvidas de como arrumar esses 26 Erros.).
Veja agora um exemplo de comando:
if(!strcmp(cmdtext, "/comando", true)) { if(!IsPlayerInRangeOfPoint(playerid, 2.0, 231.4386,161.1232,1003.0234)) return SendClientMessage(playerid, 0x008000AA, "Voce Nao Esta No Lugar Certo!"); SendClientMessage(playerid, 0x008000AA, "Parabens,voce esta no lugar certo e digitou o comando!"); } return 1; }
Observe que depois da funçao existe uma chave que fecha,quer saber por que?? R:Ela serve para fechar o if,simplesmente isso.
e agora vo dar uma dica de como Identar um comando,ou seja,deixar ele mais leve para o compilador...
vamos usar o comando que usei acima:
if(!strcmp(cmdtext, "/comando", true)) { if(!IsPlayerInRangeOfPoint(playerid, 2.0, 231.4386,161.1232,1003.0234)) return SendClientMessage(playerid, 0x008000AA, "Voce Nao Esta No Lugar Certo!"); SendClientMessage(playerid, 0x008000AA, "Parabens,voce esta no lugar certo e digitou o comando!"); } return 1; }
Como eu ja disse,o "if" significa Se,e o "!" Significa nao,ou seja,Se Nao EstiverNoPontoCerto que e
231.4386,161.1232,1003.0234,retornara "Voce Nao Esta No Lugar Certo!" e nao acontecera a funçao do comando que e "Parabens,voce esta no lugar certo e digitou o comando!".
Muitos usam dessa forma:
if(!strcmp(cmdtext, "/comando", true)) { if(!IsPlayerInRangeOfPoint(playerid, 2.0, 231.4386,161.1232,1003.0234)) { SendClientMessage(playerid, 0x008000AA, "Voce Nao Esta No Lugar Certo!"); return 1; } SendClientMessage(playerid, 0x008000AA, "Parabens,voce esta no lugar certo e digitou o comando!"); } return 1; }
Isso tambem funciona, mas que faz com que o compilador demore mais para ler.
Conclusão Geral:
{ = Abre
} = Fecha
True = Verdadeiro
1 = Verdadeiro Tambem
False = Falso
0 = Falso Tambem
Return = Retorna
Tutorial by: Transferencia