feat: add resurrection
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include "Domain/Serializers/IncomingMessageFactoryInterface.h"
|
||||
#include "../ThirdParty/json.hpp"
|
||||
#include "Domain/ValueObjects/Vector3.h"
|
||||
#include "Domain/Enums/RestartPointTypeEnum.h"
|
||||
|
||||
using namespace L2Bot::Domain;
|
||||
using json = nlohmann::json;
|
||||
@@ -112,6 +113,14 @@ private:
|
||||
Serializers::IncomingMessage::Type::stand
|
||||
};
|
||||
}
|
||||
else if (type == "RestartPoint")
|
||||
{
|
||||
return Serializers::IncomingMessage
|
||||
{
|
||||
Serializers::IncomingMessage::Type::restartPoint,
|
||||
std::make_shared<Enums::RestartPointTypeEnum>(jsonObject.get<Enums::RestartPointTypeEnum>())
|
||||
};
|
||||
}
|
||||
|
||||
return Serializers::IncomingMessage();
|
||||
}
|
||||
|
@@ -26,6 +26,7 @@ namespace Interlude
|
||||
int(__thiscall* NetworkHandlerWrapper::__RequestUseItem)(NetworkHandler*, L2ParamStack&) = 0;
|
||||
void(__thiscall* NetworkHandlerWrapper::__RequestAutoSoulShot)(NetworkHandler*, L2ParamStack&) = 0;
|
||||
void(__thiscall* NetworkHandlerWrapper::__ChangeWaitType)(NetworkHandler*, int) = 0;
|
||||
void(__thiscall* NetworkHandlerWrapper::__RequestRestartPoint)(NetworkHandler*, L2ParamStack&) = 0;
|
||||
|
||||
Item* NetworkHandlerWrapper::GetNextItem(float_t radius, int prevId) const
|
||||
{
|
||||
@@ -193,6 +194,19 @@ namespace Interlude
|
||||
}
|
||||
}
|
||||
|
||||
void NetworkHandlerWrapper::RequestRestartPoint(L2ParamStack& stack) const
|
||||
{
|
||||
__try {
|
||||
if (__RequestRestartPoint && _target) {
|
||||
(*__RequestRestartPoint)(_target, stack);
|
||||
}
|
||||
}
|
||||
__except (EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
throw CriticalRuntimeException(L"UNetworkHandler::RequestRestartPoint failed");
|
||||
}
|
||||
}
|
||||
|
||||
void NetworkHandlerWrapper::Init(HMODULE hModule)
|
||||
{
|
||||
void* initAddress = GetProcAddress(hModule, "?Tick@UNetworkHandler@@UAEXM@Z");
|
||||
@@ -210,6 +224,7 @@ namespace Interlude
|
||||
(FARPROC&)__RequestUseItem = GetProcAddress(hModule, "?RequestUseItem@UNetworkHandler@@UAEHAAVL2ParamStack@@@Z");
|
||||
(FARPROC&)__RequestAutoSoulShot = GetProcAddress(hModule, "?RequestAutoSoulShot@UNetworkHandler@@UAEXAAVL2ParamStack@@@Z");
|
||||
(FARPROC&)__ChangeWaitType = GetProcAddress(hModule, "?ChangeWaitType@UNetworkHandler@@UAEXH@Z");
|
||||
(FARPROC&)__RequestRestartPoint = GetProcAddress(hModule, "?RequestRestartPoint@UNetworkHandler@@UAEXAAVL2ParamStack@@@Z");
|
||||
|
||||
(FARPROC&)__AddNetworkQueue = (FARPROC)splice(
|
||||
GetProcAddress(hModule, "?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkPacket@@@Z"), __AddNetworkQueue_hook
|
||||
|
@@ -31,6 +31,7 @@ namespace Interlude
|
||||
int RequestUseItem(L2ParamStack& stack) const;
|
||||
void RequestAutoSoulShot(L2ParamStack& stack) const;
|
||||
void ChangeWaitType(int type) const;
|
||||
void RequestRestartPoint(L2ParamStack& stack) const;
|
||||
private:
|
||||
|
||||
static void __fastcall __Init_hook(NetworkHandler* This, int /*edx*/, float unk);
|
||||
@@ -52,6 +53,7 @@ namespace Interlude
|
||||
static void(__thiscall* __RequestAutoSoulShot)(NetworkHandler*, L2ParamStack&);
|
||||
//params objectId, unk
|
||||
static void(__thiscall* __ChangeWaitType)(NetworkHandler*, int);
|
||||
static void(__thiscall* __RequestRestartPoint)(NetworkHandler*, L2ParamStack&);
|
||||
|
||||
private:
|
||||
static void* originalInitAddress;
|
||||
|
@@ -4,6 +4,7 @@
|
||||
#include "../Repositories/ItemRepository.h"
|
||||
#include "../GameStructs/NetworkHandlerWrapper.h"
|
||||
#include "../GameStructs/L2GameDataWrapper.h"
|
||||
#include "Domain/Enums/RestartPointTypeEnum.h"
|
||||
|
||||
using namespace L2Bot::Domain;
|
||||
|
||||
@@ -123,6 +124,16 @@ namespace Interlude
|
||||
m_NetworkHandler.ChangeWaitType(1);
|
||||
}
|
||||
|
||||
void RestartPoint(Enums::RestartPointTypeEnum type) const override
|
||||
{
|
||||
L2ParamStack* stack = new L2ParamStack(1);
|
||||
stack->PushBack((void*)type);
|
||||
|
||||
m_NetworkHandler.RequestRestartPoint(*stack);
|
||||
|
||||
delete stack;
|
||||
}
|
||||
|
||||
private:
|
||||
const NetworkHandlerWrapper& m_NetworkHandler;
|
||||
const ItemRepository& m_ItemRespository;
|
||||
|
Reference in New Issue
Block a user