Pickup error
#1

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;
} 
Reply
#2

Why do you have DestroyPickup(CharacterHouse[houseid][chPickup]); In CreateHouse?
Reply
#3

Quote:
Originally Posted by jasperschellekens
Посмотреть сообщение
Why do you have DestroyPickup(CharacterHouse[houseid][chPickup]); In CreateHouse?
Because it may have the same pickup which is already created, so I destroy it just in case.
Reply
#4

I think thats the reason why it destroys it.
Try to remove it and test if it works.
Reply
#5

Okay. But I just wonder why the houseid input is different everytime I type, but it destroy another pickup.
Reply
#6

I typed /hedit move 2 [amount: 1] and now, here it is. It doesn't destroy pickup of the same house id.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)