Для с1 это будет UEngine+0x4C =Очень нужно. Если я смогу что-то рисовать в клиенте я смогу синхронизировать клиента с геодатой
int field_48;
UClient *Client;//0x4C
int Engine;//0x28
_BYTE Viewports[12];//0x2C TArray<UViewport*>, если я правильно помню сам указатель UViewport на позиции Tarray+4 Байта т.е 0x30, либо начальной 2C.
UCanvas *Canvas;//0x68
Есть какой-то гайд как это использовать?Для с1 это будет UEngine+0x4C =
Далее UClient+0x2C=Код:int field_48; UClient *Client;//0x4C
Далее Собственно сам UCanvas UViewport+0x68;Код:int Engine;//0x28 _BYTE Viewports[12];//0x2C TArray<UViewport*>, если я правильно помню сам указатель UViewport на позиции Tarray+4 Байта т.е 0x30, либо начальной 2C.
Как то так.Код:UCanvas *Canvas;//0x68
Где-то здесь была статья по расширению клиента ,там с примером и данными, нужно будет заменить кое что, для начала к примеру адресс экспортируемого класса UEngineЕсть какой-то гайд как это использовать?
??0UEngine@@QAE@ABV0@@Z_0
Пока не пойму как это использовать))Где-то здесь была статья по расширению клиента ,там с примером и данными, нужно будет заменить кое что, для начала к примеру адресс экспортируемого класса UEngine, в примере должно быть использование GetProcAddress(Engine.dll(handle),"??0UEngine@@QAE@ABV0@@Z_0"), указатель на UEngine должен быть валидным, можно в этом убедиться/проверить используя CheatEngine ( проще всего ) , далее достаточно просто вызвать ту функцию которую нужно, с нужными параметрами к примеру DrawTexture(ТотСамыйУказатель на UEngine, 0, 21, 214, 127, 0, 0, 214, 127, textureLoginBack) (Фукнция так же эскпортируема ?DrawTexture@UCanvas@@UAEXHHHHMMMMPAVUTexture@@@Z ), но тут нужно будет так же загрузить и саму текстуру ( это не сложно ) , проще должно быть с ?DrawLine@UCanvas@@UAEXHHHHKH@Z .Код:??0UEngine@@QAE@ABV0@@Z_0
Как то вот так.
Ну можно как пример взять этоПока не пойму как это использовать))
TArray's source also included in my answer. L2ParamStack reconstructed from decompile manually (i'm not sure it's a fully same with original, but works for me)Привет, спасибо!! У меня есть вопрос: у меня проблема с TARRAY, у вас есть заголовочный файл? Или вы сделали какую-то реализацию для него? Еще вопрос: как вы пришли к этим функциям в paramstack? Я не нашел его реализацию в DLL.
#include "pch.h"
#include <iostream>
#include <string>
#include <sstream>
#include <Windows.h>
namespace { // Анонимное пространство имен, ограничивает область видимости переменных
// Перечисление для состояний окна Lineage 2
enum class L2ConsoleState {
Loading = 0, // Загрузка
Unknown = 1, // Неизвестно
Login = 2, // Вход в аккаунт
CharCreate = 3,// Создание персонажа
CharSelect = 4,// Выбор персонажа
InGame = 5 // В...
У меня такая же проблема.А если строка "Hello from UC!" находится как переменная а не константа? Проблема в том, что переменные не работают. Как их читать из .длл?
Код:local string test; test = "Hello from UC!"; SomeDllFunction(test);
function sendRequestToServer(optional int shotID, optional int _type)
{
local string zParam, test;
if (shotID <= 0 || _type != 0 && _type != 1) {
return;
}
RequestAutoSoulShot(shotID, _type);
if( _type == 1 )
{
ActivateAnimation(zParam);
}
return;
}
#include...
Было бы здорово если бы кто-то гайд написал поэтапно. А то приходится из разных кусков собирать что-то. Я лишь на 50% Сделал. Собрал библиотеку. Подключить ее пока что не удалось.Ну можно как пример взять это
Либо этоTArray's source also included in my answer. L2ParamStack reconstructed from decompile manually (i'm not sure it's a fully same with original, but works for me)Привет, спасибо!! У меня есть вопрос: у меня проблема с TARRAY, у вас есть заголовочный файл? Или вы сделали какую-то реализацию для него? Еще вопрос: как вы пришли к этим функциям в paramstack? Я не нашел его реализацию в DLL.
Либо вот это, тут точно все получиться =)Оставлю ато забуду))
Для интерлюдии, получим index выбранного персонажа.
Исходник DLL:
C++:#include "pch.h" #include <iostream> #include <string> #include <sstream> #include <Windows.h> namespace { // Анонимное пространство имен, ограничивает область видимости переменных // Перечисление для состояний окна Lineage 2 enum class L2ConsoleState { Loading = 0, // Загрузка Unknown = 1, // Неизвестно Login = 2, // Вход в аккаунт CharCreate = 3,// Создание персонажа CharSelect = 4,// Выбор персонажа InGame = 5 // В...
Там и готовый проект, только все нужно заменить как следует .У меня такая же проблема.А если строка "Hello from UC!" находится как переменная а не константа? Проблема в том, что переменные не работают. Как их читать из .длл?
Код:local string test; test = "Hello from UC!"; SomeDllFunction(test);
.uc
C++:function sendRequestToServer(optional int shotID, optional int _type) { local string zParam, test; if (shotID <= 0 || _type != 0 && _type != 1) { return; } RequestAutoSoulShot(shotID, _type); if( _type == 1 ) { ActivateAnimation(zParam); } return; }
my dll:
C++:#include...
А что ее там подключать ? Скинь свой Anydesk в ПМ, 1 минуту делать.Я не пойму как мувинг работает в L2
Я статью сделал давноВы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
И до статьи мне казалось я сделал передвижение на отлично(Я еще тогда не учитывал скорость ходьбы). Потом когда убегал далеко были расхождения и я это списывал на то что идет изменение Z координаты(когда по горам бегал) и от этого путь или длиннее или короче. А сервер то считает только по плоскости передвижение.
Сейчас после статьи передвижение на плоскости идеальное(результат по последним гифкам в статьи) (теперь я учитываю скорость ходьбы)
И тогда я приступил к задаче по геодате чтобы синхронизировать передвижение по Z. Потому как скорость на плоскости и на горе для сервера может быть разной. Ведь разное расстояние и надо это учитывать.
Но. Я сейчас без гео бегал по очень крутым горам и персонаж так же идеально синхронизировался. Когда он останавливался монетка по таймингу падала ровно в момент остановки.
То есть для сервера он перемещается по плоскости из x1 y1 в x2 y2 а на клиенте он бегает по горам. Как такое может быть?
Может в этом старом движке unreal перемещаясь по неровным поверхностям скорость может оставаться такой же?
И разницы никакой нет?
Было бы здорово если бы кто-то гайд написал поэтапно. А то приходится из разных кусков собирать что-то. Я лишь на 50% Сделал. Собрал библиотеку. Подключить ее пока что не удалось.
Так как скорость одинаковая на неровностях то подключение библиотеки с рисованием линий на стороне клиента для проверки синхрона на стороне сервера уже не актуальна))А что ее там подключать ? Скинь свой Anydesk в ПМ, 1 минуту делать.
как угодно тогда.Так как скорость одинаковая на неровностях то подключение библиотеки с рисованием линий на стороне клиента для проверки синхрона на стороне сервера уже не актуальна))
Я не пойму как мувинг работает в L2
Я статью сделал давноВы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
...
component Speed {
max = 999
walk = 100
run = 200
current = 0
}
Забинди в user.ini Home=show radii, покажет внутрении колизии моделек клиента. Но все эти коллизии влияют только на гео и просчет взаимодействия между персонажами, за исключением их столкновения. Для сервера ты можешь пробежать сквозь гремлина, и ничего не случитсяНа каком расстоянии NPC должен находиться от игрока?
Вплотную учитываю радиус коллизии? Гремлин (10), Человек (9) или еще дальше?
Про коллизии круто, попробую, а то надоело на глаз мерять ))Забинди в user.ini Home=show radii, покажет внутрении колизии моделек клиента. Но все эти коллизии влияют только на гео и просчет взаимодействия между персонажами, за исключением их столкновения. Для сервера ты можешь пробежать сквозь гремлина, и ничего не случится
Логично что дальность/расстояние должно просчитываться !Про коллизии круто, попробую, а то надоело на глаз мерять ))
Сквозь гремлина не пробежишь. Идет обработка коллизий на стороне клиента. А гремлин спокойно проходит сквозь игрока. Проверял на PTS сервере. Но так же на PTS сервере он близко не подбегает к игроку при атаке. Не пойму это лаг сервера был или где-то прописано расстояние, которое должно быть между объектами.
Логично. Только какое оно, знает кто?) Или на глаз подбирать?)Логично что дальность/расстояние должно просчитываться !
Вам же предложили взять NASC , и глянуть как там, он заведует движением NPC, а так же поиском и построением маршрута . Так проще всего , чем гадать.Логично. Только какое оно, знает кто?) Или на глаз подбирать?)
У тебя ведь есть базовая ренжа атаки, скорее всего, она и используется. Чаще всего это 40, можешь в нпцдате подглядетьЛогично. Только какое оно, знает кто?) Или на глаз подбирать?)
Да, клиентом оно кнш обрабатывается, но можно вырубить обработкуПро коллизии круто, попробую, а то надоело на глаз мерять ))
Сквозь гремлина не пробежишь. Идет обработка коллизий на стороне клиента. А гремлин спокойно проходит сквозь игрока. Проверял на PTS сервере. Но так же на PTS сервере он близко не подбегает к игроку при атаке. Не пойму это лаг сервера был или где-то прописано расстояние, которое должно быть между объектами.
Да, точно. Есть attackrange. У гремлина он 40.У тебя ведь есть базовая ренжа атаки, скорее всего, она и используется. Чаще всего это 40, можешь в нпцдате подглядеть
Да, клиентом оно кнш обрабатывается, но можно вырубить обработку
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?