[Ajuda] Sistema UP Bugando
#1

Olб Novamente, Eu fiz um sistema de UP em meu GM, ele conta o tempo certinho, da a quantia de EXP que eu quis, salva certinho, Maas quando tem mais de 1 jogador online, quando acaba o tempo de um, seta o EXP para todos, й como se tivesse feito o timer para todos, mas nгo й, veja abaixo o sistema,
Em OnPlayerConnect:
pawn Код:
SetTimerEx("TempoExp", 720000, true, "i", playerid); // comeзa a contar 12 minutos para upar
OnPlayerDisconnect:
pawn Код:
SavePlayer(playerid);
   
KillTimer(TempoExp(playerid));
Public TempoExp
pawn Код:
forward TempoExp(playerid);
public TempoExp(playerid)
{
    new texto[256], msg[256];

    if(GetPlayerScore(playerid) == 0)
    {
        Player[playerid][Exp] += 10000;
        format(msg, sizeof(msg), "| UP | Vocк Acaba De Receber 10000 De EXP! (%d/10000)", Player[playerid][Exp]);
        SendClientMessage(playerid, 0x2fee00ff, msg);
    }
    if(GetPlayerScore(playerid) >= 1 && GetPlayerScore(playerid) <= 10)
    {
        Player[playerid][Exp] += 5000;
        format(msg, sizeof(msg), "| UP | Vocк Acaba De Receber 5000 De EXP! (%d/10000)", Player[playerid][Exp]);
        SendClientMessage(playerid, 0x2fee00ff, msg);
    }
    if(GetPlayerScore(playerid) > 10 && GetPlayerScore(playerid) <= 50)
    {
        Player[playerid][Exp] += 4500;
        format(msg, sizeof(msg), "| UP | Vocк Acaba De Receber 4500 De EXP! (%d/10000)", Player[playerid][Exp]);
        SendClientMessage(playerid, 0x2fee00ff, msg);
    }
    if(GetPlayerScore(playerid) > 50 && GetPlayerScore(playerid) <= 100)
    {
        Player[playerid][Exp] += 4000;
        format(msg, sizeof(msg), "| UP | Vocк Acaba De Receber 4000 De EXP! (%d/10000)", Player[playerid][Exp]);
        SendClientMessage(playerid, 0x2fee00ff, msg);
    }
    if(GetPlayerScore(playerid) > 100 && GetPlayerScore(playerid) <= 500)
    {
        Player[playerid][Exp] += 3000;
        format(msg, sizeof(msg), "| UP | Vocк Acaba De Receber 3000 De EXP! (%d/10000)", Player[playerid][Exp]);
        SendClientMessage(playerid, 0x2fee00ff, msg);
    }
    if(GetPlayerScore(playerid) > 500 && GetPlayerScore(playerid) <= 800)
    {
        Player[playerid][Exp] += 2000;
        format(msg, sizeof(msg), "| UP | Vocк Acaba De Receber 2000 De EXP! (%d/10000)", Player[playerid][Exp]);
        SendClientMessage(playerid, 0x2fee00ff, msg);
    }
    if(GetPlayerScore(playerid) > 800)
    {
        Player[playerid][Exp] += 1000;
        format(msg, sizeof(msg), "| UP | Vocк Acaba De Receber 1000 De EXP! (%d/10000)", Player[playerid][Exp]);
        SendClientMessage(playerid, 0x2fee00ff, msg);
    }

    if(Player[playerid][Exp] >= 10000)
    {
        SetPlayerScore(playerid, GetPlayerScore(playerid) + 1);
        format(texto, sizeof(texto), "| UP | Vocк Acaba De Upar De Level! Totalizando %d Leveis!", GetPlayerScore(playerid));
        SendClientMessage(playerid, 0x2fee00ff, texto);
        Player[playerid][Exp] -= 10000;
        Player[playerid][Score] += 1;
    }
    GameTextForPlayer(playerid, "~p~up", 2000, 3);
    DOF2_SetInt( GetPlayerArquivo( playerid ), "Score", Player[ playerid ][ Score ] );
    return 1;
}
o que tem de errado? variaveis de Score e EXP sao:
pawn Код:
Player[playerid][Score]
Player[playerid][Exp]
Reply
#2

Nгo seria Player[MAX_PLAYERS][Score] e Player[MAX_PLAYERS][Exp]?
Reply
#3

Nгo:
pawn Код:
SavePlayer(playerid)
{
    if( DOF2_FileExists( GetPlayerArquivo( playerid ) ) )
    {

        DOF2_CreateFile(GetPlayerArquivo(playerid));

        DOF2_SetInt( GetPlayerArquivo( playerid ), "Score", Player[ playerid ][ Score ] );
        DOF2_SetInt( GetPlayerArquivo( playerid ), "Exp", Player[playerid][ Exp ] );

        DOF2_SaveFile();

    }
    return 1;
}

LoadPlayer(playerid)
{
    if( DOF2_FileExists( GetPlayerArquivo( playerid ) ) )
    {
        Player[ playerid ][ Score ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Score" );
    Player[ playerid ][ Exp ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Exp" );

        SetPlayerScore( playerid, Player[ playerid ][ Score ] );



    }
    return 1;
}
Reply
#4

Na verdade, esquece.
Minha linha de pensamento estava errada.
Reply
#5

Olб, nгo sei se jб tentou, nгo sei se vai resolver, mas porque vocк nгo usa assim:

Em OnPlayerConnect:

PHP код:
SetTimerEx("TempoExp"12 60000false"i"playerid); // (sem repetir) 
Na public TempoExp vocк inicia o tempo novamente:

PHP код:
SetTimerEx("TempoExp"12 60000false"i"playerid); // (sem repetir) 
Reply
#6

Creio eu que nгo irб resolver, o problema nгo estб na contagem, o problema й que o EXP de um jogador, й dado a todos, Exemplo: Eu estou logado a 11 minutos, faltando 1 para eu receber UP, e mais alguem loga no servidor, quando acabar os 1 minutos que faltava pra mim, o outro jogador tambem recebe, espero que possam me ajudar
Reply
#7

Mano colocar isso cria uma variavel pro timer

PHP код:

new TempoUp[MAX_PLAYERS];
// na public on playerconnect
TempoUp[playerid] = SetTimerEx("TempoExp"720000true"i"playerid); 
e aqui n vejo necessidade disso:

PHP код:
Player[playerid][Exp] += 10000;
//coloca
Player[playerid][Exp] +10000
creio q irá ajudar


(MAS VC QUER Q MANDA SÓ PARA 1 PLAYER OU PARA TODOS?, SE FOR PARA 1 SÓ CREIO Q ESSE SEJA O CERTO..)
Reply
#8

Valeu SamuelMatheus05, era isso mesmo que faltava, tmj, +REP
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)