Перейти к содержанию

[Warface] Магнит 2022


Рекомендуемые сообщения

Доброго времени суток!

 

Структуры:

struct SMessage
{
  int type;
  int msgType;
  DWORD64 serverTime;
  int opcode;
  bool instant;
};

struct SHoldEntityMessage : SMessage
{
 unsigned int entityId;
 unsigned int playerId;
 CryStringT itemName;
};

void Resync(CGameObject* pGameObject, EntityId m_pEntityId, EntityId pEntityId, DWORD64 dwTime)
{
	int z = -1;
	SHoldEntityMessage msg;
	ZeroMemory(&msg, sizeof(SHoldEntityMessage));
	msg.type = 10;
	msg.msgType = 0;
	msg.instant = 0;
	msg.opcode = -1;
	msg.entityId = pEntityId; // 
	msg.playerId = m_pEntityId; // 
	msg.itemName.m_str = "";
	msg.itemName.m_header = &z;
	msg.serverTime = dwTime;

	VOID* v1 = pGameObject->Create(msg);

	if (v1 and v1 != 0)
	{
		_InterlockedIncrement((volatile unsigned __int32*)((__int64)v1 + 0x38));

		pGameObject->InvokeRMI(&v1, 256, -1);
	}
}
class CGameObject
{
public:
int GetEntityId() { return *(int*)((uint64_t)this + 0x8);}

void InvokeRMI(VOID** pBody, int iRMI, int channel) { VirtualFunction<void(__fastcall*)(VOID*, VOID**, int, int)>(this, 448 / 8)(this, pBody, iRMI, channel); }

using fnCall = VOID*(__fastcall*)(VOID*, unsigned int, SHoldEntityMessage*, __int64*, int, int);
	VOID* Create(SM_Network::SHoldEntityMessage pMessage) { return fnCall(0x1417208A0)(
		*(VOID**)0x142175000, // Allocator
		GetEntityId(),
		&pMessage, 
		nullptr,
		0,
		0); }
};

Вызов:

EntityId pEntityId = pActor->GetEntityId();
Resync(pGameObject, 0, pEntityId, pGameFramework->GetServerTime()); // Берем врага в руки (телепорт)
if ((GetDistance(mActor->GetPosition(), pActor->GetPosition()) <= 2.5f))
{
  Resync(pGameObject, pEntityId, 0, pGameFramework->GetServerTime()); // Отпускаем
}

 

 

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.