Removes the knockback effect to your player from various abilities performed by enemies.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

74 lines
1.5 KiB

#include "No-ckback.h"
#include "DSP-Utils.h"
#include <windows.h>
#include <stdio.h>
plugininfo_t* g_PluginInfo;
bool Nockback::Initialize(IAshitaCore* core, ILogManager* log, uint32_t id)
{
this->m_AshitaCore = core;
this->m_PluginId = id;
this->m_LogManager = log;
return true;
}
void Nockback::Release()
{
}
plugininfo_t Nockback::GetPluginInfo()
{
return *g_PluginInfo;
}
bool Nockback::HandleIncomingPacket(uint16_t id, uint32_t size, void* data, void* modified, bool blocked)
{
if (id == 0x28)
{
uint8_t actionType = (uint8_t)(unpackBitsBE((unsigned char*)data, 82, 4));
if (actionType == 11)
{
uint8_t targetNum = RBUFB(data, 0x09);
uint16_t startBit = 150;
for (int i = 0; i < targetNum; i++)
{
packBitsBE((unsigned char*)data, 0, startBit + 60, 3);
if (unpackBitsBE((unsigned char*)data, startBit + 121, 1) & 0x1)
{
startBit += 37;
}
if (unpackBitsBE((unsigned char*)data, startBit + 122, 1) & 0x1)
{
startBit += 34;
}
startBit += 123;
}
}
}
return false;
}
__declspec(dllexport) double __stdcall GetInterfaceVersion(void)
{
return ASHITA_INTERFACE_VERSION;
}
__declspec(dllexport) void __stdcall CreatePluginInfo(plugininfo_t* Data)
{
g_PluginInfo = Data;
g_PluginInfo->PluginVersion = 1.05;
g_PluginInfo->InterfaceVersion = ASHITA_INTERFACE_VERSION;
g_PluginInfo->Priority = 0;
strncpy_s(g_PluginInfo->Name, "No-ckback", 256);
strncpy_s(g_PluginInfo->Author, "kjLotus", 256);
}
__declspec(dllexport) IPlugin* __stdcall CreatePlugin(void)
{
return (IPlugin*)new Nockback();
}