Stefan's House System v1.1 Bugs
#1

Hi i saw some bugs in Stefan's House System v1.1 i need help plz
(1)If I lock the house it say the house locked buti can enter it
(2)when i type any cmd from this house system it say unknown cmd and it work then
(3)when i type /sellhouse and price it sell but the owner house name didn't delete

here the fs
pawn Код:
/*
 -------------------------------------------
|         _____ _        __                 |
|        / ____| |      / _|                |
|       | (___ | |_ ___| |_ __ _ _ __       |
|        \___ \| __/ _ \  _/ _` | '_ \      |
|        ____) | ||  __/ || (_| | | | |     |
|       |_____/ \__\___|_| \__,_|_| |_|     |
|                                           |
|        **   House System v1.0   **        |
|                                           |
 -------------------------------------------
      .:: Do not remove Credits ::.
*/


#include <a_samp>
#include <Dini>
#include <dudb>
#include <utils>

new FALSE = false;
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
#define SendFormattedMessage(%0,%1,%2) do{new _str[128]; format(_str,128,%2); SendClientMessage(%0,%1,_str);}while(FALSE)

#define COLOR_WHITE             0xFFFFFFAA
#define COLOR_LIME              0x80FF00AA

#define MAX_HOUSES              100     // Max houses allowed to be created
#define PTP_RADIUS              2.0     // Radius of PlayerToPoint Function

forward SavePlayerHouse(houseid);
forward ReadPlayerHouseData(playerid);
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);

new Timer[1];

enum hInfo
{
    hName[24],
    hSellable,
    hSell,
    hRent,
    hLevel,
    hPickup,
    Float:hExitX,
    Float:hExitY,
    Float:hExitZ,
    hVirtualWorld,
    hLocked
};
new HouseInfo[MAX_HOUSES][hInfo];

new Float:HousesCoords[13][3] = {
{222.9534, 1287.7649, 1082.1406},   // Sml - 1 bedroom
{261.0827, 1284.6899, 1080.2578},   // Sml - 1 bedroom
{260.6734, 1237.7909, 1084.2578},   // Sml - 1 bedroom
{376.7426, 1417.3226, 1081.3281},   // Sml - 1 bedroom
{295.2874, 1473.2769, 1080.2578},   // Med - 2 bedroom
{327.9431, 1478.3801, 1084.4375}, // Med - 2 bedroom
{2270.1050, -1210.3917, 1047.5625},   // Med - 2 bedroom
{447.1211, 1397.8444, 1084.3047},   // Med - 2 bedroom
{2196.0063, -1204.6326, 1049.0234}, // Lrg - 3 bedroom
{235.3416, 1187.2882, 1080.2578},   // Lrg - 3 bedroom
{490.9987, 1399.4164, 1080.2578},   // Lrg - 3 bedroom
{227.1212, 1114.1840, 1080.9972},   // Lrg - 4 bedroom
{225.6624, 1022.5345, 1084.0145}    // Xlrg - 4 bedrooms
};

new HousesLevels[13][2] = {
{1, 2000},    // Sml - 1 bedroom
{4, 4500},    // Sml - 1 bedroom
{9, 7000},    // Sml - 1 bedroom
{15, 10000},  // Sml - 1 bedroom
{15, 17000},  // Med - 2 bedroom
{15, 23000},  // Med - 2 bedroom
{10, 34000},  // Med - 2 bedroom
{2, 62000},   // Med - 2 bedroom
{6, 102000},  // Lrg - 3 bedroom
{3, 156000},  // Lrg - 3 bedroom
{2, 188000},  // Lrg - 3 bedroom
{5, 235000},   // Lrg - 4 bedroom
{7, 295000}   // Xlrg - 4 bedrooms
};

public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print("Stefan's House System");
    print("--------------------------------------\n");
   
    for(new i = 0; i <= MAX_PLAYERS; i++)
    {
        Timer[0] = SetTimerEx("ReadPlayerHouseData", 1000, true, "%i", i);
    }
    for(new h = 0; h <= MAX_HOUSES; h++) // Player Homes
    {
        LoadPlayerHouse(h);
    }
    return true;
}

