Problem mit Spawn (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
  • Hallo Brotfische,


    Ich habe das Problem das mir die Variable "HausSpawnID" immer folgenden Wert ausgibt : "11"
    Das das stimmt auch, aber ich werde nicht in das Haus mit der ID 11 gesetzt. Ich habe es auch bereits mit anderen Zahlen probiert. Ich Spawn also immer am Bauernhof (Blueberry 0.0,0.0, 0.0)


    Code:


    Spieler laden:



    Ich hoffe ihr könnt mir helfen :)


    MfG :thumbup:


    Mit freundlichen Grüßen
    German_ScripterHD

  • Was wird dir so im Server Log ausgegeben?

  • @Jeffry


    Ich weiße jetzt woran der Fehler liegt, undzwar am Namen.... hInfo[i][h_besitzer] wird der name gespeichert... wenn jetzt wie in meinem Fall ein Nameschange stattfindet funktioniert das ja nicht... :D


    Jetzt möchte ich noch eine Funktion bauen... GetUserNameFromDB.. wie mach ich das am besten?


    MfG :thumbup:


    Mit freundlichen Grüßen
    German_ScripterHD

  • Im Userenum habe ich "sInfo[playerid][db_id]"...
    Nun möchte ich, wenn man ein Haus kauft die ID in die Datenbank eingetragen wird. Wenn die Häuser dann geladen werden, soll bei Besitzer nicht "55" (Bsp. 55 ist die db_id.. ) stehn sondern Besitzer: GrandTheft.
    Also die Funktion soll die db_id auslesen und mir den name des Spielers wiedergeben.


    Mit freundlichen Grüßen
    German_ScripterHD

  • Am sinnvollsten machst du das mit einem JOIN im Query, mit dem du die Häuser aus der Datenbank lädst:
    http://www.w3schools.com/sql/sql_join_left.asp


    Das wäre von der Performance her am sinnvollsten.


    Alternativ, nachdem die db_id des Besitzers geladen ist ein zweites Query aufrufen, welches den Name aus der Tabelle liest, und dann gleich vorgehen, um den Cache auszulesen, in dem dann der Name steht.

  • Okay... aber wie lese ich jetzt bei laden der Häuser das richtig aus?


    C
    mysql_format(dbhandle, query, 128, "SELECT username FROM user WHERE %d",dbid);
    //Und jetzt habe ich ein Denkfehler... ich komm einfach net weiter.


    Mit freundlichen Grüßen
    German_ScripterHD

  • Du musst jetzt dort danach mysql_pquery aufrufen, und dann wieder in ein weiteres Callback springen, in dem du den Cache ausließt.
    Als Parameter gibst du dem mysql_pquery ein Integer (i) mit, und zwar den Index (wahrscheinlich auch i) für das Haus (kenne deinen Code nicht, daher kann ich dir das nicht genauer sagen).

  • @Jeffry


    Ich habe es jetzt mal mit dem JOIN probiert aber ich blick da noch nicht ganz durch :|
    Daher funktioniert das auch nicht ganz was ich gemacht habe.


    Datenbank:




    Codes: (Noch nicht fertig... Denkfehler und Co. )



    Ich hoffe es kann mir jemand helfen ... ich bin am verzweifeln ?(:|


    MfG


    Mit freundlichen Grüßen
    German_ScripterHD

  • Hier ist der JOIN an der falschen Stelle, da musst du es über ein normales SELECT machen.


    Dann mit:

    C
    forward LoadHousesBesitzer(id);
    public LoadHousesBesitzer(id)
    {
        new num_rows = cache_get_row_count();
        if(!num_rows)return 1;
        cache_get_field_content(0, "username", hInfo[id][h_besitzer], dbhandle, MAX_PLAYER_NAME);
        return 1;
    }


    Beachte, dass du h_besitzerID im enum und in der Tabelle für die Häuser hinzufügen musst, außerdem muss da drin die ID gespeichert werden, die der User in der user-Tabelle hat (um ihn zu finden).

  • @Jeffry Danke erstmal :)


    Ich habe ein weitere Problem.. Ich spawne zwar jetzt am Haus, aber alle Häuser stehen zum verkauf.. und bei Besitzer steht garnichts...


    Code:


    OnHousesLoad:


    print(printstring) momentan:


    Ich hoffe du kannst mir nochmal helfen Jeffry, wäre echt super :good:


    MfG :thumbup:


    Mit freundlichen Grüßen
    German_ScripterHD

  • Habe es jetzt so geschrieben:


    C
    public LoadHousesBesitzer(id)
    {
        new num_rows = cache_get_row_count();
        if(!num_rows)return 1;
        cache_get_field_content(0, "username", hInfo[id][h_besitzer], dbhandle, MAX_PLAYER_NAME);
        new printstring[90];
        format(printstring,sizeof(printstring),"i = %d - id = %d - MySQLID: %d - Besitzer: %s", id, id, hInfo[id][h_id],hInfo[id][h_besitzer]);
        print(printstring);
        return 1;
    }


    print:



    C
    [17:20:55] i = 13 - id = 13 - MySQLID: 20 - Besitzer: German_ScripterHD
    [17:20:55] i = 0 - id = 0 - MySQLID: 1 - Besitzer: German_ScripterHD
    [17:20:55] i = 19 - id = 19 - MySQLID: 26 - Besitzer: German_ScripterHD
    [17:20:55] i = 6 - id = 6 - MySQLID: 11 - Besitzer: German_ScripterHD


    Mit freundlichen Grüßen
    German_ScripterHD