[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
#2

Parabйns, amigo Darkxdll! Sу faltou mais um poco de cor no tutorial hehe. poderia me falar, onde posso aprender, sobre fini, dof2 ou algum sistema de salvamento... :/
Reply
#3

Coloquei o link no fim do tуpico do FINI . Ele й bem simples de aprender , eu nгo sei muito
sobre o DOF2 , nгo sei qual й mais rбpido ...

kkk Odeio tуpicos muito coloridos kkk #.#
Reply
#4

Quote:
Originally Posted by darkxdll
Посмотреть сообщение
Coloquei o link no fim do tуpico do FINI . Ele й bem simples de aprender , eu nгo sei muito
sobre o DOF2 , nгo sei qual й mais rбpido ...

kkk Odeio tуpicos muito coloridos kkk #.#
Cores destaca um pouco o tуpico, da mais vontade de ler .

Mas, poucas cores, nгo desse jeito: TUTORIAL.


Ainda nгo vi o tуpico inteiro.. Mas, pareзe estar legalzinho
Reply
#5

@Riichard nгo sou muito bom com cores hehehe ... Mais vou tentar melhorar mais o tуpico na
prуxima vez .
#Caramba ganhei 2 Rep kkkk valeu ai gente sz
Reply
#6

muito bom o tutorial mais vocк deveria usar DOF2 alйm de ser mais simples de usar й mais rбpido tambйm.
Reply
#7

Caio , ainda estou estudando o DOF2 , o ъnico que eu entendo sobre salvamento de dados atй agora й FINI :/
Reply
#8

Muito bom !
++rep
Continue Assim
Reply
#9

Код:
Fini_OpenFile(Arquivo); ========== Acho que em DOF2 nгo precisa.
if(Fini_Exists(Arquivo)) ============ if(DOF2_FileExists(Arquivo))
Fini_GetValue ================= DOF2_GetInt
Fini_SaveFile =========== DOF2_SaveFile();
Fini_Create(Arquivo); ====== DOF2_CreateFile(Arquivo);
Fini_SetVal ========= DOF2_SetInt
Fini_CloseFile =========== DOF2_Exit(); # Em OnGameModeExit
Acho que esta certo '-'
Reply
#10

Quote:
Originally Posted by GabrielSantos
Посмотреть сообщение
Muito bom !
++rep
Continue Assim
Obrigado ...




@Riichard , as funзхes sгo bem parecidas mesmo , mais o ruim й acostumar digitar DOF2_.. kkkk
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)