/hauserstellen 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


    Ich habe ein kleines Problem mit meinem /hauserstellen System.


    Es ist so:
    Ich gebe den Befehl ein und alles andere das haus ist da ich mache /buyhouse und kaufe es dann kommt ein andere macht /buyhouse und das Haus gehört auf einmal ihm...
    aber das haus ist in dem sinne noch bei mir gespeichert weil ich erst /sellhouse machen muss um ein neues zu kaufen und der andere typ auch.


    Hier ist mal das System


    ocmd:hauserstellen(playerid, params[])
    {
    new cmd[128];
    new Level, Kosten, Haus, Vw;
    if(sscanf(params,"dddd",Level, Kosten, Haus, Vw))
    {
    return SendClientMessage(playerid, COLOR_YELLOW, "Hinweis: /hauserstellen [Level] [Preis] [Haus] [Virtual World]");
    }
    if(!IsPlayerAdmin(playerid))
    {
    return SendClientMessage(playerid, COLOR_GREY, "Fehler: Du bist kein Communityleiter (RCON)");
    }
    if(GetPlayerScore(playerid) < 0)
    {
    return SendClientMessage(playerid, COLOR_GREY, "Fehler: Muss größer als 0 sein!");
    }
    if(Haus > sizeof(Typen) || Haus < 0)
    {
    return SendClientMessage(playerid, COLOR_GREY, "Fehler: Der Typ muss zwischen 0 und 15 liegen!");
    }
    if(Kosten < 0)
    {
    return SendClientMessage(playerid, COLOR_GREY, "Fehler: Der Preis muss höher als 0 sein!");
    }
    else
    {
    new Float:nowPos[3];
    new fullid = mysql_GetInt("stuff","Zahl","Name","Häuser");
    GetPlayerPos(playerid,nowPos[0],nowPos[1],nowPos[2]);
    HausDaten[fullid][ax] = nowPos[0];
    HausDaten[fullid][ay] = nowPos[1];
    HausDaten[fullid][az] = nowPos[2];
    HausDaten[fullid][play_time] = Level;
    HausDaten[fullid][kosten] = Kosten;
    HausDaten[fullid][interior] = Typen[Haus][interior];
    HausDaten[fullid][ix] = Typen[Haus][haus_x];
    HausDaten[fullid][iy] = Typen[Haus][haus_y];
    HausDaten[fullid][iz] = Typen[Haus][haus_z];
    HausDaten[fullid][virtual_world] = Vw;
    HausDaten[fullid][verschlossen] = 1;
    HausDaten[fullid][nicht_zum_kauf] = 1;
    strmid(HausDaten[fullid][Besitzer],"Keiner",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    HausDaten[fullid][pickid] = CreatePickup(1272,1,nowPos[0],nowPos[1],nowPos[2],0);
    format(cmd,sizeof cmd,"Besitzer: Keiner\nLevel: %d\nPreis: %d$",Level,Kosten);
    HausDaten[fullid][lbl_haus] = Create3DTextLabel(cmd,COLOR_WHITE,nowPos[0],nowPos[1],nowPos[2],10.0,0,0);
    new query[256];
    new HausID = mysql_GetInt("stuff","Zahl","Name","Häuser");
    format(query, sizeof(query), "INSERT INTO Houses (HausID , Besitzer) VALUES ('%d', 'Niemand')", HausID);
    mysql_query(query);
    mysql_SetInt("stuff","Zahl",HausID+1,"Name","Häuser");
    SaveCache(fullid);
    }
    return 1;
    }


    MFG
    Barney

  • erstmal unnötige klammern^^

    ocmd:hauserstellen(playerid, params[])
    {
    new cmd[128];
    new Level, Kosten, Haus, Vw;
    if(sscanf(params,"dddd",Level, Kosten, Haus, Vw))return SendClientMessage(playerid, COLOR_YELLOW, "Hinweis: /hauserstellen [Level] [Preis] [Haus] [Virtual World]");
    if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid, COLOR_GREY, "Fehler: Du bist kein Communityleiter (RCON)");
    if(GetPlayerScore(playerid) < 0)return SendClientMessage(playerid, COLOR_GREY, "Fehler: Muss größer als 0 sein!");
    if(Haus > sizeof(Typen) || Haus < 0)return SendClientMessage(playerid, COLOR_GREY, "Fehler: Der Typ muss zwischen 0 und 15 liegen!");
    if(Kosten < 0)return SendClientMessage(playerid, COLOR_GREY, "Fehler: Der Preis muss höher als 0 sein!");
    new Float:nowPos[3];
    new fullid = mysql_GetInt("stuff","Zahl","Name","Häuser");
    GetPlayerPos(playerid,nowPos[0],nowPos[1],nowPos[2]);
    HausDaten[fullid][ax] = nowPos[0];
    HausDaten[fullid][ay] = nowPos[1];
    HausDaten[fullid][az] = nowPos[2];
    HausDaten[fullid][play_time] = Level;
    HausDaten[fullid][kosten] = Kosten;
    HausDaten[fullid][interior] = Typen[Haus][interior];
    HausDaten[fullid][ix] = Typen[Haus][haus_x];
    HausDaten[fullid][iy] = Typen[Haus][haus_y];
    HausDaten[fullid][iz] = Typen[Haus][haus_z];
    HausDaten[fullid][virtual_world] = Vw;
    HausDaten[fullid][verschlossen] = 1;
    HausDaten[fullid][nicht_zum_kauf] = 1;
    strmid(HausDaten[fullid][Besitzer],"Keiner",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    HausDaten[fullid][pickid] = CreatePickup(1272,1,nowPos[0],nowPos[1],nowPos[2],0);
    format(cmd,sizeof cmd,"Besitzer: Keiner\nLevel: %d\nPreis: %d$",Level,Kosten);
    HausDaten[fullid][lbl_haus] = Create3DTextLabel(cmd,COLOR_WHITE,nowPos[0],nowPos[1],nowPos[2],10.0,0,0);
    new query[256];
    new HausID = mysql_GetInt("stuff","Zahl","Name","Häuser");
    format(query, sizeof(query), "INSERT INTO Houses (HausID , Besitzer) VALUES ('%d', 'Niemand')", HausID);
    mysql_query(query);
    mysql_SetInt("stuff","Zahl",HausID+1,"Name","Häuser");
    SaveCache(fullid);
    return 1;
    }

    dann brauchen wir den befehl wo du das haus kaufst-

  • Hier ist der /buyhouse Befehl


    ocmd:buyhouse(playerid, params[])
    {
    #pragma unused params
    new cmd[128];
    new SpielerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, SpielerName, sizeof(SpielerName));
    for(new i = 1;i < Houses+1;i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,1.5,HausDaten[i][ax],HausDaten[i][ay],HausDaten[i][az]))
    {
    if(SpielerInfo[playerid][pHaus] > 0)
    {
    return SendClientMessage(playerid,0xFF0000FF,"Fehler: Du hast bereits ein Haus!");
    }
    if(GetPlayerScore(playerid) < HausDaten[i][play_time])
    {
    return SendClientMessage(playerid,0xFF0000FF,"Fehler: Dein Level ist zu niedrig!");
    }
    if(GetPlayerMoney(playerid) < HausDaten[i][kosten])
    {
    return SendClientMessage(playerid,0xFF0000FF,"Fehler: Du brauchst mehr Geld!");
    }
    else
    {
    strmid(HausDaten[i][Besitzer],SpielerName,0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    HausDaten[i][nicht_zum_kauf] = 1;
    format(cmd,sizeof cmd,"Besitzer: %s\nLevel: %d\nPreis: %d$",SpielerName,HausDaten[i][play_time],HausDaten[i][kosten]);
    Update3DTextLabelText(HausDaten[i][lbl_haus],COLOR_WHITE,cmd);
    GivePlayerCash(playerid,-HausDaten[i][kosten]);
    SaveCache(i);
    SpielerInfo[playerid][pHaus] = 1;
    return 1;
    }
    }
    }
    SendClientMessage(playerid, COLOR_GREY, "Fehler: Du bist an keinem kaufbaren Haus!");
    return 1;
    }

  • Du fragst nicht ab ob das Haus schon einen Besitzer hat.


    if(HausDaten[i][nicht_zum_kauf] == 1)return SCM(playerid,FARBE,"geht nicht");