[Tutorial] Como criar comandos /ir e /trazer usando SSCANF e zCMD
#1

Introduзгo

Para fazermos os comandos iremos precisar de duas includes, Sscanf2 e zCMD.

Estarei usando o Sscanf2


Downloads:





Apуs baixar, abra a pasta do Pawno, vб em includes e cole lб os dois arquivos


__________________________________________________ _______________________________________

Iniciando

Antes de tudo, certifique-se de que vocк adicionou ao comeзo do seu projeto
Quote:

#include sscanf2

Quote:

#include zcmd

Apуs se certificar, abra seu arquivo no pawno e escolha um lugar para digitar o comando(Eu uso depois da ъltima public).

Digite:
Quote:
CMD:ir(playerid, params[]) {

// Explicaзгo:

CMD: // Indica como й o comando no caso /ir.

ir: // O comando.

playerid: // Quem digita o comando.

params[]: // Significa que vamos usar parвmetros, esses parвmetro serгo utilizados em TODOS o comandos que precisarem de um complemento exemplo " /ir [id do jogador] " /ir = comando, [id do jogador] = complemento do comando, parвmetro.

Continuando..

...Apуs ter definido o CMD, vamos entгo criar o que vai ser usado nesse cmd logo abaixo digite:

Quote:
new aName[MAX_PLAYER_NAME]; // Nome de quem usou o comando, no caso o Admin, etc..
new pName[MAX_PLAYER_NAME]; // Nome do player para quem o Admin se teleportou.
new id; // Id do player que vai ser usado no /ir <ID>
new str[128]; // Criamos uma string que vai mandar as mensagens ao player
GetPlayerName(playerid, aName, sizeof(aName)); // Vai pegar o nome do Player que usou o comando.
GetPlayerName(playerid, pName, sizeof(pName)); // Vai pegar o nome de quem foi usado o comando.

Depois de ter feito isso digite logo abaixo:
Quote:

if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF230AFF, "|ERRO| Vocк nгo possui acesso para utilizar esse comando!");

// Irб checar se o player estб logado Rcon, caso nгo esteja, irб retornar a mensagem de erro.

if(sscanf(params, "d", id)) return SendClientMessage(playerid, 0xFF230AFF, "|ERRO| Use /ir <ID do jogador>.");

// Irб checar se ele escreveu o comando todo, caso tenha escrito apenas /ir, irб retornar a mensagem de erro.

if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF230AFF, "|ERRO| O ID digitado nгo estб no servidor.");

// Irб checar se ele digitou um ID vбlido, caso o ID digitado nгo esteja no server, irб retornar a mensagem de erro.

new Float: x, Float: y, Float: z;
GetPlayerPos(id, x, y, z);
SetPlayerPos(playerid, x, y, z);

// GetPlayerPos, irб pegar a posiзгo do ID. SetPlayerPos, vai setar quem digitou o comando na posiзгo do ID.

format(str, sizeof(str), "|INFO| Vocк foi ao jogador: %s", pName);
SendClientMessage(playerid, 0x1CD622FF, str);

// Vai enviar б quem digitou o comando a mensagem de que ele foi ao jogador ID, o %s serб substituнdo pelo nome do ID dentro do jogo.

format(str, sizeof(str), "|INFO| O Administrador: %s, foi atй vocк", aName);
SendClientMessage(id, 0x1CD622FF, str);

// Vai enviar б quem o admin se teleportou a mensagem de que o admin foi atй ele, os %s serб substituнdo pelo nome do admin dentro do jogo.

Por fim.. digite:
Quote:
return 1;
} // Fecha o Comando, significando que acabou, nunca se esqueзa de fecha-lo, caso contrбrio o pawno nгo irб entender que o comando acabou.

Pronto, vocк finalizou o comando /ir <id>. Agora, para o /trazer, basta vocк copiar e colar abaixo todo o cуdigo que acabamos de criar (Sim, copie e cole abaixo todo o comando /ir.)
Apуs isso vб atй a primeira linha do comando copiado e modifique:

De:
Quote:
CMD:ir(playerid, params[]) {
Para:
Quote:
CMD:trazer(playerid, params[]) {


Depois..
Quote:

// Procure por estas linhas:
new Float: x, Float: y, Float: z;
GetPlayerPos(id, x, y, z); // Troque "id" por "playerid"
SetPlayerPos(playerid, x, y, z); // Troque "playerid" por "id"

// Para o /trazer basta trocar o "id" no GetPlayerPos por "playerid" e o SetPlayerPos "playerid" por "id".

Apуs isso, basta modificar as mensagens!

Fim
Bom, esse й o meu primeiro Post aqui no Fуrum. Desde jб peзo desculpas caso o cуdigo nгo esteja muito aperfeiзoado, comecei com a linguбgem Pawn faz apenas 1 Semana..

Aceito Dicas e Crнticas
Qualquer dъvida й sу me dizer, irei responder logo. ( Obs: Compilei aqui, e foi tudo certo! )

Espero ter ajudado alguйm, atй mais.
Reply
#2

Muito bom
Reply
#3

Poste Tutorial aki:
http://forum.sa-mp.com/forumdisplay.php?f=56

Recomendo usar assim:
Код:
if(sscanf(params, "u", id))
O comando poderб funcionar com o nick do player, em vez do ID.
Reply
#4

Quote:
Originally Posted by Ever_SH
Посмотреть сообщение
Poste Tutorial aki:
http://forum.sa-mp.com/forumdisplay.php?f=56

Recomendo usar assim:
Код:
if(sscanf(params, "u", id))
O comando poderб funcionar com o nick do player, em vez do ID.
Postarei lб!

Obrigado pela dica, irei usar!
Reply
#5

Pra quem estб comeзando, seu tutorial estб muito bom. +REP
Reply
#6

Dica: O seu cуdigo sу estб puxando o jogador, mas nгo estб puxando o veнculo dele, caso ele esteja em algum...

Recomendo:

/ir:

pawn Код:
if(IsPlayerInAnyVehicle(playerid))
{
     SetVehiclePos(GetPlayerVehicleID(playerid),x,y,z);
}
/trazer:

pawn Код:
if(IsPlayerInAnyVehicle(id))
{
     SetVehiclePos(GetPlayerVehicleID(id),x,y,z);
}
Reply
#7

Parabйns, excelente tutorial !
Reply
#8

Para iniciantes este й um уtimo tutorial, parabйns..
Reply
#9

Quote:
Originally Posted by GabrielCOP
Посмотреть сообщение
Dica: O seu cуdigo sу estб puxando o jogador, mas nгo estб puxando o veнculo dele, caso ele esteja em algum...

Recomendo:

/ir:

pawn Код:
if(IsPlayerInAnyVehicle(playerid))
{
     SetVehiclePos(GetPlayerVehicleID(playerid),x,y,z);
}
/trazer:

pawn Код:
if(IsPlayerInAnyVehicle(id))
{
     SetVehiclePos(GetPlayerVehicleID(id),x,y,z);
}
Fiquei Off por um tempo, voltei agora. Muito obrigado pela dica irei usar !
Reply
#10

Quote:
Originally Posted by HaRdiiZin
Посмотреть сообщение
Pra quem estб comeзando, seu tutorial estб muito bom. +REP
Muito obrigado amigo !
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)