09:54
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
        
[Include] RemoveBuilding (2)
JasonGordon 24.05.2017 23:48
[SA-MP] Hosted Tab (116)
DieSeL 17.05.2017 17:33
Физрук (15)
Lanablogger1 16.05.2017 16:00
 





Рекомендуем:
Добавить IP: 95.172.59.51:7777





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
Скачать GTA SAMP 0.3.7 - Кл... 20.07.2015
Страница 1 из 11
Модератор форума: AXE, Weddew 
Форум SAMP о мультиплеерах для GTA. » SAMP скачивание и обсуждение » Вопросы и Проблемы » чудеса с mysql запросами
чудеса с mysql запросами
_BigSm0ke_Дата: Четверг, 25.07.2013, 00:29 | Сообщение # 1
Местный
Группа: I'm V.I.P.
Сообщений: 674
Награды: 5
Город: Москва
Репутация: 127
Замечания: 0%
Статус:
Это кароче какой-то бред, я не пойму в чем прикол.
Есть значит 2 таблицы. accounts - собсно аккаунты и friendlist - список друзей игроков.

Есть функция сохранения аккаунта:

[pwn]

SaveAccount(playerid)
{
if(PlayerAccount[playerid][aLogged] == true && !IsPlayerNPC(playerid))
{
CheckMySQLConnection();
new
query[1024],query1[1024],query2[1024],query22[512],
sqlname[MAX_PLAYER_NAME],
sqlpass[64],
sqlpost[24];
mysql_real_escape_string(PlayerAccount[playerid][aName], sqlname);
mysql_real_escape_string(PlayerAccount[playerid][aPassword], sqlpass);
mysql_real_escape_string(PlayerAccount[playerid][aPost], sqlpost);
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
PlayerAccount[playerid][aX]=X;
PlayerAccount[playerid][aY]=Y;
PlayerAccount[playerid][aZ]=Z;
PlayerAccount[playerid][aInt]=GetPlayerInterior(playerid);
PlayerAccount[playerid][aWorld]=GetPlayerVirtualWorld(playerid);
format(query, sizeof(query), "UPDATE `accounts` SET `Nickname` = '%s',`Password` ='%s',`CharInfo`='%d',`HP`='%d',`CP`='%d',`Skin`='%d',`Sex`='%d',`Age`='%d',`Country`='%d',`Int`='%d',`World`='%d',`Money`='%d',`BMoney`='%d ',`PMoney`='%d',`Admin`='%d',`Phone`='%d',`House`='%d',`Hotel`='%d',`Biz`='%d',`Car1`='%d',`Car2`='%d',`Car3`='%d',",
sqlname,
sqlpass,
PlayerAccount[playerid][aCharInfo],
PlayerAccount[playerid][aHP],
PlayerAccount[playerid][aCP],
PlayerAccount[playerid][aSkin],
PlayerAccount[playerid][aSex],
PlayerAccount[playerid][aAge],
PlayerAccount[playerid][aCountry],
PlayerAccount[playerid][aInt],
PlayerAccount[playerid][aWorld],
PlayerAccount[playerid][aMoney],
PlayerAccount[playerid][aBMoney],
PlayerAccount[playerid][aPMoney],
PlayerAccount[playerid][aAdmin],
PlayerAccount[playerid][aPhone],
PlayerAccount[playerid][aHouse],
PlayerAccount[playerid][aHotel],
PlayerAccount[playerid][aBiz],
PlayerAccount[playerid][aCar1],
PlayerAccount[playerid][aCar2],
PlayerAccount[playerid][aCar3]);
format(query1, sizeof(query1), " `WCar`='%d',`FCar` = '%d',`Fraction` = '%d',`Post`='%s',`Rank`='%d',`Work`='%d',\
`PlayedTime`='%d',`PlayedSession`='%d',`LastOnline`='%d', `X` = '%f', `Y` = '%f', `Z` = '%f',\
`FermerSkill`='%d', `CarierSkill`='%d',`TruckerSkill`='%d',`LawyerSkill`='%d',`DetectiveSkill`='%d',`TaxiSkill`='%d',`SportSkill`='%d',`MechSkill`='%d' WHERE `ID` = '%d'",
PlayerAccount[playerid][aWCar],
PlayerAccount[playerid][aFCar],
PlayerAccount[playerid][aFraction],
sqlpost,
PlayerAccount[playerid][aRank],
PlayerAccount[playerid][aWork],
PlayerAccount[playerid][aPlayedTime],
PlayerAccount[playerid][aPlayedSession],
PlayerAccount[playerid][aLastOnline],
PlayerAccount[playerid][aX],
PlayerAccount[playerid][aY],
PlayerAccount[playerid][aZ],
PlayerAccount[playerid][aFermerSkill],
PlayerAccount[playerid][aCarierSkill],
PlayerAccount[playerid][aTruckerSkill],
PlayerAccount[playerid][aLawyerSkill],
PlayerAccount[playerid][aDetectiveSkill],
PlayerAccount[playerid][aTaxiSkill],
PlayerAccount[playerid][aSportSkill],
PlayerAccount[playerid][aMechSkill],
PlayerAccount[playerid][aID]);
format(query2, sizeof(query2), "UPDATE `accounts` SET `Cigs`='%d',`Clock`='%d',`Rope`='%d',`Mask`='%d',`Hat`='%d',`Glass`='%d',`Kanistra`='%d', `Drugs`='%d',`Weapon`='%d',`Ammo`='%d',`DriverLic`='%d',`SailLic`='%d',`FlyLic`='%d',`WeaponLic`='%d',`TaxDebt`='%d',`Spawn`='%d',`InHouse`= '%d',`InBiz`='%d',`DrugTemp`='%d',`DrugLimit`='%d',`WeaponTemp`='%d',`WeaponLimit`='%d',`SportBlock`='%d',`PoliBlock`='%d',`WSkill1`='%d', ",
PlayerAccount[playerid][aCigs],
PlayerAccount[playerid][aClock],
PlayerAccount[playerid][aRope],
PlayerAccount[playerid][aMask],
PlayerAccount[playerid][aHat],
PlayerAccount[playerid][aGlass],
PlayerAccount[playerid][aKanistra],
PlayerAccount[playerid][aDrugs],
PlayerAccount[playerid][aWeapon],
PlayerAccount[playerid][aAmmo],
PlayerAccount[playerid][aDriverLic],
PlayerAccount[playerid][aSailLic],
PlayerAccount[playerid][aFlyLic],
PlayerAccount[playerid][aWeaponLic],
PlayerAccount[playerid][aTaxDebt],
PlayerAccount[playerid][aSpawn],
PlayerAccount[playerid][aInHouse],
PlayerAccount[playerid][aInBiz],
PlayerAccount[playerid][aDrugTemp],
PlayerAccount[playerid][aDrugLimit],
PlayerAccount[playerid][aWeaponTemp],
PlayerAccount[playerid][aWeaponLimit],
PlayerAccount[playerid][aSportBlock],
PlayerAccount[playerid][aPoliBlock],
PlayerAccount[playerid][aWSkill1]);
format(query22, sizeof(query22), "`WSkill2`='%d',`WSkill3`='%d',`WSkill4`='%d',`WSkill5`='%d',`WSkill6`='%d',`WSkill7`='%d',`WSkill8`='%d',`WSkill9`='%d',`WSkill10`='%d',`Al coLvl`='%d',`DrugLvl`='%d',`SmokeLvl`='%d',`BleedLvl`='%d',`BreakLvl`='%d',`Lomka`='%d' WHERE `ID` = '%d'",
PlayerAccount[playerid][aWSkill2],
PlayerAccount[playerid][aWSkill3],
PlayerAccount[playerid][aWSkill4],
PlayerAccount[playerid][aWSkill5],
PlayerAccount[playerid][aWSkill6],
PlayerAccount[playerid][aWSkill7],
PlayerAccount[playerid][aWSkill8],
PlayerAccount[playerid][aWSkill9],
PlayerAccount[playerid][aWSkill10],
PlayerAccount[playerid][aAlcoLvl],
PlayerAccount[playerid][aDrugLvl],
PlayerAccount[playerid][aSmokeLvl],
PlayerAccount[playerid][aBleedLvl],
PlayerAccount[playerid][aBreakLvl],
PlayerAccount[playerid][aLomka],
PlayerAccount[playerid][aID]);

strcat(query,query1,1024);
strcat(query2,query22,1024);
mysql_query(query);
mysql_query(query2);
printf("Save Account, ID: %s ",sqlname);
printf(" %s ",query);
printf(" %s ",query2);
SaveFriendList(playerid);
}
return 1;
}

