MyPaBeu 5 Опубликовано 3 октября, 2014 добрый день уважаемые форумчане ... можно ли осуществить такое ? например , вы подходите к телепорту , он вас за определенный предмет портует на время ( скажем на 1 час ) , когда пройдет 1 час , вас обратно возвращает на определенный город ? и если возможно , объясните пожалуйста как это можно сделать ? заранее спасибо Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
rooti 764 Опубликовано 3 октября, 2014 Да, если ты "бог кода" и конечно есть исходники. Без этих 2х критериев - нет Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Bioboxioc 8 Опубликовано 3 октября, 2014 Вариант первый - новый метод телепорта и возврат по проходу времени (плохой вариант). Ищешь класс телепорта в своей сборке (точнее исходном коде), делаешь проверку на время с момента телепортации. Второй вариант (хороший) - новая зона из которой автоматом выкидывает через час. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MyPaBeu 5 Опубликовано 3 октября, 2014 2 вариант , больше подходит мне, потому что хочу добавить новую локацию . Но мне именно надо чтобы туда портанутся надо заплатить , потом через час выгнать из зоны Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 3 октября, 2014 Можно. Делаем скрипт для нпс при разговоре с которым он тебе тп на в нужные координаты при этоп запускаем таймер Вариант первый - новый метод телепорта и возврат по проходу времени (плохой вариант). Ищешь класс телепорта в своей сборке (точнее исходном коде), делаешь проверку на время с момента телепортации. Второй вариант (хороший) - новая зона из которой автоматом выкидывает через час. В чем плохость варианта перового? Точнее если ты хочешь делать выкид из зоны, то у тебя при энтерзона будет стартовать таймер, тоже самое что ты будешь этот таймер запускать после телепорта. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ImmortalPony 126 Опубликовано 3 октября, 2014 что то похоже на: Камалоку\Пайлаку\ Зал Илюзий (если есть исходник можно поглядеть как сделано). Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 3 октября, 2014 что то похоже на: Камалоку\Пайлаку\ Зал Илюзий (если есть исходник можно поглядеть как сделано). А исходы и не нужны, по крайней мере у лыжи инстансы вынесены в дп Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ImmortalPony 126 Опубликовано 3 октября, 2014 (изменено) вот я и написал (я Мысли не читаю, я хз какая там сборка). Изменено 3 октября, 2014 пользователем MaJr Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Bioboxioc 8 Опубликовано 3 октября, 2014 Первый метод плох тем, что игрок может и не находиться в зоне в момент конца таймера. А делая проверки получим нагромождения и туже самую зону как во втором методе. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
urkagun 7 Опубликовано 3 октября, 2014 Принцип такой: чар зашёл в зону, чару записывается (обновляется) в базу данных значение текущего времени на серваке. Дальше чар фармит и фармит мобов в этой зоне. На серваке выполяется расписание по типо "ThreadPoolManager...", которое каждые 5 минут сравнивает из таблицы БД те записанные значения времени игроков при заходах в зону. Если время отличается от текущего на серваке больше, чем на 1 час, то игрока тпшит в город. Таким способом даже если релогнется в зоне игрок, то "ThreadPoolManager" всё равно его выкинет из зоны. Но ещё нужна проверка - находится ли игрок в данной зоне, чтобы постоянно каждый час не тпшило игрока в 1 точку(город) Вообщем, да, тут нужно уметь кодить Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 3 октября, 2014 Принцип такой: чар зашёл в зону, чару записывается (обновляется) в базу данных значение текущего времени на серваке. Дальше чар фармит и фармит мобов в этой зоне. На серваке выполяется расписание по типо "ThreadPoolManager...", которое каждые 5 минут сравнивает из таблицы БД те записанные значения времени игроков при заходах в зону. Если время отличается от текущего на серваке больше, чем на 1 час, то игрока тпшит в город. Таким способом даже если релогнется в зоне игрок, то "ThreadPoolManager" всё равно его выкинет из зоны. Но ещё нужна проверка - находится ли игрок в данной зоне, чтобы постоянно каждый час не тпшило игрока в 1 точку(город) Вообщем, да, тут нужно уметь кодить Зачем делать обновления каждый 5 минут, пересапись и так далее, если есть установка таймера? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 3 октября, 2014 путей как обычно несколько: 1. конечная локация в инстансе с лимитом времени 2. если не хочется возиться с инстансами, то при телепорте запускается таск, срабатывающий через заданное время и возвращающий в нужные координаты + сохранять в таблице переменных персонажа время когда был произведен телепорт в локу, для того чтобы обрабатывать ситуации типа выхода из игры и захода обратно уже после истечения времени - в данных случаях сразу же возвращать в нужные координаты при заходе в игру. наиболее простым и глюкоустойчивым является первый вариант, т.к. во втором еще дополнительно кучу разных условий придется обрабатывать, ну например что делать еслси игрок до истечения времени свалил сам из этой локи. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 3 октября, 2014 Все действия нужно всегда сводить к минимуму в плане запроса до базы. А если у тебя каждый скрипт будет коннектиться к базе и тем более на каждого персонажа, перестань. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
urkagun 7 Опубликовано 3 октября, 2014 Зачем делать обновления каждый 5 минут, пересапись и так далее, если есть установка таймера? Чтобы сравнивать время текущего и записанного. А что таймер? Игрок релогнулся и дальше? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
urkagun 7 Опубликовано 3 октября, 2014 ничего страшного не произойдёт, если дёргать базу каждые 5 минут. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 3 октября, 2014 (изменено) а зачем вобще базу использовать? что мешает тупо в памяти хранить банальный хэшмап типа <ид_чара, время входа> (или вообще двухмерный массив) и пользоваться данными из него? Изменено 3 октября, 2014 пользователем Gaikotsu 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 3 октября, 2014 Чтобы сравнивать время текущего и записанного. А что таймер? Игрок релогнулся и дальше? А в чем проблема делать запрет релога во время работы таймера? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 3 октября, 2014 Тп в зону, старт таймера, запрет релога во время работы таймера и при унентаре с зоны тп в место куда изначально тпшило с месагой что нельзя покидать зону. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 3 октября, 2014 А в чем проблема делать запрет релога во время работы таймера? обходящийся на раз плюнуть - принудительное закрытие клиента через диспетчер задач или например заход на тот же акк другим персом (в большинстве сборок при этом обычно кикает имеющегося на том же акке персонажа в онлайне). 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 3 октября, 2014 добрый день уважаемые форумчане ... можно ли осуществить такое ? например , вы подходите к телепорту , он вас за определенный предмет портует на время ( скажем на 1 час ) , когда пройдет 1 час , вас обратно возвращает на определенный город ? и если возможно , объясните пожалуйста как это можно сделать ? заранее спасибо В общем сделать можно все, если захотеть. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MyPaBeu 5 Опубликовано 3 октября, 2014 т.е. без исходников тоже можно ? просто исходников нету , сборка l2jfatum (acis) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 3 октября, 2014 Ага. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MultiCrazy 934 Опубликовано 3 октября, 2014 вспомните про рифт, там при заходе с вас берут оплату в определённом колличестве вы находитесь в комнате определённое время. всё в Ваших руках)) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DorianGrey 2 Опубликовано 4 октября, 2014 обходящийся на раз плюнуть - принудительное закрытие клиента через диспетчер задач или например заход на тот же акк другим персом (в большинстве сборок при этом обычно кикает имеющегося на том же акке персонажа в онлайне). Можно сделать чтоб при релоге выкидывало с зоны. Т.е релогнулся и тебя заспавнило в городе и не важно сколько еще времени оставалось фармить. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты