24.05.2014, 15:51
(
Последний раз редактировалось MatheusDalZot; 25.05.2014 в 14:04.
Причина: Colocaзгo de imagens
)
Bom dia galera, estou aqui com intuito de dar uma ajeitada nesse tutorial.
Bom galera, vejo muita gente pedindo ajuda de como colocar timer nas dialogs, entгo resolvi compartilhar uma criaзгo minha, sei que nгo й nada muito avanзado, afinal eu ainda continuo codando com codes antigos, nгo consegui me adaptar a zcmd, sscanf e etc. Mas enfim vamos lб, sei que por mais simples que seja o code, vai ajudar muitos novatos.
OBS: Lembrem-se de adaptar as variбveis de acordo com o seu GM.
Vocк deve colocar as variбveis no inicio do seu GM, junto as demais variбveis
pawn Код:
#define D_Tutorial 100 //ID do dialog usado no tutorial, deve mudar conforme o seu servidor
new bool:PodePassarTutorial[MAX_PLAYERS]; //Irб verificar se o player pode ou nгo passar o tutorial
new bool:VendoTutorial[MAX_PLAYERS]; //Irб verificar se ele estб ou nгo vendo o tutorial
new TempoTutorial[MAX_PLAYERS]; //Define o tempo que o player deve esperar
new timertutorial[MAX_PLAYERS]; //Variбvel utilizada para guardar as informaзхes do timer para cada player
pawn Код:
//Em OnPlayerDialog
new stringtuto[128];
if(dialogid == D_Tutorial) // Em sua dialog vocк deve colocб-lo da seguinte forma:
{
if(response == 0)
{
return 1;
}
if(response == 1)
{
if(PodePassarTutorial[playerid] == true) //Aqui verifica que o player jб estб autorizado a passar o tutorial
{
ShowPlayerDialog(playerid, D_Tutorial, DIALOG_STYLE_MSGBOX, "Tutorial!", "Bem vindo ao tutorial.", ">>", "");
PodePassarTutorial[playerid] = false; // Aqui estб definindo que o player nгo poderб passar para o prуximo dialog antes do tempo acabar.
TempoTutorial[playerid] = 10; // Aqui define o tempo que o player vai esperar para poder passar o tutorial.
}
else if(PodePassarTutorial[playerid] == false) //Aqui verifica que o player ainda nгo estб autorizado a passar o tutorial, retornando-o para o dialog anterior
{
format(stringtuto, 128, "Vocк deve esperar %d segundos para poder passar o tutorial!", TempoTutorial[playerid]);
SendClientMessage(playerid, -1, stringtuto);
ShowPlayerDialog(playerid, D_Tutorial+1, DIALOG_STYLE_MSGBOX, "Tutorial:","Muito bem, vocк esperou o tempo suficiente para passar o tutorial!",">>","");
VendoTutorial[playerid] = false; // Define que o player nгo estб mais vendo o tutorial
PlayerInfo[playerid][pTutorial] = 1; // Define que o player jб visualizou o tutorial, Usado na maioria dos GF's, edite de acordo com seu gm
}
}
return 1;
}
pawn Код:
public OnPlayerSpawn(playerid) // Usei como exemplo o OnPlayerSpawn, mas vocк pode ajustar de sua forma
{
if(InfoPlayer[playerid][pTutorial] == 0)
{
PodePassarTutorial[playerid] = false; // Nгo deixarб o player passar o tutorial antes do tempo
VendoTutorial[playerid] = true; // Define que o player estб vendo o tutorial
TempoTutorial[playerid] = 5; // Define o tempo que o player deve esperar
timertutorial[playerid] = SetTimerEx("VendoTuto", 1000, true, "i", playerid); // Timer que irб checar quando o player poderб passar para o prуximo tutorial
}
return 1;
}
pawn Код:
PodePassarTutorial[playerid] = false;
VendoTutorial[playerid] = false;
TempoTutorial[playerid] = 0;
pawn Код:
forward VendoTuto(playerid);
public VendoTuto(playerid)
{
if(VendoTutorial[playerid] == true) // Aqui verifica se o player estб vendo o tutorial, em caso de true, ele irб diminuir o valor da variбvel de tempo
{
if(TempoTutorial[playerid] == 0)// Checa se jб se passou o tempo de espera do player, no caso do valor da variбvel se igualar a 0, irб retornar para o player que ele poderб passar o tutorial
{
PodePassarTutorial[playerid] = true; // Permite o player a passar para o prуximo dialog
SendClientMessage(playerid, cinza, "Vocк jб pode passar a pбgina!");
}
else{TempoTutorial[playerid] --;}// Diminui o tempo de espera do player de 1 em 1 segundo
}
else if(VendoTutorial[playerid] == false)// Verifica, se o player nгo estiver mais vendo o tutorial ele irб "excluir" o timer, fazendo com que nгo fique contando de varde
{
KillTimer(timertutorial[playerid]); // "Exclui" o timer para nгo haver lag desnecessбrio
TempoTutorial[playerid] = 0;
}
return 1;
}
Creio que tenha dado uma melhorada
Imagem de teste
Imagem de teste 2 - Tempo restante
Imagem de teste 3 - pode passar para o prуximo dialog
Imagem de teste 4 - tempo restante