Problem mit /henter (ocmd)

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 Tag Community,


    ich habe ein Haussystem gemacht aber leider beim betreten eines hauses ist mir aufgefallen das jeder in ein Haus rein kann.
    Ich habe das so gemacht das nur mieter und owner einfach rein können aber irgendwie kann jeder rein :/


    ocmd:henter(playerid,params[])
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,WHITE,"Du bist nicht Eingeloggt");
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,24);
    for(new x = 0; x < sizeof(Hauser); x++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5.0,Hauser[x][pExitX],Hauser[x][pExitY],Hauser[x][pExitZ]))
    {
    if(!strcmp(Hauser[x][pOwner], name, true))
    {
    SetPlayerPos(playerid,Hauser[x][pEnterX],Hauser[x][pEnterY],Hauser[x][pEnterZ]);
    SetPlayerInterior(playerid,Hauser[x][pInt]);
    }
    else
    {
    if(!strcmp(Hauser[x][pMieter],name,true))
    {
    SetPlayerPos(playerid,Hauser[x][pEnterX],Hauser[x][pEnterY],Hauser[x][pEnterZ]);
    SetPlayerInterior(playerid,Hauser[x][pInt]);
    }
    else
    {
    if(Hauser[x][plock] == 1)
    {
    SendClientMessage(playerid,HELLROT,"Verschlossen!");
    }
    else
    {
    SetPlayerPos(playerid,Hauser[x][pEnterX],Hauser[x][pEnterY],Hauser[x][pEnterZ]);
    SetPlayerInterior(playerid,Hauser[x][pInt]);
    }
    }
    }
    }
    }
    return 1;
    }



    MfG


    Master

  • Ich weiß jetzt zwar nicht ob das an dem Code liegt,dass er durch pwn falsch eingerüclt ist,aber nun gut...


    -> arbeite mit else und return 1; oder mit else if ....
    -> du hast z.B einmal else und dann wieder if und dann wieder else ?



    ~ mfg.

  • @[DT]Done: Nein das ist korrekt so.


    Master147:
    Schau dir mal diesen Code nochmal an:
    else
    {
    SetPlayerPos(playerid,Hauser[x][pEnterX],Hauser[x][pEnterY],Hauser[x][pEnterZ]);
    SetPlayerInterior(playerid,Hauser[x][pInt]);
    }
    Kurz zum Mitdenken: Wenn man nicht der Owner ist und wenn man nicht der Mieter ist und wenn nicht abgeschlossen ist, kommt man rein.
    Also kommt jeder rein, solange das Haus nicht verschlossen ist. War das dein Denkfehler? :)

    Professioneller Webentwickler.

  • habe es jetzt so gemacht da ich dachte so ist es besser aber habe trotzdem den fehler


    ocmd:henter(playerid,params[])
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,WHITE,"Du bist nicht Eingeloggt");
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,24);
    new renthaus = SpielerInfo[playerid][pMieter];
    for(new x = 0; x < MAX_HAUSER; x++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5.0,Hauser[x][pExitX],Hauser[x][pExitY],Hauser[x][pExitZ]))
    {
    if(Hauser[x][plock] == 1)
    {
    if(strcmp(Hauser[x][pOwner], name, true))
    {
    SetPlayerPos(playerid,Hauser[x][pEnterX],Hauser[x][pEnterY],Hauser[x][pEnterZ]);
    SetPlayerInterior(playerid,Hauser[x][pInt]);
    }
    if(x == renthaus)
    {
    SetPlayerPos(playerid,Hauser[x][pEnterX],Hauser[x][pEnterY],Hauser[x][pEnterZ]);
    SetPlayerInterior(playerid,Hauser[x][pInt]);
    }
    }
    return GameTextForPlayer(playerid,"~r~abgeschlossen!",1000,1);
    }
    }
    return 1;
    }