Jump to content
Sign in to follow this  
lvlkoo

Способы realtime выдачи предметов персонажу

Recommended Posts

Здравствуйте, уважаемые формучане.

Меня интересует следующий вопрос: какие существую способы доставки предметов пресонажу, а так же способы делать это realtime? На сколько они универсальные, или на каждой сборке, они очень разнятся?

Наверное самый прямой способ это инсертить\инкрементить напрямую  в таблицу items. Персонаж получит предмет после перезахода. 

Еще один способ это таблица character_items, предметы появятся в инвентаре тоже после перезахода.

Еще я слышал о таблице character_items_delayed, которая, существует на некоторых сборках. Но как обрабатывается она сервером, я не знаю. Предметы появятся в инвентаре после после перезахода или в реалтайме?

Самым универсальным и удобным способом считаю telnet - удобно, просто, одна команда - предмет сразу в инвентаре. Но на сколько он действительно универсален? Все ли ява сборки поддерживают telent подключение? На сколько это безопасно?

 

Какие еще есть способы? Всем заранее  спасибо за ответы\советы

Share this post


Link to post
Share on other sites
  On 12/14/2017 at 2:34 PM, lvlkoo said:

Здравствуйте, уважаемые формучане.

Меня интересует следующий вопрос: какие существую способы доставки предметов пресонажу, а так же способы делать это realtime? На сколько они универсальные, или на каждой сборке, они очень разнятся?

Наверное самый прямой способ это инсертить\инкрементить напрямую  в таблицу items. Персонаж получит предмет после перезахода. 

Еще один способ это таблица character_items, предметы появятся в инвентаре тоже после перезахода.

Еще я слышал о таблице character_items_delayed, которая, существует на некоторых сборках. Но как обрабатывается она сервером, я не знаю. Предметы появятся в инвентаре после после перезахода или в реалтайме?

Самым универсальным и удобным способом считаю telnet - удобно, просто, одна команда - предмет сразу в инвентаре. Но на сколько он действительно универсален? Все ли ява сборки поддерживают telent подключение? На сколько это безопасно?

 

Какие еще есть способы? Всем заранее  спасибо за ответы\советы

На некоторых сборках реализовано кэширование определённой таблицы каждые N минут.
В данную таблице  id,char_id, item_id , count.

Share this post


Link to post
Share on other sites
  On 12/14/2017 at 2:47 PM, OurLastNight said:

На некоторых сборках реализовано кэширование определённой таблицы каждые N минут.
В данную таблице  id,char_id, item_id , count.

Можете назвать пример сборки, на которой это реализовано?

Edited by lvlkoo

Share this post


Link to post
Share on other sites
  On 12/14/2017 at 2:50 PM, lvlkoo said:

Можете назвать пример сборки, на которой это реализовано?

https://yadi.sk/d/9zk025IQ3QTq9t
Rebellion
Так-же в шаре есть старая сборка pain-team и в ней тоже есть такая штучка.

  • Upvote 1

Share this post


Link to post
Share on other sites
  On 12/14/2017 at 2:34 PM, lvlkoo said:

Здравствуйте, уважаемые формучане.

Меня интересует следующий вопрос: какие существую способы доставки предметов пресонажу, а так же способы делать это realtime? На сколько они универсальные, или на каждой сборке, они очень разнятся?

Наверное самый прямой способ это инсертить\инкрементить напрямую  в таблицу items. Персонаж получит предмет после перезахода. 

Еще один способ это таблица character_items, предметы появятся в инвентаре тоже после перезахода.

Еще я слышал о таблице character_items_delayed, которая, существует на некоторых сборках. Но как обрабатывается она сервером, я не знаю. Предметы появятся в инвентаре после после перезахода или в реалтайме?

Самым универсальным и удобным способом считаю telnet - удобно, просто, одна команда - предмет сразу в инвентаре. Но на сколько он действительно универсален? Все ли ява сборки поддерживают telent подключение? На сколько это безопасно?

 

Какие еще есть способы? Всем заранее  спасибо за ответы\советы

Ну универсально сразу под все сборки из коробки вряд ли получится сделать, а вот посмотреть, как это сделано в telnet, и сделать более менее универсальный модуль выдачи предмета по запросу, это уже можно.

Share this post


Link to post
Share on other sites

В каждой сборке есть выдача администратором предмета игроку, на некоторых есть выдача всем игрокам. Рассматривайте этот вариант, он и есть реалтаймовый с сохранением в базу. Если нет выдачи всем игрокам, то опять же смотрите реализацию выдачи и путем выборки всех игроков онлайн в коллекцию, проходите циклом по коллекции и применяйте данные действия по выдаче предмета каждому игроку.

Share this post


Link to post
Share on other sites

 

  On 12/14/2017 at 3:00 PM, SmokiMo said:

В каждой сборке есть выдача администратором предмета игроку, на некоторых есть выдача всем игрокам. Рассматривайте этот вариант, он и есть реалтаймовый с сохранением в базу. Если нет выдачи всем игрокам, то опять же смотрите реализацию выдачи и путем выборки всех игроков онлайн в коллекцию, проходите циклом по коллекции и применяйте данные действия по выдаче предмета каждому игроку.

Нет, нет, меня наверно не так поняли. Меня интересует способы для выдачи из внешних систем, к примеру веб донат модуль, или что-то подобное. 

Share this post


Link to post
Share on other sites

