House doesn't save
#1

Can someone maybe help me out? This is mine house system but it doesn't save in the mysql... Thanks for your advise

PHP код:
command(createhouseplayeridparams[])
{
    new 
Usage[128], string[128];
    if(
sscanf(params"z"Usage))
    {
        if(
AdminLoggedIn[playerid] == && Player[playerid][Adminlevel] >= 6)
        {
            
SendClientMessage(playeridWHITE"SYNTAX: /createhouse [usage]");
            
SendClientMessage(playeridGREY"Usage: Interior, Exterior, Spawn or Complete.");
        }
        else
        {
            
RemoveTextMessage(playerid);
            
TextDrawShowForPlayer(playeridText:CantCommand);
            
SetTimerEx("RemoveTextMessage"3500false"d"playerid);
        }
    }
    else
    {
        if(
AdminLoggedIn[playerid] == && Player[playerid][Adminlevel] >= 6)
        {
            if(
strcmp(Usage"exterior"true) == 0)
            {
                
Player[playerid][HouseExterior]++;
                
Player[playerid][hExtID] = GetPlayerInterior(playerid);
                
GetPlayerFacingAngle(playeridPlayer[playerid][hExtA]);
                
GetPlayerPos(playeridPlayer[playerid][hExtX], Player[playerid][hExtY], Player[playerid][hExtZ]);
                
format(stringsizeof(string), "Exterior set! (X: %f, Y: %f, Z: %f)."Player[playerid][hExtX], Player[playerid][hExtY], Player[playerid][hExtZ]);
                
SendClientMessage(playeridWHITEstring);
               }
            if(
strcmp(Usage"interior"true) == 0)
            {
                
Player[playerid][HouseInterior]++;
                
Player[playerid][hIntID] = GetPlayerInterior(playerid);
                
GetPlayerFacingAngle(playeridPlayer[playerid][hIntA]);
                
GetPlayerPos(playeridPlayer[playerid][hIntX], Player[playerid][hIntY], Player[playerid][hIntZ]);
                
format(stringsizeof(string), "Interior set! (X: %f, Y: %f, Z: %f)."Player[playerid][hIntX], Player[playerid][hIntY], Player[playerid][hIntZ]);
                
SendClientMessage(playeridWHITEstring);
            }
            if(
strcmp(Usage"spawn"true) == 0)
            {
                
Player[playerid][HouseSpawn]++;
                
Player[playerid][hSpaID] = GetPlayerInterior(playerid);
                
GetPlayerFacingAngle(playeridPlayer[playerid][hSpaA]);
                
GetPlayerPos(playeridPlayer[playerid][hSpaX], Player[playerid][hSpaY], Player[playerid][hSpaZ]);
                
format(stringsizeof(string), "Spawn possition set! (X: %f, Y: %f, Z: %f)."Player[playerid][hSpaX], Player[playerid][hSpaY], Player[playerid][hSpaZ]);
                
SendClientMessage(playeridWHITEstring);
            }
            if(
strcmp(Usage"complete"true) == 0)
            {
                if(
Player[playerid][HouseInterior] > || Player[playerid][HouseExterior] > 0)
                {
                    new 
NewHouseID SpawnedHouses+1;
                    if(
NewHouseID >= MAX_HOUSES)
                    {
                        
SendClientMessage(playeridRED"> Too many houses are currently spawned!");
                    }
                    else
                    {
                                
format(Houses[NewHouseID][hAddress], 255"None");
                                
format(Houses[NewHouseID][hType], 255"Unknown");
                                
Houses[NewHouseID][hInteriorID] = Player[playerid][hIntID];
                                
Houses[NewHouseID][hExteriorID] = Player[playerid][hExtID];
                                
Houses[NewHouseID][hSpawnID] = Player[playerid][hSpaID];
                                
Houses[NewHouseID][hInteriorX] = Player[playerid][hIntX];
                                
Houses[NewHouseID][hInteriorY] = Player[playerid][hIntY];
                                
Houses[NewHouseID][hInteriorZ] = Player[playerid][hIntZ];
                                
Houses[NewHouseID][hInteriorA] = Player[playerid][hIntA];
                                
Houses[NewHouseID][hExteriorX] = Player[playerid][hExtX];
                                
Houses[NewHouseID][hExteriorY] = Player[playerid][hExtY];
                                
Houses[NewHouseID][hExteriorZ] = Player[playerid][hExtZ];
                                
Houses[NewHouseID][hExteriorA] = Player[playerid][hExtA];
                                
Houses[NewHouseID][hSpawnX] = Player[playerid][hSpaX];
                                
Houses[NewHouseID][hSpawnY] = Player[playerid][hSpaY];
                                
Houses[NewHouseID][hSpawnZ] = Player[playerid][hSpaZ];
                                
Houses[NewHouseID][hSpawnA] = Player[playerid][hSpaA];
                                
Player[playerid][HouseExterior]--;
                                 
Player[playerid][HouseInterior]--;
                                 
Player[playerid][HouseSpawn]--;
                                
SendClientMessage(playeridNICESKY"Successfully created house, don't forget to /sethouseprice, /sethouseaddress, /sethousetype!");
                                
SetPlayerInterior(playeridHouses[NewHouseID][hExteriorID]);
                                
SetPlayerVirtualWorld(playerid0);
                                
SetPlayerPos(playeridHouses[NewHouseID][hExteriorX], Houses[NewHouseID][hExteriorY], Houses[NewHouseID][hExteriorZ]);
                                
SavedHouses++;
                                
SaveHouse(NewHouseID);
                    }
                }
                else
                {
                    
SendClientMessage(playeridWHITE"> You must select an exterior and an interior first!");
                }
            }
        }
        else
        {
            
RemoveTextMessage(playerid);
            
TextDrawShowForPlayer(playeridText:CantCommand);
            
SetTimerEx("RemoveTextMessage"3500false"d"playerid);
        }
    }
    return 
1;

PHP код:
stock SaveHouse(houseid)
{
    new 
query[2000];
    
format(querysizeof(query), "UPDATE `Houses` SET `hInteriorID` = %d, `hInteriorX` = '%f', `hInteriorY` = '%f', `hInteriorZ` = '%f', `hInteriorA` = '%f', `hExteriorID` = %d, `hExteriorX` = '%f', `hExteriorY` = '%f', `hExteriorZ` = '%f', `hExteriorA` = '%f', `hSpawnID` = %d, `hSpawnX` = '%f', `hSpawnY` = '%f', `hSpawnZ` = '%f', `hSpawnA` = '%f', ",
        
Houses[houseid][hInteriorID],
        
Houses[houseid][hInteriorX],
        
Houses[houseid][hInteriorY],
        
Houses[houseid][hInteriorZ],
        
Houses[houseid][hInteriorA],
        
Houses[houseid][hExteriorID],
        
Houses[houseid][hExteriorX],
        
Houses[houseid][hExteriorY],
        
Houses[houseid][hExteriorZ],
        
Houses[houseid][hExteriorA],
        
Houses[houseid][hSpawnID],
        
Houses[houseid][hSpawnX],
        
Houses[houseid][hSpawnY],
        
Houses[houseid][hSpawnZ],
        
Houses[houseid][hSpawnA]);
    
format(querysizeof(query), "%s`hOwner` = '%s', `hAddress` = '%s', `HousePrice` = %d, `hLockStatus` = %d, `hType` = '%s', `hLastLoginDate` = %d WHERE `HouseID` = %d",
        
query,
        
Houses[houseid][hOwner],
        
Houses[houseid][hAddress],
        
Houses[houseid][HousePrice],
        
Houses[houseid][hLockStatus],
        
Houses[houseid][hType],
        
Houses[houseid][hLastLoginDate],
        
houseid);
    
mysql_query(query);
    return 
1;

Reply
#2

I don't see a mistake. Try expanding your custom defines and try to make a command to save houses manually or set them to save themselves every x amount of time (I use this). I have the both ways and works perfect.
Reply
#3

If you are creating a house, then you can't use UPDATE in the mysql query, you will need to use INSERT
Reply
#4

PHP код:
forward SaveHouseCallback(houseidplayerid);
public 
SaveHouseCallback(houseidplayerid)
{
    new
        
rows;
    if(
rows == 1)
    {
        
//SendClientMessage(SavingVehiclePlayerID, RED, "This Vehicle already exists");
        
SendClientMessage(playeridRED"This House already exists!");
    }
    else if(
rows == 0)
    {
        new 
query[2000];
         
format(querysizeof(query), "INSERT INTO `Houses` (`hInteriorID`, `hInteriorX`, `hInteriorY`, `hInteriorZ`, `hInteriorA`, `hExteriorID`, `hExteriorX`, `hExteriorY`, `hExteriorZ`, `hExteriorA`, `hSpawnID`, ");
        
format(querysizeof(query), "%s`hSpawnX`, `hSpawnY`, `hSpawnZ`, `hSpawnA`, `hOwner`, `hAddress`, `HousePrice`, `hLockStatus`, `hType`) VALUES "query);
        
format(querysizeof(query), "%s(%d, '%f', '%f', '%f', '%f', %d, '%f', '%f', '%f', '%f', %d, '%f', '%f', '%f', '%f', '%s', '%s', %d, %d, '%s')",
        
queryHouses[houseid][hInteriorID],
         
Houses[houseid][hInteriorX],
          
Houses[houseid][hInteriorY],
           
Houses[houseid][hInteriorZ],
        
Houses[houseid][hInteriorA],
         
Houses[houseid][hExteriorID],
         
Houses[houseid][hExteriorX],
         
Houses[houseid][hExteriorY],
         
Houses[houseid][hExteriorZ],
         
Houses[houseid][hExteriorA],
         
Houses[houseid][hSpawnID],
         
Houses[houseid][hSpawnX],
          
Houses[houseid][hSpawnY],
           
Houses[houseid][hSpawnZ],
           
Houses[houseid][hSpawnA],
           
Houses[houseid][hOwner],
           
Houses[houseid][hAddress],
         -
1,
          
1,
          
Houses[houseid][hType]);
        
mysql_queryM(query"DefaultCallback");
        new 
query2[400];
        
format(query2sizeof(query2), "SELECT * FROM `Houses` WHERE `HouseID` = %d"houseid); // Selects all the information from the table
        
mysql_queryM(query2,"LoadHousesCallback""d"houseid);
    }
    else
    {
        
//SendClientMessage(SavingVehiclePlayerID, COLOR_WHITE, "There was a "#COL_EMB_RED"fatal error "#COL_EMB_WHITE"during registration! Please contact a developer.");
        
SendClientMessage(playeridCOLOR_WHITE"There was a "#COL_EMB_RED"fatal error "#COL_EMB_WHITE"during registration! Please contact a developer.");
    
}
    return 
1;

I've that now... But the problem is now it's not updating.. but it's creating!
Reply
#5

Now it creates because you have INSERT INTO, which is for creating.
You could check in the database if there are results already and if there are, format the update query,
if there aren't format the create query.
This is the only way to use both in 1 stock
Reply
#6

Quote:
Originally Posted by thegamer355
Посмотреть сообщение
Now it creates because you have INSERT INTO, which is for creating.
You could check in the database if there are results already and if there are, format the update query,
if there aren't format the create query.
This is the only way to use both in 1 stock
As you see i got two functions, One for the save and the other for the create.
Reply
#7

If you have 2 callbacks to save the houses, make sure 1 has INSERT INTO and the other has UPDATE.
Use the one with INSERT INTO for the creating, and the one with UPDATE for saving.

To be honest, i'm a bit confused now, because you showed us 2 different callbacks, and i'm not sure which one is supposed to do what.
Reply
#8

Update.
PHP код:
stock SaveHouse(houseid

    new 
query[2000]; 
    
format(querysizeof(query), "UPDATE `Houses` SET `hInteriorID` = %d, `hInteriorX` = '%f', `hInteriorY` = '%f', `hInteriorZ` = '%f', `hInteriorA` = '%f', `hExteriorID` = %d, `hExteriorX` = '%f', `hExteriorY` = '%f', `hExteriorZ` = '%f', `hExteriorA` = '%f', `hSpawnID` = %d, `hSpawnX` = '%f', `hSpawnY` = '%f', `hSpawnZ` = '%f', `hSpawnA` = '%f', "
        
Houses[houseid][hInteriorID], 
        
Houses[houseid][hInteriorX], 
        
Houses[houseid][hInteriorY], 
        
Houses[houseid][hInteriorZ], 
        
Houses[houseid][hInteriorA], 
        
Houses[houseid][hExteriorID], 
        
Houses[houseid][hExteriorX], 
        
Houses[houseid][hExteriorY], 
        
Houses[houseid][hExteriorZ], 
        
Houses[houseid][hExteriorA], 
        
Houses[houseid][hSpawnID], 
        
Houses[houseid][hSpawnX], 
        
Houses[houseid][hSpawnY], 
        
Houses[houseid][hSpawnZ], 
        
Houses[houseid][hSpawnA]); 
    
format(querysizeof(query), "%s`hOwner` = '%s', `hAddress` = '%s', `HousePrice` = %d, `hLockStatus` = %d, `hType` = '%s', `hLastLoginDate` = %d WHERE `HouseID` = %d"
        
query
        
Houses[houseid][hOwner], 
        
Houses[houseid][hAddress], 
        
Houses[houseid][HousePrice], 
        
Houses[houseid][hLockStatus], 
        
Houses[houseid][hType], 
        
Houses[houseid][hLastLoginDate], 
        
houseid); 
    
mysql_query(query); 
    return 
1

The create
PHP код:
forward SaveHouseCallback(houseidplayerid); 
public 
SaveHouseCallback(houseidplayerid

    new 
        
rows
    if(
rows == 1
    { 
        
//SendClientMessage(SavingVehiclePlayerID, RED, "This Vehicle already exists"); 
        
SendClientMessage(playeridRED"This House already exists!"); 
    } 
    else if(
rows == 0
    { 
        new 
query[2000]; 
         
format(querysizeof(query), "INSERT INTO `Houses` (`hInteriorID`, `hInteriorX`, `hInteriorY`, `hInteriorZ`, `hInteriorA`, `hExteriorID`, `hExteriorX`, `hExteriorY`, `hExteriorZ`, `hExteriorA`, `hSpawnID`, "); 
        
format(querysizeof(query), "%s`hSpawnX`, `hSpawnY`, `hSpawnZ`, `hSpawnA`, `hOwner`, `hAddress`, `HousePrice`, `hLockStatus`, `hType`) VALUES "query); 
        
format(querysizeof(query), "%s(%d, '%f', '%f', '%f', '%f', %d, '%f', '%f', '%f', '%f', %d, '%f', '%f', '%f', '%f', '%s', '%s', %d, %d, '%s')"
        
queryHouses[houseid][hInteriorID], 
         
Houses[houseid][hInteriorX], 
          
Houses[houseid][hInteriorY], 
           
Houses[houseid][hInteriorZ], 
        
Houses[houseid][hInteriorA], 
         
Houses[houseid][hExteriorID], 
         
Houses[houseid][hExteriorX], 
         
Houses[houseid][hExteriorY], 
         
Houses[houseid][hExteriorZ], 
         
Houses[houseid][hExteriorA], 
         
Houses[houseid][hSpawnID], 
         
Houses[houseid][hSpawnX], 
          
Houses[houseid][hSpawnY], 
           
Houses[houseid][hSpawnZ], 
           
Houses[houseid][hSpawnA], 
           
Houses[houseid][hOwner], 
           
Houses[houseid][hAddress], 
         -
1
          
1
          
Houses[houseid][hType]); 
        
mysql_queryM(query"DefaultCallback"); 
        new 
query2[400]; 
        
format(query2sizeof(query2), "SELECT * FROM `Houses` WHERE `HouseID` = %d"houseid); // Selects all the information from the table 
        
mysql_queryM(query2,"LoadHousesCallback""d"houseid); 
    } 
    else 
    { 
        
//SendClientMessage(SavingVehiclePlayerID, COLOR_WHITE, "There was a "#COL_EMB_RED"fatal error "#COL_EMB_WHITE"during registration! Please contact a developer."); 
        
SendClientMessage(playeridCOLOR_WHITE"There was a "#COL_EMB_RED"fatal error "#COL_EMB_WHITE"during registration! Please contact a developer."); 
    

    return 
1

As you see i got them both... But it's creating but not updating
Reply
#9

Quote:
Originally Posted by lulo356
Посмотреть сообщение
Can someone maybe help me out? This is mine house system but it doesn't save in the mysql... Thanks for your advise

PHP код:
command(createhouseplayeridparams[])
{
    new 
Usage[128], string[128];
    if(
sscanf(params"z"Usage))
    {
        if(
AdminLoggedIn[playerid] == && Player[playerid][Adminlevel] >= 6)
        {
            
SendClientMessage(playeridWHITE"SYNTAX: /createhouse [usage]");
            
SendClientMessage(playeridGREY"Usage: Interior, Exterior, Spawn or Complete.");
        }
        else
        {
            
RemoveTextMessage(playerid);
            
TextDrawShowForPlayer(playeridText:CantCommand);
            
SetTimerEx("RemoveTextMessage"3500false"d"playerid);
        }
    }
    else
    {
        if(
AdminLoggedIn[playerid] == && Player[playerid][Adminlevel] >= 6)
        {
            if(
strcmp(Usage"exterior"true) == 0)
            {
                
Player[playerid][HouseExterior]++;
                
Player[playerid][hExtID] = GetPlayerInterior(playerid);
                
GetPlayerFacingAngle(playeridPlayer[playerid][hExtA]);
                
GetPlayerPos(playeridPlayer[playerid][hExtX], Player[playerid][hExtY], Player[playerid][hExtZ]);
                
format(stringsizeof(string), "Exterior set! (X: %f, Y: %f, Z: %f)."Player[playerid][hExtX], Player[playerid][hExtY], Player[playerid][hExtZ]);
                
SendClientMessage(playeridWHITEstring);
               }
            if(
strcmp(Usage"interior"true) == 0)
            {
                
Player[playerid][HouseInterior]++;
                
Player[playerid][hIntID] = GetPlayerInterior(playerid);
                
GetPlayerFacingAngle(playeridPlayer[playerid][hIntA]);
                
GetPlayerPos(playeridPlayer[playerid][hIntX], Player[playerid][hIntY], Player[playerid][hIntZ]);
                
format(stringsizeof(string), "Interior set! (X: %f, Y: %f, Z: %f)."Player[playerid][hIntX], Player[playerid][hIntY], Player[playerid][hIntZ]);
                
SendClientMessage(playeridWHITEstring);
            }
            if(
strcmp(Usage"spawn"true) == 0)
            {
                
Player[playerid][HouseSpawn]++;
                
Player[playerid][hSpaID] = GetPlayerInterior(playerid);
                
GetPlayerFacingAngle(playeridPlayer[playerid][hSpaA]);
                
GetPlayerPos(playeridPlayer[playerid][hSpaX], Player[playerid][hSpaY], Player[playerid][hSpaZ]);
                
format(stringsizeof(string), "Spawn possition set! (X: %f, Y: %f, Z: %f)."Player[playerid][hSpaX], Player[playerid][hSpaY], Player[playerid][hSpaZ]);
                
SendClientMessage(playeridWHITEstring);
            }
            if(
strcmp(Usage"complete"true) == 0)
            {
                if(
Player[playerid][HouseInterior] > || Player[playerid][HouseExterior] > 0)
                {
                    new 
NewHouseID SpawnedHouses+1;
                    if(
NewHouseID >= MAX_HOUSES)
                    {
                        
SendClientMessage(playeridRED"> Too many houses are currently spawned!");
                    }
                    else
                    {
                                
format(Houses[NewHouseID][hAddress], 255"None");
                                
format(Houses[NewHouseID][hType], 255"Unknown");
                                
Houses[NewHouseID][hInteriorID] = Player[playerid][hIntID];
                                
Houses[NewHouseID][hExteriorID] = Player[playerid][hExtID];
                                
Houses[NewHouseID][hSpawnID] = Player[playerid][hSpaID];
                                
Houses[NewHouseID][hInteriorX] = Player[playerid][hIntX];
                                
Houses[NewHouseID][hInteriorY] = Player[playerid][hIntY];
                                
Houses[NewHouseID][hInteriorZ] = Player[playerid][hIntZ];
                                
Houses[NewHouseID][hInteriorA] = Player[playerid][hIntA];
                                
Houses[NewHouseID][hExteriorX] = Player[playerid][hExtX];
                                
Houses[NewHouseID][hExteriorY] = Player[playerid][hExtY];
                                
Houses[NewHouseID][hExteriorZ] = Player[playerid][hExtZ];
                                
Houses[NewHouseID][hExteriorA] = Player[playerid][hExtA];
                                
Houses[NewHouseID][hSpawnX] = Player[playerid][hSpaX];
                                
Houses[NewHouseID][hSpawnY] = Player[playerid][hSpaY];
                                
Houses[NewHouseID][hSpawnZ] = Player[playerid][hSpaZ];
                                
Houses[NewHouseID][hSpawnA] = Player[playerid][hSpaA];
                                
Player[playerid][HouseExterior]--;
                                 
Player[playerid][HouseInterior]--;
                                 
Player[playerid][HouseSpawn]--;
                                
SendClientMessage(playeridNICESKY"Successfully created house, don't forget to /sethouseprice, /sethouseaddress, /sethousetype!");
                                
SetPlayerInterior(playeridHouses[NewHouseID][hExteriorID]);
                                
SetPlayerVirtualWorld(playerid0);
                                
SetPlayerPos(playeridHouses[NewHouseID][hExteriorX], Houses[NewHouseID][hExteriorY], Houses[NewHouseID][hExteriorZ]);
                                
SavedHouses++;
                                
SaveHouse(NewHouseID);
                    }
                }
                else
                {
                    
SendClientMessage(playeridWHITE"> You must select an exterior and an interior first!");
                }
            }
        }
        else
        {
            
RemoveTextMessage(playerid);
            
TextDrawShowForPlayer(playeridText:CantCommand);
            
SetTimerEx("RemoveTextMessage"3500false"d"playerid);
        }
    }
    return 
1;

You should have the check if your command, so if the house exists, use the update callback. if it doesn't execute the create callback. Because your command only executes the SaveHouse(houseid) callback, which is set to update.
So in your command (or in another stock) make a query which checks if the house exists and let it return a value.
Depending on that value, decide wether to create or update the house.

That's all i can understand from it
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)