public OnFilterScriptExit()
{
    KillTimer(Timer[0]);
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    dcmd(househelp,9,cmdtext);
    dcmd(houseinfo,9,cmdtext);
    dcmd(enter,5,cmdtext);
    dcmd(exit,4,cmdtext);
    /*dcmd(evict,5,cmdtext);
    dcmd(renthouse,9,cmdtext);
    dcmd(unrenthouse,11,cmdtext);
    dcmd(tenants,7,cmdtext);*/

    dcmd(house,5,cmdtext);
    dcmd(lockhouse,9,cmdtext);
    dcmd(unlockhouse,11,cmdtext);
    dcmd(rentprice,9,cmdtext);
    dcmd(buyhouse,8,cmdtext);
    dcmd(sellhouse,9,cmdtext);
    dcmd(unsellhouse,11,cmdtext);
    dcmd(createhouse,11,cmdtext);
    dcmd(destroyhouse,12,cmdtext);
   
    return false;
}

///////////////////////////////////////
//     Buisness + Homes Functions
//////////////////////////////////////

stock CreatePlayerHouse(playerid, sellprice, HouseLvl)
{
    if((ReturnNextUnusedHouseID()-1) >= MAX_HOUSES) return SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: Maximum amount of houses on the server have been created.");
    new house[64], Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z);
    new NextHouseID = ReturnNextUnusedHouseID();
    new World = ReturnNextUnusedVirtualWorld();
   
    format(house, sizeof(house), "/Houses/%d.dini.save", NextHouseID);
   
    if(!dini_Exists(house)){
        dini_Create(house);
        dini_Set(house, "Name", "None");
        dini_IntSet(house, "For_Sell", 1);
        dini_IntSet(house, "Sell_Price", sellprice);
        dini_IntSet(house, "Rent_Price", 1000);
        dini_IntSet(house, "House_Level", HouseLvl);
        dini_FloatSet(house,"Exit_Coord:X", X);
        dini_FloatSet(house,"Exit_Coord:Y", Y);
        dini_FloatSet(house,"Exit_Coord:Z", Z);
        dini_IntSet(house, "VirtualWorld", World);
        dini_IntSet(house, "Status", 0);
        LoadPlayerHouse(NextHouseID);
        SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: House has been Successfully created.");
    }
    return true;
}

stock LoadPlayerHouse(houseid)
{
    new house[64]; format(house, sizeof(house), "/Houses/%d.dini.save", houseid);
    if(dini_Exists(house)){
        format(HouseInfo[houseid][hName], MAX_PLAYER_NAME, "%s", dini_Get(house, "Name"));
        HouseInfo[houseid][hSellable]     =  dini_Int(house, "For_Sell");
        HouseInfo[houseid][hSell]         =  dini_Int(house, "Sell_Price");
        HouseInfo[houseid][hRent]         =  dini_Int(house, "Rent_Price");
        HouseInfo[houseid][hLevel]        =  dini_Int(house, "House_Level");
        HouseInfo[houseid][hExitX]        =  dini_Float(house, "Exit_Coord:X");
        HouseInfo[houseid][hExitY]        =  dini_Float(house, "Exit_Coord:Y");
        HouseInfo[houseid][hExitZ]        =  dini_Float(house, "Exit_Coord:Z");
        HouseInfo[houseid][hVirtualWorld] =  dini_Int(house, "VirtualWorld");
        HouseInfo[houseid][hLocked]       =  dini_Int(house, "Status");
       
        if(HouseInfo[houseid][hSellable] == 1){
            HouseInfo[houseid][hPickup] = CreatePickup(1273, 23, HouseInfo[houseid][hExitX], HouseInfo[houseid][hExitY], HouseInfo[houseid][hExitZ]); // not bought
        } else {
            HouseInfo[houseid][hPickup] = CreatePickup(1272,23, HouseInfo[houseid][hExitX], HouseInfo[houseid][hExitY], HouseInfo[houseid][hExitZ]); // bought
        }
    }
    return true;
}

public SavePlayerHouse(houseid)
{
    new house[64]; format(house, sizeof(house), "/Houses/%d.dini.save", houseid);
    if(dini_Exists(house)){
        dini_Set(house, "Name", HouseInfo[houseid][hName]);
        dini_IntSet(house, "For_Sell", HouseInfo[houseid][hSellable]);
        dini_IntSet(house, "Sell_Price", HouseInfo[houseid][hSell]);
        dini_IntSet(house, "Rent_Price", HouseInfo[houseid][hRent]);
        dini_IntSet(house, "House_Level", HouseInfo[houseid][hLevel]);
        dini_FloatSet(house, "Exit_Coord:X", HouseInfo[houseid][hExitX]);
        dini_FloatSet(house, "Exit_Coord:Y", HouseInfo[houseid][hExitY]);
        dini_FloatSet(house, "Exit_Coord:Z", HouseInfo[houseid][hExitZ]);
        dini_IntSet(house, "VirtualWorld", HouseInfo[houseid][hVirtualWorld]);
        dini_IntSet(house, "Status", HouseInfo[houseid][hLocked]);
    }
    return true;
}

stock ReturnNextUnusedHouseID()
{
    new house[64];
    for(new h = 0; h <= MAX_HOUSES; h++){
        format(house, sizeof(house), "/Houses/%d.dini.save", h);
        if(!dini_Exists(house)) return h; }
    return true;
}

stock ReturnNextUnusedVirtualWorld()
{
    new house[64]; // Please do not make more then 255 houses because that is the Maximum Virtual Worlds. Or use as many as you want in 0.3
    format(house, sizeof(house), "/Houses/%d.dini.save", ReturnNextUnusedHouseID()-1);
    return dini_Int(house, "VirtualWorld")+1;
}

public ReadPlayerHouseData(playerid)
{
    new string[256], house[64];
    for(new h = 0; h <= MAX_HOUSES; h++){
        format(house, sizeof(house), "/Houses/%d.dini.save", h);
        if(dini_Exists(house)){
            if(HouseInfo[h][hSellable] == 1){
                if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])) {
                    format(string, sizeof(string), "~g~] House for Sale ]~n~~w~Owner:~y~ %s~n~~w~Level:~r~ %d~n~~w~Sell Price:~r~ %d~n~~w~Rent Cost:~r~ %d", HouseInfo[h][hName], HouseInfo[h][hLevel], HouseInfo[h][hSell], HouseInfo[h][hRent]);
                    GameTextForPlayer(playerid,string, 1500, 3);
                }
            } else if(HouseInfo[h][hSellable] == 0){
                if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])) {
                    format(string, sizeof(string), "~w~Owner:~y~ %s~n~~w~Level:~r~ %d~n~~w~Rent Cost:~r~ %d", HouseInfo[h][hName], HouseInfo[h][hLevel], HouseInfo[h][hRent]);
                    GameTextForPlayer(playerid,string, 1500, 3);
                } } } }
}

stock DestroyPlayerHouse(playerid, houseid)
{
    new house[64];
    format(house, sizeof(house), "/Houses/%d.dini.save", houseid);
    if(dini_Exists(house)){
        dini_Remove(house);
        DestroyPickup(HouseInfo[houseid][hPickup]);
        SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: The given house has been destroyed.");
    } else return SendClientMessage(playerid, COLOR_WHITE, ".:: [ERROR]: The given house id does not exsist so it cannot be destroyed.");
    return false;
}

///////////////////////////
//     Dcmd Commands
//////////////////////////

dcmd_househelp(playerid,params[]) {
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        SendClientMessage(playerid, COLOR_WHITE,"[HOUSE OWNER]: /(un)sellhouse, /(un)lockhouse, /rentprice, /tenants, /evict, /house (upgrade/downgrade)");
        SendClientMessage(playerid, COLOR_WHITE,"[HOUSE PLAYERS]: /houseinfo, /buyhouse, /(un)renthouse, /enter, /exit");
    }
    return true;
}

dcmd_houseinfo(playerid,params[]) {
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        for(new h = 0; h <= MAX_HOUSES; h++){
            if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])){
                new IsLocked[24];
                if(HouseInfo[h][hLocked] == 1) { IsLocked = "True"; } else { IsLocked = "False"; }
                SendClientMessage(playerid, COLOR_LIME,"HOUSE STATS ----------------------------------------------------------");
                SendFormattedMessage(playerid, COLOR_WHITE, "Owner: %s - Level[%d] - RentCost[$%d] - SellPrice[$%d]", HouseInfo[h][hName], HouseInfo[h][hLevel], HouseInfo[h][hRent], HouseInfo[h][hSell]);
                SendFormattedMessage(playerid, COLOR_WHITE, "IsLocked[%s] - HouseID[%d] - ExitCoords[X:%.4f, Y:%.4f, Z:%.4f]", IsLocked, h, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ]);
                SendClientMessage(playerid, COLOR_LIME,"----------------------------------------------------------");
            } } }
    return true;
}

