[Ajuda] Flood SetTimer depois de um tempo
#1

Eu nгo sei se isso jб aconteceu com vocкs, mas pelo menos comigo isso aconteceu em vбrias situaзхes. Um Timer que depois de um longo tempo comeзa a se repetir vбrias e vбrias vezes. Alguйm aн jб teve esse problema ou sabe o porque isso acontece?

Link: https://i.imgur.com/cLS48IV.png
Reply
#2

no code, no help!
Reply
#3

Код:
function::ServerUpdate()
{
	AntiCheater();
	OnPlayerUpdater();
	SetPlayerUnjail();
	checkOuros();
	clockTimer();
	SyncTime();
	levelUp();
	return 1;
}

SetTimer("ServerUpdate", 1000, 1);
Tб aqui. A callback de PayDay tб dentro da SyncTime que й chamada a cada 1 segundo.
Reply
#4

Mande a callback de PayDay, deve ser um erro de lуgica.
Reply
#5

Код:
function::PayDay()
{
	new pdString[128], interest, rent = 0;
	foreach(Player, i)
	{
		if(APlayerData[i][pLogged])
		{
			if(APlayerData[i][pLevel] > 0)
			{
			    if(MoneyMessage[i])
			    {
			        if(!APlayerData[i][pJailed])
			        {
	       				SendClientMessage(i, COLOR_LIGHTRED, "Vocк nгo pagou sua divida e foi preso.");
						GameTextForPlayer(i, "~r~Preso!", 2000, 1);
						SetPlayerInterior(i, 6);
					   	SetPlayerPos(i, 264.6288,77.5742,1001.0391);
				        APlayerData[i][pJailed] = 1;
				        ResetPlayerWeapons(i);
				        SetPlayerWantedLevelEx(i, 0);
						WantedPoints[i] = 0;
						APlayerData[i][pJailTime] = 240;
						format(String, sizeof(String), "Vocк foi preso por %d segundos.   Fianca: Desabilitada", APlayerData[i][pJailTime]);
						SendClientMessage(i, COLOR_LIGHTBLUE, String);
					}
					else SendClientMessage(i, COLOR_GRAD1, " Vocк estava devendo, mas como jб estб preso, permanecerб.");
				}
    			new key = APlayerData[i][pHouseKey];
			    if(key != 500)
			    {
			        rent = HouseInfo[key][hRent];
			        if(strcmp(PlayerName(i), HouseInfo[key][hOwner], true) == 0)
			            rent = 0;
					else if(rent > GetPlayerMoneyEx(i))
					{
						APlayerData[i][pHouseKey] = 500;
						SendClientMessage(i, COLOR_WHITE, "Vocк foi expulso(a).");
						rent = 0;
					}
					HouseInfo[key][hTakings] = HouseInfo[key][hTakings] + rent;
				}
				if(APlayerData[i][pPayDay] >= 3)
				{
					new checks = random(9999)+9999;
					new ebill = APlayerData[i][pLevel] * 1000;
					GivePlayerMoneyEx(i, checks);
					GivePlayerMoneyEx(i, -TaxValue);
					
				    new tmpintrate;
				    switch(APlayerData[i][pVIP])
				    {
				        case 1: tmpintrate = 12, APlayerData[i][pExp] += 2;
				        case 2: tmpintrate = 18, APlayerData[i][pExp] += 4;
				        default: tmpintrate = 6, APlayerData[i][pExp]++;
					}
				    interest = (APlayerData[i][pBank]/1000)*(tmpintrate);
				    APlayerData[i][pBank] += interest;
				    
				    SendClientMessage(i, COLOR_WHITE, "|_____  Recibo de Pagamento  _____|");
					format(pdString, sizeof(pdString), " Salбrio: R$%s   Impostos: -R$%s", Comma(checks), Comma(TaxValue));
					SendClientMessage(i, COLOR_GRAD1, pdString);
					SalarioPlayer(i);
					SendClientMessage(i, COLOR_GRAD1, " Mйdico: -$300");
					if(APlayerData[i][pHouseKey] != 500 || APlayerData[i][pBizzKey] != 255)
					{
						format(pdString, sizeof(pdString), " Energia: -R$%s", Comma(ebill));
						SendClientMessage(i, COLOR_GRAD1, pdString);
						GivePlayerMoneyEx(i, -ebill);
						SBizzInfo[1][sbTill] += ebill;
					}
					if(APlayerData[i][pFazKey] != 255)
					{
						format(pdString, sizeof(pdString), " Бgua: -R$%s", Comma(ebill));
						SendClientMessage(i, COLOR_GRAD1, pdString);
						GivePlayerMoneyEx(i, -ebill);
						SBizzInfo[1][sbTill] += ebill;
					}
					format(pdString, sizeof(pdString), " Juros: 0.%d por cento", (tmpintrate/4));
					SendClientMessage(i, COLOR_GRAD1, pdString);
					format(pdString, sizeof(pdString), " Valor ganho com juros R$%s", Comma(interest));
					SendClientMessage(i, COLOR_GRAD1, pdString);
					SendClientMessage(i, COLOR_WHITE, "|_________________________________|");
					if(APlayerData[i][pBank] > 1)
					{
					    format(pdString, sizeof(pdString), " Novo saldo bancбrio: R$%s", Comma(APlayerData[i][pBank]));
					    SendClientMessage(i, COLOR_GRAD1, pdString);
					}
		 			else
					{
					    format(pdString, sizeof(pdString), " Novo saldo bancбrio: -R$%s", Comma(APlayerData[i][pBank]));
					    SendClientMessage(i, COLOR_GRAD1, pdString);
					}
					format(pdString, sizeof(pdString), " Aluguйl: R$%s", Comma(rent));
					SendClientMessage(i, COLOR_GRAD1, pdString);
					GameTextForPlayer(i, "~p~PayDay~n~~w~Salario", 5000, 1);
					APlayerData[i][pPayDay] = 0;
					APlayerData[i][pGiftBox] = 0;
					APlayerData[i][pConnectTime] += 1;
					if(APlayerData[i][pJob] > 0 && APlayerData[i][pContractTime] < 5)
					    APlayerData[i][pContractTime]++;
				}
				else
				{
				    SendClientMessage(i, COLOR_LIGHTRED, "* Vocк nгo jogou tempo suficiente para receber salбrio!");
				}
			}
		}
	}
	ResetSeq();
	Checkproop();
	ContratoAleatorio();
	return 1;
}
Tб na mгo.
Reply
#6

