Просмотр полной версии : [Вопрос] Сброс данных при выборе скина
Привет. Есть одна не понятная проблема. Я задал полю в таблице значение по умолчанию (оружие), но при выборе скина все оружие сбрасывается.
По умолчанию:
0|0|22|0|29|31|0|0|0|0|0|0|0
Если пролистать в выборе скина:
0|0|0|0|0|0|0|0|0|0|0|0|0
А если сразу нажать спавн, то поле не теряет изначальные значения. Использую стандартный выбор скинов.
Так показывай загрузку/сохранение
Загрузка:
new wa[100];
cache_get_field_content(0, "pWeapons", wa, mysql_connect_id, 50);
sscanf(wa, "p<|>iiiiiiiiiiiii", pInfo[playerid][pWeapons][0], pInfo[playerid][pWeapons][1], pInfo[playerid][pWeapons][2], pInfo[playerid][pWeapons][3], pInfo[playerid][pWeapons][4],
pInfo[playerid][pWeapons][5], pInfo[playerid][pWeapons][6], pInfo[playerid][pWeapons][7], pInfo[playerid][pWeapons][8], pInfo[playerid][pWeapons][9], pInfo[playerid][pWeapons][10], pInfo[playerid][pWeapons][11],
pInfo[playerid][pWeapons][12]);
cache_get_field_content(0, "pAmmo", wa, mysql_connect_id, 50);
sscanf(wa, "p<|>iiiiiiiiiiiii", pInfo[playerid][pAmmo][0], pInfo[playerid][pAmmo][1], pInfo[playerid][pAmmo][2], pInfo[playerid][pAmmo][3], pInfo[playerid][pAmmo][4], pInfo[playerid][pAmmo][5], pInfo[playerid][pAmmo][6],
pInfo[playerid][pAmmo][7], pInfo[playerid][pAmmo][8],pInfo[playerid][pAmmo][9], pInfo[playerid][pAmmo][10], pInfo[playerid][pAmmo][11], pInfo[playerid][pAmmo][12]);
Сохранение:
static str[] = "UPDATE `accounts` SET `pWeapons` = '%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d', `pAmmo` = '%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d' WHERE `pID` = '%d'";
new query[sizeof str+100+(-13*4)+(-2+11)];
for(new i = 0; i < 13; i++) GetPlayerWeaponData(playerid, i, pInfo[playerid][pWeapons][i], pInfo[playerid][pAmmo][i]);
mysql_format(mysql_connect_id, query, sizeof query, str, pInfo[playerid][pWeapons][0], pInfo[playerid][pWeapons][1], pInfo[playerid][pWeapons][2], pInfo[playerid][pWeapons][3], pInfo[playerid][pWeapons][4],
pInfo[playerid][pWeapons][5], pInfo[playerid][pWeapons][6], pInfo[playerid][pWeapons][7], pInfo[playerid][pWeapons][8], pInfo[playerid][pWeapons][9], pInfo[playerid][pWeapons][10], pInfo[playerid][pWeapons][11],
pInfo[playerid][pWeapons][12], pInfo[playerid][pAmmo][0], pInfo[playerid][pAmmo][1], pInfo[playerid][pAmmo][2], pInfo[playerid][pAmmo][3], pInfo[playerid][pAmmo][4], pInfo[playerid][pAmmo][5], pInfo[playerid][pAmmo][6],
pInfo[playerid][pAmmo][7], pInfo[playerid][pAmmo][8],pInfo[playerid][pAmmo][9], pInfo[playerid][pAmmo][10], pInfo[playerid][pAmmo][11], pInfo[playerid][pAmmo][12], pInfo[playerid][pID]);
mysql_function_query(mysql_connect_id, query, false, "", "");
Вот с этим static const удобство удобством, но читать код невозможно =\
Для чего ты создал массив в 100 ячеек, если в cache_get_field_content имеется ограничение в 50? :)
Ну либо я не особо вник, либо проблем тут и правда нет. Значение меняется прямо в БД и именно при смене скина или именно в переменных?
Сброс происходит, когда начинаешь листать скины. И там просто static )
Сброс происходит, когда начинаешь листать скины. И там просто static )
Прямо в БД или только в самих переменных, а при выходе и в БД записывается?
Сейчас точно проверил. После регистрации то поле сбрасывает оружие. Скорей всего из-за времени. Надо при выборе отключить сохранение.
Сейчас точно проверил. После регистрации то поле сбрасывает оружие. Скорей всего из-за времени. Надо при выборе отключить сохранение.
Так а зачем вообще сохранять при выборе скина его?
Так а зачем вообще сохранять при выборе скина его?
У меня есть сохранение в таймере, а при выборе скина игрок без оружия.
У меня есть сохранение в таймере, а при выборе скина игрок без оружия.
А зачем сохранять в таймере? Это же не файлы какие-то, в которых трудно нормально реализовать сохранение прямо во время изменения того или иного значения. Не проще ли инфу об оружии сохранять при выходе с сервера + при использовании GivePlayerWeapon/ResetPlayerWeapons? Краши случаются не так часто, чтоб мучить сервер сохранением инфы о игроках в таймере
Да и спрашивать информацию у игрока - верный пропуск читеров к себе на сервер. Мне ничего не помешает начитерить себе кучу патрон и выйти с сервера. Не проще ли вести контроль оружия на стороне сервера? Есть же OnPlayerWeaponShot
Еще раз все проверил. Вот подробно: если при выборе скина сразу нажать спавн, то оружие сохранится, а если пролистать и нажать спавн, то данные обнуляются.
Еще раз все проверил. Вот подробно: если при выборе скина сразу нажать спавн, то оружие сохранится, а если пролистать и нажать спавн, то данные обнуляются.
Ну так показывай то сохранение, что срабатывает в таймере у тебя.
$continue$
17.03.2016, 19:13
Debug MySQL on:
mysql_log(LOG_ALL, LOG_TYPE_HTML);
В логах должно оказаться обнуление или сломанный запрос. В противном случай у Вас там мистика какая то.
Ну так показывай то сохранение, что срабатывает в таймере у тебя.
Сейчас таймер я вообще выключил
- - - Добавлено - - -
Debug MySQL on:
mysql_log(LOG_ALL, LOG_TYPE_HTML);
В логах должно оказаться обнуление или сломанный запрос. В противном случай у Вас там мистика какая то.
Тебе это передать?
$continue$
17.03.2016, 19:59
Идеально было бы самому отыскать запрос с обнулением данных.
Идеально было бы самому отыскать запрос с обнулением данных.
Ну на данный момент обнуляется при выходе (там сохранение).
В спавне:
for(new slot; slot < 13; slot++) GivePlayerWeapon(playerid, pInfo[playerid][pWeapons][slot], pInfo[playerid][pAmmo][slot]);
Все же что-то в загрузке
Новым игрокам не выдает оружие,и если выйти и прописать в бд, то при входе все равно не выдаст.
TheMallard
23.03.2016, 16:45
Новым игрокам не выдает оружие,и если выйти и прописать в бд, то при входе все равно не выдаст.
OnPlayerRequestClass - содержимое?
OnPlayerRequestClass - содержимое?
Проблему уже устранил
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot