PDA

View Full Version : [AJUDA]Sistem de EXP


Victor_Souz4
01/12/2011, 01:14 PM
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 ...

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,BlackGroundPlayerEx p);
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;
}


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);
}

ViniBorn
01/12/2011, 01:19 PM
Já que necessita da morte de um jogador, não seria mais fácil deixar esse código no OnPlayerDeath?

Victor_Souz4
01/12/2011, 01:26 PM
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 ?

Victor_Souz4
01/12/2011, 02:18 PM
Ajuda alguem...

[R] ousenber [K]
01/12/2011, 02:25 PM
stock Expz(playerid)
{
new Ezp;
if(Level[playerid] == 1) Ezp = 10;
if(Level[playerid] == 2) Ezp = 20;
if(Level[playerid] == 3) Ezp = 30;
if(Level[playerid] == 4) Ezp = 40;
if(Level[playerid] == 5) Ezp = 50;
return Ezp;
}

?

Victor_Souz4
01/12/2011, 02:39 PM
Naum funcionou sempre quando chega no Level2 aparece que tenho que ganhar 20 EXP mais quando eu Ganho 10 o EXP RESETA

[R] ousenber [K]
01/12/2011, 02:42 PM
Não entendi o.O, Ele upa pelo OnPlayerDeath?

@EDIT


new
Level[MAX_PLAYERS],
Exp[MAX_PLAYERS]
;

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

public OnPlayerDeath(playerid, killerid, reason)
{
Exp[killerid] ++;
if(Exp[killerid] >= Expz(killerid))
{
Level[killerid] ++;
Exp[killerid] = 0;
}
return true;
}

ViniBorn
01/12/2011, 06:17 PM
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

Ricop522
01/12/2011, 08:52 PM
#define Expz(%0) Level[%0]*10
stock Expz(playerid) return Level[playerid]*10;



if(Expz(playerid) == Exp[playerid]) .;..