Всплывающее окно с выбором профессии - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Обучающие статьи

Обучающие статьи Собрание статей, мануалов и гайдов помогающих в создании и администрировании сервера Lineage 2.
Описание темы:Для самых маленьких

Ответ
Опции темы
Непрочитано 18.08.2015, 17:33   #1
Аватар для Zeratyl
Гвардии штабс-капитан N7 ═════ ★ ★ ★ ★ ★ ═════

Автор темы (Топик Стартер) Всплывающее окно с выбором профессии

Энное количество лет назад на множестве серверов была такая фича - по достижении 20, 40 и 76 уровней появляется всплывающее окно с предложением выбрать профессию. Один человек спросил как это сделать (нет, это не Аури) а я даже зачем-то пообещал ему рассказать. Положим, человек лезет в ядрышко если не в первый, то в полуторный раз и нужных навыков он не имеет. Значит, будем опираться на логику.

Все приведенное ниже относится к оверовскому попилу. Для лыжи есть решение из коробки.

Для начала нужно смекнуть, что раз речь идет о срабатывании триггера по достижению уровня, то и копать нужно возле анимации получения нового уровня - пусть сие будет для нас ориентиром. Мы находим это в классе Player.java, в методе levelSet. Просматривая метод, мы видим вызов других методов, которые устанавливают CP, MP и HP на максимум. Сюда-то мы и вклинимся:

private void levelSet(final int levels):
Свернуть ↑Развернуть ↓


Будет хорошим тоном завести конфиг под это все и вынести в соответствующий файл. Сделать это можно по образу и подобию любого булева конфига в принципе, если посмотреть Config.java

Дальше нам нужно описать условия срабатывания. На обычном языке это можно описать так: "ну, если у тебя 20 уровень но ты без первой профы, то должно появляться окно. Если ты 40 и без второй профы, то тоже. И если ты 76 без третьей - аналогично." К старшим хроникам актуально еще несколько требований - 85 уровень и четвертая профессия + условие для новой расы, Артеи. У Артей профессии смещены - третья профессия для них является четвертой, вторая - третьей ну и далее по тексту. Опишем же это:

Условия срабатывания:
Свернуть ↑Развернуть ↓


Отлично! Мы описали условия и теперь все сказанное про срабатывание на раличных уровнях и профессия стало реальностью. Но что будет срабатывать, если условия будут выполнены? Давайте опять подумаем - должно всплывать окно, где будут кнопки с доступными профессиями. Для кнопок должен быть свой байпасс, по которому при срабатывании должна присваиваться очередная профессия. Опишем пока все это более схематично - мол, вызывается окно и часть текста меняется на нужное нам. Давайте же запилим вызов окна. Для этого мы прокрутим класс Player.java ближе к концу и запилим свой метод сразу после public void sendAlchemySkillList(), например, так:

Путь к успеху:
Свернуть ↑Развернуть ↓


Тут даже ежикам должно быть понятно, что мы задаем путь к html'ке, в которой меняем текст %name% на имя игрока, а %list% будет генерировать список доступных профессий для указанного класса. Все это для того, чтобы можно было сделать свое вырвиглазное оформление этого окошка, главное, чтобы там была фраза %list%. Но как же сгенерировать этот лист? Вот у нас список профессий. Можно просто идти по нему и в случае успеха добавлять кнопку с байпассом. Учтем, что класс Инспектора придется пропустить (ибо берется только как саб-класс), да и не будет лишним игнорировать раскукоженные в линдвиоре четвертые профессии аля Sigel Knight, Tyr Warrior, Othel Rogue и подобные. В описании будем использовать метод сверки принадлежности дочернего класса к основному (т.е. к наследующему) и метод возвращающий название класса по его ID. Все это примет примерно вот такой вид:

Выбор пути:
Свернуть ↑Развернуть ↓


В итоге, вместо слова %list% у нас будет список профессий, которые мы можем выбрать для нашего класса. В очередной раз время подумать - где, внедренная нами фича может дать сбой исходя из логики работы сервера? Таких моментов несколько. Первый из них - это отсылка html-приветственного сообщения при заходе на сервер. Давайте исправим это в классе EnterWorld.java. Находим булево значение из конфига Config.SHOW_HTML_WELCOME и вписываем туда следующую логику: если условия для взятия класса выполняются, то нужно показать наше окно; при других условиях пусть показывается окно приветствия. Будет это выглядеть так:

