HausSystem Richtig Laden/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
  • Hallo
    Ich wei sdas ich da was falsch gemacht habe. Beim Laden soll es so sein. Wenn in der DB 10Hauser sind sollen nur 10 geladen werden und nichtg MAX_HAUSER. Und wenn ich LoadHaus in script drinen habe bei OnGamemOdeInt dann gehen auf einmal keine TextDraws mehr wie sie sollen. Also hie rmal die beiden Stocks
    stock SaveHaus()
    {
    new str[3];
    for(new i; i<sizeof(Haus);i++)
    {
    valstr(str,i);
    mysql_SetString("hauser", "Besitzer", Haus[i][Owner], "ID", str);
    mysql_SetFloat("hauser", "ax", Haus[i][ax], "ID", str);
    mysql_SetFloat("hauser", "ay", Haus[i][ay], "ID", str);
    mysql_SetFloat("hauser", "az", Haus[i][az], "ID", str);
    mysql_SetFloat("hauser", "ix", Haus[i][ix], "ID", str);
    mysql_SetFloat("hauser", "iy", Haus[i][iy], "ID", str);
    mysql_SetFloat("hauser", "iz", Haus[i][iz], "ID", str);
    mysql_SetInt("hauser", "interior", Haus[i][interior], "ID", str);
    mysql_SetInt("hauser", "virtual_world", Haus[i][vworld], "ID", str);
    mysql_SetInt("hauser", "kosten", Haus[i][kosten], "ID", str);
    mysql_SetInt("hauser", "nicht_zum_kauf", Haus[i][kaufen], "ID", str);
    mysql_SetInt("hauser", "verschlossen", Haus[i][schloss], "ID", str);
    mysql_SetInt("hauser", "Heal", Haus[i][heal], "ID", str);
    mysql_SetInt("hauser", "Armour", Haus[i][armour], "ID", str);
    }
    return 1;
    }
    stock LoadHaus()
    {
    new str[3];
    for(new i; i<sizeof(Haus);i++)
    {
    valstr(str,i);
    Haus[i][ID] = mysql_GetInt("hauser", "ID", "ID", str);
    Haus[i][Owner] = mysql_GetString("hauser", "Besitzer", "ID", str);
    Haus[i][ax] = mysql_GetFloat("hauser", "ax", "ID", str);
    Haus[i][ay] = mysql_GetFloat("hauser", "ay", "ID", str);
    Haus[i][az] = mysql_GetFloat("hauser", "az", "ID", str);
    Haus[i][ix] = mysql_GetFloat("hauser", "ix", "ID", str);
    Haus[i][iy] = mysql_GetFloat("hauser", "iy", "ID", str);
    Haus[i][iz] = mysql_GetFloat("hauser", "iz", "ID", str);
    Haus[i][interior] = mysql_GetInt("hauser", "interior", "ID", str);
    Haus[i][vworld] = mysql_GetInt("hauser", "virtual_world", "ID", str);
    Haus[i][kosten] = mysql_GetInt("hauser", "kosten", "ID", str);
    Haus[i][kaufen] = mysql_GetInt("hauser", "nicht_zum_kauf", "ID", str);
    Haus[i][schloss] = mysql_GetInt("hauser", "verschlossen", "ID", str);
    Haus[i][heal] = mysql_GetInt("hauser", "Heal", "ID", str);
    Haus[i][armour] = mysql_GetInt("hauser", "Armour", "ID", str);
    hausid++;
    }
    return 1;
    }
    Bei LoadHaus lass ich ja hausid hochzählen weil ich sie später für die commands bruache das er nicht die ids beim erstellen eien hauses überschneidet und somit überschreibt in der DB


    KA wie ich das anstellen soll.

  • Meinst du es wäre nicht von Vorteil für dich zu sagen,welches MySQL Plugin du benutzt?


    Was du brauchst ist eine Funktion,die immer in die nächste Zeile deiner Datenbank Tabelle springt und sie falls vorhanden ausließt.
    Dafür dürfte mysql_fetch_row( <store_string> ) sehr nützlich.

  • Ah Okay ich benutze das Include a_mysql von gstylezz und ah ich kapier das nicht so ganz mit mysql_fetch_row( <store_string> )

  • Zitat

    Include a_mysql von gstylezz


    Du meinst wohl das Plugin ... Include alleine bringt ja wohl nix.


    Es gibt zu den MySQL Plugins gute Dokumenationen und Beispielscripte, da sollte man schon mal reinschauen,wenn man Hilfe brauch.
    http://wiki.sa-mp.com/wiki/MySQL#mysql_fetch_row_format


    mysql_query("SELECT * FROM players WHERE name='Myname'");
    mysql_store_result(); new resultline[200];

    if(mysql_fetch_row_format(resultline))
    //you can now use sscanf, explode, split or strtok to split result
    sscanf(resultline,"p<|>dds",PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pRandomString]);
    }
    else SendClientMessage(playerid,0xFFFFFF,"Not in database!");

    mysql_free_result();
    Zusammen mit http://wiki.sa-mp.com/wiki/MySQL#mysql_retrieve_row
    mysql_query("SELECT * FROM houses");
    mysql_ store_result();

    while(mysql_retrieve_row()) //this will be running until all rows are processed
    {
    //you can use mysql_fetch_field and mysql_fetch_field_row here
    }

    mysql_free_result();
    Das Beispiel ist selbsterklärend.

  • okay das hab eich jetzt bei loadhaus und das geht auch aber er ichhab emal eien CreateHaus funtion gemacht


    stock CreateHaus(besitzer2[], ax2[], ay2[], az2[], ix2[], iy2[], iz2[], interior2[], vw2[], kosten2[], nichtzumkauf2[], verschlossen2[], heal2[], armour2[])
    {
    new query[256];
    mysql_real_escape_string(besitzer2,query);
    mysql_real_escape_string(ax2,query);
    mysql_real_escape_string(ay2,query);
    mysql_real_escape_string(az2,query);
    mysql_real_escape_string(ix2,query);
    mysql_real_escape_string(iy2,query);
    mysql_real_escape_string(iz2,query);
    mysql_real_escape_string(interior2,query);
    mysql_real_escape_string(vw2,query);
    mysql_real_escape_string(kosten2,query);
    mysql_real_escape_string(nichtzumkauf2,query);
    mysql_real_escape_string(verschlossen2,query);
    mysql_real_escape_string(heal2,query);
    mysql_real_escape_string(armour2,query);
    format(query, sizeof(query), "INSERT INTO hauser (Besitzer, ax, ay, az, ix, iy, iz, interior, virtual_world, kosten, nicht_zum_kauf, verschlossen, Heal, Armour) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", besitzer2, ax2, ay2, az2, ix2, iy2, iz2, interior2, vw2, kosten2, nichtzumkauf2, verschlossen2, heal2, armour2);
    mysql_query(query);
    return true;
    }


    und bei
    CreateHaus(Haus[hausid][Owner], Haus[hausid][ax], Haus[hausid][ay], Haus[hausid][az], Haus[hausid][ix], Haus[hausid][iy], Haus[hausid][iz], Haus[hausid][interior], Haus[hausid][vworld], Haus[hausid][kosten], Haus[hausid][kaufen], Haus[hausid][schloss], Haus[hausid][heal], Haus[hausid][armour]); kommt ganz oft tag mismatch wieso? was mache ich falsch=

    Einmal editiert, zuletzt von HoneyKing ()

  • Oh man, Grundlagen ?
    CreateHaus(Haus[hausid][Owner], Haus[hausid][ax], Haus[hausid][ay], Haus[hausid][az], Haus[hausid][ix], Haus[hausid][iy], Haus[hausid][iz], Haus[hausid][interior], Haus[hausid][vworld], Haus[hausid][kosten], Haus[hausid][kaufen], Haus[hausid][schloss], Haus[hausid][heal], Haus[hausid][armour]);


    Haus[hausid][ax], Haus[hausid][ay], Haus[hausid][az], Haus[hausid][ix], Haus[hausid][iy], Haus[hausid][iz], Haus[hausid][interior], Haus[hausid][vworld], Haus[hausid][kosten], Haus[hausid][kaufen], Haus[hausid][schloss], Haus[hausid][heal], Haus[hausid][armour]
    Das sind bestimmt keine Arrays / Strings. Ich nehme an entweder Float-Werte oder normale Integers.
    Im Funktionskopf sind bei dir aber ALLES Arrays / Strings.
    stock CreateHaus(besitzer2[], ax2[], ay2[], az2[], ix2[], iy2[], iz2[], interior2[], vw2[], kosten2[], nichtzumkauf2[], verschlossen2[], heal2[], armour2[])

  • Ups mein fehler aber
    und es geht danke

    Einmal editiert, zuletzt von HoneyKing ()