// Rage headers #include "math/amath.h" #include "script/wrapper.h" // framework headers #include "fwnet/nettypes.h" #include "fwscript/scriptinterface.h" #include "rline/rlsystemui.h" // Game headers #include "audio/policescanner.h" #include "control/GameLogic.h" #include "control/remote.h" #include "control/garages.h" #include "control/replay/ReplayRecording.h" #include "control/stuntjump.h" #include "frontend/NewHud.h" #include "game/config.h" #include "Game/Dispatch/DispatchData.h" #include "game/Zones.h" #include "debug/TextureViewer/TextureViewer.h" #include "modelinfo/modelinfo.h" #include "peds/peddebugvisualiser.h" #include "peds/pedintelligence.h" #include "peds/pedfactory.h" #include "peds/pedtype.h" #include "peds/Ped.h" #include "peds/PlayerSpecialAbility.h" #include "peds/rendering/PedVariationStream.h" #include "peds/pedcapsule.h" #include "peds/PedHelmetComponent.h" #include "peds/pedpopulation.h" #include "peds/PlayerInfo.h" #include "Peds/PedFlagsMeta.h" #include "physics/WorldProbe/worldprobe.h" #include "rline/rlnp.h" #include "scene/LoadScene.h" #include "scene/playerswitch/PlayerSwitchInterface.h" #include "scene/streamer/SceneStreamerMgr.h" #include "scene/world/gameWorld.h" #include "script/handlers/GameScriptResources.h" #include "script/script.h" #include "script/script_helper.h" #include "script/script_hud.h" #include "security/plugins/scripthook.h" #include "streaming/populationstreaming.h" #include "streaming/streaming.h" #include "streaming/streaminginfo.h" #include "Task/Response/TaskGangs.h" #include "Task/Default/TaskPlayer.h" #include "Task/Motion/TaskMotionBase.h" #include "Task/Weapons/TaskPlayerWeapon.h" #include "vehicles/vehiclepopulation.h" #include "vehicles/vehicle.h" #include "Task/Movement/TaskParachute.h" #include "task/Default/TaskIncapacitated.h" // network includes #include "network/NetworkInterface.h" #include "network/Live/livemanager.h" #include "network/objects/entities/NetObjPlayer.h" #include "network/players/NetworkPlayerMgr.h" #include "Network/Stats/NetworkLeaderboardCommon.h" #include "Peds/PedWeapons/PedTargetEvaluator.h" SCRIPT_OPTIMISATIONS () namespace player_commands { CPed* FindPlayerPedByIndex(int playerIndex) { if (playerIndex != -1) { return CTheScripts::FindNetworkPlayerPed(playerIndex); } else { return CGameWorld::FindLocalPlayer(); } } void CommandChangePlayerModel(int PlayerIndex, int PlayerModelHashKey) { // we want to do 'things' with the player. Better flush the draw list... gRenderThreadInterface.Flush(); fwModelId playermodelId = CModelInfo::GetModelIdFromName("player_zero"); if (PlayerModelHashKey != DUMMY_ENTRY_IN_MODEL_ENUM_FOR_SCRIPTING_LANGUAGE) // use dummy enum entry to mean the standard player model { CModelInfo::GetBaseModelInfoFromHashKey((u32) PlayerModelHashKey, &playermodelId); // ignores return value if(!SCRIPT_VERIFY(playermodelId.IsValid(), "SET_PLAYER_MODEL - this is not a valid model index")) return; } CPed * pLocalPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if(pLocalPlayer) { // Update the player with the specified model CPed *pNewPlayerPed = CGameWorld::ChangePedModel(*pLocalPlayer, playermodelId); pNewPlayerPed->GetPortalTracker()->RequestRescanNextUpdate(); pNewPlayerPed->GetPortalTracker()->Update(VEC3V_TO_VECTOR3(pNewPlayerPed->GetTransform().GetPosition())); pNewPlayerPed->GetPedIntelligence()->AddTaskDefault(pNewPlayerPed->GetCurrentMotionTask()->CreatePlayerControlTask()); #if __DEV pNewPlayerPed->m_nDEflags.bCheckedForDead = true; #endif } } void CommandChangePlayerPed(int PlayerIndex, int NewPedIndex, bool KeepScriptedTasks, bool ClearPedDamage) { scriptDebugf1("%s : CHANGE_PLAYER_PED - called.", CTheScripts::GetCurrentScriptNameAndProgramCounter()); CPed *pLocalPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); CPed *pNewPlayerPed = CTheScripts::GetEntityToModifyFromGUID(NewPedIndex, CTheScripts::GUID_ASSERT_FLAGS_ALL); if(pLocalPlayer && pNewPlayerPed) { #if !__FINAL && !__NO_OUTPUT && __BANK if (g_PlayerSwitch.IsActive()) { const Vec3V vPos = pNewPlayerPed->GetTransform().GetPosition(); Displayf("[PlayerSwitch] Script %s called CHANGE_PLAYER_PED during player switch - new ped is %s at (%4.2f, %4.2f, %4.2f) during player switch. Call stack follows", CTheScripts::GetCurrentScriptNameAndProgramCounter(), pNewPlayerPed->GetModelName(), vPos.GetXf(), vPos.GetYf(), vPos.GetZf()); scrThread::PrePrintStackTrace(); } #endif CNewHud::GetReticule().Reset(); //If the player is inside a Networked vehicle and is changing // player ped with a non networked ped then set the player out of the vehicle. if (NetworkInterface::IsGameInProgress()) { if (pLocalPlayer->GetPedConfigFlag(CPED_CONFIG_FLAG_InVehicle)) { scriptDebugf1("%s:CHANGE_PLAYER_PED - Player inside a vehicle.", CTheScripts::GetCurrentScriptNameAndProgramCounter()); } if (pLocalPlayer->GetPedConfigFlag(CPED_CONFIG_FLAG_InVehicle) && !pNewPlayerPed->GetNetworkObject()) { if (pLocalPlayer->GetMyVehicle() && pLocalPlayer->GetMyVehicle()->GetNetworkObject()) { scriptDebugf1("%s:CHANGE_PLAYER_PED - Player removed from vehicle.", CTheScripts::GetCurrentScriptNameAndProgramCounter()); pLocalPlayer->SetPedOutOfVehicle(CPed::PVF_Warp); pLocalPlayer->SetPedConfigFlag(CPED_CONFIG_FLAG_InVehicle, false); pLocalPlayer->SetMyVehicle(NULL); } else if (!pLocalPlayer->GetMyVehicle()) { scriptErrorf("%s:CHANGE_PLAYER_PED - Player vehicle is missing.", CTheScripts::GetCurrentScriptNameAndProgramCounter()); } else if (!pLocalPlayer->GetMyVehicle()->GetNetworkObject()) { scriptErrorf("%s:CHANGE_PLAYER_PED - Player vehicle is not networked.", CTheScripts::GetCurrentScriptNameAndProgramCounter()); } } else if (pLocalPlayer->GetPedConfigFlag(CPED_CONFIG_FLAG_InVehicle) && pNewPlayerPed->GetNetworkObject()) { scriptDebugf1("%s:CHANGE_PLAYER_PED - Ped swapwed with the player has a network object.", CTheScripts::GetCurrentScriptNameAndProgramCounter()); } } // Update the player with the specified model CGameWorld::ChangePlayerPed(*pLocalPlayer, *pNewPlayerPed, KeepScriptedTasks, ClearPedDamage); //Add more debug output. if (NetworkInterface::IsGameInProgress()) { if (pLocalPlayer->GetPedConfigFlag(CPED_CONFIG_FLAG_InVehicle)) { scriptErrorf("%s:CHANGE_PLAYER_PED - Old Player not removed from vehicle.", CTheScripts::GetCurrentScriptNameAndProgramCounter()); } } } } int CommandGetPlayerPed(int PlayerIndex) { CPed *pPlayerPed = FindPlayerPedByIndex(PlayerIndex); return pPlayerPed ? CTheScripts::GetGUIDFromEntity(*pPlayerPed) : 0; } // Gets the script guid for a player int CommandGetPlayerScriptGuid(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if(pPlayer) { return fwScriptGuid::CreateGuid(*pPlayer); } return 0; } bool CommandPlayerHasPed(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex, false); if (pPlayer) { #if __DEV // Chris Rothwell needed to be able to call some ped commands for a player before a network game starts even if the player was actually dead. // Seems a bit dodgy setting this flag for a dead/arrested player - no decision has been made yet concerning if it's possible for a player to // join a network game while he is dead/arrested pPlayer->m_nDEflags.bCheckedForDead = true; #endif return true; } return false; } void CommandGetPlayerRGBColour(int playerIndex, int &Red, int &Green, int &Blue) { if (SCRIPT_VERIFY_PLAYER_INDEX("GET_PLAYER_RGB_COLOUR", playerIndex)) { Color32 playerColour = NetworkColours::GetNetworkColour(NetworkColours::GetDefaultPlayerColour(static_cast(playerIndex))); Red = playerColour.GetRed(); Green = playerColour.GetGreen(); Blue = playerColour.GetBlue(); } } int CommandGetPlayerHUDColour(int playerIndex) { if (SCRIPT_VERIFY_PLAYER_INDEX("GET_NATIVE_PLAYER_HUD_COLOUR", playerIndex)) { return NetworkColours::MapNetworkColourToHudColour(NetworkColours::GetDefaultPlayerColour(static_cast(playerIndex))); } return HUD_COLOUR_GREY; } s32 CommandGetNumberOfPlayers() { if (NetworkInterface::IsGameInProgress()) { SCRIPT_CHECK_CALLING_FUNCTION return NetworkInterface::GetPlayerMgr().GetNumPhysicalPlayers(); } return 1; } s32 CommandGetPlayerTeam(int PlayerIndex) { CNetGamePlayer *player = CTheScripts::FindNetworkPlayer(PlayerIndex); if (player) { return (player->GetTeam()); } return -1; } void CommandSetPlayerTeam(int PlayerIndex, int Team) { if(SCRIPT_VERIFY(Team>=-1&&TeamSetTeam(Team); if (player->IsLocal()) { CGameWorld::GetMainPlayerInfo()->Team = Team; } } } else { if (scriptVerifyf(PlayerIndex == 0, "%s:SET_PLAYER_TEAM - Player does not exist", CTheScripts::GetCurrentScriptNameAndProgramCounter())) { CGameWorld::GetMainPlayerInfo()->Team = Team; } } } } int CommandGetNumPlayersInTeam(int Team) { int numPlayers = 0; if (NetworkInterface::IsGameInProgress()) { unsigned numPhysicalPlayers = netInterface::GetNumPhysicalPlayers(); const netPlayer * const *allPhysicalPlayers = netInterface::GetAllPhysicalPlayers(); for(unsigned index = 0; index < numPhysicalPlayers; index++) { const CNetGamePlayer *player = SafeCast(const CNetGamePlayer, allPhysicalPlayers[index]); if (player->GetTeam() == Team) { numPlayers++; } } } else { if (CGameWorld::GetMainPlayerInfo()->Team == Team) { numPlayers++; } } return numPlayers; } const char* GetPlayerName(int PlayerIndex, const char* ASSERT_ONLY(commandName)) { if (NetworkInterface::IsGameInProgress()) { netPlayer* player = CTheScripts::FindNetworkPlayer(PlayerIndex, false); if (player) { return ( player->GetGamerInfo().GetDisplayName() ); } } else if(CGameWorld::GetMainPlayerInfo()) { if (scriptVerifyf(PlayerIndex == 0, "%s:%s - Player does not exist", CTheScripts::GetCurrentScriptNameAndProgramCounter(), commandName)) { return CGameWorld::GetMainPlayerInfo()->m_GamerInfo.GetDisplayName(); } } return "**Invalid**"; } const char* CommandGetPlayerName(int PlayerIndex) { return GetPlayerName(PlayerIndex, "GET_PLAYER_NAME"); } float CommandGetWantedLevelRadius(int iWantedLevel ) { SCRIPT_ASSERT( (iWantedLevel >= WANTED_CLEAN && iWantedLevel < WANTED_LEVEL_LAST), "GET_WANTED_LEVEL_THRESHOLD - Wanted level is beyond range of existing levels"); return CDispatchData::GetWantedZoneRadius(iWantedLevel); } scrVector CommandGetWantedRadiusCentre(int PlayerIndex) { scrVector result(VEC3_ZERO); CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if(SCRIPT_VERIFY(pPlayer, "GET_PLAYER_WANTED_CENTRE_POSITION - Player character doesn't exit")) { if(SCRIPT_VERIFY(pPlayer->GetPlayerWanted(), "GET_PLAYER_WANTED_CENTRE_POSITION - Player character doesn't have a wanted class")) { result = pPlayer->GetPlayerWanted()->m_LastSpottedByPolice; } } return result; } void CommandSetWantedRadiusCentre(int PlayerIndex, const scrVector & scrVecCoors) { CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if(SCRIPT_VERIFY(pPlayer, "SET_PLAYER_WANTED_CENTRE_POSITION - Player character doesn't exit")) { if(SCRIPT_VERIFY(pPlayer->GetPlayerWanted(), "SET_PLAYER_WANTED_CENTRE_POSITION - Player character doesn't have a wanted class")) { pPlayer->GetPlayerWanted()->m_LastSpottedByPolice = scrVecCoors; pPlayer->GetPlayerWanted()->m_CurrentSearchAreaCentre = scrVecCoors; } } } int CommandGetWantedLevelThreshold(int wantedLevel) { SCRIPT_ASSERT( (wantedLevel >= WANTED_CLEAN && wantedLevel < WANTED_LEVEL_LAST), "GET_WANTED_LEVEL_THRESHOLD - Wanted level is beyond range of existing levels"); return CDispatchData::GetWantedLevelThreshold(wantedLevel); } void CommandAlterWantedLevel( int PlayerIndex, int iNewLevel, bool bDelayLawResponse ) { #if !__FINAL scrThread::PrePrintStackTrace(); #endif scriptDebugf1("%s [Frame=%d] ALTER_WANTED_LEVEL :%d", CTheScripts::GetCurrentScriptNameAndProgramCounter(), fwTimer::GetSystemFrameCount(), iNewLevel); wantedDebugf3("%s [Frame=%d] ALTER_WANTED_LEVEL CommandAlterWantedLevel :%d", CTheScripts::GetCurrentScriptNameAndProgramCounter(), fwTimer::GetSystemFrameCount(), iNewLevel); CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "ALTER_WANTED_LEVEL - Check player character is alive this frame"); pPlayer->GetPlayerWanted()->SetShouldDelayLawResponse(bDelayLawResponse); pPlayer->GetPlayerWanted()->SetLastTimeWantedSetByScript(g_AudioEngine.GetSoundManager().GetTimeInMilliseconds(0)); const Vector3 vPlayerPosition = VEC3V_TO_VECTOR3(pPlayer->GetTransform().GetPosition()); if (iNewLevel < pPlayer->GetPlayerWanted()->GetWantedLevel()) { pPlayer->GetPlayerWanted()->SetWantedLevel(vPlayerPosition, iNewLevel, 0, WL_FROM_SCRIPT); NA_POLICESCANNER_ENABLED_ONLY(g_AudioScannerManager.CancelAnyPlayingReportsNextFade()); } else { pPlayer->GetPlayerWanted()->SetWantedLevel(vPlayerPosition, iNewLevel, WANTED_CHANGE_DELAY_DEFAULT, WL_FROM_SCRIPT); } #if __BANK safecpy(pPlayer->GetPlayerWanted()->m_WantedLevelLastSetFromScriptName, CTheScripts::GetCurrentScriptName()); #endif } void CommandAlterWantedLevelNoDrop( int PlayerIndex, int iNewLevel, bool bDelayLawResponse ) { #if !__FINAL scrThread::PrePrintStackTrace(); #endif scriptDebugf1("%s [Frame=%d] SET_PLAYER_WANTED_LEVEL_NO_DROP. :%d", CTheScripts::GetCurrentScriptNameAndProgramCounter(), fwTimer::GetSystemFrameCount(), iNewLevel); wantedDebugf3("%s [Frame=%d] SET_PLAYER_WANTED_LEVEL_NO_DROP CommandAlterWantedLevelNoDrop. :%d", CTheScripts::GetCurrentScriptNameAndProgramCounter(), fwTimer::GetSystemFrameCount(), iNewLevel); CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; pPlayer->GetPlayerWanted()->SetShouldDelayLawResponse(bDelayLawResponse); pPlayer->GetPlayerWanted()->SetLastTimeWantedSetByScript(g_AudioEngine.GetSoundManager().GetTimeInMilliseconds(0)); pPlayer->GetPlayerWanted()->SetWantedLevelNoDrop(VEC3V_TO_VECTOR3(pPlayer->GetTransform().GetPosition()), iNewLevel, WANTED_CHANGE_DELAY_DEFAULT, WL_FROM_SCRIPT); #if __BANK safecpy(pPlayer->GetPlayerWanted()->m_WantedLevelLastSetFromScriptName, CTheScripts::GetCurrentScriptName()); #endif } void CommandApplyWantedLevelChangeNow( int PlayerIndex, bool bDelayLawResponse ) { #if !__FINAL scrThread::PrePrintStackTrace(); #endif scriptDebugf1("%s [Frame=%d] SET_PLAYER_WANTED_LEVEL_NOW", CTheScripts::GetCurrentScriptNameAndProgramCounter(), fwTimer::GetSystemFrameCount()); wantedDebugf3("SET_PLAYER_WANTED_LEVEL_NOW CommandApplyWantedLevelChangeNow"); CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "SET_PLAYER_WANTED_LEVEL_NOW - Check player character is alive this frame"); pPlayer->GetPlayerWanted()->m_TimeWhenNewWantedLevelTakesEffect = NetworkInterface::IsGameInProgress() ? NetworkInterface::GetSyncedTimeInMilliseconds() - 1 : fwTimer::GetTimeInMilliseconds() - 1; pPlayer->GetPlayerWanted()->SetShouldDelayLawResponse(bDelayLawResponse); pPlayer->GetPlayerWanted()->SetLastTimeWantedSetByScript(g_AudioEngine.GetSoundManager().GetTimeInMilliseconds(0)); pPlayer->GetPlayerWanted()->Update(VEC3V_TO_VECTOR3(pPlayer->GetTransform().GetPosition()), NULL); } bool CommandPlayerHasFlashingStarsAboutToDrop( int PlayerIndex ) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed( PlayerIndex ); if( !pPlayer ) return false; SCRIPT_ASSERT( pPlayer->m_nDEflags.bCheckedForDead == TRUE, "ARE_PLAYER_FLASHING_STARS_ABOUT_TO_DROP - Check player character is alive this frame" ); const CWanted& rWanted = *pPlayer->GetPlayerWanted(); return rWanted.m_WantedLevel >= WANTED_LEVEL1 && (rWanted.m_WantedLevelBeforeParole != WANTED_CLEAN || rWanted.m_bIsOutsideCircle); } bool CommandPlayerHasGreyedOutStars( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if (!pPlayer) return false; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "ARE_PLAYER_STARS_GREYED_OUT - Check player character is alive this frame"); CWanted *pWanted = pPlayer->GetPlayerWanted(); return (pWanted->m_WantedLevel >= WANTED_LEVEL1 && pWanted->CopsAreSearching()); } bool IsWantedAndHasBeenSeenByCops( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if (!pPlayer) return false; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "ARE_PLAYER_STARS_GREYED_OUT - Check player character is alive this frame"); CWanted *pWanted = pPlayer->GetPlayerWanted(); return (pWanted->m_WantedLevel >= WANTED_LEVEL1 && !pWanted->CopsAreSearching() && pWanted->m_iTimeFirstSpotted>0); } void CommandSetDispatchCopsForPlayer( int PlayerIndex, bool flag ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; // SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "SET_DISPATCH_COPS_FOR_PLAYER - Check player character is alive this frame"); flag = !flag; CWanted *pWanted = pPlayer->GetPlayerWanted(); pWanted->m_DontDispatchCopsForThisPlayer = flag; } bool CommandIsWantedLevelGreater(int PlayerIndex, int iLevel) { CPed *pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if (pPlayer) { // SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "IS_PLAYER_WANTED_LEVEL_GREATER - Check player character is alive this frame"); if (pPlayer->GetPlayerWanted()) { return (pPlayer->GetPlayerWanted()->GetWantedLevel() > iLevel ); } } return false; } void CommandClearWantedLevel(int PlayerIndex) { wantedDebugf3("CommandClearWantedLevel"); CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if (!pPlayer) return; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "CLEAR_PLAYER_WANTED_LEVEL - Check player character is alive this frame"); pPlayer->GetPlayerWanted()->SetWantedLevel(VEC3V_TO_VECTOR3(pPlayer->GetTransform().GetPosition()), WANTED_CLEAN, 0, WL_FROM_SCRIPT); NA_POLICESCANNER_ENABLED_ONLY(g_AudioScannerManager.CancelAnyPlayingReportsNextFade()); #if __BANK safecpy(pPlayer->GetPlayerWanted()->m_WantedLevelLastSetFromScriptName, CTheScripts::GetCurrentScriptName()); #endif } int CommandGetIndexOfPlayerThatCausedWL() { CPed* pLocalPlayer = CGameWorld::FindLocalPlayer(); CWanted* wanted = pLocalPlayer->GetPlayerWanted(); if (wanted) { int index = wanted->GetPhysicalIndexOfPlayerThatCausedCurrentWL(); if (index == INVALID_PLAYER_INDEX) { return -1; } else { return index; } } return -1; } bool CommandLocalPlayerHasPendingCrimes() { CPed* pLocalPlayer = CGameWorld::FindLocalPlayer(); if (scriptVerifyf(pLocalPlayer, "LOCAL_PLAYER_HAS_PENDING_CRIMES - No local player found!")) { CWanted* pWanted = pLocalPlayer->GetPlayerWanted(); if (scriptVerifyf(pWanted, "LOCAL_PLAYER_HAS_PENDING_CRIMES - No wanted info found for local player!")) { return pWanted->HasPendingCrimesQueued(); } } return false; } bool CommandIsPlayerDead( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if (!pPlayer) return false; return (pPlayer && pPlayer->GetPlayerInfo()->GetPlayerState() == CPlayerInfo::PLAYERSTATE_HASDIED); } bool CommandIsPlayerPressingHorn( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if (!pPlayer) return false; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "IS_PLAYER_PRESSING_HORN - Check player character is alive this frame"); return pPlayer->GetPlayerInfo()->IsPlayerPressingHorn(); } void CommandSetPlayerClothPinFrames(int iPedIndex, int pinFrames) { CPed * pPed = CTheScripts::FindLocalPlayerPed(iPedIndex); if (pPed) { pPed->SetClothForcePin( (u8)pinFrames ); } } void CommandSetPlayerClothPackageIndex(int packageIndex) { CPed * pPed = CGameWorld::FindLocalPlayer(); if (pPed) { pPed->SetClothPackageIndex( (u8)packageIndex, 0 ); } } void CommandSetPlayerClothLockCounter(int lockCounter) { Assert( lockCounter >= 0 && lockCounter <= 255 ); CPed * pPed = CGameWorld::FindLocalPlayer(); if (pPed) { pPed->SetClothLockCounter( (u8)lockCounter ); } } void CommandPlayerDetachVirtualBound() { CPed * pPed = CGameWorld::FindLocalPlayer(); if (pPed) { for( int i = 0; i < PV_MAX_COMP; ++i ) { if( pPed->m_CClothController[i] ) { phVerletCloth* verletCloth = pPed->m_CClothController[i]->GetCloth(0); Assert( verletCloth ); verletCloth->DetachVirtualBound(); verletCloth->SetFlag(phVerletCloth::FLAG_COLLIDE_EDGES, false); verletCloth->SetFlag(phVerletCloth::FLAG_IGNORE_OFFSET, false); } } } } Mat34V identMat(V_IDENTITY); void CommandPlayerAttachVirtualBound( const scrVector & pos, const scrVector & rot, float fCapsuleLen, float fCapsuleRad) { CPed * pPed = CGameWorld::FindLocalPlayer(); if( pPed ) { for( int i = 0; i < PV_MAX_COMP; ++i ) { if( pPed->m_CClothController[i] ) { phVerletCloth* verletCloth = pPed->m_CClothController[i]->GetCloth(0); Assert( verletCloth ); Mat34V boundMat; Mat34VFromEulersXYZ( boundMat, VECTOR3_TO_VEC3V(Vector3(rot)) ); boundMat.SetCol3( VECTOR3_TO_VEC3V(Vector3(pos)) ); verletCloth->SetFlag(phVerletCloth::FLAG_COLLIDE_EDGES, true); verletCloth->SetFlag(phVerletCloth::FLAG_IGNORE_OFFSET, true); Assert( !verletCloth->m_VirtualBound ); verletCloth->CreateVirtualBound( 1, &identMat ); verletCloth->AttachVirtualBoundCapsule( fCapsuleRad, fCapsuleLen, boundMat, 0 ); } } } } void CommandSetPlayerControl(int iPlayerIndex, bool bSetControlOn, int iFlags) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(iPlayerIndex); if (!pPlayer) return; if(NetworkInterface::IsGameInProgress()) { iFlags &= ~SPC_AmbientScript; iFlags &= ~SPC_RemoveProjectiles; } if (bSetControlOn) { // Raise a flag to lock the limits of the camera when in fps mode pPlayer->SetPedConfigFlag(CPED_CONFIG_FLAG_ScriptHasControlOfPlayer, false); iFlags &= ~SPC_DisableControls; pPlayer->GetPlayerInfo()->SetPlayerControl(iFlags, 10.0f); const bool bReEnableControlOnDeath = ((iFlags & SPC_ReEnableControlOnDeath)!=0); pPlayer->GetPlayerInfo()->bEnableControlOnDeath = bReEnableControlOnDeath; } else { // Get rid of the flag that limits the camera pPlayer->SetPedConfigFlag(CPED_CONFIG_FLAG_ScriptHasControlOfPlayer, true); iFlags |= SPC_DisableControls; pPlayer->GetPlayerInfo()->SetPlayerControl(iFlags, 10.0f); pPlayer->GetPlayerInfo()->bEnableControlOnDeath = true; if (!NetworkInterface::IsInCopsAndCrooks()) { if (pPlayer->GetSpecialAbility()) pPlayer->GetSpecialAbility()->Deactivate(); } } #if __BANK if (NetworkInterface::IsGameInProgress()) { scriptDebugf1("%s : SET_PLAYER_CONTROL (%s) - flags=\"%s:%s:%s:%s:%s:%s:%s:%s:%s:%s:%s\"\n" ,CTheScripts::GetCurrentScriptNameAndProgramCounter() ,bSetControlOn ? "TRUE" : "FALSE" ,((iFlags & SPC_AmbientScript) !=0) ? "AmbientScript" : "" ,((iFlags & SPC_ClearTasks) !=0) ? "ClearTasks" : "" ,((iFlags & SPC_RemoveFires) !=0) ? "RemoveFires" : "" ,((iFlags & SPC_RemoveExplosions) !=0) ? "RemoveExplosions" : "" ,((iFlags & SPC_RemoveProjectiles) !=0) ? "RemoveProjectiles" : "" ,((iFlags & SPC_DeactivateGadgets) !=0) ? "DeactivateGadgets" : "" ,((iFlags & SPC_ReEnableControlOnDeath) !=0) ? "ReEnableControlOnDeath" : "" ,((iFlags & SPC_LeaveCameraControlsOn) !=0) ? "LeaveCameraControlsOn" : "" ,((iFlags & SPC_AllowPlayerToBeDamaged) !=0) ? "AllowPlayerToBeDamaged" : "" ,((iFlags & SPC_DontStopOtherCarsAroundPlayer) !=0) ? "DontStopOtherCarsAroundPlayer" : "" ,((iFlags & SPC_AllowPadShake) !=0) ? "AllowPadShake" : ""); } else { scriptDebugf1("SET_PLAYER_CONTROL (%s) called by %s", bSetControlOn ? "TRUE" : "FALSE", CTheScripts::GetCurrentScriptNameAndProgramCounter()); } #endif // __BANK } int CommandGetPlayerWantedLevel( int PlayerIndex) { CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); return (pPlayer ? pPlayer->GetPlayerWanted()->GetWantedLevel() : 0); } void CommandSetMaxWantedLevel( int NewMaxLevel ) { scriptDebugf1("SET_MAX_WANTED_LEVEL - NewMaxLevel %d", NewMaxLevel); NewMaxLevel = Min(NewMaxLevel, WANTED_LEVEL_LAST - 1); CWanted::SetMaximumWantedLevel(NewMaxLevel); } void CommandSetPoliceRadarBlips( bool bBlips ) { CWanted::GetWantedBlips().EnablePoliceRadarBlips(bBlips); } void CommandSetPoliceIgnorePlayer( int PlayerIndex, bool bIgnorePlayer ) { CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if (!pPlayer) return; if (bIgnorePlayer) { pPlayer->GetPlayerWanted()->m_PoliceBackOff = TRUE; CGameWorld::StopAllLawEnforcersInTheirTracks(); } else { pPlayer->GetPlayerWanted()->m_PoliceBackOff = FALSE; } } bool CommandIsPlayerPlaying( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex, false); if (pPlayer && CTheScripts::IsPlayerPlaying(pPlayer)) { #if __DEV pPlayer->m_nDEflags.bCheckedForDead = TRUE; #endif return true; } return false; } void CommandSetEveryoneIgnorePlayer( int PlayerIndex, bool bIgnore ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; if(SCRIPT_VERIFY(pPlayer->GetPlayerWanted(), "SET_EVERYONE_IGNORE_PLAYER - Player character doesn't have a wanted class")) { if (bIgnore) { pPlayer->GetPlayerWanted()->m_EverybodyBackOff = TRUE; if(!NetworkInterface::IsGameInProgress()) { CGameWorld::StopAllLawEnforcersInTheirTracks(); } } else { pPlayer->GetPlayerWanted()->m_EverybodyBackOff = FALSE; } } } // DEPRECATED void CommandSetAllRandomPedsFlee( int PlayerIndex, bool bFlee ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; if(SCRIPT_VERIFY(pPlayer->GetPlayerWanted(), "SET_ALL_RANDOM_PEDS_FLEE - Player character doesn't have a wanted class")) { if (pPlayer->GetPlayerWanted()) { if (bFlee) { pPlayer->GetPlayerWanted()->m_AllRandomsFlee = TRUE; } else { pPlayer->GetPlayerWanted()->m_AllRandomsFlee = FALSE; } } } } void CommandSetAllRandomPedsFleeThisFrame( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) { return; } if(SCRIPT_VERIFY(pPlayer->GetPlayerWanted(), "SET_ALL_RANDOM_PEDS_FLEE_THIS_FRAME - Player character doesn't have a wanted class")) { if (pPlayer->GetPlayerWanted()) { pPlayer->GetPlayerWanted()->m_AllRandomsFlee = true; } } } // DEPRECATED void CommandSetAllNeutralRandomPedsFlee( int PlayerIndex, bool bFlee ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; if(SCRIPT_VERIFY(pPlayer->GetPlayerWanted(), "SET_ALL_NEUTRAL_RANDOM_PEDS_FLEE - Player character doesn't have a wanted class")) { if (pPlayer->GetPlayerWanted()) { pPlayer->GetPlayerWanted()->m_AllNeutralRandomsFlee = bFlee; } } } void CommandSetAllNeutralRandomPedsFleeThisFrame( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) { return; } if(SCRIPT_VERIFY(pPlayer->GetPlayerWanted(), "SET_ALL_NEUTRAL_RANDOM_PEDS_FLEE_THIS_FRAME - Player character doesn't have a wanted class")) { if (pPlayer->GetPlayerWanted()) { pPlayer->GetPlayerWanted()->m_AllNeutralRandomsFlee = true; } } } // DEPRECATED void CommandSetRandomPedsOnlyAttackWithGuns( int PlayerIndex, bool bVal ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; if(SCRIPT_VERIFY(pPlayer->GetPlayerWanted(), "SET_RANDOM_PEDS_ONLY_ATTACK_WITH_GUNS - Player character doesn't have a wanted class")) { if (pPlayer->GetPlayerWanted()) { pPlayer->GetPlayerWanted()->m_AllRandomsOnlyAttackWithGuns = bVal; } } } void CommandSetRandomPedsOnlyAttackWithGunsThisFrame( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) { return; } if(SCRIPT_VERIFY(pPlayer->GetPlayerWanted(), "SET_RANDOM_PEDS_ONLY_ATTACK_WITH_GUNS_THIS_FRAME - Player character doesn't have a wanted class")) { if (pPlayer->GetPlayerWanted()) { pPlayer->GetPlayerWanted()->m_AllRandomsOnlyAttackWithGuns = true; } } } void CommandSetLawPedsCanAttackNonWantedPlayerThisFrame(int PlayerIndex) { CPed *pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { if(SCRIPT_VERIFY(pPlayer->GetPlayerWanted(), "SET_LAW_PEDS_CAN_ATTACK_NON_WANTED_PLAYER_THIS_FRAME - Player character doesn't have a wanted class")) { pPlayer->GetPlayerWanted()->m_LawPedCanAttackNonWantedPlayer = true; } } } void CommandSetIgnoreLowPriorityShockingEvents( int PlayerIndex, bool bFlee ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; SCRIPT_ASSERT(!NetworkInterface::IsGameInProgress(), "SET_IGNORE_LOW_PRIORITY_SHOCKING_EVENTS - Currently not supported in network game"); if(SCRIPT_VERIFY(pPlayer->GetPlayerWanted(), "SET_IGNORE_LOW_PRIORITY_SHOCKING_EVENTS - Player character doesn't have a wanted class")) { if (pPlayer->GetPlayerWanted()) { if (bFlee) { pPlayer->GetPlayerWanted()->m_IgnoreLowPriorityShockingEvents = TRUE; } else { pPlayer->GetPlayerWanted()->m_IgnoreLowPriorityShockingEvents = FALSE; } } } } void CommandSetWantedMultiplier( float fMultiplier ) { #if __DEV scriptDebugf1("%s script is setting wanted multiplier to %f ", CTheScripts::GetCurrentScriptNameAndProgramCounter(), fMultiplier); #endif if( scriptVerifyf( CGameWorld::FindLocalPlayerWanted(), "SET_WANTED_MULTIPLIER failed: Local player doesn't exist!" ) ) { CGameWorld::FindLocalPlayerWanted()->m_fMultiplier = fMultiplier; } } void CommandSetWantedLevelDifficulty(int iPlayerIndex, float fDifficulty) { //Ensure the player is valid. CPed* pPlayer = CTheScripts::FindLocalPlayerPed(iPlayerIndex); if(!SCRIPT_VERIFY(pPlayer, "SET_WANTED_LEVEL_DIFFICULTY - The player is invalid.")) { return; } //Ensure the wanted is valid. CWanted* pWanted = pPlayer->GetPlayerWanted(); if(!SCRIPT_VERIFY(pWanted, "SET_WANTED_LEVEL_DIFFICULTY - The wanted is invalid.")) { return; } //Set the difficulty. SCRIPT_CHECK_CALLING_FUNCTION pWanted->m_Overrides.SetDifficulty(fDifficulty); } void CommandResetWantedLevelDifficulty(int iPlayerIndex) { //Ensure the player is valid. CPed* pPlayer = CTheScripts::FindLocalPlayerPed(iPlayerIndex); if(!SCRIPT_VERIFY(pPlayer, "RESET_WANTED_LEVEL_DIFFICULTY - The player is invalid.")) { return; } //Ensure the wanted is valid. CWanted* pWanted = pPlayer->GetPlayerWanted(); if(!SCRIPT_VERIFY(pWanted, "RESET_WANTED_LEVEL_DIFFICULTY - The wanted is invalid.")) { return; } //Reset the difficulty. pWanted->m_Overrides.ResetDifficulty(); } int CommandGetWantedLevelTimeToEscape() { return CDispatchData::GetParoleDuration(); } void CommandSetWantedLevelHiddenEscapeTime(int iPlayerIndex, int iWantedLevel, int iTimeToEscape) { //Ensure the player is valid. CPed* pPlayer = CTheScripts::FindLocalPlayerPed(iPlayerIndex); if (!SCRIPT_VERIFY(pPlayer, "SET_WANTED_LEVEL_HIDDEN_ESCAPE_TIME - The player is invalid.")) { return; } CWanted* pWanted = pPlayer->GetPlayerWanted(); if (!SCRIPT_VERIFY(pWanted, "SET_WANTED_LEVEL_HIDDEN_ESCAPE_TIME - The wanted is invalid.")) { return; } #if __BANK scriptDebugf3("Wanted level %i, hidden evasion time set to %i", iWantedLevel, iTimeToEscape); #endif pWanted->m_Overrides.SetMultiplayerHiddenEvasionTimesOverride((s32)iWantedLevel, (u32)iTimeToEscape); } void CommandResetWantedLevelHiddenEscapeTime(int iPlayerIndex) { //Ensure the player is valid. CPed* pPlayer = CTheScripts::FindLocalPlayerPed(iPlayerIndex); if (!SCRIPT_VERIFY(pPlayer, "RESET_WANTED_LEVEL_HIDDEN_ESCAPE_TIME - The player is invalid.")) { return; } CWanted* pWanted = pPlayer->GetPlayerWanted(); if (!SCRIPT_VERIFY(pWanted, "RESET_WANTED_LEVEL_HIDDEN_ESCAPE_TIME - The wanted is invalid.")) { return; } #if __BANK scriptDebugf3("Wanted level hidden evasion times reset"); #endif pWanted->m_Overrides.ResetEvasionTimeArray(); } void CommandSetArcadeCNCVOffender(bool bVOffender) { SCRIPT_ASSERT(!NetworkInterface::IsInCopsAndCrooks(), "SET_ARCADE_CNC_V_OFFENDER - Called outside of Cops & Crooks"); CPed* pPlayer = CGameWorld::FindLocalPlayerSafe(); SCRIPT_ASSERT(pPlayer, "SET_ARCADE_CNC_V_OFFENDER - The local player is invalid."); SCRIPT_ASSERT(pPlayer->GetPlayerInfo(), "SET_ARCADE_CNC_V_OFFENDER - The local player info is invalid"); CPlayerArcadeInformation& playerArcadeInfo = pPlayer->GetPlayerInfo()->AccessArcadeInformation(); scriptDebugf3("SET_ARCADE_CNC_V_OFFENDER - setting from %s to %s", playerArcadeInfo.GetCNCVOffender() ? "TRUE" : "FALSE", bVOffender ? "TRUE" : "FALSE"); playerArcadeInfo.SetCNCVOffender(bVOffender); } bool CommandGetArcadeCNCVOffender(int PlayerIndex) { SCRIPT_ASSERT(!NetworkInterface::IsInCopsAndCrooks(), "SET_ARCADE_CNC_V_OFFENDER - Called outside of Cops & Crooks"); CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex, false); SCRIPT_ASSERT(pPlayer, "SET_ARCADE_CNC_V_OFFENDER - The player index is invalid."); SCRIPT_ASSERT(pPlayer->GetPlayerInfo(), "SET_ARCADE_CNC_V_OFFENDER - The player info is invalid"); return pPlayer->GetPlayerInfo()->AccessArcadeInformation().GetCNCVOffender(); } void CommandStartFiringAmnesty( int iDuration ) { SCRIPT_ASSERT(!NetworkInterface::IsGameInProgress(), "START_FIRING_AMNESTY - Currently not supported in network game"); SCRIPT_ASSERT(iDuration >= 0, "START_FIRING_AMNESTY - duration needs to be greater than or equal to zero"); CGameWorld::FindLocalPlayerWanted()->SetTimeAmnestyEnds(fwTimer::GetTimeInMilliseconds() + iDuration); CGameWorld::FindLocalPlayerWanted()->ClearQdCrimes(); CGameWorld::FindLocalPlayerWanted()->m_TimeWhenNewWantedLevelTakesEffect = 0; CGameWorld::FindLocalPlayerWanted()->m_nNewWantedLevel = CGameWorld::FindLocalPlayerWanted()->m_nWantedLevel; } void CommandReportCrime( int PlayerIndex, int crimeToReport, int crimeValue ) { scriptDebugf3("%s [Frame=%d] : REPORT_CRIME: Crime Type: %d", CTheScripts::GetCurrentScriptNameAndProgramCounter(), fwTimer::GetSystemFrameCount(), crimeToReport); CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex, false); if (!pPlayer || !pPlayer->GetPlayerWanted()) { return; } switch (CCrime::sm_eReportCrimeMethod) { case CCrime::REPORT_CRIME_DEFAULT: scriptDebugf3("%s [Frame=%d] : REPORT_CRIME (Default)", CTheScripts::GetCurrentScriptNameAndProgramCounter(), fwTimer::GetSystemFrameCount()); pPlayer->GetPlayerWanted()->ReportCrimeNow((eCrimeType)crimeToReport, VEC3V_TO_VECTOR3(pPlayer->GetTransform().GetPosition()), false, true, crimeValue); break; case CCrime::REPORT_CRIME_ARCADE_CNC: // do not care about victim for CNC so this is null scriptDebugf3("%s [Frame=%d] : REPORT_CRIME (Arcade Mode: CNC)", CTheScripts::GetCurrentScriptNameAndProgramCounter(), fwTimer::GetSystemFrameCount()); CCrime::ReportCrime((eCrimeType)crimeToReport, nullptr, pPlayer); break; default: break; } } void CommandSuppressCrimeThisFrame( int PlayerIndex, int CrimeToSuppress ) { CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex, false); if (!pPlayer || !pPlayer->GetPlayerWanted()) { return; } pPlayer->GetPlayerWanted()->SuppressCrimeThisFrame((eCrimeType)CrimeToSuppress); } void CommandUpdateWantedPositionThisFrame( int PlayerIndex ) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex, false); if(!pPlayer || !pPlayer->GetPlayerWanted()) { return; } pPlayer->GetPlayerWanted()->m_CenterWantedPosition = true; } void CommandSuppressLosingWantedLevelIfHiddenThisFrame( int PlayerIndex ) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex, false); if(!pPlayer || !pPlayer->GetPlayerWanted()) { return; } #if __BANK wantedDebugf3("SUPPRESS_LOSING_WANTED_LEVEL_IF_HIDDEN_THIS_FRAME - setting m_SuppressLosingWantedLevelIfHiddenThisFrame to True for %s", AILogging::GetDynamicEntityNameSafe(pPlayer)); #endif pPlayer->GetPlayerWanted()->m_SuppressLosingWantedLevelIfHiddenThisFrame = true; } void CommandmAllowEvasionHUDIfDisablingHiddenEvasionThisFrame( int PlayerIndex, float fTimeBeforeAllowReport ) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex, false); if(!pPlayer || !pPlayer->GetPlayerWanted()) { return; } pPlayer->GetPlayerWanted()->m_AllowEvasionHUDIfDisablingHiddenEvasionThisFrame = true; // B*2343618: Allow script to prevent player from being reported for a certain amount of time when first calling this function. // SPARR changed this so it now prevents newly spawned cops from reporting playing within this time s32 iTimeInMilli = (s32)(fTimeBeforeAllowReport*1000.0f); pPlayer->GetPlayerWanted()->m_iTimeBeforeAllowReporting = iTimeInMilli; } void CommandForceStartHiddenEvasion( int PlayerIndex ) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex, false); if(!pPlayer || !pPlayer->GetPlayerWanted()) { return; } pPlayer->GetPlayerWanted()->ForceStartHiddenEvasion(); } void CommandSuppressWitnessesCallingPoliceThisFrame( int PlayerIndex ) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex, false); if(!pPlayer || !pPlayer->GetPlayerWanted()) { return; } pPlayer->GetPlayerWanted()->m_DisableCallPoliceThisFrame = true; } void CommandEnableCnCCrimeReporting(bool bEnable) { if (bEnable) { CCrime::sm_eReportCrimeMethod = CCrime::REPORT_CRIME_ARCADE_CNC; CWanted::sm_bEnableHiddenEvasion = false; } else if (CCrime::sm_eReportCrimeMethod == CCrime::REPORT_CRIME_ARCADE_CNC) { CCrime::sm_eReportCrimeMethod = CCrime::REPORT_CRIME_DEFAULT; CWanted::sm_bEnableHiddenEvasion = true; } } void CommandSetLawResponseDelayOverride( float fLawResponseDelay ) { CDispatchManager::SetLawResponseDelayOverride(fLawResponseDelay); } void CommandResetLawResponseDelayOverride() { CDispatchManager::SetLawResponseDelayOverride(-1.0f); } void CommandReportPoliceSpottedPlayer( int PlayerIndex ) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex, false); if(!pPlayer) { return; } CWanted* pWanted = pPlayer->GetPlayerWanted(); if(pWanted) { wantedDebugf3("CommandReportPoliceSpottedPlayer ReportPoliceSpottingPlayer"); Vec3V vPlayerPosition = pPlayer->GetTransform().GetPosition(); pWanted->ReportPoliceSpottingPlayer(NULL, VEC3V_TO_VECTOR3(vPlayerPosition), pWanted->m_WantedLevel, true, true); } } void CommandDisableWantedRelationshipGroupReset( int PlayerIndex, int relationshipGroupHash ) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex, false); if(!pPlayer) { return; } CWanted* pWanted = pPlayer->GetPlayerWanted(); if(pWanted) { pWanted->DisableRelationshipGroupResetThisFrame(relationshipGroupHash); } } bool CommandIsPlayerSpectatedVehicleRadioOverride() { return NetworkInterface::IsOverrideSpectatedVehicleRadioSet(); } void CommandSetPlayerSpectatedVehicleRadioOverride( bool bValue ) { if (NetworkInterface::GetPlayerMgr().IsInitialized()) { NetworkInterface::SetOverrideSpectatedVehicleRadio( bValue ); } else { SCRIPT_ASSERT(0, "SET_PLAYER_SPECTATED_VEHICLE_RADIO_OVERRIDE called when MP game is no longer is progress - please check MP state before calling this method"); } } bool CommandCanPlayerStartMission( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return false; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "CAN_PLAYER_START_MISSION - Check player character is alive this frame"); return (pPlayer->GetPlayerInfo()->CanPlayerStartMission()); } bool CommandCanPlayerDoStealthKill( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return false; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "CAN_PLAYER_DO_STEALTH_KILL - Check player character is alive this frame"); // We can only surrender if someone is trying to capture us and we are not already surrendering CTask* pTask = pPlayer->GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_PLAYER_ON_FOOT); if (pTask && static_cast(pTask)->GetCanStealthKill()) { return true; } return false; } bool CommandIsPlayerReadyForCutscene(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return false; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "IS_PLAYER_READY_FOR_CUTSCENE - Check player character is alive this frame"); // Never safe whilst ragdolling if( pPlayer->GetUsingRagdoll() ) { return false; } //temporary fix: The mod shop script is using this command to check that the mod shop can run //but this will fail if inside a garage. Multi-player has added mod shop locations as garages, so they can leverage locate commands //IS_OBJECT_ENTIRELY_INSIDE_GARAGE. Removing the garage check from this command, not relevant anymore. //if (CGarages::PlayerIsInteractingWithGarage()) //{ // return false; //} if (CStuntJumpManager::IsAStuntjumpInProgress()) { return false; } CQueriableInterface* pQueriableInterface = pPlayer->GetPedIntelligence()->GetQueriableInterface(); if (pQueriableInterface->IsTaskCurrentlyRunning(CTaskTypes::TASK_CLIMB_LADDER) || pQueriableInterface->IsTaskCurrentlyRunning(CTaskTypes::TASK_GO_TO_AND_CLIMB_LADDER)) { return false; } // Safe in a vehicle as long as the player isn't entering or exiting if( pPlayer->GetPedConfigFlag( CPED_CONFIG_FLAG_InVehicle ) ) { if ( (!pPlayer->GetPedIntelligence()->GetQueriableInterface()->IsTaskCurrentlyRunning(CTaskTypes::TASK_EXIT_VEHICLE)) && (!pPlayer->GetPedIntelligence()->GetQueriableInterface()->IsTaskCurrentlyRunning(CTaskTypes::TASK_ENTER_VEHICLE) ) ) { return true; } } // Always safe on foot as long as the player isn't ragdolling (checked above) or getting in a vehicle else { return !pPlayer->GetPedIntelligence()->GetQueriableInterface()->IsTaskCurrentlyRunning(CTaskTypes::TASK_ENTER_VEHICLE) && !pPlayer->GetPedIntelligence()->GetQueriableInterface()->IsTaskCurrentlyRunning(CTaskTypes::TASK_EXIT_VEHICLE); } return false; } void CommandMakePlayerSafeForCutscene( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; #if __DEV scriptDebugf1("MAKE_PLAYER_SAFE_FOR_CUTSCENE - SET_PLAYER_CONTROL (TRUE) called by %s", CTheScripts::GetCurrentScriptNameAndProgramCounter()); #endif SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "MAKE_PLAYER_SAFE_FOR_CUTSCENE - Check player character is alive this frame"); pPlayer->GetPlayerInfo()->DisableControlsCutscenes(); pPlayer->GetPlayerInfo()->SetPlayerControl(false, TRUE); } bool CommandIsPlayerTargettingEntity( int PlayerIndex, int iTargetEntity ) { bool bResult = FALSE; CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); const CEntity *pEntity = CTheScripts::GetEntityToQueryFromGUID(iTargetEntity); if (pPlayer && pEntity) { SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "IS_PLAYER_TARGETTING_ENTITY - Check player character is alive this frame"); if (pPlayer->IsLocalPlayer()) { if (pPlayer->GetPlayerInfo()->GetTargeting().GetLockOnTarget() == pEntity) { bResult = true; } } else { CNetObjPlayer* pPlayerObj = static_cast(pPlayer->GetNetworkObject()); if (pPlayerObj && pPlayerObj->GetAimingTarget() == pEntity) { bResult = true; } } } return(bResult); } bool CommandGetPlayerTargetEntity( int PlayerIndex, int& iTargetEntity ) { bool bResult = false; CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == true, "GET_PLAYER_TARGET_ENTITY - Check player character is alive this frame"); CEntity *pEntity = pPlayer->GetPlayerInfo()->GetTargeting().GetLockOnTarget(); if (pEntity && pEntity->GetIsPhysical()) { bResult = true; iTargetEntity = CTheScripts::GetGUIDFromEntity(*(static_cast(pEntity))); } } return bResult; } bool CommandIsPlayerFreeAiming( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if (!pPlayer) return false; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "IS_PLAYER_FREE_AIMING - Check player character is alive this frame"); return pPlayer->GetPlayerInfo()->GetPlayerDataFreeAiming() != 0; } bool CommandIsPlayerFreeAimingAtEntity( int PlayerIndex, int iTargetEntity ) { //-- CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); Assert(pPlayer); if (!pPlayer) return false; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "IS_PLAYER_FREE_AIMING_AT_ENTITY - Check player character is alive this frame"); //-- const CEntity *pEntity = CTheScripts::GetEntityToQueryFromGUID(iTargetEntity); if(!pEntity) return false; if(!NetworkInterface::IsGameInProgress() || !pPlayer->IsNetworkClone()) { const CPlayerPedTargeting & rPlayerTargeting = pPlayer->GetPlayerInfo()->GetTargeting(); return (rPlayerTargeting.GetFreeAimTarget() == pEntity) || (rPlayerTargeting.GetFreeAimTargetRagdoll() == pEntity); } else { CNetObjPlayer* netObjPlayer = SafeCast(CNetObjPlayer, pPlayer->GetNetworkObject()); return ( netObjPlayer->IsFreeAimingLockedOnTarget() && pEntity == netObjPlayer->GetAimingTarget() ); } //-- } bool CommandGetEntityPlayerIsFreeAimingAt( int PlayerIndex, int& iTargetEntity ) { bool bResult = false; CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "GET_ENTITY_PLAYER_IS_FREE_AIMING_AT - Check player character is alive this frame"); CPlayerPedTargeting & rPlayerTargeting = pPlayer->GetPlayerInfo()->GetTargeting(); //favor non-ragdoll targets if (rPlayerTargeting.GetFreeAimTarget() && rPlayerTargeting.GetFreeAimTarget()->GetIsPhysical()) { iTargetEntity = CTheScripts::GetGUIDFromEntity(*(static_cast(rPlayerTargeting.GetFreeAimTarget()))); bResult = true; } else if (rPlayerTargeting.GetFreeAimTargetRagdoll() && rPlayerTargeting.GetFreeAimTargetRagdoll()->GetIsPhysical()) { iTargetEntity = CTheScripts::GetGUIDFromEntity(*(static_cast(rPlayerTargeting.GetFreeAimTargetRagdoll()))); bResult = true; } } return bResult; } void CommandSetPlayerLockOnRangeOverride( int PlayerIndex, float fRange ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; pPlayer->GetPlayerInfo()->GetTargeting().SetLockOnRangeOverride(fRange); } void CommandSetPlayerCanDoDriveBy( int PlayerIndex, bool bCanDoDriveBy ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; pPlayer->GetPlayerInfo()->bCanDoDriveBy = bCanDoDriveBy; } void CommandSetPlayerCanBeHassledByGangs(int PlayerIndex, bool bCanBeHassled) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; pPlayer->GetPlayerInfo()->bCanBeHassledByGangs = bCanBeHassled; } void CommandSetPlayerCanUseCover( int PlayerIndex, bool bCanUseCover ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "SET_PLAYER_CAN_USE_COVER - Check player character is alive this frame"); pPlayer->GetPlayerInfo()->bCanUseCover = bCanUseCover; } int CommandGetMaxWantedLevel() { return CWanted::MaximumWantedLevel; } bool CommandIsPlayerTargettingAnything( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return false; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "IS_PLAYER_TARGETTING_ANYTHING - Check player character is alive this frame"); Assert(pPlayer->GetPlayerInfo()); return (pPlayer->GetPlayerInfo()->GetTargeting().GetLockOnTarget() != NULL); } void CommandSetPlayerSprint( int PlayerIndex, bool bEnableSprint ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "SET_PLAYER_SPRINT - Check player character is alive this frame"); pPlayer->GetPlayerInfo()->SetDisablePlayerSprint(!bEnableSprint); } void CommandPlayerResetSprintStamina( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "RESET_PLAYER_STAMINA - Check player character is alive this frame"); pPlayer->GetPlayerInfo()->ResetSprintEnergy(); } void CommandPlayerRestoreSprintStamina( int PlayerIndex, float fPercent ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "RESTORE_PLAYER_STAMINA - Check player character is alive this frame"); if ( SCRIPT_VERIFY(fPercent >= 0.f, "RESTORE_PLAYER_STAMINA - fPercent must be >= 0") && SCRIPT_VERIFY(fPercent <= 100.f, "RESTORE_PLAYER_STAMINA - fPercent must be <= 100") ) { pPlayer->GetPlayerInfo()->RestoreSprintEnergy(fPercent); } } float CommandGetPlayerSprintStaminaRemaining( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (SCRIPT_VERIFY(pPlayer != NULL, "GET_PLAYER_SPRINT_STAMINA_REMAINING - Player couldn't be found")) { SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "GET_PLAYER_SPRINT_STAMINA_REMAINING - Check player character is alive this frame"); CPlayerInfo* pPlayerInfo = pPlayer->GetPlayerInfo(); if( SCRIPT_VERIFY(pPlayerInfo != NULL, "GET_PLAYER_SPRINT_STAMINA_REMAINING - Player has no PlayerInfo") ) { return pPlayerInfo->GetPlayerDataMaxSprintEnergy() - pPlayerInfo->GetPlayerDataSprintEnergy(); } } return 0.0f; } float CommandGetPlayerSprintTimeRemaining( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (SCRIPT_VERIFY(pPlayer != NULL, "GET_PLAYER_SPRINT_TIME_REMAINING - Player couldn't be found")) { SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "GET_PLAYER_SPRINT_TIME_REMAINING - Check player character is alive this frame"); CPlayerInfo* pPlayerInfo = pPlayer->GetPlayerInfo(); if( SCRIPT_VERIFY(pPlayerInfo != NULL, "GET_PLAYER_SPRINT_TIME_REMAINING - Player has no PlayerInfo") ) { float maxSprint = pPlayerInfo->GetPlayerDataMaxSprintEnergy(); float sprint = pPlayerInfo->GetPlayerDataSprintEnergy(); float depletion = pPlayerInfo->ComputeSprintDepletionRateForPed(*pPlayer, maxSprint, CPlayerInfo::SPRINT_ON_FOOT); return (sprint / depletion); } } return 0.0f; } float CommandGetPlayerUnderwaterTimeRemaining( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (SCRIPT_VERIFY(pPlayer != NULL, "GET_PLAYER_UNDERWATER_TIME_REMAINING - Player couldn't be found")) { SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "GET_PLAYER_UNDERWATER_TIME_REMAINING - Check player character is alive this frame"); const CInWaterEventScanner& waterScanner = pPlayer->GetPedIntelligence()->GetEventScanner()->GetInWaterEventScanner(); float fTimeUnderWater = waterScanner.GetTimeSubmerged(); float fMaxTimeUnderWater = pPlayer->GetMaxTimeUnderwater(); return fMaxTimeUnderWater - fTimeUnderWater; } return 0.0f; } void CommandPlayerSetUnderwaterBreathingPercentRemaining( int PlayerIndex, float fPercent ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "SET_PLAYER_UNDERWATER_BREATH_PERCENT_REMAINING - Check player character is alive this frame"); if ( SCRIPT_VERIFY(fPercent >= 0.f, "SET_PLAYER_UNDERWATER_BREATH_PERCENT_REMAINING - fPercent must be >= 0") && SCRIPT_VERIFY(fPercent <= 100.f, "SET_PLAYER_UNDERWATER_BREATH_PERCENT_REMAINING - fPercent must be <= 100") ) { CInWaterEventScanner& waterScanner = pPlayer->GetPedIntelligence()->GetEventScanner()->GetInWaterEventScanner(); float fMaxTimeUnderwater = pPlayer->GetMaxTimeUnderwater(); float fTimeSubmerged = fMaxTimeUnderwater - (fPercent / fMaxTimeUnderwater); waterScanner.SetTimeSubmerged(fTimeSubmerged); } } int CommandGetPlayerGroup( int PlayerIndex) { CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); s32 playerGroup = 0; if (pPlayer) playerGroup = pPlayer->GetPlayerInfo()->GetPlayerDataPlayerGroup(); // we reference ped groups via an id assigned to a group when it is created by the script. Player groups are a special case in that they already // exist. Therefore we still need to register them with the resource management system so we have an id we can use. The player's group will not // be cleaned up because it is permanent. scriptResource* pResource = CTheScripts::GetCurrentGtaScriptHandler()->GetScriptResource(CGameScriptResource::SCRIPT_RESOURCE_PEDGROUP, playerGroup); if (!pResource) { CScriptResource_PedGroup pedGroup((u32)playerGroup); return CTheScripts::GetCurrentGtaScriptHandler()->RegisterScriptResourceAndGetId(pedGroup); } else { return pResource->GetId(); } } int CommandGetPlayerMaxArmour( int PlayerIndex ) { CPed* player = CTheScripts::FindNetworkPlayerPed(PlayerIndex); return (player && player->GetPlayerInfo()) ? player->GetPlayerInfo()->MaxArmour : 0; } int CommandGetPlayerJackSpeed( int PlayerIndex ) { CPed* player = CTheScripts::FindNetworkPlayerPed(PlayerIndex); return (player && player->GetPlayerInfo()) ? player->GetPlayerInfo()->JackSpeed : 0; } bool CommandIsPlayerControlOn( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return false; if (NetworkInterface::IsGameInProgress()) { // In multiplayer games, the scripts continue to run while the pause menu is up so ignore the fact that control has been turned off by the pause menu return (!pPlayer->GetPlayerInfo()->AreAnyControlsOtherThanFrontendDisabled()); } else { return (!pPlayer->GetPlayerInfo()->AreControlsDisabled()); } } bool CommandGetAreCameraControlsDisabled() { // get our local player CPed* pPlayer = CGameWorld::FindLocalPlayerSafe(); // if we found our player if (pPlayer) { SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "IS_PLAYER_SCRIPT_CONTROL_ON - Check player character is alive this frame"); // get our local player info CPlayerInfo* pPlayerInfo = pPlayer->GetPlayerInfo(); // if found if (pPlayerInfo) { // return if the controls are disabled return pPlayerInfo->IsControlsCameraDisabled(); } } // if no player or player info, return true (disabled) return true; } bool CommandIsPlayerScriptControlOn( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return false; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "IS_PLAYER_SCRIPT_CONTROL_ON - Check player character is alive this frame"); if (pPlayer->GetPlayerInfo()->IsControlsScriptDisabled() || pPlayer->GetPlayerInfo()->IsControlsScriptAmbientDisabled()) { return false; } else { return true; } } bool CommandIsPlayerClimbing( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return false; return pPlayer->GetPedIntelligence()->IsPedClimbing(); } bool CommandIsPlayerSurrendering( int UNUSED_PARAM(PlayerIndex) ) { scriptAssertf(0, "IS_PLAYER_SURRENDERING is deprecated"); return false; } bool CommandIsPlayerBeingArrested( int PlayerIndex, bool bCheckBustedTask ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return false; // Look for the surrender task if(bCheckBustedTask) { CTask* pTask = pPlayer->GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_BUSTED); if (pTask) { return true; } } // Backup check to see if player is arrested if (pPlayer->GetIsArrested()) { return true; } return false; } void CommandSetPlayerArrestedState( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { pPlayer->SetArrestState(ArrestState_Arrested); } } void CommandResetPlayerArrestState( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { pPlayer->SetArrestState(ArrestState_None); } } bool CommandCanPlayerPerformArrest( int PlayerIndex ) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { CTaskPlayerOnFoot* taskPlayerOnFoot = (CTaskPlayerOnFoot*)pPlayer->GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_PLAYER_ON_FOOT); if (taskPlayerOnFoot) { return taskPlayerOnFoot->CheckShouldPerformArrest(true); } } return false; } // Should be kept in sync with INCAPACITATION_STATE in command_players.sch enum ePlayerIncapacitationState { State_Invalid = -1, State_Falling = 0, State_Incapacitated, State_Escaping, State_Arrested }; ePlayerIncapacitationState CommandGetPlayerIncapacitationState(int CNC_MODE_ENABLED_ONLY(PlayerIndex)) { #if CNC_MODE_ENABLED CPed * pPed = FindPlayerPedByIndex(PlayerIndex); if (pPed) { if (pPed->GetPedIntelligence()->GetQueriableInterface()->IsTaskCurrentlyRunning(CTaskTypes::TASK_INCAPACITATED)) { int iState = pPed->GetPedIntelligence()->GetQueriableInterface()->GetStateForTaskType(CTaskTypes::TASK_INCAPACITATED); switch (iState) { case CTaskIncapacitated::State_Start: case CTaskIncapacitated::State_DownedRagdoll: return ePlayerIncapacitationState::State_Falling; case CTaskIncapacitated::State_Incapacitated: return ePlayerIncapacitationState::State_Incapacitated; case CTaskIncapacitated::State_Escape: return ePlayerIncapacitationState::State_Escaping; case CTaskIncapacitated::State_Arrested: return ePlayerIncapacitationState::State_Arrested; default: return ePlayerIncapacitationState::State_Invalid; } } } #endif return ePlayerIncapacitationState::State_Invalid; } bool CommandIsPlayerArrestableFromIncapacitated(int CNC_MODE_ENABLED_ONLY(PlayerIndex)) { #if CNC_MODE_ENABLED CPed * pPlayerPed = FindPlayerPedByIndex(PlayerIndex); if (!pPlayerPed) { return false; } CTaskIncapacitated* pTask = (CTaskIncapacitated*)pPlayerPed->GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_INCAPACITATED); if (!pTask) { return false; } return pTask->IsArrestable(); #endif return false; } bool CommandCanLocalPlayerPerformArrestOnPlayerFromIncapacitated(int CNC_MODE_ENABLED_ONLY(PlayerIndex)) { #if CNC_MODE_ENABLED CPed* pLocalPed = FindPlayerPed(); if (!pLocalPed->GetPedConfigFlag(CPED_CONFIG_FLAG_CanPerformArrest)) { return false; } CPed * pPlayerPed = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if (!pPlayerPed) { return false; } CTaskIncapacitated* pTask = (CTaskIncapacitated*)pPlayerPed->GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_INCAPACITATED); if (!pTask) { return false; } return pTask->IsArrestableByPed(pLocalPed);; #endif return false; } bool CommandHasPlayerBeenArrestedFromIncapacitated(int CNC_MODE_ENABLED_ONLY(PlayerIndex)) { #if CNC_MODE_ENABLED CPed* pPlayer = FindPlayerPedByIndex(PlayerIndex); if (pPlayer) { CTaskIncapacitated* taskIncapacitated = (CTaskIncapacitated*)pPlayer->GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_INCAPACITATED); if (taskIncapacitated) { return taskIncapacitated->GetIsArrested(); } } #endif return false; } bool CommandIsIncapacitated(int CNC_MODE_ENABLED_ONLY(PlayerIndex)) { #if CNC_MODE_ENABLED CPed* pPlayer = FindPlayerPedByIndex(PlayerIndex); if (pPlayer) { CTaskIncapacitated* taskIncapacitated = (CTaskIncapacitated*)pPlayer->GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_INCAPACITATED); if (taskIncapacitated) { return taskIncapacitated->GetState() != CTaskIncapacitated::State_Arrested; } } #endif return false; } int CommandGetPlayerArrester(int CNC_MODE_ENABLED_ONLY(PlayerIndex)) { #if CNC_MODE_ENABLED CPed* pPlayer = FindPlayerPedByIndex(PlayerIndex); if (pPlayer) { CTaskIncapacitated* taskIncapacitated = (CTaskIncapacitated*)pPlayer->GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_INCAPACITATED); if (taskIncapacitated) { CPed* pPedsArrester = taskIncapacitated->GetPedArrester(); if (pPedsArrester) { CNetObjGame* pNetOject = pPedsArrester->GetNetworkObject(); if (pNetOject) { CNetGamePlayer* pNetPlayer = pNetOject->GetPlayerOwner(); if (pNetPlayer) { PhysicalPlayerIndex iPlayerIdx = pNetPlayer->GetPhysicalPlayerIndex(); return iPlayerIdx; } } } } } #endif return 0; } bool CommandIsTapToGetUpFasterFromIncapacitatedAvailable() { #if CNC_MODE_ENABLED CPed* pPed = FindPlayerPed(); if (pPed) { CTaskIncapacitated* taskIncapacitated = (CTaskIncapacitated*)pPed->GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_INCAPACITATED); if (taskIncapacitated) { if (taskIncapacitated->GetState() == CTaskIncapacitated::State_Incapacitated || taskIncapacitated->GetState() == CTaskIncapacitated::State_DownedRagdoll) { if (taskIncapacitated->GetFastGetupOffset() < CTaskIncapacitated::sm_Tunables.m_GetUpFasterLimit) { return true; } } } } #endif return false; } int CommandGetLocalPlayerTimeTilIncapacitationRecoveryMs() { #if CNC_MODE_ENABLED CPed* pPed = FindPlayerPed(); if (pPed) { CTaskIncapacitated* taskIncapacitated = (CTaskIncapacitated*)pPed->GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_INCAPACITATED); if (taskIncapacitated) { if (taskIncapacitated->GetState() == CTaskIncapacitated::State_Incapacitated || taskIncapacitated->GetState() == CTaskIncapacitated::State_DownedRagdoll) { return taskIncapacitated->CalculateTimeTilRecovery(); } } } #endif return 0; } int CommandGetLocalPlayerMaxTimeTilIncapacitationRecoveryMs() { #if CNC_MODE_ENABLED return CTaskIncapacitated::sm_Tunables.m_IncapacitateTime; #endif return 0; } bool CommandIsPlayerFreeForAmbientTask( int PlayerIndex ) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return false; CQueriableInterface * pQI = pPlayer->GetPedIntelligence()->GetQueriableInterface(); if(SCRIPT_VERIFY(pQI, "IS_PLAYER_FREE_FOR_AMBIENT_TASK - Cannot find quirable interface")) { bool bIsOnLadder = pQI->IsTaskCurrentlyRunning(CTaskTypes::TASK_CLIMB_LADDER) || pQI->IsTaskCurrentlyRunning(CTaskTypes::TASK_GO_TO_AND_CLIMB_LADDER); if(bIsOnLadder) return false; // If the query is about the local player and the local player is on a weapon pickup that could be picked up with 'LB' we don't want to trigger any script action. #if 0 // JG if (pPlayer->IsLocalPlayer() && CPickups::PlayerOnWeaponPickup) { return false; } #endif #if FPS_MODE_SUPPORTED if(pPlayer->IsFirstPersonShooterModeEnabledForPlayer()) { if(pPlayer->GetMotionData()->GetIsFPSIdle()) { return true; } } #endif // FPS_MODE_SUPPORTED return pQI->IsTaskCurrentlyRunning(CTaskTypes::TASK_PLAYER_IDLES, true ); } return false; } int CommandPlayerId() { if (NetworkInterface::IsGameInProgress()) { PhysicalPlayerIndex playerIndex = NetworkInterface::GetLocalPlayer()->GetPhysicalPlayerIndex(); scriptAssertf(playerIndex< MAX_NUM_PHYSICAL_PLAYERS,"Player index %d greater than max range MAX_NUM_PHYSICAL_PLAYERS %d",playerIndex,MAX_NUM_PHYSICAL_PLAYERS ); return playerIndex; } return 0; } int CommandPlayerPedId() { CPed* pPlayerPed = CGameWorld::FindLocalPlayer(); return pPlayerPed ? CTheScripts::GetGUIDFromEntity(*pPlayerPed) : 0; } int CommandGetPlayersLastVehicleNoSave() { int ReturnVehicleIndex = 0; if (CVehiclePopulation::ms_pInterestingVehicle) { ReturnVehicleIndex = CTheScripts::GetGUIDFromEntity(*CVehiclePopulation::ms_pInterestingVehicle); } else { ReturnVehicleIndex = NULL_IN_SCRIPTING_LANGUAGE; } return ReturnVehicleIndex; } s32 CommandGetPlayerIndex() { if (NetworkInterface::IsGameInProgress()) { return NetworkInterface::GetLocalPlayer()->GetPhysicalPlayerIndex(); } return 0; } int CommandConvertIntToPlayerIndex(int Arg) { return Arg; } int CommandConvertIntToParticipantIndex(int Arg) { return Arg; } int CommandGetTimeSincePlayerHitVehicle(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); return (pPlayer ? pPlayer->GetPlayerInfo()->GetTimeSincePlayerHitCar() : 0); } int CommandGetTimeSincePlayerHitPed(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); return (pPlayer ? pPlayer->GetPlayerInfo()->GetTimeSincePlayerHitPed() : 0); } int CommandGetTimeSincePlayerHitBuilding(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); return (pPlayer ? pPlayer->GetPlayerInfo()->GetTimeSincePlayerHitBuilding() : 0); } int CommandGetTimeSincePlayerHitObject(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); return (pPlayer ? pPlayer->GetPlayerInfo()->GetTimeSincePlayerHitObject() : 0); } int CommandGetTimeSincePlayerDroveOnPavement(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); return (pPlayer ? pPlayer->GetPlayerInfo()->GetTimeSincePlayerDroveOnPavement() : 0); } int CommandGetTimeSincePlayerRanLight(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); return (pPlayer ? pPlayer->GetPlayerInfo()->GetTimeSincePlayerRanLight() : 0); } int CommandGetTimeSincePlayerDroveAgainstTraffic(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); return (pPlayer ? pPlayer->GetPlayerInfo()->GetTimeSincePlayerDroveAgainstTraffic() : 0); } bool CommandHasForceCleanupOccurred(int ForceCleanupBitField) { GtaThread *pCurrentThread = CTheScripts::GetCurrentGtaScriptThread(); if(SCRIPT_VERIFY(pCurrentThread, "HAS_FORCE_CLEANUP_OCCURRED - failed to get current thread")) { pCurrentThread->SetForceCleanupReturnPoint(static_cast(ForceCleanupBitField)); } return false; } void CommandForceCleanup(int ForceCleanupBitField) { #if __BANK CDebugTextureViewerInterface::Close(true); #endif // __BANK u8 PreviousValueOfTriggered = CTheScripts::GetCurrentGtaScriptThread()->m_ForceCleanupTriggered; GtaThread::ForceCleanupForAllMatchingThreads(static_cast(ForceCleanupBitField), GtaThread::MATCH_ALL, "", static_cast(-1)); if ( (CTheScripts::GetCurrentGtaScriptThread()->m_ForceCleanupTriggered > 0) && (PreviousValueOfTriggered == 0) ) { // I'm not sure if this is really a problem but I'll Assert for now scriptAssertf(0, "%d %s has triggered its own ForceCleanup code by calling FORCE_CLEANUP", fwTimer::GetSystemFrameCount(), CTheScripts::GetCurrentScriptName()); } else { #if !__FINAL scrThread::PrePrintStackTrace(); #endif scriptDebugf1("%s [Frame=%d] : FORCE_CLEANUP has been called with flags %d", CTheScripts::GetCurrentScriptNameAndProgramCounter(), fwTimer::GetSystemFrameCount(), ForceCleanupBitField); } } void CommandForceCleanupForAllThreadsWithThisName(const char *pName, int ForceCleanupBitField) { u8 PreviousValueOfTriggered = CTheScripts::GetCurrentGtaScriptThread()->m_ForceCleanupTriggered; GtaThread::ForceCleanupForAllMatchingThreads(static_cast(ForceCleanupBitField), GtaThread::MATCH_SCRIPT_NAME, pName, static_cast(-1)); if ( (CTheScripts::GetCurrentGtaScriptThread()->m_ForceCleanupTriggered > 0) && (PreviousValueOfTriggered == 0) ) { // I'm not sure if this is really a problem but I'll Assert for now scriptAssertf(0, "%d %s has triggered its own ForceCleanup code by calling FORCE_CLEANUP_FOR_ALL_THREADS_WITH_THIS_NAME", fwTimer::GetSystemFrameCount(), CTheScripts::GetCurrentScriptName()); } else { #if !__FINAL scrThread::PrePrintStackTrace(); #endif scriptDebugf1("%s [Frame=%d] : FORCE_CLEANUP_FOR_ALL_THREADS_WITH_THIS_NAME has been called with flags %d", CTheScripts::GetCurrentScriptNameAndProgramCounter(), fwTimer::GetSystemFrameCount(), ForceCleanupBitField); } } void CommandForceCleanupForThreadWithThisID(s32 threadId, int ForceCleanupBitField) { u8 PreviousValueOfTriggered = CTheScripts::GetCurrentGtaScriptThread()->m_ForceCleanupTriggered; GtaThread::ForceCleanupForAllMatchingThreads(static_cast(ForceCleanupBitField), GtaThread::MATCH_THREAD_ID, "", static_cast(threadId)); if ( (CTheScripts::GetCurrentGtaScriptThread()->m_ForceCleanupTriggered > 0) && (PreviousValueOfTriggered == 0) ) { // I'm not sure if this is really a problem but I'll Assert for now scriptAssertf(0, "%d %s has triggered its own ForceCleanup code by calling FORCE_CLEANUP_FOR_THREAD_WITH_THIS_ID", fwTimer::GetSystemFrameCount(), CTheScripts::GetCurrentScriptName()); } else { #if !__FINAL scrThread::PrePrintStackTrace(); #endif scriptDebugf1("%s [Frame=%d] : FORCE_CLEANUP_FOR_THREAD_WITH_THIS_ID has been called with flags %d", CTheScripts::GetCurrentScriptNameAndProgramCounter(), fwTimer::GetSystemFrameCount(), ForceCleanupBitField); } } int CommandGetCauseOfMostRecentForceCleanup() { if (scriptVerifyf(CTheScripts::GetCurrentGtaScriptThread(), "GET_CAUSE_OF_MOST_RECENT_FORCE_CLEANUP - failed to get pointer to current script thread")) { return CTheScripts::GetCurrentGtaScriptThread()->m_CauseOfMostRecentForceCleanup; } return 0; } void CommandSetPlayerMoodNormal(int UNUSED_PARAM(PlayerIndex)) { scriptAssertf(0, "%d CommandSetPlayerMoodNormal has been deprecated, called by %s", fwTimer::GetSystemFrameCount(), CTheScripts::GetCurrentScriptName()); } void CommandSetPlayerNotAllowedEnterAnyVehicle(int PlayerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { if (SCRIPT_VERIFY(!(pPlayer->GetPlayerInfo()->GetVehiclePlayerIsRestrictedToEnter()), "The player has been set to enter a specific vehicle, make sure this is unset before calling this command") ) { pPlayer->GetPlayerInfo()->GetPlayerResetFlags().SetFlag(CPlayerResetFlags::PRF_NOT_ALLOWED_TO_ENTER_ANY_CAR); } } } void CommandSetPlayerMayOnlyEnterThisVehicle(int PlayerIndex, int iVehicleID) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { if (SCRIPT_VERIFY(!(pPlayer->GetPlayerInfo()->GetPlayerResetFlags().IsFlagSet(CPlayerResetFlags::PRF_NOT_ALLOWED_TO_ENTER_ANY_CAR)), "The command PLAYER_MAY_NOT_ENTER_ANY_VEHICLE has been called this frame, you cant do both")) { if(iVehicleID==0) { pPlayer->GetPlayerInfo()->SetMayOnlyEnterThisVehicle(NULL); } else { const CVehicle * pVehicle = CTheScripts::GetEntityToQueryFromGUID(iVehicleID); if (pVehicle) { pPlayer->GetPlayerInfo()->SetMayOnlyEnterThisVehicle(const_cast(pVehicle)); CTheScripts::GetCurrentGtaScriptThread()->SetHasUsedPedPathCommand(true); } } } } } bool CommandAwardAchievement(int achievementId) { return CLiveManager::GetAchMgr().AwardAchievement(achievementId); } bool CommandSetAchievementProgress(int achievementId, int progress) { return CLiveManager::GetAchMgr().SetAchievementProgress(achievementId, progress); } int CommandGetAchievementProgress(int achievementId) { return CLiveManager::GetAchMgr().GetAchievementProgress(achievementId); } bool CommandHasAchievementBeenPassed(int achievementId) { return CLiveManager::GetAchMgr().HasAchievementBeenPassed(achievementId); } bool CommandIsPlayerOnline() { return NetworkInterface::IsLocalPlayerOnline(); } float CommandGetPlayerNoiseMultiplier(int playerIndex) { const CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if (pPlayer) { const CPlayerInfo* pInfo = pPlayer->GetPlayerInfo(); if (Verifyf(pInfo, "Expected CPlayerInfo.")) { return pInfo->GetStealthMultiplier(); } } return 0.0f; } void CommandSetPlayerNoiseMultiplier(int playerIndex, float multiplier) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if (pPlayer) { CPlayerInfo* pInfo = pPlayer->GetPlayerInfo(); if (Verifyf(pInfo, "Expected CPlayerInfo")) { pInfo->SetNormalStealthMultiplier(multiplier); } } } void CommandSetPlayerSneakingNoiseMultiplier(int playerIndex, float multiplier) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if (pPlayer) { CPlayerInfo* pInfo = pPlayer->GetPlayerInfo(); if (Verifyf(pInfo, "Expected CPlayerInfo")) { pInfo->SetSneakingStealthMultiplier(multiplier); } } } bool CommandCanPedHearPlayer(int playerIndex, int pedIndex) { const CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); const CPed *pPed = CTheScripts::GetEntityToQueryFromGUID(pedIndex); if (pPlayer && pPed) { const CPlayerInfo* pInfo = pPlayer->GetPlayerInfo(); if (Verifyf(pInfo, "Expected CPlayerInfo")) { Vector3 vDistance = VEC3V_TO_VECTOR3(pPlayer->GetTransformPtr()->GetPosition() - pPed->GetTransformPtr()->GetPosition()); float fDistance2 = vDistance.Mag2(); if (rage::square(pInfo->GetStealthNoise()) < fDistance2) { return false; } else { return true; } } } return false; } #if __PPU namespace rage { extern rlNp g_rlNp; } #endif //__PPU bool CommandIsPlayerLoggingInNp() { #if __PPU return !g_rlNp.IsOnline(0) && g_rlNp.IsLoggedIn(0); #else return false; #endif //__PPU } bool CommandIsPlayerOnlineNp() { #if __PPU return g_rlNp.IsOnline(0); #else return false; #endif //__PPU } bool CommandIsPlayerOnlineGamespy() { gnetAssertf(0, "%s : IS_PLAYER_ONLINE_GAMESPY - Command is deprecated - remove call to command!", CTheScripts::GetCurrentScriptNameAndProgramCounter()); return false; } void CommandShowSigninUi(bool bForce) { #if RSG_ORBIS (void)bForce; gnetError("CommandShowSigninUi does not work on PS4!"); #else #if !__NO_OUTPUT gnetDisplay("%s - DISPLAY_SYSTEM_SIGNIN_UI - Showing signin UI from script.", CTheScripts::GetCurrentScriptNameAndProgramCounter()); scrThread::PrePrintStackTrace(); #endif CLiveManager::ShowSigninUi(bForce ? rlSystemUi::SIGNIN_FORCE : 0); #endif } bool CommandIsSytemUiShowing() { return CLiveManager::IsSystemUiShowing(); } void CommandSetPlayerInvincible(int PlayerIndex, bool bInvincible) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (CTheScripts::Frack() && pPlayer) { #if __BANK const bool bCurrentlyInvincibile = pPlayer->m_nPhysicalFlags.bNotDamagedByAnything == true; if (bCurrentlyInvincibile != bInvincible) { scriptDebugf1("%s - SET_PLAYER_INVINCIBLE changed to %s on %s, was previously %s. Stack trace for invincible/invincibility issues:", CTheScripts::GetCurrentScriptNameAndProgramCounter(), bInvincible ? "TRUE" : "FALSE", pPlayer->GetDebugName(), pPlayer->m_nPhysicalFlags.bNotDamagedByAnything ? "TRUE" : "FALSE"); scrThread::PrePrintStackTrace(); } #endif pPlayer->m_nPhysicalFlags.bNotDamagedByAnything = bInvincible; } } bool CommandGetPlayerInvincible(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { return pPlayer->m_nPhysicalFlags.bNotDamagedByAnything; } return false; } bool CommandGetPlayerDebugInvincible(int NOTFINAL_ONLY(PlayerIndex)) { #if !__FINAL CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { return pPlayer->IsDebugInvincible(); } #endif return false; } void CommandSetPlayerInvincibleButHasReactions(int PlayerIndex, bool bInvincible) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { #if __BANK const bool bCurrentlyInvincibile = pPlayer->m_nPhysicalFlags.bNotDamagedByAnythingButHasReactions == true; if (bCurrentlyInvincibile != bInvincible) { scriptDebugf1("%s - SET_PLAYER_INVINCIBLE_BUT_HAS_REACTIONS changed to %s on %s, was previously %s. Stack trace for invincible/invincibility issues:", CTheScripts::GetCurrentScriptNameAndProgramCounter(), bInvincible ? "TRUE" : "FALSE", pPlayer->GetDebugName(), pPlayer->m_nPhysicalFlags.bNotDamagedByAnythingButHasReactions ? "TRUE" : "FALSE"); scrThread::PrePrintStackTrace(); } #endif pPlayer->m_nPhysicalFlags.bNotDamagedByAnythingButHasReactions = bInvincible; } } void CommandAllowPlayerToCarryNonMissionObjects(int PlayerIndex, bool bAllowedToCarry) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetPlayerDataAllowedToPickUpNonMissionObjects( bAllowedToCarry ); } } void CommandSetPlayerCanCollectDroppedMoney(int PlayerIndex, bool bCanCollect) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetPlayerDataCanCollectMoneyPickups( bCanCollect ); } } void CommandSetPlayerCanUseVehicleSearchLight(int PlayerIndex, bool bCanUseSearchLight) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetCanUseSearchLight( bCanUseSearchLight ); } } void CommandRemovePlayerHelmet(int PlayerIndex, bool ForceRemove) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { // setting this flag false should mean the task CTaskSimpleTakeOffHelmet will remove the helmet pPlayer->SetPedConfigFlag( CPED_CONFIG_FLAG_DontTakeOffHelmet, false ); if(ForceRemove && pPlayer->GetHelmetComponent()) { pPlayer->GetHelmetComponent()->DisableHelmet(); } } } void CommandGivePlayerRagdollControl(int PlayerIndex, bool bGiveControl) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { if(SCRIPT_VERIFY(pPlayer->GetUsingRagdoll(), "GIVE_PLAYER_RAGDOLL_CONTROL - Player ped is not ragdolling")) { pPlayer->GetPlayerInfo()->SetPlayerDataHasControlOfRagdoll( bGiveControl ); } } } void CommandSetPlayerLockon(int PlayerIndex, bool bEnable) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { scriptDebugf1("SET_PLAYER_LOCKON - Flag DisablePlayerLockon=%s - %s", !bEnable ? "TRUE" : "FALSE", CTheScripts::GetCurrentScriptNameAndProgramCounter()); pPlayer->SetPedConfigFlag( CPED_CONFIG_FLAG_DisablePlayerLockon, !bEnable ); } } void CommandAllowLockonToFriendlyPlayers(int PlayerIndex, bool Allow) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { pPlayer->SetPedConfigFlag( CPED_CONFIG_FLAG_AllowLockonToFriendlyPlayers, Allow ); } } void CommandSetPlayerTargetingMode(int mode) { Assertf(mode >= 0 && mode < CPedTargetEvaluator::MAX_TARGETING_OPTIONS, "Invalid targeting mode assigned from script command! %d", mode); if(mode>=0 && mode < CPedTargetEvaluator::MAX_TARGETING_OPTIONS) { CPauseMenu::SetMenuPreference(PREF_TARGET_CONFIG, mode); CProfileSettings& settings = CProfileSettings::GetInstance(); settings.Set(CProfileSettings::TARGETING_MODE, CPauseMenu::GetMenuPreference(PREF_TARGET_CONFIG)); } } int CommandGetPlayerTargetingMode() { CProfileSettings& settings = CProfileSettings::GetInstance(); int iTargetingMode = settings.GetInt(CProfileSettings::TARGETING_MODE); return iTargetingMode; } void CommandSetPlayerTargetLevel(int level) { CPlayerPedTargeting::SetPlayerTargetLevel(static_cast(level)); } bool CommandIsUsingFPSThirdPersonCover() { return CPauseMenu::GetMenuPreference(PREF_FPS_THIRD_PERSON_COVER) ? true : false; } bool CommandIsUsingHoodCamera() { return CPauseMenu::GetMenuPreference(PREF_HOOD_CAMERA) ? true : false; } int CommandWhatWillPlayerPickup(int UNUSED_PARAM(PlayerIndex)) { #if 0 // CS CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { CWeapon* pPlayerWeapon = pPlayer->GetWeaponMgr()->GetWeaponFromObject(); if(pPlayerWeapon && pPlayerWeapon->GetWeaponType()!=WEAPONTYPE_OBJECT && !pPlayer->HasPhoneEquipped() && !pPlayer->GetWeaponMgr()->GetWeaponObjectBackup()) { CObject* pPickupObject = CTaskPlayerOnFoot::CheckForObjectToPickup(pPlayer); if(pPickupObject) { // return CObject::GetPool()->GetIndex(pPickupObject); return CTheScripts::GetGUIDFromEntity(*pPickupObject); } } } #endif // 0 return NULL_IN_SCRIPTING_LANGUAGE; } void CommandClearPlayerHasDamagedAtLeastOnePed(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->bHasDamagedAtLeastOnePed = false; } } bool CommandHasPlayerDamagedAtLeastOnePed(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); return (pPlayer && pPlayer->GetPlayerInfo()->bHasDamagedAtLeastOnePed); } void CommandClearPlayerHasDamagedAtLeastOneNonAnimalPed(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->bHasDamagedAtLeastOneNonAnimalPed = false; } } bool CommandHasPlayerDamagedAtLeastOneNonAnimalPed(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); return (pPlayer && pPlayer->GetPlayerInfo()->bHasDamagedAtLeastOneNonAnimalPed); } void CommandForceAirDragMultForPlayersVehicle(int PlayerIndex, float fDragMult) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { if(SCRIPT_VERIFY(fDragMult >= 1.0, "SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE - Mult must be 1.0 or greater")) { if(SCRIPT_VERIFY(fDragMult <= 50.0, "SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE - Mult must be less than 50.0")) { pPlayer->GetPlayerInfo()->m_fForceAirDragMult = fDragMult; } } } } void CommandSetSwimMultiplierForPlayer(int PlayerIndex, float fMultiplier) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { if (SCRIPT_VERIFY(fMultiplier >= 1.0, "SET_SWIM_MULTIPLIER_FOR_PLAYER - Multiplier must be 1.0 or greater")) { if (SCRIPT_VERIFY(fMultiplier < 1.5, "SET_SWIM_MULTIPLIER_FOR_PLAYER - Multiplier must be less than 1.5")) { pPlayer->GetPlayerInfo()->m_fSwimSpeedMultiplier = fMultiplier; } } } } void CommandSetRunSprintMultiplierForPlayer(int PlayerIndex, float fMultiplier) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { if (SCRIPT_VERIFY(fMultiplier >= 1.0, "SET_RUN_SPRINT_MULTIPLIER_FOR_PLAYER - Multiplier must be 1.0 or greater")) { if (SCRIPT_VERIFY(fMultiplier < 1.5, "SET_RUN_SPRINT_MULTIPLIER_FOR_PLAYER - Multiplier must be less than 1.5")) { pPlayer->GetPlayerInfo()->SetRunSprintSpeedMultiplier(fMultiplier); } } } } int CommandGetTimeSinceLastArrest() { if (CGameLogic::GetTimeOfLastRespawnAfterArrest() == 0) { return -1; } return fwTimer::GetTimeInMilliseconds() - CGameLogic::GetTimeOfLastRespawnAfterArrest(); } int CommandGetTimeSinceLastDeath() { if (CGameLogic::GetTimeOfLastRespawnAfterDeath() == 0) { return -1; } return fwTimer::GetTimeInMilliseconds() - CGameLogic::GetTimeOfLastRespawnAfterDeath(); } int CommandGetTrainPlayerWouldEnter(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); int ReturnVehicleIndex = NULL_IN_SCRIPTING_LANGUAGE; if (pPlayer) { SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "GET_TRAIN_PLAYER_WOULD_ENTER - Check player character is alive this frame"); CVehicle *pVeh = pPlayer->GetPlayerInfo()->ScanForTrainToEnter(pPlayer, VEC3V_TO_VECTOR3(pPlayer->GetTransform().GetB()), false ); if (pVeh) { ReturnVehicleIndex = CTheScripts::GetGUIDFromEntity(*pVeh); } } return ReturnVehicleIndex; } void CommandSetDrawPlayerComponent(int componentIdx, bool bEnable){ if (componentIdx >= 0){ CPedVariationStream::SetDrawPlayerComp(componentIdx, bEnable); } } bool CommandDoesMainPlayerExist() { return CGameWorld::GetMainPlayerInfo() != NULL; } //**************************************************************** // CommandAssistedMovementOpenRoute - these are zero-based from // 0..CAssistedMovementRouteStore::MAX_SCRIPTED_ROUTES // Opening a route allows editing void CommandAssistedMovementOpenRoute(const int iRouteIndex) { if(SCRIPT_VERIFY(iRouteIndex >= 0 && iRouteIndex < CAssistedMovementRouteStore::MAX_SCRIPTED_ROUTES, "ASSISTED_MOVEMENT_OPEN_ROUTE - route index out of range")) { if(SCRIPT_VERIFY(CAssistedMovementRouteStore::GetScriptRouteEditIndex()==-1, "ASSISTED_MOVEMENT_OPEN_ROUTE - a route is already being edited")) { CAssistedMovementRouteStore::SetScriptRouteEditIndex(iRouteIndex); } } } //******************************************************************** // CommandAssistedMovementCloseRoute - closes the route being edited void CommandAssistedMovementCloseRoute() { int iScriptRouteIndex = CAssistedMovementRouteStore::GetScriptRouteEditIndex(); if(SCRIPT_VERIFY(iScriptRouteIndex!=-1, "ASSISTED_MOVEMENT_CLOSE_ROUTE - no route is being edited")) { // When closing the route, calculate the route hash. Yes, these don't change since the index // is fixed - but doing it here is a precaution, because the hash is cleared when the route is. const int iActualIndex = iScriptRouteIndex + CAssistedMovementRouteStore::FIRST_SCRIPTED_ROUTE; CAssistedMovementRoute * pRoute = CAssistedMovementRouteStore::GetRoute(iActualIndex); const u32 iRouteHash = CAssistedMovementRouteStore::CalcScriptedRouteHash(iScriptRouteIndex); pRoute->SetPathStreetNameHash(iRouteHash); CAssistedMovementRouteStore::SetScriptRouteEditIndex(-1); } } //********************************************************************* // CommandAssistedMovementCloseRoute - clears the route being edited void CommandAssistedMovementFlushRoute() { if(SCRIPT_VERIFY(CAssistedMovementRouteStore::GetScriptRouteEditIndex()!=-1, "ASSISTED_MOVEMENT_FLUSH_ROUTE - no route is being edited")) { const int iIndex = CAssistedMovementRouteStore::GetScriptRouteEditIndex() + CAssistedMovementRouteStore::FIRST_SCRIPTED_ROUTE; CAssistedMovementRoute * pRoute = CAssistedMovementRouteStore::GetRoute(iIndex); pRoute->Clear(); } } //**************************************************************************** // CommandAssistedMovementCloseRoute - adds a point to the route being edited // x,y,z : the position // fWidth : path radius // fTension : 0.0=weak, 0.5=default, 1.0=strong // bNonLeave : no way of leaving or turning on this route void CommandAssistedMovementAddPoint(const float x, const float y, const float z, const float fWidth, float fTension, const s32 iFlags) { if(SCRIPT_VERIFY(CAssistedMovementRouteStore::GetScriptRouteEditIndex()!=-1, "ASSISTED_MOVEMENT_ADD_POINT - no route is being edited")) { const int iIndex = CAssistedMovementRouteStore::GetScriptRouteEditIndex() + CAssistedMovementRouteStore::FIRST_SCRIPTED_ROUTE; CAssistedMovementRoute * pRoute = CAssistedMovementRouteStore::GetRoute(iIndex); SCRIPT_ASSERT(fTension >= 0.0f && fTension <= 1.0f, "ASSISTED_MOVEMENT_ADD_POINT - fTension param must be within range 0.0 to 1.0"); fTension = Clamp(fTension, 0.0f, 1.0f); if(SCRIPT_VERIFY(pRoute->GetSize() < CAssistedMovementRoute::MAX_NUM_ROUTE_ELEMENTS, "ASSISTED_MOVEMENT_ADD_POINT - max num points exceeded")) { pRoute->AddPoint(Vector3(x,y,z), fWidth, iFlags, fTension*2.0f); } } } //******************************************************************************* // CommandAssistedMovementCloseRoute - sets the width of the route being edited void CommandAssistedMovementSetWidth(const float UNUSED_PARAM(fWidth)) { Assertf(false, "ASSISTED_MOVEMENT_SET_WIDTH has been removed. This value is now set in the ASSISTED_MOVEMENT_ADD_POINT command."); } //******************************************************************************************* // CommandAssistedMovementIsOnAnyRoute - returns whether the player is attached to any route bool CommandAssistedMovementIsOnAnyRoute() { CPed * pPlayer = CGameWorld::FindLocalPlayer(); if(pPlayer) { CTaskMovePlayer * pPlayerMove = (CTaskMovePlayer*)pPlayer->GetPedIntelligence()->FindTaskActiveMovementByType(CTaskTypes::TASK_MOVE_PLAYER); if(pPlayerMove) { CPlayerAssistedMovementControl * pControl = pPlayerMove->GetAssistedMovementControl(); if(pControl) { const CAssistedMovementRoute & route = pControl->GetRoute(); if(route.GetSize() && pControl->GetIsUsingRoute()) { return true; } } } } return false; } //******************************************************************************************* // CommandAssistedMovementIsOnScriptedRoute - returns whether the player is attached to a // scripted route. If so it will return the scripted route index (0..MAX_SCRIPTED_ROUTES), // otherwise it will return -1 int CommandAssistedMovementIsOnScriptedRoute() { CPed * pPlayer = CGameWorld::FindLocalPlayer(); if(pPlayer) { CTaskMovePlayer * pPlayerMove = (CTaskMovePlayer*)pPlayer->GetPedIntelligence()->FindTaskActiveMovementByType(CTaskTypes::TASK_MOVE_PLAYER); if(pPlayerMove) { CPlayerAssistedMovementControl * pControl = pPlayerMove->GetAssistedMovementControl(); if(pControl) { const CAssistedMovementRoute & route = pControl->GetRoute(); if(route.GetSize() && pControl->GetIsUsingRoute()) { for(int r=0; rGetPathStreetNameHash()) { return r; } } } } } } return -1; } void CommandSetPlayerForcedAim(int PlayerIndex, bool ForcedAim) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "SET_PLAYER_FORCED_AIM - Check player character is alive this frame"); pPlayer->SetPedConfigFlag( CPED_CONFIG_FLAG_ForcedAim, ForcedAim ); } void CommandSetPlayerForcedZoom(int PlayerIndex, bool ForcedZoom) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer || !pPlayer->GetPlayerInfo()) return; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "SET_PLAYER_FORCED_ZOOM - Check player character is alive this frame"); if (ForcedZoom) pPlayer->GetPlayerInfo()->GetPlayerResetFlags().SetFlag(CPlayerResetFlags::PRF_FORCED_ZOOM); else pPlayer->GetPlayerInfo()->GetPlayerResetFlags().UnsetFlag(CPlayerResetFlags::PRF_FORCED_ZOOM); } void CommandSetPlayerForceSkipAimIntro(int PlayerIndex, bool SkipIntro) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer || !pPlayer->GetPlayerInfo()) return; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "SET_PLAYER_FORCE_SKIP_AIM_INTRO - Check player character is alive this frame"); if (SkipIntro) pPlayer->GetPlayerInfo()->GetPlayerResetFlags().SetFlag(CPlayerResetFlags::PRF_FORCE_SKIP_AIM_INTRO); else pPlayer->GetPlayerInfo()->GetPlayerResetFlags().UnsetFlag(CPlayerResetFlags::PRF_FORCE_SKIP_AIM_INTRO); } void CommandSetDisableAmbientMeleeMove(int PlayerIndex, bool bDisable) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!pPlayer) return; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "SET_DISABLE_AMBIENT_MELEE_MOVE - Check player character is alive this frame"); pPlayer->GetPlayerInfo()->SetPlayerDataAmbientMeleeMoveDisabled( bDisable ); } void CommandSetPlayerMaxMoveBlendRatio(int PlayerIndex, float fMaxMoveBlendRatio) { scriptAssertf(0, "%s: (SET_PLAYER_MAX_MOVE_BLEND_RATIO - this is being deprecated. Use SET_PED_MAX_MOVE_BLEND_RATIO instead", CTheScripts::GetCurrentScriptNameAndProgramCounter()); CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (!SCRIPT_VERIFY(pPlayer,"Could not find player")) return; SCRIPT_ASSERT(pPlayer->m_nDEflags.bCheckedForDead == TRUE, "SET_PLAYER_MAX_MOVE_BLEND_RATIO - Check player character is alive this frame"); pPlayer->GetMotionData()->SetScriptedMaxMoveBlendRatio(fMaxMoveBlendRatio); } void CommandSetInvertPlayerWalk(bool invert) { CPed * pPlayer = CGameWorld::FindLocalPlayer(); if(pPlayer) { CControl *pControl = pPlayer->GetControlFromPlayer(); if(pControl) { pControl->SetPedWalkInverted(invert); } } } void CommandSetInvertPlayerLook(bool invert) { CPed * pPlayer = CGameWorld::FindLocalPlayer(); if(pPlayer) { CControl *pControl = pPlayer->GetControlFromPlayer(); if(pControl) { pControl->SetPedLookInverted(invert); } } } void CommandDisablePlayerFiring(int UNUSED_PARAM(PlayerIndex), bool UNUSED_PARAM(bDisable)) { CControlMgr::GetMainPlayerControl().DisableInput(INPUT_ATTACK); CControlMgr::GetMainPlayerControl().DisableInput(INPUT_ATTACK2); CControlMgr::GetMainPlayerControl().DisableInput(INPUT_VEH_ATTACK); CControlMgr::GetMainPlayerControl().DisableInput(INPUT_VEH_ATTACK2); } void CommandDisablePlayerThrowingGrenadeWhileUsingGun() { CPed * pPlayer = CGameWorld::FindLocalPlayer(); if(pPlayer) { pPlayer->SetPedResetFlag(CPED_RESET_FLAG_DisableProjectileThrowsWhileAimingGun, true); } } void CommandSetPlayerJackSpeed(int PlayerIndex, int JackSpeed) { scriptAssertf(0, "SET_PLAYER_JACK_SPEED is deprecated, please speak to an AI coder if you need this functionality"); if (!SCRIPT_VERIFY(JackSpeed >= 75, "Trying to set jack speed to less than 75% which would look odd")) return; if (!SCRIPT_VERIFY(JackSpeed <= 125, "Trying to set jack speed to more than 125% which would look odd")) return; CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { pPlayer->GetPlayerInfo()->JackSpeed = static_cast(JackSpeed); } } void CommandSetPlayerStealthSpeed(int PlayerIndex, int StealthSpeed) { static const int MIN_STEALTH_SPEED = 80; static const int MAX_STEALTH_SPEED = 120; scriptAssertf(StealthSpeed >= MIN_STEALTH_SPEED, "%s: Trying to set stealth speed to less than %d which would look odd", CTheScripts::GetCurrentScriptNameAndProgramCounter(), MIN_STEALTH_SPEED); scriptAssertf(StealthSpeed <= MAX_STEALTH_SPEED, "%s: Trying to set stealth speed to more than %d which would look odd", CTheScripts::GetCurrentScriptNameAndProgramCounter(), MAX_STEALTH_SPEED); CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { StealthSpeed = Clamp(StealthSpeed, MIN_STEALTH_SPEED, MAX_STEALTH_SPEED); pPlayer->GetPlayerInfo()->StealthRate = static_cast(StealthSpeed) / 100.f; } } void CommandSetPlayerMaxArmour(int PlayerIndex, int MaxArmour) { if (!SCRIPT_VERIFY(MaxArmour >= 0, "Trying to set max armour to less than zero!")) return; CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { pPlayer->GetPlayerInfo()->MaxArmour = static_cast(MaxArmour); } } int CommandGetPlayerSelectedAbilitySlot(int PlayerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (scriptVerifyf(pPlayer, "GET_PLAYER_SELECTED_ABILITY_SLOT - No local player found with index %d!", PlayerIndex)) { return (int)pPlayer->GetSelectedAbilitySlot(); } else { return -1; } } int CommandGetLocalPlayerSpecialAbilityMP(int abilitySlot) { SCRIPT_ASSERT(NetworkInterface::IsGameInProgress(), "GET_LOCAL_PLAYER_SPECIAL_ABILITY_MP - Called on a SP game!"); const CPed* pPlayer = CGameWorld::FindLocalPlayer(); const CPlayerInfo* pPlayerInfo = pPlayer->GetPlayerInfo(); const bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayerInfo, "GET_LOCAL_PLAYER_SPECIAL_ABILITY_MP - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "GET_LOCAL_PLAYER_SPECIAL_ABILITY_MP - invalid ability slot: %d", abilitySlot)) { return pPlayerInfo->GetMPSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); } return -1; } void CommandSetSpecialAbilityMP(int PlayerIndex, int abilityType, int abilitySlot = 0) { SCRIPT_ASSERT(NetworkInterface::IsGameInProgress(), "SET_SPECIAL_ABILITY_MP - Called on a SP game!"); CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if(scriptVerifyf(pPlayer, "SET_SPECIAL_ABILITY_MP - No local player found with index %d!", PlayerIndex)) { CPlayerInfo *pPlayerInfo = pPlayer->GetPlayerInfo(); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayerInfo, "SET_SPECIAL_ABILITY_MP - Player with no player info!") && scriptVerifyf(abilityType >= SAT_NONE && abilityType < SAT_MAX, "SET_SPECIAL_ABILITY_MP - Passed wrong ability input: %d", abilityType) && scriptVerifyf(bIsValidSpecialAbilitySlot, "SET_SPECIAL_ABILITY_MP - invalid ability slot: %d", abilitySlot)) { pPlayerInfo->SetMPSpecialAbility( static_cast(abilityType), (ePlayerSpecialAbilitySlot)abilitySlot ); #if __ASSERT fwTimer::SetTimescaleIsBeingModifiedByScript(true); scriptDebugf1("Special ability %d set on player %s for ability slot %d", abilityType, pPlayer->GetLogName(), abilitySlot); #endif } } } bool CommandCanSpecialAbilityBeActivated(int playerIndex, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "CAN_SPECIAL_ABILITY_BE_ACTIVATED - No local player found with index %d!", playerIndex) && scriptVerifyf(bIsValidSpecialAbilitySlot, "CAN_SPECIAL_ABILITY_BE_ACTIVATED - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* ability = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if (ability) { return ability->CanBeActivated(); } } return false; } bool CommandCanSpecialAbilityBeSelectedInArcadeMode(int playerIndex, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "CAN_SPECIAL_ABILITY_BE_SELECTED_IN_ARCADE_MODE - No local player found with index %d!", playerIndex) && scriptVerifyf(bIsValidSpecialAbilitySlot, "CAN_SPECIAL_ABILITY_BE_SELECTED_IN_ARCADE_MODE - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* ability = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if (ability) { return ability->CanBeSelectedInArcadeMode(); } } return false; } void CommandSpecialAbilityActivate(int playerIndex, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "SPECIAL_ABILITY_ACTIVATE - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "SPECIAL_ABILITY_ACTIVATE - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "SPECIAL_ABILITY_ACTIVATE - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* ability = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if (ability) { #if !__NO_OUTPUT bool activated = ability->Activate(); scriptDebugf1("Special ability activated: %s (on player: %s)", activated ? "TRUE" : "FALSE", pPlayer->GetLogName()); #else ability->Activate(); #endif } } } void CommandSpecialAbilityDeactivate(int playerIndex, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "SPECIAL_ABILITY_DEACTIVATE - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "SPECIAL_ABILITY_DEACTIVATE - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "SPECIAL_ABILITY_DEACTIVATE - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* ability = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if (ability) { ability->Deactivate(); } } } void CommandSpecialAbilityDeactivateFast(int playerIndex, int abilitySlot = 0) { if (NetworkInterface::IsInCopsAndCrooks()) { return; } CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "SPECIAL_ABILITY_DEACTIVATE_FAST - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "SPECIAL_ABILITY_DEACTIVATE_FAST - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "SPECIAL_ABILITY_DEACTIVATE_FAST - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* ability = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if (ability) { ability->DeactivateNoFadeOut(); } } } void CommandSpecialAbilityDeactivateMP(int playerIndex, int abilitySlot = 0) { #if __ASSERT fwTimer::SetTimescaleIsBeingModifiedByScript(false); #endif CommandSpecialAbilityDeactivateFast(playerIndex); CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "SPECIAL_ABILITY_DEACTIVATE_MP - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "SPECIAL_ABILITY_DEACTIVATE_MP - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "SPECIAL_ABILITY_DEACTIVATE_MP - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* ability = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if (ability) { ability->StopFx(); scriptDebugf1("Special ability deactivated on player %s", pPlayer->GetLogName()); } } } void CommandSpecialAbilityReset(int playerIndex, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "SPECIAL_ABILITY_RESET - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "SPECIAL_ABILITY_RESET - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "SPECIAL_ABILITY_RESET - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* ability = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if (ability) { ability->Reset(); } } } void CommandSpecialAbilityChargeOnMissionFailed(int playerIndex, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "SPECIAL_ABILITY_CHARGE_ON_MISSION_FAILED - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "SPECIAL_ABILITY_CHARGE_ON_MISSION_FAILED - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "SPECIAL_ABILITY_CHARGE_ON_MISSION_FAILED - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbilityManager::ChargeEvent(ACET_MISSION_FAILED, pPlayer); } } void CommandSpecialAbilityChargeSmall(int playerIndex, bool increment, bool ignoreActive, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "SPECIAL_ABILITY_CHARGE_SMALL - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "SPECIAL_ABILITY_CHARGE_SMALL - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "SPECIAL_ABILITY_CHARGE_SMALL - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* specialAbility = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if(scriptVerifyf(specialAbility, "SPECIAL_ABILITY_CHARGE_SMALL called on player with no special ability in slot %d!", abilitySlot)) { if (increment) { specialAbility->AddSmallCharge(ignoreActive); } else { specialAbility->RemoveSmallCharge(ignoreActive); } } } } void CommandSpecialAbilityChargeMedium(int playerIndex, bool increment, bool ignoreActive, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "SPECIAL_ABILITY_CHARGE_MEDIUM - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "SPECIAL_ABILITY_CHARGE_MEDIUM - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "SPECIAL_ABILITY_CHARGE_MEDIUM - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* specialAbility = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if(scriptVerifyf(specialAbility, "SPECIAL_ABILITY_CHARGE_MEDIUM called on player with no special ability in slot %d!", abilitySlot)) { if (increment) { specialAbility->AddMediumCharge(ignoreActive); } else { specialAbility->RemoveMediumCharge(ignoreActive); } } } } void CommandSpecialAbilityChargeLarge(int playerIndex, bool increment, bool ignoreActive, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "SPECIAL_ABILITY_CHARGE_LARGE - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "SPECIAL_ABILITY_CHARGE_LARGE - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "SPECIAL_ABILITY_CHARGE_LARGE - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* specialAbility = pPlayer->GetSpecialAbility(); if(scriptVerifyf(specialAbility, "SPECIAL_ABILITY_CHARGE_LARGE called on player with no special ability in slot %d!", abilitySlot)) { if (increment) { specialAbility->AddLargeCharge(ignoreActive); } else { specialAbility->RemoveLargeCharge(ignoreActive); } } } } void CommandSpecialAbilityChargeContinuous(int playerIndex, bool ignoreActive, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "SPECIAL_ABILITY_CHARGE_CONTINUOUS - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "SPECIAL_ABILITY_CHARGE_CONTINUOUS - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "SPECIAL_ABILITY_CHARGE_CONTINUOUS - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* specialAbility = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if(scriptVerifyf(specialAbility, "SPECIAL_ABILITY_CHARGE_CONTINUOUS called on player with no special ability in slot %d!", abilitySlot)) { specialAbility->AddToMeterContinuous(ignoreActive, 1.f); } } } void CommandSpecialAbilityChargeAbsolute(int playerIndex, int charge, bool ignoreActive, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "SPECIAL_ABILITY_CHARGE_CONTINUOUS - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "SPECIAL_ABILITY_CHARGE_CONTINUOUS - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "SPECIAL_ABILITY_CHARGE_CONTINUOUS - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* specialAbility = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if(scriptVerifyf(specialAbility, "SPECIAL_ABILITY_CHARGE_ABSOLUTE called on player with no special ability in slot %d!", abilitySlot)) { specialAbility->AddToMeter(charge, ignoreActive); } } } void CommandSpecialAbilityChargeNormalized(int playerIndex, float charge, bool ignoreActive, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "SPECIAL_ABILITY_CHARGE_NORMALIZED - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "SPECIAL_ABILITY_CHARGE_NORMALIZED - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "SPECIAL_ABILITY_CHARGE_NORMALIZED - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* specialAbility = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if(scriptVerifyf(specialAbility, "SPECIAL_ABILITY_CHARGE_NORMALIZED called on player with no special ability in slot %d!", abilitySlot)) { specialAbility->AddToMeterNormalized(charge, ignoreActive, false); } } } void CommandSpecialAbilityFillMeter(int playerIndex, bool ignoreActive, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "SPECIAL_ABILITY_FILL_METER - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "SPECIAL_ABILITY_FILL_METER - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "SPECIAL_ABILITY_FILL_METER - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* specialAbility = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if(scriptVerifyf(specialAbility, "SPECIAL_ABILITY_FILL_METER called on player with no special ability in slot %d!", abilitySlot)) { specialAbility->FillMeter(ignoreActive); } } } void CommandSpecialAbilityDepleteMeter(int playerIndex, bool ignoreActive, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "SPECIAL_ABILITY_DEPLETE_METER - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "SPECIAL_ABILITY_DEPLETE_METER - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "SPECIAL_ABILITY_DEPLETE_METER - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* specialAbility = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if(scriptVerifyf(specialAbility, "SPECIAL_ABILITY_DEPLETE_METER called on player with no special ability in slot! %d", abilitySlot)) { specialAbility->DepleteMeter(ignoreActive); } } } void CommandSpecialAbilityLock(int pedModelNameHash, bool isArcadePlayer) { CPlayerSpecialAbilityManager::SetAbilityStatus((u32)pedModelNameHash, false, isArcadePlayer); } void CommandSpecialAbilityUnlock(int pedModelNameHash, bool isArcadePlayer) { CPlayerSpecialAbilityManager::SetAbilityStatus((u32)pedModelNameHash, true, isArcadePlayer); } float CommandGetSpecialAbilityRemainingPercentage(int playerIndex, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "GET_SPECIAL_ABILITY_REMAINING_PERCENTAGE - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "GET_SPECIAL_ABILITY_REMAINING_PERCENTAGE - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "GET_SPECIAL_ABILITY_REMAINING_PERCENTAGE - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* specialAbility = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(specialAbility, "GET_SPECIAL_ABILITY_REMAINING_PERCENTAGE called on player with no special ability in slot! %d", abilitySlot)) { return specialAbility->GetRemainingPercentageForDisplay(); } } return 0.f; } bool CommandIsSpecialAbilityUnlocked(int pedModelNameHash) { return CPlayerSpecialAbilityManager::IsAbilityUnlocked(pedModelNameHash); } bool CommandIsSpecialAbilityActive(int playerIndex, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "IS_SPECIAL_ABILITY_ACTIVE - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "IS_SPECIAL_ABILITY_ACTIVE - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "IS_SPECIAL_ABILITY_ACTIVE - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* specialAbility = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if(scriptVerifyf(specialAbility, "IS_SPECIAL_ABILITY_ACTIVE called on player with no special ability in slot %d!", abilitySlot)) { return specialAbility->IsActive(); } } return false; } bool CommandIsSpecialAbilityMeterFull(int playerIndex, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "IS_SPECIAL_ABILITY_METER_FULL - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "IS_SPECIAL_ABILITY_METER_FULL - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "IS_SPECIAL_ABILITY_METER_FULL - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* specialAbility = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if(scriptVerifyf(specialAbility, "IS_SPECIAL_ABILITY_METER_FULL called on player with no special ability in slot %d!", abilitySlot)) { return specialAbility->IsMeterFull(); } } return false; } void CommandEnableSpecialAbility(int playerIndex, bool enable, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "ENABLE_SPECIAL_ABILITY - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "ENABLE_SPECIAL_ABILITY - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "ENABLE_SPECIAL_ABILITY - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* specialAbility = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if(scriptVerifyf(specialAbility, "ENABLE_SPECIAL_ABILITY called on player with no special ability in slot %d!", abilitySlot)) { if (enable) specialAbility->EnableAbility(); else specialAbility->DisableAbility(); } } } bool CommandIsSpecialAbilityEnabled(int playerIndex, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "ENABLE_SPECIAL_ABILITY - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "ENABLE_SPECIAL_ABILITY - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "ENABLE_SPECIAL_ABILITY - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* specialAbility = pPlayer->GetSpecialAbility((ePlayerSpecialAbilitySlot)abilitySlot); if(scriptVerifyf(specialAbility, "IS_SPECIAL_ABILITY_ENABLED called on player with no special ability in slot %d!", abilitySlot)) { return specialAbility->IsAbilityEnabled(); } } return false; } void CommandSetSpecialAbilityMultiplier(float multiplier) { CPlayerSpecialAbilityManager::SetChargeMultiplier(multiplier); } void CommandUpdateSpecialAbilityFromStat(int playerIndex, int abilitySlot = 0) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "ENABLE_SPECIAL_ABILITY - No local player found with index %d!", playerIndex) && scriptVerifyf(pPlayer->GetPlayerInfo(), "ENABLE_SPECIAL_ABILITY - Player with no player info!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "ENABLE_SPECIAL_ABILITY - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* specialAbility = pPlayer->GetSpecialAbility(); if(scriptVerifyf(specialAbility, "UPDATE_SPECIAL_ABILITY_FROM_STAT called on player with no special ability in slot %d!", abilitySlot)) { return specialAbility->UpdateFromStat(); } } } void CommandStartLocalPlayerSpecialAbilityFX(int abilitySlot = 0) { CPed* pPlayer = CGameWorld::FindLocalPlayer(); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "START_LOCAL_PLAYER_SPECIAL_ABILITY_FX - No local player found!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "START_LOCAL_PLAYER_SPECIAL_ABILITY_FX - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* pSpecialAbility = pPlayer->GetSpecialAbility(); if (scriptVerifyf(pSpecialAbility, "START_LOCAL_PLAYER_SPECIAL_ABILITY_FX called on player with no special ability in slot %d!", abilitySlot)) { pSpecialAbility->StartFx(); } } } void CommandStopLocalPlayerSpecialAbilityFX(int abilitySlot = 0) { CPed* pPlayer = CGameWorld::FindLocalPlayer(); bool bIsValidSpecialAbilitySlot = CPed::IsValidSpecialAbilitySlot((ePlayerSpecialAbilitySlot)abilitySlot); if (scriptVerifyf(pPlayer, "STOP_LOCAL_PLAYER_SPECIAL_ABILITY_FX - No local player found!") && scriptVerifyf(bIsValidSpecialAbilitySlot, "STOP_LOCAL_PLAYER_SPECIAL_ABILITY_FX - invalid ability slot: %d", abilitySlot)) { CPlayerSpecialAbility* pSpecialAbility = pPlayer->GetSpecialAbility(); if (scriptVerifyf(pSpecialAbility, "STOP_LOCAL_PLAYER_SPECIAL_ABILITY_FX called on player with no special ability in slot %d!", abilitySlot)) { pSpecialAbility->StopFx(); } } } void CommandInitialiseArcadeAbilities(int playerIndex) { scriptDebugf1("%s : INITIALISE_ARCADE_ABILITIES - called for player %d", CTheScripts::GetCurrentScriptNameAndProgramCounter(), playerIndex); CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { pPlayer->GetPlayerInfo()->AccessArcadeAbilityEffects().Initialise(); } } void CommandActivateArcadeAbility(int playerIndex, int arcadeAbility) { scriptDebugf1("%s : ACTIVATE_ARCADE_ABILITY - called for player %d, arcadeAbility: %d", CTheScripts::GetCurrentScriptNameAndProgramCounter(), playerIndex, arcadeAbility); CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { pPlayer->GetPlayerInfo()->AccessArcadeAbilityEffects().SetIsActive(eArcadeAbilityEffectType(arcadeAbility), true); } } void CommandDeactivateArcadeAbility(int playerIndex, int arcadeAbility) { scriptDebugf1("%s : DEACTIVATE_ARCADE_ABILITY - called for player %d, arcadeAbility: %d", CTheScripts::GetCurrentScriptNameAndProgramCounter(), playerIndex, arcadeAbility); CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { pPlayer->GetPlayerInfo()->AccessArcadeAbilityEffects().SetIsActive(eArcadeAbilityEffectType(arcadeAbility), false); } } bool CommandIsArcadeAbilityActive(int playerIndex, int arcadeAbility) { CPed* pPlayer = FindPlayerPedByIndex(playerIndex); if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { return pPlayer->GetPlayerInfo()->GetArcadeAbilityEffects().GetIsActive(eArcadeAbilityEffectType(arcadeAbility)); } return false; } void CommandSetArcadeAbilityModifier(int playerIndex, int arcadeAbility, float arcadeAbilityModifier) { scriptDebugf1("%s : SET_ARCADE_ABILITY_MODIFIER - called for player %d, arcadeAbility: %d, mod: %f", CTheScripts::GetCurrentScriptNameAndProgramCounter(), playerIndex, arcadeAbility, arcadeAbilityModifier); CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { pPlayer->GetPlayerInfo()->AccessArcadeAbilityEffects().SetModifier(eArcadeAbilityEffectType(arcadeAbility), arcadeAbilityModifier); } } float CommandGetArcadeAbilityModifier(int playerIndex, int arcadeAbility) { CPed* pPlayer = FindPlayerPedByIndex(playerIndex); if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { return pPlayer->GetPlayerInfo()->GetArcadeAbilityEffects().GetModifier(eArcadeAbilityEffectType(arcadeAbility)); } return 0.f; } void CommandCleanupArcadeAbilities(int playerIndex) { scriptDebugf1("%s : CLEANUP_ARCADE_ABILITIES - called for player %d", CTheScripts::GetCurrentScriptNameAndProgramCounter(), playerIndex); CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { pPlayer->GetPlayerInfo()->AccessArcadeAbilityEffects().Cleanup(); } } int CommandGetArcadeTeam(int playerIndex) { const CPed* pPlayer = FindPlayerPedByIndex(playerIndex); eArcadeTeam arcadeTeam = eArcadeTeam::AT_NONE; if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { arcadeTeam = pPlayer->GetPlayerInfo()->GetArcadeInformation().GetTeam(); } return static_cast(arcadeTeam); } int CommandGetArcadeRole(int playerIndex) { const CPed* pPlayer = FindPlayerPedByIndex(playerIndex); eArcadeRole arcadeRole = eArcadeRole::AR_NONE; if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { arcadeRole = pPlayer->GetPlayerInfo()->GetArcadeInformation().GetRole(); } return static_cast(arcadeRole); } void CommandSetArcadeTeamAndRole(int playerIndex, int arcadeTeam, int arcadeRole) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { pPlayer->GetPlayerInfo()->AccessArcadeInformation().SetTeamAndRole(eArcadeTeam(arcadeTeam), eArcadeRole(arcadeRole)); } CNewHud::HandleCharacterChange(); } void CommandSetLocalPlayerArcadeActiveVehicle(int vehicleIndex) { CPed* pPlayer = CGameWorld::FindLocalPlayer(); CVehicle *pVehicle = CTheScripts::GetEntityToModifyFromGUID(vehicleIndex, CTheScripts::GUID_ASSERT_FLAG_NOT_CLONE); if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { if (pVehicle) { pPlayer->GetPlayerInfo()->AccessArcadeInformation().SetActiveVehicle(pVehicle); } } } bool CommandGetIsPlayerDrivingOnHighway(int playerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if( pPlayer && pPlayer->GetPedConfigFlag( CPED_CONFIG_FLAG_InVehicle ) && pPlayer->GetMyVehicle() && pPlayer->GetMyVehicle()->IsDriver(pPlayer) ) { if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { return pPlayer->GetPlayerInfo()->GetPlayerDataPlayerOnHighway() != 0; } } return false; } bool CommandGetIsPlayerDrivingWreckless(int playerIndex, int wrecklesstype) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if (pPlayer && pPlayer->GetPlayerInfo()) { switch ((eWrecklessType)wrecklesstype) { case DROVE_AGAINST_TRAFFIC: { return fwTimer::GetTimeInMilliseconds()-pPlayer->GetPlayerInfo()->GetPlayerDataLastTimePlayerDroveAgainstTraffic() < 2000; break; } case RAN_RED_LIGHT: { return fwTimer::GetTimeInMilliseconds()-pPlayer->GetPlayerInfo()->GetPlayerDataLastTimePlayerRanLight() < 2000; break; } case ON_PAVEMENT: { return fwTimer::GetTimeInMilliseconds()-pPlayer->GetPlayerInfo()->GetPlayerDataLastTimePlayerDroveOnPavement() < 500; break; } } } return false; } bool CommandGetIsMoppingAreaFreeInFrontOfPlayer(int playerIndex, float fMoppingRadius) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if( pPlayer && scriptVerifyf(pPlayer->GetCapsuleInfo(), "GET_IS_MOPPING_AREA_FREE_IN_FRONT_OF_PLAYER no capsule info!") ) { const CBipedCapsuleInfo *pCapsuleInfo = pPlayer->GetCapsuleInfo()->GetBipedCapsuleInfo(); if (Verifyf(pCapsuleInfo, "Mopping area requires a biped!")) { float fHeight = pCapsuleInfo->GetHeadHeight() - pCapsuleInfo->GetCapsuleZOffset(); float fRadius = MIN(fMoppingRadius, fHeight*0.45f); float fPlayerRadius = pCapsuleInfo->GetRadius(); float fCentreForwards = fPlayerRadius + fRadius - 0.01f; // So it slightly overlaps the players capsule to avoid a wall being between the two. Vector3 vCapsuleStart = VEC3V_TO_VECTOR3(pPlayer->GetTransform().GetB()) * fCentreForwards; vCapsuleStart += VEC3V_TO_VECTOR3(pPlayer->GetTransform().GetPosition()); vCapsuleStart += ZAXIS * (pCapsuleInfo->GetCapsuleZOffset()+fRadius); Vector3 vCapsuleEnd = vCapsuleStart + (ZAXIS * (fHeight - (2.0f*fRadius))); WorldProbe::CShapeTestCapsuleDesc capsuleDesc; capsuleDesc.SetCapsule(vCapsuleStart, vCapsuleEnd, fRadius); capsuleDesc.SetDomainForTest(WorldProbe::TEST_IN_LEVEL); capsuleDesc.SetDoInitialSphereCheck(true); capsuleDesc.SetIsDirected(false); capsuleDesc.SetIncludeFlags(ArchetypeFlags::GTA_ALL_TYPES_MOVER); capsuleDesc.SetTypeFlags(ArchetypeFlags::GTA_AI_TEST); capsuleDesc.SetContext(WorldProbe::LOS_GeneralAI); capsuleDesc.SetExcludeEntity(pPlayer); return !WorldProbe::GetShapeTestManager()->SubmitTest(capsuleDesc); } } return false; } int CommandGetLastNearMissVehicle(int playerIndex) { int vehicleGuid = 0; CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { const CVehicle* veh = pPlayer->GetPlayerInfo()->GetLastNearMissVehicle(); if (veh) { vehicleGuid = CTheScripts::GetGUIDFromEntity(const_cast(*veh)); } } return vehicleGuid; } int CommandGetTimeSinceLastNearMiss(int playerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { return pPlayer->GetPlayerInfo()->GetTimeSinceLastNearMiss(); } return 0; } void CommandStartPlayerTeleport(int playerIndex, const scrVector & targetCoords, float heading, bool teleportVehicle, bool snapToGround, bool fadePlayerOut) { Vector3 target = Vector3(targetCoords); #if __DEV if(NetworkInterface::IsGameInProgress()) { static Vector3 oldPos; static u32 samePosCounter = 0; if ((oldPos - target).Mag2() > 5.0f) { samePosCounter = 0; } if (2 < samePosCounter) { scriptWarningf("%s:START_PLAYER_TELEPORT is being called on the same position %d times.", CTheScripts::GetCurrentScriptNameAndProgramCounter(), samePosCounter); } ++samePosCounter; oldPos = target; } #endif // __DEV CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if (pPlayer && scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { GtaThread* pGtaThread = CTheScripts::GetCurrentGtaScriptThread(); float headingInRadians = fwAngle::LimitRadianAngleSafe( DtoR * heading); CGameLogic::TeleportPlayer(pPlayer, target, headingInRadians, teleportVehicle, snapToGround, CWarpManager::MAX_WAIT_TIME_MS, fadePlayerOut); if (CWarpManager::IsActive()) { CWarpManager::SetScriptThreadId(pGtaThread->GetThreadId()); } } } bool CommandUpdatePlayerTeleport(int playerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if (!pPlayer || !scriptVerifyf(pPlayer->GetPlayerInfo(), "Player with no player info!")) { return false; } return CGameLogic::HasTeleportPlayerFinished(); } void CommandStopPlayerTeleport() { CGameLogic::StopTeleport(); } bool CommandIsPlayerTeleportActive() { return CGameLogic::IsTeleportActive(); } float CommandGetPlayerCurrentStealthNoise(int playerIndex) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { CPlayerInfo* pInfo = pPlayer->GetPlayerInfo(); if(Verifyf(pInfo, "Expected CPlayerInfo.")) { return pInfo->GetStealthNoise(); } } return 0.0f; } void CommandSetPlayerHealthRechargeMultiplier(int playerIndex, float fMultiplier) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { CPlayerInfo* pInfo = pPlayer->GetPlayerInfo(); if(Verifyf(pInfo, "Expected CPlayerInfo.")) { pInfo->GetHealthRecharge().SetRechargeScriptMultiplier(fMultiplier); } } } float CommandGetPlayerHealthRechargeMaxPercent(int playerIndex) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { CPlayerInfo* pInfo = pPlayer->GetPlayerInfo(); if(scriptVerifyf(pInfo, "GET_PLAYER_HEALTH_RECHARGE_MAX_PERCENT - CPlayerInfo not found")) { return pInfo->GetHealthRecharge().GetRechargeMaxPercent(); } } return 0.0f; } void CommandSetPlayerHealthRechargeMaxPercent(int playerIndex, float fPercent) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { CPlayerInfo* pInfo = pPlayer->GetPlayerInfo(); if(scriptVerifyf(pInfo, "SET_PLAYER_HEALTH_RECHARGE_MAX_PERCENT - CPlayerInfo not found")) { if (scriptVerifyf(fPercent > 0.0f && fPercent <= 1.0f, "SET_PLAYER_HEALTH_RECHARGE_MAX_PERCENT - Percentage invalid, needs to be above 0.0 and less than or equal to 1.0")) { pInfo->GetHealthRecharge().SetRechargeMaxPercent(fPercent); } } } } void CommandDisablePlayerHealthRecharge(int playerIndex) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { pPlayer->SetPlayerResetFlag(CPlayerResetFlags::PRF_DISABLE_HEALTH_RECHARGE); } } float CommandGetPlayerFallDistanceToTriggerRagdollOverride(int playerIndex) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { CPlayerInfo* pInfo = pPlayer->GetPlayerInfo(); if(scriptVerifyf(pInfo, "GET_PLAYER_FALL_DISTANCE_TO_TRIGGER_RAGDOLL_OVERRIDE - CPlayerInfo not found")) { return pInfo->GetFallHeightForPedOverride(); } } return 0.0f; } void CommandSetPlayerFallDistanceToTriggerRagdollOverride(int playerIndex, float fDistance) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { CPlayerInfo* pInfo = pPlayer->GetPlayerInfo(); if(scriptVerifyf(pInfo, "SET_PLAYER_FALL_DISTANCE_TO_TRIGGER_RAGDOLL_OVERRIDE - CPlayerInfo not found")) { pInfo->SetFallHeightForPedOverride(fDistance); } } } void CommandSetPlayerWeaponDamageModifier(int nPlayerIndex, float fWeaponDamageModifier) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(nPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetPlayerWeaponDamageModifier(fWeaponDamageModifier); } } void CommandSetPlayerWeaponDefenseModifier(int nPlayerIndex, float fWeaponDefenseModifier) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(nPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetPlayerWeaponDefenseModifier(fWeaponDefenseModifier); } } void CommandSetPlayerWeaponMinigunDefenseModifier(int nPlayerIndex, float fWeaponDefenseModifier) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(nPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetPlayerWeaponMinigunDefenseModifier(fWeaponDefenseModifier); } } void CommandSetPlayerMeleeWeaponDamageModifier(int nPlayerIndex, float fMeleeWeaponDamageModifier, bool bAffectsUnarmed) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(nPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetPlayerMeleeWeaponDamageModifier(fMeleeWeaponDamageModifier); float fCurrentUnarmedMod = pPlayer->GetPlayerInfo()->GetPlayerMeleeUnarmedDamageModifier(); if (fMeleeWeaponDamageModifier == 1.0f && !bAffectsUnarmed && fCurrentUnarmedMod != 1.0f) { scriptAssertf(0,"Script is resetting Melee Weapon damage modifier to 1.0f, but not previously modified Melee Unarmed damage modifier (%.2f). Is this intended?", fCurrentUnarmedMod); #if !__FINAL scrThread::PrePrintStackTrace(); #endif } if (bAffectsUnarmed) { pPlayer->GetPlayerInfo()->SetPlayerMeleeUnarmedDamageModifier(fMeleeWeaponDamageModifier); } } } void CommandSetPlayerMeleeWeaponDefenseModifier(int nPlayerIndex, float fMeleeWeaponDefenseModifier) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(nPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetPlayerMeleeWeaponDefenseModifier(fMeleeWeaponDefenseModifier); } } void CommandSetPlayerMeleeWeaponForceModifier(int nPlayerIndex, float fMeleeWeaponForceModifier) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(nPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetPlayerMeleeWeaponForceModifier(fMeleeWeaponForceModifier); } } void CommandSetPlayerVehicleDamageModifier(int nPlayerIndex, float fVehicleDamageModifier) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(nPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetPlayerVehicleDamageModifier(fVehicleDamageModifier); } } void CommandSetPlayerVehicleDefenseModifier(int nPlayerIndex, float fVehicleDefenseModifier) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(nPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetPlayerVehicleDefenseModifier(fVehicleDefenseModifier); } } void CommandSetPlayerMaxExplosiveDamage(int nPlayerIndex, float fMaxExplosiveDamage) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(nPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetPlayerMaxExplosiveDamage(fMaxExplosiveDamage); } } void CommandSetPlayerExplosiveDamageModifier(int nPlayerIndex, float fExplosiveDamageModifier) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(nPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetPlayerExplosiveDamageModifier(fExplosiveDamageModifier); } } void CommandSetPlayerWeaponTakedownDefenseModifier(int nPlayerIndex, float fWeaponTakedownDefenseModifier) { CPed * pPlayer = CTheScripts::FindNetworkPlayerPed(nPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetPlayerWeaponTakedownDefenseModifier(fWeaponTakedownDefenseModifier); } } void CommandSetPlayerParachuteTintIndex(int playerIndex, int tintIndex) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { pPlayer->GetPedIntelligence()->SetTintIndexForParachute((u32)tintIndex); } } void CommandGetPlayerParachuteTintIndex(int playerIndex, int& tintIndex) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { tintIndex = (int)pPlayer->GetPedIntelligence()->GetTintIndexForParachute(); } } void CommandSetPlayerReserveParachuteTintIndex(int playerIndex, int tintIndex) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { pPlayer->GetPedIntelligence()->SetTintIndexForReserveParachute((u32)tintIndex); } } void CommandGetPlayerReserveParachuteTintIndex(int playerIndex, int& tintIndex) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { tintIndex = (int)pPlayer->GetPedIntelligence()->GetTintIndexForReserveParachute(); } } void CommandSetPlayerParachutePackTintIndex(int playerIndex, int tintIndex) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { pPlayer->GetPedIntelligence()->SetTintIndexForParachutePack((u32)tintIndex); } } void CommandGetPlayerParachutePackTintIndex(int playerIndex, int& tintIndex) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { tintIndex = (int)pPlayer->GetPedIntelligence()->GetTintIndexForParachutePack(); } } void CommandSetPlayerHasReserveParachute(int playerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if(pPlayer) { //if(Verifyf(CTaskParachute::DoesPedHaveParachute(*pPlayer), "Ped should already have a parachute in inventory before adding a reserve!")) //{ pPlayer->SetPedConfigFlag(CPED_CONFIG_FLAG_HasReserveParachute, true); //} } } bool CommandGetPlayerHasReserveParachute(int playerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(playerIndex); if(pPlayer) { return pPlayer->GetPedConfigFlag(CPED_CONFIG_FLAG_HasReserveParachute); } return false; } void CommandSetPlayerCanLeaveParachuteSmokeTrail(int playerIndex, bool bCanLeaveParachuteSmokeTrail) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { pPlayer->GetPlayerInfo()->SetCanLeaveParachuteSmokeTrail(bCanLeaveParachuteSmokeTrail); } } void CommandSetPlayerParachuteSmokeTrailColor(int playerIndex, int r, int g, int b) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { pPlayer->GetPlayerInfo()->SetParachuteSmokeTrailColor(Color32(r, g, b)); } } void CommandGetPlayerParachuteSmokeTrailColor(int playerIndex, int& r, int& g, int& b) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { Color32 col = pPlayer->GetPlayerInfo()->GetParachuteSmokeTrailColor(); r = col.GetRed(); g = col.GetGreen(); b = col.GetBlue(); } } int CommandGetPlayerPhonePaletteIdx(int playerIndex) { int res = -1; CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { res = pPlayer->GetPedPhonePaletteIdx(); } return res; } void CommandSetPlayerPhonePaletteIdx(int playerIndex, int idx) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { pPlayer->SetPedPhonePaletteIdx(idx); } } void CommandSetDisplayPlayerDamageInfo(bool PEDDEBUGVISUALISER_ONLY(bDisplay)) { #if PEDDEBUGVISUALISER CPedDebugVisualiserMenu::SetDisplayingOnlyForPlayers(bDisplay); CPedDebugVisualiser::DisplayPedDamageRecords(bDisplay); #endif // PEDDEBUGVISUALISER } void CommandSimulatePlayerInputGait(int iPlayerIndex, float fMoveBlendRatio, int fTimer, float fHeading, bool bUseRelativeHeading, bool bNoInputInterruption) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(iPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetSimulateGaitInput(fMoveBlendRatio, ((float)fTimer)/1000.0f, fHeading*DtoR, bUseRelativeHeading, bNoInputInterruption); } } void CommandResetPlayerInputGait(int iPlayerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(iPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->ResetSimulateGaitInput(); } } void CommandSetAutoGiveParachuteWhenEnterPlane(int iPlayerIndex, bool bGivePlayerParachute) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(iPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetAutoGiveParachuteWhenEnterPlane(bGivePlayerParachute); } } void CommandSetAutoGiveScubaGearWhenExitVehicle(int iPlayerIndex, bool bGivePlayerScubaGear) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(iPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetAutoGiveScubaGearWhenExitVehicle(bGivePlayerScubaGear); } } void CommandSetPlayerStealthPerceptionModifier(int iPlayerIndex, float StealthPerceptionModifier) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(iPlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetStealthPerceptionModifier(StealthPerceptionModifier); } } float CommandGetPlayerStealthPerceptionModifier(int iPlayerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(iPlayerIndex); if (pPlayer) { return pPlayer->GetPlayerInfo()->GetStealthPerceptionModifier(); } return 1.0f; } void CommandSetPlayerToUseCoverThreatWeighting(int iPlayerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(iPlayerIndex); if (pPlayer) { pPlayer->SetPlayerResetFlag(CPlayerResetFlags::PRF_USE_COVER_THREAT_WEIGHTING); } } bool CommandIsRemotePlayerInNonClonedVehicle(int iPlayerIndex) { CPed *pPlayerPed = CTheScripts::FindNetworkPlayerPed(iPlayerIndex); if (pPlayerPed) { return NetworkInterface::IsRemotePlayerInNonClonedVehicle(pPlayerPed); } return false; } void CommandIncreasePlayerJumpSuppressionRange(int PlayerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->GetPlayerResetFlags().SetFlag(CPlayerResetFlags::PRF_INCREASE_JUMP_SUPPRESSION_RANGE); } } void CommandsSetPlayerResetFlagPreferRearSeats(int PlayerIndex, int VehicleIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer && pPlayer->GetPlayerInfo()) { pPlayer->GetPlayerInfo()->GetPlayerResetFlags().SetFlag(CPlayerResetFlags::PRF_PREFER_REAR_SEATS); const CVehicle* pVehicleToPrefer = NULL; if (VehicleIndex != NULL_IN_SCRIPTING_LANGUAGE) { pVehicleToPrefer = CTheScripts::GetEntityToQueryFromGUID(VehicleIndex, CTheScripts::GUID_ASSERT_FLAG_NOT_CLONE); } pPlayer->GetPlayerInfo()->SetVehiclePlayerPreferRearSeat(pVehicleToPrefer); } } void CommandsSetPlayerResetFlagPreferFrontPassengerSeat(int PlayerIndex, int VehicleIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer && pPlayer->GetPlayerInfo()) { pPlayer->GetPlayerInfo()->GetPlayerResetFlags().SetFlag(CPlayerResetFlags::PRF_PREFER_FRONT_PASSENGER_SEAT); const CVehicle* pVehicleToPrefer = NULL; if (VehicleIndex != NULL_IN_SCRIPTING_LANGUAGE) { pVehicleToPrefer = CTheScripts::GetEntityToQueryFromGUID(VehicleIndex, CTheScripts::GUID_ASSERT_FLAG_NOT_CLONE); } pPlayer->GetPlayerInfo()->SetVehiclePlayerPreferFrontPassengerSeat(pVehicleToPrefer); } } void CommandSetPlayerSimulateAiming(int iPlayerIndex, bool bSimulateAiming) { CPed *pPlayerPed = CTheScripts::FindNetworkPlayerPed(iPlayerIndex); if (pPlayerPed) { pPlayerPed->SetPedConfigFlag( CPED_CONFIG_FLAG_SimulatingAiming, bSimulateAiming ); } } bool CommandHasPlayerBeenSpottedInStolenVehicle(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { return pPlayer->GetPlayerInfo()->HasBeenSpottedInStolenVehicle(); } return false; } int CommandGetSpotterOfPlayerInStolenVehicle(int PlayerIndex) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { CPed* pSpotter = pPlayer->GetPlayerInfo()->GetSpotterOfStolenVehicle(); return pSpotter ? CTheScripts::GetGUIDFromEntity(*pSpotter) : 0; } return 0; } bool CommandIsPlayerBattleAware(int PlayerIndex) { CPed const* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if (pPlayer) { if(pPlayer->IsLocalPlayer()) { return pPlayer->GetPedIntelligence()->IsBattleAware(); } else if(NetworkInterface::IsGameInProgress()) { CNetObjPlayer const* netObjPlayer = static_cast(pPlayer->GetNetworkObject()); if(netObjPlayer) { return netObjPlayer->IsBattleAware(); } } } return false; } bool CommandPlayerReceivedBattleEventRecently(int PlayerIndex, int nTime, bool bIncludeLocalEvents) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { u32 uLastBattleEvent = pPlayer->GetPedIntelligence()->GetLastBattleEventTime(bIncludeLocalEvents); if(fwTimer::GetTimeInMilliseconds() < (uLastBattleEvent + (u32)nTime)) { return true; } } return false; } void CommandExtendWorldBoundaryForPlayer(const scrVector & scrVecCoors) { CPlayerInfo::ExtendWorldBoundary(scrVecCoors); } void CommandResetWorldBoundaryForPlayer() { CPlayerInfo::ResetWorldBoundary(); } bool CommandIsPlayerRidingTrain(int PlayerIndex) { const CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if(pPlayer) { CTask* pTask = pPlayer->GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_PLAYER_ON_FOOT); if(pTask && (pTask->GetState() == CTaskPlayerOnFoot::STATE_RIDE_TRAIN)) { return true; } } return false; } bool CommandHasPlayerLeftTheWorld(int PlayerIndex) { const CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if(pPlayer && pPlayer->GetPlayerInfo() && pPlayer->GetPlayerInfo()->HasPlayerLeftTheWorld()) { return true; } return false; } void CommandDisableDispatchHeliRefueling(int PlayerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->GetPlayerResetFlags().SetFlag(CPlayerResetFlags::PRF_DISABLE_DISPATCHED_HELI_REFUEL); } } void CommandDisableHeliDestroyedDispatchSpawnDelay(int PlayerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->GetPlayerResetFlags().SetFlag(CPlayerResetFlags::PRF_DISABLE_DISPATCHED_HELI_DESTROYED_SPAWN_DELAY); } } void CommandSetPlayerLeavePedBehind(int PlayerIndex, bool bLeavePedBehind) { CPed * pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetPlayerLeavePedBehind(bLeavePedBehind); } } void CommandSetPlayerParachuteVariationOverride( int PlayerIndex, int ComponentID, int DrawableID, int TexID, int AltDrawableID) { CPed const* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if(pPlayer && pPlayer->GetPlayerInfo()) { if (NetworkInterface::IsGameInProgress() && DrawableID == 0) { scriptAssertf(0, "SET_PLAYER_PARACHUTE_VARIATION_OVERRIDE - DrawableID is 0, preventing. This will cause an infinite parachute take-off loop."); } else { pPlayer->GetPlayerInfo()->SetPedParachuteVariationOverride(static_cast(ComponentID), DrawableID, TexID, AltDrawableID); } } } void CommandClearPlayerParachuteVariationOverride( int PlayerIndex ) { CPed const* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if(pPlayer && pPlayer->GetPlayerInfo()) { pPlayer->GetPlayerInfo()->ClearPedParachuteVariationOverride(); } } void CommandSetPlayerParachuteModelOverride( int PlayerIndex, int ModelNameHash) { CPed const* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if(pPlayer && pPlayer->GetPlayerInfo()) { pPlayer->GetPlayerInfo()->SetPedParachuteModelOverride((u32)ModelNameHash); } } void CommandSetPlayerReserveParachuteModelOverride(int PlayerIndex, int ModelNameHash) { CPed const* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer && pPlayer->GetPlayerInfo()) { pPlayer->GetPlayerInfo()->SetPedReserveParachuteModelOverride((u32)ModelNameHash); } } u32 CommandGetPlayerParachuteModelOverride(int PlayerIndex) { CPed const* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if(pPlayer && pPlayer->GetPlayerInfo()) { return pPlayer->GetPlayerInfo()->GetPedParachuteModelOverride(); } return 0; } u32 CommandGetPlayerReserveParachuteModelOverride(int PlayerIndex) { CPed const* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer && pPlayer->GetPlayerInfo()) { return pPlayer->GetPlayerInfo()->GetPedReserveParachuteModelOverride(); } return 0; } void CommandClearPlayerParachuteModelOverride( int PlayerIndex ) { CPed const* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if(pPlayer && pPlayer->GetPlayerInfo()) { pPlayer->GetPlayerInfo()->SetPedParachuteModelOverride(0); } } void CommandClearPlayerReserveParachuteModelOverride(int PlayerIndex) { CPed const* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer && pPlayer->GetPlayerInfo()) { pPlayer->GetPlayerInfo()->SetPedReserveParachuteModelOverride(0); } } void CommandSetPlayerParachutePackModelOverride( int PlayerIndex, int ModelNameHash) { CPed const* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if(pPlayer && pPlayer->GetPlayerInfo()) { pPlayer->GetPlayerInfo()->SetPedParachutePackModelOverride((u32)ModelNameHash); } } void CommandClearPlayerParachutePackModelOverride( int PlayerIndex ) { CPed const* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if(pPlayer && pPlayer->GetPlayerInfo()) { pPlayer->GetPlayerInfo()->SetPedParachutePackModelOverride(0); } } void CommandDisablePlayerVehicleRewards(int PlayerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->GetPlayerResetFlags().SetFlag(CPlayerResetFlags::PRF_DISABLE_VEHICLE_REWARDS); } } void CommandEnableBlueToothHeadSet(int PlayerIndex, bool b) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->SetEnableBlueToothHeadset(b); } } bool CommandGetEnableBlueToothHeadSet(int PlayerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { return pPlayer->GetPlayerInfo()->GetEnableBlueToothHeadset(); } return false; } void CommandDisableCameraViewModeCycle(int playerIndex) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(playerIndex); if(pPlayer) { pPlayer->SetPlayerResetFlag(CPlayerResetFlags::PRF_DISABLE_CAMERA_VIEW_MODE_CYCLE); } } int CommandGetPlayerFakeWantedLevel(int PlayerIndex) { CPed* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if (pPlayer && pPlayer->IsPlayer()) { if (NetworkInterface::IsGameInProgress()) { //MP if (pPlayer->GetNetworkObject()) { CNetObjPlayer* pNetObjPlayer = static_cast(pPlayer->GetNetworkObject()); if (pNetObjPlayer) { return pNetObjPlayer->GetRemoteFakeWantedLevel(); } } } else { //SP return CScriptHud::iFakeWantedLevel; } } return 0; } void CommandSetPlayerCanDamagePlayer(int PlayerIndex, int TargetPlayerIndex, bool bAllowDamageFlag) { CPed *pTargetPlayerPed = CTheScripts::FindNetworkPlayerPed(TargetPlayerIndex, false); if (pTargetPlayerPed && SCRIPT_VERIFY(pTargetPlayerPed->GetNetworkObject(), "SET_PLAYER_CAN_DAMAGE_PLAYER - Can only be used during a network game") && SCRIPT_VERIFY(PlayerIndex >= 0 && PlayerIndex < MAX_NUM_PHYSICAL_PLAYERS, "SET_PLAYER_CAN_DAMAGE_PLAYER - Invalid Player") && SCRIPT_VERIFY(TargetPlayerIndex >= 0 && TargetPlayerIndex < MAX_NUM_PHYSICAL_PLAYERS, "SET_PLAYER_CAN_DAMAGE_PLAYER - Invalid Other Player")) { CNetObjPed* pTargetPedObj = SafeCast(CNetObjPed, pTargetPlayerPed->GetNetworkObject()); if (pTargetPedObj) { pTargetPedObj->SetIsDamagableByPlayer(PlayerIndex, bAllowDamageFlag); } } } void CommandSetApplyWaypointOfPlayer(int PlayerIndex, int color) { if(PlayerIndex == -1) { SafeCast(CNetObjPlayer, NetworkInterface::GetLocalPlayer()->GetPlayerPed()->GetNetworkObject())->SetWaypointOverrideOwner(NETWORK_INVALID_OBJECT_ID); } else { CPed* playerPed = CTheScripts::FindNetworkPlayerPed(PlayerIndex, false); if(playerPed && playerPed->GetNetworkObject()) { SafeCast(CNetObjPlayer, NetworkInterface::GetLocalPlayer()->GetPlayerPed()->GetNetworkObject())->SetWaypointOverrideColor(static_cast(color)); SafeCast(CNetObjPlayer, NetworkInterface::GetLocalPlayer()->GetPlayerPed()->GetNetworkObject())->SetWaypointOverrideOwner(playerPed->GetNetworkObject()->GetObjectID()); } } } bool CommandIsPlayerVehicleWeaponToggledToNonHoming(int PlayerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { const CWeaponInfo* pWeaponInfo = pPlayer->GetEquippedWeaponInfo(); if (pWeaponInfo && pWeaponInfo->GetIsVehicleWeapon() && pWeaponInfo->GetCanHomingToggle()) { CPlayerPedTargeting& rPlayerTargeting = pPlayer->GetPlayerInfo()->GetTargeting(); return !rPlayerTargeting.GetVehicleHomingEnabled(); } } return false; } void CommandSetPlayerVehicleWeaponToNonHoming(int PlayerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { const CWeaponInfo* pWeaponInfo = pPlayer->GetEquippedWeaponInfo(); if (pWeaponInfo && pWeaponInfo->GetIsVehicleWeapon() && pWeaponInfo->GetCanHomingToggle()) { CPlayerPedTargeting& rPlayerTargeting = pPlayer->GetPlayerInfo()->GetTargeting(); rPlayerTargeting.SetVehicleHomingEnabled(false); } } } void CommandSetPlayerHomingDisabledForAllVehicleWeapons(int PlayerIndex, bool bValue) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { pPlayer->GetPlayerInfo()->GetTargeting().SetVehicleHomingForceDisabled(bValue); // If our current weapon is a homing weapon, set this flag immediately. Otherwise, it'll be set correctly when we try to change vehicle weapon. const CWeaponInfo* pWeaponInfo = pPlayer->GetEquippedWeaponInfo(); if (pWeaponInfo && pWeaponInfo->GetIsVehicleWeapon() && pWeaponInfo->GetIsHoming()) { pPlayer->GetPlayerInfo()->GetTargeting().SetVehicleHomingEnabled(!bValue); } } } void CommandAddPlayerTargetableEntity(int PlayerIndex, int TargetEntityIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { CEntity* pEntity = CTheScripts::GetEntityToModifyFromGUID(TargetEntityIndex); if (pEntity && pPlayer != pEntity) { CPlayerInfo* pPlayerInfo = pPlayer->GetPlayerInfo(); if (pPlayerInfo) { pPlayerInfo->GetTargeting().AddTargetableEntity(pEntity); } } } } void CommandRemovePlayerTargetableEntity(int PlayerIndex, int TargetEntityIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { CEntity* pEntity = CTheScripts::GetEntityToModifyFromGUID(TargetEntityIndex); if (pEntity) { CPlayerInfo* pPlayerInfo = pPlayer->GetPlayerInfo(); if (pPlayerInfo) { pPlayerInfo->GetTargeting().RemoveTargetableEntity(pEntity); } } } } void CommandClearPlayerTargetableEntities(int PlayerIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { CPlayerInfo* pPlayerInfo = pPlayer->GetPlayerInfo(); if (pPlayerInfo) { pPlayerInfo->GetTargeting().ClearTargetableEntities(); } } } bool CommandGetIsEntityInTargetableByPlayerArray(int PlayerIndex, int TargetEntityIndex) { CPed* pPlayer = CTheScripts::FindLocalPlayerPed(PlayerIndex); if (pPlayer) { CEntity* pEntity = CTheScripts::GetEntityToModifyFromGUID(TargetEntityIndex); if (pEntity) { CPlayerInfo* pPlayerInfo = pPlayer->GetPlayerInfo(); if (pPlayerInfo && pPlayerInfo->GetTargeting().GetIsEntityAlreadyRegisteredInTargetableArray(pEntity)) { return true; } } } return false; } void CommandSetPlayerPreviousVariationData(int PlayerIndex, int ComponentID, int DrawableID, int AltDrawableID, int TextureID, int PaletteID) { CPed const* pPlayer = CTheScripts::FindNetworkPlayerPed(PlayerIndex); if(pPlayer && pPlayer->GetPlayerInfo()) { pPlayer->GetPlayerInfo()->SetPreviousVariationData(static_cast(ComponentID), DrawableID, AltDrawableID, TextureID, PaletteID); } } void CommandRemoveScriptFirePosition() { if (CPed* pPed = CGameWorld::FindLocalPlayer()) { if (CPlayerInfo* pPlayerInfo = pPed->GetPlayerInfo()) { pPlayerInfo->ClearScriptedWeaponFiringPos(); } } } void CommandSetScriptFirePosition(const scrVector & targetCoords) { if (CPed* pPed = CGameWorld::FindLocalPlayer()) { if (CPlayerInfo* pPlayerInfo = pPed->GetPlayerInfo()) { Vector3 target = Vector3(targetCoords); pPlayerInfo->SetScriptedWeaponFiringPos(VECTOR3_TO_VEC3V(target)); } } } void SetupScriptCommands() { SCR_REGISTER_SECURE_HONEYPOT(GET_PLAYER_PED,0x407e03586628e458, CommandGetPlayerPed ); // NATIVE PROC GET_PLAYER_PED (PLAYERID PLAYER_IN, CHARID &CHAR_OUT) SCR_REGISTER_SECURE(GET_PLAYER_PED_SCRIPT_INDEX,0xe0fcabb9fcdf25ed, CommandGetPlayerScriptGuid ); SCR_REGISTER_SECURE(SET_PLAYER_MODEL,0xbece2b5c03bb4f09, CommandChangePlayerModel ); SCR_REGISTER_SECURE(CHANGE_PLAYER_PED,0xb10d8e27c549787d, CommandChangePlayerPed ); SCR_REGISTER_UNUSED(NETWORK_PLAYER_HAS_PED,0xa49d19d03dcc3578, CommandPlayerHasPed ); // NATIVE FUNC BOOL PLAYER_HAS_CHAR (PLAYERID PLAYER_IN) SCR_REGISTER_SECURE(GET_PLAYER_RGB_COLOUR,0xea0963c9e116ac55, CommandGetPlayerRGBColour ); // NATIVE PROC INT GET_PLAYER_RGB_COLOUR( PLAYER_INDEX PlayerIndex, INT &Red, INT &Green, INT &Blue ) SCR_REGISTER_UNUSED(GET_NATIVE_PLAYER_HUD_COLOUR,0x9f53470fbc61099d, CommandGetPlayerHUDColour ); // NATIVE PROC HUD_COLOURS GET_PLAYER_HUD_COLOUR( PLAYER_INDEX PlayerIndex ) SCR_REGISTER_SECURE_HONEYPOT(GET_NUMBER_OF_PLAYERS,0x3a0de5c10c341c80, CommandGetNumberOfPlayers ); // NATIVE FUNC INT GET_NUM_PLAYERS() SCR_REGISTER_SECURE(GET_PLAYER_TEAM,0x0e40f846a70ba3ec, CommandGetPlayerTeam ); // NATIVE FUNC INT GET_PLAYER_TEAM( PLAYER_INDEX PlayerIndex ) SCR_REGISTER_SECURE(SET_PLAYER_TEAM,0x78a9f1d1065c4165, CommandSetPlayerTeam ); // NATIVE FUNC INT SET_PLAYER_TEAM( PLAYER_INDEX PlayerIndex, INT Team ) SCR_REGISTER_SECURE(GET_NUMBER_OF_PLAYERS_IN_TEAM,0xe9cb4976f6bdca99, CommandGetNumPlayersInTeam ); // NATIVE FUNC INT GET_NUMBER_OF_PLAYERS_IN_TEAM( INT Team ) SCR_REGISTER_SECURE(GET_PLAYER_NAME,0x61042ca2a97bbb69, CommandGetPlayerName ); // NATIVE FUNC INT GET_PLAYER_TEAM( PLAYER_INDEX PlayerIndex ) SCR_REGISTER_SECURE(GET_WANTED_LEVEL_RADIUS,0xe923e49e6f7d32e2, CommandGetWantedLevelRadius ); SCR_REGISTER_SECURE(GET_PLAYER_WANTED_CENTRE_POSITION,0x0e218e8a8c75638d, CommandGetWantedRadiusCentre ); SCR_REGISTER_SECURE(SET_PLAYER_WANTED_CENTRE_POSITION,0x1eae781eaa7f5613, CommandSetWantedRadiusCentre ); SCR_REGISTER_SECURE(GET_WANTED_LEVEL_THRESHOLD,0x1ac3ecc14fa9cd77, CommandGetWantedLevelThreshold ); SCR_REGISTER_SECURE_HONEYPOT(SET_PLAYER_WANTED_LEVEL,0xbcd99b4edae55be6, CommandAlterWantedLevel ); // NATIVE PROC ALTER_WANTED_LEVEL( INT PlayerIndex, INT WantedLevel ) SCR_REGISTER_SECURE(SET_PLAYER_WANTED_LEVEL_NO_DROP,0x007d28b99df625b1, CommandAlterWantedLevelNoDrop ); // NATIVE PROC SET_PLAYER_WANTED_LEVEL_NO_DROP( INT PlayerIndex, INT WantedLevel ) SCR_REGISTER_SECURE(SET_PLAYER_WANTED_LEVEL_NOW,0xb78cbe6c9550e5ef, CommandApplyWantedLevelChangeNow ); // NATIVE PROC SET_PLAYER_WANTED_LEVEL_NOW( PLAYER_INDEX PlayerIndex ) SCR_REGISTER_SECURE(ARE_PLAYER_FLASHING_STARS_ABOUT_TO_DROP,0x5e4795798d5a9125, CommandPlayerHasFlashingStarsAboutToDrop ); SCR_REGISTER_SECURE(ARE_PLAYER_STARS_GREYED_OUT,0xea9f0d44b6d1c2d6, CommandPlayerHasGreyedOutStars ); SCR_REGISTER_SECURE(IS_WANTED_AND_HAS_BEEN_SEEN_BY_COPS,0xe6f58896ab252846, IsWantedAndHasBeenSeenByCops ); SCR_REGISTER_SECURE(SET_DISPATCH_COPS_FOR_PLAYER,0xf0ca50ac5d6cfd41, CommandSetDispatchCopsForPlayer ); SCR_REGISTER_SECURE(IS_PLAYER_WANTED_LEVEL_GREATER,0x37bbf9acd752871a, CommandIsWantedLevelGreater ); // NATIVE PROC IS_PLAYER_WANTED_LEVEL_GREATER( INT PlayerIndex, INT WantedLevel ) SCR_REGISTER_SECURE(CLEAR_PLAYER_WANTED_LEVEL,0xba5d7196eacb9282, CommandClearWantedLevel ); // NATIVE PROC CLEAR_PLAYER_WANTED_LEVEL( INT PlayerIndex ) SCR_REGISTER_UNUSED(LOCAL_PLAYER_HAS_PENDING_CRIMES,0x345ecf3f6b5bda08, CommandLocalPlayerHasPendingCrimes ); // NATIVE PROC LOCAL_PLAYER_HAS_PENDING_CRIMES() SCR_REGISTER_UNUSED(GET_INDEX_OF_PLAYER_THAT_CAUSED_WL,0xe3c9c6ab84bb6fab, CommandGetIndexOfPlayerThatCausedWL ); // NATIVE FUNC INT GET_INDEX_OF_PLAYER_THAT_CAUSED_WL() SCR_REGISTER_SECURE(IS_PLAYER_DEAD,0xe08d4560995e7946, CommandIsPlayerDead ); // NATIVE PROC IS_PLAYER_DEAD( INT PlayerIndex ) SCR_REGISTER_SECURE(IS_PLAYER_PRESSING_HORN,0x98d590fb7ba7df44, CommandIsPlayerPressingHorn ); // NATIVE PROC IS_PLAYER_PRESSING_HORN( INT PlayerIndex ) SCR_REGISTER_SECURE(SET_PLAYER_CONTROL,0x64e21045781afbc9, CommandSetPlayerControl ); // NATIVE PROC SET_PLAYER_CONTROL( INT PlayerIndex, BOOL SetControl ) // SCR_REGISTER_UNUSED(SET_PLAYER_CONTROL_ADVANCED, 0x4261bf11, CommandSetPlayerControlAdvanced ); // NATIVE PROC SET_PLAYER_CONTROL( INT PlayerIndex, BOOL SetControl ) SCR_REGISTER_SECURE(GET_PLAYER_WANTED_LEVEL,0xc378b7f0d175a5b0, CommandGetPlayerWantedLevel ); // NATIVE PROC STORE_WANTED_LEVEL( INT PlayerIndex, INT& WantedLevel ) SCR_REGISTER_SECURE(SET_MAX_WANTED_LEVEL,0xc0f70a3cdec87ece, CommandSetMaxWantedLevel ); // NATIVE PROC SET_MAX_WANTED_LEVEL( INT PlayerIndex ) SCR_REGISTER_SECURE(SET_POLICE_RADAR_BLIPS,0x6eac3a35d1bb9b9f, CommandSetPoliceRadarBlips ); SCR_REGISTER_SECURE(SET_POLICE_IGNORE_PLAYER,0xb5b3aae149fc278d, CommandSetPoliceIgnorePlayer ); // NATIVE PROC SET_POLICE_IGNORE_PLAYER( INT PlayerIndex, BOOL IgnorePlayer ) SCR_REGISTER_SECURE(IS_PLAYER_PLAYING,0x3583a42587543334, CommandIsPlayerPlaying ); // NATIVE PROC IS_PLAYER_PLAYING( INT PlayerIndex ) SCR_REGISTER_SECURE(SET_EVERYONE_IGNORE_PLAYER,0xac58ba7d19452704, CommandSetEveryoneIgnorePlayer ); // NATIVE PROC SET_EVERYONE_IGNORE_PLAYER( INT PlayerIndex, BOOL IgnorePlayer ) SCR_REGISTER_SECURE(SET_ALL_RANDOM_PEDS_FLEE,0x7a8df8c7511be48a, CommandSetAllRandomPedsFlee ); // DEPRECTATED SCR_REGISTER_SECURE(SET_ALL_RANDOM_PEDS_FLEE_THIS_FRAME,0xfecbe8ed0e1259a5, CommandSetAllRandomPedsFleeThisFrame); SCR_REGISTER_SECURE(SET_ALL_NEUTRAL_RANDOM_PEDS_FLEE,0x7f9fba1d5bb2ca14, CommandSetAllNeutralRandomPedsFlee ); // DEPRECATED SCR_REGISTER_SECURE(SET_ALL_NEUTRAL_RANDOM_PEDS_FLEE_THIS_FRAME,0x710e43300e497e2a, CommandSetAllNeutralRandomPedsFleeThisFrame ); SCR_REGISTER_UNUSED(SET_RANDOM_PEDS_ONLY_ATTACK_WITH_GUNS,0xc466b2cc66f5e0d4, CommandSetRandomPedsOnlyAttackWithGuns ); // DEPRECATED SCR_REGISTER_UNUSED(SET_RANDOM_PEDS_ONLY_ATTACK_WITH_GUNS_THIS_FRAME,0xd971e122e85dc9eb, CommandSetRandomPedsOnlyAttackWithGunsThisFrame ); SCR_REGISTER_SECURE(SET_LAW_PEDS_CAN_ATTACK_NON_WANTED_PLAYER_THIS_FRAME,0xef2c918f9b332bfd, CommandSetLawPedsCanAttackNonWantedPlayerThisFrame); SCR_REGISTER_SECURE(SET_IGNORE_LOW_PRIORITY_SHOCKING_EVENTS,0xec26897438239334, CommandSetIgnoreLowPriorityShockingEvents ); // NATIVE PROC SET_IGNORE_LOW_PRIORITY_SHOCKING_EVENTS( INT PlayerIndex, BOOL IgnorePlayer ) SCR_REGISTER_SECURE(SET_WANTED_LEVEL_MULTIPLIER,0x8576657a629c4b0a, CommandSetWantedMultiplier ); // NATIVE PROC SET_WANTED_LEVEL_MULTIPLIER( FLOAT Multiplier ) SCR_REGISTER_SECURE(SET_WANTED_LEVEL_DIFFICULTY,0x48a2ec087250e1bc, CommandSetWantedLevelDifficulty ); SCR_REGISTER_SECURE(RESET_WANTED_LEVEL_DIFFICULTY,0x6e31398aa6a7c5ce, CommandResetWantedLevelDifficulty ); SCR_REGISTER_SECURE(GET_WANTED_LEVEL_TIME_TO_ESCAPE,0xcb57195468bc75e4, CommandGetWantedLevelTimeToEscape ); // NATIVE FUNC GET_WANTED_LEVE_TIME_TO_ESCAPE( ) SCR_REGISTER_SECURE(SET_WANTED_LEVEL_HIDDEN_ESCAPE_TIME,0x439fce01cc242689, CommandSetWantedLevelHiddenEscapeTime ); SCR_REGISTER_SECURE(RESET_WANTED_LEVEL_HIDDEN_ESCAPE_TIME,0x1c1af50a180090aa, CommandResetWantedLevelHiddenEscapeTime ); SCR_REGISTER_UNUSED(SET_ARCADE_CNC_V_OFFENDER,0x3464edd4c4fd9610, CommandSetArcadeCNCVOffender ); SCR_REGISTER_UNUSED(GET_ARCADE_CNC_V_OFFENDER,0xfb53be1acc57eb56, CommandGetArcadeCNCVOffender ); SCR_REGISTER_SECURE(START_FIRING_AMNESTY,0x3b97c4414e778c45, CommandStartFiringAmnesty ); SCR_REGISTER_SECURE(REPORT_CRIME,0xda63aad3559a7fb5, CommandReportCrime ); SCR_REGISTER_SECURE(SUPPRESS_CRIME_THIS_FRAME,0x01e6fd194dcbeb7d, CommandSuppressCrimeThisFrame ); SCR_REGISTER_SECURE(UPDATE_WANTED_POSITION_THIS_FRAME,0xb2cc2a0592c4efcf, CommandUpdateWantedPositionThisFrame ); SCR_REGISTER_SECURE(SUPPRESS_LOSING_WANTED_LEVEL_IF_HIDDEN_THIS_FRAME,0xabb7d34a8925c872, CommandSuppressLosingWantedLevelIfHiddenThisFrame ); SCR_REGISTER_SECURE(ALLOW_EVASION_HUD_IF_DISABLING_HIDDEN_EVASION_THIS_FRAME,0x02affbcc3b11c52a, CommandmAllowEvasionHUDIfDisablingHiddenEvasionThisFrame ); SCR_REGISTER_SECURE(FORCE_START_HIDDEN_EVASION,0x894e9c42b8740f5e, CommandForceStartHiddenEvasion ); SCR_REGISTER_SECURE(SUPPRESS_WITNESSES_CALLING_POLICE_THIS_FRAME,0x11a68a2ddd8cd574, CommandSuppressWitnessesCallingPoliceThisFrame ); SCR_REGISTER_UNUSED(ENABLE_CNC_STYLE_CRIME_REPORTING,0x443c2153a70d4895, CommandEnableCnCCrimeReporting ); SCR_REGISTER_SECURE(REPORT_POLICE_SPOTTED_PLAYER,0xec1fa12f2050bd84, CommandReportPoliceSpottedPlayer ); SCR_REGISTER_SECURE(SET_LAW_RESPONSE_DELAY_OVERRIDE,0xe831cbc76e6851d3, CommandSetLawResponseDelayOverride ); SCR_REGISTER_SECURE(RESET_LAW_RESPONSE_DELAY_OVERRIDE,0x72555a32a7f6481e, CommandResetLawResponseDelayOverride ); SCR_REGISTER_SECURE(CAN_PLAYER_START_MISSION,0x4965181a7de78866, CommandCanPlayerStartMission ); // NATIVE PROC CAN_PLAYER_START_MISSION( INT PlayerIndex ) SCR_REGISTER_UNUSED(CAN_PLAYER_DO_STEALTH_KILL,0x6a367975aa530ddb, CommandCanPlayerDoStealthKill ); SCR_REGISTER_UNUSED(SET_PLAYER_SAFE_FOR_CUTSCENE,0xf7ff5edcd2c90b51, CommandMakePlayerSafeForCutscene ); // NATIVE PROC SET_PLAYER_SAFE_FOR_CUTSCENE( INT PlayerIndex ) SCR_REGISTER_SECURE(IS_PLAYER_READY_FOR_CUTSCENE,0x682283641e48e60d, CommandIsPlayerReadyForCutscene ); // NATIVE FUNC BOOL IS_PLAYER_READY_FOR_CUTSCENE( INT PlayerIndex ) SCR_REGISTER_SECURE(IS_PLAYER_TARGETTING_ENTITY,0x8bf92a6d56a911eb, CommandIsPlayerTargettingEntity ); // NATIVE PROC IS_PLAYER_TARGETTING_CHAR( INT PlayerIndex, INT CharIndex ) SCR_REGISTER_SECURE(GET_PLAYER_TARGET_ENTITY,0x269c23e72e54a04e, CommandGetPlayerTargetEntity ); SCR_REGISTER_SECURE_HONEYPOT(IS_PLAYER_FREE_AIMING,0x55e78b6aafef4eb8, CommandIsPlayerFreeAiming ); // NATIVE PROC IS_PLAYER_FREE_AIMING( INT PlayerIndex ) SCR_REGISTER_SECURE(IS_PLAYER_FREE_AIMING_AT_ENTITY,0x24e6c39aac2154d0, CommandIsPlayerFreeAimingAtEntity ); // NATIVE PROC IS_PLAYER_FREE_AIMING_AT_PED( INT PlayerIndex, INT CharIndex ) SCR_REGISTER_SECURE(GET_ENTITY_PLAYER_IS_FREE_AIMING_AT,0xfd48978e4e1baa06, CommandGetEntityPlayerIsFreeAimingAt ); SCR_REGISTER_SECURE(SET_PLAYER_LOCKON_RANGE_OVERRIDE,0x37f5f63782291e3b, CommandSetPlayerLockOnRangeOverride ); // NATIVE PROC SET_PLAYER_LOCKON_RANGE_OVERRIDE( INT PlayerIndex, FLOAT Range ) SCR_REGISTER_SECURE(SET_PLAYER_CAN_DO_DRIVE_BY,0xf82507ebd42c6070, CommandSetPlayerCanDoDriveBy ); // NATIVE PROC SET_PLAYER_CAN_DO_DRIVE_BY( INT PlayerIndex, BOOL CanDoDriveBy ) SCR_REGISTER_SECURE(SET_PLAYER_CAN_BE_HASSLED_BY_GANGS,0x9c7e01e1a0eaa797, CommandSetPlayerCanBeHassledByGangs ); SCR_REGISTER_SECURE(SET_PLAYER_CAN_USE_COVER,0x8830bfbe22c483c8, CommandSetPlayerCanUseCover ); // NATIVE PROC SET_PLAYER_CAN_USE_COVER( INT PlayerIndex, BOOL CanDoDriveBy ) SCR_REGISTER_SECURE(GET_MAX_WANTED_LEVEL,0x847ba8d143d888d1, CommandGetMaxWantedLevel ); // NATIVE PROC GET_MAX_WANTED_LEVEL( INT& WantedLevel ) SCR_REGISTER_SECURE(IS_PLAYER_TARGETTING_ANYTHING,0x20f5a2db460ab9bb, CommandIsPlayerTargettingAnything ); // NATIVE PROC IS_PLAYER_TARGETTING_ANYTHING( INT PlayerIndex ) SCR_REGISTER_SECURE(SET_PLAYER_SPRINT,0xb7baa0aa99553c94, CommandSetPlayerSprint ); // NATIVE PROC DISABLE_PLAYER_SPRINT( INT PlayerIndex, bool DisableSprint ) SCR_REGISTER_SECURE(RESET_PLAYER_STAMINA,0x511842c558980f8a, CommandPlayerResetSprintStamina ); SCR_REGISTER_SECURE(RESTORE_PLAYER_STAMINA,0x699b5067386de80c, CommandPlayerRestoreSprintStamina ); SCR_REGISTER_SECURE(GET_PLAYER_SPRINT_STAMINA_REMAINING,0xfdb293b712306c65, CommandGetPlayerSprintStaminaRemaining ); SCR_REGISTER_SECURE(GET_PLAYER_SPRINT_TIME_REMAINING,0x7fb7b029eb5d5a31, CommandGetPlayerSprintTimeRemaining ); // NATIVE FUNC FLOAT GET_PLAYER_SPRINT_TIME_REMAINING( PLAYER_INDEX PlayerIndex ) SCR_REGISTER_SECURE(GET_PLAYER_UNDERWATER_TIME_REMAINING,0x8d856ff63e29934b, CommandGetPlayerUnderwaterTimeRemaining ); // NATIVE FUNC FLOAT GET_PLAYER_UNDERWATER_TIME_REMAINING( PLAYER_INDEX PlayerIndex ) SCR_REGISTER_SECURE(SET_PLAYER_UNDERWATER_BREATH_PERCENT_REMAINING,0xaa17f3802978cc19, CommandPlayerSetUnderwaterBreathingPercentRemaining ); // NATIVE FUNC FLOAT SET_PLAYER_UNDERWATER_BREATH_PERCENT_REMAINING( PLAYER_INDEX PlayerIndex, FLOAT fPercent ) SCR_REGISTER_SECURE(GET_PLAYER_GROUP,0xfd8e434495ec2f26, CommandGetPlayerGroup ); // NATIVE PROC GET_PLAYER_GROUP( INT PlayerIndex, INT& GroupIndex ) SCR_REGISTER_SECURE(GET_PLAYER_MAX_ARMOUR,0x57a3e5a15723f6ca, CommandGetPlayerMaxArmour ); // NATIVE PROC GET_PLAYER_MAX_ARMOUR(INT PlayerIndex, INT& MaxArmour ) SCR_REGISTER_UNUSED(GET_PLAYER_JACK_SPEED,0x881f0bb5bb902a7e, CommandGetPlayerJackSpeed ); SCR_REGISTER_SECURE(IS_PLAYER_CONTROL_ON,0x1c7a1a7e9e4766cf, CommandIsPlayerControlOn ); // NATIVE PROC IS_PLAYER_CONTROL_ON( INT PlayerIndex ) SCR_REGISTER_SECURE(GET_ARE_CAMERA_CONTROLS_DISABLED,0x87694b2faa0fc0c7, CommandGetAreCameraControlsDisabled ); // NATIVE PROC GET_ARE_CAMERA_CONTROLS_DISABLED() SCR_REGISTER_SECURE(IS_PLAYER_SCRIPT_CONTROL_ON,0x9895f96718388657, CommandIsPlayerScriptControlOn ); SCR_REGISTER_SECURE(IS_PLAYER_CLIMBING,0xd28b9359d0f02aca, CommandIsPlayerClimbing ); // NATIVE PROC IS_PLAYER_CLIMBING( INT PlayerIndex ) SCR_REGISTER_UNUSED(IS_PLAYER_SURRENDERING, 0x97848078, CommandIsPlayerSurrendering ); SCR_REGISTER_SECURE(IS_PLAYER_BEING_ARRESTED,0x99c20d75af0fb22e, CommandIsPlayerBeingArrested ); SCR_REGISTER_UNUSED(SET_PLAYER_ARRESTED,0x5d89fd0b951b3e35, CommandSetPlayerArrestedState ); SCR_REGISTER_SECURE(RESET_PLAYER_ARREST_STATE,0x4ef216bdd5c4ca98, CommandResetPlayerArrestState ); SCR_REGISTER_UNUSED(CAN_PLAYER_PERFORM_ARREST,0x14c0b14c939cfeab, CommandCanPlayerPerformArrest ); SCR_REGISTER_SECURE(GET_PLAYERS_LAST_VEHICLE,0x9993ef7fdbcdb632, CommandGetPlayersLastVehicleNoSave ); SCR_REGISTER_SECURE(GET_PLAYER_INDEX,0xb6ba8b8e3d0b41c6, CommandGetPlayerIndex ); // NATIVE FUNC INT GET_PLAYER_POINTS( PLAYER_INDEX PlayerIndex ) SCR_REGISTER_SECURE(INT_TO_PLAYERINDEX,0xa1087a6350cd9244, CommandConvertIntToPlayerIndex ); SCR_REGISTER_SECURE(INT_TO_PARTICIPANTINDEX,0x54f800f95142c750, CommandConvertIntToParticipantIndex ); SCR_REGISTER_SECURE(GET_TIME_SINCE_PLAYER_HIT_VEHICLE,0xafb2d9a35cc1f82d, CommandGetTimeSincePlayerHitVehicle ); SCR_REGISTER_SECURE(GET_TIME_SINCE_PLAYER_HIT_PED,0xb2d0b5ae5881bc0e, CommandGetTimeSincePlayerHitPed ); SCR_REGISTER_UNUSED(GET_TIME_SINCE_PLAYER_HIT_BUILDING,0xaec5115ef4b500ef, CommandGetTimeSincePlayerHitBuilding ); SCR_REGISTER_UNUSED(GET_TIME_SINCE_PLAYER_HIT_OBJECT,0xcfaf27ac3cad2e5a, CommandGetTimeSincePlayerHitObject ); SCR_REGISTER_SECURE(GET_TIME_SINCE_PLAYER_DROVE_ON_PAVEMENT,0x70959fe6aaf74c96, CommandGetTimeSincePlayerDroveOnPavement ); SCR_REGISTER_UNUSED(GET_TIME_SINCE_PLAYER_RAN_LIGHT,0x756550b7f103e66f, CommandGetTimeSincePlayerRanLight ); SCR_REGISTER_SECURE(GET_TIME_SINCE_PLAYER_DROVE_AGAINST_TRAFFIC,0x5962f6054bc15dd5, CommandGetTimeSincePlayerDroveAgainstTraffic); SCR_REGISTER_SECURE(IS_PLAYER_FREE_FOR_AMBIENT_TASK,0x26ddf157f01e6504, CommandIsPlayerFreeForAmbientTask ); SCR_REGISTER_SECURE(PLAYER_ID,0x9e2d6c50374fcfa9, CommandPlayerId ); SCR_REGISTER_SECURE(PLAYER_PED_ID,0xe2d3d51028f0428a, CommandPlayerPedId ); SCR_REGISTER_SECURE(NETWORK_PLAYER_ID_TO_INT,0xa52c4f51ecab7e02, CommandGetPlayerIndex ); SCR_REGISTER_SECURE(HAS_FORCE_CLEANUP_OCCURRED,0x4b34601c5c56f3ee, CommandHasForceCleanupOccurred); SCR_REGISTER_SECURE(FORCE_CLEANUP,0x2481b055c8b5ca09, CommandForceCleanup); SCR_REGISTER_SECURE(FORCE_CLEANUP_FOR_ALL_THREADS_WITH_THIS_NAME,0x7dd73f7f62179990, CommandForceCleanupForAllThreadsWithThisName); SCR_REGISTER_SECURE(FORCE_CLEANUP_FOR_THREAD_WITH_THIS_ID,0xd4798e4f64b31c25, CommandForceCleanupForThreadWithThisID); SCR_REGISTER_SECURE(GET_CAUSE_OF_MOST_RECENT_FORCE_CLEANUP,0x27400a3ffa074f8b, CommandGetCauseOfMostRecentForceCleanup); SCR_REGISTER_UNUSED(SET_PLAYER_MOOD_NORMAL,0x31b4ebc58552715b, CommandSetPlayerMoodNormal ); SCR_REGISTER_SECURE(SET_PLAYER_MAY_ONLY_ENTER_THIS_VEHICLE,0x40da51fc390b094d, CommandSetPlayerMayOnlyEnterThisVehicle ); SCR_REGISTER_SECURE(SET_PLAYER_MAY_NOT_ENTER_ANY_VEHICLE,0x5dd154885519bd3d, CommandSetPlayerNotAllowedEnterAnyVehicle ); SCR_REGISTER_SECURE(GIVE_ACHIEVEMENT_TO_PLAYER,0xb8d77780df8e1242, CommandAwardAchievement); SCR_REGISTER_SECURE(SET_ACHIEVEMENT_PROGRESS,0xee587cff91cf5eda, CommandSetAchievementProgress); SCR_REGISTER_SECURE(GET_ACHIEVEMENT_PROGRESS,0xe70cd2cdee98df14, CommandGetAchievementProgress); SCR_REGISTER_SECURE(HAS_ACHIEVEMENT_BEEN_PASSED,0xda4421f81df4b90d, CommandHasAchievementBeenPassed ); SCR_REGISTER_SECURE(IS_PLAYER_ONLINE,0xc65b603e7942d0db, CommandIsPlayerOnline); SCR_REGISTER_SECURE(IS_PLAYER_LOGGING_IN_NP,0xaa6218da66d7e3ff, CommandIsPlayerLoggingInNp); SCR_REGISTER_UNUSED(IS_PLAYER_ONLINE_NP,0xc0402d65d01d8b65, CommandIsPlayerOnlineNp); SCR_REGISTER_UNUSED(IS_PLAYER_ONLINE_GAMESPY,0xc90b211a7c9b4754, CommandIsPlayerOnlineGamespy); SCR_REGISTER_SECURE(DISPLAY_SYSTEM_SIGNIN_UI,0x7ee945726afadacf, CommandShowSigninUi); SCR_REGISTER_SECURE(IS_SYSTEM_UI_BEING_DISPLAYED,0xdfa2e5162727d6d2, CommandIsSytemUiShowing); SCR_REGISTER_SECURE_HONEYPOT(SET_PLAYER_INVINCIBLE,0xc099da307dd6bc62, CommandSetPlayerInvincible); SCR_REGISTER_SECURE(GET_PLAYER_INVINCIBLE,0xf81d8e7ed654a736, CommandGetPlayerInvincible); SCR_REGISTER_SECURE(GET_PLAYER_DEBUG_INVINCIBLE,0x76df66470b55ae8f, CommandGetPlayerDebugInvincible); SCR_REGISTER_SECURE(SET_PLAYER_INVINCIBLE_BUT_HAS_REACTIONS,0x7e9ca7389ef595e6, CommandSetPlayerInvincibleButHasReactions); SCR_REGISTER_UNUSED(SET_PLAYER_CAN_CARRY_NON_MISSION_OBJECTS, 0x54b0c19b, CommandAllowPlayerToCarryNonMissionObjects); SCR_REGISTER_SECURE(SET_PLAYER_CAN_COLLECT_DROPPED_MONEY,0x01a3f029bd732372, CommandSetPlayerCanCollectDroppedMoney); SCR_REGISTER_UNUSED(SET_PLAYER_CAN_USE_VEHICLE_SEARCH_LIGHT,0xd16bed9cfa9181a9, CommandSetPlayerCanUseVehicleSearchLight); SCR_REGISTER_SECURE(REMOVE_PLAYER_HELMET,0x2f163a300f34f245, CommandRemovePlayerHelmet); SCR_REGISTER_SECURE(GIVE_PLAYER_RAGDOLL_CONTROL,0xb5e6954fe3fb7cce, CommandGivePlayerRagdollControl); SCR_REGISTER_SECURE(SET_PLAYER_LOCKON,0x05611fa30193f5b5, CommandSetPlayerLockon); SCR_REGISTER_UNUSED(SET_LOCKON_TO_FRIENDLY_PLAYERS,0x074d7227ca41020a, CommandAllowLockonToFriendlyPlayers); SCR_REGISTER_SECURE(SET_PLAYER_TARGETING_MODE,0x74970e4fa8f6b345, CommandSetPlayerTargetingMode); SCR_REGISTER_UNUSED(GET_PLAYER_TARGETING_MODE,0x2751fbc4e04e92f4, CommandGetPlayerTargetingMode); SCR_REGISTER_SECURE(SET_PLAYER_TARGET_LEVEL,0x50a5fc22a168dda2, CommandSetPlayerTargetLevel); SCR_REGISTER_SECURE(GET_IS_USING_FPS_THIRD_PERSON_COVER,0x425d4ff8ff23ee78, CommandIsUsingFPSThirdPersonCover); SCR_REGISTER_SECURE(GET_IS_USING_HOOD_CAMERA,0x64edc8d24bf9eec0, CommandIsUsingHoodCamera); SCR_REGISTER_UNUSED(GET_OBJECT_PLAYER_WILL_PICKUP,0x0757a4b70196ab75, CommandWhatWillPlayerPickup); SCR_REGISTER_SECURE(CLEAR_PLAYER_HAS_DAMAGED_AT_LEAST_ONE_PED,0x3c2a46bb06553cee, CommandClearPlayerHasDamagedAtLeastOnePed); SCR_REGISTER_SECURE(HAS_PLAYER_DAMAGED_AT_LEAST_ONE_PED,0x51223ab40e2f620e, CommandHasPlayerDamagedAtLeastOnePed); SCR_REGISTER_SECURE(CLEAR_PLAYER_HAS_DAMAGED_AT_LEAST_ONE_NON_ANIMAL_PED,0xf01ad4af166855d2, CommandClearPlayerHasDamagedAtLeastOneNonAnimalPed); SCR_REGISTER_SECURE(HAS_PLAYER_DAMAGED_AT_LEAST_ONE_NON_ANIMAL_PED,0x7246ae6e7c9ca089, CommandHasPlayerDamagedAtLeastOneNonAnimalPed); SCR_REGISTER_SECURE(SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE,0xcf7f6e047025528c, CommandForceAirDragMultForPlayersVehicle); SCR_REGISTER_SECURE(SET_SWIM_MULTIPLIER_FOR_PLAYER,0xc04f56833375054e, CommandSetSwimMultiplierForPlayer); SCR_REGISTER_SECURE(SET_RUN_SPRINT_MULTIPLIER_FOR_PLAYER,0x0c6ebabc089a80be, CommandSetRunSprintMultiplierForPlayer); SCR_REGISTER_SECURE(GET_TIME_SINCE_LAST_ARREST,0x6824a90851dbf244, CommandGetTimeSinceLastArrest); SCR_REGISTER_SECURE(GET_TIME_SINCE_LAST_DEATH,0x23c8a58f6f1c9b52, CommandGetTimeSinceLastDeath); SCR_REGISTER_UNUSED(GET_TRAIN_PLAYER_WOULD_ENTER,0x04c13134f5cb89d1, CommandGetTrainPlayerWouldEnter); SCR_REGISTER_UNUSED(DISPLAY_PLAYER_COMPONENT,0x7e6a207868f07b7d, CommandSetDrawPlayerComponent); SCR_REGISTER_UNUSED(DOES_MAIN_PLAYER_EXIST,0x5a0286552d34c344, CommandDoesMainPlayerExist); SCR_REGISTER_UNUSED(ASSISTED_MOVEMENT_OPEN_ROUTE,0x5b9800e127b28910, CommandAssistedMovementOpenRoute); SCR_REGISTER_SECURE(ASSISTED_MOVEMENT_CLOSE_ROUTE,0x647dc34f84b77534, CommandAssistedMovementCloseRoute); SCR_REGISTER_SECURE(ASSISTED_MOVEMENT_FLUSH_ROUTE,0x662e7343c29d10eb, CommandAssistedMovementFlushRoute); SCR_REGISTER_UNUSED(ASSISTED_MOVEMENT_ADD_POINT,0xb2a3c724543d6261, CommandAssistedMovementAddPoint); SCR_REGISTER_UNUSED(ASSISTED_MOVEMENT_SET_WIDTH, 0x76ffd005, CommandAssistedMovementSetWidth); SCR_REGISTER_UNUSED(ASSISTED_MOVEMENT_IS_ON_ANY_ROUTE,0x977fc240046bc725, CommandAssistedMovementIsOnAnyRoute); SCR_REGISTER_UNUSED(ASSISTED_MOVEMENT_IS_ON_SCRIPTED_ROUTE,0xc2e604bb77c0436c, CommandAssistedMovementIsOnScriptedRoute); SCR_REGISTER_SECURE(SET_PLAYER_FORCED_AIM,0xf5a5b768549ee604, CommandSetPlayerForcedAim); SCR_REGISTER_SECURE(SET_PLAYER_FORCED_ZOOM,0x921859563fe3c7d8, CommandSetPlayerForcedZoom); SCR_REGISTER_SECURE(SET_PLAYER_FORCE_SKIP_AIM_INTRO,0x29bd7dc6acd28546, CommandSetPlayerForceSkipAimIntro); SCR_REGISTER_UNUSED(SET_PLAYER_MAX_MOVE_BLEND_RATIO,0xea6ca3528cf9441b, CommandSetPlayerMaxMoveBlendRatio); SCR_REGISTER_UNUSED(SET_INVERT_PLAYER_WALK,0xdc6bf5ef8e0e75e7, CommandSetInvertPlayerWalk); SCR_REGISTER_SECURE(DISABLE_PLAYER_FIRING,0xb07ec4599255161e, CommandDisablePlayerFiring); SCR_REGISTER_SECURE(DISABLE_PLAYER_THROW_GRENADE_WHILE_USING_GUN,0x4ad02a972d2153c3, CommandDisablePlayerThrowingGrenadeWhileUsingGun); SCR_REGISTER_SECURE(SET_DISABLE_AMBIENT_MELEE_MOVE,0x0917a1352a09c319, CommandSetDisableAmbientMeleeMove); SCR_REGISTER_UNUSED(SET_PLAYER_JACK_SPEED,0xc4fa1b1238f97dda, CommandSetPlayerJackSpeed); SCR_REGISTER_UNUSED(SET_PLAYER_STEALTH_SPEED,0x59f960d6f9f18040, CommandSetPlayerStealthSpeed); SCR_REGISTER_SECURE(SET_PLAYER_MAX_ARMOUR,0x89a7d91fa86a73f1, CommandSetPlayerMaxArmour); SCR_REGISTER_UNUSED(GET_PLAYER_SELECTED_ABILITY_SLOT,0xb82d8d9ea7aba971, CommandGetPlayerSelectedAbilitySlot); SCR_REGISTER_SECURE(SPECIAL_ABILITY_ACTIVATE,0xaef827744eca5aea, CommandSpecialAbilityActivate); SCR_REGISTER_UNUSED(CAN_SPECIAL_ABILITY_BE_ACTIVATED,0x515321622d11b14c, CommandCanSpecialAbilityBeActivated); SCR_REGISTER_UNUSED(CAN_SPECIAL_ABILITY_BE_SELECTED_IN_ARCADE_MODE,0x4149c64e5fcc4466, CommandCanSpecialAbilityBeSelectedInArcadeMode); SCR_REGISTER_SECURE(SET_SPECIAL_ABILITY_MP,0x5134e3f4c3ed2572, CommandSetSpecialAbilityMP); SCR_REGISTER_UNUSED(GET_LOCAL_PLAYER_SPECIAL_ABILITY_MP,0x40df36b3febdd50c, CommandGetLocalPlayerSpecialAbilityMP); SCR_REGISTER_SECURE(SPECIAL_ABILITY_DEACTIVATE_MP,0x3a6863cc483284fd, CommandSpecialAbilityDeactivateMP); SCR_REGISTER_SECURE(SPECIAL_ABILITY_DEACTIVATE,0xc204033758e4127f, CommandSpecialAbilityDeactivate); SCR_REGISTER_SECURE(SPECIAL_ABILITY_DEACTIVATE_FAST,0x85b547885d8f8b40, CommandSpecialAbilityDeactivateFast); SCR_REGISTER_SECURE(SPECIAL_ABILITY_RESET,0xc59f3672444b1ee5, CommandSpecialAbilityReset); SCR_REGISTER_SECURE(SPECIAL_ABILITY_CHARGE_ON_MISSION_FAILED,0xa131cc850da50cf0, CommandSpecialAbilityChargeOnMissionFailed); SCR_REGISTER_SECURE(SPECIAL_ABILITY_CHARGE_SMALL,0x7c94b5047d73de57, CommandSpecialAbilityChargeSmall); SCR_REGISTER_SECURE(SPECIAL_ABILITY_CHARGE_MEDIUM,0x3f2a203e395eb931, CommandSpecialAbilityChargeMedium); SCR_REGISTER_SECURE(SPECIAL_ABILITY_CHARGE_LARGE,0x06055697ad0bc5eb, CommandSpecialAbilityChargeLarge); SCR_REGISTER_SECURE(SPECIAL_ABILITY_CHARGE_CONTINUOUS,0x38a059a79a45e98d, CommandSpecialAbilityChargeContinuous); SCR_REGISTER_SECURE(SPECIAL_ABILITY_CHARGE_ABSOLUTE,0x8c8a3177ffab2a2d, CommandSpecialAbilityChargeAbsolute); SCR_REGISTER_SECURE(SPECIAL_ABILITY_CHARGE_NORMALIZED,0x266e4b6e6c97e2cb, CommandSpecialAbilityChargeNormalized); SCR_REGISTER_SECURE(SPECIAL_ABILITY_FILL_METER,0x6dd7ec85b970fff8, CommandSpecialAbilityFillMeter); SCR_REGISTER_SECURE(SPECIAL_ABILITY_DEPLETE_METER,0x8c6a1e9558ae8255, CommandSpecialAbilityDepleteMeter); SCR_REGISTER_SECURE(SPECIAL_ABILITY_LOCK,0x36f8265cd4c1dc7b, CommandSpecialAbilityLock); SCR_REGISTER_SECURE(SPECIAL_ABILITY_UNLOCK,0x9af618154f4af9d7, CommandSpecialAbilityUnlock); SCR_REGISTER_UNUSED(GET_SPECIAL_ABILITY_REMAINING_PERCENTAGE,0x9c2aba0bdeb048e7, CommandGetSpecialAbilityRemainingPercentage); SCR_REGISTER_SECURE(IS_SPECIAL_ABILITY_UNLOCKED,0xbde74e4e16908df5, CommandIsSpecialAbilityUnlocked); SCR_REGISTER_SECURE(IS_SPECIAL_ABILITY_ACTIVE,0xa89c6f3818cc3acb, CommandIsSpecialAbilityActive); SCR_REGISTER_SECURE(IS_SPECIAL_ABILITY_METER_FULL,0xc9eabec2eb7eac4a, CommandIsSpecialAbilityMeterFull); SCR_REGISTER_SECURE(ENABLE_SPECIAL_ABILITY,0x9f1fd386a42a87da, CommandEnableSpecialAbility); SCR_REGISTER_SECURE(IS_SPECIAL_ABILITY_ENABLED,0x74eacb77c7688f1c, CommandIsSpecialAbilityEnabled); SCR_REGISTER_SECURE(SET_SPECIAL_ABILITY_MULTIPLIER,0xe4fd06c1760ec85e, CommandSetSpecialAbilityMultiplier); SCR_REGISTER_SECURE(UPDATE_SPECIAL_ABILITY_FROM_STAT,0xd7072950313d43d7, CommandUpdateSpecialAbilityFromStat); SCR_REGISTER_UNUSED(START_LOCAL_PLAYER_SPECIAL_ABILITY_FX,0xb97d5fbf7d02b645, CommandStartLocalPlayerSpecialAbilityFX); SCR_REGISTER_UNUSED(STOP_LOCAL_PLAYER_SPECIAL_ABILITY_FX,0x43d20c82aa9fe610, CommandStopLocalPlayerSpecialAbilityFX); SCR_REGISTER_UNUSED(INIITIALISE_ARCADE_ABILITIES,0x66276c0759050711, CommandInitialiseArcadeAbilities); SCR_REGISTER_UNUSED(ACTIVATE_ARCADE_ABILITY,0xeba93b47c5c09cbf, CommandActivateArcadeAbility); SCR_REGISTER_UNUSED(DEACTIVATE_ARCADE_ABILITY,0xdd5e360eb2170111, CommandDeactivateArcadeAbility); SCR_REGISTER_UNUSED(IS_ARCADE_ABILITY_ACTIVE,0x582155efa93aad59, CommandIsArcadeAbilityActive); SCR_REGISTER_UNUSED(SET_ARCADE_ABILITY_MODIFIER,0x8e6fd476c8c37b82, CommandSetArcadeAbilityModifier); SCR_REGISTER_UNUSED(GET_ARCADE_ABILITY_MODIFIER,0x9d33969ae27b02be, CommandGetArcadeAbilityModifier); SCR_REGISTER_UNUSED(CLEANUP_ARCADE_ABILITIES,0xb4ade47c2ec2a996, CommandCleanupArcadeAbilities); SCR_REGISTER_UNUSED(GET_PLAYER_ARCADE_TEAM,0xd657131873bca926, CommandGetArcadeTeam); SCR_REGISTER_UNUSED(GET_PLAYER_ARCADE_ROLE,0x85f98c2154092a64, CommandGetArcadeRole); SCR_REGISTER_UNUSED(SET_PLAYER_ARCADE_TEAM_AND_ROLE,0x4d0990bbcea4e345, CommandSetArcadeTeamAndRole); SCR_REGISTER_UNUSED(SET_LOCAL_PLAYER_ARCADE_ACTIVE_VEHICLE,0x74ab49aab277a3cc, CommandSetLocalPlayerArcadeActiveVehicle); SCR_REGISTER_SECURE(GET_IS_PLAYER_DRIVING_ON_HIGHWAY,0xe7cdc562b263ca12, CommandGetIsPlayerDrivingOnHighway); SCR_REGISTER_SECURE(GET_IS_PLAYER_DRIVING_WRECKLESS,0xf2162c96615104e4, CommandGetIsPlayerDrivingWreckless); SCR_REGISTER_SECURE(GET_IS_MOPPING_AREA_FREE_IN_FRONT_OF_PLAYER,0xa61d663494402396, CommandGetIsMoppingAreaFreeInFrontOfPlayer); SCR_REGISTER_UNUSED(GET_LAST_NEAR_MISS_VEHICLE,0x2f6194032ec5ec20, CommandGetLastNearMissVehicle); SCR_REGISTER_UNUSED(GET_TIME_SINCE_LAST_NEAR_MISS,0x6bdcc60e2c06d024, CommandGetTimeSinceLastNearMiss); SCR_REGISTER_SECURE(START_PLAYER_TELEPORT,0x8a87922c72f578ec, CommandStartPlayerTeleport); SCR_REGISTER_SECURE(UPDATE_PLAYER_TELEPORT,0x0c752c2ccfc18307, CommandUpdatePlayerTeleport); SCR_REGISTER_SECURE(STOP_PLAYER_TELEPORT,0x093f334b2f3729db, CommandStopPlayerTeleport); SCR_REGISTER_SECURE(IS_PLAYER_TELEPORT_ACTIVE,0xbc4351060befb0d2, CommandIsPlayerTeleportActive); SCR_REGISTER_SECURE(GET_PLAYER_CURRENT_STEALTH_NOISE,0x62dde94612b5849e, CommandGetPlayerCurrentStealthNoise); SCR_REGISTER_SECURE(SET_PLAYER_HEALTH_RECHARGE_MULTIPLIER,0xc0d061dfdaf121ee, CommandSetPlayerHealthRechargeMultiplier); SCR_REGISTER_SECURE(GET_PLAYER_HEALTH_RECHARGE_MAX_PERCENT,0x3c2c079ce6f46b91, CommandGetPlayerHealthRechargeMaxPercent); SCR_REGISTER_SECURE(SET_PLAYER_HEALTH_RECHARGE_MAX_PERCENT,0x7effc69e5350eed6, CommandSetPlayerHealthRechargeMaxPercent); SCR_REGISTER_UNUSED(DISABLE_PLAYER_HEALTH_RECHARGE,0x196e0bb6e33c96bb, CommandDisablePlayerHealthRecharge); SCR_REGISTER_UNUSED(GET_PLAYER_FALL_DISTANCE_TO_TRIGGER_RAGDOLL_OVERRIDE,0xef60704068e3e7c1, CommandGetPlayerFallDistanceToTriggerRagdollOverride); SCR_REGISTER_SECURE(SET_PLAYER_FALL_DISTANCE_TO_TRIGGER_RAGDOLL_OVERRIDE,0x9d4c11eeebeddcff, CommandSetPlayerFallDistanceToTriggerRagdollOverride); SCR_REGISTER_SECURE(SET_PLAYER_WEAPON_DAMAGE_MODIFIER,0xd27f869625866850, CommandSetPlayerWeaponDamageModifier); SCR_REGISTER_SECURE(SET_PLAYER_WEAPON_DEFENSE_MODIFIER,0xefe4775047323c19, CommandSetPlayerWeaponDefenseModifier); SCR_REGISTER_SECURE(SET_PLAYER_WEAPON_MINIGUN_DEFENSE_MODIFIER,0xbf94e55ee11dabdf, CommandSetPlayerWeaponMinigunDefenseModifier); SCR_REGISTER_SECURE(SET_PLAYER_MELEE_WEAPON_DAMAGE_MODIFIER,0xabb7c36b502bf82e, CommandSetPlayerMeleeWeaponDamageModifier); SCR_REGISTER_SECURE(SET_PLAYER_MELEE_WEAPON_DEFENSE_MODIFIER,0x59c6987f8fa159ba, CommandSetPlayerMeleeWeaponDefenseModifier); SCR_REGISTER_UNUSED(SET_PLAYER_MELEE_WEAPON_FORCE_MODIFIER,0x6183b4f11f0b8d09, CommandSetPlayerMeleeWeaponForceModifier); SCR_REGISTER_SECURE(SET_PLAYER_VEHICLE_DAMAGE_MODIFIER,0x12aa10f5fac06542, CommandSetPlayerVehicleDamageModifier); SCR_REGISTER_SECURE(SET_PLAYER_VEHICLE_DEFENSE_MODIFIER,0x0acd4d4123d79892, CommandSetPlayerVehicleDefenseModifier); SCR_REGISTER_SECURE(SET_PLAYER_MAX_EXPLOSIVE_DAMAGE,0xfa556584ae68db4b, CommandSetPlayerMaxExplosiveDamage); SCR_REGISTER_SECURE(SET_PLAYER_EXPLOSIVE_DAMAGE_MODIFIER,0x9b8b6c9b77039457, CommandSetPlayerExplosiveDamageModifier); SCR_REGISTER_SECURE(SET_PLAYER_WEAPON_TAKEDOWN_DEFENSE_MODIFIER,0x9e5ca28f9b676421, CommandSetPlayerWeaponTakedownDefenseModifier); SCR_REGISTER_SECURE(SET_PLAYER_PARACHUTE_TINT_INDEX,0x5b315b77ff0579f4, CommandSetPlayerParachuteTintIndex); SCR_REGISTER_SECURE(GET_PLAYER_PARACHUTE_TINT_INDEX,0xfc2bfa7cbd781b8f, CommandGetPlayerParachuteTintIndex); SCR_REGISTER_SECURE(SET_PLAYER_RESERVE_PARACHUTE_TINT_INDEX,0x4ffa0b650332a748, CommandSetPlayerReserveParachuteTintIndex); SCR_REGISTER_SECURE(GET_PLAYER_RESERVE_PARACHUTE_TINT_INDEX,0x4d70bbbc048f9efe, CommandGetPlayerReserveParachuteTintIndex); SCR_REGISTER_SECURE(SET_PLAYER_PARACHUTE_PACK_TINT_INDEX,0x6a9da6a45b05cbac, CommandSetPlayerParachutePackTintIndex); SCR_REGISTER_SECURE(GET_PLAYER_PARACHUTE_PACK_TINT_INDEX,0x5a52ede69663ab67, CommandGetPlayerParachutePackTintIndex); SCR_REGISTER_SECURE(SET_PLAYER_HAS_RESERVE_PARACHUTE,0xadaf9b9713526673, CommandSetPlayerHasReserveParachute); SCR_REGISTER_SECURE(GET_PLAYER_HAS_RESERVE_PARACHUTE,0xe37296e8bded7a5c, CommandGetPlayerHasReserveParachute); SCR_REGISTER_SECURE(SET_PLAYER_CAN_LEAVE_PARACHUTE_SMOKE_TRAIL,0x0b5cb004ea93110f, CommandSetPlayerCanLeaveParachuteSmokeTrail); SCR_REGISTER_SECURE(SET_PLAYER_PARACHUTE_SMOKE_TRAIL_COLOR,0x2a4c3472cd44ab3c, CommandSetPlayerParachuteSmokeTrailColor); SCR_REGISTER_SECURE(GET_PLAYER_PARACHUTE_SMOKE_TRAIL_COLOR,0x593c0beb67fa713d, CommandGetPlayerParachuteSmokeTrailColor); SCR_REGISTER_UNUSED(SET_PLAYER_RESET_FLAG_PREFER_REAR_SEATS,0x11d2f13707a54f0a, CommandsSetPlayerResetFlagPreferRearSeats); SCR_REGISTER_UNUSED(SET_PLAYER_RESET_FLAG_PREFER_FRONT_PASSENGER_SEAT,0x5f013a06717af95a, CommandsSetPlayerResetFlagPreferFrontPassengerSeat); SCR_REGISTER_SECURE(SET_PLAYER_PHONE_PALETTE_IDX,0x801bbd5e2830170e, CommandSetPlayerPhonePaletteIdx); SCR_REGISTER_UNUSED(GET_PLAYER_PHONE_PALETTE_IDX,0x01cbf2e57ed4fcf1, CommandGetPlayerPhonePaletteIdx); SCR_REGISTER_UNUSED(SET_DISPLAY_PLAYER_DAMAGE_INFO,0xde816b2a86175f36, CommandSetDisplayPlayerDamageInfo); SCR_REGISTER_UNUSED(GET_PLAYER_NOISE_MULTIPLIER,0x0275327f7112d849, CommandGetPlayerNoiseMultiplier); SCR_REGISTER_SECURE(SET_PLAYER_NOISE_MULTIPLIER,0xf3e520d4ddfe531b, CommandSetPlayerNoiseMultiplier); SCR_REGISTER_SECURE(SET_PLAYER_SNEAKING_NOISE_MULTIPLIER,0xa79405544d13368b, CommandSetPlayerSneakingNoiseMultiplier); SCR_REGISTER_SECURE(CAN_PED_HEAR_PLAYER,0x42a51c8e69566474, CommandCanPedHearPlayer); SCR_REGISTER_SECURE(SIMULATE_PLAYER_INPUT_GAIT,0x44b88fb74a8ddc72, CommandSimulatePlayerInputGait); SCR_REGISTER_SECURE(RESET_PLAYER_INPUT_GAIT,0x2fa820332400f593, CommandResetPlayerInputGait); SCR_REGISTER_SECURE(SET_AUTO_GIVE_PARACHUTE_WHEN_ENTER_PLANE,0xc5504757fd12bb7b, CommandSetAutoGiveParachuteWhenEnterPlane); SCR_REGISTER_SECURE(SET_AUTO_GIVE_SCUBA_GEAR_WHEN_EXIT_VEHICLE,0xc7bfb1837a4167db, CommandSetAutoGiveScubaGearWhenExitVehicle); SCR_REGISTER_SECURE(SET_PLAYER_STEALTH_PERCEPTION_MODIFIER,0xa5695a8b4fdb4f5e, CommandSetPlayerStealthPerceptionModifier); SCR_REGISTER_UNUSED(GET_PLAYER_STEALTH_PERCEPTION_MODIFIER,0x3288b5aa51284100, CommandGetPlayerStealthPerceptionModifier); SCR_REGISTER_SECURE(IS_REMOTE_PLAYER_IN_NON_CLONED_VEHICLE,0xe1e3700d85b26c1b, CommandIsRemotePlayerInNonClonedVehicle); SCR_REGISTER_SECURE(INCREASE_PLAYER_JUMP_SUPPRESSION_RANGE,0x7544277489901b13, CommandIncreasePlayerJumpSuppressionRange); SCR_REGISTER_SECURE(SET_PLAYER_SIMULATE_AIMING,0xe528977784fc248a, CommandSetPlayerSimulateAiming); SCR_REGISTER_SECURE(SET_PLAYER_CLOTH_PIN_FRAMES,0x1dd4b2f07d800518, CommandSetPlayerClothPinFrames); SCR_REGISTER_SECURE(SET_PLAYER_CLOTH_PACKAGE_INDEX,0x3c42bb73c8569132, CommandSetPlayerClothPackageIndex); SCR_REGISTER_SECURE(SET_PLAYER_CLOTH_LOCK_COUNTER,0x148b70d5e8887d3f, CommandSetPlayerClothLockCounter); SCR_REGISTER_SECURE(PLAYER_ATTACH_VIRTUAL_BOUND,0x45ab8ba30f865cb3, CommandPlayerAttachVirtualBound); SCR_REGISTER_SECURE(PLAYER_DETACH_VIRTUAL_BOUND,0x0040caada929b9a5, CommandPlayerDetachVirtualBound); SCR_REGISTER_SECURE(HAS_PLAYER_BEEN_SPOTTED_IN_STOLEN_VEHICLE,0xbeeefdea6103f9d5, CommandHasPlayerBeenSpottedInStolenVehicle); SCR_REGISTER_UNUSED(GET_SPOTTER_OF_PLAYER_IN_STOLEN_VEHICLE,0x3b9b5f040dbecaa3, CommandGetSpotterOfPlayerInStolenVehicle); SCR_REGISTER_UNUSED(SET_PLAYER_TO_USE_COVER_THREAT_WEIGHTING,0xd7ec8c7119c8f543, CommandSetPlayerToUseCoverThreatWeighting); SCR_REGISTER_SECURE(IS_PLAYER_BATTLE_AWARE,0xaf3f5649b6d00465, CommandIsPlayerBattleAware); SCR_REGISTER_SECURE(GET_PLAYER_RECEIVED_BATTLE_EVENT_RECENTLY,0x97e6091aa1973956, CommandPlayerReceivedBattleEventRecently); SCR_REGISTER_SECURE(EXTEND_WORLD_BOUNDARY_FOR_PLAYER,0xf9b446afd56f5445, CommandExtendWorldBoundaryForPlayer); SCR_REGISTER_SECURE(RESET_WORLD_BOUNDARY_FOR_PLAYER,0xc6c76b77086d3daa, CommandResetWorldBoundaryForPlayer); SCR_REGISTER_SECURE(IS_PLAYER_RIDING_TRAIN,0xe267eaf3df9f6bd1, CommandIsPlayerRidingTrain); SCR_REGISTER_SECURE(HAS_PLAYER_LEFT_THE_WORLD,0x4f9fbd9d1f101839, CommandHasPlayerLeftTheWorld); SCR_REGISTER_UNUSED(DISABLE_DISPATCH_HELI_REFUELING,0x881ac55434ed380a, CommandDisableDispatchHeliRefueling); SCR_REGISTER_UNUSED(DISABLE_HELI_DESTROYED_DISPATCH_SPAWN_DELAY,0x139c854370f25197, CommandDisableHeliDestroyedDispatchSpawnDelay); SCR_REGISTER_SECURE(SET_PLAYER_LEAVE_PED_BEHIND,0xedd6fa5743d3a359, CommandSetPlayerLeavePedBehind); SCR_REGISTER_SECURE(SET_PLAYER_PARACHUTE_VARIATION_OVERRIDE,0x5663081cf61457eb, CommandSetPlayerParachuteVariationOverride); SCR_REGISTER_SECURE(CLEAR_PLAYER_PARACHUTE_VARIATION_OVERRIDE,0xdfce9946492b1ebb, CommandClearPlayerParachuteVariationOverride); SCR_REGISTER_SECURE(SET_PLAYER_PARACHUTE_MODEL_OVERRIDE,0x4b91103eae3ecfbb, CommandSetPlayerParachuteModelOverride); SCR_REGISTER_SECURE(SET_PLAYER_RESERVE_PARACHUTE_MODEL_OVERRIDE,0x97a7e5b40d58666e, CommandSetPlayerReserveParachuteModelOverride); SCR_REGISTER_SECURE(GET_PLAYER_PARACHUTE_MODEL_OVERRIDE,0x64180d3cb343acf9, CommandGetPlayerParachuteModelOverride); SCR_REGISTER_SECURE(GET_PLAYER_RESERVE_PARACHUTE_MODEL_OVERRIDE,0x4ace43a0376677b0, CommandGetPlayerReserveParachuteModelOverride); SCR_REGISTER_SECURE(CLEAR_PLAYER_PARACHUTE_MODEL_OVERRIDE,0x0dedd914eb7a1ce6, CommandClearPlayerParachuteModelOverride); SCR_REGISTER_SECURE(CLEAR_PLAYER_RESERVE_PARACHUTE_MODEL_OVERRIDE,0x812f5aaf0bbe170f, CommandClearPlayerReserveParachuteModelOverride); SCR_REGISTER_SECURE(SET_PLAYER_PARACHUTE_PACK_MODEL_OVERRIDE,0xd386a07b18792f21, CommandSetPlayerParachutePackModelOverride); SCR_REGISTER_SECURE(CLEAR_PLAYER_PARACHUTE_PACK_MODEL_OVERRIDE,0xd07bc41548db6391, CommandClearPlayerParachutePackModelOverride); SCR_REGISTER_SECURE(DISABLE_PLAYER_VEHICLE_REWARDS,0x73d32b6c724386d4, CommandDisablePlayerVehicleRewards); SCR_REGISTER_UNUSED(DISABLE_WANTED_REL_GROUP_RESET_THIS_FRAME,0xa975b6508bf58958, CommandDisableWantedRelationshipGroupReset); SCR_REGISTER_UNUSED(IS_PLAYER_SPECTATED_VEHICLE_RADIO_OVERRIDE,0x6dafc808e24c0ded, CommandIsPlayerSpectatedVehicleRadioOverride); SCR_REGISTER_SECURE(SET_PLAYER_SPECTATED_VEHICLE_RADIO_OVERRIDE,0x904a1a06bb7d0b76, CommandSetPlayerSpectatedVehicleRadioOverride); SCR_REGISTER_SECURE(SET_PLAYER_BLUETOOTH_STATE,0x6f5a4936c4df72a0, CommandEnableBlueToothHeadSet); SCR_REGISTER_SECURE(IS_PLAYER_BLUETOOTH_ENABLE,0xae84a55f7e62c04c, CommandGetEnableBlueToothHeadSet); SCR_REGISTER_SECURE(DISABLE_CAMERA_VIEW_MODE_CYCLE,0x1784ea330ee3ad4e, CommandDisableCameraViewModeCycle); SCR_REGISTER_SECURE(GET_PLAYER_FAKE_WANTED_LEVEL,0x161c7b2e8d844c6c, CommandGetPlayerFakeWantedLevel); SCR_REGISTER_SECURE(SET_PLAYER_CAN_DAMAGE_PLAYER,0x6abb3d68b10d5597, CommandSetPlayerCanDamagePlayer); SCR_REGISTER_SECURE(SET_APPLY_WAYPOINT_OF_PLAYER,0xc8004c24dae59107, CommandSetApplyWaypointOfPlayer); SCR_REGISTER_SECURE(IS_PLAYER_VEHICLE_WEAPON_TOGGLED_TO_NON_HOMING,0xd21ca22014584990, CommandIsPlayerVehicleWeaponToggledToNonHoming); SCR_REGISTER_SECURE(SET_PLAYER_VEHICLE_WEAPON_TO_NON_HOMING,0x86ac447a712352ff, CommandSetPlayerVehicleWeaponToNonHoming); SCR_REGISTER_SECURE(SET_PLAYER_HOMING_DISABLED_FOR_ALL_VEHICLE_WEAPONS,0x15167583e169ed45, CommandSetPlayerHomingDisabledForAllVehicleWeapons); SCR_REGISTER_SECURE(ADD_PLAYER_TARGETABLE_ENTITY,0x07e8eabdfe9fdf42, CommandAddPlayerTargetableEntity); SCR_REGISTER_SECURE(REMOVE_PLAYER_TARGETABLE_ENTITY,0x86841c9019b7f41c, CommandRemovePlayerTargetableEntity); SCR_REGISTER_UNUSED(CLEAR_PLAYER_TARGETABLE_ENTITIES,0x4afaed887f949d14, CommandClearPlayerTargetableEntities); SCR_REGISTER_UNUSED(GET_IS_ENTITY_IN_TARGETABLE_BY_PLAYER_ARRAY,0x2d676bf42a0cf7fa, CommandGetIsEntityInTargetableByPlayerArray); SCR_REGISTER_SECURE(SET_PLAYER_PREVIOUS_VARIATION_DATA,0x8840802df7e20b30, CommandSetPlayerPreviousVariationData); SCR_REGISTER_SECURE(REMOVE_SCRIPT_FIRE_POSITION,0x483de9cec1cbfd93, CommandRemoveScriptFirePosition); SCR_REGISTER_SECURE(SET_SCRIPT_FIRE_POSITION,0x23793ff4ded698b1, CommandSetScriptFirePosition); } } // end of namespace player_commands