Force session host and improve protections (#593)
* Add force session host and update protections * Remove old popgroup protection * Harden script patcher * Replace looped options with script patches * Missing break * Use enums * Forgot to break again... * Add tooltip for force session host Co-authored-by: user <email@hostname>
This commit is contained in:
@ -671,94 +671,121 @@ enum class NetObjEntityType : uint16_t
|
||||
|
||||
enum class eNetworkEvents : uint16_t
|
||||
{
|
||||
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
|
||||
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
|
||||
};
|
||||
|
||||
enum class ScriptEntityChangeType
|
||||
{
|
||||
BlockingOfNonTemporaryEvents,
|
||||
SettingOfPedRelationshipGroupHash,
|
||||
SettingOfDriveTaskCruiseSpeed,
|
||||
SettingOfLookAtEntity,
|
||||
SettingOfPlaneMinHeightAboveTerrain,
|
||||
SetPedRagdollBlockFlag,
|
||||
SettingOfTaskVehicleTempAction,
|
||||
SetPedFacialIdleAnimOverride,
|
||||
SetVehicleLockState,
|
||||
SetVehicleExclusiveDriver
|
||||
};
|
||||
|
||||
enum class WorldStateDataType
|
||||
{
|
||||
CarGen,
|
||||
EntityArea,
|
||||
PopGroupOverride,
|
||||
PopMultiplierArea,
|
||||
PTFX,
|
||||
RoadNode,
|
||||
Rope,
|
||||
ScenarioBlockingArea,
|
||||
VehiclePlayerLocking
|
||||
};
|
||||
|
||||
enum class BlipIcons
|
||||
|
@ -156,6 +156,17 @@ namespace rage
|
||||
|
||||
return T(val);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline T ReadSigned(int length)
|
||||
{
|
||||
static_assert(sizeof(T) <= 4, "maximum of 32 bit read");
|
||||
|
||||
int val = 0;
|
||||
ReadInt32(&val, length);
|
||||
|
||||
return T(val);
|
||||
}
|
||||
public:
|
||||
uint8_t* m_data; //0x0000
|
||||
uint32_t m_bitOffset; //0x0008
|
||||
|
@ -15,16 +15,16 @@ namespace rage
|
||||
virtual void assume_thread_identity(scrThread*) {}; // 1 (0x08)
|
||||
|
||||
// Returns whether the hash of the script id is valid.
|
||||
virtual bool is_valid() {}; // 2 (0x10)
|
||||
virtual bool is_valid() { return false; }; // 2 (0x10)
|
||||
|
||||
// Gets the hash of the script id.
|
||||
virtual joaat_t *get_hash(joaat_t *out) {}; // 3 (0x18)
|
||||
virtual joaat_t* get_hash(joaat_t* out) { return 0; }; // 3 (0x18)
|
||||
|
||||
// Gets an unknown value from the script id.
|
||||
virtual std::uint32_t *get_hash2(std::uint32_t *out) {}; // 4 (0x20)
|
||||
virtual std::uint32_t* get_hash2(std::uint32_t* out) { return 0; }; // 4 (0x20)
|
||||
|
||||
// Gets the name of the script id.
|
||||
virtual const char *get_name() {}; // 5 (0x28)
|
||||
virtual const char* get_name() { return nullptr; }; // 5 (0x28)
|
||||
|
||||
// Serializes the script id from the buffer.
|
||||
virtual void deserialize(datBitBuffer* buffer) {}; // 6 (0x30)
|
||||
@ -33,10 +33,10 @@ namespace rage
|
||||
virtual void serialize(datBitBuffer* buffer) {}; // 7 (0x38)
|
||||
|
||||
// Calculates some information with the position hash & instance id.
|
||||
virtual std::uint32_t _0x40() {}; // 8 (0x40)
|
||||
virtual std::uint32_t _0x40() { return 0; }; // 8 (0x40)
|
||||
|
||||
// Calls _0x40 and returns it's value added to another value.
|
||||
virtual std::uint32_t _0x48() {}; // 9 (0x48)
|
||||
virtual std::uint32_t _0x48() { return 0; }; // 9 (0x48)
|
||||
|
||||
// Logs some information about the script id.
|
||||
virtual void log_information(netLoggingInterface* logger) {}; // 10 (0x50)
|
||||
@ -45,9 +45,9 @@ namespace rage
|
||||
virtual void copy_data(scriptIdBase *other) {} // 11 (0x58)
|
||||
|
||||
// Returns whether the other script id is equal.
|
||||
virtual bool operator==(scriptIdBase*) {}; // 12 (0x60)
|
||||
virtual bool operator==(scriptIdBase*) { return false; }; // 12 (0x60)
|
||||
|
||||
virtual bool _0x68(void*) {}; // 13 (0x68)
|
||||
virtual bool _0x68(void*) { return false; }; // 13 (0x68)
|
||||
};
|
||||
|
||||
class scriptId : public scriptIdBase
|
||||
|
Reference in New Issue
Block a user