PDA

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



m1n1vv
17.03.2016, 17:35
Привет. Есть одна не понятная проблема. Я задал полю в таблице значение по умолчанию (оружие), но при выборе скина все оружие сбрасывается.
По умолчанию:

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
А если сразу нажать спавн, то поле не теряет изначальные значения. Использую стандартный выбор скинов.

DeimoS
17.03.2016, 17:52
Так показывай загрузку/сохранение

m1n1vv
17.03.2016, 17:56
Загрузка:

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, "", "");

DeimoS
17.03.2016, 18:09
Вот с этим static const удобство удобством, но читать код невозможно =\
Для чего ты создал массив в 100 ячеек, если в cache_get_field_content имеется ограничение в 50? :)

Ну либо я не особо вник, либо проблем тут и правда нет. Значение меняется прямо в БД и именно при смене скина или именно в переменных?

m1n1vv
17.03.2016, 18:09
Сброс происходит, когда начинаешь листать скины. И там просто static )

DeimoS
17.03.2016, 18:24
Сброс происходит, когда начинаешь листать скины. И там просто static )

Прямо в БД или только в самих переменных, а при выходе и в БД записывается?

m1n1vv
17.03.2016, 18:30
Сейчас точно проверил. После регистрации то поле сбрасывает оружие. Скорей всего из-за времени. Надо при выборе отключить сохранение.

DeimoS
17.03.2016, 18:34
Сейчас точно проверил. После регистрации то поле сбрасывает оружие. Скорей всего из-за времени. Надо при выборе отключить сохранение.

Так а зачем вообще сохранять при выборе скина его?

m1n1vv
17.03.2016, 18:43
Так а зачем вообще сохранять при выборе скина его?

У меня есть сохранение в таймере, а при выборе скина игрок без оружия.

DeimoS
17.03.2016, 18:50
У меня есть сохранение в таймере, а при выборе скина игрок без оружия.

А зачем сохранять в таймере? Это же не файлы какие-то, в которых трудно нормально реализовать сохранение прямо во время изменения того или иного значения. Не проще ли инфу об оружии сохранять при выходе с сервера + при использовании GivePlayerWeapon/ResetPlayerWeapons? Краши случаются не так часто, чтоб мучить сервер сохранением инфы о игроках в таймере

Да и спрашивать информацию у игрока - верный пропуск читеров к себе на сервер. Мне ничего не помешает начитерить себе кучу патрон и выйти с сервера. Не проще ли вести контроль оружия на стороне сервера? Есть же OnPlayerWeaponShot

m1n1vv
17.03.2016, 19:00
Еще раз все проверил. Вот подробно: если при выборе скина сразу нажать спавн, то оружие сохранится, а если пролистать и нажать спавн, то данные обнуляются.

DeimoS
17.03.2016, 19:08
Еще раз все проверил. Вот подробно: если при выборе скина сразу нажать спавн, то оружие сохранится, а если пролистать и нажать спавн, то данные обнуляются.

Ну так показывай то сохранение, что срабатывает в таймере у тебя.

$continue$
17.03.2016, 19:13
Debug MySQL on:


mysql_log(LOG_ALL, LOG_TYPE_HTML);

В логах должно оказаться обнуление или сломанный запрос. В противном случай у Вас там мистика какая то.

m1n1vv
17.03.2016, 19:17
Ну так показывай то сохранение, что срабатывает в таймере у тебя.

Сейчас таймер я вообще выключил

- - - Добавлено - - -


Debug MySQL on:


mysql_log(LOG_ALL, LOG_TYPE_HTML);

В логах должно оказаться обнуление или сломанный запрос. В противном случай у Вас там мистика какая то.

Тебе это передать?

$continue$
17.03.2016, 19:59
Идеально было бы самому отыскать запрос с обнулением данных.

m1n1vv
17.03.2016, 20:45
Идеально было бы самому отыскать запрос с обнулением данных.
Ну на данный момент обнуляется при выходе (там сохранение).
В спавне:

for(new slot; slot < 13; slot++) GivePlayerWeapon(playerid, pInfo[playerid][pWeapons][slot], pInfo[playerid][pAmmo][slot]);
Все же что-то в загрузке

m1n1vv
18.03.2016, 12:45
Новым игрокам не выдает оружие,и если выйти и прописать в бд, то при входе все равно не выдаст.

TheMallard
23.03.2016, 16:45
Новым игрокам не выдает оружие,и если выйти и прописать в бд, то при входе все равно не выдаст.

OnPlayerRequestClass - содержимое?

m1n1vv
23.03.2016, 19:29
OnPlayerRequestClass - содержимое?

Проблему уже устранил