dcmd_enter(playerid,params[]) {
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        for(new h = 0; h <= MAX_HOUSES; h++){
            if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])){
                new Level = HouseInfo[h][hLevel];
                if(HouseInfo[h][hLocked] == 1 && strcmp(HouseInfo[h][hName],GetName(playerid), false ) != 0) return SendClientMessage(playerid, COLOR_WHITE,  ".:: [HOUSE]: This house has been locked by the owner.");
                SetPlayerPos(playerid, HousesCoords[Level][0], HousesCoords[Level][1], HousesCoords[Level][2]);
                SetPlayerInterior(playerid, HousesLevels[Level][0]); SetPlayerVirtualWorld(playerid, HouseInfo[h][hVirtualWorld]);
            } } }
    return true;
}

dcmd_exit(playerid,params[]) {
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        for(new h = 0; h <= MAX_HOUSES; h++){
            if(PlayerToPoint(PTP_RADIUS, playerid, HousesCoords[HouseInfo[h][hLevel]][0], HousesCoords[HouseInfo[h][hLevel]][1], HousesCoords[HouseInfo[h][hLevel]][2])){
            SetPlayerPos(playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ]);
            SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0);
            } } }
}

/*dcmd_evict(playerid,params[]) { // This needs to be intergrated with your players .ini account
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        new giveplayerid;
        if(sscanf(params, "i", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /evict [id]");
        if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "The given player does not exist");
       
        for(new h = 0; h <= MAX_HOUSES; h++){
            if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])){
                if(strcmp(HouseInfo[h][hName],GetName(playerid), false ) == 0){
                    if(PlayerInfo[giveplayerid][pHouse] != h) return SendClientMessage(playerid, COLOR_WHITE, ".:: [ERROR]: This player is not renting your house.");
                    PlayerInfo[giveplayerid][pHouse] = -1; PlayerUpdate(giveplayerid);
                    SendFormattedMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You have evicted %s[%d] from your house.", GetName(giveplayerid), giveplayerid);
                } else return SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You are not the owner of this house.");
            } } }
    return true;
}

dcmd_tenants(playerid,params[]) { // This needs to be intergrated with your players .ini account
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        for(new i = 0; i <= MAX_PLAYERS; i++){
            for(new h = 0; h <= MAX_HOUSES; h++){
                if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])){
                    if(PlayerInfo[i][pHouse] == h){
                        if(strcmp(HouseInfo[h][hName],GetName(playerid), false ) == 0){
                            PlayerInfo[giveplayerid][pHouse] = -1;
                            SendClientMessage(playerid, COLOR_LIME, "_---- Tenants ----");
                            SendFormattedMessage(playerid, COLOR_WHITE, "%s[%d]", GetName(i), i);
                        } else return SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You are not the owner of this house.");
                    } } } } }
    return true;
}

dcmd_renthouse(playerid,params[]) { // This needs to be intergrated with your players .ini account
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        for(new h = 0; h <= MAX_HOUSES; h++){
            if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])){
                if(HouseInfo[h][hName] == "Name") return SendClientMessage(playerid, COLOR_WHITE, ".:: [ERROR]: No one has bought this house so you cannot rent from here.");
                if(PlayerInfo[playerid][pHouse] != -1) return SendClientMessage(playerid, COLOR_WHITE, ".:: [ERROR]: You are allready renting a house. Use /unrenthouse to stop renting there.");
                PlayerInfo[playerid][pHouse] = h; PlayerUpdate(giveplayerid);
                SendFormattedMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You are now renting from %s.", HouseInfo[h][hName]);
            } } }
    return true;
}

dcmd_unrenthouse(playerid,params[]) { // This needs to be intergrated with your players .ini account
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        if(PlayerInfo[playerid][pHouse] == -1) return SendClientMessage(playerid, COLOR_WHITE, ".:: [ERROR]: You are not renting a house.");
        PlayerInfo[playerid][pHouse] = -1; PlayerUpdate(giveplayerid);
        SendFormattedMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You are not renting from %s anymore.", HouseInfo[h][hName]);
        }
    return true;
}
*/


