Olá.
Sou iniciante em programção pawno, Este é o meu terceiro tutorial, mas vim passar pra vocês uma base de GPS em dialog, mas também estarei ensinando como eu fiz essa base.
Aceito Críticas e Sugestões!
Includes Utilizadas: <a_samp> || <zcmd>
1º Passo:
Crie uma definição para a sua DIALOG com uma numeração.
2º Passo:
Vamos criar uma variável para ser reconhecida quando o player chegar ao local e ser removido o ponto.
3º Passo:
Vamos na callback OnPlayerEnterCheckPoint(playerid) e vamos fazer as verificações dentro da variável.
Explicações da ação acima:
4º Passo:
Vamos criar o comando, no caso para aparecer a DIALOG dos locais. Eu fiz um exemplo para ir até uma casa lotérica.
Obs.:Única função utilizada foi a ShowPlayerDialog, que é para mostrar uma caixa de Dialog para o player que digitou o comando.
Brevemente, trarei um tutorial explicando mais sobre a função.
Caso queira estudar: ShowPlayerDialog
5º Passo:
Vamos até a callback que é responsável por responder as dialogs, no caso a public OnDialogResponse.
Explicação da ação acima:
Por fim, toda a função será da seguinte forma:
Obrigado!
Source: Pastebin
Sou iniciante em programção pawno, Este é o meu terceiro tutorial, mas vim passar pra vocês uma base de GPS em dialog, mas também estarei ensinando como eu fiz essa base.
Aceito Críticas e Sugestões!
Includes Utilizadas: <a_samp> || <zcmd>
1º Passo:
Crie uma definição para a sua DIALOG com uma numeração.
PHP Code:
#define DIALOG_GPS 1
//#define DIALOG_NOMEDADIALOG NUMERAÇAO_DA_DIALOG
Vamos criar uma variável para ser reconhecida quando o player chegar ao local e ser removido o ponto.
PHP Code:
new GPSLocal[MAX_PLAYERS];
//new NOME_DA_VARIAVEL [MAX_PLAYERS](se refere ao máximo de players encontrados no servidor);
Vamos na callback OnPlayerEnterCheckPoint(playerid) e vamos fazer as verificações dentro da variável.
PHP Code:
public OnPlayerEnterCheckpoint(playerid)
{
if(GPSLocal[playerid] == 1)
{
GPSLocal[playerid] = 0;
DisablePlayerCheckpoint(playerid);
}
return 1;
}
Code:
public OnPlayerEnterCheckpoint(playerid) = Callback de quando o player estiver dentro de uma marcação criada.
{ = Abertura da chave da Callback
if(GPSLocal[playerid] == 1) = verificação, nós verificamos se a variável GPSLocal é criada.
{ = Abertura da chave de verificação
GPSLocal[playerid] = 0; = Estamos zerando qualquer marcação criada por alguma função
DisablePlayerCheckpoint(playerid); = Estamos desabilitando todas as marcações (desabilitando todas que estiverem sido criadas no momento)
} = Fechando chave de abertura da verificação
return 1; = Retornamos a Callback para 1 ou fizemos o retorno verdadeiro da callback
} = Fechando a chave de abertura da Callback
Vamos criar o comando, no caso para aparecer a DIALOG dos locais. Eu fiz um exemplo para ir até uma casa lotérica.
PHP Code:
CMD:gps(playerid)
{
ShowPlayerDialog(playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "GPS", "LOTERICA", "Selecionar", "Fechar");
return 1;
}
Brevemente, trarei um tutorial explicando mais sobre a função.
Caso queira estudar: ShowPlayerDialog
5º Passo:
Vamos até a callback que é responsável por responder as dialogs, no caso a public OnDialogResponse.
PHP Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_GPS)
{
if(response)
{
if(listitem == 0)
{
SetPlayerCheckpoint(playerid,1289.8077,-1654.2590,13.5469,8.0);
SendClientMessage(playerid,-1,"[INFO] - A Lotérica foi marcada no seu mapa!");
GPSLocal[playerid] = 1;
}
}
}
return 1;
}
Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) = É Responsável pelo início da função.
{ = Abertura da chave da callback
if(dialogid == DIALOG_GPS) = Está verificando se a dialogid existe, e a ação contra ela será feita.
{ = Abertura da Chave da Verificação
if(response) = Verificação da responsabilidades que possuem as colunas.
{ = Abertura da Chave de Responsabilidade
if(listitem == 0) = Verificação se do item citado nas linhas do comando. No pawno, tudo começa do número 0(zero), O Zero equivale a primeira linha.
{ = Abertura da Verificação dos itens.
SetPlayerCheckPoint(playerid, 1289.8077,-1654.2590,13.5469,8.0); = Criar um checkpoint no mapa do jogo. playerid é o player que digitar o comando. Essas númerações são as coordenadas X,Y,Z,Size(Tamanho)
SendClientMessage(playerid, -1, "[INFO]: Lotérica marcado no Mapa, Vá até o ponto"); = Enviamos uma mensagem ao client. -1 é a cor que você deseja que apareça na mensagem(branco no pawn). Mensagem.
GPSLocal[playerid] = 1; = Damos um valor para a variável GPSLocal, que foi 1 ao clicarmos no Local desejado, após chegarmos, o local será desmarcado.
} = Fecha a verificação dos itens.
} = Fechando a chave de responsabilidade.
} = Fechando a chave de verificação de definição da DIALOG.
return 1; = Estamos finalizando ou dando o retorno final(ou verdadeiro) da função.
} = Fechando chave de função da callback.
Por fim, toda a função será da seguinte forma:
PHP Code:
#include <a_samp>
#include <zcmd>
#define DIALOG_GPS 1
new GPSLocal[MAX_PLAYERS];
CMD:gps(playerid)
{
ShowPlayerDialog(playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "GPS", "LOTERICA", "Selecionar", "Fechar");
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
if(GPSLocal[playerid] == 1)
{
GPSLocal[playerid] = 0;
DisablePlayerCheckpoint(playerid);
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_GPS)
{
if(response)
{
if(listitem == 0)
{
SetPlayerCheckpoint(playerid,1289.8077,-1654.2590,13.5469,8.0);
SendClientMessage(playerid,-1,"[INFO] - A Lotérica foi marcada no seu mapa!");
GPSLocal[playerid] = 1;
}
}
}
return 1;
}
Source: Pastebin