Häuser Speichern ? (MySQL)

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,


    Hab im Script ein Befehl womit ich Ingame Häuser erstellen kann.
    Aber wie kann ich die in der MySQL Tabelle Speichern? Und Laden wenn der Server Startet.


    if(strcmp(cmd, "/addhouse", true) == 0)
    {
    if (SpielerInfo[playerid][pAdmin] < 6)
    {
    new Float:getx,Float:gety,Float:getz, str1[128];
    GetPlayerPos(playerid,getx,gety,getz);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_RED, "FEHLER: /addhouse [HausID]");
    return 1;
    }
    new x_job = strval(tmp);
    if(HouseInfo[x_job][hCreated] == 1) {
    SendClientMessage(playerid,COLOR_RED,"[SERVER]: HausID bereits erstellt.");
    return 1;
    } else {
    HouseInfo[x_job][hCreated] = 1;
    HouseInfo[x_job][hEntrancex] = getx; HouseInfo[x_job][hEntrancey] = gety; HouseInfo[x_job][hEntrancez] = getz;
    HouseInfo[x_job][hExitx] = 244.5000;
    HouseInfo[x_job][hExity] = 305.0000;
    HouseInfo[x_job][hExitz] = 999.1484;
    HouseInfo[x_job][hValue] = 20000;
    HouseInfo[x_job][hLock] = 1;
    HouseInfo[x_job][hInt] = 1;
    HouseInfo[x_job][hArm] = 1;
    HouseInfo[x_job][hHel] = 1;
    HouseInfo[x_job][hRent] = 50;
    HouseInfo[x_job][hRentabil] = 0;
    HouseInfo[x_job][hLevel] = 3;
    HouseInfo[x_job][hMuell] = 0;
    HouseInfo[x_job][hPickup] = AddStaticPickup(1273, 1, HouseInfo[x_job][hEntrancex], HouseInfo[x_job][hEntrancey], HouseInfo[x_job][hEntrancez]);
    strmid(HouseInfo[x_job][hOwner], "Zu Verkaufen", 0, strlen("Zu Verkaufen"), 255);
    format(str1, sizeof(str1), "==== [HausID: %d] ====\nBesitzer: %s\nPreis: %d$\nMiete: %d$\nMüll: %d",x_job,HouseInfo[x_job][hOwner],HouseInfo[x_job][hValue],HouseInfo[x_job][hRent],HouseInfo[x_job][hMuell]);
    HouseInfo[x_job][h_text] = Create3DTextLabel(str1,COLOR_YELLOW,HouseInfo[x_job][hEntrancex], HouseInfo[x_job][hEntrancey], HouseInfo[x_job][hEntrancez],18.0,0,0);
    SaveProperty(x_job);
    SendClientMessage(playerid,COLOR_RED,"[SERVER]: Haus erstellt.");
    }
    }
    return 1;
    }


    Hoffe ihr könnt mir Helfen

  • Naja in dem du dir ein load und save funktion schreibst ^^ aber ich geh mal davon aus das dir sowas auch bewusst ist
    1. Solltest du dich mal mit mysql ein wenig auseinander setzen
    ich empfehle dir das tutorial
    [ SCRIPTING ] [Aktualisiert]Registersystem mit MySQL ( Enum!! + GUI )
    es bassiert zwar auf einem Accountsystem jedoch per sscanf kannst du die daten schneller auslesen.


    so würde das in etwas bei dir aussehen das ist ein beispiel wo ich mal für einen gemacht habe der ein problem bei seinem autosystem hatte ein ausschnitt
    stock Autosladen()
    {
    new Query[1024], id, i = 0;
    format(Query, sizeof(Query), "SELECT * FROM autos4");
    mysql_query(Query);
    mysql_store_result();
    while(mysql_fetch_row_format(Query,"|"))
    {
    id = i;
    sscanf(Query, "p<|>e<is[25]iiiffff>", VehicleInfo[id]);
    new Color1 = random(126); new Color2 = random(126);
    CreateVehicle(VehicleInfo[id][Model],VehicleInfo[id][Pos][X],VehicleInfo[id][Pos][Y],VehicleInfo[id][Pos][Z],VehicleInfo[id][Pos][R],Color1,Color2, 60*10000);
    i++;
    printf("%d",VehicleInfo[id][Model]);
    }
    }


    und du kannst dir auch das ganze mal anschauen da Vincent mal ein Mysql Haussystem erstellt hatte

  • Ich hab das so
    public SaveProperty(h)
    {
    new query[1024];
    format(query,sizeof(query),"UPDATE `houses` SET `hcreated` = '%i' ,`hentrancex` = '%f' ,`hentrancey` = '%f' ,`hentrancez` = '%f' ,`hexitx` = '%f', `hexity` = '%f', `hexitz` = '%f', `hhealthx` = '%i' WHERE `houseid`='%i'",
    HouseInfo[h][hCreated],HouseInfo[h][hEntrancex],HouseInfo[h][hEntrancey],HouseInfo[h][hEntrancez],HouseInfo[h][hExitx],HouseInfo[h][hExity],HouseInfo[h][hExitz],HouseInfo[h][hHealthx], h);
    mysql_query(query);


    format(query,sizeof(query),"UPDATE `houses` SET `hhealthy` = '%i',`hhealthz` = '%i', `harmourx` = '%i', `harmoury` = '%i', `harmourz` = '%i', `howner` = '%s',`hdiscription` = '%s', `hvalue` = '%i',`hhel` = '%i' WHERE `houseid`='%i'",
    HouseInfo[h][hHealthy],HouseInfo[h][hHealthz],HouseInfo[h][hArmourx],HouseInfo[h][hArmoury],HouseInfo[h][hArmourz], HouseInfo[h][hOwner], HouseInfo[h][hDiscription],HouseInfo[h][hValue],HouseInfo[h][hHel], h);
    mysql_query(query);


    format(query,sizeof(query),"UPDATE `houses` SET `harm` = '%i',`hint` = '%i',`hlock` = '%i',`howned` = '%i',`hrooms` = '%i',`hrent` = '%i',`hrentabil` = '%i',`htakings` = '%i',`hdate` = '%i',`hlevel` = '%i',`hmuell` = '%i' WHERE `houseid`='%i'",
    HouseInfo[h][hArm],HouseInfo[h][hInt],HouseInfo[h][hLock],HouseInfo[h][hOwned],HouseInfo[h][hRooms],HouseInfo[h][hRent],HouseInfo[h][hRentabil],HouseInfo[h][hTakings],HouseInfo[h][hDate],HouseInfo[h][hLevel],HouseInfo[h][hMuell], h);
    mysql_query(query);
    return 1;
    }


    In der mysql_log steht

    Spoiler anzeigen
    [Thu Aug 02 18:14:59 2012] Function: mysql_query executed: "UPDATE `houses` SET `hcreated` = '1' ,`hentrancex` = '1020.719177' ,`hentrancey` = '-1729.331420' ,`hentrancez` = '20.710937' ,`hexitx` = '244.500000', `hexity` = '305.000000', `hexitz` = '999.148376', `hhealthx` = '0' WHERE `houseid`='0'" with result: "0".
    [Thu Aug 02 18:14:59 2012] Function: mysql_query executed: "UPDATE `houses` SET `hhealthy` = '0',`hhealthz` = '0', `harmourx` = '0', `harmoury` = '0', `harmourz` = '0', `howner` = 'Zu Verkaufen',`hdiscription` = '', `hvalue` = '20000',`hhel` = '1' WHERE `houseid`='0'" with result: "0".
    [Thu Aug 02 18:14:59 2012] Function: mysql_query executed: "UPDATE `houses` SET `harm` = '1',`hint` = '1',`hlock` = '1',`howned` = '0',`hrooms` = '0',`hrent` = '50',`hrentabil` = '0',`htakings` = '0',`hdate` = '0',`hlevel` = '3',`hmuell` = '0' WHERE `houseid`='0'" with result: "0".
    [Thu Aug 02 18:15:02 2012] Function: mysql_query executed: "UPDATE `houses` SET `hcreated` = '1' ,`hentrancex` = '1019.047241' ,`hentrancey` = '-1730.531860' ,`hentrancez` = '20.710937' ,`hexitx` = '244.500000', `hexity` = '305.000000', `hexitz` = '999.148376', `hhealthx` = '0' WHERE `houseid`='1'" with result: "0".
    [Thu Aug 02 18:15:02 2012] Function: mysql_query executed: "UPDATE `houses` SET `hhealthy` = '0',`hhealthz` = '0', `harmourx` = '0', `harmoury` = '0', `harmourz` = '0', `howner` = 'Zu Verkaufen',`hdiscription` = '', `hvalue` = '20000',`hhel` = '1' WHERE `houseid`='1'" with result: "0".
    [Thu Aug 02 18:15:02 2012] Function: mysql_query executed: "UPDATE `houses` SET `harm` = '1',`hint` = '1',`hlock` = '1',`howned` = '0',`hrooms` = '0',`hrent` = '50',`hrentabil` = '0',`htakings` = '0',`hdate` = '0',`hlevel` = '3',`hmuell` = '0' WHERE `houseid`='1'" with result: "0".
    [Thu Aug 02 18:15:04 2012] Function: mysql_query executed: "UPDATE `houses` SET `hcreated` = '1' ,`hentrancex` = '1017.721191' ,`hentrancey` = '-1730.081542' ,`hentrancez` = '20.710937' ,`hexitx` = '244.500000', `hexity` = '305.000000', `hexitz` = '999.148376', `hhealthx` = '0' WHERE `houseid`='2'" with result: "0".
    [Thu Aug 02 18:15:04 2012] Function: mysql_query executed: "UPDATE `houses` SET `hhealthy` = '0',`hhealthz` = '0', `harmourx` = '0', `harmoury` = '0', `harmourz` = '0', `howner` = 'Zu Verkaufen',`hdiscription` = '', `hvalue` = '20000',`hhel` = '1' WHERE `houseid`='2'" with result: "0".
    [Thu Aug 02 18:15:04 2012] Function: mysql_query executed: "UPDATE `houses` SET `harm` = '1',`hint` = '1',`hlock` = '1',`howned` = '0',`hrooms` = '0',`hrent` = '50',`hrentabil` = '0',`htakings` = '0',`hdate` = '0',`hlevel` = '3',`hmuell` = '0' WHERE `houseid`='2'" with result: "0".


    Aber es passiert nix in der Tabelle

  • Wie sieht eiegentlich deine MYSQL Datenbank aus im bezug zu den floats.
    und warum erstellst du für alle paar zeilen eine einzelnes query füg das doch zusammen.
    und du könntest mal weiter probleme auslesen per OnQueryError und das mal in der console printen lassen


    //edit da du ihrgend was falsch formatiert hast