House help
#1

PHP код:
CMD:buyhouse(playerid)
{
    for(new 
isizeof(HouseInfo); i++)
    {
        if(
IsPlayerInRangeOfPoint(playerid3.0HouseInfo[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), 0strlen(GetName(playerid)), 255);
                
HouseInfo[i][hOwnerCheck] = 1;
                
HouseInfo[i][hLocked] = 1;
                
PlayerInfo[playerid][HouseOwner] = 1;
                
GivePlayerMoney(playerid, -HouseInfo[i][hPrice]);
                
UpdateHouses(i2);
                
SCM(playerid, -1""SERVERBLUE"Congratulations! "WHITE"You just bough a house");
                new 
query[200];
                
mysql_format(g_SQLquerysizeof(query), "UPDATE `houses` SET `OwnerCheck` = 1, `Locked` = 1, `OwnerName` = '%s'"GetName(playerid));
                
mysql_tquery(g_SQLquery);
                
mysql_format(g_SQLquerysizeof(query), "UPDATE `players` SET `HouseOwner` = 1 WHERE `ID` = %d LIMIT 1"PlayerInfo[playerid][ID]);
                
mysql_tquery(g_SQLquery);
            }
            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..
Reply
#2

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.
Reply
#3

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..
Reply
#4

PHP код:
mysql_format(g_SQLquerysizeof(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_SQLquerysizeof(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
Reply
#5

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
Reply
#6

Yep it is working Both repped thank you guys
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)