[/pwn]

как видите после сохранения аккаунта вызывается функция сохранения френд листа, вот она:

[pwn]

SaveFriendList(playerid)
{
CheckMySQLConnection();
new query[1024];
format(query, sizeof(query), "UPDATE `friendlist` SET `f1`='%d',`f2`='%d',`f3`='%d',`f4`='%d',`f5`='%d',`f6`='%d',`f7`='%d',`f8`='%d',`f9`='%d',`f10`='%d',`f11`='%d',`f12`='%d',`f13`='%d',`f14`= '%d',`f15`='%d',`f16`='%d',`f17`='%d',`f18`='%d',`f19`='%d',`f20`='%d' WHERE `charid` = '%d'",
friendlist[playerid][0],friendlist[playerid][1],friendlist[playerid][2],friendlist[playerid][3],friendlist[playerid][4],friendlist[playerid][5],friendlist[playerid][6],
friendlist[playerid][7],friendlist[playerid][8],friendlist[playerid][9],friendlist[playerid][10],friendlist[playerid][11],friendlist[playerid][12],friendlist[playerid][13],
friendlist[playerid][14],friendlist[playerid][15],friendlist[playerid][16],friendlist[playerid][17],friendlist[playerid][18],friendlist[playerid][19],PlayerAccount[playerid][aID]);
mysql_query(query);
printf("%s",query);
return 1;
}

[/pwn]

Заявляю с полной уверенностью, что таблицы все нормальные, запросы как вручную через navicat так и из мода поотдельности хорошо сохраняют данные и никаких проблем не возникает.

Вот скажем сделаем простенькую команду:

[pwn]
CMD:saveaccount(playerid,params[])
{
SaveAccount(playerid);
SendClientMessage(playerid, COLOR_GREEN, " Аккаунт сохранен ");
return 1;
}
[/pwn]

так вот она при вводе в игре выдает "SERVER: UNKNOWN COMMAND"
а в окне сервера в результате функций printf выводятся запросы сохранения аккаунта, но запроса на сохранение френдлиста нету.

И сейчас самое главное:

Я ставлю SaveFriendList(playerid); в самое начало:

[pwn]
SaveAccount(playerid)
{
if(PlayerAccount[playerid][aLogged] == true && !IsPlayerNPC(playerid))
{
SaveFriendList(playerid);
CheckMySQLConnection();
new
query[1024],query1[1024],query2[1024],query22[512],
sqlname[MAX_PLAYER_NAME],
sqlpass[64],
.....далее как выше
[/pwn]

то все тут же работает нормально... в окне сервера выводит запросы и сохранения френдлиста и аккаунта, в игре в чате пишет "Аккаунт сохранен"...

чудеса.. в чем прикол?)



LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON
Продаю РП мод: подробнее тут
Решаю задачи по техническим дисциплинам, подробнее тут


Сообщение отредактировал _BigSm0ke_ - Четверг, 25.07.2013, 00:30
AlcoholikДата: Четверг, 25.07.2013, 12:06 | Сообщение # 2
Группа: Администратор
Сообщений: 8284
Награды: 111
Город: Санкт-Петербург
Репутация: 5945
Статус:
Массив PlayerAccount какой размер имеет? И ещё, зачем так делать?
Цитата
strcat(query,query1,1024);
strcat(query2,query22,1024);

Обработай лучше в 4 раза запрос.
В логах ничего нет странного?



if(isset($beer)&&isset($girl)) { drink($beer);fuck($girl); }else die();
Мониторинг sa:mp серверов


Приватно никого не консультирую, моды также не пишу, ни так, ни за деньги.
Моя ICQ 675715, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.
_BigSm0ke_Дата: Суббота, 17.08.2013, 23:23 | Сообщение # 3
Местный
Группа: I'm V.I.P.
Сообщений: 674
Награды: 5
Город: Москва
Репутация: 127
Замечания: 0%
Статус:
Цитата (RoACh)
Массив PlayerAccount какой размер имеет?

MAX_PLAYERS
Цитата (RoACh)
Обработай лучше в 4 раза запрос.


кароче да вся проблема была в этих длинных строках query... сделал сохранение 4-мя последовательными запросами с одной query[1024];



LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON
Продаю РП мод: подробнее тут
Решаю задачи по техническим дисциплинам, подробнее тут


Сообщение отредактировал _BigSm0ke_ - Воскресенье, 18.08.2013, 15:56
KlebitДата: Воскресенье, 18.08.2013, 18:02 | Сообщение # 4
Уверенный в себе
Группа: Пользователи
Сообщений: 265
Награды: 0
Город: None
Репутация: -31
Замечания: 60%
Статус:
зачем постоянно сохранять информацию, которая меняется от силы раз в день?
</