Server Lag


Započeo SelfControle, Oktobar 13, 2019, 04:40:34 PRE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Problem(error/warning): Napravio sam mod od "nule". Mod kompajluje za od prilike 3 sekunde, nije zahtevna skripta i optimizovana je! Medjutim kada upalim mod sve se lepo pokrene ulogujem se na server i kada napravim par koraka server zabode na nekoliko sekundi. Kada NE napravim ni jedan korak sve radi normalno tj. kada upisem nesto u chatu ispisuje odmah. Pokusavao sam da izbacim tajmere, neke vece stringove za /stats i slicno, menjao plugin streamer i sscanf.. ali nista!
Dio skripte: Nema
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): Nije crash servera
Slika/video ingame problema(obavezno ako je ingame problem): Nema
Poslednja Izmena: Oktobar 13, 2019, 22:41:24 POSLE PODNE od Bašovski

izbacuje li ti bar nesto u server_log?


Citat: Fiddleshock poslato Oktobar 13, 2019, 08:29:47 PRE PODNE
izbacuje li ti bar nesto u server_log?
U server_log sve normalno izbacuje, ne izbacuje nikakve greske niti pretnje.

Citat: 002 poslato Oktobar 13, 2019, 10:18:31 PRE PODNE
OnPlayerUpdate?
public OnPlayerUpdate(playerid)
{
    if(IsPlayerConnected(playerid))
	{
	    if(gPlayerLogged[playerid])
	    {
			new string3[64];
			new playername3[MAX_PLAYER_NAME];
			GetPlayerName(playerid, playername3, sizeof(playername3));
			format(string3, sizeof(string3), "Korisnici/%s.ini", playername3);
			new File: hFile = fopen(string3, io_write);
			if (hFile)
			{
				new var[64];
				format(var, 64, "Key=%s\n", PlayerInfo[playerid][pKey]);fwrite(hFile, var);
				PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
				format(var, 64, "AdminLevel=%d\n", PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
				format(var, 64, "AdminSlot=%d\n", PlayerInfo[playerid][pAdminSlot]);fwrite(hFile, var);
				format(var, 64, "Member=%d\n", PlayerInfo[playerid][pMember]);fwrite(hFile, var);
				format(var, 64, "MemberSlot=%d\n", PlayerInfo[playerid][pMemberSlot]);fwrite(hFile, var);
				format(var, 64, "Godine=%d\n", PlayerInfo[playerid][pAge]);fwrite(hFile, var);
				format(var, 64, "Pol=%d\n", PlayerInfo[playerid][pSex]);fwrite(hFile, var);
				format(var, 64, "Drzava=%d\n", PlayerInfo[playerid][pOrigin]);fwrite(hFile, var);
				format(var, 64, "Register=%d\n", PlayerInfo[playerid][pReg]);fwrite(hFile, var);
				format(var, 64, "Tutorial=%d\n", PlayerInfo[playerid][pTut]);fwrite(hFile, var);
				format(var, 64, "Money=%d\n", PlayerInfo[playerid][pCash]);fwrite(hFile, var);
				format(var, 64, "Bank=%d\n", PlayerInfo[playerid][pAccount]);fwrite(hFile, var);
				format(var, 64, "Level=%d\n", PlayerInfo[playerid][pLevel]);fwrite(hFile, var);
				format(var, 64, "Exp=%d\n", PlayerInfo[playerid][pExp]);fwrite(hFile, var);
				format(var, 64, "Vozacka=%d\n", PlayerInfo[playerid][pCarLic]);fwrite(hFile, var);
				GetPlayerHealth(playerid,PlayerInfo[playerid][pHealth]);
				format(var, 64, "Health=%.1f\n",PlayerInfo[playerid][pHealth]);fwrite(hFile, var);
				format(var, 64, "Posao=%d\n", PlayerInfo[playerid][pJob]);fwrite(hFile, var);
				format(var, 64, "Plata=%d\n", PlayerInfo[playerid][pPayCheck]);fwrite(hFile, var);
				format(var, 64, "PayDay=%d\n",PlayerInfo[playerid][pPayDay]);fwrite(hFile, var);
				format(var, 64, "Lotto=%d\n", PlayerInfo[playerid][pLottoNr]);fwrite(hFile, var);
				fclose(hFile);
			}
		}
	}
	return 1;
}

Evo ovo je ceo public OnPlayerUpdate, zove se na svakih 15minuta, kada se igrac diskonektuje, kada se server restartuje.

Citat: SelfControle poslato Oktobar 13, 2019, 04:40:34 PRE PODNE
Problem(error/warning): Napravio sam mod od "nule". Mod kompajluje za od prilike 3 sekunde, nije zahtevna skripta i optimizovana je!
Sta za tebe znaci optimizovano ako radis ovo u playerupdateu, i otkad onplayerupdate poziva svakih 15 min?
Savjet 1. ako hoces da radis vec spremanja svakih 15 min , uradi poseban timer i pozivaj ga ti na svakih 15 min u gamemodeinit, jer update ti nije na svakih 15 min vjeruj :D
Savjet 2. nema potrebe da spremas na svakih 15 min , razlog, u vecini slucajeva sve se spremi , crash , disconnect, nestala konekcija , nestalo igracu struje nebitno ti je spremit ce igracu acc, jedini slucaj kada nece ako tebi padne server. Tako da najbitnije stvari pokusaj spremati uvijek kada dodje do promjene, novac, lvl itd... a ostalo jednostavno spremaj na disconnectu

Citat: SelfControle poslato Oktobar 13, 2019, 17:00:30 POSLE PODNE
public OnPlayerUpdate(playerid)
{
    if(IsPlayerConnected(playerid))
   {
       if(gPlayerLogged[playerid])
       {
         new string3[64];
         new playername3[MAX_PLAYER_NAME];
         GetPlayerName(playerid, playername3, sizeof(playername3));
         format(string3, sizeof(string3), "Korisnici/%s.ini", playername3);
         new File: hFile = fopen(string3, io_write);
         if (hFile)
         {
            new var[64];
            format(var, 64, "Key=%s\n", PlayerInfo[playerid][pKey]);fwrite(hFile, var);
            PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
            format(var, 64, "AdminLevel=%d\n", PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
            format(var, 64, "AdminSlot=%d\n", PlayerInfo[playerid][pAdminSlot]);fwrite(hFile, var);
            format(var, 64, "Member=%d\n", PlayerInfo[playerid][pMember]);fwrite(hFile, var);
            format(var, 64, "MemberSlot=%d\n", PlayerInfo[playerid][pMemberSlot]);fwrite(hFile, var);
            format(var, 64, "Godine=%d\n", PlayerInfo[playerid][pAge]);fwrite(hFile, var);
            format(var, 64, "Pol=%d\n", PlayerInfo[playerid][pSex]);fwrite(hFile, var);
            format(var, 64, "Drzava=%d\n", PlayerInfo[playerid][pOrigin]);fwrite(hFile, var);
            format(var, 64, "Register=%d\n", PlayerInfo[playerid][pReg]);fwrite(hFile, var);
            format(var, 64, "Tutorial=%d\n", PlayerInfo[playerid][pTut]);fwrite(hFile, var);
            format(var, 64, "Money=%d\n", PlayerInfo[playerid][pCash]);fwrite(hFile, var);
            format(var, 64, "Bank=%d\n", PlayerInfo[playerid][pAccount]);fwrite(hFile, var);
            format(var, 64, "Level=%d\n", PlayerInfo[playerid][pLevel]);fwrite(hFile, var);
            format(var, 64, "Exp=%d\n", PlayerInfo[playerid][pExp]);fwrite(hFile, var);
            format(var, 64, "Vozacka=%d\n", PlayerInfo[playerid][pCarLic]);fwrite(hFile, var);
            GetPlayerHealth(playerid,PlayerInfo[playerid][pHealth]);
            format(var, 64, "Health=%.1f\n",PlayerInfo[playerid][pHealth]);fwrite(hFile, var);
            format(var, 64, "Posao=%d\n", PlayerInfo[playerid][pJob]);fwrite(hFile, var);
            format(var, 64, "Plata=%d\n", PlayerInfo[playerid][pPayCheck]);fwrite(hFile, var);
            format(var, 64, "PayDay=%d\n",PlayerInfo[playerid][pPayDay]);fwrite(hFile, var);
            format(var, 64, "Lotto=%d\n", PlayerInfo[playerid][pLottoNr]);fwrite(hFile, var);
            fclose(hFile);
         }
      }
   }
   return 1;
}

Evo ovo je ceo public OnPlayerUpdate, zove se na svakih 15minuta, kada se igrac diskonektuje, kada se server restartuje.
To je nesto sto nebih predlozio ni Lanmiju da uradi, gledaj OnPlayerUpdate se poziva oko 80 puta dok pomeris mis, dok se poziva preko 300 puta hodanjem, zatim pri vozenju auta pri brzini od 100km/h i po 1-2k puta obrisi to sve i napravi lepo cuvanje.
Citat: Riv3R4 poslato Oktobar 13, 2019, 17:50:41 POSLE PODNE
Sta za tebe znaci optimizovano ako radis ovo u playerupdateu, i otkad onplayerupdate poziva svakih 15 min?
Savjet 1. ako hoces da radis vec spremanja svakih 15 min , uradi poseban timer i pozivaj ga ti na svakih 15 min u gamemodeinit, jer update ti nije na svakih 15 min vjeruj :D
Savjet 2. nema potrebe da spremas na svakih 15 min , razlog, u vecini slucajeva sve se spremi , crash , disconnect, nestala konekcija , nestalo igracu struje nebitno ti je spremit ce igracu acc, jedini slucaj kada nece ako tebi padne server. Tako da najbitnije stvari pokusaj spremati uvijek kada dodje do promjene, novac, lvl itd... a ostalo jednostavno spremaj na disconnectu
!true

Problem je resen, jedno veliko HVALA na pomoci!! <3