mirror of
https://github.com/YimMenu/YimMenuV2.git
synced 2026-10-11 17:58:10 +08:00
feat: handle net game event (#22)
This commit is contained in:
1 parent
c58e70e236
commit
b272f7a291
11 files changed
+291
-28
No files matched your search
@@ -0,0 +1,92 @@
|
||||
#pragma once
|
||||
|
||||
enum class NetEventType : 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,
|
||||
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
|
||||
};
|
||||
@@ -1,10 +1,7 @@
|
||||
#include "ScriptEvent.hpp"
|
||||
#include "game/gta/Natives.hpp"
|
||||
|
||||
void SCRIPT_EVENT::Send()
|
||||
void SCRIPT_EVENT::SendImpl(int size)
|
||||
{
|
||||
auto size = __SizeOfEvent;
|
||||
__SizeOfEvent = 0;
|
||||
SCRIPT::_SEND_TU_SCRIPT_EVENT_NEW(1, this, size / sizeof(std::uint64_t), PlayerBits, EventIndex);
|
||||
__SizeOfEvent = size;
|
||||
}
|
||||
@@ -1,18 +1,30 @@
|
||||
#pragma once
|
||||
#include "types.hpp"
|
||||
|
||||
#define REGISTER_SCRIPT_EVENT(classType, indexType) \
|
||||
constexpr static auto EVENT_INDEX = ScriptEventIndex::indexType; \
|
||||
classType() \
|
||||
{ \
|
||||
memset(this, 0, sizeof(classType)); EventIndex = static_cast<int>(EVENT_INDEX); \
|
||||
__SizeOfEvent = sizeof(classType); \
|
||||
} \
|
||||
classType(const classType& other) \
|
||||
{ \
|
||||
memcpy(this, &other, sizeof(classType)); \
|
||||
EventIndex = static_cast<int>(EVENT_INDEX); \
|
||||
__SizeOfEvent = sizeof(classType); \
|
||||
#define REGISTER_SCRIPT_EVENT(classType, indexType) \
|
||||
constexpr static auto EVENT_INDEX = ScriptEventIndex::indexType; \
|
||||
classType() \
|
||||
{ \
|
||||
memset(this, 0, sizeof(classType)); \
|
||||
EventIndex = static_cast<int>(EVENT_INDEX); \
|
||||
} \
|
||||
classType(const classType& other) \
|
||||
{ \
|
||||
memcpy(this, &other, sizeof(classType)); \
|
||||
EventIndex = static_cast<int>(EVENT_INDEX); \
|
||||
} \
|
||||
static constexpr size_t GetSize() \
|
||||
{ \
|
||||
return sizeof(classType); \
|
||||
} \
|
||||
inline void Send() \
|
||||
{ \
|
||||
SendImpl(GetSize()); \
|
||||
} \
|
||||
inline void Send(int player) \
|
||||
{ \
|
||||
SetPlayer(player); \
|
||||
SendImpl(GetSize()); \
|
||||
}
|
||||
|
||||
// I doubt rockstar would cycle this again, but best to keep this, just in case
|
||||
@@ -71,8 +83,7 @@ struct SCRIPT_EVENT
|
||||
{
|
||||
protected:
|
||||
SCR_HASH EventIndex; // 0x00
|
||||
Player SenderIndex; // 0x08
|
||||
int __SizeOfEvent; // 0x0C
|
||||
PLAYER_INDEX SenderIndex; // 0x08
|
||||
SCR_INT PlayerBits; // 0x10
|
||||
|
||||
public:
|
||||
@@ -106,14 +117,8 @@ public:
|
||||
PlayerBits |= (1 << player);
|
||||
}
|
||||
|
||||
// must be called in script context
|
||||
void Send();
|
||||
|
||||
inline void Send(int player)
|
||||
{
|
||||
SetPlayer(player);
|
||||
Send();
|
||||
}
|
||||
protected:
|
||||
void SendImpl(int size);
|
||||
};
|
||||
static_assert(sizeof(SCRIPT_EVENT) == 3 * 8);
|
||||
|
||||
|
||||
Reference in new issue
Block a user