CMD:buyhouse(playerid,params[]) {
#pragma unused params
new Float:MyPos[3],string[128], query[128];
GetPlayerPos(playerid,MyPos[0],MyPos[1],MyPos[2]);
for(new x = 0; x < MAX_HOUSES;x++) {
if(IsPlayerInRangeOfPoint(playerid,2,HouseInfo[x][EnterX],HouseInfo[x][EnterY],HouseInfo[x][EnterZ])){
if(HouseInfo[x][Owned] == 0) {
if(AccInfo[playerid][HouseOwner] == 0) {
if(GetPlayerCash(playerid) < HouseInfo[x][HousePrice]) return SendClientMessage(playerid,COLOR_RED,"You dont have enough money");
HouseInfo[x][Owned] = 1;
HouseInfo[x][Locked] = 0;
GivePlayerCash(playerid,-HouseInfo[x][HousePrice]);
AccInfo[playerid][HouseOwner] = HouseInfo[x][HID];
format(string,sizeof(string),"You have purchased a house, server ID: %i for %i$",HouseInfo[x][HID],HouseInfo[x][HousePrice]);
SendClientMessage(playerid,COLOR_GREEN,string);
HouseInfo[x][Owned] = 1;
HouseInfo[x][HID] = x;
mysql_format(mysql, query, sizeof(query), "UPDATE `houses` SET `Owned`=%i,`Owner`='%e',`MasterID`=%i WHERE `ID`=%i",1,GetName(playerid),AccInfo[playerid][ID],HouseInfo[x][HID]);
mysql_tquery(mysql, query);
DestroyPickup(HouseInfo[x][HPickup]);
Delete3DTextLabel(HouseInfo[x][HouseText]);
HouseInfo[x][HPickup] = CreatePickup(1272, 1, HouseInfo[x][EnterX], HouseInfo[x][EnterY], HouseInfo[x][EnterZ]);
format(string,sizeof(string),"House Name: %s\nHouse Owner: %s\nHouse ID: %i",HouseInfo[x][HouseName],GetRoleplayName(playerid),HouseInfo[x][HID]);
HouseInfo[x][HouseText] = Create3DTextLabel(string, 0x008080FF, HouseInfo[x][EnterX], HouseInfo[x][EnterY], HouseInfo[x][EnterZ], 40.0, 0, 0);
GivePlayerCash(playerid,-HouseInfo[x][HousePrice]);
format(string,sizeof(string),"%s has purchased house ID: %i for %i$",GetName(playerid),HouseInfo[x][HID],HouseInfo[x][HousePrice]);
HousePurchaseLog(string);
print(query);
}
}
}
}
return true;
}
public OnHouseLoad()
{
new rows, fields;
cache_get_data(rows, fields, mysql);
if(rows)
{
for(new i = 0; i < rows && i < MAX_HOUSES; i++)
{
new string[128];
cache_get_field_content(i, "HouseName", string);
strreplace(string, '_', ' ');
format(HouseInfo[i][HouseName], sizeof(string), string);
cache_get_field_content(i, "Owner", string);
format(HouseInfo[i][Owner], sizeof(string), string);
new houseid;
HouseInfo[houseid][HID] = cache_get_field_content_int(i,"ID");
HouseInfo[houseid][HousePrice] = cache_get_field_content_int(i,"Price");
HouseInfo[houseid][EnterX] = cache_get_field_content_float(i,"EnterX");
HouseInfo[houseid][EnterY] = cache_get_field_content_float(i,"EnterY");
HouseInfo[houseid][EnterZ] = cache_get_field_content_float(i,"EnterZ");
HouseInfo[houseid][ExitX] = cache_get_field_content_float(i,"ExitX");
HouseInfo[houseid][ExitY] = cache_get_field_content_float(i,"ExitY");
HouseInfo[houseid][ExitZ] = cache_get_field_content_float(i,"ExitZ");
HouseInfo[houseid][VirtualWorld] = cache_get_field_content_int(i,"VirtualWorld");
HouseInfo[houseid][Interior] = cache_get_field_content_int(i,"InteriorID");
HouseInfo[houseid][Owned] = cache_get_field_content_int(i,"Owned");
HouseInfo[houseid][Garage] = cache_get_field_content_int(i,"Garage");
HouseInfo[houseid][Locked] = cache_get_field_content_int(i,"Locked");
HouseInfo[houseid][HouseBank] = cache_get_field_content_int(i,"HouseBank");
HouseInfo[houseid][FurnitureToken] = cache_get_field_content_int(i,"FurnitureToken");
HouseInfo[houseid][HMasterID] = cache_get_field_content_int(i,"MasterID");
if(HouseInfo[houseid][Owned] == 0) {
HouseInfo[houseid][HPickup] = CreatePickup(1273, 1, HouseInfo[houseid][EnterX], HouseInfo[houseid][EnterY], HouseInfo[houseid][EnterZ]);
HousesLoaded++;
format(string,sizeof(string),"House Name: %s\nHouse Owner: NO_ONE\nHouse ID: %i\nHouse Price: %i",HouseInfo[houseid][HouseName],HouseInfo[houseid][HID],HouseInfo[houseid][HousePrice]);
HouseInfo[houseid][HouseText] = Create3DTextLabel(string, 0x008080FF, HouseInfo[houseid][EnterX], HouseInfo[houseid][EnterY], HouseInfo[houseid][EnterZ], 10.0, 0, 0);
}
else if(HouseInfo[i][Owned] == 1) {
HouseInfo[houseid][HPickup] = CreatePickup(1272, 1, HouseInfo[houseid][EnterX], HouseInfo[houseid][EnterY], HouseInfo[houseid][EnterZ]);
HousesLoaded++;
format(string,sizeof(string),"House Name: %s\nHouse Owner: %s\nHouse ID: %i",HouseInfo[houseid][HouseName],HouseInfo[houseid][Owner],HouseInfo[houseid][HID]);
HouseInfo[houseid][HouseText] = Create3DTextLabel(string, 0x008080FF, HouseInfo[houseid][EnterX], HouseInfo[houseid][EnterY], HouseInfo[houseid][EnterZ], 10.0, 0, 0);
}
HousesLoaded++;
}
printf("[House System] %i houses were created...", HousesLoaded);
}
else print("No houses to be loaded..");
return true;
}
I assume that this HouseInfo[somehouserandomid][HID] should be the house ID in the database, therefore, when you buy you set HouseInfo[somehouserandomid][HID] = somehouserandomid; therefore this house's database ID would become the current in-game ID which would be different from the actual database ID.
|
change all:
HouseInfo[houseid]
to this:
HouseInfo[i]
In OnHouseLoad,
remove new houseid; and pawn Код:
|