[Erledigt] Haus Interior Spawn setzen

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
  • Danke Beavis.
    Ich habe das alte gelassen wo du das mit dem query gekürzt hast.
    Es lag an sscanf ^^


    --


    Wenn ich häuser löschen möchte dann müsste ich das so machen oder?


    format(query,128,"DELETE FROM `Houses` WHERE `HausID` = '%d'",i);
    mysql_query(query);

  • Ja so löscht du es


    Aber zu den Laden das könntest du auch so machen
    stock LoadHouses()
    {
    new query[64],string[128];
    mysql_query("SELECT * FROM `Houses`;");
    mysql_store_result();
    for(new i=0;i<mysql_num_rows();i++)
    {
    if(mysql_retrieve_row())
    {
    mysql_fetch_field_row(query,"Besitzer"); format(HausInfo[i][hBesitzer],64,"%s",query);
    mysql_fetch_field_row(query,"Kaufpreis"); HausInfo[i][hKaufpreis] = strval(query);
    mysql_fetch_field_row(query,"IconX"); HausInfo[i][hIconX] = floatstr(query);
    mysql_fetch_field_row(query,"IconY"); HausInfo[i][hIconY] = floatstr(query);
    mysql_fetch_field_row(query,"IconZ"); HausInfo[i][hIconZ] = floatstr(query);
    mysql_fetch_field_row(query,"IconID"); HausInfo[i][hIconID] = strval(query);
    mysql_fetch_field_row(query,"SpawnX"); HausInfo[i][hSpawnX] = floatstr(query);
    mysql_fetch_field_row(query,"SpawnY"); HausInfo[i][hSpawnY] = floatstr(query);
    mysql_fetch_field_row(query,"SpawnZ"); HausInfo[i][hSpawnZ] = floatstr(query);
    mysql_fetch_field_row(query,"InteriorID"); HausInfo[i][hInteriorID] = strval(query);
    format(string,sizeof(string),"--== Freistehendes Haus ==--\nDieses Haus steht zum Verkauf\nBenutze: /buyhouse\nKaufpreis: {FFCC00}$%d",HausInfo[i][hKaufpreis]);
    Create3DTextLabel(string,COLOR_WHITE,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ],15,0,1);
    CreatePickup(HausInfo[i][hIconID],1,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ]);
    }
    }
    mysql_free_result();
    return 1;
    }

    All in all it's just another brick in the wall


  • Alles richtig soweit aber wozu ne Schleife wodran du die Felder zählst ? While(mysql_retrieve_row()) hätte es auch getan ;)


    Beavis

    RFT

  • Ja ich habs auf die schnelle gemacht
    Da ich mit den Strickenkid plugin arbeite ist meine Vorgehensweise ja vollkommen anders
    Schleife für alle Einträge damit auch die HausInfo IDs gesetzt werden ;)
    bei ner While müsste ich nen Intger immer ++ nehmen das brauch ich bei der schleife nicht mehr :D

    All in all it's just another brick in the wall

  • Danke langsam blick ich durch :D
    Danke nochmal ^^


    Nun habe ich ein erneutes Problem (von Anfang an schon)
    Wenn ich z. B. /befehl Kaufpreis interiorid eingebe möchte ich ja das das Haus ein Interior bekommt..
    Nur die SpawnX,Y,Z wird nicht geupdatet in der Tabelle...


    for(new i=0;i<MAX_HOUSES;i++)
    {
    switch(HausInfo[i][hInteriorID])
    {
    case 2:
    {
    new query[128];
    format(query, sizeof(query), "UPDATE `Houses` SET `SpawnX`='271.884979' AND SpawnY='306.631988' AND SpawnZ='999.148437' WHERE `HausID` = '%d'", i);
    mysql_query(query);


    }
    case 4:
    {
    new query[128];
    format(query, sizeof(query), "UPDATE `Houses` SET `SpawnX`='302.180999' AND SpawnY='300.722991' AND SpawnZ='999.148437' WHERE `HausID` = '%d'", i);
    mysql_query(query);
    }
    }
    }


    Also das InteriorID 2 dort an dieser Position im Haus Spawnt beim /enter ^^ das ist jetzt der CreateBefehl


    Mfg, markus

  • Okay und bei 2 ein AND oder kann man auch immer ein komma nehmen?


    -
    Wenn ich das Haus löschen möchte (ich gehe zum Pickup und gebe den Befehl ein)
    for(new i=0;i<MAX_HOUSES;i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ]))
    {
    format(query,128,"DELETE FROM `Houses` WHERE `HausID` = '%d'",i);
    mysql_query(query);
    }
    }


    Passiert nichts.. also das Haus wird nicht gelöscht.

  • Ja daran habe ich auch schon gedacht, aber als ich in die Tabelle gekuckt habe sind die Häuser noch immer da^^
    Wenn ich es löschen möchte brauche ich ja Delete3DTextLabel nur das muss doch irgendeine ID haben oder?
    Ich kann ja nicht irgendein Label löschen :D


    Mfg, Markus

  • Hab ich so gemacht:
    format(string,sizeof(string),"Die HausID %d wurde aus der Tabelle entfernt.",i);
    SendClientMessage(playerid,COLOR_BESCH,string);
    Nur dann kommt beim ersten Haus: ID 0 raus und beim 2. ID 1 und in der tabelle ist das schon HausID 4 - 9 und/oder 10^^

  • ok


    Schreib mal im Enum das oben rein:
    HausDB
    dann das Laden so machen
    stock LoadHouses()
    {
    new query[64],string[128];
    mysql_query("SELECT * FROM `Houses`;");
    mysql_store_result();
    for(new i=0;i<mysql_num_rows();i++)
    {
    if(mysql_retrieve_row())
    {
    mysql_fetch_field_row(query,"Besitzer"); format(HausInfo[i][hBesitzer],64,"%s",query);
    mysql_fetch_field_row(query,"Kaufpreis"); HausInfo[i][hKaufpreis] = strval(query);
    mysql_fetch_field_row(query,"IconX"); HausInfo[i][hIconX] = floatstr(query);
    mysql_fetch_field_row(query,"IconY"); HausInfo[i][hIconY] = floatstr(query);
    mysql_fetch_field_row(query,"IconZ"); HausInfo[i][hIconZ] = floatstr(query);
    mysql_fetch_field_row(query,"IconID"); HausInfo[i][hIconID] = strval(query);
    mysql_fetch_field_row(query,"SpawnX"); HausInfo[i][hSpawnX] = floatstr(query);
    mysql_fetch_field_row(query,"SpawnY"); HausInfo[i][hSpawnY] = floatstr(query);
    mysql_fetch_field_row(query,"SpawnZ"); HausInfo[i][hSpawnZ] = floatstr(query);
    mysql_fetch_field_row(query,"InteriorID"); HausInfo[i][hInteriorID] = strval(query);
    mysql_fetch_field_row(query,"HausID"); HausInfo[i][HausDB] = strval(query);
    format(string,sizeof(string),"--== Freistehendes Haus ==--\nDieses Haus steht zum Verkauf\nBenutze: /buyhouse\nKaufpreis: {FFCC00}$%d",HausInfo[i][hKaufpreis]);
    Create3DTextLabel(string,COLOR_WHITE,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ],15,0,1);
    CreatePickup(HausInfo[i][hIconID],1,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ]);
    }
    }
    mysql_free_result();
    return 1;
    }
    löschen dann so:
    format(query,128,"DELETE FROM `Houses` WHERE `HausID` = '%d'",HausInfo[i][HausDB]);


    //nachtrag
    Alles was du beim haus updatest, musst du dann so mit der Hausid machen:
    format(query,128,"..... WHERE `HausID` = '%d'",HausInfo[i][HausDB]);
    Sonst updatet er dir nichts

    All in all it's just another brick in the wall

    Einmal editiert, zuletzt von Beavis ()

  • error 017: undefined symbol "HausDB"


    Habe es oben aber eingefügt?
    #define MAX_HOUSES 50
    enum HausDaten
    {
    hBesitzer[MAX_PLAYER_NAME],
    hKaufpreis,
    Float: hIconX,
    Float: hIconY,
    Float: hIconZ,
    hIconID,
    Float: hSpawnX,
    Float: hSpawnY,
    Float: hSpawnZ,
    hInteriorID,
    hHausDB
    }
    new HausInfo[MAX_HOUSES][HausDaten];

  • Es funktioniert, danke :D:love:
    Nur die Label's gehen nicht weg..
    Muss ich denen irgendeine ID geben?


    Und der Interior Spawn wird nicht geupdatet.


    Ist HausDB ein ID Umwandler? (sowas ähnliches?)


    Mfg, Markus

  • //nachtrag
    Alles was du beim haus updatest, musst du dann so mit der Hausid machen:

    format(query,128,"..... WHERE `HausID` = '%d'",HausInfo[i][HausDB]);



    Sonst updatet er dir nichts


    Les das mal


    Zu den Labels die musst du auch in einer Variable speichern um die zu löschen

    All in all it's just another brick in the wall

  • Okay, muss die Variable in der Tabelle abgespeichert werden?


    Mfg, Markus

  • Aber das würde mir leichter fallen..
    Würde das etwas ausmachen wenn ich das abspeichere also wie ein AI also das es immer um ein hochzählt..?
    Oder wäre das schwerer weil ich kappiere das nicht mti dem Text3D:HausTID[MAX_HOUSES]; usw... (das war bestimmt falsch)
    -
    //E
    Interiors funktionieren nun (Spawn) :D


    Pickup und Label gehen nicht weg
    ocmd:dhaus(playerid,params[])
    {
    #pragma unused params
    new query[500], string[200];
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,Float:X,Float:Y,Float:Z);
    for(new i=0;i<MAX_HOUSES;i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ]))
    {
    format(query,128,"DELETE FROM `Houses` WHERE `HausID` = '%d'",HausInfo[i][HausDB]);
    mysql_query(query);
    format(string,sizeof(string),"Die HausID %d wurde aus der Tabelle entfernt.",i);
    SendClientMessage(playerid,COLOR_BESCH,string);
    //Delete3DTextLabel(HausTID[HausDB]);
    DestroyPickup(Hauser[MAX_HOUSES]);
    }
    }
    return 1;
    }
    Jetzt kommt die Nachricht das das Haus gelöscht worden ist.
    Auch die Einträge in der TB nur das Pickup verschwindet nicht sowie dsa 3DTextLabel.


    Kann mir da jemand helfen?




    Mfg, Markus

    2 Mal editiert, zuletzt von [Markus] ()