castledata, если правильно помню. В нем выдается тип, и базовые настройки для механики захватов. Но если пилить самому, то уже идти в l2server, и мучаться с декомпилом \ точечной правкойЕсть захватываемые кланхоллы разных типов. Team battle, npc battle, siege.
В каком месте описана логика работы захвата? В самом коде сервера? В ai.obj не нашел.
Как происходит определение и запись победителя в базу? Возможно ли самому сделать захват кланхолла со своей логикой?
максимум, что там можно сделать - это поиграться с дверьми, нпс, спавном и таймерами.castledata, если правильно помню. В нем выдается тип, и базовые настройки для механики захватов. Но если пилить самому, то уже идти в l2server, и мучаться с декомпилом \ точечной правкой
Придумать новый тип захвата, например вход в кх только в трусах баюма - не получится.
это в ai.obj реализовать можно.например вход в кх только в трусах баюма - не получится.
Я образно сказал.это в ai.obj реализовать можно.
А вот как сохранить инфу о клане победителе в БД?
а если написать свои методы для осады и просто заменить адреса методов на свои, тоже не выйдет? ну предположим есть ивент onSiegeStart, и ты в него как то инклудишь свой startSiege , а все остальное скипаешь и выполняется только твой код? Или это как раз то что ты описываешь где надо фиксить сотни ошибок?Но не можешь придумать свою логику осаду - например сделать какую-то стадийность осады (как к примеру в инстах), и так далее. Ты можешь выбрать только то, что уже вшито в гс.ехе.
Вы немного не поняли суть того, как работает экстендер в приложении. Допустим есть l2server.exe каждый участок кода имеет свой адрес в памяти(статический, не меняющийся) допустим функция метод класса CCastleSiege::OnSiegeStart(CCastleSiege*, int, int); старт этой функции, допустим, находится по адресу 0х463DEB, Допустим она вызывается в нескольких местах в сервере, при начале цикла осад, при гм команде и т.д. Для начала нам необходимо дизассемблировать и восстановить все члены класса CCastleSiege, и множество других, которые используются в этой функции, чтобы понимать, что вообще там происходит. Реверс происходит путем постановки брейк поинта,отладки и просмотра значений в переменных, и далее уже используя интуицию, так же в помощь берется пдб от 166, Далее, необходимое создать длл библу, написать функцию подмены(если целиком) вызова настоящей функции, на твою, измененную и написанную на с++ в твоей длл, так же необходимо написать портатипы, или изменить(по желанию) функции, которыетвызываются в OnSiegeStart. Если изменить, то проделать тоже самое и с ними. В общем вам необходимо разобрать не один класс, не Одину функцию, чтобы понимать что делается в одной нужной вам. Для человека, который этим занимается долгое время и имеет уже разобранный Ida от нужного протокола, это сделать очень не сложно. Если вы с нуля начнете делать это, то потратите очень много времениа если написать свои методы для осады и просто заменить адреса методов на свои, тоже не выйдет? ну предположим есть ивент onSiegeStart, и ты в него как то инклудишь свой startSiege , а все остальное скипаешь и выполняется только твой код? Или это как раз то что ты описываешь где надо фиксить сотни ошибок?
А нельзя никак это обойти?Вы немного не поняли суть
Хранимку ты можешь вызвать только отправив пакет от сервера кешеду, написав при этом пакет хандлер для пакетов кешеда и игрового сервера. Опять же это все экст, да честно в ПТС вообще нефиг лезть, если не умеешь реверсить и экстить. Так как ты упрешься в такой момент, который не сможешь исправить без экста, в Яве как то стараются все вывести в конфиги и дата Пак, в ПТС же все захардкорено. Это работает так: игровой сервер отправляет пакет с данными, опкод и информацию кешед серверу, кешед сервер по опкоду определяет в какую функцию засунуть эти данные, и дальше эти данные обрабатываются кешед сервером, если надо биндят параметры и отправляют в процедуру либо прямой запрос, если необходимо выводят какие то значения и записывают в переменные и отправляют обратно игровому серверу, пакетом с опкодом и информацией. Так же игровой сервер смотрит по опкоду в какую функциюА нельзя никак это обойти?
Ну например, кастую я определенный скил на НПС, он мне в ответ баф вешает, сервер записывает в базу инфу. Там же хранимые процедуры, написать ее можно любую. Самое главное записать инфу о захвате в БД.
Я тебе уже сказал кратко - это будет тебе стоить или дорого, или долго)А нельзя никак это обойти?
Ну например, кастую я определенный скил на НПС, он мне в ответ баф вешает, сервер записывает в базу инфу. Там же хранимые процедуры, написать ее можно любую. Самое главное записать инфу о захвате в БД.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?