Waffen auslesen und Speichern wie?

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 will die Waffen von einem Spieler speichern auf MySQL aber wie mache ich das jetzt. Die SuFu hab ich benutzt unter anderem auch Google aber nichts konkretes gefunden. :/


    Also das auslesen geht soweit ich weiß so:


    for (new i = 0; i < 13; i++)
    {
    GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);
    }




    Dann hab ich ja Waffe1, Waffe2, Waffe3.... und Ammo1, Ammo2, Ammo3....
    Aber wie speicher ich das nun in die MySQL. Ich will ungern in die "user"-DB jetzt 13 waffen und 13 ammo spalten rein machen sondern eine extra "weapons".
    Wie soll das dann gehen das auch der Spieler ausgelesen wird das man nicht irgendwelche Waffen bekommt.



    Ich hab da mal was versucht aber da fehlt was:
    format(query,sizeof(query),"UPDATE weapons SET gun1='%i',ammo1='%i' WHERE //Was kommt hier?

    Mit freundlichen Grüßen,
    Derakar

  • Wenn du nicht 12 Spalten für Ammo und Weapon erstellen willst, kannst du es ja in einen String tun und die Waffen mit einem Zeichen (z.B. "I") trennen und anschließend beim laden wieder splitten.


    Tipp:
    - in der For- Schleife strcat nutzen
    - split funktion benutzen, bzw. nach bedarf die Funktion umschreiben.
    - Als String speichern + Laden. (Rechne genug Zeichen ein)

  • Tipp:
    - in der For- Schleife strcat nutzen
    - split funktion benutzen, bzw. nach bedarf die Funktion umschreiben.
    - Als String speichern + Laden. (Rechne genug Zeichen ein)

    Okay nur leider bin ich noch relativ ein Anfänger im Scripten und ich wüsste jetzt nicht was ich machen soll.


    was ist strcat?
    Wie kann ich das mit I spliten?

    Mit freundlichen Grüßen,
    Derakar

  • Strcat verbindet 2 Strings miteinander.

    new string[24],stringGesamt[124];
    format(string,24,"%iI",weapons[i][0]);
    strcat(stringGesamt,string);

    --> Wenn das nun durch die Schleife läuft, hättest du ein Ergebnis das so aussehen würde:
    2I3I5I24I3I64I.....



    Für Split habe ich hier eine bisschen was aus der Wiki:

    Parameters
    strsrc: String to split up.
    strdest: A 2D array; where to store the split up pieces.
    delimiter: A character or token which identifies the beginning and end of substrings.



    stock split(const strsrc[], strdest[][], delimiter)
    {
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc))
    {
    if(strsrc[i] == delimiter || i == strlen(strsrc))
    {
    len = strmid(strdest[aNum], strsrc, li, i, 128);
    strdest[aNum][len] = 0;
    li = i+1;
    aNum++;
    }
    i++;
    }
    return 1;
    }



    Bsp.:
    new tmp[2][128];
    split("Hello World!", tmp, ' ');
    print(tmp[0]);


    --> OUTPUTS: Hello



    Dann müsstest du eben noch mit strval die Strings in Variablen konvertieren. Ich rate dir aber die Split funktion umzuschreiben. Am besten nach deinem belieben anpassen.




    oder



    Du machst die einfache Methode und erstellst 24 Zeilen für Ammo und Waffen, das ist wohl für Anfänger leichter.

  • Man könnte es auch so machen
    new query[128];
    format(query,128,"UPDATE `weapons` SET");
    for (new i = 0; i < 13; i++)
    {
    GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);
    format(query,128,"%s %s`Waffe%d`='%d', `Ammo%d`='%d'",query,((i!=0)?(","):("")),i,weapons[i][0],i,weapons[i][1]);
    }
    format(query,128,"%s WHERE `Name` = '%s';",query);
    mysql....
    soll nur als Muster dienen denn hier brauch man nur einen query

    All in all it's just another brick in the wall