Просмотр полной версии : [Вопрос] Способ сохранения..
Здравствуйте. У меня в моде (как и на других крупных проектах) сделано следующее сохранение: изменили переменную -> сохранили её в базу. Пример:
PlayerInfo[playerid][pJob] = listitem+1;
UpdatePlayerInfo(playerid, "job", PlayerInfo[playerid][pJob]); // вызывается сток с сохранением с данной переменной и значением
И так везде.. Может кто знает другой подобный способ сохранения?
Здравствуйте. У меня в моде (как и на других крупных проектах) сделано следующее сохранение: изменили переменную -> сохранили её в базу. Пример:
PlayerInfo[playerid][pJob] = listitem+1;
UpdatePlayerInfo(playerid, "job", PlayerInfo[playerid][pJob]); // вызывается сток с сохранением с данной переменной и значением
И так везде.. Может кто знает другой подобный способ сохранения?
Сохранять при дисконнекте игрока.
Вообще, не вижу смысла сразу же обновлять. Потери данных даже при крашах и вылетах не случается.
Здравствуйте. У меня в моде (как и на других крупных проектах) сделано следующее сохранение: изменили переменную -> сохранили её в базу. Пример:
PlayerInfo[playerid][pJob] = listitem+1;
UpdatePlayerInfo(playerid, "job", PlayerInfo[playerid][pJob]); // вызывается сток с сохранением с данной переменной и значением
И так везде.. Может кто знает другой подобный способ сохранения?
Все правильно, молодец, так и нужно, изменил переменную - сохранил.
Другого способа нет, только как сказали выше при дисконнекте.
(Некоторые вообще не функцию создают(как ты), а используют напрямую запросы, что не читабельно).
Сохранять при дисконнекте игрока.
Вообще, не вижу смысла сразу же обновлять. Потери данных даже при крашах и вылетах не случается.
Сохранять при дисконнекте? Зачем заниматься мазахизмом? К тому же на всех крупных серверах (SRP, Advance, Diamond, Arizona) сохранение проходит как у меня в примере (изменил переменную -> сохранил), это самый оптимальный вариант.
- - - Добавлено - - -
Все правильно, молодец, так и нужно, изменил переменную - сохранил.
Другого способа нет, только как сказали выше при дисконнекте.
(Некоторые вообще не функцию создают(как ты), а используют напрямую запросы, что не читабельно).
Да я знаю что так и нужно, но может есть какой то другой способ, например перехватить enum PlayerInfo и там отслеживать изменение переменной и сохранять (ЭТО МОИ ФАНТАЗИИ, ТАКОГО КОНЕЧНО СДЕЛАТЬ НЕЛЬЗЯ, НО КАК ПРИМЕР :blush2:)
Сохранять при дисконнекте игрока.
Вообще, не вижу смысла сразу же обновлять. Потери данных даже при крашах и вылетах не случается.
В некоторых случаях OnPlayerDisconnect тупо просто не вызывается, допустим играешь ты 6-ой час, и вдруг краш сервера, в этом случае OnPlayerDisconnect пропускает, и твои деньги/донат который ты наработал идут в пропасть.
Или если хочешь можешь сохранять данные в OnPlayerUpdate
- - - Добавлено - - -
Сохранять при дисконнекте? Зачем заниматься мазахизмом? К тому же на всех крупных серверах (SRP, Advance, Diamond, Arizona) сохранение проходит как у меня в примере (изменил переменную -> сохранил), это самый оптимальный вариант.
- - - Добавлено - - -
Да я знаю что так и нужно, но может есть какой то другой способ, например перехватить enum PlayerInfo и там отслеживать изменение переменной и сохранять (ЭТО МОИ ФАНТАЗИИ, ТАКОГО КОНЕЧНО СДЕЛАТЬ НЕЛЬЗЯ, НО КАК ПРИМЕР :blush2:)
Перехватить enum?
enum - это лишь набор констант, просто сделали это в обертку.
Может кто и занимался подобным, зайдет подскажет, но я бы ничего не менял, и оставил как есть - это самый оптимальный вариант
P.S Можно конечно сделать макрос что-то типо:
#define __[%0][%1][%2] = %3 PlayerInfo[%0][%1] = %3;\
UpdatePlayerInfo(%0, "%2", PlayerInfo[%0][%1]);
Или отдельную функцию вместе с присванием члену перечисления.
Да я знаю что так и нужно, но может есть какой то другой способ, например перехватить enum PlayerInfo и там отслеживать изменение переменной и сохранять (ЭТО МОИ ФАНТАЗИИ, ТАКОГО КОНЕЧНО СДЕЛАТЬ НЕЛЬЗЯ, НО КАК ПРИМЕР :blush2:)
На самом деле, такое сделать можно: http://forum.sa-mp.com/showthread.php?t=611860 (github (https://github.com/oscar-broman/samp-observer)).
С этой библиотекой можно перехватить изменение любой переменной.
Да я знаю что так и нужно, но может есть какой то другой способ, например перехватить enum PlayerInfo и там отслеживать изменение переменной и сохранять (ЭТО МОИ ФАНТАЗИИ, ТАКОГО КОНЕЧНО СДЕЛАТЬ НЕЛЬЗЯ, НО КАК ПРИМЕР :blush2:)
А если тебе нужно будет изменить значение, но не сохранять его? :) Или не все значения сохранять. Как по мне, лучше уж писать на 20 символов больше, но контролировать происходящее в твоём скрипте. А подобный скрытый функционал лишь затрудняет понимание алгоритма работы кода
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot