[Ajuda] Duvida sobre o meu sistema de payday
#1

Olб Pessoal eu queria tirar uma duvida com vocкs...

Eu fiz um sistema simples de payday com o tempo no qual esse tempo й salvo na conta do player
Exemplo: o Player X entra no servidor ai inicia a contagem digamos que ta em 10min ele resolve sair esses minutos serao salvo na conta dele pra quando ele logar continuar o tempo de onde ele parou atй ai tudo certo o sistema a minha duvida й que eu fiz um timer na OnGamemodeInit a cada 1 segundo ele chamar a public Atualizar
com o loop usando o foreach a minha duvida й se haver uma boa quantidade de player online se vai lagar o servidor? vou postar o codigo...

PHP код:

public OnGameModeInit()
{
    
SetTimer("PayDay"segundos(1), true);
    
SetTimer("Atualizar"1000true);
    return 
1;
}
CallBack:: Atualizar() 
{
     foreach(
Playeri)
    {
        if(
JogadorLogado[i]) 
        {
            
PlayerInfo[i][pTempoOnline]++;
        }
    }
    return 
1;
}
CallBack:: PayDay()
{
    foreach(
Player,i)
    {
        if(
JogadorLogado[i])
        {
            if(
PlayerInfo[i][pTempoOnline] == 3600000)
            {
                
PlayerInfo[i][pTempoOnline] = 0;
                
SendClientMessage(i, -1"Funcionou  o sistema"); 
            }
        }
    }

Reply
#2

primeiramente se comeзar a contar de onde o player parou, tem que ser um sistema independente!

Agora vocк coloca SetTimer("Atualizar", 600000, true); //10 minutos = 600mil segundos
na onplayerconnect.
Reply
#3

Код:
if(PlayerInfo[i][pTempoOnline] == 3600000)
A callback que vocк fez aumenta 1 nъmero na variбvel a cada 1 segundo, nesse cуdigo acima vocк estб contando como milissegundos, coloque 3600.

E tambйm nгo й necessбrio 2 callbacks que fazem a mesma coisa, use sу uma:
Код:
public OnGameModeInit()
{
    SetTimer("PayDay", 1000, true);
    return 1;
}

CallBack:: PayDay()
{
    foreach(Player,i)
    {
        if(JogadorLogado[i])
        {
            PlayerInfo[i][pTempoOnline]++;
            if(PlayerInfo[i][pTempoOnline] >= 3600)
            {
                PlayerInfo[i][pTempoOnline] = 0;
                SendClientMessage(i, -1, "Funcionou  o sistema");
            }
        }
    }
}
Reply
#4

Vaaaleeeu , Agora entendi +rep
Reply
#5

Entгo, para aumentar o tempo do payday aumente o ContagemMinutos...
Код:
// No Topo Do GM
new ContagemMinutos[MAX_PLAYERS];
new ContagemSeg[MAX_PLAYERS];

//ONDE TERMINA O TUTO DO SEU GM
ContagemMinutos[playerid] = 10;
ContagemSeg[playerid] = 59;

//SetPlayerUnjail Pode ser no OnPlayerUpdate Tambйm
if(ContagemMinutos[i] == 1 && ContagemSeg[i] <= 0)
{
    PayDay(i);
}
if(ContagemSeg[i] >= 1)
{
	ContagemSeg[i] -= 1;
}
else
{
	ContagemMinutos[i] -= 1;
	ContagemSeg[i] = 59;
}

//PUBLIC PAYDAY
ContagemMinutos[playerid] = 10;
ContagemSeg[playerid] = 59;	
		
//OnPlayerLogin Ou Onde vocк carrega os arquivos das contas dos players
ContagemMinutos[playerid] = DOF2_GetInt(string2, "ContagemMinutos");
ContagemSeg[playerid] = DOF2_GetInt(string2, "ContagemSeg");

//OnPlayerSave Ou Local que vocк salva os arquivos das contas dos players
DOF2_SetInt(savecount, "ContagemMinutos", ContagemMinutos[playerid]);
DOF2_SetInt(savecount, "ContagemSeg", ContagemSeg[playerid]);

//OnPlayerUpdate para evitar bugs
if(ContagemMinutos[playerid] <= 0)
{
	ContagemMinutos[playerid] = 10;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)