Tutorial

Klitcher

Путник
Участник
Сообщения
31
Розыгрыши
0
Репутация
0
Реакции
30
Баллы
65
Хроники
  1. Interlude
Исходники
Присутствуют
Сборка
L2J_Mobius_CT_0_Interlude
Моя первая тема. Позвольте разгуляться господа.

Вас приветствует Херальд "Неуловимый" Клитчер! 🫡 Немного Пайтонист, немного АйчТиМаЛист, совсем чуть-чуть ЖаваСкриптист, Джангоу-Моделист, PostgreSQL вот недавно училист, Hola Bazooka! Вообщем - я еще тот специалист!

Предисловие.

Я не планирую сервер, но хотел бы двигаться в этом направлении. Почитав вас, я определил свой Апогей - получить сообщение от Василия перед стартом.

Задумка.

Был я тут недавно КЛ, - заебался отвечать на вопросы типа "когда мамон?", "а сколько стоит профа"...

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

Я на L2J_Mobius_CT_0_Interlude, но думаю сборка пока не имеет значения.

Суть.

В самом Клиенте есть события, например при первом входе персонажа в игру, я могу поймать "UC" и начать с этого. Да вот с чего? Лезть в клиент и изучать события или же можно начать с "UC", а потом с помощь джавы, методов и бай-пассов выстраивать структуру? Может я ваще не туда смотрю?

Пример.

Новый персонаж зашел в игру, получил окно.
Персонаж получил 19-лвл, получил окно - где, что и как.
Раз в день персонаж получает окно с уведомлениями.
Сервер подходит к А-грейд стадии, персонаж получил окно с уведомлением.

--- (я также немного маркдаунолист)

ПООООДНЯТЬ ЕБУСААА!
Не смотреть в перед!
На встречу ветру господа!
— Я теперь Пират! :Wahaha:

И как пел Кипелов.

...Путь в никуда.
Я искал к тебе пути Innova.
Путь в никуда.
Ничего уже исправить нельзя.


 
Ребят, вы можете на опыте просто посоветовать какие файлы поковырять, чтобы у меня сложилась картина.
Завтра планирую взять капу и погрызть - interface.u
Хочу побольше узнать о: event.startsWith("UC"), "TE", "QT"... Может знаете гайдик?

Нейронка мне советует использовать методы OnEnterWorld, но у меня пока не получается. Пользуюсь .startsWith("UC").

Оригинал.
 
На самом деле не очень понятно что вы хотите добится. По вашему вопросу:

Клиент отправляет пакет:
OPCODEPAYLOAD
0x03 —

Game Server слушает по порту TCP, декодирует, и читает опкод.
Код:
// java/org/l2jmobius/gameserver/network/ClientPackets.java
// Protocol Revision 746 (хз почему мобиус пишет в коментах 87 - Gracia Final)
ENTER_WORLD(0x03, EnterWorld::new, ConnectionState.ENTERING)

Дальше читается пэйлоуд. Что там в нём, для вашего вопроса не релевантно.

Далее
Код:
// java\org\l2jmobius\gameserver\network\clientpackets\EnterWorld.java
1. protected void runImpl()

2. if (!Config.DISABLE_TUTORIAL)
   {
      loadTutorial(player);
   }

3. private void loadTutorial(Player player)
    {
        final QuestState qs = player.getQuestState("Q00255_Tutorial");
        if (qs != null)
        {
            qs.getQuest().notifyEvent("UC", null, player);
        }
    }

Проще говоря `UC` в данном случае чисто серверный эвент.


---

На будующее для обучения:

Search:

Ex. VSCode
1773478701364.webp

Tracing / Code navigation / Insights:
1773479378044.webp Debugging:

Debugging:

 
ты какой-то велосипед изобретаешь. обучалка есть изначально в ла2, просто переделай ее под себя и нужные тебе события. когда нового чара начинаешь - у тебя куча окон обучающих хоть сами вылазят, хоть через появление вопросика.
и поверь, это явно не основная проблема л2. и от вопросов к КЛам ты не избавишь, так как или надо будет слишком много постоянно лезущих обучалок, которые будут просто закрывать не глядя, или ты не перекроешь все вопросы, по которым надо информировать игрока
 
Вообщем, почитав советов и пару пинков, -\+ разобрался, что к чему.

"UC" - вход в игру,
"СE40" - получение уровня,
... .


Это все серверные события.

К примеру, событие "CE40" создается в функции (обработчике событий), в которой говорится (далее дословный синтаксис), что-то типо если персонаж получил уровень, то типа отправь уведомление Туториалу мож ему че нада, а Туториал в свое время проверяет этот сигнал...

Ага, шо тут у нас, .startsWith("CE"), сценарий "40" - получил уровень...

Вообщем делает проверки if, через колено и другие грузные делишки. И если уровень персонажа 10 это то, что нам нужно = получи окно.htm!

