[MySQL R5][Haussystem][Hilfe]

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 liebe Brotfishe,


    Ich sitze seit ein paar Tage an meinem Haussystem dran. Jedoch gibt es da einen Bug den ich nicht beheben kann. Ich fange am besten einfach mal an wo genau das Problem liegt.Als erstes erstelle ich mir ein Haus waswunderbar speichert und ladet. Danach kaufe ich mir eins was auch noch alles klappt. Jetzt betrete ich das Haus und spawne auch im Interior. Nun Verlasse ich das Haus, doch jetzt tritt der Fehler auf. Ich spawne nicht vor meinem Haus sondern vor ein anderes erstelltes Haus. Ich weiß echt nicht wo da der Problem liegt und hoffe nun auf eure Hilfe. Hier mal meine "Codeschnipsel".



    Mein Enterbefehl:
    ocmd:hausbetreten(playerid)
    {
    if(NearestHaus(playerid) == -1)return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses!");
    if(HausInfo[NearestHaus(playerid)][haus_lock] == 1)return SendClientMessage(playerid,-1,"Das Haus ist verschlossen!");

    SetPlayerPos(playerid,HausInfo[NearestHaus(playerid)][haus_xi],HausInfo[NearestHaus(playerid)][haus_yi],HausInfo[NearestHaus(playerid)][haus_zi]);
    SetPlayerInterior(playerid,HausInfo[NearestHaus(playerid)][haus_int]);
    SetPlayerVirtualWorld(playerid,HausInfo[NearestHaus(playerid)][haus_vw]);
    SetPVarInt(playerid,"ImHaus",1);
    SendClientMessage(playerid,-1,"Du hast das Haus betreten.");
    printf("hat das Haus betreten");
    return 1;
    }


    Mein Exitbefehl:
    ocmd:hausverlassen(playerid)
    {
    if(!GetPVarInt(playerid,"ImHaus"))return SendClientMessage(playerid,-1,"Du bist in keinem Haus!");
    if(NearestExit(playerid) == -1)return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe der Haustür!");
    SetPlayerPos(playerid,HausInfo[NearestExit(playerid)][haus_x],HausInfo[NearestExit(playerid)][haus_y],HausInfo[NearestExit(playerid)][haus_z]);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    SendClientMessage(playerid,-1,"Du hast das Haus verlassen.");
    DeletePVar(playerid,"ImHaus");
    printf("Und wieder verlassen");
    return 1;
    }


    Danke schonmal für eure Hilfen.
    Ps: Wenn ihr noch den Stock NearestEnter & Exit braucht sagt mir einfach bescheid.



    Mit freundlichen Grüßen
    SA:MP. ;)

  • packe die Hausid in eine Variable, und setze sie dann,
    Ist besser als deine nearestexit funktion.
    Das sieht dann so aus

    ocmd:hausbetreten(playerid)
    {
    new id=NearestHaus(playerid);
    if(id != -1)
    {
    if(HausInfo[NearestHaus(playerid)][haus_lock] == 1)return SendClientMessage(playerid,-1,"Das Haus ist verschlossen!");
    SetPlayerPos(playerid,HausInfo[NearestHaus(playerid)][haus_xi],HausInfo[NearestHaus(playerid)][haus_yi],HausInfo[NearestHaus(playerid)][haus_zi]);
    SetPlayerInterior(playerid,HausInfo[NearestHaus(playerid)][haus_int]);
    SetPlayerVirtualWorld(playerid,HausInfo[NearestHaus(playerid)][haus_vw]);
    SetPVarInt(playerid,"ImHaus",1);
    SetPVarInt(playerid,"Hausid",id);
    SendClientMessage(playerid,-1,"Du hast das Haus betreten.");
    printf("hat das Haus betreten");
    return 1;
    }
    else return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses!");
    }


    ocmd:hausverlassen(playerid)
    {
    if(!GetPVarInt(playerid,"ImHaus"))return SendClientMessage(playerid,-1,"Du bist in keinem Haus!");
    if(NearestExit(playerid) == -1)return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe der Haustür!");
    SetPlayerPos(playerid,HausInfo[GetPVarInt(playerid,"Hausid")][haus_x],HausInfo[GetPVarInt(playerid,"Hausid")][haus_y],HausInfo[GetPVarInt(playerid,"Hausid")][haus_z]);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    SendClientMessage(playerid,-1,"Du hast das Haus verlassen.");
    DeletePVar(playerid,"ImHaus");
    DeletePVar(playerid,"Hausid");
    printf("Und wieder verlassen");
    return 1;
    }

  • Bescheid.
    NearestExit.



    Habe ich leider funktioniert dies immer noch nicht. Sprich ich spawne beim Verlassen wieder an einem anderem Haus.
    Hast du vielleicht mal kurz Zeit per Teamviewer mal vorbei zuschauen ? :rolleyes: