SA-MP Forums Archive
[Ajuda] Sistema de experiкncia - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Sistema de experiкncia (/showthread.php?tid=653155)



Sistema de experiкncia - SORRISO22 - 27.04.2018

Boa tarde, boa noite, bom dia!
Eu preciso da ajuda de alguйm para terminar um sistema de experiкncia, mas eu quero que ele funcione da seguinte forma o player vai comeзar com 0/4 quando ele completar 4/4 de experiкncia ele vai para a prуxima etapa 0/15 e assim a diante.

Meu sistema:

getEXP (playerid)
{
if (Jogador [playerid] [pScore] == 0)
{
new string [80];
Jogador [playerid] [pNEXP] = 4;
formato (string, sizeof (string), "Exp:% i / 4", Jogador [playerid] [pEXP]);
TextDrawSetString (Novinha [playerid], string);
SetProgressBarMaxValue (Experiencia [playerid], 4);
}
se (Player [playerid] [pScore] == 1)
{
nova string [80];
Jogador [playerid] [pNEXP] = 8;
formato (string, sizeof (string), "Exp:% i / 8", reprodutor [playerid] [pEXP]);
TextDrawSetString (Novinha [playerid], string);
SetProgressBarMaxValue (Experiencia [playerid] ,;
}
se (Player [playerid] [pScore] == 2)
{
nova string [80];
Player [playerid] [pNEXP] = 16;
formato (string, sizeof (string), "Exp :% i / 16 ", Player [playerid] [pEXP]);
TextDrawSetString (Novinha [playerid], string);
SetProgressBarMaxValue (Experiencia [playerid], 16);
}
se (Player [playerid] [pScore] == 3)
{
new string [80];
Jogador [playerid] [pNEXP] = 24;
formato (string, sizeof (string), "Exp:% i / 24", Jogador [playerid] [pEXP]);
TextDrawSetString (Novinha [playerid], string);
SetProgressBarMaxValue (Experiencia [playerid], 24);
}

Eu queria que quando ele completasse a etapa, a experiкncia dele voltasse para 0, jб tentei usar isso:
player [playerid] [pEXP] = 0;
volta para o 0 mas continua na mesma etapa 0/4 preciso da ajuda de vocк desde jб obrigado.
Jб tentei usar (case) tambйm mas nгo funciona.


Re: Sistema de experiкncia - [BOPE]Seu._.Madruga - 28.04.2018

E assim adiante oque ? minha bola de cristal estб de fйrias !


Re: Sistema de experiкncia - SORRISO22 - 28.04.2018

Exemplo 1 etapa 0/4 de experiкncia
2 etapa 0/15 de experiкncia
3 etapa 0/30 de experiкncia
4 etapa 0/50 de experiкncia e assim adiante brother.


Re: Sistema de experiкncia - TIAGOO - 28.04.2018

Coloca em php man fica melhor pra entender!!


Re: Sistema de experiкncia - 1sbedx - 28.04.2018

PHP код:
#include <a_samp>
#define MAX_LEVEL (4)
new ply_Level[MAX_PLAYERS];
new 
ply_Experience[MAX_PLAYERS];
public 
OnPlayerConnect(playerid)
{
    
SetPlayerLevel(playerid1);
    
SetPlayerExperience(playerid0);
    return 
1;
}
GetPlayerLevel(playerid)
    return 
ply_Level[playerid];
GetPlayerExperience(playerid)
    return 
ply_Experience[playerid];
SetPlayerLevel(playeridlevel)
{
    if (
level MAX_LEVEL)
        return 
1;
    return 
ply_Level[playerid] = level;
}
GivePlayerLevel(playeridlevel)
{
    if (
level MAX_LEVEL)
        return 
1;
    return 
ply_Level[playerid] += level;
}
SetPlayerExperience(playeridexperience)
{
    if (
experience GetLevelExperience(GetPlayerLevel(playerid)))
        return 
1;
    return 
ply_Experience[playerid] = experience;
}
GivePlayerExperience(playeridexperience)
{
    if (
experience GetLevelExperience(GetPlayerLevel(playerid)))
        return 
1;
    return 
ply_Experience[playerid] += experience;
}
GetLevelExperience(level)
{
    switch (
level)
    {
        case 
1: return 4;
        case 
2: return 15;
        case 
3: return 30;
        case 
4: return 50;
    }
    return 
0// Invalid level
}
public 
OnPlayerUpdate(playerid// Nгo use aqui, й apenas um exemplo!!
{
    
GivePlayerExperience(playerid1);
    if (
GetPlayerExperience(playerid) >= GetLevelExperience(GetPlayerLevel(playerid)))
    {
        
GivePlayerLevel(playerid1);
        
SetPlayerExperience(playerid0);
    }
    
printf("playerid %d - Level %d (%d/%d)"playeridGetPlayerLevel(playerid), GetPlayerExperience(playerid), GetLevelExperience(GetPlayerLevel(playerid)));
    return 
1;

Pode haver erros, eu fiz аs pressas e nгo testei.


Re: Sistema de experiкncia - FerrariL - 28.04.2018

Esse ъltimo return й inъtil...
PHP код:
GetLevelExperience(level

    switch (
level
    { 
        case 
1: return 4
        case 
2: return 15
        case 
3: return 30
        case 
4: return 50
        default: return 
0// Invalid level 
    





Re: Sistema de experiкncia - 1sbedx - 28.04.2018

Quote:
Originally Posted by FerrariL
Посмотреть сообщение
Esse ъltimo return й inъtil...
PHP код:
GetLevelExperience(level

    switch (
level
    { 
        case 
1: return 4
        case 
2: return 15
        case 
3: return 30
        case 
4: return 50
        default: return 
0// Invalid level 
    


Код:
warning 209: function "GetLevelExperience" should return a value



Re: Sistema de experiкncia - FerrariL - 28.04.2018

Hum й verdade,mas nгo precisava criar 2 returns.
PHP код:
GetLevelExperience(level)  
{  
    switch (
level)  
    {  
        case 
1: return 4;  
        case 
2: return 15;  
        case 
3: return 30;  
        case 
4: return 50;  
    }  
    return 
0;




Re: Sistema de experiкncia - 1sbedx - 28.04.2018

Quote:
Originally Posted by FerrariL
Посмотреть сообщение
Hum й verdade,mas nгo precisava criar 2 returns.
PHP код:
GetLevelExperience(level)  
{  
    switch (
level)  
    {  
        case 
1: return 4;  
        case 
2: return 15;  
        case 
3: return 30;  
        case 
4: return 50;  
    }  
    return 
0;

Sim...


Re: Sistema de experiкncia - Eiss - 28.04.2018

Quote:
Originally Posted by 1sbedx
Посмотреть сообщение
PHP код:
GetLevelExperience(level)
{
    switch (
level)
    {
        case 
1: return 4;
        case 
2: return 15;
        case 
3: return 30;
        case 
4: return 50;
    }
    return 
0// Invalid level

PHP код:
GetLevelExperience(level) {
    
#emit LOAD.S.pri level
    #emit SHL.C.pri 2
    #emit STOR.S.pri level
    #emit LOAD.S.pri  level
    #emit ADD.C 4   /** PRI = PRI + 4 **/
    #emit RETN
    
return 0;