[Tutorial] Tutorial simples sobre sistema de level e XP
#1

[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
Bom essas 2 variaveis (pLevel e pExp) sгo 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); 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;
}
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 vocк saiu

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;
}
Ok . Aqui irб salvar o Level e a Experiencia no "Arquivo" , que seria no caso o nome do Player dentro da scriptfiles .

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;
    }
}
Requerimentos :
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.
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)