mirror of
https://github.com/Mr-X-GTA/YimMenu.git
synced 2025-06-25 09:43:11 +08:00
feat(hooks): General cleanup on hooks and pointers (#322)
This commit is contained in:
@ -726,96 +726,96 @@ enum class NetObjEntityType : uint16_t
|
||||
NetObjEntityType_Max
|
||||
};
|
||||
|
||||
enum class RockstarEvent : uint16_t
|
||||
enum class eNetworkEvents : uint16_t
|
||||
{
|
||||
OBJECT_ID_FREED_EVENT,
|
||||
OBJECT_ID_REQUEST_EVENT,
|
||||
ARRAY_DATA_VERIFY_EVENT,
|
||||
SCRIPT_ARRAY_DATA_VERIFY_EVENT,
|
||||
REQUEST_CONTROL_EVENT,
|
||||
GIVE_CONTROL_EVENT,
|
||||
WEAPON_DAMAGE_EVENT,
|
||||
REQUEST_PICKUP_EVENT,
|
||||
REQUEST_MAP_PICKUP_EVENT,
|
||||
GAME_CLOCK_EVENT,
|
||||
GAME_WEATHER_EVENT,
|
||||
RESPAWN_PLAYER_PED_EVENT,
|
||||
GIVE_WEAPON_EVENT,
|
||||
REMOVE_WEAPON_EVENT,
|
||||
REMOVE_ALL_WEAPONS_EVENT,
|
||||
VEHICLE_COMPONENT_CONTROL_EVENT,
|
||||
FIRE_EVENT,
|
||||
EXPLOSION_EVENT,
|
||||
START_PROJECTILE_EVENT,
|
||||
UPDATE_PROJECTILE_TARGET_EVENT,
|
||||
REMOVE_PROJECTILE_ENTITY_EVENT,
|
||||
BREAK_PROJECTILE_TARGET_LOCK_EVENT,
|
||||
ALTER_WANTED_LEVEL_EVENT,
|
||||
CHANGE_RADIO_STATION_EVENT,
|
||||
RAGDOLL_REQUEST_EVENT,
|
||||
PLAYER_TAUNT_EVENT,
|
||||
PLAYER_CARD_STAT_EVENT,
|
||||
DOOR_BREAK_EVENT,
|
||||
SCRIPTED_GAME_EVENT,
|
||||
REMOTE_SCRIPT_INFO_EVENT,
|
||||
REMOTE_SCRIPT_LEAVE_EVENT,
|
||||
MARK_AS_NO_LONGER_NEEDED_EVENT,
|
||||
CONVERT_TO_SCRIPT_ENTITY_EVENT,
|
||||
SCRIPT_WORLD_STATE_EVENT,
|
||||
CLEAR_AREA_EVENT,
|
||||
CLEAR_RECTANGLE_AREA_EVENT,
|
||||
NETWORK_REQUEST_SYNCED_SCENE_EVENT,
|
||||
NETWORK_START_SYNCED_SCENE_EVENT,
|
||||
NETWORK_STOP_SYNCED_SCENE_EVENT,
|
||||
NETWORK_UPDATE_SYNCED_SCENE_EVENT,
|
||||
INCIDENT_ENTITY_EVENT,
|
||||
GIVE_PED_SCRIPTED_TASK_EVENT,
|
||||
GIVE_PED_SEQUENCE_TASK_EVENT,
|
||||
NETWORK_CLEAR_PED_TASKS_EVENT,
|
||||
NETWORK_START_PED_ARREST_EVENT,
|
||||
NETWORK_START_PED_UNCUFF_EVENT,
|
||||
NETWORK_SOUND_CAR_HORN_EVENT,
|
||||
NETWORK_ENTITY_AREA_STATUS_EVENT,
|
||||
NETWORK_GARAGE_OCCUPIED_STATUS_EVENT,
|
||||
PED_CONVERSATION_LINE_EVENT,
|
||||
SCRIPT_ENTITY_STATE_CHANGE_EVENT,
|
||||
NETWORK_PLAY_SOUND_EVENT,
|
||||
NETWORK_STOP_SOUND_EVENT,
|
||||
NETWORK_PLAY_AIRDEFENSE_FIRE_EVENT,
|
||||
NETWORK_BANK_REQUEST_EVENT,
|
||||
NETWORK_AUDIO_BARK_EVENT,
|
||||
REQUEST_DOOR_EVENT,
|
||||
NETWORK_TRAIN_REPORT_EVENT,
|
||||
NETWORK_TRAIN_REQUEST_EVENT,
|
||||
NETWORK_INCREMENT_STAT_EVENT,
|
||||
MODIFY_VEHICLE_LOCK_WORD_STATE_DATA,
|
||||
MODIFY_PTFX_WORD_STATE_DATA_SCRIPTED_EVOLVE_EVENT,
|
||||
REQUEST_PHONE_EXPLOSION_EVENT,
|
||||
REQUEST_DETACHMENT_EVENT,
|
||||
KICK_VOTES_EVENT,
|
||||
GIVE_PICKUP_REWARDS_EVENT,
|
||||
NETWORK_CRC_HASH_CHECK_EVENT,
|
||||
BLOW_UP_VEHICLE_EVENT,
|
||||
NETWORK_SPECIAL_FIRE_EQUIPPED_WEAPON,
|
||||
NETWORK_RESPONDED_TO_THREAT_EVENT,
|
||||
NETWORK_SHOUT_TARGET_POSITION,
|
||||
VOICE_DRIVEN_MOUTH_MOVEMENT_FINISHED_EVENT,
|
||||
PICKUP_DESTROYED_EVENT,
|
||||
UPDATE_PLAYER_SCARS_EVENT,
|
||||
NETWORK_CHECK_EXE_SIZE_EVENT,
|
||||
NETWORK_PTFX_EVENT,
|
||||
NETWORK_PED_SEEN_DEAD_PED_EVENT,
|
||||
REMOVE_STICKY_BOMB_EVENT,
|
||||
NETWORK_CHECK_CODE_CRCS_EVENT,
|
||||
INFORM_SILENCED_GUNSHOT_EVENT,
|
||||
PED_PLAY_PAIN_EVENT,
|
||||
CACHE_PLAYER_HEAD_BLEND_DATA_EVENT,
|
||||
REMOVE_PED_FROM_PEDGROUP_EVENT,
|
||||
REPORT_MYSELF_EVENT,
|
||||
REPORT_CASH_SPAWN_EVENT,
|
||||
ACTIVATE_VEHICLE_SPECIAL_ABILITY_EVENT,
|
||||
BLOCK_WEAPON_SELECTION,
|
||||
NETWORK_CHECK_CATALOG_CRC
|
||||
CObjectIdFreedEvent,
|
||||
CObjectIdRequestEvent,
|
||||
CArrayDataVerifyEvent,
|
||||
CScriptArrayDataVerifyEvent,
|
||||
CRequestControlEvent,
|
||||
CGiveControlEvent,
|
||||
CWeaponDamageEvent,
|
||||
CRequestPickupEvent,
|
||||
CRequestMapPickupEvent,
|
||||
CGameClockEvent,
|
||||
CGameWeatherEvent,
|
||||
CRespawnPlayerPedEvent,
|
||||
CGiveWeaponEvent,
|
||||
CRemoveWeaponEvent,
|
||||
CRemoveAllWeaponsEvent,
|
||||
CVehicleComponentControlEvent,
|
||||
CFireEvent,
|
||||
CExplosionEvent,
|
||||
CStartProjectileEvent,
|
||||
CUpdateProjectileTargetEvent,
|
||||
CRemoveProjectileEntityEvent,
|
||||
CBreakProjectileTargetLockEvent,
|
||||
CAlterWantedLevelEvent,
|
||||
CChangeRadioStationEvent,
|
||||
CRagdollRequestEvent,
|
||||
CPlayerTauntEvent,
|
||||
CPlayerCardStatEvent,
|
||||
CDoorBreakEvent,
|
||||
CScriptedGameEvent,
|
||||
CRemoteScriptInfoEvent,
|
||||
CRemoteScriptLeaveEvent,
|
||||
CMarkAsNoLongerNeededEvent,
|
||||
CConvertToScriptEntityEvent,
|
||||
CScriptWorldStateEvent,
|
||||
CClearAreaEvent,
|
||||
CClearRectangleAreaEvent,
|
||||
CNetworkRequestSyncedSceneEvent,
|
||||
CNetworkStartSyncedSceneEvent,
|
||||
CNetworkStopSyncedSceneEvent,
|
||||
CNetworkUpdateSyncedSceneEvent,
|
||||
CIncidentEntityEvent,
|
||||
CGivePedScriptedTaskEvent,
|
||||
CGivePedSequenceTaskEvent,
|
||||
CNetworkClearPedTasksEvent,
|
||||
CNetworkStartPedArrestEvent,
|
||||
CNetworkStartPedUncuffEvent,
|
||||
CNetworkSoundCarHornEvent,
|
||||
CNetworkEntityAreaStatusEvent,
|
||||
CNetworkGarageOccupiedStatusEvent,
|
||||
CPedConversationLineEvent,
|
||||
CScriptEntityStateChangeEvent,
|
||||
CNetworkPlaySoundEvent,
|
||||
CNetworkStopSoundEvent,
|
||||
CNetworkPlayAirdefenseFireEvent,
|
||||
CNetworkBankRequestEvent,
|
||||
CNetworkAudioBarkEvent,
|
||||
CRequestDoorEvent,
|
||||
CNetworkTrainReportEvent,
|
||||
CNetworkTrainRequestEvent,
|
||||
CNetworkIncrementStatEvent,
|
||||
CModifyVehicleLockWordStateData,
|
||||
CModifyPtfxWordStateDataScriptedEvolveEvent,
|
||||
CRequestPhoneExplosionEvent,
|
||||
CRequestDetachmentEvent,
|
||||
CKickVotesEvent,
|
||||
CGivePickupRewardsEvent,
|
||||
CNetworkCrcHashCheckEvent,
|
||||
CBlowUpVehicleEvent,
|
||||
CNetworkSpecialFireEquippedWeapon,
|
||||
CNetworkRespondedToThreatEvent,
|
||||
CNetworkShoutTargetPosition,
|
||||
CVoiceDrivenMouthMovementFinishedEvent,
|
||||
CPickupDestroyedEvent,
|
||||
CUpdatePlayerScarsEvent,
|
||||
CNetworkCheckExeSizeEvent,
|
||||
CNetworkPtfxEvent,
|
||||
CNetworkPedSeenDeadPedEvent,
|
||||
CRemoveStickyBombEvent,
|
||||
CNetworkCheckCodeCrcsEvent,
|
||||
CInformSilencedGunshotEvent,
|
||||
CPedPlayPainEvent,
|
||||
CCachePlayerHeadBlendDataEvent,
|
||||
CRemovePedFromPedgroupEvent,
|
||||
CUpdateFxnEvent,
|
||||
CReportCashSpawnEvent,
|
||||
CActivateVehicleSpecialAbilityEvent,
|
||||
CBlockWeaponSelection,
|
||||
CNetworkCheckCatalogCrc
|
||||
};
|
||||
|
||||
enum class BlipIcons
|
||||
|
@ -54,12 +54,45 @@ namespace rage
|
||||
std::int32_t m_data_count;
|
||||
std::uint32_t m_data[48];
|
||||
};
|
||||
|
||||
static_assert(sizeof(scrNativeCallContext) == 0xE0);
|
||||
using scrNativeHash = std::uint64_t;
|
||||
using scrNativeMapping = std::pair<scrNativeHash, scrNativeHash>;
|
||||
using scrNativeHandler = void(*)(scrNativeCallContext*);
|
||||
|
||||
class scrNativeRegistration;
|
||||
class scrNativeRegistration {
|
||||
public:
|
||||
uint64_t m_nextRegistration1;
|
||||
uint64_t m_nextRegistration2;
|
||||
void* m_handlers[7];
|
||||
uint32_t m_numEntries1;
|
||||
uint32_t m_numEntries2;
|
||||
uint64_t m_hashes;
|
||||
scrNativeRegistration* get_next_registration() {
|
||||
std::uintptr_t result;
|
||||
auto nextReg = uintptr_t(&m_nextRegistration1);
|
||||
auto newReg = nextReg ^ m_nextRegistration2;
|
||||
auto charTableOfRegs = (char*)&result - nextReg;
|
||||
for (auto i = 0; i < 3; i++) {
|
||||
*(DWORD*)&charTableOfRegs[nextReg] = static_cast<DWORD>(newReg) ^ *(DWORD*)nextReg;
|
||||
nextReg += 4;
|
||||
}
|
||||
return reinterpret_cast<scrNativeRegistration*>(result);
|
||||
}
|
||||
std::uint32_t get_num_entries() {
|
||||
return static_cast<std::uint32_t>(((std::uintptr_t)&m_numEntries1) ^ m_numEntries1 ^ m_numEntries2);
|
||||
}
|
||||
std::uint64_t get_hash(std::uint32_t index) {
|
||||
auto nativeAddress = 16 * index + std::uintptr_t(&m_nextRegistration1) + 0x54;
|
||||
std::uint64_t result;
|
||||
auto charTableOfRegs = (char*)&result - nativeAddress;
|
||||
auto addressIndex = nativeAddress ^ *(DWORD*)(nativeAddress + 8);
|
||||
for (auto i = 0; i < 3; i++) {
|
||||
*(DWORD*)&charTableOfRegs[nativeAddress] = static_cast<DWORD>(addressIndex ^ *(DWORD*)(nativeAddress));
|
||||
nativeAddress += 4;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
#pragma pack(push, 1)
|
||||
class scrNativeRegistrationTable
|
||||
@ -69,8 +102,6 @@ namespace rage
|
||||
bool m_initialized;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
static_assert(sizeof(scrNativeCallContext) == 0xE0);
|
||||
}
|
||||
|
||||
using Void = void;
|
||||
|
@ -7,139 +7,266 @@
|
||||
namespace rage
|
||||
{
|
||||
class netPlayer;
|
||||
|
||||
class datBitBuffer
|
||||
{
|
||||
public:
|
||||
inline datBitBuffer(void* data, uint32_t size)
|
||||
{
|
||||
datBitBuffer(uint8_t* data, uint32_t size) {
|
||||
m_data = data;
|
||||
m_f8 = 0;
|
||||
m_bitOffset = 0;
|
||||
m_maxBit = size * 8;
|
||||
m_bitsRead = 0;
|
||||
m_curBit = 0;
|
||||
m_unk2Bit = 0;
|
||||
m_highestBitsRead = 0;
|
||||
m_flagBits = 0;
|
||||
}
|
||||
|
||||
inline uint32_t GetPosition()
|
||||
{
|
||||
uint32_t GetPosition() {
|
||||
return m_bitsRead;
|
||||
}
|
||||
|
||||
inline bool Seek(uint32_t bits)
|
||||
{
|
||||
if (bits >= 0)
|
||||
{
|
||||
bool Seek(uint32_t bits) {
|
||||
if (bits >= 0) {
|
||||
uint32_t length = (m_flagBits & 1) ? m_maxBit : m_curBit;
|
||||
|
||||
if (bits <= length)
|
||||
{
|
||||
m_bitsRead = bits;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
inline int GetDataLength()
|
||||
{
|
||||
bool WriteBool(bool integer) {
|
||||
return big::g_pointers->m_write_bitbuf_bool(this, integer, 1);
|
||||
}
|
||||
bool ReadBool(bool* integer) {
|
||||
return big::g_pointers->m_read_bitbuf_bool(this, integer, 1);
|
||||
}
|
||||
bool ReadPeerId(uint64_t* integer) {
|
||||
return this->ReadQWord(integer, 0x32);
|
||||
}
|
||||
uint64_t ReadBits(size_t numBits) {
|
||||
auto const totalBits = (m_flagBits & 1) ? m_maxBit : m_curBit;
|
||||
if ((m_flagBits & 2) || m_bitsRead + numBits > totalBits)
|
||||
return 0;
|
||||
auto const bufPos = m_bitsRead + m_bitOffset;
|
||||
auto const initialBitOffset = bufPos & 0b111;
|
||||
auto const start = &m_data[bufPos / 8];
|
||||
auto const next = &start[1];
|
||||
auto result = (start[0] << initialBitOffset) & 0xff;
|
||||
for (auto i = 0; i < ((numBits - 1) / 8); i++) {
|
||||
result <<= 8;
|
||||
result |= next[i] << initialBitOffset;
|
||||
}
|
||||
if (initialBitOffset)
|
||||
result |= next[0] >> (8 - initialBitOffset);
|
||||
m_bitsRead += static_cast<uint32_t>(numBits);
|
||||
if (m_bitsRead > m_highestBitsRead)
|
||||
m_highestBitsRead = m_bitsRead;
|
||||
return result >> ((8 - numBits) % 8);
|
||||
}
|
||||
int GetDataLength() {
|
||||
int leftoverBit = (m_curBit % 8) ? 1 : 0;
|
||||
|
||||
return (m_curBit / 8) + leftoverBit;
|
||||
}
|
||||
|
||||
inline bool ReadByte(uint8_t* integer, int bits)
|
||||
{
|
||||
bool ReadString(char* string, int bits) {
|
||||
return big::g_pointers->m_read_bitbuf_string(this, string, bits);
|
||||
}
|
||||
bool WriteByte(uint8_t integer, int bits) {
|
||||
return big::g_pointers->m_write_bitbuf_dword(this, integer, bits);
|
||||
}
|
||||
bool ReadByte(uint8_t* integer, int bits) {
|
||||
uint32_t read;
|
||||
if (big::g_pointers->m_read_bitbuf_dword(this, &read, bits))
|
||||
{
|
||||
if (big::g_pointers->m_read_bitbuf_dword(this, &read, bits)) {
|
||||
*integer = read;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool ReadWord(uint16_t* integer, int bits)
|
||||
{
|
||||
bool WriteWord(uint16_t integer, int bits) {
|
||||
return big::g_pointers->m_write_bitbuf_dword(this, integer, bits);
|
||||
}
|
||||
bool ReadWord(uint16_t* integer, int bits) {
|
||||
uint32_t read;
|
||||
if (big::g_pointers->m_read_bitbuf_dword(this, &read, bits))
|
||||
{
|
||||
if (big::g_pointers->m_read_bitbuf_dword(this, &read, bits)) {
|
||||
*integer = read;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool ReadDword(uint32_t* integer, int bits)
|
||||
{
|
||||
bool WriteDword(uint32_t integer, int bits) {
|
||||
return big::g_pointers->m_write_bitbuf_dword(this, integer, bits);
|
||||
}
|
||||
bool ReadDword(uint32_t* integer, int bits) {
|
||||
return big::g_pointers->m_read_bitbuf_dword(this, integer, bits);
|
||||
}
|
||||
|
||||
inline bool ReadInt32(int32_t* integer, int bits)
|
||||
{
|
||||
bool WriteInt32(int32_t integer, int bits) {
|
||||
return big::g_pointers->m_write_bitbuf_int32(this, integer, bits);
|
||||
}
|
||||
bool ReadInt32(int32_t* integer, int bits) {
|
||||
int32_t v8;
|
||||
int32_t v9;
|
||||
if (ReadDword((uint32_t*)&v8, 1u) && ReadDword((uint32_t*)&v9, bits - 1))
|
||||
{
|
||||
if (ReadDword((uint32_t*)&v8, 1u) && ReadDword((uint32_t*)&v9, bits - 1)) {
|
||||
*integer = v8 + (v9 ^ -v8);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool ReadQWord(uint64_t* integer, int bits)
|
||||
{
|
||||
if (bits <= 32)
|
||||
{
|
||||
uint32_t v10{};
|
||||
if (ReadDword(&v10, bits))
|
||||
{
|
||||
bool WriteQWord(uint64_t integer, int bits) {
|
||||
return big::g_pointers->m_write_bitbuf_qword(this, integer, bits);
|
||||
}
|
||||
bool ReadQWord(uint64_t* integer, int bits) {
|
||||
if (bits <= 32) {
|
||||
uint32_t v10;
|
||||
if (ReadDword(&v10, bits)) {
|
||||
*integer = v10;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint32_t v10{}, v11{};
|
||||
if (ReadDword(&v11, 32u) && ReadDword(&v10, bits - 32u))
|
||||
{
|
||||
else {
|
||||
uint32_t v10, v11;
|
||||
if (ReadDword(&v11, 32u) && ReadDword(&v10, bits - 32u)) {
|
||||
*integer = v11 | ((uint64_t)v10 << 32);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool ReadInt64(int64_t* integer, int bits)
|
||||
{
|
||||
bool WriteInt64(int64_t integer, int bits) {
|
||||
return big::g_pointers->m_write_bitbuf_int64(this, integer, bits);
|
||||
}
|
||||
bool ReadInt64(int64_t* integer, int bits) {
|
||||
uint32_t v8;
|
||||
uint64_t v9;
|
||||
if (ReadDword(&v8, 1u) && ReadQWord(&v9, bits - 1))
|
||||
{
|
||||
if (ReadDword(&v8, 1u) && ReadQWord(&v9, bits - 1)) {
|
||||
*integer = v8 + (v9 ^ -(int64_t)v8);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool ReadArray(PVOID array, int size)
|
||||
{
|
||||
bool WriteArray(uint8_t* array, int size) {
|
||||
return big::g_pointers->m_write_bitbuf_array(this, array, size, 0);
|
||||
}
|
||||
bool ReadArray(PVOID array, int size) {
|
||||
return big::g_pointers->m_read_bitbuf_array(this, array, size, 0);
|
||||
}
|
||||
|
||||
public:
|
||||
void* m_data; //0x0000
|
||||
uint32_t m_f8; //0x0008
|
||||
uint8_t* m_data; //0x0000
|
||||
uint32_t m_bitOffset; //0x0008
|
||||
uint32_t m_maxBit; //0x000C
|
||||
uint32_t m_bitsRead; //0x0010
|
||||
uint32_t m_curBit; //0x0014
|
||||
uint32_t m_unk2Bit; //0x0018
|
||||
uint32_t m_highestBitsRead; //0x0018
|
||||
uint8_t m_flagBits; //0x001C
|
||||
char pad_0x01D[3];
|
||||
uint32_t m_f20;
|
||||
};
|
||||
|
||||
enum class eNetMessage : uint32_t {
|
||||
CMsgInvalid = 0xFFFFF,
|
||||
CMsgSessionAcceptChat = 0x62,
|
||||
CMsgStartMatchCmd = 0x2D,
|
||||
CMsgSetInvitableCmd = 0x1F,
|
||||
CMsgSessionMemberIds = 0x23,
|
||||
CMsgRequestGamerInfo = 0x54,
|
||||
CMsgRemoveGamersFromSessionCmd = 0x53,
|
||||
CMsgNotMigrating = 0x35,
|
||||
CMsgMigrateHostResponse = 0x12,
|
||||
CMsgMigrateHostRequest = 0x66,
|
||||
CMsgJoinResponse = 0x2A,
|
||||
CMsgJoinRequest = 0x41,
|
||||
CMsgHostLeftWhilstJoiningCmd = 0x58,
|
||||
CMsgConfigResponse = 0x5F,
|
||||
CMsgConfigRequest = 0x48,
|
||||
CMsgChangeSessionAttributesCmd = 0x5A,
|
||||
CMsgAddGamerToSessionCmd = 0x64, // this is where send net info to lobby is called, among other things
|
||||
CMsgReassignResponse = 0x10,
|
||||
CMsgReassignNegotiate = 0x01,
|
||||
CMsgReassignConfirm = 0x26,
|
||||
CMsgPlayerData = 0x18,
|
||||
CMsgPackedReliables = 0x30,
|
||||
CMsgPackedCloneSyncACKs = 0x3B,
|
||||
CMsgNonPhysicalData = 0x16,
|
||||
CMsgNetArrayMgrUpdateAck = 0x5D,
|
||||
CMsgNetArrayMgrUpdate = 0x60,
|
||||
CMsgNetArrayMgrSplitUpdateAck = 0x25,
|
||||
CMsgScriptVerifyHostAck = 0x0B,
|
||||
CMsgScriptVerifyHost = 0x3E,
|
||||
CMsgScriptNewHost = 0x0E,
|
||||
CMsgScriptMigrateHostFailAck = 0x1A,
|
||||
CMsgScriptMigrateHost = 0x33,
|
||||
CMsgScriptLeaveAck = 0x40,
|
||||
CMsgScriptLeave = 0x17,
|
||||
CMsgScriptJoinHostAck = 0x4D,
|
||||
CMsgScriptJoinAck = 0x43,
|
||||
CMsgScriptJoin = 0x5C,
|
||||
CMsgScriptHostRequest = 0x67,
|
||||
CMsgScriptHandshakeAck = 0x5B,
|
||||
CMsgScriptHandshake = 0x57,
|
||||
CMsgScriptBotLeave = 0x2B, // unused?
|
||||
CMsgScriptBotJoinAck = 0x63, // unused?
|
||||
CMsgScriptBotJoin = 0x1C, // unused?
|
||||
CMsgScriptBotHandshakeAck = 0x31, // unused?
|
||||
CMsgScriptBotHandshake = 0x4B, // unused?
|
||||
CMsgPartyLeaveGame = 0x3D,
|
||||
CMsgPartyEnterGame = 0x1E,
|
||||
CMsgCloneSync = 0x4E, // aka clone_create, clone_sync etc.
|
||||
CMsgActivateNetworkBot = 0x65, // unused?
|
||||
CMsgRequestObjectIds = 0x29,
|
||||
CMsgInformObjectIds = 0x09,
|
||||
CMsgTextMessage = 0x24, // this one is for chat
|
||||
CMsgPlayerIsTyping = 0x61,
|
||||
CMsgPackedEvents = 0x4F, // aka received_event
|
||||
CMsgPackedEventReliablesCMsgs = 0x20,
|
||||
CMsgRequestKickFromHost = 0x0D,
|
||||
CMsgTransitionToGameStart = 0x50,
|
||||
CMsgTransitionToGameNotify = 0x02,
|
||||
CMsgTransitionToActivityStart = 0x06,
|
||||
CMsgTransitionToActivityFinish = 0x36,
|
||||
CMsgTransitionParameters = 0x3C,
|
||||
CMsgTransitionParameterString = 0x37,
|
||||
CMsgTransitionLaunchNotify = 0x1B,
|
||||
CMsgTransitionLaunch = 0x19,
|
||||
CMsgTransitionGamerInstruction = 0x14,
|
||||
CMsgTextMessage2 = 0x0A, // this one is for phone message
|
||||
CMsgSessionEstablishedRequest = 0x52,
|
||||
CMsgSessionEstablished = 0x07,
|
||||
CMsgRequestTransitionParameters = 0x42,
|
||||
CMsgRadioStationSyncRequest = 0x47,
|
||||
CMsgRadioStationSync = 0x46,
|
||||
CMsgPlayerCardSync = 0x3A,
|
||||
CMsgPlayerCardRequest = 0x6A,
|
||||
CMsgLostConnectionToHost = 0x81,
|
||||
CMsgKickPlayer = 0x34, // host kick
|
||||
CMsgDebugStall = 0x7E, // unused?
|
||||
CMsgCheckQueuedJoinRequestReply = 0x59,
|
||||
CMsgCheckQueuedJoinRequest = 0x51,
|
||||
CMsgBlacklist = 0x0C,
|
||||
CMsgRoamingRequestBubbleRequiredResponse = 0x83,
|
||||
CMsgRoamingRequestBubbleRequiredCheck = 0x82,
|
||||
CMsgRoamingRequestBubble = 0x2E,
|
||||
CMsgRoamingJoinBubble = 0x4C,
|
||||
CMsgRoamingJoinBubbleAck = 0x3F,
|
||||
CMsgRoamingInitialBubble = 0x32,
|
||||
CMsgVoiceStatus = 0x03,
|
||||
CMsgTextChatStatus = 0x00,
|
||||
CMsgJoinResponse2 = 0x08,
|
||||
CMsgJoinRequest2 = 0x68,
|
||||
CMsgNetTimeSync = 0x38, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 37
|
||||
CMsgNetComplaint = 0x55, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 54
|
||||
CMsgNetLagPing = 0x27, // unused? ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 26
|
||||
CMsgSearchResponse = 0x6B, // unused? ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 6A
|
||||
CMsgSearchRequest = 0x05, // unused?
|
||||
CMsgQosProbeResponse = 0x2C, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 2B
|
||||
CMsgQosProbeRequest = 0x1D, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 1C
|
||||
CMsgCxnRelayAddressChanged = 0x49, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 48
|
||||
CMsgCxnRequestRemoteTimeout = 0x2F, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 2E
|
||||
CMsgSessionDetailRequest = 0x22, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 21
|
||||
CMsgSessionDetailResponse = 0x13, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 12
|
||||
CMsgKeyExchangeOffer = 0x0F, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 0E (last result)
|
||||
CMsgKeyExchangeAnswer = 0x44, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 43
|
||||
CMsg_0x87 = 0x87,
|
||||
CMsg_0x88 = 0x88,
|
||||
CMsg_0x80 = 0x80,
|
||||
CMsg_0x28 = 0x28,
|
||||
CMsg_0x11 = 0x11,
|
||||
CMsg_0x45 = 0x45,
|
||||
CMsg_0x89 = 0x89,
|
||||
CMsg_0x86 = 0x86,
|
||||
};
|
||||
namespace netConnection {
|
||||
class InFrame
|
||||
{
|
||||
@ -159,122 +286,6 @@ namespace rage
|
||||
char pad_007C[4]; //0x007C
|
||||
void* m_data; //0x0080
|
||||
};
|
||||
|
||||
enum class MessageType : std::uint32_t
|
||||
{
|
||||
MsgInvalid = 0xFFFFF,
|
||||
MsgSessionAcceptChat = 0x62,
|
||||
MsgStartMatchCmd = 0x2D,
|
||||
MsgSetInvitableCmd = 0x1F,
|
||||
MsgSessionMemberIds = 0x23,
|
||||
MsgRequestGamerInfo = 0x54,
|
||||
MsgRemoveGamersFromSessionCmd = 0x53,
|
||||
MsgNotMigrating = 0x35,
|
||||
MsgMigrateHostResponse = 0x12,
|
||||
MsgMigrateHostRequest = 0x66,
|
||||
MsgJoinResponse = 0x2A,
|
||||
MsgJoinRequest = 0x41,
|
||||
MsgHostLeftWhilstJoiningCmd = 0x58,
|
||||
MsgConfigResponse = 0x5F,
|
||||
MsgConfigRequest = 0x48,
|
||||
MsgChangeSessionAttributesCmd = 0x5A,
|
||||
MsgAddGamerToSessionCmd = 0x64, // this is where send net info to lobby is called, among other things
|
||||
MsgReassignResponse = 0x10,
|
||||
MsgReassignNegotiate = 0x01,
|
||||
MsgReassignConfirm = 0x26,
|
||||
MsgPlayerData = 0x18,
|
||||
MsgPackedReliables = 0x30,
|
||||
MsgPackedCloneSyncACKs = 0x3B,
|
||||
MsgNonPhysicalData = 0x16,
|
||||
MsgNetArrayMgrUpdateAck = 0x5D,
|
||||
MsgNetArrayMgrUpdate = 0x60,
|
||||
MsgNetArrayMgrSplitUpdateAck = 0x25,
|
||||
MsgScriptVerifyHostAck = 0x0B,
|
||||
MsgScriptVerifyHost = 0x3E,
|
||||
MsgScriptNewHost = 0x0E,
|
||||
MsgScriptMigrateHostFailAck = 0x1A,
|
||||
MsgScriptMigrateHost = 0x33,
|
||||
MsgScriptLeaveAck = 0x40,
|
||||
MsgScriptLeave = 0x17,
|
||||
MsgScriptJoinHostAck = 0x4D,
|
||||
MsgScriptJoinAck = 0x43,
|
||||
MsgScriptJoin = 0x5C,
|
||||
MsgScriptHostRequest = 0x67,
|
||||
MsgScriptHandshakeAck = 0x5B,
|
||||
MsgScriptHandshake = 0x57,
|
||||
MsgScriptBotLeave = 0x2B, // unused?
|
||||
MsgScriptBotJoinAck = 0x63, // unused?
|
||||
MsgScriptBotJoin = 0x1C, // unused?
|
||||
MsgScriptBotHandshakeAck = 0x31, // unused?
|
||||
MsgScriptBotHandshake = 0x4B, // unused?
|
||||
MsgPartyLeaveGame = 0x3D,
|
||||
MsgPartyEnterGame = 0x1E,
|
||||
MsgCloneSync = 0x4E, // aka clone_create, clone_sync etc.
|
||||
MsgActivateNetworkBot = 0x65, // unused?
|
||||
MsgRequestObjectIds = 0x29,
|
||||
MsgInformObjectIds = 0x09,
|
||||
MsgTextMessage = 0x24, // this one is for chat
|
||||
MsgPlayerIsTyping = 0x61,
|
||||
MsgPackedEvents = 0x4F, // aka received_event
|
||||
MsgPackedEventReliablesMsgs = 0x20,
|
||||
MsgRequestKickFromHost = 0x0D,
|
||||
MsgTransitionToGameStart = 0x50,
|
||||
MsgTransitionToGameNotify = 0x02,
|
||||
MsgTransitionToActivityStart = 0x06,
|
||||
MsgTransitionToActivityFinish = 0x36,
|
||||
MsgTransitionParameters = 0x3C,
|
||||
MsgTransitionParameterString = 0x37,
|
||||
MsgTransitionLaunchNotify = 0x1B,
|
||||
MsgTransitionLaunch = 0x19,
|
||||
MsgTransitionGamerInstruction = 0x14,
|
||||
MsgTextMessage2 = 0x0A, // this one is for phone message
|
||||
MsgSessionEstablishedRequest = 0x52,
|
||||
MsgSessionEstablished = 0x07,
|
||||
MsgRequestTransitionParameters = 0x42,
|
||||
MsgRadioStationSyncRequest = 0x47,
|
||||
MsgRadioStationSync = 0x46,
|
||||
MsgPlayerCardSync = 0x3A,
|
||||
MsgPlayerCardRequest = 0x6A,
|
||||
MsgLostConnectionToHost = 0x81,
|
||||
MsgKickPlayer = 0x34, // host kick
|
||||
MsgDebugStall = 0x7E, // unused?
|
||||
MsgCheckQueuedJoinRequestReply = 0x59,
|
||||
MsgCheckQueuedJoinRequest = 0x51,
|
||||
MsgBlacklist = 0x0C,
|
||||
MsgRoamingRequestBubbleRequiredResponse = 0x83,
|
||||
MsgRoamingRequestBubbleRequiredCheck = 0x82,
|
||||
MsgRoamingRequestBubble = 0x2E,
|
||||
MsgRoamingJoinBubble = 0x4C,
|
||||
MsgRoamingJoinBubbleAck = 0x3F,
|
||||
MsgRoamingInitialBubble = 0x32,
|
||||
MsgVoiceStatus = 0x03,
|
||||
MsgTextChatStatus = 0x00,
|
||||
MsgJoinResponse2 = 0x08,
|
||||
MsgJoinRequest2 = 0x68,
|
||||
|
||||
MsgNetTimeSync = 0x38, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 37
|
||||
MsgNetComplaint = 0x55, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 54
|
||||
MsgNetLagPing = 0x27, // unused? ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 26
|
||||
MsgSearchResponse = 0x6B, // unused? ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 6A
|
||||
MsgSearchRequest = 0x05, // unused?
|
||||
MsgQosProbeResponse = 0x2C, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 2B
|
||||
MsgQosProbeRequest = 0x1D, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 1C
|
||||
MsgCxnRelayAddressChanged = 0x49, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 48
|
||||
MsgCxnRequestRemoteTimeout = 0x2F, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 2E
|
||||
MsgSessionDetailRequest = 0x22, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 21
|
||||
MsgSessionDetailResponse = 0x13, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 12
|
||||
MsgKeyExchangeOffer = 0x0F, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 0E (last result)
|
||||
MsgKeyExchangeAnswer = 0x44, // ctor 40 53 48 83 EC 20 BA ? ? ? ? 4C 8D 0D ? ? ? ? 48 8B D9 44 8D 42 43
|
||||
|
||||
Msg_0x87 = 0x87,
|
||||
Msg_0x88 = 0x88,
|
||||
Msg_0x80 = 0x80,
|
||||
Msg_0x28 = 0x28,
|
||||
Msg_0x11 = 0x11,
|
||||
Msg_0x45 = 0x45,
|
||||
Msg_0x89 = 0x89,
|
||||
Msg_0x86 = 0x86,
|
||||
};
|
||||
}
|
||||
|
||||
class CEventNetwork
|
||||
|
Reference in New Issue
Block a user