Понял, тогда есть аналогия, выдача наград за голосования в топах. Вы создаете цикл с таймером, допустим 10 минут, который раз проверяет таблицу (в которую вы ранее отправили данные с именем/чаридом игрока и информации о выдаваемом предмете. И если такой игрок в сети, то выдаете ему по типу, что я описал ранее, если нет, то просто отправляете эту информацию в таблицу с items и соответственно затираете эти данные в той таблице, где хранилась информация. Или же telnet, как уже предложили выше

Share this post


Link to post
Share on other sites
  On 12/14/2017 at 3:43 PM, SmokiMo said:

Понял, тогда есть аналогия, выдача наград за голосования в топах. Вы создаете цикл с таймером, допустим 10 минут, который раз проверяет таблицу (в которую вы ранее отправили данные с именем/чаридом игрока и информации о выдаваемом предмете. И если такой игрок в сети, то выдаете ему по типу, что я описал ранее, если нет, то просто отправляете эту информацию в таблицу с items и соответственно затираете эти данные в той таблице, где хранилась информация. Или же telnet, как уже предложили выше

И опять чуть чуть не то. Я знаю что все проблемы решаемы, при наличии исходников, но я сейчас не говорю конкретно об одном проекте. К примеру, веб донат модуль или сервис, который на правленый на широкое распространение, которому необходимо обеспечить максимальную поддержку большинства популярных сборок, с помощью какого-то механизма выдачи предметов. То есть нужно проработать все популярные варианты, вон тут и вопрос, на сколько этих вариантов много, быть команды разработчиков делают все как у других, и опять же вопрос на сколько универсален и безопасен telnet.

Share this post


Link to post
Share on other sites
  On 12/15/2017 at 7:49 AM, lvlkoo said:

И опять чуть чуть не то. Я знаю что все проблемы решаемы, при наличии исходников, но я сейчас не говорю конкретно об одном проекте. К примеру, веб донат модуль или сервис, который на правленый на широкое распространение, которому необходимо обеспечить максимальную поддержку большинства популярных сборок, с помощью какого-то механизма выдачи предметов. То есть нужно проработать все популярные варианты, вон тут и вопрос, на сколько этих вариантов много, быть команды разработчиков делают все как у других, и опять же вопрос на сколько универсален и безопасен telnet.

Для каждой сборки по разному. Но в основном это items_delayed или character_donate.
Возьмите скрипт юнитпея и посмотрите как там и что происходит.

  • Upvote 1

Share this post


Link to post
Share on other sites
  On 12/15/2017 at 7:49 AM, lvlkoo said:

И опять чуть чуть не то. Я знаю что все проблемы решаемы, при наличии исходников, но я сейчас не говорю конкретно об одном проекте. К примеру, веб донат модуль или сервис, который на правленый на широкое распространение, которому необходимо обеспечить максимальную поддержку большинства популярных сборок, с помощью какого-то механизма выдачи предметов. То есть нужно проработать все популярные варианты, вон тут и вопрос, на сколько этих вариантов много, быть команды разработчиков делают все как у других, и опять же вопрос на сколько универсален и безопасен telnet.

Способ который описал вам я, не нуждается в исходном коде.

Share this post


Link to post
Share on other sites
  On 12/15/2017 at 10:00 AM, SmokiMo said:

Способ который описал вам я, не нуждается в исходном коде.

Видимо я Вас не так понял, разве вы говорили не о таймере в плане реализации в самом ГС? Тогда просто не пойму какой в этом смысл, если по таймеру инсертить в items, когда персонажу все равно придется пере зайти.

Share this post


Link to post
Share on other sites
  On 12/15/2017 at 10:04 AM, lvlkoo said:

Видимо я Вас не так понял, разве вы говорили не о таймере в плане реализации в самом ГС? Тогда просто не пойму какой в этом смысл, если по таймеру инсертить в items, когда персонажу все равно придется пере зайти.

Перечитайте внимательно мои сообщения, я же сказал вам, что инсертить в итемс в том случае, если игрок не находится в сети, а если в сети, то выдавать ему методом как в админке (например)

Share this post


Link to post
Share on other sites
  On 12/14/2017 at 2:50 PM, lvlkoo said:

Можете назвать пример сборки, на которой это реализовано?

любая на базе Phoenix/Overworld/Lostworld

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

Смотри и изучай вобщем класс DelayedItemsManager в ядре.

Share this post


Link to post
Share on other sites
  On 12/17/2017 at 3:25 PM, Gaikotsu said:

Смотри и изучай в общем класс DelayedItemsManager в ядре.

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

Share this post


Link to post
Share on other sites

ну дык я и советую посмотреть как это там реализовано

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

Edited by Gaikotsu

Share this post


Link to post
Share on other sites
  On 12/17/2017 at 3:50 PM, Gaikotsu said:

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

Да, безусловно, я это понимаю, но дело в том что не все сборки имеют такую реализацию

Share this post


Link to post
Share on other sites

На базе Phoenix/Overworld/Lostworld все - так что там можно сказать все это унифицированно, т.к. большинство тех кто делает сборки на основе Phoenix/Overworld/Lostworld данные механизмы не трогают/не меняют.

На базе лыжи... там вроде с этим все печальней - в чистой лыже вроде как такого функционала нет, так что если что и есть в сборках на ее основе, то уже такое какое захотелось сделать тому кто пилит сборку, т.е. по сути вразнобой.

  • Upvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...