[TUTORIAL] Sistema de Nível e Experiência
Olé este é meu primeiro tutorial , e é bem simples , apenas um sistema de nível .
primeiro.
peão Код:primeiro.
- Código:
//adicione isto junto com suas notícias .
novo pLevel [ MAX_PLAYERS ] ; // esta variavel é para o level
new pExp [ MAX_PLAYERS ] ; // esta variável é para a Experiência
new pTimeUP [ MAX_PLAYERS ] ; // esta variável é para o Tempo de receber XP
Bom essas 2 variáveis (pLevel e pExp) só as que armazenaram o Level e a Experiencia , bem simples ,
ja a variavel do tempo (pTimeUP) й para quando o player desconectar , a função KillTimer(pTimeUP); trabalhe!
Depois disso, vamos a segunda parte:
peão Код:ja a variavel do tempo (pTimeUP) й para quando o player desconectar , a função KillTimer(pTimeUP); trabalhe!
Depois disso, vamos a segunda parte:
- Código:
public OnPlayerConnect ( playerid ) // Público de quando o player CONECTA ao servidor
{
pTimeUP [ playerid ] = SetTimerEx ( "UparXp" , 300000 ,true, "i" ,playerid ) ; // De 5 em 5 minutos o jogador ira receber 1 XP
novo Arquivo [ 100 ] ; // Variavel que iremos usar para abrir nosso arquivo com FINI (nгo falarei sobre o mesmo pois jб existe um tуpico sobre ele)
new pNome [ MAX_PLAYER_NAME ] ;// variavel que pegara o nome do jogador para abrir com Fini
GetPlayerName ( playerid,pNome, sizeof ( pNome ) ) ; // Função que pega o nome do jogador
format ( Arquivo, sizeof ( Arquivo ) , "%s" ,pNome ) ; // formatando o Arquivo para abrir com FINI
Fini_OpenFile ( Arquivo ) ; // abre o arquivo
if ( Fini_Exists ( Arquivo ) ) // verifica se existe o arquivo do jogador
{
pExp [ playerid ] = Fini_GetValue ( "Experiência" ) ; // pega o valor da linha "Experiência" dentro do arquivo do jogador
pLevel [ playerid ] = Fini_GetValue ( "Level" ) ; // pega o valor da linha "Level" dentro do arquivo do jogador
Fini_SaveFile ( Arquivo ) ; // salva o arquivo
}
else
{
Fini_Create ( Arquivo ) ; // Caso nao exista o arquivo irá cria-lo automaticamente
Fini_SetVal ( "Experiência" , 0 ) ; // ira definir a experiência do jogador a ZERO ( pode mudar para qualquer experiência que quiser , seria a xp inicial do jogador)
Fini_SetVal ( "Level" , 0 ) ; // irá definir o nível do jogador a ZERO (pode mudar para qualquer nível que quiser, seria o nível inicial do jogador)
Fini_SaveFile ( Arquivo ) ; // salva o arquivo
}
Fini_CloseFile ( ) ; // fecha o arquivo
return 1 ;
}
Bom aqui nгo tem muito a dizer , apenas iremos comeзar a contagem para receber o XP e irб setar o level do jogador , se for um jogador que ja joga no server , ira apenas carregar o level e xp da ultima vez que vc saiu Passando
a terceira parte:
peão Код:a terceira parte:
- Código:
public OnPlayerDisconnect ( playerid, reason ) // public de quando o jogador desconecta
{
KillTimer ( pTimeUP [ playerid ] ) ; // irá "MATAR" a contagem de receber XP
novo Arquivo [ 100 ] ; // ja falei la em cima
new pNome [ MAX_PLAYER_NAME ] ; // ja falei la em cima
GetPlayerName ( playerid,pNome, sizeof ( pNome ) ) ; // ja falei la em cima
format( Arquivo, sizeof ( Arquivo ) , "%s" ,pNome ) ; // ja falei la em cima
Fini_OpenFile ( Arquivo ) ; // abre o Arquivo
Fini_SetVal ( "Experiencia" ,pExp [ playerid ] ) ; // Seta a experiência no arquivo
Fini_SetVal ( "Level" ,pLevel [ playerid ] ) ; // seta o nível no arquivo
Fini_SaveFile ( Arquivo ) ;// salva o arquivo
Fini_CloseFile ( ) ; // fecha o arquivo
return 1 ;
}
OK . Aqui vai salvar o Level e a Experiencia no "Arquivo" , que seria no caso o nome do Player dentro da scriptfiles .
Quarta parte:
peão Код:Quarta parte:
- Código:
stock UparXp ( playerid ) // função nova que será chamada pelo SetTimerEx
{
pExp [ playerid ] ++ ; // aumenta a variavel pExp do player , exemplo : tava 1 , dai aumentou ficou 2
new string [ 50 ] ; //coloquei 50 porq acho que é o suficiente .. qualquer problema sу aumentar ...
format ( string, sizeof ( string ) , "[UP]Parabéns ! Você acaba de upar sua experiência no nosso servidor! [%d/5] " ,pExp [ ID do jogador ] ) ;//mostra a mensagem que o player upou a XP
SendClientMessage ( playerid, - 1 ,string ) ; // Lança pro jogador a mensagem
if ( pExp [ playerid ] == 5 ) { // verifica se ele está com 5 XP
pLevel [ playerid ] ++ ; // se tiver 5 xp aumenta 1 nível
pExp [ playerid ] = 0 ; // reseta a XP do jogador para 0
new string2 [ 50 ] ;// mesma coisa do new string[50] apenas diferenciei o nome
format ( string, sizeof ( string ) , "[LEVEL]OK. Você acaba de subir 1 level ! Total : [%d]" ,pLevel [ playerid ] ) ; // mostra o nível na mensagem
SendClientMessage ( playerid, - 1 ,string2 ) ; // mensagem enviada ao player
return 1 ;
}
}
Requerimentos:
Conhecimento bбsico sobre variaveis, sobre funзхes e tambйm sobre fini.
Inclui usado :
a_samp
a_fini
Crйditos :
darkxdll (Brunno_Vinicius)
Obs : Aceito crнticas e se deu algum erro ou bug me mande MP ou poste aqui no tуpico
@Edit : Sem querer errei , as funзхes do Fini sгo com a letra "f" maiuscula , estava assim : fini_Exists , ao invйs de Fini_Exists, e tambйm por
alguns erros que deu quando eu compilei , mais agora estб perfeito.
Conhecimento bбsico sobre variaveis, sobre funзхes e tambйm sobre fini.
Inclui usado :
a_samp
a_fini
Crйditos :
darkxdll (Brunno_Vinicius)
Obs : Aceito crнticas e se deu algum erro ou bug me mande MP ou poste aqui no tуpico
@Edit : Sem querer errei , as funзхes do Fini sгo com a letra "f" maiuscula , estava assim : fini_Exists , ao invйs de Fini_Exists, e tambйm por
alguns erros que deu quando eu compilei , mais agora estб perfeito.