Так же понимании и разборе мне помог Copilot в VS Code. Открываете целый проект (например "L2J_MOBIUS_CT_0_INTERLUDE) и задаете вопросы. На бесплатные токены он очень сильно раздуплил, что к чему, в таком большом проекте как L2.

Может попизже отпишу попозже, еще что-нибудь о Туториале.

--- MarkDownNist!

rmx, Индус конечно до сих пор стреляет в голове, но элементарно установить пакет Джавы и улучшить читаемость уже +!

--- Тыдыж!

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

Вон смотри, человек сразу понял, что к чему - к индусу на медитацию отправил.

В целом, если отвечать серьезно - то я встрою в одно из окон вайп персонажа и мы еще посмотрим кто будет смеется последний :Hahaha:.
К примеру, я вот вечно забывал забрать награду, через 30 мин как зашел в игру. Лично мне было бы приятно получить вопросик-окно как уведомление о том, что уже можно действовать. Я думаю, ты просто уже забыл, что такое фармить Стакато с Хомкой на Ы-грейд стадии.

Кстати, if ты тут уже на эпике, "while True: print, расскажи какие основные проблемы в Л2. Меня интересует Интерлюд. Вот я разберусь\настрою сценарий, рейты, туториал, баффер, ГМ-шоп... Ну ты понял. Какой бы мог быть следующий шаг новичка или с чем предстоит столкнуться. Твой ответ как раз будет в тему. Например, Интерлюд Мобиуса можно довести до ума (100-200) человек, чтобы посмотреть апогей?
 
В целом это такое оверью для себя, мотивашка, старт и надеюсь в будущем вдохновение)
Рад что разобрался. Я понимаю для вас это уже пустики.
Нейронки конечно, ну прям...
 
Нифига не понял чего ТС хочет и причем здесь клиент.
По сути почти вся работа туториала базируется на действиях в самом сервере, ну там за исключением буквально мелочей некоторых, которые от клиента идут, да.
Но о тех же входах в игру, изменениях уровня/класса в туториал сообщает сам же сервер, к примеру через соответствующие листенеры или еще каким способом.
 
Если речь о Туториале для игроков, то просто шаманить _255 квест, привязать по уровням и кондам, всё то, что хочет автор.

Какие пакеты, какие опкоды и для чего, не совсем понятно.
 
Нифига не понял чего ТС хочет и причем здесь клиент.
По сути почти вся работа туториала базируется на действиях в самом сервере, ну там за исключением буквально мелочей некоторых, которые от клиента идут, да.
Но о тех же входах в игру, изменениях уровня/класса в туториал сообщает сам же сервер, к примеру через соответствующие листенеры или еще каким способом.

Да, всё именно так.

Далее для новичков и удобного восприятия. Поправьте, если че не так.

Клиент — это по сути просто «кнопки и экран».
Он не думает и не решает, что происходит в игре.
Он только говорит серверу: "игрок что-то сделал".

Вся логика — на сервере.

Условный пример:
  1. Кликнул мышкой — вроде в пустоту, а попал в моба.
  2. Клиент отправил: Action (клик по объекту).
  3. Сервер:
    • посмотрел ID объекта,
    • понял, что это моб,
    • сказал клиенту: покажи окошко таргет.
  4. Нажал F1 (/attack).
  5. Клиент отправил: "/attack".
  6. Сервер:
    • взял данные моба из базы,
    • взял данные персонажа из базы,
    • сделал сальто и посчитал урон,
    • решил, что делать дальше.
    • И отправил клиенту:
    • подойти (если надо),
    • ударить,
    • показать урон в системном чате и на экране,
    • обновить HP в окошке таргет...
  7. Когда у моба 0 HP:
    • сервер решает, что он умер,
    • говорит клиенту проиграть анимацию смерти,
    • дальше уже идут: выдать дроп/спойл...
    • и само собой можно показать окошко .htm
Итог:

Клиент — просто отображает.
Сервер — всё решает.


---

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


Но все же интересно узнать, о том как клиент уведомляет сервер о клике игрока на объект...
Не подскажите где мне это в будущем искать?
 
Ток не объяснили что есть html окна которые ты как хочешь так и вертишь. А есть квестовые как у туториала, тупо подправить окно не получиться - это quest.grp/quest.name и тд. Это там где каждое своё личное окно, действие и предметы с значками и тд жостко прописаны как в сервере так и в клиенте, с аннимацией и текстурками в соответствующих папках, это не тупо конструктор а реально нарисованные картинки и рамки. В общем это какой то там GUIй, мало просто поправить, надо будет ещё unreal редактор освоить, а это ещё та история. В общем ради одного квеста тебе пол года как минимум осваивать всю науку придётся. Проще в html+ server scripts+ quest.
Сообщение объединено:


Нужен отдельный раздел для ИИ...
Типа это не человек а тема от ии? 0_0
 
Ток не объяснили что есть html окна которые ты как хочешь так и вертишь. А есть квестовые как у туториала, тупо подправить окно не получиться - это quest.grp/quest.name и тд. Это там где каждое своё личное окно, действие и предметы с значками и тд жостко прописаны как в сервере так и в клиенте, с аннимацией и текстурками в соответствующих папках, это не тупо конструктор а реально нарисованные картинки и рамки. В общем это какой то там GUIй, мало просто поправить, надо будет ещё unreal редактор освоить, а это ещё та история. В общем ради одного квеста тебе пол года как минимум осваивать всю науку придётся. Проще в html+ server scripts+ quest.
Сообщение объединено:
Типа это не человек а тема от ии? 0_0

Я кажется понял, о чем вы говорите. Это уже не туда.

Да, я кстати продвинутая модель... 4poX-GPT :sneaky: alt0151 мне звони)
 
Назад
Сверху Снизу