Resourcen Sparen [HELP]

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey,


    ich hab heute mein vServer bekommen und hab gleich meinen GTA Server darauf installiert.


    Nun muss ich irgendwie das OnPlayerUpdate umgehen aber es soll Trozdem die daten speichern.
    Weil der Server sonst Lagt.


    Was soll ich nun tuhn ?


    Im Timer setzen klappt nicht.

  • Wie gesagt es ist OnPlayerUpdate und es Updated blos alles denk ich mal :D



    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), "/Accounts/%s.ini", playername3);
    new File: hFile = fopen(string3, io_write);
    if (hFile)
    {
    new var[32];
    format(var, 32, "Key=%s\n", PlayerInfo[playerid][pKey]);fwrite(hFile, var);
    PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
    format(var, 32, "Level=%d\n",PlayerInfo[playerid][pLevel]);fwrite(hFile, var);
    format(var, 32, "AdminLevel=%d\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
    format(var, 32, "Supporter=%d\n",PlayerInfo[playerid][pSupporter]);fwrite(hFile, var);
    format(var, 32, "DonateRank=%d\n",PlayerInfo[playerid][pDonateRank]);fwrite(hFile, var);
    format(var, 32, "UpgradePoints=%d\n",PlayerInfo[playerid][gPupgrade]);fwrite(hFile, var);
    format(var, 32, "ConnectedTime=%d\n",PlayerInfo[playerid][pConnectTime]);fwrite(hFile, var);
    format(var, 32, "Registered=%d\n",PlayerInfo[playerid][pReg]);fwrite(hFile, var);
    format(var, 32, "Sex=%d\n",PlayerInfo[playerid][pSex]);fwrite(hFile, var);
    format(var, 32, "Age=%d\n",PlayerInfo[playerid][pAge]);fwrite(hFile, var);
    format(var, 32, "Origin=%d\n",PlayerInfo[playerid][pOrigin]);fwrite(hFile, var);
    format(var, 32, "CK=%d\n",PlayerInfo[playerid][pCK]);fwrite(hFile, var);
    format(var, 32, "Muted=%d\n",PlayerInfo[playerid][pMuted]);fwrite(hFile, var);
    format(var, 32, "Respect=%d\n",PlayerInfo[playerid][pExp]);fwrite(hFile, var);
    format(var, 32, "Money=%d\n",PlayerInfo[playerid][pCash]);fwrite(hFile, var);
    format(var, 32, "Bank=%d\n",PlayerInfo[playerid][pAccount]);fwrite(hFile, var);
    format(var, 32, "Crimes=%d\n",PlayerInfo[playerid][pCrimes]);fwrite(hFile, var);
    format(var, 32, "Kills=%d\n",PlayerInfo[playerid][pKills]);fwrite(hFile, var);
    format(var, 32, "Deaths=%d\n",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var);
    format(var, 32, "Arrested=%d\n",PlayerInfo[playerid][pArrested]);fwrite(hFile, var);
    format(var, 32, "WantedDeaths=%d\n",PlayerInfo[playerid][pWantedDeaths]);fwrite(hFile, var);
    format(var, 32, "Phonebook=%d\n",PlayerInfo[playerid][pPhoneBook]);fwrite(hFile, var);
    format(var, 32, "LottoNr=%d\n",PlayerInfo[playerid][pLottoNr]);fwrite(hFile, var);
    format(var, 32, "Fishes=%d\n",PlayerInfo[playerid][pFishes]);fwrite(hFile, var);
    format(var, 32, "BiggestFish=%d\n",PlayerInfo[playerid][pBiggestFish]);fwrite(hFile, var);
    format(var, 32, "Job=%d\n",PlayerInfo[playerid][pJob]);fwrite(hFile, var);
    format(var, 32, "Paycheck=%d\n",PlayerInfo[playerid][pPayCheck]);fwrite(hFile, var);
    format(var, 32, "HeadValue=%d\n",PlayerInfo[playerid][pHeadValue]);fwrite(hFile, var);
    format(var, 32, "Jailed=%d\n",PlayerInfo[playerid][pJailed]);fwrite(hFile, var);
    format(var, 32, "JailTime=%d\n",PlayerInfo[playerid][pJailTime]);fwrite(hFile, var);
    format(var, 32, "Materials=%d\n",PlayerInfo[playerid][pMats]);fwrite(hFile, var);
    format(var, 32, "Drugs=%d\n",PlayerInfo[playerid][pDrugs]);fwrite(hFile, var);
    format(var, 32, "Leader=%d\n",PlayerInfo[playerid][pLeader]);fwrite(hFile, var);
    format(var, 32, "Member=%d\n",PlayerInfo[playerid][pMember]);fwrite(hFile, var);
    format(var, 32, "FMember=%d\n",PlayerInfo[playerid][pFMember]);fwrite(hFile, var);
    format(var, 32, "Rank=%d\n",PlayerInfo[playerid][pRank]);fwrite(hFile, var);
    format(var, 32, "Char=%d\n",PlayerInfo[playerid][pChar]);fwrite(hFile, var);
    format(var, 32, "ContractTime=%d\n",PlayerInfo[playerid][pContractTime]);fwrite(hFile, var);
    format(var, 32, "DetSkill=%d\n",PlayerInfo[playerid][pDetSkill]);fwrite(hFile, var);
    format(var, 32, "SexSkill=%d\n",PlayerInfo[playerid][pSexSkill]);fwrite(hFile, var);
    format(var, 32, "BoxSkill=%d\n",PlayerInfo[playerid][pBoxSkill]);fwrite(hFile, var);
    format(var, 32, "LawSkill=%d\n",PlayerInfo[playerid][pLawSkill]);fwrite(hFile, var);
    format(var, 32, "MechSkill=%d\n",PlayerInfo[playerid][pMechSkill]);fwrite(hFile, var);
    format(var, 32, "JackSkill=%d\n",PlayerInfo[playerid][pJackSkill]);fwrite(hFile, var);
    format(var, 32, "CarSkill=%d\n",PlayerInfo[playerid][pCarSkill]);fwrite(hFile, var);
    format(var, 32, "NewsSkill=%d\n",PlayerInfo[playerid][pNewsSkill]);fwrite(hFile, var);
    format(var, 32, "DrugsSkill=%d\n",PlayerInfo[playerid][pDrugsSkill]);fwrite(hFile, var);
    format(var, 32, "CookSkill=%d\n",PlayerInfo[playerid][pCookSkill]);fwrite(hFile, var);
    format(var, 32, "FishSkill=%d\n",PlayerInfo[playerid][pFishSkill]);fwrite(hFile, var);
    format(var, 32, "pSHealth=%.1f\n",PlayerInfo[playerid][pSHealth]);fwrite(hFile, var);
    GetPlayerHealth(playerid,PlayerInfo[playerid][pHealth]);
    format(var, 32, "pHealth=%.1f\n",PlayerInfo[playerid][pHealth]);fwrite(hFile, var);
    format(var, 32, "Int=%d\n",PlayerInfo[playerid][pInt]);fwrite(hFile, var);
    format(var, 32, "Local=%d\n",PlayerInfo[playerid][pLocal]);fwrite(hFile, var);
    format(var, 32, "Team=%d\n",PlayerInfo[playerid][pTeam]);fwrite(hFile, var);
    format(var, 32, "Model=%d\n",PlayerInfo[playerid][pModel]);fwrite(hFile, var);
    format(var, 32, "PhoneNr=%d\n",PlayerInfo[playerid][pPnumber]);fwrite(hFile, var);
    format(var, 32, "House=%d\n",PlayerInfo[playerid][pPhousekey]);fwrite(hFile, var);
    format(var, 32, "Bizz=%d\n",PlayerInfo[playerid][pPbiskey]);fwrite(hFile, var);
    format(var, 32, "HandyGeld=%d\n",PlayerInfo[playerid][pHandyGeld]);fwrite(hFile, var);
    format(var, 32, "HandyVer=%d\n",PlayerInfo[playerid][pHandyVer]);fwrite(hFile, var);
    if ((PlayerInfo[playerid][pPos_x]==0.0 && PlayerInfo[playerid][pPos_y]==0.0 && PlayerInfo[playerid][pPos_z]==0.0))
    {
    PlayerInfo[playerid][pPos_x] = 1684.9;
    PlayerInfo[playerid][pPos_y] = -2244.5;
    PlayerInfo[playerid][pPos_z] = 13.5;
    }
    if(Spectate[playerid] != 255)
    {
    PlayerInfo[playerid][pPos_x] = Unspec[playerid][sPx];
    PlayerInfo[playerid][pPos_y] = Unspec[playerid][sPy];
    PlayerInfo[playerid][pPos_z] = Unspec[playerid][sPz];
    PlayerInfo[playerid][pInt] = Unspec[playerid][sPint];
    PlayerInfo[playerid][pLocal] = Unspec[playerid][sLocal];
    }
    format(var, 32, "Pos_x=%.1f\n",PlayerInfo[playerid][pPos_x]);fwrite(hFile, var);
    format(var, 32, "Pos_y=%.1f\n",PlayerInfo[playerid][pPos_y]);fwrite(hFile, var);
    format(var, 32, "Pos_z=%.1f\n",PlayerInfo[playerid][pPos_z]);fwrite(hFile, var);
    format(var, 32, "CarLic=%d\n",PlayerInfo[playerid][pCarLic]);fwrite(hFile, var);
    format(var, 32, "NewLic=%d\n",PlayerInfo[playerid][pNewLic]);fwrite(hFile, var);
    format(var, 32, "FlyLic=%d\n",PlayerInfo[playerid][pFlyLic]);fwrite(hFile, var);
    format(var, 32, "BoatLic=%d\n",PlayerInfo[playerid][pBoatLic]);fwrite(hFile, var);
    format(var, 32, "FishLic=%d\n",PlayerInfo[playerid][pFishLic]);fwrite(hFile, var);
    format(var, 32, "GunLic=%d\n",PlayerInfo[playerid][pGunLic]);fwrite(hFile, var);// hier wird aller 30 min alles geupdated und gespeichert
    format(var, 32, "LKWLic=%d\n",PlayerInfo[playerid][pLKWLic]);fwrite(hFile, var);
    format(var, 32, "MotoLic=%d\n",PlayerInfo[playerid][pMotoLic]);fwrite(hFile, var);
    format(var, 32, "Zig=%d\n",PlayerInfo[playerid][pZig]);fwrite(hFile, var);
    format(var, 32, "ZigSucht=%d\n",PlayerInfo[playerid][pZigSucht]);fwrite(hFile, var);
    format(var, 32, "Gun1=%d\n",PlayerInfo[playerid][pGun1]);fwrite(hFile, var);
    format(var, 32, "Gun2=%d\n",PlayerInfo[playerid][pGun2]);fwrite(hFile, var);
    format(var, 32, "Gun3=%d\n",PlayerInfo[playerid][pGun3]);fwrite(hFile, var);
    format(var, 32, "Gun4=%d\n",PlayerInfo[playerid][pGun4]);fwrite(hFile, var);
    format(var, 32, "Ammo1=%d\n",PlayerInfo[playerid][pAmmo1]);fwrite(hFile, var);
    format(var, 32, "Ammo2=%d\n",PlayerInfo[playerid][pAmmo2]);fwrite(hFile, var);
    format(var, 32, "Ammo3=%d\n",PlayerInfo[playerid][pAmmo3]);fwrite(hFile, var);
    format(var, 32, "Ammo4=%d\n",PlayerInfo[playerid][pAmmo4]);fwrite(hFile, var);
    format(var, 32, "CarTime=%d\n",PlayerInfo[playerid][pCarTime]);fwrite(hFile, var);
    format(var, 32, "PayDay=%d\n",PlayerInfo[playerid][pPayDay]);fwrite(hFile, var);
    format(var, 32, "PayDayHad=%d\n",PlayerInfo[playerid][pPayDayHad]);fwrite(hFile, var);
    format(var, 32, "CDPlayer=%d\n",PlayerInfo[playerid][pCDPlayer]);fwrite(hFile, var);
    format(var, 32, "Wins=%d\n",PlayerInfo[playerid][pWins]);fwrite(hFile, var);
    format(var, 32, "Loses=%d\n",PlayerInfo[playerid][pLoses]);fwrite(hFile, var);
    format(var, 32, "AlcoholPerk=%d\n",PlayerInfo[playerid][pAlcoholPerk]);fwrite(hFile, var);
    format(var, 32, "DrugPerk=%d\n",PlayerInfo[playerid][pDrugPerk]);fwrite(hFile, var);
    format(var, 32, "MiserPerk=%d\n",PlayerInfo[playerid][pMiserPerk]);fwrite(hFile, var);
    format(var, 32, "PainPerk=%d\n",PlayerInfo[playerid][pPainPerk]);fwrite(hFile, var);
    format(var, 32, "TraderPerk=%d\n",PlayerInfo[playerid][pTraderPerk]);fwrite(hFile, var);
    format(var, 32, "Tutorial=%d\n",PlayerInfo[playerid][pTut]);fwrite(hFile, var);
    format(var, 32, "Warnings=%d\n",PlayerInfo[playerid][pWarns]);fwrite(hFile, var);
    format(var, 32, "Adjustable=%d\n",PlayerInfo[playerid][pAdjustable]);fwrite(hFile, var);
    if(PlayerInfo[playerid][pDonateRank] < 1) { PlayerInfo[playerid][pFuel] = 0; }
    format(var, 32, "Fuel=%d\n",PlayerInfo[playerid][pFuel]);fwrite(hFile, var);
    format(var, 32, "Married=%d\n",PlayerInfo[playerid][pMarried]);fwrite(hFile, var);
    format(var, 32, "MarriedTo=%s\n",PlayerInfo[playerid][pMarriedTo]);fwrite(hFile, var);
    format(var, 32, "SpawnChange=%d\n",SpawnChange[playerid]);fwrite(hFile, var);
    format(var, 32, "WantedLevel=%d\n",WantedLevel[playerid]);fwrite(hFile, var);
    format(var, 32, "WantedPoints=%d\n",WantedPoints[playerid]);fwrite(hFile, var);
    format(var, 32, "PlayMinutes=%d\n",PlayerInfo[playerid][pPlayMinutes]);fwrite(hFile, var);
    format(var, 32, "GesamtMinutes=%d\n",PlayerInfo[playerid][pGesamtMinutes]);fwrite(hFile, var);
    format(var, 32, "MinutesSinceAn=%d\n",PlayerInfo[playerid][pMinutesSinceAn]);fwrite(hFile, var);
    format(var, 32, "SFPASS=%d\n",PlayerInfo[playerid][pSFPASS]);fwrite(hFile, var);
    format(var, 32, "LVPASS=%d\n",PlayerInfo[playerid][pLVPASS]);fwrite(hFile, var);
    format(var, 32, "Offflucht=%d\n",OfflineFlucht[playerid]);fwrite(hFile, var);
    format(var, 32, "Knast=%d\n",Knast[playerid]);fwrite(hFile, var);
    format(var, 32, "Uhr=%d\n",PlayerInfo[playerid][pUhrID]);fwrite(hFile, var);
    format(var, 32, "Handy=%d\n",PlayerInfo[playerid][pHandyID]);fwrite(hFile, var);
    format(var, 32, "KnastTime=%d\n",KnastTime[playerid]);fwrite(hFile, var);
    format(var, 32, "Perso=%d\n",PlayerInfo[playerid][pOwnPerso]);fwrite(hFile, var);
    format(var, 32, "FrakSperre=%d\n",PlayerInfo[playerid][pFrakSperre]);fwrite(hFile, var);
    format(var, 32, "Gebannt=%d\n",PlayerInfo[playerid][pGebannt]);fwrite(hFile, var);
    fclose(hFile);
    }
    }
    }
    return 1;
    }

  • Einfach OnPlayerUpdate in OnPlayerUpdateEx oder so umbenennen.
    Da es seit geraumer Zeit die Version von Sa-Mp gibt, glaube ich :P.
    Deshalb wird es doppelt ausgeführt und führt zu laggs. So war das glaub ich :)


    MFG K4biX

  • Einfach OnPlayerUpdate in OnPlayerUpdateEx oder so umbenennen.
    Da es seit geraumer Zeit die Version von Sa-Mp gibt, glaube ich :P.
    Deshalb wird es doppelt ausgeführt und führt zu laggs. So war das glaub ich :)


    MFG K4biX


    Die quelle dazu würd ich gern ma sehen, halte das nämlich für total dünnschiss den du da erzählst.

    • OnPlayerUpdateEx gibt es als pawn native nicht.
    • OnPlayerUpdate wird nicht doppelt ausgeführt, und führt auch nicht zu laggs. OnPlayerUpdate wird einfach nur, wie der Name schon verrät, immer dann ausgeführt wenn einer Spieler geupdatet wird. Also wenn sich seine position verändert, er seine kamera dreht usw. Dass das ziemlich häufig ist, sollte man sich da denken können. Und wenn man dann, wie der TS hier, dabei in dateien schreibt kann das zu laggs führen. Aber eben nicht von hause aus.


    Im allgemeinen machen funktionen nie irgendwas böses, sondern erst dann, wenn unvorsichtige "Skripter" da irgendeinen scheiss rein packen.
    Trooper hat das mit OnPlayerUpdate aber schonmal sehr schön erklärt, siehe hier: OnPlayerUpdate - Warum man es meiden sollte


    @TS:
    Erstell unter OnGameModeInit einen Timer, der z.b nur alle 60 Minuten aufgerufen wird.
    Dann erstellste eine Funktion die von dem Timer aufgerufen wird, und in dieser gehste dann per schleife durch alle Spieler, fragst ab ob dieser Spieler online ist undspeicherst diesen dann.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Die Idee alle Daten mehrmals pro Sekunde zu speichern ist sowieso total sinnlos, einmal beim Disconnecten reicht vollkommen. Dinge die mit anderen Sachen wie zb nem UCP synchronisiert sein müssen kann man auch bei einer Änderung der Daten abspeichern.


    Nope tuts nicht, was wenn z.b der server aus unvorhersehbaren gründen aus geht? Dann ist das geheule nämlich riesen groß

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Naja ich würde dir einfach ein stock empfehlen..


    Immer beim Spawnen und Disconnecten..


    #JoKér

  • Es wird gespeichert hab eben alles getestet.


    Erst hab ich alle umgeändert.
    Dann bin ich aufn Server hab mir was gekauft geld von 10.000 auf 2930 FakeCrash gemacht geld gespeichert.
    Dann hab ich wieder 10.000 wieder was gekafut 2930 dann hab ichn server abschmirn lassen. Evola es geht.

  • Kommt drauf an, wenn es nur alle Minute speichert, man in der 55. Sekunde was wichtiges macht und in der 58. Sekunde schmiert der Server ab ists auch nicht gespeichert. Man muss Prioritäten setzen.


    1 Minute verlorene Spielzeit sind nich so viel wie vllt 8 Stunden (Ja, es gibt leute die so viel/lange spielen).

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • 1 Minute verlorene Spielzeit sind nich so viel wie vllt 8 Stunden (Ja, es gibt leute die so viel/lange spielen).


    Deshalb ist meiner Meinung die Speicherung direkt bei Änderung einer Variable das sinnvollste - dort gibt es kein Geheule & es muss nicht mehr bei OnPlayerDisconnect/OnGameModeExit irgendetwas von den Spielern gespeichert werden.


    Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need.
    – Tyler Durden


    Sobald Werbung im Spiel ist, bist du, die Nutzerin, der Nutzer, das Produkt.


  • Nenn doch OnPlayerUpdate um zb in PlayerUpdate
    dann unter OnPlayerCommandText ganz oben lässt du einzelne Spieler speichern die grad ein befehl ausführen.
    Also würde das hauptgeschehen gespeichert werden.
    Hab ich bei uns auf dem Server auch und es gibt keien Probleme.