[AJUDA]Sistem de EXP
#1

Ola galera criei um sistema de exp cada vez que o player mata um player ele ganha +1EXP sendo que precisa de 10 pra upar dps que ele upa ele ganha +1Level e cada vez que upa os exps vai aumentando 10 em 10 Exemplo:

UPEI o primeiro lvl que e preciso de 10 exp no segundo lvl e 20 no terceiro lvl e 30 assim por diante bom mais o erro eo seguinte quando eu upo a primeira vez ta tudo certo mais quando eu tento upar a segunda vez que no caso e preciso de 20 exp o cara ganha 10 exp e reseta tudo ...

pawn Код:
forward OnPlayerUPLEVEL(playerid);
public OnPlayerUPLEVEL(playerid)
{
    if(Stats[playerid][PLAYEREXP]>=(Stats[playerid][LEVEL]+1)*10)
    {
        MyLevel = 1;
        Stats[playerid][PLAYEREXP] -= (Stats[playerid][LEVEL]+1)*10;
    }
    TextDrawLetterSize(TextPlayerExp[playerid],-0.100000,(-0.5)+((Stats[playerid][PLAYEREXP])*(-45.599994))/((Stats[playerid][LEVEL]+MyLevel+1)*10));
    TextDrawShowForPlayer(playerid,BlackGroundPlayerExp);
    TextDrawShowForPlayer(playerid,TextStringPlayer);
    TextDrawShowForPlayer(playerid,TextPlayerExp[playerid]);
    TextDrawShowForPlayer(playerid,TextGuerra);
    new string[128];
    format(string,256,"~w~Nome:~n~~p~%s~n~~y~Level: %d~n~Exp: %d"/* / %d"*/,PlayerName(playerid),Stats[playerid][LEVEL]+MyLevel,Stats[playerid][PLAYEREXP]/*,(Stats[playerid][LEVEL]+1)*10*/);
    if(Stats[playerid][PLAYEREXP]) format(string,256,"~w~Nome:~n~~p~%s~n~~y~Level: %d~n~Exp: %d"/*/ %d"*/,PlayerName(playerid),Stats[playerid][LEVEL]+MyLevel,Stats[playerid][PLAYEREXP]/*,(Stats[playerid][LEVEL]+1)*10*/);
    TextDrawSetString(TextGuerra,string);
    return 1;
}

pawn Код:
forward PlayerUpExpLevel(playerid,upexp);
public PlayerUpExpLevel(playerid,upexp)
{
    new string[128];
    if(upexp>0)
    {
        if(TimeMyItens[playerid][6]>0 && TimeMyItens[playerid][7]>0) upexp *= 6;
        else if(TimeMyItens[playerid][6]>0) upexp *= 2;
        else if(TimeMyItens[playerid][7]>0) upexp *= 3;
    }
    Stats[playerid][PLAYEREXP] += upexp;
    for(new l=1; l <= 50; l++)
    {
        if(Stats[playerid][PLAYEREXP]>=(Stats[playerid][LEVEL]+l)*10)
        {
            MyLevel = l;
            Stats[playerid][PLAYEREXP] -= (Stats[playerid][LEVEL]+l)*10;
            if(upexp>0) format(string,256,"~g~Player Up +%d !~n~~b~EXP: %d / %d~n~~g~LEVEL: %d",upexp,Stats[playerid][PLAYEREXP],(Stats[playerid][LEVEL]+MyLevel+1)*10,Stats[playerid][LEVEL]+MyLevel);
            else format(string,256,"~r~Player Down %d !~n~~b~EXP: %d / %d~n~~g~LEVEL: %d",upexp,Stats[playerid][PLAYEREXP],(Stats[playerid][LEVEL]+MyLevel+1)*10,Stats[playerid][LEVEL]+MyLevel);
        }
        else
        {
            if(upexp>0) format(string,256,"~g~Player Up +%d !~n~~b~EXP: %d / %d",upexp,Stats[playerid][PLAYEREXP],(Stats[playerid][LEVEL]+MyLevel+1)*10);
            else format(string,256,"~r~Player Down %d !~n~~b~EXP: %d / %d",upexp,Stats[playerid][PLAYEREXP],(Stats[playerid][LEVEL]+MyLevel+1)*10);
        }
    }
    GameTextForPlayer(playerid,string,5000,1);
}
Reply
#2

Jб que necessita da morte de um jogador, nгo seria mais fбcil deixar esse cуdigo no OnPlayerDeath?
Reply
#3

pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
PlayerUpExpLevel(killerid,1);
Ja que cada morte ganha 1 exp , pra upar primeira vez tenho que matar 10 vezes ai ja no Level2 fica mais dificil tenho que matar 20 vezes mais so que mato 10 e reseta o exp naum passa de 10 assim naum consigo upar pro level3 .. pq isso ?
Reply
#4

Ajuda alguem...
Reply
#5

PHP код:
stock Expz(playerid)
{
    new 
Ezp;
    if(
Level[playerid] == 1Ezp 10;
    if(
Level[playerid] == 2Ezp 20;
    if(
Level[playerid] == 3Ezp 30;
    if(
Level[playerid] == 4Ezp 40;
    if(
Level[playerid] == 5Ezp 50;
    return 
Ezp;

?
Reply
#6

Naum funcionou sempre quando chega no Level2 aparece que tenho que ganhar 20 EXP mais quando eu Ganho 10 o EXP RESETA
Reply
#7

Nгo entendi o.O, Ele upa pelo OnPlayerDeath?

@EDIT

PHP код:
new
    
Level[MAX_PLAYERS],
    
Exp[MAX_PLAYERS]
;
stock Expz(playerid)
{
    new 
Ezp;
    if(
Level[playerid] == 1Ezp 10;
    if(
Level[playerid] == 2Ezp 20;
    if(
Level[playerid] == 3Ezp 30;
    if(
Level[playerid] == 4Ezp 40;
    if(
Level[playerid] == 5Ezp 50;
    return 
Ezp;
}
public 
OnPlayerDeath(playeridkilleridreason)
{
    
Exp[killerid] ++;
    if(
Exp[killerid] >= Expz(killerid))
    {
        
Level[killerid] ++;
        
Exp[killerid] = 0;
    }
    return 
true;

Reply
#8

Os jogadores vгo passar de nнvel quando atingirem os seguintes pontos de respeito?

Код:
Level 1 passa de nнvel com 10 de respeito
Level 2 passa de nнvel com 30 de respeito
Level 3 passa de nнvel com 60 de respeito
Level 4 passa de nнvel com 100 de respeito
Level 5 passa de nнvel com 150 de respeito
Level 6 passa de nнvel com 210 de respeito
Level 7 passa de nнvel com 280 de respeito
Reply
#9

pawn Код:
#define Expz(%0) Level[%0]*10
stock Expz(playerid)  return Level[playerid]*10;
if(Expz(playerid) == Exp[playerid]) .;..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)