PDA

Просмотр полной версии : [Вопрос] Проблема с сохранением MySQL



Kovshevoy
15.02.2018, 02:23
Доброго времени суток. Лазав по своему моду, решил его чутка оптимизировать, но видимо, что-то пошло не так.

Вот старое сохранение аккаунта игрока:

stock OnPlayerUpdateRL(playerid)
{
//if(IsPlayerNPC(playerid)) return 1;
if(gPlayerLogged[playerid] == 1)
{
OnUpdateInvPlayer(playerid);
new sql[4700];
format(sql, sizeof(sql), "UPDATE `players` SET `Level`='%d',\
`AdminLevel`='%d',\
`MestoJail`='%d',\
`Housecash`='%d',\
`Text`='%s',\
`Car`='%d',\
`Fuelcar`='%f',\
`Proz`='%d',\
`DonateRank`='%d',\
`Donatemoney`='%d',\
`Radio`='%d',\
`RadioTime`='%d',\
`Object`='%d',\
`ObjectData`='%d',\
`StyleText`='%d',\
`GPS`='%d',\
`GPS2`='%d',\
`Alarm`='%d',\
`Alarm2`='%d',",
PlayerInfo[playerid][pLevel],
PlayerInfo[playerid][pAdmin],
PlayerInfo[playerid][pMestoJail],
PlayerInfo[playerid][pHousecash],
PlayerInfo[playerid][pText],
PlayerInfo[playerid][pCar],
PlayerInfo[playerid][pFuelcar],
PlayerInfo[playerid][pProz],
PlayerInfo[playerid][pDonateRank],
PlayerInfo[playerid][pDonatemoney],
PlayerInfo[playerid][pRadio],
PlayerInfo[playerid][pRadioTime],
PlayerInfo[playerid][pObject],
PlayerInfo[playerid][pObjectData],
PlayerInfo[playerid][pStyleText],
PlayerInfo[playerid][pGPS],
PlayerInfo[playerid][pGPS2],
PlayerInfo[playerid][pAlarm],
PlayerInfo[playerid][pAlarm2]);//Çàêîí÷åííûé ôîðìàò
format(sql, sizeof(sql), "%s `BanSave`='%d',\
`WarnSave`='%d',\
`KickSave`='%d',\
`LeaderSave`='%d',\
`Mats`='%d',\
`Sex`='%d',\
`Muted`='%d',\
`Mutedreport`='%d',\
`Exp`='%d',\
`Cash`='%d',\
`WantedDeaths`='%d',\
`PayCheck`='%d',\
`Jailed`='%d',\
`JailTime`='%d',\
`Drugs`='%d',\
`Leader`='%d',\
`Member`='%d',\
`Rank`='%d',\
`Skin`='%d',\
`Job`='%d',",
sql,
PlayerInfo[playerid][pBanSave],
PlayerInfo[playerid][pWarnSave],
PlayerInfo[playerid][pKickSave],
PlayerInfo[playerid][pLeaderSave],
PlayerInfo[playerid][pMats],
PlayerInfo[playerid][pSex],
PlayerInfo[playerid][pMuted],
PlayerInfo[playerid][pMutedreport],
PlayerInfo[playerid][pExp],
PlayerInfo[playerid][pCash],
PlayerInfo[playerid][pWantedDeaths],
PlayerInfo[playerid][pPayCheck],
PlayerInfo[playerid][pJailed],
PlayerInfo[playerid][pJailTime],
PlayerInfo[playerid][pDrugs],
PlayerInfo[playerid][pLeader],
PlayerInfo[playerid][pMember],
PlayerInfo[playerid][pRank],
PlayerInfo[playerid][pChar],
PlayerInfo[playerid][pJob]);//Çàêîí÷åííûé ôîðìàò
format(sql, sizeof(sql), "%s `Health`='%.1f',\
`Intt`='%d',\
`Local`='%d',\
`Model`='%d',\
`Pnumber`='%d',\
`Age`='%d',\
`Directory`='%d',\
`VodPrava`='%d',\
`FlyLic`='%d',\
`BoatLic`='%d',\
`MedLic`='%d',\
`Hotel`='%d',\
`HotelRoom`='%d',\
`TheftSkill`='%d',\
`nblood`='%d',\
`Nick`='%s',",
sql,
PlayerInfo[playerid][pHealth],
PlayerInfo[playerid][pInt],
PlayerInfo[playerid][pLocal],
PlayerInfo[playerid][pModel],
PlayerInfo[playerid][pPnumber],
PlayerInfo[playerid][pAge],
PlayerInfo[playerid][pDirectory],
PlayerInfo[playerid][pVodPrava],
PlayerInfo[playerid][pFlyLic],
PlayerInfo[playerid][pBoatLic],
PlayerInfo[playerid][pMedLic],
PlayerInfo[playerid][pHotel],
PlayerInfo[playerid][pHotelRoom],
PlayerInfo[playerid][pTheftSkill],
PlayerInfo[playerid][pnblood],
PlayerInfo[playerid][pNick]);//Çàêîí÷åííûé ôîðìàò
format(sql, sizeof(sql), "%s `GunLic`='%d',\
`BizLic`='%d',\
`Phousekey`='%d',\
`Pbiskey`='%d',\
`NarcoZavisimost`='%d',\
`PayDay`='%d',\
`PayDayHad`='%d',\
`Tut`='%d',\
`Warns`='%d',\
`unWarns`='%d',\
`unWarnstime`='%d',\
`Fuel`='%d',\
`Married`='%d',\
`MuteTime`='%d',\
`Bank`='%d',\
`Mobile`='%d',\
`Dostup`='%d',\
`Locked`='%d',",
sql,
PlayerInfo[playerid][pGunLic],
PlayerInfo[playerid][pBizLic],
PlayerInfo[playerid][pPhousekey],
PlayerInfo[playerid][pPbiskey],
PlayerInfo[playerid][pNarcoZavisimost],
PlayerInfo[playerid][pPayDay],
PlayerInfo[playerid][pPayDayHad],
PlayerInfo[playerid][pTut],
PlayerInfo[playerid][pWarns],
PlayerInfo[playerid][punWarns],
PlayerInfo[playerid][punWarnstime],
PlayerInfo[playerid][pFuel],
PlayerInfo[playerid][pMarried],
PlayerInfo[playerid][pMuteTime],
PlayerInfo[playerid][pBank],
PlayerInfo[playerid][pMobile],
PlayerInfo[playerid][pDostup],
PlayerInfo[playerid][pLocked]);//Çàêíîí÷åííûé ôîðìàò
format(sql, sizeof(sql), "%s `Zvezdi`='%d',\
`Slot1`='%d',\
`Slot2`='%d',\
`Slot3`='%d',\
`Slot4`='%d',\
`Slot5`='%d',\
`Slot6`='%d',\
`Slot7`='%d',\
`Slotammo1`='%d',\
`Slotammo2`='%d',\
`Slotammo3`='%d',\
`Slotammo4`='%d',\
`Slotammo5`='%d',\
`Slotammo6`='%d',\
`Slotammo7`='%d',\
`TimeGame`='%d',",
sql,
PlayerInfo[playerid][pZvezdi],
PlayerInfo[playerid][pSlot1],
PlayerInfo[playerid][pSlot2],
PlayerInfo[playerid][pSlot3],
PlayerInfo[playerid][pSlot4],
PlayerInfo[playerid][pSlot5],
PlayerInfo[playerid][pSlot6],
PlayerInfo[playerid][pSlot7],
PlayerInfo[playerid][pSlotammo1],
PlayerInfo[playerid][pSlotammo2],
PlayerInfo[playerid][pSlotammo3],
PlayerInfo[playerid][pSlotammo4],
PlayerInfo[playerid][pSlotammo5],
PlayerInfo[playerid][pSlotammo6],
PlayerInfo[playerid][pSlotammo7],
PlayerInfo[playerid][pTimeGame]);
format(sql, sizeof(sql), "%s `BoxSkill`='%d',\
`KongfuSkill`='%d',\
`KickboxSkill`='%d',\
`SDPistol`='%d',\
`DesertEagle`='%d',\
`ShotGun`='%d',\
`MP5`='%d',\
`AK47`='%d',\
`M4`='%d',\
`Kolesocar`='%d',\
`Spoiler`='%d',\
`Bamper1`='%d',\
`Bamper2`='%d',\
`Cvet1`='%d',\
`Cvet2`='%d',\
`Nitro`='%d',\
`Gidra`='%d',\
`Pokraska`='%d',\
`BanData`='%d',\
`BanTime`='%d',\
`Hospital`='%d',",
sql,
PlayerInfo[playerid][pBoxSkill],
PlayerInfo[playerid][pKongfuSkill],
PlayerInfo[playerid][pKickboxSkill],
PlayerInfo[playerid][pSDPistol],
PlayerInfo[playerid][pDesertEagle],
PlayerInfo[playerid][pShotGun],
PlayerInfo[playerid][pMP5],
PlayerInfo[playerid][pAK47],
PlayerInfo[playerid][pM4],
PlayerInfo[playerid][pKolesocar],
PlayerInfo[playerid][pSpoiler],
PlayerInfo[playerid][pBamper1],
PlayerInfo[playerid][pBamper2],
PlayerInfo[playerid][pCvet1],
PlayerInfo[playerid][pCvet2],
PlayerInfo[playerid][pNitro],
PlayerInfo[playerid][pGidra],
PlayerInfo[playerid][pPokraska],
PlayerInfo[playerid][pBanData],
PlayerInfo[playerid][pBanTime],
PlayerInfo[playerid][pHospital]);
format(sql, sizeof(sql), "%s `DMgruz`='%d',\
`GLevel`='%d',\
`Ggruz`='%d',\
`Shkaf0`='%d',\
`Shkaf1`='%d',\
`Shkaf2`='%d',\
`Shkaf3`='%d',\
`DalSkill`='%d',\
`Golod`='%d',\
`Drinking`='%d',\
`Gigiena`='%d',\
`Shkaf00`='%d',\
`Clock`='%d',\
`Lube`='%d',\
`Shlem`='%d',\
`PID`='%d',\
`Pnum`='%d',\
`bolnica`='%d',",
sql,
PlayerInfo[playerid][pDMgruz],
PlayerInfo[playerid][pGLevel],
PlayerInfo[playerid][pGgruz],
PlayerInfo[playerid][pShkaf0],
PlayerInfo[playerid][pShkaf1],
PlayerInfo[playerid][pShkaf2],
PlayerInfo[playerid][pShkaf3],
PlayerInfo[playerid][pDalSkill],
PlayerInfo[playerid][pGolod],
PlayerInfo[playerid][pDrinking],
PlayerInfo[playerid][pGigiena],
PlayerInfo[playerid][pShkaf00],
PlayerInfo[playerid][pClock],
PlayerInfo[playerid][pLube],
PlayerInfo[playerid][pShlem],
PlayerInfo[playerid][pPID],
PlayerInfo[playerid][pPnum],
PlayerInfo[playerid][pBolnica]);
format(sql, sizeof(sql), "%s `operation`='%d',\
`gospital`='%d',\
`grupa`='%d',\
`gospitalop`='%d',\
`medical`='%d',\
`MusSkill`='%d',\
`AdDonate`='%d',\
`konkurs`='%d',\
`kt1`='%d',\
`kt2`='%d',\
`kt3`='%d',\
`kt4`='%d',\
`kt5`='%d',\
`kt6`='%d',\
`kt7`='%d',\
`kt8`='%d',\
`kt9`='%d',\
`kt10`='%d',\
`TwoCarsOn`='%d',\
`Car2`='%d',\
`TwoCarsData`='%d',\
`CarNow`='%d',\
`Weight+`='%d',\
`WeightData`='%d',",
sql,
PlayerInfo[playerid][pOperation],
PlayerInfo[playerid][pGospital],
PlayerInfo[playerid][pGrupa],
PlayerInfo[playerid][pGospitalop],
PlayerInfo[playerid][pMedical],
PlayerInfo[playerid][pMusSkill],
PlayerInfo[playerid][pAdDonate],
PlayerInfo[playerid][pkonkurs],
PlayerInfo[playerid][pkt1],
PlayerInfo[playerid][pkt2],
PlayerInfo[playerid][pkt3],
PlayerInfo[playerid][pkt4],
PlayerInfo[playerid][pkt5],
PlayerInfo[playerid][pkt6],
PlayerInfo[playerid][pkt7],
PlayerInfo[playerid][pkt8],
PlayerInfo[playerid][pkt9],
PlayerInfo[playerid][pkt10],
PlayerInfo[playerid][pTwoCarsOn],
PlayerInfo[playerid][pCar2],
PlayerInfo[playerid][pTwoCarsData],
PlayerInfo[playerid][pCarNow],
PlayerInfo[playerid][pWeightPlus],
PlayerInfo[playerid][pWeightData]);
format(sql, sizeof(sql), "%s `Kolesocar2`='%d',\
`Spoiler2`='%d',\
`Bamper12`='%d',\
`Bamper22`='%d',\
`Nitro2`='%d',\
`Gidra2`='%d',\
`Pokraska2`='%d',\
`Cvet12`='%d',\
`Cvet22`='%d',\
`DataVhod`='%s',\
`DataVhod2`='%d',\
`DShkaf1`='%d',\
`DShkaf2`='%d',\
`DShkaf3`='%d',\
`DataShkaf1`='%d',\
`DataShkaf2`='%d',\
`DataShkaf3`='%d',\
`Indicator`='%d',\
`Mestopos`='%d',\
`Speedindi`='%d',\
`Animraz`='%d',\
`VIPData`='%d',\
`Gonka1`='%d',\
`Gonka2`='%d',\
`Gonka3`='%d',\
`AppX`='%f',\
`AppY`='%f',\
`AppZ`='%f',",
sql,
PlayerInfo[playerid][pKolesocar2],
PlayerInfo[playerid][pSpoiler2],
PlayerInfo[playerid][pBamper12],
PlayerInfo[playerid][pBamper22],
PlayerInfo[playerid][pNitro2],
PlayerInfo[playerid][pGidra2],
PlayerInfo[playerid][pPokraska2],
PlayerInfo[playerid][pCvet12],
PlayerInfo[playerid][pCvet22],
PlayerInfo[playerid][pDataVhod],
PlayerInfo[playerid][pDataVhod2],
PlayerInfo[playerid][pDShkaf1],
PlayerInfo[playerid][pDShkaf2],
PlayerInfo[playerid][pDShkaf3],
PlayerInfo[playerid][pDataShkaf1],
PlayerInfo[playerid][pDataShkaf2],
PlayerInfo[playerid][pDataShkaf3],
PlayerInfo[playerid][pIndicator],
PlayerInfo[playerid][pMestopos],
PlayerInfo[playerid][pSpeedindi],
PlayerInfo[playerid][pAnimraz],
PlayerInfo[playerid][pVIPData],
PlayerInfo[playerid][pGonka1],
PlayerInfo[playerid][pGonka2],
PlayerInfo[playerid][pGonka3],
PlayerInfo[playerid][pAppX],
PlayerInfo[playerid][pAppY],
PlayerInfo[playerid][pAppZ]);
format(sql, sizeof(sql), "%s `AppInt`='%d',\
`AppWorld`='%d',\
`CarX`='%f',\
`CarY`='%f',\
`CarZ`='%f',\
`CarF`='%f',\
`FormaFrac`='%d',\
`Dead`='%d',\
`BlockCar1`='%d',\
`BlockCar2`='%d',\
`HealthCar1`='%f',\
`HealthCar2`='%f',\
`SafeCar1`='%d',\
`SafeCar2`='%d',\
`BChat`='%d',\
`AdminChat`='%d',\
`CNNChat`='%d',\
`AirSkill`='%d',\
`RPTest`='%d',\
`RPTime`='%d',\
`LeaderWarn`='%d',\
`Vote`='%d',\
`back`='%d',",
sql,
PlayerInfo[playerid][pAppInt],
PlayerInfo[playerid][pAppWorld],
PlayerInfo[playerid][pCarX],
PlayerInfo[playerid][pCarY],
PlayerInfo[playerid][pCarZ],
PlayerInfo[playerid][pCarF],
FormaFrac[playerid],
DeadPlayer[playerid],
PlayerInfo[playerid][pBlockCar1],
PlayerInfo[playerid][pBlockCar2],
PlayerInfo[playerid][pHealthCar1],
PlayerInfo[playerid][pHealthCar2],
PlayerInfo[playerid][pSafeCar1],
PlayerInfo[playerid][pSafeCar2],
PlayerInfo[playerid][pBChat],
PlayerInfo[playerid][pAdminChat],
PlayerInfo[playerid][pCNNChat],
PlayerInfo[playerid][pAirSkill],
PlayerInfo[playerid][pRPTest],
PlayerInfo[playerid][pRPTime],
PlayerInfo[playerid][pLeaderWarn],
PlayerInfo[playerid][pVote],
PlayerInfo[playerid][pBack]);
format(sql, sizeof(sql), "%s `Hood`='%d',\
`Hood2`='%d',\
`Roof`='%d',\
`Roof2`='%d',\
`Sideskirt`='%d',\
`Sideskirt2`='%d',\
`Lamps`='%d',\
`Lamps2`='%d',\
`Exhaust`='%d',\
`Exhaust2`='%d',\
`Bullbar0`='%d',\
`Bullbar02`='%d',\
`Bullbar1`='%d',\
`Bullbar12`='%d',\
`Bullbar2`='%d',\
`Bullbar22`='%d',\
`Bullbar3`='%d',\
`Bullbar32`='%d',\
`Sign`='%d',\
`Sign2`='%d',\
`Vents`='%d',\
`Vents2`='%d',\
`Stereo`='%d',\
`Stereo2`='%d',\
`BolnicaArmy`='%d',\
`MPAd`='%d',",
sql,
PlayerInfo[playerid][pHood],
PlayerInfo[playerid][pHood2],
PlayerInfo[playerid][pRoof],
PlayerInfo[playerid][pRoof2],
PlayerInfo[playerid][pSideskirt],
PlayerInfo[playerid][pSideskirt2],
PlayerInfo[playerid][pLamps],
PlayerInfo[playerid][pLamps2],
PlayerInfo[playerid][pExhaust],
PlayerInfo[playerid][pExhaust2],
PlayerInfo[playerid][pBullbar0],
PlayerInfo[playerid][pBullbar02],
PlayerInfo[playerid][pBullbar1],
PlayerInfo[playerid][pBullbar12],
PlayerInfo[playerid][pBullbar2],
PlayerInfo[playerid][pBullbar22],
PlayerInfo[playerid][pBullbar3],
PlayerInfo[playerid][pBullbar32],
PlayerInfo[playerid][pSign],
PlayerInfo[playerid][pSign2],
PlayerInfo[playerid][pVents],
PlayerInfo[playerid][pVents2],
PlayerInfo[playerid][pStereo],
PlayerInfo[playerid][pStereo2],
PlayerInfo[playerid][pBolnicaArmy],
PlayerInfo[playerid][pMPAd]);
format(sql, sizeof(sql), "%s `quest`='%d',\
`q1`='%d',\
`q2`='%d',\
`q3`='%d',\
`q4`='%d',\
`q5`='%d',\
`q6`='%d',\
`q7`='%d',\
`q8`='%d',\
`q9`='%d',\
`q10`='%d',\
`q11`='%d',\
`q12`='%d',\
`q13`='%d',\
`q14`='%d',\
`q15`='%d',\
`medic`='%d',\
`quest2`='%d' WHERE `ID` = '%d' LIMIT 1",
sql,
PlayerInfo[playerid][pQuest],
PlayerInfo[playerid][pQ1],
PlayerInfo[playerid][pQ2],
PlayerInfo[playerid][pQ3],
PlayerInfo[playerid][pQ4],
PlayerInfo[playerid][pQ5],
PlayerInfo[playerid][pQ6],
PlayerInfo[playerid][pQ7],
PlayerInfo[playerid][pQ8],
PlayerInfo[playerid][pQ9],
PlayerInfo[playerid][pQ10],
PlayerInfo[playerid][pQ11],
PlayerInfo[playerid][pQ12],
PlayerInfo[playerid][pQ13],
PlayerInfo[playerid][pQ14],
PlayerInfo[playerid][pQ15],
PlayerInfo[playerid][pMedic],
PlayerInfo[playerid][pQuest2],
PlayerInfo[playerid][pID]);
//mysql_query(mysql_connection_ID, sql, false);
mysql_tquery(mysql_connection_ID, sql, "", "");
return 1;
}
return 1;
}

Сидел думал, как бы уменьшить это "4700". Решил сделать вот так:

#define MAX_STRING 1024
new sql_p[MAX_PLAYERS][MAX_STRING];


И соответственно, вот Сам новый запрос на сохранение.

stock OnPlayerUpdateRL(playerid)
{
if(IsPlayerNPC(playerid)) return 1;
if(gPlayerLogged[playerid] == 1)
{
OnUpdateInvPlayer(playerid);
format(sql_p[playerid], MAX_STRING, "UPDATE `players` SET `Level`='%d', `AdminLevel`='%d', `MestoJail`='%d', `Housecash`='%d', `Text`='%s', `Car`='%d',\
`Fuelcar`='%f', `Proz`='%d', `DonateRank`='%d', `Donatemoney`='%d', `Radio`='%d', `RadioTime`='%d', `Object`='%d', `ObjectData`='%d',\
`StyleText`='%d', `GPS`='%d', `GPS2`='%d', `Alarm`='%d',`Alarm2`='%d', WHERE `ID` = '%d'",
PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][pMestoJail], PlayerInfo[playerid][pHousecash], PlayerInfo[playerid][pText], PlayerInfo[playerid][pCar],
PlayerInfo[playerid][pFuelcar], PlayerInfo[playerid][pProz], PlayerInfo[playerid][pDonateRank], PlayerInfo[playerid][pDonatemoney], PlayerInfo[playerid][pRadio],
PlayerInfo[playerid][pRadioTime], PlayerInfo[playerid][pObject], PlayerInfo[playerid][pObjectData], PlayerInfo[playerid][pStyleText], PlayerInfo[playerid][pGPS], PlayerInfo[playerid][pGPS2],
PlayerInfo[playerid][pAlarm], PlayerInfo[playerid][pAlarm2], PlayerInfo[playerid][pID]);//Законченный формат
mysql_function_query(mysql_connection_ID, sql_p[playerid], false, "", ""), sql_p[playerid][0] = 0;

format(sql_p[playerid], MAX_STRING, "UPDATE `players` SET `BanSave`='%d', `WarnSave`='%d', `KickSave`='%d', `LeaderSave`='%d', `Mats`='%d',`Sex`='%d',\
`Muted`='%d', `Mutedreport`='%d',`Exp`='%d',`Cash`='%d',`WantedDeaths`='%d',`PayCheck`='%d',`Jailed`='%d',`JailTime`='%d',`Drugs`='%d',\
`Leader`='%d',`Member`='%d',`Rank`='%d',`Skin`='%d',`Job`='%d', WHERE `ID` = '%d'",
PlayerInfo[playerid][pBanSave], PlayerInfo[playerid][pWarnSave], PlayerInfo[playerid][pKickSave], PlayerInfo[playerid][pLeaderSave], PlayerInfo[playerid][pMats], PlayerInfo[playerid][pSex],
PlayerInfo[playerid][pMuted], PlayerInfo[playerid][pMutedreport], PlayerInfo[playerid][pExp], PlayerInfo[playerid][pCash], PlayerInfo[playerid][pWantedDeaths], PlayerInfo[playerid][pPayCheck],
PlayerInfo[playerid][pJailed], PlayerInfo[playerid][pJailTime], PlayerInfo[playerid][pDrugs], PlayerInfo[playerid][pLeader], PlayerInfo[playerid][pMember], PlayerInfo[playerid][pRank],
PlayerInfo[playerid][pChar], PlayerInfo[playerid][pJob], PlayerInfo[playerid][pID]);//Законченный формат
mysql_function_query(mysql_connection_ID, sql_p[playerid], false, "", ""), sql_p[playerid][0] = 0;

format(sql_p[playerid], MAX_STRING, "UPDATE `players` SET `Health`='%.1f', `Intt`='%d', `Local`='%d', `Model`='%d', `Pnumber`='%d', `Age`='%d', `Directory`='%d',\
`VodPrava`='%d', `FlyLic`='%d', `BoatLic`='%d', `MedLic`='%d', `Hotel`='%d', `HotelRoom`='%d', `TheftSkill`='%d', `nblood`='%d',\
`Nick`='%s', WHERE `ID` = '%d'",
PlayerInfo[playerid][pHealth], PlayerInfo[playerid][pInt], PlayerInfo[playerid][pLocal], PlayerInfo[playerid][pModel], PlayerInfo[playerid][pPnumber], PlayerInfo[playerid][pAge],
PlayerInfo[playerid][pDirectory], PlayerInfo[playerid][pVodPrava], PlayerInfo[playerid][pFlyLic], PlayerInfo[playerid][pBoatLic], PlayerInfo[playerid][pMedLic], PlayerInfo[playerid][pHotel],
PlayerInfo[playerid][pHotelRoom],PlayerInfo[playerid][pTheftSkill], PlayerInfo[playerid][pnblood], PlayerInfo[playerid][pNick], PlayerInfo[playerid][pID]);//Законченный формат
mysql_function_query(mysql_connection_ID, sql_p[playerid], false, "", ""), sql_p[playerid][0] = 0;

format(sql_p[playerid], MAX_STRING, "UPDATE `players` SET `GunLic`='%d', `BizLic`='%d', `Phousekey`='%d', `Pbiskey`='%d', `NarcoZavisimost`='%d', `PayDay`='%d',\
`PayDayHad`='%d', `Tut`='%d', `Warns`='%d', `unWarns`='%d', `unWarnstime`='%d', `Fuel`='%d', `Married`='%d', `MuteTime`='%d', `Bank`='%d',\
`Mobile`='%d', `Dostup`='%d', `Locked`='%d', WHERE `ID` = '%d'",
PlayerInfo[playerid][pGunLic], PlayerInfo[playerid][pBizLic], PlayerInfo[playerid][pPhousekey], PlayerInfo[playerid][pPbiskey], PlayerInfo[playerid][pNarcoZavisimost],
PlayerInfo[playerid][pPayDay], PlayerInfo[playerid][pPayDayHad], PlayerInfo[playerid][pTut], PlayerInfo[playerid][pWarns], PlayerInfo[playerid][punWarns],
PlayerInfo[playerid][punWarnstime], PlayerInfo[playerid][pFuel], PlayerInfo[playerid][pMarried], PlayerInfo[playerid][pMuteTime], PlayerInfo[playerid][pBank],
PlayerInfo[playerid][pMobile], PlayerInfo[playerid][pDostup], PlayerInfo[playerid][pLocked], PlayerInfo[playerid][pID]);//Закнонченный формат
mysql_function_query(mysql_connection_ID, sql_p[playerid], false, "", ""), sql_p[playerid][0] = 0;

format(sql_p[playerid], MAX_STRING, "UPDATE `players` SET `Zvezdi`='%d', `Slot1`='%d', `Slot2`='%d', `Slot3`='%d', `Slot4`='%d', `Slot5`='%d', `Slot6`='%d',`Slot7`='%d',\
`Slotammo1`='%d', `Slotammo2`='%d', `Slotammo3`='%d', `Slotammo4`='%d', `Slotammo5`='%d', `Slotammo6`='%d', `Slotammo7`='%d',`TimeGame`='%d', WHERE `ID` = '%d'",
PlayerInfo[playerid][pZvezdi], PlayerInfo[playerid][pSlot1], PlayerInfo[playerid][pSlot2], PlayerInfo[playerid][pSlot3], PlayerInfo[playerid][pSlot4], PlayerInfo[playerid][pSlot5],
PlayerInfo[playerid][pSlot6], PlayerInfo[playerid][pSlot7], PlayerInfo[playerid][pSlotammo1], PlayerInfo[playerid][pSlotammo2], PlayerInfo[playerid][pSlotammo3],
PlayerInfo[playerid][pSlotammo4], PlayerInfo[playerid][pSlotammo5], PlayerInfo[playerid][pSlotammo6], PlayerInfo[playerid][pSlotammo7], PlayerInfo[playerid][pTimeGame], PlayerInfo[playerid][pID]);
mysql_function_query(mysql_connection_ID, sql_p[playerid], false, "", ""), sql_p[playerid][0] = 0;

format(sql_p[playerid], MAX_STRING, "UPDATE `players` SET `BoxSkill`='%d', `KongfuSkill`='%d', `KickboxSkill`='%d', `SDPistol`='%d', `DesertEagle`='%d',`ShotGun`='%d',\
`MP5`='%d', `AK47`='%d', `M4`='%d', `Kolesocar`='%d', `Spoiler`='%d', `Bamper1`='%d', `Bamper2`='%d', `Cvet1`='%d', `Cvet2`='%d', `Nitro`='%d', `Gidra`='%d',\
`Pokraska`='%d', `BanData`='%d', `BanTime`='%d',`Hospital`='%d', WHERE `ID` = '%d'",
PlayerInfo[playerid][pBoxSkill], PlayerInfo[playerid][pKongfuSkill], PlayerInfo[playerid][pKickboxSkill], PlayerInfo[playerid][pSDPistol], PlayerInfo[playerid][pDesertEagle],
PlayerInfo[playerid][pShotGun], PlayerInfo[playerid][pMP5], PlayerInfo[playerid][pAK47], PlayerInfo[playerid][pM4], PlayerInfo[playerid][pKolesocar], PlayerInfo[playerid][pSpoiler],
PlayerInfo[playerid][pBamper1], PlayerInfo[playerid][pBamper2], PlayerInfo[playerid][pCvet1], PlayerInfo[playerid][pCvet2], PlayerInfo[playerid][pNitro], PlayerInfo[playerid][pGidra],
PlayerInfo[playerid][pPokraska], PlayerInfo[playerid][pBanData], PlayerInfo[playerid][pBanTime], PlayerInfo[playerid][pHospital], PlayerInfo[playerid][pID]);
mysql_function_query(mysql_connection_ID, sql_p[playerid], false, "", ""), sql_p[playerid][0] = 0;

format(sql_p[playerid], MAX_STRING, "UPDATE `players` SET `DMgruz`='%d', `GLevel`='%d', `Ggruz`='%d', `Shkaf0`='%d', `Shkaf1`='%d', `Shkaf2`='%d', `Shkaf3`='%d',\
`DalSkill`='%d', `Golod`='%d', `Drinking`='%d', `Gigiena`='%d', `Shkaf00`='%d', `Clock`='%d', `Lube`='%d', `Shlem`='%d', `PID`='%d', `Pnum`='%d',\
`bolnica`='%d', WHERE `ID` = '%d'",
PlayerInfo[playerid][pDMgruz], PlayerInfo[playerid][pGLevel], PlayerInfo[playerid][pGgruz], PlayerInfo[playerid][pShkaf0], PlayerInfo[playerid][pShkaf1], PlayerInfo[playerid][pShkaf2],
PlayerInfo[playerid][pShkaf3], PlayerInfo[playerid][pDalSkill], PlayerInfo[playerid][pGolod], PlayerInfo[playerid][pDrinking], PlayerInfo[playerid][pGigiena], PlayerInfo[playerid][pShkaf00],
PlayerInfo[playerid][pClock], PlayerInfo[playerid][pLube], PlayerInfo[playerid][pShlem], PlayerInfo[playerid][pPID], PlayerInfo[playerid][pPnum], PlayerInfo[playerid][pBolnica], PlayerInfo[playerid][pID]);
mysql_function_query(mysql_connection_ID, sql_p[playerid], false, "", ""), sql_p[playerid][0] = 0;

format(sql_p[playerid], MAX_STRING, "UPDATE `players` SET `operation`='%d', `gospital`='%d', `grupa`='%d', `gospitalop`='%d', `medical`='%d', `MusSkill`='%d',\
`AdDonate`='%d', `konkurs`='%d', `kt1`='%d', `kt2`='%d', `kt3`='%d', `kt4`='%d', `kt5`='%d', `kt6`='%d', `kt7`='%d', `kt8`='%d', `kt9`='%d', `kt10`='%d',\
`TwoCarsOn`='%d', `Car2`='%d', `TwoCarsData`='%d', `CarNow`='%d',`Weight+`='%d', `WeightData`='%d', WHERE `ID` = '%d'",
PlayerInfo[playerid][pOperation], PlayerInfo[playerid][pGospital], PlayerInfo[playerid][pGrupa], PlayerInfo[playerid][pGospitalop], PlayerInfo[playerid][pMedical],
PlayerInfo[playerid][pMusSkill], PlayerInfo[playerid][pAdDonate], PlayerInfo[playerid][pkonkurs], PlayerInfo[playerid][pkt1], PlayerInfo[playerid][pkt2], PlayerInfo[playerid][pkt3],
PlayerInfo[playerid][pkt4], PlayerInfo[playerid][pkt5], PlayerInfo[playerid][pkt6], PlayerInfo[playerid][pkt7], PlayerInfo[playerid][pkt8], PlayerInfo[playerid][pkt9], PlayerInfo[playerid][pkt10],
PlayerInfo[playerid][pTwoCarsOn], PlayerInfo[playerid][pCar2], PlayerInfo[playerid][pTwoCarsData], PlayerInfo[playerid][pCarNow], PlayerInfo[playerid][pWeightPlus], PlayerInfo[playerid][pWeightData], PlayerInfo[playerid][pID]);
mysql_function_query(mysql_connection_ID, sql_p[playerid], false, "", ""), sql_p[playerid][0] = 0;

format(sql_p[playerid], MAX_STRING, "UPDATE `players` SET `Kolesocar2`='%d', `Spoiler2`='%d', `Bamper12`='%d', `Bamper22`='%d', `Nitro2`='%d', `Gidra2`='%d',\
`Pokraska2`='%d',`Cvet12`='%d',`Cvet22`='%d',`DataVhod`='%s',`DataVhod2`='%d',`DShkaf1`='%d', `DShkaf2`='%d', `DShkaf3`='%d', `DataShkaf1`='%d',\
`DataShkaf2`='%d', `DataShkaf3`='%d',`Indicator`='%d',`Mestopos`='%d',`Speedindi`='%d',`Animraz`='%d',`VIPData`='%d',`Gonka1`='%d',`Gonka2`='%d',\
`Gonka3`='%d',`AppX`='%f',`AppY`='%f',`AppZ`='%f', WHERE `ID` = '%d'",
PlayerInfo[playerid][pKolesocar2], PlayerInfo[playerid][pSpoiler2], PlayerInfo[playerid][pBamper12], PlayerInfo[playerid][pBamper22], PlayerInfo[playerid][pNitro2], PlayerInfo[playerid][pGidra2],
PlayerInfo[playerid][pPokraska2], PlayerInfo[playerid][pCvet12], PlayerInfo[playerid][pCvet22], PlayerInfo[playerid][pDataVhod], PlayerInfo[playerid][pDataVhod2], PlayerInfo[playerid][pDShkaf1],
PlayerInfo[playerid][pDShkaf2], PlayerInfo[playerid][pDShkaf3], PlayerInfo[playerid][pDataShkaf1], PlayerInfo[playerid][pDataShkaf2], PlayerInfo[playerid][pDataShkaf3],
PlayerInfo[playerid][pIndicator], PlayerInfo[playerid][pMestopos], PlayerInfo[playerid][pSpeedindi], PlayerInfo[playerid][pAnimraz], PlayerInfo[playerid][pVIPData], PlayerInfo[playerid][pGonka1],
PlayerInfo[playerid][pGonka2], PlayerInfo[playerid][pGonka3], PlayerInfo[playerid][pAppX], PlayerInfo[playerid][pAppY], PlayerInfo[playerid][pAppZ], PlayerInfo[playerid][pID]);
mysql_function_query(mysql_connection_ID, sql_p[playerid], false, "", ""), sql_p[playerid][0] = 0;

format(sql_p[playerid], MAX_STRING, "UPDATE `players` SET `AppInt`='%d', `AppWorld`='%d', `CarX`='%f',`CarY`='%f',`CarZ`='%f', `CarF`='%f', `FormaFrac`='%d',\
`Dead`='%d', `BlockCar1`='%d', `BlockCar2`='%d', `HealthCar1`='%f', `HealthCar2`='%f', `SafeCar1`='%d', `SafeCar2`='%d', `BChat`='%d',\
`AdminChat`='%d', `CNNChat`='%d', `AirSkill`='%d', `RPTest`='%d', `RPTime`='%d', `LeaderWarn`='%d', `Vote`='%d', `back`='%d', WHERE `ID` = '%d'",
PlayerInfo[playerid][pAppInt], PlayerInfo[playerid][pAppWorld], PlayerInfo[playerid][pCarX], PlayerInfo[playerid][pCarY], PlayerInfo[playerid][pCarZ], PlayerInfo[playerid][pCarF],
FormaFrac[playerid], DeadPlayer[playerid], PlayerInfo[playerid][pBlockCar1], PlayerInfo[playerid][pBlockCar2], PlayerInfo[playerid][pHealthCar1], PlayerInfo[playerid][pHealthCar2],
PlayerInfo[playerid][pSafeCar1], PlayerInfo[playerid][pSafeCar2], PlayerInfo[playerid][pBChat], PlayerInfo[playerid][pAdminChat], PlayerInfo[playerid][pCNNChat], PlayerInfo[playerid][pAirSkill],
PlayerInfo[playerid][pRPTest], PlayerInfo[playerid][pRPTime], PlayerInfo[playerid][pLeaderWarn], PlayerInfo[playerid][pVote], PlayerInfo[playerid][pBack], PlayerInfo[playerid][pID]);
mysql_function_query(mysql_connection_ID, sql_p[playerid], false, "", ""), sql_p[playerid][0] = 0;

format(sql_p[playerid], MAX_STRING, "UPDATE `players` SET `Hood`='%d', `Hood2`='%d', `Roof`='%d', `Roof2`='%d', `Sideskirt`='%d', `Sideskirt2`='%d',\
`Lamps`='%d', `Lamps2`='%d', `Exhaust`='%d', `Exhaust2`='%d', `Bullbar0`='%d', `Bullbar02`='%d', `Bullbar1`='%d', `Bullbar12`='%d',\
`Bullbar2`='%d', `Bullbar22`='%d', `Bullbar3`='%d', `Bullbar32`='%d', `Sign`='%d', `Sign2`='%d', `Vents`='%d', `Vents2`='%d',\
`Stereo`='%d', `Stereo2`='%d', `BolnicaArmy`='%d',`MPAd`='%d', WHERE `ID` = '%d'",
PlayerInfo[playerid][pHood], PlayerInfo[playerid][pHood2], PlayerInfo[playerid][pRoof], PlayerInfo[playerid][pRoof2], PlayerInfo[playerid][pSideskirt],
PlayerInfo[playerid][pSideskirt2], PlayerInfo[playerid][pLamps], PlayerInfo[playerid][pLamps2], PlayerInfo[playerid][pExhaust], PlayerInfo[playerid][pExhaust2],
PlayerInfo[playerid][pBullbar0], PlayerInfo[playerid][pBullbar02], PlayerInfo[playerid][pBullbar1], PlayerInfo[playerid][pBullbar12], PlayerInfo[playerid][pBullbar2],
PlayerInfo[playerid][pBullbar22], PlayerInfo[playerid][pBullbar3], PlayerInfo[playerid][pBullbar32], PlayerInfo[playerid][pSign], PlayerInfo[playerid][pSign2],
PlayerInfo[playerid][pVents], PlayerInfo[playerid][pVents2], PlayerInfo[playerid][pStereo], PlayerInfo[playerid][pStereo2], PlayerInfo[playerid][pBolnicaArmy],
PlayerInfo[playerid][pMPAd], PlayerInfo[playerid][pID]);
mysql_function_query(mysql_connection_ID, sql_p[playerid], false, "", ""), sql_p[playerid][0] = 0;

format(sql_p[playerid], MAX_STRING, "UPDATE `players` SET `quest`='%d', `q1`='%d', `q2`='%d', `q3`='%d', `q4`='%d', `q5`='%d', `q6`='%d', `q7`='%d',\
`q8`='%d', `q9`='%d', `q10`='%d', `q11`='%d', `q12`='%d', `q13`='%d', `q14`='%d', `q15`='%d', `medic`='%d', `quest2`='%d' WHERE `ID` = '%d'",
PlayerInfo[playerid][pQuest], PlayerInfo[playerid][pQ1], PlayerInfo[playerid][pQ2], PlayerInfo[playerid][pQ3], PlayerInfo[playerid][pQ4], PlayerInfo[playerid][pQ5],
PlayerInfo[playerid][pQ6], PlayerInfo[playerid][pQ7], PlayerInfo[playerid][pQ8], PlayerInfo[playerid][pQ9], PlayerInfo[playerid][pQ10], PlayerInfo[playerid][pQ11],
PlayerInfo[playerid][pQ12], PlayerInfo[playerid][pQ13], PlayerInfo[playerid][pQ14], PlayerInfo[playerid][pQ15], PlayerInfo[playerid][pMedic], PlayerInfo[playerid][pQuest2],
PlayerInfo[playerid][pID]);
mysql_function_query(mysql_connection_ID, sql_p[playerid], false, "", ""), sql_p[playerid][0] = 0;
//mysql_query(mysql_connection_ID, sql, false);
//mysql_tquery(mysql_connection_ID, sql, "", "");
return 1;
}
}
Pastebin, если там вдруг легче читать. (https://pastebin.com/AzeK8G33)

Ошибка стандартная идет в запросе, 1064, в mysql_log, пишет (null) no callback и как-то так.

Ошибка в логе:

ID соединения: 1
ID ошибки: 1064
Ошибка: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE `ID` = '11'' at line 1
Коллбэк:
Запрос: UPDATE `players` SET `Level`='4', `AdminLevel`='0', `MestoJail`='0', `Housecash`='0', `Text`='', `Car`='480',`Fuelcar`='15.932700', `Proz`='0', `DonateRank`='1', `Donatemoney`='9', `Radio`='0', `RadioTime`='0', `Object`='0', `ObjectData`='0',`StyleText`='0', `GPS`='0', `GPS2`='0', `Alarm`='0',`Alarm2`='0', WHERE `ID` = '11'

DeimoS
15.02.2018, 08:04
#define MAX_STRING 1024
new sql_p[MAX_PLAYERS][MAX_STRING];

Это ты так уменьшил? :D
Допустим, у тебя всего 10 слотов и MAX_PLAYERS будет равно 10.
Получается такой массив

new sql_p[10][1024];
Который займёт 10240 ячейки. Соответственно, при 100-ах игроках этот массив займёт 102400. И так далее.
Да и к чему это? У тебя же все 4700 ячеек использовались по делу. Сам себе проблем создал ради того, чтоб сэкономить памяти, при этом, и личное время потерял, и процессорное.


Ну а запросы твои не срабатывают, ибо ты их неправильно строишь. Перед WHERE лишняя запятая

`...`='%d', WHERE `ID` = '%d'


И да, то, что ты тут на ваял, делается и с одномерным массивом легко. Ты ведь не хранишь текст запросов постоянно. Для чего тебе там разделение на каждого игрока?
Хотя делить подобным образом запросы ради того, чтоб экономить памяти - не лучшая затея. Как я уже сказал, ты только процессорное время теряешь, да MySQL нагружаешь (при рестарте и онлайне в 1000 игроков MySQL сервер может даже загнуться, если таблица реализована криво или MySQL настроена не очень правильно. Ну или если для MySQL мало мощностей на сервере выделено). Либо отправляй одном запросом, либо откажись вообще от сохранении всего при выходе и сохраняй при изменении, оставив на выход только то, что часто изменяется (лучше всего будет).

Kovshevoy
15.02.2018, 10:53
Это ты так уменьшил? :D
Допустим, у тебя всего 10 слотов и MAX_PLAYERS будет равно 10.
Получается такой массив

new sql_p[10][1024];
Который займёт 10240 ячейки. Соответственно, при 100-ах игроках этот массив займёт 102400. И так далее.
Да и к чему это? У тебя же все 4700 ячеек использовались по делу. Сам себе проблем создал ради того, чтоб сэкономить памяти, при этом, и личное время потерял, и процессорное.


Ну а запросы твои не срабатывают, ибо ты их неправильно строишь. Перед WHERE лишняя запятая

`...`='%d', WHERE `ID` = '%d'


И да, то, что ты тут на ваял, делается и с одномерным массивом легко. Ты ведь не хранишь текст запросов постоянно. Для чего тебе там разделение на каждого игрока?
Хотя делить подобным образом запросы ради того, чтоб экономить памяти - не лучшая затея. Как я уже сказал, ты только процессорное время теряешь, да MySQL нагружаешь (при рестарте и онлайне в 1000 игроков MySQL сервер может даже загнуться, если таблица реализована криво или MySQL настроена не очень правильно. Ну или если для MySQL мало мощностей на сервере выделено). Либо отправляй одном запросом, либо откажись вообще от сохранении всего при выходе и сохраняй при изменении, оставив на выход только то, что часто изменяется (лучше всего будет).

Ну, на самом деле, когда стоял стандартный 4700, был стек около 38к. Сейчас я поправил, стек стал 33к. Да и старый размер амх был 9мб, после того как я со всеми запросами сделал подобным образом - стал весить 7 мб, и на сервере, заметно стало легче играть, уменьшились фризы.

DeimoS
15.02.2018, 12:57
Эмм, так ты просто перенёс массив в сегмент данных из стэка, потому он и уменьшился. То же самое было бы, если бы ты старый массив сделал бы глобальным или вместо "new" прописал "static".
Но то, что ты сейчас сделал, и памяти больше потребляет, и процессор сильнее нагружает.

Kovshevoy
15.02.2018, 20:21
Эмм, так ты просто перенёс массив в сегмент данных из стэка, потому он и уменьшился. То же самое было бы, если бы ты старый массив сделал бы глобальным или вместо "new" прописал "static".
Но то, что ты сейчас сделал, и памяти больше потребляет, и процессор сильнее нагружает.

Ну, пока, играет народ (20 человек), все наоборот говорят что стало меньше фризов, смотрел нагрузку CPU, стала не сильно, но меньше.

DeimoS
15.02.2018, 21:18
Ну, пока, играет народ (20 человек), все наоборот говорят что стало меньше фризов, смотрел нагрузку CPU, стала не сильно, но меньше.

То, что ты изменил код сохранения аккаунтов, никак не должно повлиять на работу сервера в целом (разве что ты не сохраняешь аккаунты по таймеру или ещё как, а не только при выходе). Тем более, то, что ты потребление стэка уменьшил, раздув сегмент данных впустую.

И дабы не гадать на кофейной гуще, лучше бы просто подключил профайлер, прогнал денёк без рестартов и посмотрел какие функции больше всего грузят сервер