Mande a SyncTime, ou a callback que й responsбvel pela contagem de tempo antes de chamar a PayDay.
Reply
#7

Aqui rodrigo:

Код:
function::SyncTime()
{
	new tmphour;
	new tmpminute;
	new tmpsecond;
	gettime(tmphour, tmpminute, tmpsecond);
	Fixhour(tmphour);
	tmphour = shifthour;
    if ((tmphour > ghour) || (tmphour == 0 && ghour == 23) )
	{
		if(realtime)
	    	SetWorldTime(tmphour + 1);
		ghour = tmphour;
		PayDay();
		PayDayFoi = false;
	}
	if ((tmpminute == 30 && PayDayFoi == false))
	{
        PayDay();
		PayDayFoi = true;
	}
	return 1;
}
Reply
#8

Seu cуdigo pode ser colocado atй num loop que nгo faria esse flood, entгo a ъnica hipуtese й que a funзгo PayDay estб causando algum run time error, impedindo de definir PayDayFoi, veja isso com crashdetect.
Reply
#9

Quote:
Originally Posted by RodrigoMSR
Посмотреть сообщение
Seu cуdigo pode ser colocado atй num loop que nгo faria esse flood, entгo a ъnica hipуtese й que a funзгo PayDay estб causando algum run time error, impedindo de definir PayDayFoi, veja isso com crashdetect.
Pior que eu jб coloquei no crashdetect e o mesmo nгo me retornou absolutamente nada.
Reply
#10

Tente:
PHP код:
function::SyncTime()
{
    new 
tmphour;
    new 
tmpminute;
    new 
tmpsecond;
    
gettime(tmphourtmpminutetmpsecond);
    
Fixhour(tmphour);
    
tmphour shifthour;
    if ((
tmphour ghour) || (tmphour == && ghour == 23) )
    {
        if(
realtime)
            
SetWorldTime(tmphour 1);
        
ghour tmphour;
        
printf("PayDay 01 | tmphour = %d, ghour = %d"tmphourghour);
        
PayDayFoi false;
        
PayDay();
    }
    if ((
tmpminute == 30 && PayDayFoi == false))
    {
        
printf("PayDay 02");
        
PayDayFoi true;
        
PayDay();
    }
    return 
1;

Inverti a ordem funзгo-variбvel e adicionei alguns debugs, nгo sei se jб fez isso.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)