TimaS Опубликовано 19 февраля, 2022 Поделиться Опубликовано 19 февраля, 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()); // Отпускаем } Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 20 февраля, 2022 Поделиться Опубликовано 20 февраля, 2022 Что это делает в разделе статей? Где тут статья? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения