Haussystem Problem

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 Leute,


    folgendes Problem. Ich hab ein /chouse und /dhouse Befehl um Häuser zu erstellen und zu löschen.

    Das erstellen klappt und funktioniert. Das Löschen aber funktioniert nur bei einem, also beim ersten zu dem ich hingehe.

    Danach kommt nur noch die Meldung, dass ich nicht in der Nähe eine Hauses stehe obwohl ich im Pickup bin.

    Er zeigt mir keine Erros bzw Warnings und ein Enum habe ich dafür oben schon erstellt.


    ocmd:chouse(playerid,params[])
    {
    new str[120],str2[120],name[MAX_PLAYER_NAME],inter,preis,level,Float:x,Float:y,Float:z;
    if(IsPlayerConnected(playerid))
    if(IsPlayerAdminLevel(playerid, 3))
    {
    if(sscanf(params,"ddd",inter,preis,level))return SendClientMessage(playerid,Gelb,"Befehl: /chouse [Interior] [Preis] [Level]");
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerPos(playerid,x,y,z);
    for(new i; i < MAX_HOUSES; i++)
    {
    HausInfo[i][Hposx] = x;
    HausInfo[i][Hposy] = y;
    HausInfo[i][Hposz] = z;
    HausInfo[i][Preis] = preis;
    HausInfo[i][Level] = level;
    HausInfo[i][Interior] = inter;
    HausInfo[i][Pickup] = CreatePickup(1273,1,x,y,z,0);
    format(str,sizeof(str),"Preis: %d$\nLevel: %d\n/buyhouse um es zu kaufen",HausInfo[i][Preis],HausInfo[i][Level]);
    HausInfo[i][Label] = Create3DTextLabel(str,Orange,HausInfo[i][Hposx],HausInfo[i][Hposy],HausInfo[i][Hposz],10.0,0,0);
    }
    for(new player; player < MAX_PLAYERS; player++)
    {
    format(str2,sizeof(str2),"[Admin]: %s hat ein Haus erstellt.",name);
    if(IsPlayerAdminLevel(player, 2))
    {
    SendClientMessage(player,Gelb,str2);
    }
    }
    }
    return 1;
    }


    ocmd:dhouse(playerid,params[])
    {
    new str[120],name[MAX_PLAYER_NAME];
    if(IsPlayerConnected(playerid))
    if(IsPlayerAdminLevel(playerid, 3))
    {
    GetPlayerName(playerid,name,sizeof(name));
    for(new i; i < MAX_HOUSES; i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,3.0,HausInfo[i][Hposx],HausInfo[i][Hposy],HausInfo[i][Hposz]))return SendClientMessage(playerid,Grau,"Du bist nicht in der Nähe eine Hauses.");
    HausInfo[i][Hposx] = 0;
    HausInfo[i][Hposy] = 0;
    HausInfo[i][Hposz] = 0;
    HausInfo[i][Preis] = 0;
    HausInfo[i][Level] = 0;
    HausInfo[i][Interior] = 0;
    Delete3DTextLabel(HausInfo[i][Label]);
    DestroyPickup(HausInfo[i][Pickup]);
    }
    for(new player; player < MAX_PLAYERS; player++)
    {
    format(str,sizeof(str),"[Admin]: %s hat ein Haus gelöscht.",name);
    if(IsPlayerAdminLevel(player, 2))
    {
    SendClientMessage(player,Gelb,str);
    }
    }
    }
    return 1;
    }

  • So sollte es passen:
    ocmd:chouse(playerid,params[])
    {
    new str[120],name[MAX_PLAYER_NAME],inter,preis,level,Float:x,Float:y,Float:z;
    if(IsPlayerConnected(playerid))
    if(IsPlayerAdminLevel(playerid, 3))
    {
    if(sscanf(params,"ddd",inter,preis,level))return SendClientMessage(playerid,Gelb,"Befehl: /chouse [Interior] [Preis] [Level]");
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerPos(playerid,x,y,z);
    for(new i; i < MAX_HOUSES; i++)
    {
    if(HausInfo[i][Hposx] != 0.0 || HausInfo[i][Hposy] != 0.0 || HausInfo[i][Hposz] != 0.0) continue;
    HausInfo[i][Hposx] = x;
    HausInfo[i][Hposy] = y;
    HausInfo[i][Hposz] = z;
    HausInfo[i][Preis] = preis;
    HausInfo[i][Level] = level;
    HausInfo[i][Interior] = inter;
    HausInfo[i][Pickup] = CreatePickup(1273,1,x,y,z,0);
    format(str,sizeof(str),"Preis: %d$\nLevel: %d\n/buyhouse um es zu kaufen",HausInfo[i][Preis],HausInfo[i][Level]);
    HausInfo[i][Label] = Create3DTextLabel(str,Orange,HausInfo[i][Hposx],HausInfo[i][Hposy],HausInfo[i][Hposz],10.0,0,0);
    break;
    }
    format(str,sizeof(str),"[Admin]: %s hat ein Haus erstellt.",name);
    for(new player; player < MAX_PLAYERS; player++)
    {
    if(IsPlayerAdminLevel(player, 2))
    {
    SendClientMessage(player,Gelb,str);
    }
    }
    }
    return 1;
    }



    ocmd:dhouse(playerid,params[])
    {
    new str[120],name[MAX_PLAYER_NAME], bool:deleted;
    if(IsPlayerConnected(playerid))
    if(IsPlayerAdminLevel(playerid, 3))
    {
    GetPlayerName(playerid,name,sizeof(name));
    for(new i; i < MAX_HOUSES; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,HausInfo[i][Hposx],HausInfo[i][Hposy],HausInfo[i][Hposz]))
    {
    HausInfo[i][Hposx] = 0;
    HausInfo[i][Hposy] = 0;
    HausInfo[i][Hposz] = 0;
    HausInfo[i][Preis] = 0;
    HausInfo[i][Level] = 0;
    HausInfo[i][Interior] = 0;
    Delete3DTextLabel(HausInfo[i][Label]);
    DestroyPickup(HausInfo[i][Pickup]);
    deleted = true;
    break;
    }
    }
    if(!deleted) return SendClientMessage(playerid,Grau,"Du bist nicht in der Nähe eine Hauses.");
    for(new player; player < MAX_PLAYERS; player++)
    {
    format(str,sizeof(str),"[Admin]: %s hat ein Haus gelöscht.",name);
    if(IsPlayerAdminLevel(player, 2))
    {
    SendClientMessage(player,Gelb,str);
    }
    }
    }
    return 1;
    }