Command 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
  • Guten Tag Community,


    ich bin gerade an der Arbeit eines dynamischen Haussystems und wenn ich an einem Haus /buyhouse steht da du bist an keinem Haus obwohl es auf dem Server 5 Häuser gibt und der Command funktioniert nur bei einem Haus


    ocmd:buyhouse(playerid,params[])
    {
    #pragma unused params
    if(SpielerInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht befugt");
    if(SpielerInfo[playerid][pTazer] == 1)return SendClientMessage(playerid,COLOR_GREY,"Du bist getazert.");
    new string[128];
    for(new i = 0; i < sizeof(HausInfo); i++)
    {
    if(HausInfo[i][hCreated] == 1)
    {
    if(IsPlayerInRangeOfPoint(playerid,2.0,HausInfo[i][hEnterX],HausInfo[i][hEnterY],HausInfo[i][hEnterZ]))
    {
    if(GetPlayerMoney(playerid) < HausInfo[i][hPreis])return SendClientMessage(playerid,COLOR_GREY,"Du hast nicht genung Geld auf der Hand");
    if(GetPlayerLevel(playerid) < HausInfo[i][hLevel])return SendClientMessage(playerid,COLOR_GREY,"Dein Level ist zu niedrig");
    if(HausInfo[i][hOwned] == 1)return SendClientMessage(playerid,COLOR_GREY,"Das Haus ist schon verkauft");
    if(SpielerInfo[playerid][pHausKey] !=0 && strcmp(SpielerName(playerid),HausInfo[SpielerInfo[playerid][pHausKey]][hBesitzer],true) == 0)return SendClientMessage(playerid,COLOR_GREY,"Du besitzt schon ein Haus");
    format(string,sizeof(string),"Du hast das Haus für %i$ gekauft!",HausInfo[i][hPreis]);
    SendClientMessage(playerid,COLOR_GREEN,string);
    GivePlayerMoney(playerid,-HausInfo[i][hPreis]);
    HausInfo[i][hOwned] = 1;
    SpielerInfo[playerid][pHausKey] = i;
    format(HausInfo[i][hBesitzer],MAX_PLAYER_NAME,"%s",SpielerName(playerid));
    SaveHaus(i);
    return 1;
    }
    return SendClientMessage(playerid,COLOR_GREY,"Du bist an keinem Haus");
    }
    }
    return 1;
    }

  • ocmd:buyhouse(playerid,params[])
    {
    #pragma unused params
    if(SpielerInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht befugt");
    if(SpielerInfo[playerid][pTazer] == 1)return SendClientMessage(playerid,COLOR_GREY,"Du bist getazert.");
    new string[128];
    for(new i = 0; i < sizeof(HausInfo); i++)
    {
    if(HausInfo[i][hCreated] == 1)
    {
    if(IsPlayerInRangeOfPoint(playerid,2.0,HausInfo[i][hEnterX],HausInfo[i][hEnterY],HausInfo[i][hEnterZ]))
    {
    if(GetPlayerMoney(playerid) < HausInfo[i][hPreis])return SendClientMessage(playerid,COLOR_GREY,"Du hast nicht genung Geld auf der Hand");
    if(GetPlayerLevel(playerid) < HausInfo[i][hLevel])return SendClientMessage(playerid,COLOR_GREY,"Dein Level ist zu niedrig");
    if(HausInfo[i][hOwned] == 1)return SendClientMessage(playerid,COLOR_GREY,"Das Haus ist schon verkauft");
    if(SpielerInfo[playerid][pHausKey] !=0 && strcmp(SpielerName(playerid),HausInfo[SpielerInfo[playerid][pHausKey]][hBesitzer],true) == 0)return SendClientMessage(playerid,COLOR_GREY,"Du besitzt schon ein Haus");
    format(string,sizeof(string),"Du hast das Haus für %i$ gekauft!",HausInfo[i][hPreis]);
    SendClientMessage(playerid,COLOR_GREEN,string);
    GivePlayerMoney(playerid,-HausInfo[i][hPreis]);
    HausInfo[i][hOwned] = 1;
    SpielerInfo[playerid][pHausKey] = i;
    format(HausInfo[i][hBesitzer],MAX_PLAYER_NAME,"%s",SpielerName(playerid));
    SaveHaus(i);
    return 1;
    }
    }
    }
    return SendClientMessage(playerid,COLOR_GREY,"Du bist an keinem Haus");
    }


    Die Nachricht gehört ganz unten hin, nicht in die Schleife.

  • Du musst in dem Befehl auch eine Abfrage einbauen, ob dieser bereits ein Haus besitzt. Ich denke mal das die Abfrage bei dir so lauten muss.


    if(HausInfo[i][hOwned] == 1)return SendClientMessage(playerid,COLOR_GREY," Du besitzt bereits ein Haus!");


    Das musst du oben im Befehl einsetzen.

  • ^ Post über mir: Käse.


    Ich wollte das buyhouse auch noch so machen das man nur 1 Haus kaufen kann also pro person aber ich kann irgendwie 2 Häuser kaufen


    ocmd:buyhouse(playerid,params[])
    {
    #pragma unused params
    if(SpielerInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht befugt");
    if(SpielerInfo[playerid][pTazer] == 1)return SendClientMessage(playerid,COLOR_GREY,"Du bist getazert.");
    new string[128];
    format(string, sizeof(string), "%s", SpielerName(playerid));
    for(new i = 0; i < sizeof(HausInfo); i++)
    {
    if(HausInfo[i][hCreated] == 1 && HausInfo[i][hOwned] == 1)
    {
    if(!strcmp(HausInfo[i][hBesitzer], string)) return SendClientMessage(playerid,COLOR_GREY,"Du besitzt schon ein Haus.");
    }
    }
    for(new i = 0; i < sizeof(HausInfo); i++)
    {
    if(HausInfo[i][hCreated] == 1)
    {
    if(IsPlayerInRangeOfPoint(playerid,2.0,HausInfo[i][hEnterX],HausInfo[i][hEnterY],HausInfo[i][hEnterZ]))
    {
    if(GetPlayerMoney(playerid) < HausInfo[i][hPreis])return SendClientMessage(playerid,COLOR_GREY,"Du hast nicht genung Geld auf der Hand");
    if(GetPlayerLevel(playerid) < HausInfo[i][hLevel])return SendClientMessage(playerid,COLOR_GREY,"Dein Level ist zu niedrig");
    if(HausInfo[i][hOwned] == 1)return SendClientMessage(playerid,COLOR_GREY,"Das Haus ist schon verkauft");
    if(SpielerInfo[playerid][pHausKey] !=0 && strcmp(SpielerName(playerid),HausInfo[SpielerInfo[playerid][pHausKey]][hBesitzer],true) == 0)return SendClientMessage(playerid,COLOR_GREY,"Du besitzt schon ein Haus");
    format(string,sizeof(string),"Du hast das Haus für %i$ gekauft!",HausInfo[i][hPreis]);
    SendClientMessage(playerid,COLOR_GREEN,string);
    GivePlayerMoney(playerid,-HausInfo[i][hPreis]);
    HausInfo[i][hOwned] = 1;
    SpielerInfo[playerid][pHausKey] = i;
    format(HausInfo[i][hBesitzer],MAX_PLAYER_NAME,"%s",SpielerName(playerid));
    SaveHaus(i);
    return 1;
    }
    }
    }
    return SendClientMessage(playerid,COLOR_GREY,"Du bist an keinem Haus");
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Das liegt dann möglicherweise daran, dass die Daten der Häuser, vor allem der Besitzer, nicht richtig geladen werden.
    Poste bitte mal den Code der die Häuser lädt, und prüfe, ob in der Datei/Datenbank der Besitzer richtig eingetragen wird.