dcmd_buyhouse(playerid,params[]) {
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        for(new h = 0; h <= MAX_HOUSES; h++){
            if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])){
                if(strcmp(HouseInfo[h][hName],GetName(playerid), false ) != 0){
                    if(HouseInfo[h][hSellable] == 1){
                        if(GetPlayerMoney(playerid) < HouseInfo[h][hSell]) return SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You do not have anough money to buy this house.");
                        DestroyPickup(HouseInfo[h][hPickup]);
                        HouseInfo[h][hPickup] = CreatePickup(1272,23, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ]); // bought
                        HouseInfo[h][hSellable] = 0; GivePlayerMoney(playerid, -HouseInfo[h][hSell]);
                        format(HouseInfo[h][hName], 24, "%s", GetName(playerid)); SavePlayerHouse(h);
                    } else return SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: This house is not for sale.");
                } else return SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You are cannot buy the house you are selling.");
            } } }
    return true;
}

dcmd_rentprice(playerid,params[]) {
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        new Price;
        if(sscanf(params, "i", Price)) return SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /rentprice [rentprice]");
        if(Price < 0 || Price > 10000) return SendClientMessage(playerid, COLOR_WHITE, "You cannot set the rent price below 0 or above 10k");
        for(new h = 0; h <= MAX_HOUSES; h++){
            if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])){
                if(strcmp(HouseInfo[h][hName],GetName(playerid), false ) == 0){
                    HouseInfo[h][hRent] = Price; SavePlayerHouse(h);
                } else return SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You are not the owner of this house.");
            } } }
    return true;
}

dcmd_house(playerid,params[]) {
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        new tmp[64];
        if(sscanf(params, "s", tmp)) return SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /house (upgrade/downgrade)");
        SendFormattedMessage(playerid, COLOR_WHITE, "Houses: 0[%d], 1[%d], 2[%d], 3[%d], 4[%d], 5[%d], 6[%d]", HousesLevels[0][1], HousesLevels[1][1], HousesLevels[2][1], HousesLevels[3][1], HousesLevels[4][1], HousesLevels[5][1], HousesLevels[6][1]);
        SendFormattedMessage(playerid, COLOR_WHITE, "7[%d], 8[%d], 9[%d], 10[%d], 11[%d], 12[%d]", HousesLevels[7][1], HousesLevels[8][1], HousesLevels[9][1], HousesLevels[10][1], HousesLevels[11][1], HousesLevels[12][1]);
        if(strlen(tmp) == strlen("upgrade")){
            for(new h = 0; h <= MAX_HOUSES; h++){
                if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])){
                    if(strcmp(HouseInfo[h][hName],GetName(playerid), false ) == 0){
                        if(HouseInfo[h][hLevel]+1 > 12) return SendClientMessage(playerid, COLOR_WHITE, "You cannot set your house lvl above 12");
                        new Level = HousesLevels[HouseInfo[h][hLevel]+1][1];
                        SendFormattedMessage(playerid, COLOR_WHITE, "You have added improvments to your house that costs $%d", Level);
                        HouseInfo[h][hLevel] = (HouseInfo[h][hLevel]+1); GivePlayerMoney(playerid, -Level);
                        SavePlayerHouse(h);
                    } else return SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You are not the owner of this house."); } }
        }
        if(strlen(tmp) == strlen("downgrade")){
            for(new h = 0; h <= MAX_HOUSES; h++){
                if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])){
                    if(strcmp(HouseInfo[h][hName],GetName(playerid), false ) == 0){
                        if(HouseInfo[h][hLevel]-1 < 0) return SendClientMessage(playerid, COLOR_WHITE, "You cannot set your house lvl below 0");
                        new Level = HousesLevels[HouseInfo[h][hLevel]-1][1];
                        SendFormattedMessage(playerid, COLOR_WHITE, "You have removed improvments done to your house and have been refunded $%d", Level);
                        HouseInfo[h][hLevel] = (HouseInfo[h][hLevel]-1); GivePlayerMoney(playerid, Level);
                        SavePlayerHouse(h);
                    } else return SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You are not the owner of this house."); } }
        }
    }
    return true;
}

dcmd_lockhouse(playerid,params[]) {
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        for(new h = 0; h <= MAX_HOUSES; h++){
            if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])){
                if(strcmp(HouseInfo[h][hName],GetName(playerid), false ) == 0){
                    if(HouseInfo[h][hLocked] == 1) return SendClientMessage(playerid, COLOR_WHITE, ".:: [ERROR]: This house is allready locked.");
                    HouseInfo[h][hLocked] = 1; SavePlayerHouse(h);
                    SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You house has been locked.");
                } else return SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You are not the owner of this house.");
            } } }
    return true;
}

dcmd_unlockhouse(playerid,params[]) {
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        for(new h = 0; h <= MAX_HOUSES; h++){
            if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])){
                if(strcmp(HouseInfo[h][hName],GetName(playerid), false ) == 0){
                    if(HouseInfo[h][hLocked] == 0) return SendClientMessage(playerid, COLOR_WHITE, ".:: [ERROR]: This house is allready unlocked.");
                    HouseInfo[h][hLocked] = 0; SavePlayerHouse(h);
                    SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You house has been unlocked.");
                } else return SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You are not the owner of this house.");
            } } }
    return true;
}

dcmd_sellhouse(playerid,params[]) {
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        new Sell;
        if(sscanf(params, "i", Sell)) return SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /sellhouse [sellprice]");
        if(Sell < 0 || Sell > 5000000) return SendClientMessage(playerid, COLOR_WHITE, "You cannot set the sell price below 0 or above 5 Mill");
        for(new h = 0; h <= MAX_HOUSES; h++){
            if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])){
                if(strcmp(HouseInfo[h][hName],GetName(playerid), false ) == 0){
                    DestroyPickup(HouseInfo[h][hPickup]);
                    HouseInfo[h][hPickup] = CreatePickup(1273, 23, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ]); // not bought
                    HouseInfo[h][hSellable] = 1; HouseInfo[h][hSell] = Sell; SavePlayerHouse(h);
                } else return SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You are not the owner of this house.");
            } } }
    return true;
}

dcmd_unsellhouse(playerid,params[]) {
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        for(new h = 0; h <= MAX_HOUSES; h++){
            if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])){
                if(strcmp(HouseInfo[h][hName],GetName(playerid), false ) == 0){
                    DestroyPickup(HouseInfo[h][hPickup]);
                    HouseInfo[h][hPickup] = CreatePickup(1272,23, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ]); // bought
                    HouseInfo[h][hSellable] = 0; SavePlayerHouse(h);
                } else return SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You are not the owner of this house.");
            } } }
    return true;
}

dcmd_createhouse(playerid,params[]) {
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        //if(PlayerInfo[playerid][pAdmin] < 10) return SendClientMessage(playerid,COLOR_WHITE,"SERVER: Unknown command.");
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Only admins allowed to use this command");
        new Sell, lvl;
        if(sscanf(params, "ii", Sell, lvl)) return SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /createhouse [sellprice] [HouseLvl]");
        if(Sell < 0 || Sell > 5000000) return SendClientMessage(playerid, COLOR_WHITE, "You cannot set the sell price below 0 or above 5 Mill");
        if(lvl < 0 || lvl > 12) return SendClientMessage(playerid, COLOR_WHITE, "You cannot create a house lvl that is below 0 or above 12");
        CreatePlayerHouse(playerid, Sell, lvl); }
    return true;
}

dcmd_destroyhouse(playerid,params[]) {
    #pragma unused params
    if(IsPlayerConnected(playerid)){
        //if(PlayerInfo[playerid][pAdmin] < 10) return SendClientMessage(playerid,COLOR_WHITE,"SERVER: Unknown command.");
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Only admins allowed to use this command");
        new houseid;
        if(sscanf(params, "i", houseid)) return SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /destroyhouse [houseid]");
        DestroyPlayerHouse(playerid, houseid);}
    return true;
}

///////////////////////////
//   Standard Functions
//////////////////////////

stock GetName(playerid)
{
    new pname[MAX_PLAYER_NAME]; pname="Invalid PlayerID";
    if(IsPlayerConnected(playerid)) {
        GetPlayerName(playerid, pname, sizeof (pname));
    }
    return pname;
}

public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x); tempposy = (oldposy -y); tempposz = (oldposz -z);
    if(((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    { return true; }
    return false;
}
plz help fast
Reply
#2

Ask for support in Stefan's release thread
Reply
#3

ok i will
Reply
#4

no one answer
Reply
#5

Well, then use another one!
Reply
#6

i tried carhouse it say can't read dini file but i already have dini file and the auther is old topic and it don't work plz help
Reply
#7

help me plz
Reply
#8

Do you know what means "cannot read from Dini" ?
Reply
#9

yes i know why u ask i am talikng about the bugs
Reply
#10

To solve the error of dini
Download the newest include, Open the Folder of the currently pawno software you use, extract the include, Then go to the folder of pawno that you use, with the new include, open it pawno.exe, Then open the fs And Hit F5
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)