01.12.2011, 12:14
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 ...
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);
}