10.07.2013, 20:10
(
Последний раз редактировалось darkxdll; 10.07.2013 в 22:18.
)
[TUTORIAL]Sistema de Level & Experiencia
Olб este й meu primeiro tutorial , e й bem simples , apenas um sistema de level .Primeiramente.
pawn Код:
//adicione isto junto com suas news .
new pLevel[MAX_PLAYERS]; // esta variavel й para o level
new pExp[MAX_PLAYERS]; // esta variavel й para a Experiencia
new pTimeUP[MAX_PLAYERS]; // esta variavel й para o Tempo de receber XP
ja a variavel do tempo (pTimeUP) й para quando o player desconectar , a funзгo KillTimer(pTimeUP); trabalhar !
Apуs isto , vamos a segunda parte :
pawn Код:
public OnPlayerConnect(playerid)// Public de quando o player CONECTA ao servidor
{
pTimeUP[playerid] = SetTimerEx("UparXp",300000,true,"i",playerid);// De 5 em 5 minutos o player ira receber 1 XP
new 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("Experiencia");// pega o valor da linha "Experiencia" 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("Experiencia",0);// ira definir a experiencia do jogador a ZERO ( pode mudar para qualquer experiencia que quiser , seria a xp inicial do jogador)
Fini_SetVal("Level",0);// irб definir o level do jogador a ZERO ( pode mudar para qualquer level que quiser , seria o level inicial do jogador)
Fini_SaveFile(Arquivo);// salva o arquivo
}
Fini_CloseFile();// fecha o arquivo
return 1;
}
Passando a terceira parte :
pawn Код:
public OnPlayerDisconnect(playerid, reason) // public de quando o jogador desconecta
{
KillTimer(pTimeUP[playerid]); // irб "MATAR" a contagem de receber XP
new 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 experiencia no arquivo
Fini_SetVal("Level",pLevel[playerid]); // seta o level no arquivo
Fini_SaveFile(Arquivo); // salva o arquivo
Fini_CloseFile(); // fecha o arquivo
return 1;
}
Quarta parte :
pawn Код:
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 experiencia no nosso servidor! [%d/5]",pExp[playerid]);//mostra a mensagem que o player upou a XP
SendClientMessage(playerid,-1,string);// Lanзa pro player a mensagem
if(pExp[playerid] == 5){ // verifica se ele estб com 5 XP
pLevel[playerid] ++; // se tiver 5 xp aumenta 1 level
pExp[playerid] = 0; // reseta a XP do player para 0
new string2[50]; // mesma coisa do new string[50] apenas diferenciei o nome
format(string,sizeof(string),"[LEVEL]OK. Vocк acaba de upar 1 level ! Total : [%d]",pLevel[playerid]);// mostra o level na mensagem
SendClientMessage(playerid,-1,string2); // mensagem enviada ao player
return 1;
}
}
Conhecimento bбsico sobre variaveis , sobre funзхes e tambйm sobre fini .
Includes usadas :
a_samp
a_fini
Tutorial sobre fini :
[TUTORIAL]Fini Cache File System
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.