Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 7 из 7
  1. #1
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±

    Способ сохранения..

    Здравствуйте. У меня в моде (как и на других крупных проектах) сделано следующее сохранение: изменили переменную -> сохранили её в базу. Пример:
    PHP код:
    PlayerInfo[playerid][pJob] = listitem+1;
    UpdatePlayerInfo(playerid"job"PlayerInfo[playerid][pJob]); // вызывается сток с сохранением с данной переменной и значением 
    И так везде.. Может кто знает другой подобный способ сохранения?

  2. #2
    Аватар для SooBad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.04.2017
    Адрес
    Краснодар
    Сообщений
    83
    Репутация:
    20 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Здравствуйте. У меня в моде (как и на других крупных проектах) сделано следующее сохранение: изменили переменную -> сохранили её в базу. Пример:
    PHP код:
    PlayerInfo[playerid][pJob] = listitem+1;
    UpdatePlayerInfo(playerid"job"PlayerInfo[playerid][pJob]); // вызывается сток с сохранением с данной переменной и значением 
    И так везде.. Может кто знает другой подобный способ сохранения?
    Сохранять при дисконнекте игрока.
    Вообще, не вижу смысла сразу же обновлять. Потери данных даже при крашах и вылетах не случается.

  3. #3
    Аватар для Long-
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.11.2016
    Сообщений
    131
    Репутация:
    23 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Здравствуйте. У меня в моде (как и на других крупных проектах) сделано следующее сохранение: изменили переменную -> сохранили её в базу. Пример:
    PHP код:
    PlayerInfo[playerid][pJob] = listitem+1;
    UpdatePlayerInfo(playerid"job"PlayerInfo[playerid][pJob]); // вызывается сток с сохранением с данной переменной и значением 
    И так везде.. Может кто знает другой подобный способ сохранения?
    Все правильно, молодец, так и нужно, изменил переменную - сохранил.
    Другого способа нет, только как сказали выше при дисконнекте.
    (Некоторые вообще не функцию создают(как ты), а используют напрямую запросы, что не читабельно).

  4. #4
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от SooBad Посмотреть сообщение
    Сохранять при дисконнекте игрока.
    Вообще, не вижу смысла сразу же обновлять. Потери данных даже при крашах и вылетах не случается.
    Сохранять при дисконнекте? Зачем заниматься мазахизмом? К тому же на всех крупных серверах (SRP, Advance, Diamond, Arizona) сохранение проходит как у меня в примере (изменил переменную -> сохранил), это самый оптимальный вариант.

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

    Цитата Сообщение от Long- Посмотреть сообщение
    Все правильно, молодец, так и нужно, изменил переменную - сохранил.
    Другого способа нет, только как сказали выше при дисконнекте.
    (Некоторые вообще не функцию создают(как ты), а используют напрямую запросы, что не читабельно).
    Да я знаю что так и нужно, но может есть какой то другой способ, например перехватить enum PlayerInfo и там отслеживать изменение переменной и сохранять (ЭТО МОИ ФАНТАЗИИ, ТАКОГО КОНЕЧНО СДЕЛАТЬ НЕЛЬЗЯ, НО КАК ПРИМЕР )

  5. #5
    Аватар для Long-
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.11.2016
    Сообщений
    131
    Репутация:
    23 ±
    Цитата Сообщение от SooBad Посмотреть сообщение
    Сохранять при дисконнекте игрока.
    Вообще, не вижу смысла сразу же обновлять. Потери данных даже при крашах и вылетах не случается.
    В некоторых случаях OnPlayerDisconnect тупо просто не вызывается, допустим играешь ты 6-ой час, и вдруг краш сервера, в этом случае OnPlayerDisconnect пропускает, и твои деньги/донат который ты наработал идут в пропасть.
    Или если хочешь можешь сохранять данные в OnPlayerUpdate

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

    Цитата Сообщение от StevenH Посмотреть сообщение
    Сохранять при дисконнекте? Зачем заниматься мазахизмом? К тому же на всех крупных серверах (SRP, Advance, Diamond, Arizona) сохранение проходит как у меня в примере (изменил переменную -> сохранил), это самый оптимальный вариант.

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



    Да я знаю что так и нужно, но может есть какой то другой способ, например перехватить enum PlayerInfo и там отслеживать изменение переменной и сохранять (ЭТО МОИ ФАНТАЗИИ, ТАКОГО КОНЕЧНО СДЕЛАТЬ НЕЛЬЗЯ, НО КАК ПРИМЕР )
    Перехватить enum?
    enum - это лишь набор констант, просто сделали это в обертку.
    Может кто и занимался подобным, зайдет подскажет, но я бы ничего не менял, и оставил как есть - это самый оптимальный вариант

    P.S Можно конечно сделать макрос что-то типо:

    PHP код:
    #define __[%0][%1][%2] = %3  PlayerInfo[%0][%1] = %3;\
                                   
    UpdatePlayerInfo(%0"%2"PlayerInfo[%0][%1]); 
    Или отдельную функцию вместе с присванием члену перечисления.
    Последний раз редактировалось Long-; 25.04.2017 в 22:10.

  6. #6
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Да я знаю что так и нужно, но может есть какой то другой способ, например перехватить enum PlayerInfo и там отслеживать изменение переменной и сохранять (ЭТО МОИ ФАНТАЗИИ, ТАКОГО КОНЕЧНО СДЕЛАТЬ НЕЛЬЗЯ, НО КАК ПРИМЕР )
    На самом деле, такое сделать можно: http://forum.sa-mp.com/showthread.php?t=611860 (github).
    С этой библиотекой можно перехватить изменение любой переменной.

  7. #7
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Да я знаю что так и нужно, но может есть какой то другой способ, например перехватить enum PlayerInfo и там отслеживать изменение переменной и сохранять (ЭТО МОИ ФАНТАЗИИ, ТАКОГО КОНЕЧНО СДЕЛАТЬ НЕЛЬЗЯ, НО КАК ПРИМЕР )
    А если тебе нужно будет изменить значение, но не сохранять его? :) Или не все значения сохранять. Как по мне, лучше уж писать на 20 символов больше, но контролировать происходящее в твоём скрипте. А подобный скрытый функционал лишь затрудняет понимание алгоритма работы кода
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  8. Пользователь сказал cпасибо:
    vovandolg (26.04.2017)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •