24.03.2017, 14:24
Okay, I'm working on the house system, when I create the first house pickup, it works, then I create the second house pickup, the first is destroyed and the second is created, I see nothing wrong, I can't understand, here is my code, please take a look:
PHP код:
new CharacterHouse[MAX_HOUSES][chInfo];
enum chInfo{
chOwnerName[MAX_PLAYER_NAME],
chID,
Float:chExteriorX,
Float:chExteriorY,
Float:chExteriorZ,
Float:chExteriorA,
chExteriorVW,
Float:chInteriorX,
Float:chInteriorY,
Float:chInteriorZ,
Float:chInteriorA,
chInteriorID,
chInteriorVW,
chPickup
};
CMD:hedit(playerid, params[]){
new choice[32], houseid, amount;
if(Character[playerid][Admin] < 2) return System_Scm(playerid, PERMISSIONONLY, TYPE_ERROR);
if(sscanf(params, "s[32]ii", choice, houseid, amount)) return System_Scm(playerid, "/house [choice] [houseid] [amount DEFAULT:0]", TYPE_NOTICE), System_Scm(playerid, "choice: 'create', 'move', 'interior'. ", TYPE_NOTICE);
if(houseid < 1) return System_Scm(playerid, "House ID can lon hon 0.", TYPE_ERROR);
if(!strcmp(choice, "create")){
if(CharacterHouse[houseid][chID] != 0) return System_Scm(playerid, "This house was created.", TYPE_ERROR);
new Float:X, Float:Y, Float:Z, Float:A, exVW;
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, A);
exVW = GetPlayerVirtualWorld(playerid);
CreateHouse(houseid, X, Y, Z, A, exVW);
}
else if(!strcmp(choice, "move")){
if(CharacterHouse[houseid][chID] == 0) return System_Scm(playerid, "This house was not created.", TYPE_ERROR);
new Float:X, Float:Y, Float:Z, Float:A, exVW;
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, A);
exVW = GetPlayerVirtualWorld(playerid);
MoveHouse(houseid, X, Y, Z, A, exVW);
}
else if(!strcmp(choice, "interior")){
GetPlayerPos(playerid, CharacterHouse[houseid][chInteriorX], CharacterHouse[houseid][chInteriorY], CharacterHouse[houseid][chInteriorZ]);
GetPlayerFacingAngle(playerid, CharacterHouse[houseid][chInteriorA]);
CharacterHouse[houseid][chInteriorID] = GetPlayerInterior(playerid);
CharacterHouse[houseid][chInteriorVW] = houseid;
}
return 1;
}
CreateHouse(houseid, Float:hPosX, Float:hPosY, Float:hPosZ, Float:entranceFA, hVW){
new query[256];
DestroyPickup(CharacterHouse[houseid][chPickup]);
CharacterHouse[houseid][chPickup] = CreatePickup(1273, 23, hPosX, hPosY, hPosZ-0.3, hVW);
CharacterHouse[houseid][chID] = houseid;
CharacterHouse[houseid][chExteriorX] = hPosX;
CharacterHouse[houseid][chExteriorY] = hPosY;
CharacterHouse[houseid][chExteriorZ] = hPosZ;
CharacterHouse[houseid][chExteriorA] = entranceFA;
CharacterHouse[houseid][chExteriorVW] = hVW;
mysql_format(MHandle, query, sizeof(query), "INSERT INTO `houses` (`ID`, `OwnerName`, `ExteriorX`, `ExteriorY`, `ExteriorZ`, `ExteriorAngle`) VALUES (%d, '%e', %0.4f, %0.4f, %0.4f, %0.4f)",
CharacterHouse[houseid][chID],
CharacterHouse[houseid][chOwnerName],
CharacterHouse[houseid][chExteriorX],
CharacterHouse[houseid][chExteriorY],
CharacterHouse[houseid][chExteriorZ],
CharacterHouse[houseid][chExteriorA]);
mysql_query(MHandle, query);
printf(query);
return 1;
}
MoveHouse(houseid, Float:hPosX, Float:hPosY, Float:hPosZ, Float:entranceFA, hVW){
new query[256];
DestroyPickup(CharacterHouse[houseid][chPickup]);
CharacterHouse[houseid][chPickup] = CreatePickup(1273, 23, hPosX, hPosY, hPosZ-0.3, hVW);
CharacterHouse[houseid][chID] = houseid;
CharacterHouse[houseid][chExteriorX] = hPosX;
CharacterHouse[houseid][chExteriorY] = hPosY;
CharacterHouse[houseid][chExteriorZ] = hPosZ;
CharacterHouse[houseid][chExteriorA] = entranceFA;
CharacterHouse[houseid][chExteriorVW] = hVW;
mysql_format(MHandle, query, sizeof(query), "UPDATE `houses` SET `ExteriorX` = %0.4f, `ExteriorY` = %0.4f, `ExteriorZ` = %0.4f, `ExteriorAngle` = %0.4f, `ExteriorVW` = %d WHERE `ID` = %d LIMIT 1",
CharacterHouse[houseid][chExteriorX],
CharacterHouse[houseid][chExteriorY],
CharacterHouse[houseid][chExteriorZ],
CharacterHouse[houseid][chExteriorA],
CharacterHouse[houseid][chExteriorVW],
CharacterHouse[houseid][chID]);
mysql_query(MHandle, query);
printf(query);
return 1;
}