Problem mit Haussystem

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
  • Guten Abend meine Freunde,

    ich habe ein Problem mit meinem Haussystem.

    Vorerst: ich habe mich im Forum umfangreich umgeschaut aber bin nicht fündig geworden.


    Folgendes Problem habe ich ingame:


    Wenn ich ein Haus erstelle, dann passiert erstmal alles wie gewollt, Pickup und 3DText werden geladen und das Haus legt

    sich auch direkt in der Datenbank an, sobald ich das haus lösche, verschwindet es auch aus der Datenbank, weshalb ich einen ladefehler ausschließe.

    nun zum Problem: sobald ich ein zweites Haus erstelle, so verschwindet das erste Hausicon samt Text und Pickup, jedoch ist es weiterhin in der Datenbank vorhanden.

    Auch an der stelle kann ich das haus nicht löschen.

    Ich vermute mal es liegt an meinem /hcreate befehl, jedoch finde ich nichts was auf den Fehler hindeuten könnte...


    So lade ich meine Häuser


    Und noch ein paar Infos zu den Icons/Texten, da diese immer verschwinden sobald ich ein neues Haus erstelle.



    Das System ist auf MrMonat angelehnt, da ich seine Arbeit sehr sauber finde.


    Ich hoffe, dass mir jemand helfen kann, bis dahin mache ich mich weiter auf die Fehlersuche.


    MFG

  • jedoch ist es weiterhin in der Datenbank vorhanden.

    Dann liegt das Problem vermutlich im Lösch Befehl des Hauses ;)


    Also diesen gerne mal posten gerade das Query.


    Vermutlich schlägt auch einfach das Query fehl, über den mysql_log können solche Fehler sehr gut erkannt werden :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Das ist mein Delete Befehl.

    Nur wie gesagt kommt der nicht zum Einsatz.


    Mit /chouse erstelle ich ein haus, erstelle ich ein weiteres so verschwindet das erste komplett (Icon,Text) aber es ist weiterhin in der DB vorhanden.

    Ansonsten läuft alles fehlerfrei.

    Wenn ich nur eins erstelle und das lösche, so passiert alles nach vorschrift.

    //Es ist praktisch der /chouse befehl der das erste Haus zum löschen bringt sobald ein weiteres erstellt wird.

  • Nur wie gesagt kommt der nicht zum Einsatz.

    Gesagt wurde das nicht, aber ok.


    Ja, ich glaube ich verstehe was du sagen wolltest.


    Geh mal unter OnGameModeInit und füge das hier da ganz oben ein:


    C
    CreatePickup(1239,23, 0,0,-30,99);
    Create3DTextLabel("T",-1,0,0,-30,0,99,0);

    Das Problem ist nämlich, dass die IDs von CreatePickup und Create3DTextLabel bei 0 starten und das der Standard Wert von den Icons ist.

    Damit umgehst du quasi diesen "ID 0 BUG" ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Das Problem wird mit einer sehr großen Sicherheit in getFreeHausID liegen. Das würde erklären, warum das Pickup dann an einer neuen Stelle steht.


    Vielleicht findest du den Fehler ja selbst, kannst den Code - wenn du nicht mehr weiter weißt - gerne noch teilen.


    LG :)

  • Leider klappt dies nicht, sieht jedoch sehr interessant aus.

    Damit du nochmal ein genaueres Bild hast:

    Houseicon bug
    streamable.com


    (Alle erstellten Häuser bleiben ordnungsgerecht in der DB gespeichert, es verschwindet lediglich das Icon + der Text und an der stelle kann man auch

    kein /buyhouse mehr machen. Somit existiert immer nur ein Haus auf dem Server, aber nicht in der DB)



    Das Problem wird mit einer sehr großen Sicherheit in getFreeHausID liegen. Das würde erklären, warum das Pickup dann an einer neuen Stelle steht.


    Vielleicht findest du den Fehler ja selbst, kannst den Code - wenn du nicht mehr weiter weißt - gerne noch teilen.


    LG :)

    Ich werde mal schauen, jedoch könnte ich es mir nicht vorstellen, da dies eigentlich dazu dient, es richtig in die DB einzuordnen


    Code
    getFreeHausID()
    {
        for(new i=0; i<sizeof(hInfo); i++)
        {
            if(hInfo[i][h_id]==0)return 1;
        }
        return 0;
    }


    Da ich aber kein Profi bin werde ich mir den Tipp zu Herzen nehmen und direkt mal schauen was mir so auffällt, vielen vielen Dank euch beiden, ist auch nicht

    selbstverständlich anderen bei deren Problemen zu helfen :b ich schätze es wirklich sehr

  • Hast du in der MySQL Datenbank die Spalte id als Primary Key und Auto_Increment eingestellt?


    Gerne mal die Tabellenstruktur zeigen :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Du gibst den falschen Wert in getFreeHausID zurück. Dort gibt es bei dir nur 1 und 0, daran liegt es. :)


  • Beitrag von Kaliber ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Ah ja, Andosius hat recht ;) ().
  • Du gibst den falschen Wert in getFreeHausID zurück. Dort gibt es bei dir nur 1 und 0, daran liegt es. :)


    OMG du bist der König...... ehrlich gesagt wäre ich da nicht mal als letztes drauf gekommen, es funzt nun einwandfrei wie gewollt =)

  • Kleine Anmerkung noch. Überprüfe beim laden der Häuser und dessen Erstellung auf jeden Fall immer, ob getFreeHausID -1 zurück gibt. Dann kannst du nämlich keine neuen Häuser mehr erstellen, da das Array nicht mehr hergibt. :)


    So ersparst du dir auch Crashes da -1 ein ungültiger Index ist.

  • Kleine Anmerkung noch. Überprüfe beim laden der Häuser und dessen Erstellung auf jeden Fall immer, ob getFreeHausID -1 zurück gibt. Dann kannst du nämlich keine neuen Häuser mehr erstellen, da das Array nicht mehr hergibt. :)


    So ersparst du dir auch Crashes da -1 ein ungültiger Index ist.

    Vielen Dank 🙏