CMD:createhouse(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] >= 4)
{
new Float:IX, Float:IY, Float:IZ, Float:EX, Float:EY, Float:EZ, interior, price, hprice, Float:hexteriorX, Float:hexteriorY, Float:hexteriorZ, Float:hinteriorX, Float:hinteriorY, Float:hinteriorZ, hinteriorInt, hlocked;
if(sscanf(params, "fffdd", IX, IY, IZ, interior, price)) return SendClientMessage(playerid, COLOR_ORANGE, "/createhouse [Interior X], [Interior Y], [Interior Z], interiorID, price");
GetPlayerPos(playerid, EX, EY, EZ);
new houseid = -1;
for(new i = 1; i < MAX_HOUSES; i++)
{
if(HouseInfo[houseid][EPosX] == 1)
{
houseid = i;
break;
}
}
format(String, sizeof(String), "INSERT INTO houses (owner, price, exteriorX, exteriorY, exteriorZ, interiorX, interiorY, interiorZ, interiorInt, locked) VALUES");
format(String, sizeof(String), "%s (%d, %f, %f, %f, %f, %f, %f, %d, '1')", String, hprice, hexteriorX, hexteriorY, hexteriorZ, hinteriorX, hinteriorY, hinteriorZ, hinteriorInt, hlocked);
mysql_query(String);
SendClientMessage(playerid, COLOR_WHITE, "House created!");
HouseInfo[houseid][HID] = mysql_insert_id();
HouseInfo[houseid][Price] = hprice;
HouseInfo[houseid][EPosX] = hexteriorX;
HouseInfo[houseid][EPosY] = hexteriorY;
HouseInfo[houseid][EPosZ] = hexteriorZ;
HouseInfo[houseid][IPosX] = hinteriorX;
HouseInfo[houseid][IPosY] = hinteriorY;
HouseInfo[houseid][IPosZ] = hinteriorZ;
HouseInfo[houseid][Interior] = hinteriorInt;
HouseInfo[houseid][Locked] = hlocked;
CreatePickup(1273, 1, hexteriorX, hexteriorY, hexteriorZ, -1);
Create3DTextLabel("[House]\nNot owned", COLOR_ORANGE, hexteriorX, hexteriorY, hexteriorZ, 40.0, 0, 0);
}
return true;
}
OnPlayerCommandReceived(playerid, cmdtext[])
OnPlayerCommandPerformed(playerid, cmdtext[], success)
if(HouseInfo[houseid][EPosX] == 1)
if(HouseInfo[i][EPosX] == 1)
CMD:createhouse(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] >= 4)
{
new Float:IX, Float:IY, Float:IZ, Float:EX, Float:EY, Float:EZ, interior, price, locked;
if(sscanf(params, "fffdd", IX, IY, IZ, interior, price)) return SendClientMessage(playerid, COLOR_ORANGE, "/createhouse [Interior X], [Interior Y], [Interior Z], interiorID, price");
GetPlayerPos(playerid, EX, EY, EZ);
new houseid = -1;
for(new i = 1; i < MAX_HOUSES; i++)
{
if(HouseInfo[i][EPosX] == 1)
{
houseid = i;
break;
}
}
format(String, sizeof(String), "INSERT INTO houses (price, EPosX, EPosY, EPosZ, IPosX, IPosY, IPosZ, Interior, Locked) VALUES");
format(String, sizeof(String), "%s (%d, %f, %f, %f, %f, %f, %f, %d, '1')", String, price, EX, EY, EZ, IX, IY, IZ, interior, locked);
mysql_query(String);
SendClientMessage(playerid, COLOR_WHITE, "House created!");
HouseInfo[houseid][HID] = mysql_insert_id();
HouseInfo[houseid][Price] = price;
HouseInfo[houseid][EPosX] = EX;
HouseInfo[houseid][EPosY] = EY;
HouseInfo[houseid][EPosZ] = EZ;
HouseInfo[houseid][IPosX] = IX;
HouseInfo[houseid][IPosY] = IY;
HouseInfo[houseid][IPosZ] = IZ;
HouseInfo[houseid][Interior] = interior;
HouseInfo[houseid][Locked] = locked;
//CreatePickup(1273, 1, hexteriorX, hexteriorY, hexteriorZ, -1);
//Create3DTextLabel("[House]\nNot owned", COLOR_ORANGE, hexteriorX, hexteriorY, hexteriorZ, 40.0, 0, 0);
}
return true;
}
if (houseid == -1) return SendClientMessage(playerid, -1, "No more house slots available.");
It seems like only EPosX has been saved as float and the rest as integers. Are you sure the datatype of the rest in the table is FLOAT as well as for EPosX field?
In order to prevent a run time error 4 again if the slots are full, after the loop: pawn Код:
|
for(new i = 1; i < MAX_HOUSES; i++)
{
if(HouseInfo[i][EPosX] == 1)
{
houseid = i;
break;
}
}