[req] Аренда шмота за реал

Теги:
 

Adrio

новичок
Вот решил реализовать фенечку у себя на сервак. хочу посоветоваться реально ли это :

Идеи:

1. Шмот не продается, а дается в аренду скажем на период в неделях за символическую плату
2. Игрок может продить срок аренды через ВЭБформу
3. Игрок может пополнить свой счет через ВЭБформу на сайте (положенные деньги конвертятся ну скажем в медальки 2004 )
4. За медальки 2004 в ГМшопе покупается шмот
5. Купленный за медальки шмот (за исключением маны, адены, сосок и т.п. ) нельзя продать/дропнуть/обменять
6. После истечения срока аренды шмот удаляется из базы.
 

Adrio

новичок
Плиз объясните назначение этих полей в таблице items
Прикреплённые файлы:
 
 
+
-
edit
 

Balancer

администратор
★★★★★
Каким образом была создана вещь, какая, кем, для кого и когда.

Скажем, первая строка - дроп от NPC 20246.
 
UA MorbidAngel #06.06.2007 10:00  @Adrio#06.06.2007 03:08
+
-
edit
 

MorbidAngel

разработчик L2J Fortress

Adrio> Плиз объясните назначение этих полей в таблице items

1 Каким образом появилась в мире
2 Ид объекта в мире
3 от кого
4 кому
5 когда
 

Adrio

новичок
Вот решил посоветоваться :
0. Шмот создается через ВЕБинтерфейс (в талице items добавлено поле rented_to в котором указывается конечная дата-время аренды. Если там 0 то вещь - обычная )
1. Арендованный шмот нельзя продать/поменять/дропнуть ...
реализовал через L2ItemInstance.java (В функции canBeEnchanted, canBeCrystallized, canBeTraded, canBeDropped, canBeDestroyed дабавлена проверка на ненулевое значение в поле rented_to )
2. Раз в сутки на серваке по крону стартует скрипт который убивает все записи у которых rented_to <= currentTime . Но скорее всего просто введу это дело в скрипт рестарта по AutoRestart.

Вот тут вопрос: хотелось бы чтобы сервак сам удалял вещи у которых rented_to <= currentTime . Не подскажете в каком модуле это реализовать ? и не будет ли это большой нагрузкой на сервак ?
 
UA SoulKeeper #23.06.2007 14:12
+
-
edit
 

SoulKeeper

разработчик L2J Fortress

лутше дату исчезновения вещи хранить как unixtime.

при старте сервера создаеш Runnable который крутится у ThreadPoolManager с определенным интервалом. При выполнении делает перебор онлайн игроков и их инвентарей. Если System.currentTimeInMillis() > unixtime в базе, то вещь грохается автоматически.

Eidit: для каждой вещи можно было бы запускать свой Runnable, но по моему это уже бред, несколько минут задержки роли не сыграют.
Разыскивается десятка с два датапакеров :) http://la2.wrk.ru/forum/viewtopic.php?id=50882  
+
-
edit
 

CyClon

втянувшийся
Через WEB возможно все ;)

Если есть возможность использовать крон, то можно написать скрипт, который будет удалять вещи, у которых истек срок использования. Для реализации этого - добавить новое поле типа unixtime в таблицу items.

5. Купленный за медальки шмот (за исключением маны, адены, сосок и т.п. ) нельзя продать/дропнуть/обменять
 


Вот тут проблема будет. Пока что вижу только один вариант, но очень геморный: копировать нужный шмот в базе, давать ему свои ID и дописывать новые сеты, добавлять новые xml-файлы (для оружия) и в базе данных прописать свойство "выкидывается" в false.
L2JF User  

Adrio

новичок
CyClon> Через WEB возможно все ;)
CyClon> Если есть возможность использовать крон, то можно написать скрипт, который будет удалять вещи, у которых истек срок использования. Для реализации этого - добавить новое поле типа unixtime в таблицу items.
CyClon> Вот тут проблема будет. Пока что вижу только один вариант, но очень геморный: копировать нужный шмот в базе, давать ему свои ID и дописывать новые сеты, добавлять новые xml-файлы (для оружия) и в базе данных прописать свойство "выкидывается" в false.

ты наверное невнимательно прочитал предыдущие посты. все уже работает и блокировка дропа/дестроя/продажи шмота проблем не вызвала. просто хочу процесс уничтожения арендованной вещи перенести со скрипта, который уже выполняется по крону, на сервер ...
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru