Fahrzeuge in MySQL Speichern

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
  • Also, immerhin gut, dass das mit den Spielern jetzt wieder läuft.
    Deine Funktionen sind mehr oder weniger ein Mix aus beiden Systemen geworden. Schreibe das speichern so:
    SaveVehicle(i)
    {
    if(i < 0 || i >= sizeof(VehInfo)) return 1;
    new query[512];
    mysql_format(handle, query, sizeof(query), "UPDATE Auto SET ModellID = '%d' Fraktion = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosR = '%f', Abgeschleppt = '%d', inADAC = '%d', Name = '%e', Grund = '%e', Preis = '%d', ",
    VehInfo[i][ModellID], VehInfo[i][Fraktion], VehInfo[i][PosX], VehInfo[i][PosY],VehInfo[i][PosZ],VehInfo[i][PosR],VehInfo[i][Abgeschleppt],VehInfo[i][inADAC],VehInfo[i][Named],VehInfo[i][Grund],VehInfo[i][Preis]);
    mysql_format(handle, query, sizeof(query), "%sNewX = '%f', NewY = '%f', NewZ = '%f', NewR = '%f', Farbe1 = '%d', Farbe2 = '%d' WHERE ID = '%d'",query,
    VehInfo[i][NewX],VehInfo[i][NewY],VehInfo[i][NewZ],VehInfo[i][NewR],VehInfo[i][Farbe1],VehInfo[i][Farbe2],i);
    mysql_tquery(handle, query);
    return 1;
    }


    SaveVehicles()
    {
    for(new i=0; i < sizeof(VehInfo); i++) SaveVehicle(i);
    return 1;
    }

    Je nach dem wann du die Fahrzeuge speichern lassen willst, musst du das eine oder das andere eben noch entsprechend aufrufen.


    Das Laden sieht so aus:
    forward LoadVehicles();
    public LoadVehicles()
    {
    mysql_tquery(handle, "SELECT * FROM Auto", "LoadVehicles_Data", "");
    return 1;
    }


    forward LoadVehicles_Data();
    public LoadVehicles_Data()
    {
    new query[512], bool:added, missing, str[64], rows;
    rows = cache_num_rows();
    for(new i=0; i < sizeof(FrakAutos); i++)
    {
    if(i < rows) id = cache_get_field_content_int(i-missing, "ID");
    else id = -1;
    if(id != i)
    {
    mysql_format(handle, query, sizeof(query), "INSERT INTO Auto (ID, ModellID, PosX, PosY, PosZ, PosR, Farbe1, Farbe2, Fraktion) VALUES ('%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d', '%d')", i,
    FrakAutos[i][ModellID],FrakAutos[i][PosX],FrakAutos[i][PosY],FrakAutos[i][PosZ],FrakAutos[i][PosR],FrakAutos[i][Farbe1],FrakAutos[i][Farbe2],FrakAutos[i][Fraktionp]);
    mysql_tquery(handle, query);
    VehInfo[i][ModellID] = FrakAutos[i][ModellID];
    VehInfo[i][Fraktion] = FrakAutos[i][Fraktionp];
    VehInfo[i][PosX] = FrakAutos[i][PosX];
    VehInfo[i][PosY] = FrakAutos[i][PosY];
    VehInfo[i][PosZ] = FrakAutos[i][PosZ];
    VehInfo[i][PosR] = FrakAutos[i][PosR];
    VehInfo[i][Farbe1] = FrakAutos[i][Farbe1];
    VehInfo[i][Farbe2] = FrakAutos[i][Farbe2];
    missing++;
    }
    else
    {
    VehInfo[i][ModellID] = cache_get_field_content_int(i-missing, "ModellID");
    VehInfo[i][Fraktion] = cache_get_field_content_int(i-missing, "Fraktion");
    VehInfo[i][PosX] = cache_get_field_content_float(i-missing, "PosX");
    VehInfo[i][PosY] = cache_get_field_content_float(i-missing, "PosY");
    VehInfo[i][PosZ] = cache_get_field_content_float(i-missing, "PosZ");
    VehInfo[i][PosR] = cache_get_field_content_float(i-missing, "PosR");
    VehInfo[i][Abgeschleppt] = cache_get_field_content_int(i-missing, "Abgeschleppt");
    VehInfo[i][inADAC] = cache_get_field_content_int(i-missing, "inADAC");
    VehInfo[i][Preis] = cache_get_field_content_int(i-missing, "Preis");
    cache_get_field_content(i-missing, "Grund", str);
    format(VehInfo[i][Grund], 64, str);
    cache_get_field_content(i-missing, "Name", str);
    format(VehInfo[i][Named], 64, str);
    VehInfo[i][NewX] = cache_get_field_content_float(i-missing, "NewX");
    VehInfo[i][NewY] = cache_get_field_content_float(i-missing, "NewY");
    VehInfo[i][NewZ] = cache_get_field_content_float(i-missing, "NewZ");
    VehInfo[i][NewR] = cache_get_field_content_float(i-missing, "NewR");
    VehInfo[i][Farbe1] = cache_get_field_content_int(i-missing, "Farbe1");
    VehInfo[i][Farbe2] = cache_get_field_content_int(i-missing, "Farbe2");
    }
    if(VehInfo[i][Abgeschleppt] == 1)
    {
    VehInfo[i][veh_ID] = CreateVehicle(VehInfo[i][ModellID], VehInfo[i][NewX], VehInfo[i][NewY], VehInfo[i][NewZ], VehInfo[i][NewR], VehInfo[i][Farbe1], VehInfo[i][Farbe2], -1);
    }
    else
    {
    VehInfo[i][veh_ID] = CreateVehicle(VehInfo[i][ModellID], VehInfo[i][PosX], VehInfo[i][PosY], VehInfo[i][PosZ], VehInfo[i][PosR], VehInfo[i][Farbe1], VehInfo[i][Farbe2], -1);
    }
    }
    return 1;
    }


    Und bei OnGameModeInit steht:
    LoadVehicles();


    Jetzt hab ich dir mehr als das halbe System geschrieben, ich hoffe, dass das keine Fehler beinhaltet, da ich es ja nicht kompilieren kann.

  • Perfekt, funktioniert!


    Was ist der Unterschied zwischen SaveVehicle und SaveVehicles? Das hab ich beim alten MySQL schon nicht verstanden :)


    Danke für deine ständige Hilfe Jeff!


    //Sorry :D
    Aber nach dem /oPark wird nichts in der DB gespeichert, mach ich aber oPark ingame kann ich es trotzdem freikaufen, falls es was bringt mein oPark


    Spoiler anzeigen
    ocmd:opark(playerid, params[])
    {
    new preis, grund[34],named[34], string[128];
    GetPlayerName(playerid, named, sizeof(named));
    new Float:NeuX,Float:NeuY,Float:NeuZ, Float:NeuR;
    if(sscanf(params,"is",preis,grund))return SendClientMessage(playerid, Color_Green,"Benutzung: /opark [Preis][Grund]");
    if(SpielerInfo[playerid][pTeam] != 5) return SendClientMessage(playerid, hinweis1,"Du bist kein Mitglied des ADAC's!");
    if(isinADAC[playerid] != 1) return SendClientMessage(playerid, hinweis1, "Du bist nicht in der ADAC Zone!");
    else if(preis < 0 || preis > 1000) return SendClientMessage(playerid, hinweis1,"Du kannst das Bußgeld nicht weniger als 0 und mehr als 1000 kosten lassen!");
    {
    new i = GetFrakVehicleIdx(GetPlayerVehicleID(playerid));
    if(i == -1) return SendClientMessage(playerid, hinweis1, "Du bist nicht in einem abschleppbaren Auto!");
    format(VehInfo[i][Grund], 32, grund);
    format(VehInfo[i][Named], 32, named);
    GetVehiclePos(GetPlayerVehicleID(playerid),NeuX,NeuY,NeuZ);
    GetVehicleZAngle(GetPlayerVehicleID(playerid),NeuR);
    VehInfo[i][Preis] = preis;
    VehInfo[i][inADAC] = 1;
    VehInfo[i][Abgeschleppt] = 1;
    VehInfo[i][NewX] = NeuX;
    VehInfo[i][NewY] = NeuY;
    VehInfo[i][NewZ] = NeuZ;
    VehInfo[i][NewR] = NeuR;
    format(string, sizeof(string),"|Strafzettel| Preis %i€ Grund: %s",preis,grund);
    SendClientMessage(playerid, Color_Green, string);
    SaveVehicle(i);
    SaveVehicles();
    }
    return 1;
    }


    Vorhin war bei LoadVehicles_Data ID nicht definiert, ich hab es einfach so gemacht:
    new query[512], missing, str[64], rows, id;



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    Einmal editiert, zuletzt von ENEF ()

  • Ok, schreibe den Befehl auf jeden Fall so:
    ocmd:opark(playerid, params[])
    {
    new preis, grund[34],named[34], string[128];
    GetPlayerName(playerid, named, sizeof(named));
    new Float:NeuX,Float:NeuY,Float:NeuZ, Float:NeuR;
    if(sscanf(params,"is",preis,grund))return SendClientMessage(playerid, Color_Green,"Benutzung: /opark [Preis][Grund]");
    if(SpielerInfo[playerid][pTeam] != 5) return SendClientMessage(playerid, hinweis1,"Du bist kein Mitglied des ADAC's!");
    if(isinADAC[playerid] != 1) return SendClientMessage(playerid, hinweis1, "Du bist nicht in der ADAC Zone!");
    else if(preis < 0 || preis > 1000) return SendClientMessage(playerid, hinweis1,"Du kannst das Bußgeld nicht weniger als 0 und mehr als 1000 kosten lassen!");
    {
    new i = GetFrakVehicleIdx(GetPlayerVehicleID(playerid));
    if(i == -1) return SendClientMessage(playerid, hinweis1, "Du bist nicht in einem abschleppbaren Auto!");
    format(VehInfo[i][Grund], 32, grund);
    format(VehInfo[i][Named], 32, named);
    GetVehiclePos(GetPlayerVehicleID(playerid),NeuX,NeuY,NeuZ);
    GetVehicleZAngle(GetPlayerVehicleID(playerid),NeuR);
    VehInfo[i][Preis] = preis;
    VehInfo[i][inADAC] = 1;
    VehInfo[i][Abgeschleppt] = 1;
    VehInfo[i][NewX] = NeuX;
    VehInfo[i][NewY] = NeuY;
    VehInfo[i][NewZ] = NeuZ;
    VehInfo[i][NewR] = NeuR;
    format(string, sizeof(string),"|Strafzettel| Preis %i€ Grund: %s",preis,grund);
    SendClientMessage(playerid, Color_Green, string);
    SaveVehicle(i);
    }
    return 1;
    }


    Und füge beim SaveVehicle den print so hinzu:
    SaveVehicle(i)
    {
    if(i < 0 || i >= sizeof(VehInfo)) return 1;
    new query[512];
    mysql_format(handle, query, sizeof(query), "UPDATE Auto SET ModellID = '%d', Fraktion = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosR = '%f', Abgeschleppt = '%d', inADAC = '%d', Name = '%e', Grund = '%e', Preis = '%d', ",
    VehInfo[i][ModellID], VehInfo[i][Fraktion], VehInfo[i][PosX], VehInfo[i][PosY],VehInfo[i][PosZ],VehInfo[i][PosR],VehInfo[i][Abgeschleppt],VehInfo[i][inADAC],VehInfo[i][Named],VehInfo[i][Grund],VehInfo[i][Preis]);
    mysql_format(handle, query, sizeof(query), "%sNewX = '%f', NewY = '%f', NewZ = '%f', NewR = '%f', Farbe1 = '%d', Farbe2 = '%d' WHERE ID = '%d'",query,
    VehInfo[i][NewX],VehInfo[i][NewY],VehInfo[i][NewZ],VehInfo[i][NewR],VehInfo[i][Farbe1],VehInfo[i][Farbe2],i);
    mysql_tquery(handle, query);
    printf("query: %s", query);
    return 1;
    }


    Dann poste was im server_log.txt steht, wenn du das Fahrzeug oparkst.
    Und ggf. das was im MySQL Log steht.


    Zitat

    Vorhin war bei LoadVehicles_Data ID nicht definiert, ich hab es einfach so gemacht:


    Oh ja, tatsächlich. Naja, ohne Compiler eben. :D
    Aber passt, das hast du richtig erkannt und gemacht!

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry () aus folgendem Grund: Fehlendes Komma

  • Okey, hab ich.
    Nun hier wird alles schön angezeigt und nur in der Datenbank fehlen die einträge..


    Serverlog:

    Code
    [20:03:23] query: UPDATE Auto SET ModellID = '560' Fraktion = '3', PosX = '-2064.277', PosY = '-83.104', PosZ = '34.87', PosR = '180.432', Abgeschleppt = '1', inADAC = '1', Name = 'niddo_189', Grund = 'grundtest', Preis = '500', NewX = '-1821.885', NewY = '34.993', NewZ = '14.828', NewR = '92.188', Farbe1 = '226', Farbe2 = '226' WHERE ID = '36'


    MySQL Log:


    SQL
    [20:03:21] [DEBUG] mysql_format - connection: 1, len: 512, format: "UPDATE Auto SET ModellID = '%d' Fraktion = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosR = '%f', Abgeschleppt = '%d', inADAC..."[20:03:23] [DEBUG] mysql_format - connection: 1, len: 512, format: "%sNewX = '%f', NewY = '%f', NewZ = '%f', NewR = '%f', Farbe1 = '%d', Farbe2 = '%d' WHERE ID = '%d'"[20:03:23] [DEBUG] mysql_tquery - connection: 1, query: "UPDATE Auto SET ModellID = '560' Fraktion = '3', PosX = '-2064.2", callback: "(null)", format: "(null)"[20:03:23] [DEBUG] CMySQLQuery::Execute[] - starting query execution[20:03:23] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Fraktion = '3', PosX = '-2064.277', PosY = '-83.104', PosZ = '34.87', PosR = '18' at line 1[20:03:23] [DEBUG] CMySQLQuery::Execute[] - error will be triggered in OnQueryError[20:03:23] [DEBUG] Calling callback "OnQueryError"..


    MfG :thumbup:



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Da hat ein Komma gefehlt, siehste mal was das ausmacht. ^^


    So:
    SaveVehicle(i)
    {
    if(i < 0 || i >= sizeof(VehInfo)) return 1;
    new query[512];
    mysql_format(handle, query, sizeof(query), "UPDATE Auto SET ModellID = '%d', Fraktion = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosR = '%f', Abgeschleppt = '%d', inADAC = '%d', Name = '%e', Grund = '%e', Preis = '%d', ",
    VehInfo[i][ModellID], VehInfo[i][Fraktion], VehInfo[i][PosX], VehInfo[i][PosY],VehInfo[i][PosZ],VehInfo[i][PosR],VehInfo[i][Abgeschleppt],VehInfo[i][inADAC],VehInfo[i][Named],VehInfo[i][Grund],VehInfo[i][Preis]);
    mysql_format(handle, query, sizeof(query), "%sNewX = '%f', NewY = '%f', NewZ = '%f', NewR = '%f', Farbe1 = '%d', Farbe2 = '%d' WHERE ID = '%d'",query,
    VehInfo[i][NewX],VehInfo[i][NewY],VehInfo[i][NewZ],VehInfo[i][NewR],VehInfo[i][Farbe1],VehInfo[i][Farbe2],i);
    mysql_tquery(handle, query);
    printf("query: %s", query);
    return 1;
    }


    Dann sollten die Werte richtig in der Datenbank stehen.

  • Perfekt ^^


    Scheint alles zu funktionieren.


    Danke Jeff :thumbup:



    Jeffry:


    Hilfe :D
    Die Fraktionskassen funktionieren nicht wie sie sollen.


    Ich zahle 5000€ in die Fraktionskasse ein, es wird nichts gespeichert.
    Ich mache /fkasse(kassenstand) Betrag ist 5001€
    Wenn ich /fauszahlen mache (eigentlich 5000 drauf) sagt er mir wenn ich 5000 als betrag mache das soviel nicht drauf wäre :/
    fkasse, fauszahlen und frein

    Spoiler anzeigen
    ocmd:frein(playerid,params[])
    {
    if(SpielerInfo[playerid][pLeader] == 0 && SpielerInfo[playerid][pMember] == 0)
    {
    new fsumme,fgeld,fID,string[145];
    fgeld = GetPlayerMoney(playerid);
    if(sscanf(params,"ii",fID,fsumme))return SendClientMessage(playerid, Color_Green,"/feinzahlen [FraktionsID] [Summe]");
    else if (fsumme >= fgeld) return SendClientMessage(playerid, Color_Red, "Du hast nicht soviel Geld auf deiner Hand.");
    if(fID >= sizeof(KassenInfo) || fID < 1)
    {
    return SendClientMessage(playerid, Color_Red, "Diese Fraktion existier nicht!");
    }
    new i = fID;
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    KassenInfo[i][fGeld] += fsumme;
    GivePlayerMoney(playerid, -fsumme);
    format(string, sizeof(string),"Du hast %i€ in die Fraktionskasse eingezahlt! Du hast nun noch %i€ auf der Hand.",fsumme,fgeld-fsumme);
    SendClientMessage(playerid, Color_Green, string);
    //SaveKassen();
    }
    else
    {
    new fsumme,fgeld,string[145];
    fgeld = GetPlayerMoney(playerid);
    if(sscanf(params,"i",fsumme))return SendClientMessage(playerid, Color_Green,"/feinzahlen [Summe]");
    else if (fsumme >= fgeld) return SendClientMessage(playerid, Color_Red, "Du hast nicht soviel Geld auf deiner Hand.");
    if(SpielerInfo[playerid][pLeader] >= sizeof(KassenInfo) || SpielerInfo[playerid][pLeader] < 1)
    {
    return SendClientMessage(playerid, Color_Red, "Du bist in keiner existierenden Fraktion!");
    }
    if(SpielerInfo[playerid][pLeader] != 0)
    {
    new i = SpielerInfo[playerid][pLeader];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    KassenInfo[i][fGeld] += fsumme;
    GivePlayerMoney(playerid, -fsumme);
    format(string, sizeof(string),"Du hast %i€ in die Fraktionskasse eingezahlt! Du hast nun noch %i€ auf der Hand.",fsumme,fgeld-fsumme);
    SendClientMessage(playerid, Color_Green, string);
    //SaveKassen();
    }
    else
    {
    SendClientMessage(playerid, Color_Red, "Du gehörst nicht zu den Leadern deiner Fraktion!");
    }
    }
    return 1;
    }
    ocmd:fkasse(playerid,params[])
    {
    new string[128];
    new i = SpielerInfo[playerid][pLeader];
    new fmoney = KassenInfo[i][fGeld];
    if(SpielerInfo[playerid][pLeader] >= sizeof(KassenInfo) || SpielerInfo[playerid][pLeader] < 1)
    {
    return SendClientMessage(playerid, Color_Red, "Du bist in keiner existierenden Fraktion!");
    }
    if(SpielerInfo[playerid][pLeader] != 0)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    format(string, sizeof(string),"Kassenstand %i€",fmoney);
    SendClientMessage(playerid, Color_Green, string);
    //SaveKassen();
    }
    else
    {
    SendClientMessage(playerid, Color_Red, "Du gehörst nicht zu den Leadern deiner Fraktion!");
    }
    return 1;
    }
    ocmd:fauszahlen(playerid,params[])
    {
    new fsumme,string[128];
    new i = SpielerInfo[playerid][pLeader];
    new fmoney = KassenInfo[i][fGeld];
    if(sscanf(params,"i",fsumme))return SendClientMessage(playerid, Color_Green,"/fauszahlen [Summe]");
    else if (fsumme >= fmoney) return SendClientMessage(playerid, Color_Red, "Kasse: So viel Geld haben wir nicht.");
    if(SpielerInfo[playerid][pLeader] >= sizeof(KassenInfo) || SpielerInfo[playerid][pLeader] < 1)
    {
    return SendClientMessage(playerid, Color_Red, "Du bist in keiner existierenden Fraktion!");
    }
    if(SpielerInfo[playerid][pLeader] != 0)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    KassenInfo[i][fGeld] -= fsumme;
    GivePlayerMoney(playerid, fsumme);
    format(string, sizeof(string),"Du hast %i€ aus der Fraktionskasse ausgezahlt! Kassenstand: %i€",fsumme,fmoney);
    SendClientMessage(playerid, Color_Green, string);
    //SaveKassen();
    }
    else
    {
    SendClientMessage(playerid, Color_Red, "Du gehörst nicht zu den Leadern deiner Fraktion!");
    }
    return 1;
    }


    Save & Load:

    Spoiler anzeigen
    OngameModeinit:
    mysql_tquery(handle, "SELECT * FROM Kassen ORDER BY ID ASC", "LoadKassen", "d", 0);

    Spoiler anzeigen
    forward LoadKassen(secure);
    public LoadKassen(secure)
    {
    new query[128], bool:added, rows = cache_num_rows();
    for(new i=1; i < MAX_FRAKTION; i++)
    {
    if(i > rows || cache_get_field_content_int(i-1, "ID") != i) //i-1 bei den cache-Funktionen, da diese bei 0 anfangen zu zählen
    {
    switch(i)
    {
    case 1: format(KassenInfo[i][fName], 32, "Staatskasse");
    case 2: format(KassenInfo[i][fName], 32, "Test1");
    case 3: format(KassenInfo[i][fName], 32, "Fahrschule");
    case 4: format(KassenInfo[i][fName], 32, "News");
    case 5: format(KassenInfo[i][fName], 32, "ADAC");
    }
    format(query, sizeof(query), "INSERT INTO Kassen (ID, Name) VALUES ('%d', '%s')", i, KassenInfo[i][fName]);
    mysql_tquery(handle, query);
    added = true;
    continue;
    }
    cache_get_field_content(i-1, "Name", KassenInfo[i][fName]);
    KassenInfo[i][fGeld] = cache_get_field_content_int(i-1, "Geld");
    KassenInfo[i][fDrogen] = cache_get_field_content_int(i-1, "Drogen");
    KassenInfo[i][fWaffen] = cache_get_field_content_int(i-1, "Waffen");
    }
    if(added && secure < 10) mysql_tquery(handle, "SELECT * FROM Kassen ORDER BY ID ASC", "LoadKassen", "d", secure+1);
    return 1;
    }
    stock SaveKassen()
    {
    new query[512];
    for(new i=1; i < MAX_FRAKTION; i++)
    {
    format(query, sizeof(query), "UPDATE Kassen SET Name = '%s', Geld = '%d', Drogen = '%d', Waffen = '%d' WHERE ID = '%d'",
    KassenInfo[i][fName], KassenInfo[i][fGeld], KassenInfo[i][fDrogen], KassenInfo[i][fWaffen], i);
    mysql_tquery(handle, query);
    }
    return 1;
    }


    Hoffe du kannst mir noch schnell helfen ^^



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    Einmal editiert, zuletzt von ENEF ()

  • Zu dem Problem mit dem nicht genug Geld:
    else if (fsumme >= fgeld) return SendClientMessage(playerid, Color_Red, "Du hast nicht soviel Geld auf deiner Hand.");
    zu:
    else if (fsumme > fgeld) return SendClientMessage(playerid, Color_Red, "Du hast nicht soviel Geld auf deiner Hand.");


    und:
    else if (fsumme >= fmoney) return SendClientMessage(playerid, Color_Red, "Kasse: So viel Geld haben wir nicht.");
    zu:
    else if (fsumme > fmoney) return SendClientMessage(playerid, Color_Red, "Kasse: So viel Geld haben wir nicht.");


    In der Datenbank Speichern kann es nicht, da du das auskommentiert hast.
    //SaveKassen();
    zu:
    SaveKassen();


    Schreibe bitte das Laden der Kassen noch so, das ist besser, dann ist es gleich wie bei den Fahrzeugen:
    forward LoadKassen();
    public LoadKassen()
    {
    new query[128], bool:added, rows = cache_num_rows()+1, id, failcount, str[32]; //+1 weil du bei 1 anfängst
    for(new i=1; i < MAX_FRAKTION; i++)
    {
    if(i < rows) id = cache_get_field_content_int(i-failcount-1, "ID");
    else id = -1;
    if(id != i)
    {
    switch(i)
    {
    case 1: format(KassenInfo[i][fName], 32, "Staatskasse");
    case 2: format(KassenInfo[i][fName], 32, "Test1");
    case 3: format(KassenInfo[i][fName], 32, "Fahrschule");
    case 4: format(KassenInfo[i][fName], 32, "News");
    case 5: format(KassenInfo[i][fName], 32, "ADAC");
    }
    format(query, sizeof(query), "INSERT INTO Kassen (ID, Name) VALUES ('%d', '%s')", i, KassenInfo[i][fName]);
    mysql_tquery(handle, query);
    failcount++;
    }
    else
    {
    cache_get_field_content(i-failcount-1, "Name", str);
    format(KassenInfo[i][fName], 32, str);
    KassenInfo[i][fGeld] = cache_get_field_content_int(i-failcount-1, "Geld");
    KassenInfo[i][fDrogen] = cache_get_field_content_int(i-failcount-1, "Drogen");
    KassenInfo[i][fWaffen] = cache_get_field_content_int(i-failcount-1, "Waffen");
    }
    }
    return 1;
    }