[MySQL R34] Проблема с сохранением.
#1

Из-за чего не сохраняет машины? Возможно ли что переменные обнуляються раньше чем срабатывает каллбэк SavePlayerBikeOrVehicle и из-за этого существующую машину удаляет из базы данных? Если возможно значит проблема в этом(потому что на R5 все было нормально). Как исправить этот баг?
PHP Code:
public OnPlayerDisconnect(playeridreason

        
SaveVehicle(playeridtrue); 
        
SavePlayer(playeridtrue); 
        return 
1

PHP Code:
stock SaveVehicle(playeridbool:mode false

        new 
oQuery[64]; 
        
mysql_format(MYSQL_ARGoQuery64"SELECT * FROM `vehicles` WHERE `Owner` = '%s'"GetPlayerNameEx(playerid)); 
        
mysql_function_query(MYSQL_ARGoQuerytrue"SavePlayerBikeOrVehicle""dsddd"playeridGetPlayerNameEx(playerid), pInfo[playerid][vCarID], mode1); 
        return 
1

PHP Code:
stock SavePlayer(playeridbool:mode false

        ... 
        
ClearChar(playerid); // Обнуляю все переменные 
        
return 1

PHP Code:
forward SavePlayerBikeOrVehicle(playeridname[], vehicleidbool:modek); 
public 
SavePlayerBikeOrVehicle(playeridname[], vehicleidbool:modek

        new 
rowsfieldsFloat:vPos[4], oQuery[183]; 
        
cache_get_data(rowsfields); 
        switch(
k
        { 
                case 
1:
                { 
                        new 
Float:hp
                        if(
rows && vehicleid == INVALID_VEHICLE_ID
                        { 
                                
mysql_format(MYSQL_ARGoQuery62"DELETE FROM `vehicles` WHERE `Owner` = '%s'"name); 
                                
mysql_tquery(MYSQL_ARGoQuery""""); 
                                return 
1
                        } 
                        if(
vehicleid != INVALID_VEHICLE_ID
                        { 
                                
GetVehiclePos(vehicleidvPos[0], vPos[1], vPos[2]); 
                                
GetVehicleZAngle(vehicleidvPos[3]); 
                                
GetVehicleHealth(vehicleidhp); 
                                
tInfo[vehicleid][vLastPos][0] = vPos[0]; 
                                
tInfo[vehicleid][vLastPos][1] = vPos[1]; 
                                
tInfo[vehicleid][vLastPos][2] = vPos[2]; 
                                
tInfo[vehicleid][vLastPos][3] = vPos[3]; 
                                if(!
rows
                                { 
                                        
mysql_format(MYSQL_ARGoQuery161"INSERT INTO `vehicles` (Owner, Model, Pos_X, Pos_Y, Pos_Z, Pos_A) VALUES ('%s', '%d', '%.4f', '%.4f', '%.4f', '%.4f')"nameGetVehicleModel(vehicleid), vPos[0], vPos[1], vPos[2], vPos[3]); 
                                        
mysql_tquery(MYSQL_ARGoQuery""""); 
                                } 
                                
mysql_format(MYSQL_ARGoQuery173"UPDATE `vehicles` SET `Model` = '%d', `Pos_X` = '%.4f', `Pos_Y` = '%.4f', `Pos_Z` = '%.4f', `Pos_A` = '%.4f' WHERE `Owner` = '%s'"GetVehicleModel(vehicleid), vPos[0], vPos[1], vPos[2], vPos[3], name); 
                                
mysql_tquery(MYSQL_ARGoQuery""""); 
                                
mysql_format(MYSQL_ARGoQuery160"UPDATE `vehicles` SET `Health` = '%.1f', `Rida` = '%.1f', `Fuel` = '%d', `Color1` = '%d', `Color2` = '%d' WHERE `Owner` = '%s'"hptInfo[vehicleid][Rida], tInfo[vehicleid][Fuel], tInfo[vehicleid][vColor][0], tInfo[vehicleid][vColor][1], name); 
                                
mysql_tquery(MYSQL_ARGoQuery""""); 
                                
mysql_format(MYSQL_ARGoQuery183"UPDATE `vehicles` SET `Paintjob` = '%d', `Insurance` = '%d', `Technekine` = '%d', `Locked` = '%d', `Numeriai` = '%s' WHERE `Owner` = '%s'"tInfo[vehicleid][Paintjob], tInfo[vehicleid][Draudimas], tInfo[vehicleid][Technekine], tInfo[vehicleid][vLocked], tInfo[vehicleid][Numeriai], name); 
                                
mysql_tquery(MYSQL_ARGoQuery""""); 
                                
mysql_format(MYSQL_ARGoQuery94"UPDATE `vehicles` SET `Alarm` = '%d', `Tune0` = '%d' WHERE `Owner` = '%s'"tInfo[vehicleid][vAlarm], GetVehicleComponentInSlot(vehicleid0), name); 
                                
mysql_tquery(MYSQL_ARGoQuery""""); 
                                
mysql_format(MYSQL_ARGoQuery151"UPDATE `vehicles` SET `Tune1` = '%d', `Tune2` = '%d', `Tune3` = '%d', `Tune4` = '%d', `Tune5` = '%d' WHERE `Owner` = '%s'"GetVehicleComponentInSlot(vehicleid1), GetVehicleComponentInSlot(vehicleid2), GetVehicleComponentInSlot(vehicleid3), GetVehicleComponentInSlot(vehicleid4), GetVehicleComponentInSlot(vehicleid5), name); 
                                
mysql_tquery(MYSQL_ARGoQuery""""); 
                                
mysql_format(MYSQL_ARGoQuery151"UPDATE `vehicles` SET `Tune6` = '%d', `Tune7` = '%d', `Tune8` = '%d', `Tune9` = '%d', `Tune10` = '%d' WHERE `Owner` = '%s'"GetVehicleComponentInSlot(vehicleid6), GetVehicleComponentInSlot(vehicleid7), GetVehicleComponentInSlot(vehicleid8), GetVehicleComponentInSlot(vehicleid9), GetVehicleComponentInSlot(vehicleid10), name); 
                                
mysql_tquery(MYSQL_ARGoQuery""""); 
                                
mysql_format(MYSQL_ARGoQuery165"UPDATE `vehicles` SET `Tune11` = '%d', `Tune12` = '%d', `Tune13` = '%d', `KadaValge` = '%.1f', `KredVeh` = '%d' WHERE `Owner` = '%s'"GetVehicleComponentInSlot(vehicleid11), GetVehicleComponentInSlot(vehicleid12), GetVehicleComponentInSlot(vehicleid13), tInfo[vehicleid][KadaValge], tInfo[vehicleid][KredVeh], name); 
                                
mysql_tquery(MYSQL_ARGoQuery""""); 
                                if(
mode
                                { 
                                        
DestroyVehicleEx(vehicleid); 
                                        
pInfo[playerid][vCarID] = INVALID_VEHICLE_ID
                                }
                        }
                } 
        } 
        return 
1

Reply
#2

Обнуляются раньше, да
И зачем каждый раз тачку удалять и создавать в базе?
Reply
#3

Quote:
Originally Posted by Jon_De
View Post
Обнуляются раньше, да
И зачем каждый раз тачку удалять и создавать в базе?
Если в базе есть запись что игрок имеет машину но на самом деле он ее уже не имеет - удаляю.
Если в базе нет записи что игрок имеет машину но на самом деле он ее имеет - записываю.

Может есть идеи как исправить этот баг? Может через кэш? Обнулять переменные мне нужно обязательно.

P.S: Сделал проще. Сделал простое сохранение а insert и delete только там где нужно. Тему можно закрывать.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)