Насколько сложно?
А.
В таблице пользователей (активных) сделать дополнительно несколько полей:
1) флаг перевода игрока на новый механизм
2) тот опыт что игрок накопил на текущий момент (до перевода игрока в режим переодическогообнуления игры)
3) тот уровень которого игрок достиг на текущий момент (до перевода игрока в режим переодического обновления игры)
4) флаг обнуления (для тех кто уже переведен на новый механизм Метка которая покажет что мы его в текущей итерации обнулили)
пункт 1 нужен для возвращения в игру кого то позже чем другие.. если этот механизм приживется и ктото из архивных игроков вернется их опыт полученый не сгорел.. мы перепишем его на всякие пожарные только один раз в поля 2 и 3 для каждого игрока.. (чтобы иметь возможность вернуться)
Б.
Далее в файле конфигурации где прописано сколько нужно для получения опыта и сколько при этом выдается денег закоментировать существующую систему (это хэшь массив .. около 16 строк кода) и повторить его с новыми значениями
С.
Написать функцию котрая будет делать обнуление на автомате.. подобная той что вычисляет результаты РЧ и подводит итоги. Она так же должна работать по таймеру. Определяем например что у нас обнуление всегда происходит ровно первого числа в марте в июне в сентябре и в декабре (тоесть 4 раза в году) и в этот день мы:
- Если флаг в поле 1 указывает что игрок ещё не "старик" значения из полей LVL, EXP пересохраняем в поля 2 и 3
- Записываем в поле 1 что игок переведен на новый алгоритм.
- Если он уже на "новом алгоритме" опыт котрый за это время игрок накомпил добавляем к тому что ранее было накоплено (чтобы и этот оппыт не сгорел если вдруг мы вернуться решим, если вдруг окажется что игрок в старой системе получит новый уровень то как только мы вернемся к старой системе ему система и денег выдаст и уровень новый насчитает)
- в поле отвечающее за опыт пишем нуль
- если для игроков достигших за сезон уровня выше 10 мы будем сбрасывать уровень не до нуля а на 10 уровней тогда какраз вычисляем новое значение которое нужно записать в это поле. Остальным пишем в поле уровня ноль.
Собственно всё
Ничё не отбираем.. если всё плохо (непонравилось) у нас старые значения сохранены и откат будет состоять в том что сначала хэшьмассив новый стираем а старый раскомментируем.. затем удаляем выполнение функции сезонного обнуления а затем в таблице пользователей переписываем значения из полей 2 и 3 в те поля что сейчас LVL и EXP..
дальше система сама разберется кто за это время успел получить опыт и ему надо бабла выдать..
Последний раз редактировалось MouseR; 26.02.2014 в 13:45
|