MySQL won't save player vehicles?
#1

Hello guys, after a long time, I have came back with pawno. Now, I'm working on the vehicle MySQL system and the problem is I want to save player vehicles when that player disconnect from the server. I think my code is correct but I don't know why it doesn't work unless I use /savevehs command.
Here is my code:
PHP код:
CMD:savevehs(playeridparams[]){
    new 
string[128];
    if(
Character[playerid][Admin] < 4) return System_Scm(playeridPERMISSIONONLYTYPE_ERROR);
    
format(stringsizeof(string), "%s has just saved all of the vehicles."GetPlayerNameEx(playerid));
    
ScmToAll(COLOR_GREENstring);
    for(new 
0MAX_VEHICLESi++){
        
SQL_SaveCharacterVehicle(i);
    }
    return 
1;
}
CreateCharacterVehicle(playeridmodelidFloat:vposXFloat:vposYFloat:vposZFloat:vposAcol1col2){
    new 
vidquery[1024];
    
vid CreateVehicle(modelidvposXvposYvposZvposAcol1col2, -1);
    
CharacterVehicle[vid][cvID] = vid;
    
format(CharacterVehicle[vid][cvOwnerName], 24"%s"GetPlayerNameEx(playerid));
    
format(CharacterVehicle[vid][cvPlate], 8"Non-R");
    
GetVehiclePos(vidCharacterVehicle[vid][cvPosX], CharacterVehicle[vid][cvPosY], CharacterVehicle[vid][cvPosZ]);
    
GetVehicleZAngle(vidCharacterVehicle[vid][cvPosA]);
    
CharacterVehicle[vid][cvModel] = modelid;
    
CharacterVehicle[vid][cvColour1] = col1;
    
CharacterVehicle[vid][cvColour2] = col2;
    
CharacterVehicle[vid][cvHealth] = 1000.0;
    
CharacterVehicle[vid][cvFuel] = 100.0;
    
CharacterVehicle[vid][cvVW] = GetPlayerVirtualWorld(playerid);
    
CharacterVehicle[vid][cvInt] = GetPlayerInterior(playerid);
    
SetVehicleVirtualWorld(vidCharacterVehicle[vid][cvVW]);
    
LinkVehicleToInterior(vidCharacterVehicle[vid][cvInt]);
    
mysql_format(MHandlequerysizeof(query), "INSERT INTO `vehicle` (`ID`, `OwnerName`, `Model`, `Plate`, `Colour1`, `Colour2`, `VW`, `Int`, `Health`, `Fuel`, `posX`, `posY`, `posZ`, `posA`)");
    
mysql_format(MHandlequerysizeof(query), "%s VALUES (%d, '%e', %d, '%s', %d, %d, %d, %d, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f)",
    
queryCharacterVehicle[vid][cvID], CharacterVehicle[vid][cvOwnerName], CharacterVehicle[vid][cvModel], CharacterVehicle[vid][cvPlate], CharacterVehicle[vid][cvColour1], CharacterVehicle[vid][cvColour2], CharacterVehicle[vid][cvVW], CharacterVehicle[vid][cvInt],
    
CharacterVehicle[vid][cvHealth], CharacterVehicle[vid][cvFuel], CharacterVehicle[vid][cvPosX], CharacterVehicle[vid][cvPosY], CharacterVehicle[vid][cvPosZ], CharacterVehicle[vid][cvPosA]);
    
mysql_query(MHandlequery);
    
printf(query);
    return 
1;
}
SQL_SaveCharacterVehicle(vid){
    new 
query[1024];
    if(
CharacterVehicle[vid][cvID] == 0) return 1;
    
GetVehiclePos(vidCharacterVehicle[vid][cvPosX], CharacterVehicle[vid][cvPosY], CharacterVehicle[vid][cvPosZ]);
    
GetVehicleZAngle(vidCharacterVehicle[vid][cvPosA]);
    
CharacterVehicle[vid][cvVW] = GetVehicleVirtualWorld(vid);
    
mysql_format(MHandlequerysizeof(query), "UPDATE `vehicle` SET `ID` = %d, `Plate` = '%s', `Lock` = %d, `Colour1` = %d, `Colour2` = %d, `VW` = %d, `Int` = %d, `Health` = %0.2f, `Fuel` = %0.2f, `posX` = %0.2f, `posY` = %0.2f, `posZ` = %0.2f, `posA` = %0.2f WHERE `OwnerName` = '%e' AND `ID` = %d",
    
CharacterVehicle[vid][cvID], CharacterVehicle[vid][cvPlate], CharacterVehicle[vid][cvLock], CharacterVehicle[vid][cvColour1], CharacterVehicle[vid][cvColour2], CharacterVehicle[vid][cvVW], CharacterVehicle[vid][cvInt], CharacterVehicle[vid][cvHealth], CharacterVehicle[vid][cvFuel], CharacterVehicle[vid][cvPosX],
    
CharacterVehicle[vid][cvPosY], CharacterVehicle[vid][cvPosZ], CharacterVehicle[vid][cvPosA], CharacterVehicle[vid][cvOwnerName], CharacterVehicle[vid][cvID]);
    
mysql_query(MHandlequery);
    
printf(query);
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason){
    
SQL_SaveCharacterInfo(playerid);
    
SQL_SaveCharacterWeapons(playerid);
    for(new 
0MAX_VEHICLESi++){
        if(!
strcmp(CharacterVehicle[i][cvOwnerName], GetPlayerNameEx(playerid))){
            
SQL_SaveCharacterVehicle(i);
            
DestroyVehicle(CharacterVehicle[i][cvID]);
        }
    }
    
ResetCharacterInfo(playerid);
    
gCharacterLogged{playerid} = false;
    
Delete3DTextLabel(pLabel[playerid]);
    return 
1;

I really need a help.
Reply
#2

What does your mysql_log.txt file show?
Reply
#3

Quote:
Originally Posted by Unte99
Посмотреть сообщение
What does your mysql_log.txt file show?
It doesn't show anything, I think the problem is the condition.
Reply
#4

So neither CreateCharacterVehicle nor SQL_SaveCharacterVehicle doesn't work? mysql_log.txt doesn't show anything at all? If so, debug the code by putting print lines in your code and see how far it goes.
Reply
#5

Quote:
Originally Posted by Unte99
Посмотреть сообщение
So neither CreateCharacterVehicle nor SQL_SaveCharacterVehicle doesn't work? mysql_log.txt doesn't show anything at all? If so, debug the code by putting print lines in your code and see how far it goes.
When I create the first vehicle:
Quote:

INSERT INTO `vehicle` (`ID`, `OwnerName`, `Model`, `Plate`, `Colour1`, `Colour2`, `VW`, `Int`, `Health`, `Fuel`, `posX`, `posY`, `posZ`, `posA`) VALUES (1, 'Daniel_Joyce', 521, 'Non-R', 1, 1, 0, 0, 1000.00, 100.00, 0.00, 0.00, 0.00, 0.00)

The second vehicle:
Quote:

INSERT INTO `vehicle` (`ID`, `OwnerName`, `Model`, `Plate`, `Colour1`, `Colour2`, `VW`, `Int`, `Health`, `Fuel`, `posX`, `posY`, `posZ`, `posA`) VALUES (2, 'Daniel_Joyce', 521, 'Non-R', 1, 2, 0, 0, 1000.00, 100.00, 1390.91, -2379.21, 20.01, 69.96)

When I save all of the vehicles

The first vehicle :

Quote:

UPDATE `vehicle` SET `ID` = 1, `Plate` = 'Non-R', `Lock` = 0, `Colour1` = 1, `Colour2` = 1, `VW` = 0, `Int` = 0, `Health` = 1000.00, `Fuel` = 100.00, `posX` = 0.00, `posY` = 0.00, `posZ` = 0.00, `posA` = 0.00 WHERE `OwnerName` = 'Daniel_Joyce' AND `ID` = 1

The second one:
Quote:

UPDATE `vehicle` SET `ID` = 2, `Plate` = 'Non-R', `Lock` = 0, `Colour1` = 1, `Colour2` = 2, `VW` = 0, `Int` = 0, `Health` = 1000.00, `Fuel` = 100.00, `posX` = 1391.02, `posY` = -2378.81, `posZ` = 19.60, `posA` = 70.32 WHERE `OwnerName` = 'Daniel_Joyce' AND `ID` = 2

Reply
#6

I don't know why it can't get the position of the first vehicle, so it's position are always 0.0000.
/savevehs works but when the player disconnect, it doesn't save.
Reply
#7

Can someone help me to save the player vehicle when disconnect?
Reply
#8

I have updated my code, here it is:
PHP код:
public OnPlayerDisconnect(playeridreason){
    for(new 
0MAX_VEHICLESi++){
        
printf("I : %d | ID : %d | Model : %d"iCharacterVehicle[i][cvID], CharacterVehicle[i][cvModel]);
        if(
CharacterVehicle[i][cvModel] == 0) continue;
        if(
strcmp(GetPlayerNameEx(playerid), CharacterVehicle[i][cvOwnerName])) continue;
        
SQL_SaveCharacterVehicle(CharacterVehicle[i][cvID]);
        
DestroyVehicle(CharacterVehicle[i][cvID]);
        
ResetCharacterVehicle(CharacterVehicle[i][cvID]);
    }
    
SQL_SaveCharacterInfo(playerid);
    
SQL_SaveCharacterWeapons(playerid);
    
ResetCharacterInfo(playerid);
    
gCharacterLogged{playerid} = false;
    
Delete3DTextLabel(pLabel[playerid]);
    return 
1;
}
SQL_SaveCharacterVehicle(vid){
    new 
query[1024];
    if(
CharacterVehicle[vid][cvModel] == 0) return 1;
    
GetVehiclePos(vidCharacterVehicle[vid][cvPosX], CharacterVehicle[vid][cvPosY], CharacterVehicle[vid][cvPosZ]);
    
GetVehicleZAngle(vidCharacterVehicle[vid][cvPosA]);
    
CharacterVehicle[vid][cvVW] = GetVehicleVirtualWorld(vid);
    
mysql_format(MHandlequerysizeof(query), "UPDATE `vehicle` SET `ID` = %d, `Plate` = '%s', `Lock` = %d, `Colour1` = %d, `Colour2` = %d, `VW` = %d, `Int` = %d, `Health` = %0.2f, `Fuel` = %0.2f, `posX` = %0.2f, `posY` = %0.2f, `posZ` = %0.2f, `posA` = %0.2f WHERE `OwnerName` = '%e' AND `ID` = %d",
    
CharacterVehicle[vid][cvID], CharacterVehicle[vid][cvPlate], CharacterVehicle[vid][cvLock], CharacterVehicle[vid][cvColour1], CharacterVehicle[vid][cvColour2], CharacterVehicle[vid][cvVW], CharacterVehicle[vid][cvInt], CharacterVehicle[vid][cvHealth], CharacterVehicle[vid][cvFuel], CharacterVehicle[vid][cvPosX],
    
CharacterVehicle[vid][cvPosY], CharacterVehicle[vid][cvPosZ], CharacterVehicle[vid][cvPosA], CharacterVehicle[vid][cvOwnerName], CharacterVehicle[vid][cvID]);
    
mysql_query(MHandlequery);
    
printf(query);
    return 
1;
}
CreateCharacterVehicle(playeridmodelidFloat:vposXFloat:vposYFloat:vposZFloat:vposAcol1col2){
    new 
query[1024];
    for(new 
0MAX_VEHICLESi++){
        if(
CharacterVehicle[i][cvModel] != || GetVehicleModel(i) != 0) continue;
        
CharacterVehicle[i][cvID] = CreateVehicle(modelidvposXvposYvposZvposAcol1col2, -1);
        
format(CharacterVehicle[i][cvOwnerName], 24"%s"GetPlayerNameEx(playerid));
        
format(CharacterVehicle[i][cvPlate], 8"Non-R");
        
CharacterVehicle[i][cvPosX] = vposX;
        
CharacterVehicle[i][cvPosY] = vposY;
        
CharacterVehicle[i][cvPosZ] = vposZ;
        
CharacterVehicle[i][cvPosA] = vposA;
        
CharacterVehicle[i][cvModel] = modelid;
        
CharacterVehicle[i][cvColour1] = col1;
        
CharacterVehicle[i][cvColour2] = col2;
        
CharacterVehicle[i][cvHealth] = 1000.0;
        
CharacterVehicle[i][cvFuel] = 100.0;
        
CharacterVehicle[i][cvVW] = GetPlayerVirtualWorld(playerid);
        
CharacterVehicle[i][cvInt] = GetPlayerInterior(playerid);
        
SetVehicleVirtualWorld(iCharacterVehicle[i][cvVW]);
        
LinkVehicleToInterior(iCharacterVehicle[i][cvInt]);
        
mysql_format(MHandlequerysizeof(query), "INSERT INTO `vehicle` (`ID`, `OwnerName`, `Model`, `Plate`, `Colour1`, `Colour2`, `VW`, `Int`, `Health`, `Fuel`, `posX`, `posY`, `posZ`, `posA`)");
        
mysql_format(MHandlequerysizeof(query), "%s VALUES (%d, '%e', %d, '%s', %d, %d, %d, %d, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f, %0.2f)",
        
queryCharacterVehicle[i][cvID], CharacterVehicle[i][cvOwnerName], CharacterVehicle[i][cvModel], CharacterVehicle[i][cvPlate], CharacterVehicle[i][cvColour1], CharacterVehicle[i][cvColour2], CharacterVehicle[i][cvVW], CharacterVehicle[i][cvInt],
        
CharacterVehicle[i][cvHealth], CharacterVehicle[i][cvFuel], CharacterVehicle[i][cvPosX], CharacterVehicle[i][cvPosY], CharacterVehicle[CharacterVehicle[i][cvID]][cvPosZ], CharacterVehicle[i][cvPosA]);
        
mysql_query(MHandlequery);
        
printf(query);
        return 
1;
    }
    return 
1;

Reply
#9

BUMP, please help me !!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)