Bom dia galera, estou aqui com a intenção 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 código, vai ajudar muitos novos.
OBS: Lembrem-se de adaptar as variáveis de acordo com o seu GM.
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 código, vai ajudar muitos novos.
OBS: Lembrem-se de adaptar as variáveis de acordo com o seu GM.
Comeзando:
Vocк deve colocar as variбveis no inicio do seu GM, junto com as demais variбveis
peão Код:Vocк deve colocar as variбveis no inicio do seu GM, junto com as demais variбveis
- Código:
#define D_Tutorial 100 //ID do diálogo usado no tutorial, deve mudar conforme o seu servidor
new bool : PodePassarTutorial [ MAX_PLAYERS ] ; //Irá verificar se o jogador pode ou não passar o tutorial
new bool : VendoTutorial [ MAX_PLAYERS ] ; //Irá verificar se ele está ou não está vendendo o tutorial
new TempoTutorial [ MAX_PLAYERS ] ; //Define o tempo que o player deve esperar
new timertutorial [ MAX_PLAYERS ]; // Variável utilizada para salvar as informações do timer para cada player
Um exemplo de como usar na sua caixa de diálogo
peão Код:- Código:
[size=14][size=13]//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 ( resposta == 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 jogador não pode passar para o próximo diálogo 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 diálogo 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 vendendo 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 ;
}[/size][/size]
[center][/center]
Aqui é onde inicia o tutorial. Você deve por no final do registro do player, ex:
peão Код:- Código:
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á vendendo 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 jogador pode passar para o próximo tutorial
}
return 1 ;
}
Coloca em OnPlayerConnect para não haver bugs
peão Код:- Código:
[size=14][size=13]PodePassarTutorial [ playerid ] = false;
VendoTutorial [ playerid ] = false;
TempoTutorial [ playerid ] = 0 ;[/size][/size]
[center][color=black][size=14][u]Este callback é usado para verificar o tempo que o jogador deve esperar para passar o tutorial. Pode colocá-la no final de seu GM[/u][/size][/color][/center]
[size=14]peão Код:
[size=13]encaminhar VendoTuto ( playerid ) ;
public VendoTuto ( playerid )
{
if ( VendoTutorial [ playerid ] == true ) // Aqui verifica se o player está vendendo 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 que o jogador passe para o próximo diálogo
SendClientMessage ( playerid, cinza, "Você já pode passar para 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 vendendo o tutorial ele irб "excluir" o timer, fazendo com que nгo fique contando de varde
{
KillTimer ( timertutorial [ playerid ] ) ; // "Excluir" o timer para nгo haver lag desnecessбrio
TempoTutorial [ playerid ] = 0 ;
}
retorna 1 ;
}[/size][/size]
Bom galera é isso, espero que ajudem.
Acredito que tenha dado uma melhorada
Imagem de teste
Imagem de teste 2 - Tempo restante
Imagem de teste 3 - pode passar para o próximo diálogo
Imagem de teste 4 - tempo restante
Creditos:
Acredito que tenha dado uma melhorada
Imagem de teste
Imagem de teste 2 - Tempo restante
Imagem de teste 3 - pode passar para o próximo diálogo
Imagem de teste 4 - tempo restante
Creditos:
MatheusDalZot