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: ||
1є Passo:
Crie uma definiзгo para a sua DIALOG com uma numeraзгo.
PHP код: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:
1є Passo:
Crie uma definiзгo para a sua DIALOG com uma numeraзгo.
- Código:
#define DIALOG_GPS 1
//#define DIALOG_NOMEDADIALOG NUMERAЗAO_DA_DIALOG
2є Passo:
Vamos criar uma variбvel para ser reconhecida quando o player chegar ao local e ser removido o ponto.
PHP код:Vamos criar uma variбvel para ser reconhecida quando o player chegar ao local e ser removido o ponto.
- Código:
new GPSLocal[MAX_PLAYERS];
//new NOME_DA_VARIAVEL [MAX_PLAYERS](se refere ao mбximo de players encontrados no servidor);
3є Passo:
Vamos na callback OnPlayerEnterCheckPoint(playerid) e vamos fazer as verificaзхes dentro da variбvel.
PHP код:Vamos na callback OnPlayerEnterCheckPoint(playerid) e vamos fazer as verificaзхes dentro da variбvel.
- Código:
public OnPlayerEnterCheckpoint(playerid)
{
if(GPSLocal[playerid] == 1)
{
GPSLocal[playerid] = 0;
DisablePlayerCheckpoint(playerid);
}
return 1;
}
Explicaзхes da aзгo acima:
Quote: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 |
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.
PHP код:Vamos criar o comando, no caso para aparecer a DIALOG dos locais. Eu fiz um exemplo para ir atй uma casa lotйrica.
- Código:
CMD:gps(playerid)
{
ShowPlayerDialog(playerid, DIALOG_GPS, DIALOG_STYLE_LIST, "GPS", "LOTERICA", "Selecionar", "Fechar");
return 1;
}
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.
PHP код: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.
- Código:
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;
}
Explicaзгo da aзгo acima:
Quote: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 код:- Código:
#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;
}
@Edit:
Caso queira o comando "/desligargps":
PHP код:Caso queira o comando "/desligargps":
- Código:
CMD:desligargps(playerid)
{
if(GPSLocal[playerid] == 1)
{
GPSLocal[playerid] = 0;
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid, -1, "{00BFFF}[SERVER]{FFFFFF}: GPS Desligado!");
}
else
{
SendClientMessage(playerid, -1, "{FF0000}ERRO: Vocк nгo estб com o GPS ligado!");
}
return 1;
}
Ter a opзгo de desligar GPS na Dialog:
PHP код:- Código:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_GPS)
{
if(response)
{
if(listitem == 0)
{
if(GPSLocal[playerid] == 1)
{
GPSLocal[playerid] = 0;
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid, -1, "{00BFFF}[SERVER]{FFFFFF}: GPS Desligado!");
}
else
{
SendClientMessage(playerid, -1, "{FF0000}ERRO: Vocк nгo estб com o GPS ligado!");
}
}
if(listitem == 1)
{
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;
}
Creditos: fxckshzt