Показать сообщение отдельно
Старый 26.02.2014, 13:41   #18
MouseR
Зловред
 
Аватар для MouseR
 
Регистрация: 10.06.2008
Сообщений: 2,417
MouseR отключил(а) отображение уровня репутации
По умолчанию

Насколько сложно?

А.

В таблице пользователей (активных) сделать дополнительно несколько полей:
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
MouseR вне форума   Ответить с цитированием