Simple Haus System von Blackfox ändern das man nur 1 Haus kaufen kann und kein mehrere.

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 Morgen Leute, ich habe hier von BlackFox das Simple Haus System. Nur habe ich das Problem das alle sich mehrere Häuser kaufen können. Ich Möchte halt das er sich 1 Haus kaufen kann und nicht mehr.





    /* SimpleHaus System 1.0 BETA


    (c) 2008 - 2009 By BlackFoX_UD_


    Bitte vor dem benutzen den Ordner ,,haus´´ in scripfiles erstellen


    Released unter Creative Commons License*/
    #define COLOR_WARN 0xB72C00FF
    #define COLOR_MESS 0xB7BC21FF
    #define COLOR_GRUEN 0x007E32F6
    #include <a_samp>
    #include <dini>


    enum struk
    {
    Float:haus_x,
    Float:haus_y,
    Float:haus_z,
    Float:e_haus_x,
    Float:e_haus_y,
    Float:e_haus_z,
    besitzer[MAX_PLAYER_NAME],
    haus_id,
    kosten,
    inter, // Interior
    world, // Virtual World
    verschlossen,
    player_spawn,
    }
    new Hausplaces[][struk] = {
    *zensirt*
    };



    /*
    - Reihenfolge -
    Eingang X - Eingang Y - Eingang Z - InnenRaum X - InnenRaum Y
    InnenRaum Z - Besitzer = Zum Verkauf - haus = -1 - Hauskosten
    Interior - Virtuelle Welt - Verschlossen 1/0
    Soll Käufer dort nach dem betreten des Servers wieder dort Spawnen ? player_spawn
    */
    public OnPlayerSpawn(playerid)
    {
    for(new i = 0;i<sizeof(Hausplaces);i++)
    {
    if(strcmp(Hausplaces[i][besitzer],Spielername(playerid),false) == 0)
    {
    if(Hausplaces[i][player_spawn])SetPlayerPos(playerid,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z]);break;
    }
    }
    return 1;
    }
    public OnFilterScriptInit()
    {
    new tform[128];
    print("\n--------------------------------------");
    print(" [ Simple ] Haus System 1.0");
    print("--------------------------------------\n");
    for(new i = 0;i<sizeof(Hausplaces);i++)
    {
    format(tform,sizeof tform,"haus/haus_%d.txt",i);
    if(!fexist(tform))
    {
    dini_Create(tform);
    dini_Set(tform,"besitzer",Hausplaces[i][besitzer]);
    dini_IntSet(tform,"kosten",Hausplaces[i][kosten]);
    dini_IntSet(tform,"inter",Hausplaces[i][inter]);
    dini_IntSet(tform,"world",Hausplaces[i][world]);
    dini_IntSet(tform,"verschlossen",Hausplaces[i][verschlossen]);
    dini_IntSet(tform,"player_spawn",Hausplaces[i][player_spawn]);
    Hausplaces[i][haus_id] = CreatePickup(1239,1,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z],-1);
    }
    else
    {
    strmid(Hausplaces[i][besitzer],dini_Get(tform,"besitzer"),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    Hausplaces[i][kosten] = dini_Int(tform,"kosten");
    Hausplaces[i][inter] = dini_Int(tform,"inter");
    Hausplaces[i][world] = dini_Int(tform,"world");
    Hausplaces[i][verschlossen] = dini_Int(tform,"verschlossen");
    Hausplaces[i][player_spawn] = dini_Int(tform,"player_spawn");
    Hausplaces[i][haus_id] = CreatePickup(1239,1,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z],-1);
    }
    }
    return 1;
    }
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new idx,cmd[128];
    cmd = strtok(cmdtext,idx);
    if (strcmp(cmd,"/hauskauf",true) == 0)
    {
    for(new i = 0;i<sizeof(Hausplaces);i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,1.1,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z]))
    {
    if(GetPlayerMoney(playerid) < Hausplaces[i][kosten])return SendClientMessage(playerid,COLOR_WARN,"Du brauchst mehr Geld!");
    if(strcmp(Hausplaces[i][besitzer],"Zum Verkauf",false) == 0)
    {
    GivePlayerMoney(playerid,-Hausplaces[i][kosten]);
    strmid(Hausplaces[i][besitzer],Spielername(playerid),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    SendClientMessage(playerid,COLOR_GRUEN,"Glückwunsch zum neuen Haus!");
    SaveHaus(i);
    }
    else
    {
    SendClientMessage(playerid,COLOR_WARN,"Dieses Haus hat bereits einen Besitzer!");
    }
    return 1;
    }
    }
    return 1;
    }
    if (strcmp(cmd,"/hausverkaufen",true) == 0)
    {
    for(new i = 0;i<sizeof(Hausplaces);i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,1.1,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z]))
    {
    if(strcmp(Hausplaces[i][besitzer],Spielername(playerid),false) == 0)
    {
    GivePlayerMoney(playerid,Hausplaces[i][kosten]/2);
    strmid(Hausplaces[i][besitzer],"Zum Verkauf",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    SendClientMessage(playerid,COLOR_GRUEN,"Du hast dein Haus verkauft!");
    SaveHaus(i);
    }
    else
    {
    SendClientMessage(playerid,COLOR_WARN,"Dieses Haus gehört nicht dir!");
    }
    return 1;
    }
    }
    return 1;
    }
    if (strcmp(cmd,"/enter",true) == 0)
    {
    for(new i = 0;i<sizeof(Hausplaces);i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,1.1,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z]))
    {
    if(!Hausplaces[i][verschlossen])
    {
    if(strcmp(Hausplaces[i][besitzer],Spielername(playerid),false) == 0){SetPlayerSpawnAtHaus(playerid,i);SaveHaus(i);}
    SendClientMessage(playerid,COLOR_GRUEN,"Willkommen in deiner Wohnung.");
    SetPlayerPos(playerid,Hausplaces[i][e_haus_x],Hausplaces[i][e_haus_y],Hausplaces[i][e_haus_z]);
    SetPlayerInterior(playerid,Hausplaces[i][inter]);
    SetPlayerVirtualWorld(playerid,Hausplaces[i][world]);
    }
    else
    {
    SendClientMessage(playerid,COLOR_WARN,"Die Tür ist verschlossen!");
    }
    return 1;
    }
    }
    return 1;
    }
    if (strcmp(cmd,"/exit",true) == 0)
    {
    for(new i = 0;i<sizeof(Hausplaces);i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,1.1,Hausplaces[i][e_haus_x],Hausplaces[i][e_haus_y],Hausplaces[i][e_haus_z]) && GetPlayerInterior(playerid) == Hausplaces[i][inter] && GetPlayerVirtualWorld(playerid) == Hausplaces[i][world])
    {
    if(!Hausplaces[i][verschlossen])
    {
    SetPlayerPos(playerid,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z]);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    }
    else
    {
    SendClientMessage(playerid,COLOR_WARN,"Die Tür ist verschlossen!");
    }
    return 1;
    }
    }
    return 1;
    }
    if (strcmp(cmd,"/lhaus",true) == 0)
    {
    for(new i = 0;i<sizeof(Hausplaces);i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,1.1,Hausplaces[i][haus_x],Hausplaces[i][haus_y],Hausplaces[i][haus_z]))
    {
    if(strcmp(Hausplaces[i][besitzer],Spielername(playerid),false) == 0)
    {
    if(Hausplaces[i][verschlossen]){Hausplaces[i][verschlossen] = 0;SendClientMessage(playerid,COLOR_GRUEN,"Tür aufgeschlossen.");}
    else{Hausplaces[i][verschlossen] = 1;SendClientMessage(playerid,COLOR_GRUEN,"Tür verschlossen.");}
    }
    else
    {
    SendClientMessage(playerid,COLOR_WARN,"Dieses Haus gehört nicht dir!");
    }
    return 1;
    }
    }
    return 1;
    }
    return 0;
    }
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    new tform[128];
    for(new i = 0;i<sizeof(Hausplaces);i++)
    {
    if(pickupid == Hausplaces[i][haus_id])
    {
    format(tform,sizeof tform,"~w~- ~b~Haus~w~ -~n~~b~Besitzer :~w~ %s~n~~b~Hauskosten :~w~ %d$",
    Hausplaces[i][besitzer],
    Hausplaces[i][kosten]);
    GameTextForPlayer(playerid,tform,2000,3);
    return 1;
    }
    }
    return 1;
    }
    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }
    stock Spielername(playerid)
    {
    new pp[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pp,sizeof pp);
    return pp;
    }
    stock SaveHaus(id)
    {
    new fx[128];
    format(fx,sizeof fx,"haus/haus_%d.txt",id);
    dini_Set(fx,"besitzer",Hausplaces[id][besitzer]);
    dini_IntSet(fx,"kosten",Hausplaces[id][kosten]);
    dini_IntSet(fx,"verschlossen",Hausplaces[id][verschlossen]);
    dini_IntSet(fx,"player_spawn",Hausplaces[id][player_spawn]);
    return 1;
    }
    stock SetPlayerSpawnAtHaus(playerid,id)
    {
    for(new i = 0;i<sizeof(Hausplaces);i++)
    {
    if(strcmp(Hausplaces[i][besitzer],Spielername(playerid),false) == 0)
    {
    if(Hausplaces[i][player_spawn])Hausplaces[i][player_spawn] = 0;
    }
    }
    Hausplaces[id][player_spawn] = 1;
    return 1;
    }

  • Das würde ich auch gerne wissen. Kann uns einer helfen?

    Einmal editiert, zuletzt von Alberto ()

  • Oben
    new HasHouse[MAX_PLAYERS];


    wenn er /hauskauf macht und das Haus hat
    HasHouse[playerid] = 1
    dann bei der Abfrage /hauskauf


    if(HasHouse[playerid] = 1) return SendClientMessage(playerid, Farbe, "Du hast schon ein Haus");

  • stock hasPlayerHouse(playerid)
    {
    for(new i;i<sizeof Houseplaces;i++)if(!strcmp(Hausplaces[i][besitzer],Spielername(playerid),true))return 1;
    return 0;
    }
    //und dann beim kaufen...
    if(hasPlayerHouse(playerid))return SendClientMessage(playerid,COLOR_WARN,"Du besitzt bereits ein Haus");