Waffenspeicherung beim Disconnect

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, wollte machen, dass sich die Waffen beim Disconnect Speichern.
    Wenn ich das aber einfüge, laggt mein Server voll...


    Wenn ich irgendetwas eingebe, kommt es erst nach ein paar Sekunden.


    Codes:


    OnPlayerDisconnect:


    /* new Spielerdatei[64];
    new Waffen[13][2];
    for (new i = 0; i < 13; i++)
    {
    GetPlayerWeaponData(playerid, i, Waffen[i][0], Waffen[i][1]);
    dini_IntSet(Spielerdatei,"Waffe1",Waffen[0][0]);
    dini_IntSet(Spielerdatei,"Waffe1Munition",Waffen[0][1]);
    dini_IntSet(Spielerdatei,"Waffe2",Waffen[1][0]);
    dini_IntSet(Spielerdatei,"Waffe2Munition",Waffen[1][1]);
    dini_IntSet(Spielerdatei,"Waffe3",Waffen[2][0]);
    dini_IntSet(Spielerdatei,"Waffe3Munition",Waffen[2][1]);
    dini_IntSet(Spielerdatei,"Waffe4",Waffen[3][0]);
    dini_IntSet(Spielerdatei,"Waffe4Munition",Waffen[3][1]);
    dini_IntSet(Spielerdatei,"Waffe5",Waffen[4][0]);
    dini_IntSet(Spielerdatei,"Waffe5Munition",Waffen[4][1]);
    dini_IntSet(Spielerdatei,"Waffe6",Waffen[5][0]);
    dini_IntSet(Spielerdatei,"Waffe6Munition",Waffen[5][1]);
    dini_IntSet(Spielerdatei,"Waffe7",Waffen[6][0]);
    dini_IntSet(Spielerdatei,"Waffe7Munition",Waffen[6][1]);
    dini_IntSet(Spielerdatei,"Waffe8",Waffen[7][0]);
    dini_IntSet(Spielerdatei,"Waffe8Munition",Waffen[7][1]);
    dini_IntSet(Spielerdatei,"Waffe9",Waffen[8][0]);
    dini_IntSet(Spielerdatei,"Waffe9Munition",Waffen[8][1]);
    dini_IntSet(Spielerdatei,"Waffe10",Waffen[9][0]);
    dini_IntSet(Spielerdatei,"Waffe10Munition",Waffen[9][1]);
    dini_IntSet(Spielerdatei,"Waffe11",Waffen[10][0]);
    dini_IntSet(Spielerdatei,"Waffe11Munition",Waffen[10][1]);
    dini_IntSet(Spielerdatei,"Waffe12",Waffen[11][0]);
    dini_IntSet(Spielerdatei,"Waffe12Munition",Waffen[11][1]);
    dini_IntSet(Spielerdatei,"Waffe13",Waffen[12][0]);
    dini_IntSet(Spielerdatei,"Waffe13Munition",Waffen[12][1]);
    }*/


    Register stock


    /*
    dini_IntSet(Spielerdatei,"Waffe1",0);
    dini_IntSet(Spielerdatei,"Waffe1Munition",0);
    dini_IntSet(Spielerdatei,"Waffe2",0);
    dini_IntSet(Spielerdatei,"Waffe2Munition",0);
    dini_IntSet(Spielerdatei,"Waffe3",0);
    dini_IntSet(Spielerdatei,"Waffe3Munition",0);
    dini_IntSet(Spielerdatei,"Waffe4",0);
    dini_IntSet(Spielerdatei,"Waffe4Munition",0);
    dini_IntSet(Spielerdatei,"Waffe5",0);
    dini_IntSet(Spielerdatei,"Waffe5Munition",0);
    dini_IntSet(Spielerdatei,"Waffe6",0);
    dini_IntSet(Spielerdatei,"Waffe6Munition",0);
    dini_IntSet(Spielerdatei,"Waffe7",0);
    dini_IntSet(Spielerdatei,"Waffe7Munition",0);
    dini_IntSet(Spielerdatei,"Waffe8",0);
    dini_IntSet(Spielerdatei,"Waffe8Munition",0);
    dini_IntSet(Spielerdatei,"Waffe9",0);
    dini_IntSet(Spielerdatei,"Waffe9Munition",0);
    dini_IntSet(Spielerdatei,"Waffe10",0);
    dini_IntSet(Spielerdatei,"Waffe10Munition",0);
    dini_IntSet(Spielerdatei,"Waffe11",0);
    dini_IntSet(Spielerdatei,"Waffe11Munition",0);
    dini_IntSet(Spielerdatei,"Waffe12",0);
    dini_IntSet(Spielerdatei,"Waffe12Munition",0);
    dini_IntSet(Spielerdatei,"Waffe13",0);
    dini_IntSet(Spielerdatei,"Waffe13Munition",0); */


    SpielerSpeichern stock



    /*
    new Waffen[13][2];
    for (new i = 0; i < 13; i++)
    {
    GetPlayerWeaponData(playerid, i, Waffen[i][0], Waffen[i][1]);
    dini_IntSet(Spielerdatei,"Waffe1",Waffen[0][0]);
    dini_IntSet(Spielerdatei,"Waffe1Munition",Waffen[0][1]);
    dini_IntSet(Spielerdatei,"Waffe2",Waffen[1][0]);
    dini_IntSet(Spielerdatei,"Waffe2Munition",Waffen[1][1]);
    dini_IntSet(Spielerdatei,"Waffe3",Waffen[2][0]);
    dini_IntSet(Spielerdatei,"Waffe3Munition",Waffen[2][1]);
    dini_IntSet(Spielerdatei,"Waffe4",Waffen[3][0]);
    dini_IntSet(Spielerdatei,"Waffe4Munition",Waffen[3][1]);
    dini_IntSet(Spielerdatei,"Waffe5",Waffen[4][0]);
    dini_IntSet(Spielerdatei,"Waffe5Munition",Waffen[4][1]);
    dini_IntSet(Spielerdatei,"Waffe6",Waffen[5][0]);
    dini_IntSet(Spielerdatei,"Waffe6Munition",Waffen[5][1]);
    dini_IntSet(Spielerdatei,"Waffe7",Waffen[6][0]);
    dini_IntSet(Spielerdatei,"Waffe7Munition",Waffen[6][1]);
    dini_IntSet(Spielerdatei,"Waffe8",Waffen[7][0]);
    dini_IntSet(Spielerdatei,"Waffe8Munition",Waffen[7][1]);
    dini_IntSet(Spielerdatei,"Waffe9",Waffen[8][0]);
    dini_IntSet(Spielerdatei,"Waffe9Munition",Waffen[8][1]);
    dini_IntSet(Spielerdatei,"Waffe10",Waffen[9][0]);
    dini_IntSet(Spielerdatei,"Waffe10Munition",Waffen[9][1]);
    dini_IntSet(Spielerdatei,"Waffe11",Waffen[10][0]);
    dini_IntSet(Spielerdatei,"Waffe11Munition",Waffen[10][1]);
    dini_IntSet(Spielerdatei,"Waffe12",Waffen[11][0]);
    dini_IntSet(Spielerdatei,"Waffe12Munition",Waffen[11][1]);
    dini_IntSet(Spielerdatei,"Waffe13",Waffen[12][0]);
    dini_IntSet(Spielerdatei,"Waffe13Munition",Waffen[12][1]);
    }
    */


    SpielerLaden stock


    /*
    GivePlayerWeapon(playerid,dini_Int(Spielerdatei,"Waffe1"),dini_Int(Spielerdatei,"Waffe1Munition"));
    GivePlayerWeapon(playerid,dini_Int(Spielerdatei,"Waffe2"),dini_Int(Spielerdatei,"Waffe2Munition"));
    GivePlayerWeapon(playerid,dini_Int(Spielerdatei,"Waffe3"),dini_Int(Spielerdatei,"Waffe3Munition"));
    GivePlayerWeapon(playerid,dini_Int(Spielerdatei,"Waffe4"),dini_Int(Spielerdatei,"Waffe4Munition"));
    GivePlayerWeapon(playerid,dini_Int(Spielerdatei,"Waffe5"),dini_Int(Spielerdatei,"Waffe5Munition"));
    GivePlayerWeapon(playerid,dini_Int(Spielerdatei,"Waffe6"),dini_Int(Spielerdatei,"Waffe6Munition"));
    GivePlayerWeapon(playerid,dini_Int(Spielerdatei,"Waffe7"),dini_Int(Spielerdatei,"Waffe7Munition"));
    GivePlayerWeapon(playerid,dini_Int(Spielerdatei,"Waffe8"),dini_Int(Spielerdatei,"Waffe8Munition"));
    GivePlayerWeapon(playerid,dini_Int(Spielerdatei,"Waffe9"),dini_Int(Spielerdatei,"Waffe8Munition"));
    GivePlayerWeapon(playerid,dini_Int(Spielerdatei,"Waffe10"),dini_Int(Spielerdatei,"Waffe10Munition"));
    GivePlayerWeapon(playerid,dini_Int(Spielerdatei,"Waffe11"),dini_Int(Spielerdatei,"Waffe11Munition"));
    GivePlayerWeapon(playerid,dini_Int(Spielerdatei,"Waffe12"),dini_Int(Spielerdatei,"Waffe12Munition"));
    GivePlayerWeapon(playerid,dini_Int(Spielerdatei,"Waffe13"),dini_Int(Spielerdatei,"Waffe13Munition"));
    */


    Woran kann es liegen?


    Danke im Voraus.

  • Heey joo
    Es könnte wirklich sein, dass er es nicht schafft wegen soviel speicherung.


    Aber ich habe Spielerdatei formatiert, habe ausversehen nur den Abschnitt mit dem Waffenzeugs...


    Vlt sollte ich ja mal nen neuen Orner erstellen der irgendwie "Waffen" oder so heißt und dort dann eben die ganzen Waffen der Spieler gespeichert werden...

  • Du schreibst in der Schleife dies ist 1. Komplett unnötig und du schreibst 13 mal also erst mal dini_set aus der Schleife bei OnPlayeDisconnect raus das gleiche bei SpielerSpeichern ...
    Ich würde dir trotzdem empfehlen auf eine längere Zeile zu gehen das heißt das du Waffen & Mun in einer spalte mit einem Delimiter speicherst = Waffen,Ammo und dann halt mit sscanf oder was auch immer du gerne benutzt zu splitten.

  • Wie schon von Mysteriöser Unbekannter erwähnt, speicherst du in der Schleife alle Einträge mehrmals. (13 durchläufe, 26 Dateizugriffe -> 338 Dateizugriffe).
    So sollte es funktionieren:

    new weapon[2], //Ein größerer Array wird nicht benötigt, da du die Werte direkt abspeicherst und danach nicht mehr benötigst
    str[24];
    for (new i = 0; i < 13; i++)
    {
    GetPlayerWeaponData(playerid, i, weapon[0], weapon[1]);
    format(str,24,"Waffe%d",i+1);
    dini_IntSet(Spielerdatei, str, weapon[0]);
    format(str,24,"Waffe%dMunition",i+1);
    dini_IntSet(Spielerdatei, str, weapon[1]);
    }


  • Habe es jetzt so... es funzt zwar alles ganz gut, bis auf das Waffen geben beim Connecten.


    Also der gibt die Waffen einfach nicht raus...

  • So müsste es eigentlich gehen:


    new str[24], temp;
    for(new i;i<13;i++)
    {
    format(str,24,"Waffe%d",i+1);
    temp = dini_Int(Spielerdatei, str);
    format(str,24,"Waffe%dMunition",i+1);
    GivePlayerWeapon(playerid, temp, dini_Int(Spielerdatei, str));
    }


    edit: Du könntest auch statt format(str,24,"Waffe%dMunition",i+1); strcat(str,"Munition"); verwenden.


  • Habe es eben hinbekommen...


    Ich habe es so gemacht, wie es eig bei mir ist, nur bei OnPlayerDisconnect das ganze Waffending weg...


    Es funzt jetzt alles...


    Danke !

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen