Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Warface — Проблема с отправкой RMI пакета (eSMT_CoopClimb)

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
658
Реакции
18
Здарова, реверсеры.

Столкнулся с такой темой: при попытке отправить RMI пакет в Warface происходит ровным счетом ничего. Суть в том, что когда шлешь eSMT_CoopAssist — сервер пакет хавает и все ок, но как только дело доходит до eSMT_CoopClimb, наступает полная тишина.

Юзаю структуру
Код:
Expand Collapse Copy
SM_Network__SCoopAssistMessage
и вызываю функцию через смещение. Код выглядит примерно так:

Код:
Expand Collapse Copy
printf("CSM_CoopClimb_Finish\\n");
SM_Network__SCoopAssistMessage pSM_Network__SCoopAssistMessage;
RtlSecureZeroMemory(&pSM_Network__SCoopAssistMessage, sizeof(SM_Network__SCoopAssistMessage));
pSM_Network__SCoopAssistMessage.type = ESMType::eSMT_CoopClimb;
pSM_Network__SCoopAssistMessage.msgType = EMessageType::eMT_End;
pSM_Network__SCoopAssistMessage.opcode = -1;
pSM_Network__SCoopAssistMessage.instant = TRUE;

SendMessageFromServer_0((SendMessageFromServer_0)0x141527650)(m_pPlayer, &pSM_Network__SCoopAssistMessage);

Есть подозрение, что для отработки подсадки (CoopClimb) серверу нужно что-то еще, кроме сообщения о завершении. Возможно, дело в опкоде или состоянии самого m_pPlayer. По адресу 0x141527650 вроде все на месте, но пакет либо не долетает, либо игнорится.

Кто плотно ковырял сетевую часть в WF, есть мысли, почему ассист залетает, а клаймб — нет?

Кто уже возился с этими структурами, отпишитесь по делу.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Так у тебя FromServer , нафиг ты от сервера его кидаешь?

Во вторых какого хрена ты кидаешь ESMType CoopClimb, когда надо CoopAssist ?
И в третьих нахер тебе это надо? Тебя система защита кикнет
Для отправки SM_Network__SCoopClimbMessage нужна функция


CSM_CoopCinematic::SendMessageFromServer



т.к она принимает структуру нужную тебе
v6 = IGameObject::CRMIBodyImpl<SM_Network::SCoopClimbMessage>::Create(
pMethodInfo,
m_pGameObject->m_entityId,
msg,
0,
0,
0);
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ты еще и спастил то, что я делал для дедика
C++:
Expand Collapse Copy
void __cdecl CSM_CoopAssist__Finish(void* this1)
{
    mCSM_CoopAssist__Finish(this1);

    SM_Network__SCoopAssistMessage pSM_Network__SCoopAssistMessage;
    RtlSecureZeroMemory(&pSM_Network__SCoopAssistMessage, sizeof(SM_Network__SCoopAssistMessage));
    pSM_Network__SCoopAssistMessage.ptr = (void*)0;
    pSM_Network__SCoopAssistMessage.type = 8;
    pSM_Network__SCoopAssistMessage.msgType = 1;
    pSM_Network__SCoopAssistMessage.opcode = -1;
    pSM_Network__SCoopAssistMessage.instant = 0;
    pSM_Network__SCoopAssistMessage.animIndex = -1;

  
    if (*(ECoopAssistState*)((DWORD64)this1 + 0xB0) != eCAS_Assisting)
    {
        CActor* m_pPlayer = *(CActor**)((DWORD64)this1 + 16);
        if (m_pPlayer)
            SendMessageFromServer_0((SendMessageFromServer_0)0x1416CFD50)(m_pPlayer, &pSM_Network__SCoopAssistMessage);
    }
    else {
        CActor* m_pPlayer = *(CActor**)((DWORD64)this1 + 16);
        if (m_pPlayer)
        {
            Vec3 endPoint;
            typedef Vec3* (__fastcall* CPiecewiseTrajectory__GetEndPoint)(void*, Vec3*);
            CPiecewiseTrajectory__GetEndPoint((CPiecewiseTrajectory__GetEndPoint)0x1416B6540)((void*)((DWORD64)this1 + 0x38), &endPoint);

            m_pPlayer->GetEntity()->SetPos(endPoint);

            pSM_Network__SCoopAssistMessage.helperClosestPoint = endPoint;
            //pSM_Network__SCoopAssistMessage.serverTime = SSystemGlobalEnvironment::Singleton()->pCTimer()->GetFrameStartTime(0)->m_lValue;

            SendMessageFromServer_0((SendMessageFromServer_0)0x1416CFD50)(m_pPlayer, &pSM_Network__SCoopAssistMessage);
        }
    }

}
а и да. Функция SendMessageFromServer_0 принимает только структуру SM_Network__SCoopAssistMessage
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
Expand Collapse Copy
void __fastcall CSM_CoopClimb__Finish(void* this1)
{
    mCSM_CoopClimb__Finish(this1);

    SM_Network__SCoopAssistMessage pSM_Network__SCoopClimbMessage;
    RtlSecureZeroMemory(&pSM_Network__SCoopClimbMessage, sizeof(pSM_Network__SCoopClimbMessage));
    pSM_Network__SCoopClimbMessage.ptr = (void*)0;
    pSM_Network__SCoopClimbMessage.type = 7;
    pSM_Network__SCoopClimbMessage.msgType = 1;
    pSM_Network__SCoopClimbMessage.opcode = -1;
    pSM_Network__SCoopClimbMessage.instant = 1;

    IActor* m_pPlayer = *(IActor**)((DWORD64)this1 + 16);
    if (m_pPlayer)
        SendMessageFromServerSinematic((SendMessageFromServerSinematic)offsets::dwSendMessageFromServer_0)(m_pPlayer, &pSM_Network__SCoopAssistMessage);
}
 
Назад
Сверху Снизу