Никто не уйдет:
Свернуть ↑Развернуть ↓


Таким образом, наше злосчастное окно настигнет игрока даже если тот попробует спастить бегством - при следующем заходе на сервер. Еще один момент заключается в том, что если игрок закроет окно, то ему придется либо делать релогин, либо ждать очередного повышения уровня, чтобы сработали проверки условий и вызвался наш свежезапиленный метод. По совету одного товарища можно поступить проще - создать голосовую команду, например, .class и при ее вызове выкидывать окошко с выбором профессии - ну, или не выкидывать и слать на фиг, если условия не соблюдены. Есть множество мануалов по запилке голосовых команд, их можно сделать и без мануала вообще, по образу и подобию уже существующих. Условия срабатывания можно скопи-пастить из EnterWorld.java, убрав оттуда показ приветственного html-окна.

И вот, мы все это дело собираем, запускам сборку и качаемся до срабатывания окна - и вот окно появляется. Но, при нажатии на него почему-то ничего не происходит. Еще бы - байпасс, который мы вписывали при формировании списка доступных профессий для класса не существует! Время это исправить. Для этого мы проследуем в класс RequestBypassToServer и добавим наш байпасс "alt_class" к остальной гоп-компании. Предположим, что вы уже начали осмысливать происходящее и с первого раза нормально скопипастите нижеописанное:

Безопасность? Не, не слышал:
Свернуть ↑Развернуть ↓

Теперь наш байпасс корректно отработает и сменить профессию. Но нужно ли было это все делать, когда можно включить котов-NPC или воспользоваться готовыми решениями для Community Board (тысячи их)?
Zeratyl вне форума Отправить сообщение для Zeratyl с помощью ICQ Отправить сообщение для Zeratyl с помощью AIM Отправить сообщение для Zeratyl с помощью MSN Отправить сообщение для Zeratyl с помощью Yahoo Отправить сообщение для Zeratyl с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 18.08.2015, 18:02   #2
Аватар для Zubastic
ZG troll squad

По умолчанию Re: Всплывающее окно с выбором профессии

А еще можно вспомнить, что при повышении уровня выводятся различные html. Например в квесте tutorial есть подобная логика и это можно запилить именно туда.
__________________
Zubastic вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 18.08.2015, 18:07   #3
Аватар для Zeratyl
Гвардии штабс-капитан N7 ═════ ★ ★ ★ ★ ★ ═════

Автор темы (Топик Стартер) Re: Всплывающее окно с выбором профессии

Помню, знаю, но по определенным причинам не могу использовать этот способ. Положим, квест тутора у меня отсутствует вовсе, вместо него иная конструкция.
Zeratyl вне форума Отправить сообщение для Zeratyl с помощью ICQ Отправить сообщение для Zeratyl с помощью AIM Отправить сообщение для Zeratyl с помощью MSN Отправить сообщение для Zeratyl с помощью Yahoo Отправить сообщение для Zeratyl с помощью Skype™ Ответить с цитированием
Непрочитано 19.08.2015, 00:23   #4
Аватар для helly
Супергерой

По умолчанию Re: Всплывающее окно с выбором профессии

Вот! Так и нужно развивать портал. Молодец!
helly вне форума Ответить с цитированием
Ответ

Метки
долой скриптов, жадные дети (д. пучков), кина не будет, студия не нужна


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
itamename-e.dat UFODriverr Lineage II 5 28.02.2021 18:17
Cкрипт открывающий всплывающее окно Four-Art Движки сайтов (CMS) 9 08.01.2013 03:57
Работа над Goddess of Destruction JaFo Lineage II 409 20.05.2011 01:48
Всплывающее окно SoftTap Движки сайтов (CMS) 9 27.07.2010 10:49
как изменить окно заточки??? Lelia Lineage II 1 08.01.2009 11:58


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 03:55. Часовой пояс GMT +3.

Вверх