House help -
Micko123 - 27.11.2016
PHP код:
CMD:buyhouse(playerid)
{
for(new i; i < sizeof(HouseInfo); i++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ]))
{
if(!strcmp(HouseInfo[i][hOwnerName], "Noone", true) && HouseInfo[i][hOwnerCheck] == 0)
{
if(PlayerInfo[playerid][HouseOwner] == 1)
{
ERROR(playerid, "You are already owner of house");
return 1;
}
if(GetPlayerMoney(playerid) < HouseInfo[i][hPrice])
{
ERROR(playerid, "You don't have enough money");
return 1;
}
strmid(HouseInfo[i][hOwnerName], GetName(playerid), 0, strlen(GetName(playerid)), 255);
HouseInfo[i][hOwnerCheck] = 1;
HouseInfo[i][hLocked] = 1;
PlayerInfo[playerid][HouseOwner] = 1;
GivePlayerMoney(playerid, -HouseInfo[i][hPrice]);
UpdateHouses(i, 2);
SCM(playerid, -1, ""SERVERBLUE"Congratulations! "WHITE"You just bough a house");
new query[200];
mysql_format(g_SQL, query, sizeof(query), "UPDATE `houses` SET `OwnerCheck` = 1, `Locked` = 1, `OwnerName` = '%s'", GetName(playerid));
mysql_tquery(g_SQL, query);
mysql_format(g_SQL, query, sizeof(query), "UPDATE `players` SET `HouseOwner` = 1 WHERE `ID` = %d LIMIT 1", PlayerInfo[playerid][ID]);
mysql_tquery(g_SQL, query);
}
else
{
ERROR(playerid, "That house is not for sale");
return 1;
}
}
}
return 1;
}
When I buy house everything is changed as it should be but problem is that in DB every house has same owner and every house is owned.
When I buy house ID 1 it says that is owned by me but house ID 2 is also owned by me (even if I didn't bought it) and so on..
I know that problem is in for loop because it loops through every house but I don't know what can I change..
Re: House help -
BrianFaria - 27.11.2016
Does it mean that when you buy a house, all the houses put you owner? If so, it may be a problem of "playerid" or "i" check well.
Re: House help -
Micko123 - 27.11.2016
Yes every house is owned by me then.. but problem is that I don't know how to fix it.. If I remove for loop that will be fixed but another bug will come..
Re: House help -
Alvitr - 27.11.2016
PHP код:
mysql_format(g_SQL, query, sizeof(query), "UPDATE `houses` SET `OwnerCheck` = 1, `Locked` = 1, `OwnerName` = '%s'", GetName(playerid));
might be wrong cause it will update to all rows in table
you have to add
WHERE `house_id_field_name` = '%d'
like
PHP код:
mysql_format(g_SQL, query, sizeof(query), "UPDATE `houses` SET `OwnerCheck` = 1, `Locked` = 1, `OwnerName` = '%s' WHERE `house_id_field_name` = '%d'", GetName(playerid), i);
//or change i that is you use to house id
if you haven't that var of house_id in mysql,
create it and load it when load houses and create house
Re: House help -
BrianFaria - 27.11.2016
uhmm..
Try this.
Код:
CMD:buyhouse(playerid)
{
for(new i; i < sizeof(HouseInfo); i++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ]))
{
if(!strcmp(HouseInfo[i][hOwnerName], "Noone", true) && HouseInfo[i][hOwnerCheck] == 0)
{
if(PlayerInfo[playerid][HouseOwner] == 1)
{
ERROR(playerid, "You are already owner of house");
return 1;
}
if(GetPlayerMoney(playerid) < HouseInfo[i][hPrice])
{
ERROR(playerid, "You don't have enough money");
return 1;
}
strmid(HouseInfo[i][hOwnerName], GetName(playerid), 0, strlen(GetName(playerid)), 255);
HouseInfo[i][hOwnerCheck] = 1;
HouseInfo[i][hLocked] = 1;
PlayerInfo[i][HouseOwner] = 1;
GivePlayerMoney(playerid, -HouseInfo[i][hPrice]);
UpdateHouses(i, 2);
SCM(playerid, -1, ""SERVERBLUE"Congratulations! "WHITE"You just bough a house");
new query[200];
mysql_format(g_SQL, query, sizeof(query), "UPDATE `houses` SET `OwnerCheck` = 1, `Locked` = 1, `OwnerName` = '%s' WHERE `house_id_field_name` = '%d'", GetName(playerid), i);
mysql_tquery(g_SQL, query);
mysql_format(g_SQL, query, sizeof(query), "UPDATE `players` SET `HouseOwner` = 1 WHERE `ID` = %d LIMIT 1", PlayerInfo[playerid][ID]);
mysql_tquery(g_SQL, query);
}
else
{
ERROR(playerid, "That house is not for sale");
return 1;
}
}
}
return 1;
}
Show me the callback UpdateHouses
Re: House help -
Micko123 - 27.11.2016
Yep it is working

Both repped thank you guys