Sourcegta 6
Sourcegta 6
h"
#include "fwanimation/directorcomponentsyncedscene.h"
#include "fwscene/stores/networkdefstore.h"
#include "fwscene/stores/framefilterdictionarystore.h"
#include "script/commands_task.h"
#include "script/wrapper.h"
#include "script/thread.h"
//Game headers
#include "ai/debug/system/AIDebugLogManager.h"
#include "animation/AnimDefines.h"
#include "animation/Move.h"
#include "control/WaypointRecording.h"
#include "control/replay/replay.h"
#include "event/EventShocking.h"
#include "event/EventWeapon.h"
#include "event/ShockingEvents.h"
#include "game/ModelIndices.h"
#include "math/angmath.h"
#include "network/NetworkInterface.h"
#include "network/Events/NetworkEventTypes.h"
#include "peds/PedFactory.h"
#include "peds/PedHelmetComponent.h"
#include "peds/PedIntelligence.h"
#include "peds/Pedpopulation.h"
#include "peds/PedTaskRecord.h"
#include "peds/Ped.h"
#include "peds/WildlifeManager.h"
#include "physics/WorldProbe/worldprobe.h"
#include "physics/RagdollConstraints.h"
#include "pickups/Pickup.h"
#include "pickups/PickupPlacement.h"
#include "scene/world/GameWorld.h"
#include "fwpheffects/ropemanager.h"
#include "fwscene/search/SearchVolumes.h"
#include "script/Handlers/GameScriptEntity.h"
#include "script/Handlers/GameScriptResources.h"
#include "script/Handlers/GameScriptMgr.h"
#include "script/scrchannel.h"
#include "script/script.h"
#include "script/script_cars_and_peds.h"
#include "script/script_helper.h"
#include "script/ScriptTaskTypes.h"
#include "script/commands_waypoint.h"
#include "script/commands_entity.h"
#include "streaming/streaming.h"
#include "Task/Animation/TaskMoveScripted.h"
#include "Task/Combat/Cover/Cover.h"
#include "Task/Combat/TaskNewCombat.h"
#include "Task/Combat/Cover/TaskCover.h"
#include "Task/Combat/Cover/TaskSeekCover.h"
#include "Task/Combat/Cover/TaskStayInCover.h"
#include "Task/Combat/Subtasks/TaskDraggingToSafety.h"
#include "Task/Combat/Subtasks/TaskHeliChase.h"
#include "Task/Combat/Subtasks/TaskPlaneChase.h"
#include "Task/Combat/Subtasks/TaskStealth.h"
#include "Task/Combat/Subtasks/TaskVehicleChase.h"
#include "Task/Combat/Subtasks/TaskVehicleCombat.h"
#include "task/Combat/TaskCombat.h"
#include "task/Combat/TaskCombatMelee.h"
#include "Task/Combat/TaskDamageDeath.h"
#include "Task/Combat/TaskInvestigate.h"
#include "Task/Combat/TaskReact.h"
#include "Task/Combat/TaskSearch.h"
#include "Task/Combat/TaskSharkAttack.h"
#include "Task/Combat/TaskThreatResponse.h"
#include "Task/Combat/TaskWrithe.h"
#include "Task/Default/AmbientAnimationManager.h"
#include "Task/Default/Patrol/PatrolRoutes.h"
#include "Task/Default/Patrol/TaskPatrol.h"
#include "Task/Default/TaskArrest.h"
#include "Task/Default/ArrestHelpers.h"
#include "Task/Default/TaskChat.h"
#include "Task/Default/TaskCuffed.h"
#include "Task/Default/TaskPlayer.h"
#include "Task/Default/TaskWander.h"
#include "Task/General/TaskBasic.h"
#include "Task/General/TaskGeneralSweep.h"
#include "Task/General/Phone/TaskMobilePhone.h"
#include "Task/Scenario/info/ScenarioInfoManager.h"
#include "Task/General/TaskSecondary.h"
#include "Task/Motion/Locomotion/TaskMotionPed.h"
#include "Task/Movement/Climbing/TaskGoToAndClimbLadder.h"
#include "Task/Movement/Climbing/TaskRappel.h"
#include "Task/Movement/Jumping/TaskJump.h"
#include "Task/Movement/TaskFall.h"
#include "Task/Movement/TaskSlideToCoord.h"
#include "Task/Movement/TaskCollisionResponse.h"
#include "Task/Movement/TaskFollowWaypointRecording.h"
#include "Task/Movement/TaskGoto.h"
#include "Task/Movement/TaskGoToPointAiming.h"
#include "Task/Movement/TaskMoveFollowEntityOffset.h"
#include "Task/Movement/TaskParachute.h"
#include "Task/Movement/TaskJetpack.h"
#include "Task/Movement/TaskSeekEntity.h"
#include "Task/Physics/TaskAnimatedAttach.h"
#include "Task/Physics/TaskNM.h"
#include "Task/Physics/TaskNMBindPose.h"
#include "Task/Physics/TaskNMElectrocute.h"
#include "Task/Physics/TaskNMDangle.h"
#include "Task/Physics/TaskNMHighFall.h"
#include "Task/Physics/TaskNMSlungOverShoulder.h"
//#include "Task/Physics/TaskNMStumble.h"
#include "Task/Response/TaskAgitated.h"
#include "Task/Response/TaskConfront.h"
#include "Task/Response/TaskFlee.h"
#include "Task/Response/TaskGangs.h"
#include "task/Response/TaskReactAndFlee.h"
#include "Task/Response/TaskShockingEvents.h"
#include "Task/Scenario/Info/ScenarioInfo.h"
#include "Task/Scenario/ScenarioManager.h"
#include "Task/Scenario/ScenarioPointManager.h"
#include "Task/Scenario/Types/TaskParkedVehicleScenario.h"
#include "Task/Scenario/Types/TaskUseScenario.h"
#include "Task/Service/Police/TaskPolicePatrol.h"
#include "Task/Service/Swat/TaskSwat.h"
#include "Task/System/Task.h"
#include "Task/Animation/TaskAnims.h"
#include "Task/Animation/TaskScriptedAnimation.h"
#include "Task/System/TaskManager.h"
#include "Task/Vehicle/TaskCar.h"
#include "Task/Vehicle/TaskCarAccessories.h"
#include "Task/Vehicle/TaskCarUtils.h"
#include "Task/Vehicle/TaskEnterVehicle.h"
#include "Task/Vehicle/TaskExitVehicle.h"
#include "Task/Vehicle/TaskMountAnimal.h"
#include "Task/Vehicle/TaskRideTrain.h"
#include "Task/Vehicle/TaskVehicleWeapon.h"
#include "Task/Weapons/Gun/TaskGun.h"
#include "Task/Weapons/Gun/TaskAimGunScripted.h"
#include "Task/Weapons/Gun/TaskReloadGun.h"
#include "Task/Weapons/Gun/Metadata/ScriptedGunTaskInfo.h"
#include "Task/Weapons/Gun/Metadata/ScriptedGunTaskInfoMetadataMgr.h"
#include "Task/Weapons/Gun/TaskVehicleDriveBy.h"
#include "Task/Weapons/TaskBomb.h"
#include "Task/Weapons/TaskProjectile.h"
#include "Task/Weapons/TaskSwapWeapon.h"
#include "Task/Weapons/WeaponController.h"
#include "debug/DebugScene.h"
#include "vehicleAi/vehicleintelligence.h"
#include "vehicleAi/Task/TaskVehicleGoTo.h"
#include "vehicleAi/Task/TaskVehicleGotoAutomobile.h"
#include "vehicleAi/Task/TaskVehicleGoToHelicopter.h"
#include "vehicleAi/Task/TaskVehicleGoToPlane.h"
#include "vehicleAi/Task/TaskVehicleGoToSubmarine.h"
#include "vehicleAi/Task/TaskVehicleAttack.h"
#include "vehicleAi/Task/TaskVehicleBlock.h"
#include "vehicleAi/Task/TaskVehicleCircle.h"
#include "vehicleAi/Task/TaskVehicleCruise.h"
#include "vehicleAi/Task/TaskVehicleDeadDriver.h"
#include "vehicleAi/Task/TaskVehicleEscort.h"
#include "vehicleAi/Task/TaskVehicleFlying.h"
#include "vehicleAi/Task/TaskVehicleFollowRecording.h"
#include "vehicleAi/Task/TaskVehicleGoToLongRange.h"
#include "vehicleAi/Task/TaskVehicleHeliProtect.h"
#include "vehicleAi/Task/TaskVehiclePark.h"
#include "vehicleAi/Task/TaskVehiclePoliceBehaviour.h"
#include "vehicleAi/Task/TaskVehicleTempAction.h"
#include "vehicleAi/Task/TaskVehicleThreePointTurn.h"
#include "vehicleAi/task/TaskVehicleAnimation.h"
#include "vehicleAi/task/TaskVehiclePursue.h"
#include "vehicleAi/task/TaskVehicleLandPlane.h"
#include "vehicles/Metadata/VehicleEntryPointInfo.h"
#include "vehicles/Planes.h"
#include "Weapons/Info/WeaponInfoManager.h"
//Rage headers
#include "script/wrapper.h"
SCRIPT_OPTIMISATIONS ()
AI_OPTIMISATIONS()
AI_VEHICLE_OPTIMISATIONS()
namespace task_commands
{
void UpdatePedRagdollBoundsForScriptActivation(CPed* pPed)
{
// only need to do this if we're in the viewport, not in ragdoll
already and our capsule physics isn't active
if (pPed && pPed->GetIsVisibleInSomeViewportThisFrame() && !pPed-
>GetUsingRagdoll())
{
pPed->UpdateRagdollRootTransformFromAnimatedSkel();
pPed->UpdateRagdollBoundsFromAnimatedSkel();
}
}
if (DoSuperJump)
nFlags |= JF_SuperJump | JF_BeastJump;
if (UseFullSuperJumpForce)
nFlags |= JF_AIUseFullForceBeastJump;
if(-1==Time)
{
pTask=rage_new CTaskCrouch(0);
}
else
{
pTask=rage_new CTaskCrouch(Time);
}
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_DUCK, "TASK_DUCK");
}
}
}
fTime/=1000.0f;
if( -1==iTime )
{
fTime = 0.0f;
}
else if( iTime > 0 )
{
iScriptFlags.BitSet().Set(CVehicleEnterExitFlags::WarpAfterTime);
}
if( -1==iTime )
{
fTime = 0.0f;
}
else if( iTime >= 0 )
{
iScriptFlags.BitSet().Set(CVehicleEnterExitFlags::WarpAfterTime);
}
vehicleFlags.BitSet().Set(CVehicleEnterExitFlags::JustOpenDoor);
if (iSeatRequest != 0)
{
if (SCRIPT_VERIFY(iSeatRequest < pVehicle-
>GetSeatManager()->GetMaxSeats(), "TASK_OPEN_VEHICLE_DOOR - seat doesn't exist"))
{
ScriptPassengerTask(iPedID, pVehicle, iTime,
seatRequestType, iSeatRequest, 0, fMoveBlendRatio, vehicleFlags,
CLIP_SET_ID_INVALID, "TASK_OPEN_VEHICLE_DOOR");
}
}
else
{
if (SCRIPT_VERIFY (!pVehicle->GetDriver(),
"TASK_OPEN_VEHICLE_DOOR - Vehicle already has a driver"))
{
ScriptDriverTask(iPedID, pVehicle, iTime, 0,
vehicleFlags, fMoveBlendRatio, CLIP_SET_ID_INVALID, "TASK_OPEN_VEHICLE_DOOR");
}
}
}
}
}
overrideClipsetId.SetFromString(szOverrideEntryClipsetName);
#if __ASSERT
scriptAssertf(fwClipSetManager::IsStreamedIn_DEPRECATED(overrideClipsetId),
"TASK_ENTER_VEHICLE - Clip set %s is not loaded yet:", szOverrideEntryClipsetName);
#endif // __ASSERT
}
#if __ASSERT
else
{
scriptAssertf(0, "Couldn't find clipset with
name %s", szOverrideEntryClipsetName);
}
#endif // __ASSERT
}
if (iSeatRequest != 0)
{
if (SCRIPT_VERIFY(iSeatRequest < pVehicle-
>GetSeatManager()->GetMaxSeats(), "TASK_ENTER_VEHICLE - seat doesn't exist"))
{
ScriptPassengerTask(iPedID, pVehicle, iTime,
seatRequestType, iSeatRequest, 0, fMoveBlendRatio, iFlags, overrideClipsetId,
"TASK_ENTER_VEHICLE");
}
}
else
{
// See if the vehicle has a driver already, if they
are still running the enter vehicle task then they must be shuffling
// so discount them
CPed* pDriver = pVehicle->GetDriver();
if (pDriver && pDriver->GetPedIntelligence()-
>FindTaskActiveByType(CTaskTypes::TASK_ENTER_VEHICLE))
{
pDriver = NULL;
}
//driver seat
if (SCRIPT_VERIFY(!pDriver ||
(iFlags.BitSet().IsSet(CVehicleEnterExitFlags::JackIfOccupied)),
"TASK_ENTER_VEHICLE - Vehicle already has a driver"))
{
ScriptDriverTask(iPedID, pVehicle, iTime, 0,
iFlags, fMoveBlendRatio, overrideClipsetId, "TASK_ENTER_VEHICLE");
}
}
}
}
vehicleFlags.BitSet().Set(CVehicleEnterExitFlags::DontJackAnyone);
CTask* pTask=rage_new CTaskExitVehicle(pVehicle,vehicleFlags);
CScriptPeds::GivePedScriptedTask( iPedID, pTask,
SCRIPT_TASK_LEAVE_VEHICLE, "TASK_LEAVE_VEHICLE");
}
}
// The old driving styles are still present in the script headers,
until we remove them this will
// At least make drivingstyle reversing work.
if( iMode == 2 )
{
iDrivingFlags |= DF_DriveInReverse;
}
aiTask *pVehicleTask =
CVehicleIntelligence::GetGotoTaskForVehicle(pVehicle, NULL, &VecCoors,
iDrivingFlags, TargetRadius, StraightLineDist, CruiseSpeed);
pTask = rage_new CTaskControlVehicle(pVehicle, pVehicleTask );
pVehicle = CTheScripts::GetEntityToModifyFromGUID<CVehicle>(iVehicleID,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
if (!pVehicle)
{
return;
}
//aiTask *pVehicleTask =
CVehicleIntelligence::GetGotoTaskForVehicle(pVehicle, NULL, &VecCoors,
iDrivingFlags, TargetRadius, StraightLineDist, CruiseSpeed);
sVehicleMissionParams params;
params.SetTargetPosition(VecCoors);
params.m_iDrivingFlags = iDrivingFlags;
params.m_fTargetArriveDist = TargetRadius;
params.m_fCruiseSpeed = CruiseSpeed;
#if ENABLE_HORSE
void CommandTaskMountAnimal( int iPedID, int iMountID, int iTime, int iSeat,
float fMoveBlendRatio, const int iFlags )
{
s32 iSeatRequest = iSeat+1;
CPed *pMount =
CTheScripts::GetEntityToModifyFromGUID<CPed>(iMountID, assertFlags);
if (pMount)
{
if (iSeatRequest != 0)
{
scriptAssertf(false, "Non-driver's on mounts not yet
supported by TASK_MOUNT_ANIMAL");
}
else
{
VehicleEnterExitFlags vehicleFlags;
CTaskVehicleFSM::SetScriptedVehicleEntryExitFlags(vehicleFlags, iFlags);
//driver seat
if (SCRIPT_VERIFY(!pMount->GetSeatManager()-
>GetDriver() ||
vehicleFlags.BitSet().IsSet(CVehicleEnterExitFlags::JackIfOccupied),
"TASK_MOUNT_ANIMAL - Mount already has a driver"))
{
s32 seat = pMount->GetPedModelInfo()-
>GetModelSeatInfo()->GetDriverSeat();
vehicleFlags.BitSet().Set(CVehicleEnterExitFlags::WarpAfterTime);
}
// Convert the time into seconds
fTime/=1000.0f;
CScriptPeds::GivePedScriptedTask( iPedID,
rage_new CTaskMountAnimal(pMount, SR_Specific, seat, vehicleFlags, fTime,
fMoveBlendRatio), SCRIPT_TASK_MOUNT_ANIMAL, "TASK_MOUNT_ANIMAL");
}
}
}
}
}
VehicleEnterExitFlags vehicleFlags;
CTaskVehicleFSM::SetScriptedVehicleEntryExitFlags(vehicleFlags,
iScriptFlags);
vehicleFlags.BitSet().Set(CVehicleEnterExitFlags::DontJackAnyone);
CTask* pTask=rage_new CTaskDismountAnimal(vehicleFlags);
CScriptPeds::GivePedScriptedTask( iPedID, pTask,
SCRIPT_TASK_DISMOUNT_ANIMAL, "TASK_DISMOUNT_ANIMAL");
}
#else
#endif
Vector3 vTarget(scrVecCoors);
int iTime =
Max(CTaskComplexGoToPointAndStandStillTimed::ms_iTime, Time);
pTask=rage_new
CTaskComplexGoToPointAndStandStillTimed(MoveBlendRatio,vTarget,fTargetRadius,fSlowD
ownDistance, iTime, true, fTargetHeading<DEFAULT_NAVMESH_FINAL_HEADING ? DtoR *
fTargetHeading : fTargetHeading);
}
void CommandFlushRoute()
{
CTaskMoveFollowPointRoute::ms_pointRoute.Clear();
}
if (pEntity)
{
if (SCRIPT_VERIFY((Time == -1) || (Time >
0) ,"TASK_FOLLOW_TO_OFFSET_OF_PED - Time must be -1 for infinite and > 0" ))
{
CTask* pTask= rage_new CTaskComplexControlMovement(rage_new
CTaskMoveFollowEntityOffset(pEntity, MoveBlendRatio, Radius, Offset, Time,
RelativeOffset));
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_FOLLOW_TO_OFFSET_OF_ENTITY, "TASK_FOLLOW_TO_OFFSET_OF_ENTITY");
}
}
}
void CommandTaskFollowToOffsetOfPickup(int PedIndex, int PickupID, const
scrVector & scrVecOffset, float MoveBlendRatio, int Time, float Radius, bool
RelativeOffset)
{
if (SCRIPT_VERIFY((Time == -1) || (Time >
0) ,"TASK_FOLLOW_TO_OFFSET_OF_PICKUP - Time must be -1 for infinite and > 0" ))
{
if (scriptVerify(CTheScripts::GetCurrentGtaScriptHandler()))
{
scriptHandlerObject* pScriptHandlerObject =
CTheScripts::GetCurrentGtaScriptHandler()->GetScriptObject(PickupID);
if (scriptVerifyf(pScriptHandlerObject, "%s:
TASK_FOLLOW_TO_OFFSET_OF_PICKUP - failed to find script handler object for pickup
ID", CTheScripts::GetCurrentScriptNameAndProgramCounter()))
{
if
(scriptVerifyf(static_cast<CGameScriptHandlerObject*>(pScriptHandlerObject)-
>GetType() == SCRIPT_HANDLER_OBJECT_TYPE_PICKUP, "%s:
TASK_FOLLOW_TO_OFFSET_OF_PICKUP - This is not a pickup id",
CTheScripts::GetCurrentScriptNameAndProgramCounter()))
{
CPickupPlacement* pPlacement =
static_cast<CPickupPlacement*>(pScriptHandlerObject);
if
(SCRIPT_VERIFY(pPlacement,"TASK_FOLLOW_TO_OFFSET_OF_PICKUP - Pickup does not
exist"))
{
if (SCRIPT_VERIFY(!pPlacement-
>GetIsCollected(), "TASK_FOLLOW_TO_OFFSET_OF_PICKUP - pickup has already been
collected"))
{
if (SCRIPT_VERIFY(!pPlacement-
>GetHasPickupBeenDestroyed(), "TASK_FOLLOW_TO_OFFSET_OF_PICKUP - pickup has been
destroyed"))
{
const CPickup *pPickup =
pPlacement->GetPickup();
if (SCRIPT_VERIFY(pPickup,
"TASK_FOLLOW_TO_OFFSET_OF_PICKUP - pickup object for this pickup placement is
NULL"))
{
Vector3
Offset(scrVecOffset);
CTask* pTask= rage_new
CTaskComplexControlMovement(rage_new CTaskMoveFollowEntityOffset(pPickup,
MoveBlendRatio, Radius, Offset, Time, RelativeOffset));
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_FOLLOW_TO_OFFSET_OF_PICKUP, "TASK_FOLLOW_TO_OFFSET_OF_PICKUP");
}
}
}
}
}
}
}
}
}
if (pEntity)
{
if (SCRIPT_VERIFY((Time == -1) || (Time > 0) ,"TASK_GOTO_ENTITY -
Time must be -1 for infinite and > 0" ))
{
if (NetworkInterface::IsGameInProgress() && (!pEntity-
>GetIsDynamic() || !((CDynamicEntity*)pEntity)->GetNetworkObject()))
{
scriptAssertf(0, "%s:TASK_GOTO_ENTITY; the entity
must be networked or this ped will not be able to migrate properly",
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
CTask* pMoveTask=rage_new
TTaskMoveSeekEntityStandard(pEntity, Time, TTaskMoveSeekEntityStandard::ms_iPeriod,
SeekRadius);
((TTaskMoveSeekEntityStandard*)pMoveTask)-
>SetMoveBlendRatio(MoveBlendRatio);
// scripted seek entity, so we use larger search extents
((TTaskMoveSeekEntityStandard*)pMoveTask)-
>SetUseLargerSearchExtents(true);
((TTaskMoveSeekEntityStandard*)pMoveTask)-
>SetUseAdaptiveUpdateFreq(true);
((TTaskMoveSeekEntityStandard*)pMoveTask)-
>SetSlowDownDistance(fSlowDownDistance);
if((iFlags & EGOTO_ENTITY_NEVER_SLOW_FOR_PATH_LENGTH)!=0)
{
((TTaskMoveSeekEntityStandard*)pMoveTask)-
>SetNeverSlowDownForPathLength(true);
}
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_GO_TO_ENTITY, "TASK_GOTO_ENTITY");
}
}
}
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_SMART_FLEE_POINT, "TASK_SMART_FLEE_POINT");
}
}
}
SafeDistance, // Distance
to stop at
Time, // Time to
flee for
CTaskSmartFlee::ms_uiEntityPosCheckPeriod,
0.0f, /*CTaskSmartFlee::ms_fEntityPosChangeThreshold*/
false);
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_SMART_FLEE_PED, "TASK_SMART_FLEE_PED");
}
}
}
}
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_REACT_AND_FLEE_COORD, "TASK_REACT_AND_FLEE_COORD");
}
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_REACT_AND_FLEE_PED, "TASK_REACT_AND_FLEE_PED");
}
}
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_SHOCKING_EVENT_BACK_AWAY, "TASK_SHOCKING_EVENT_BACK_AWAY");
}
}
}
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_SHOCKING_EVENT_HURRY_AWAY, "TASK_SHOCKING_EVENT_HURRY_AWAY");
}
}
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_SHOCKING_EVENT_REACT, "TASK_SHOCKING_EVENT_REACT");
}
}
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_WANDER_STANDARD, "TASK_WANDER_STANDARD");
}
if (pSecondPed)
{
SCRIPT_ASSERT((!pPed || !pPed->GetPedIntelligence()-
>IsFriendlyWith(*pSecondPed)), "TASK_COMBAT_PED - Ped told to attack friendly
ped!");
SCRIPT_ASSERT(!pSecondPed-
>GetPedResetFlag(CPED_RESET_FLAG_CannotBeTargeted), "TASK_COMBAT_PED - Ped told to
attack ped with flag PRF_CannotBeTargetedByAI!");
CScriptPeds::GivePedScriptedTask(iPedID, pTask,
SCRIPT_TASK_COMBAT, "TASK_COMBAT_PED");
}
}
if (IgnoreCollisionEntityIndex != NULL_IN_SCRIPTING_LANGUAGE)
{
pIgnoreCollisionEntity =
CTheScripts::GetEntityToModifyFromGUID<CEntity>(IgnoreCollisionEntityIndex,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES_NO_DEAD_CHECK);
#if __BANK
if (!pIgnoreCollisionEntity)
{
scriptAssertf(0,"TASK_THROW_PROJECTILE -
IgnoreCollisionEntityIndex is not null (%i), but could not find the entity in the
world!", IgnoreCollisionEntityIndex);
}
#endif
}
//*********************************************************************************
****************************************
if(iPedIndex != NULL_IN_SCRIPTING_LANGUAGE)
{
CPed * pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(iPedIndex,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
if (!pPed)
return NULL;
}
//********************************
// Sanity-check for comedy values
//***************************************************************
// Translate iTime into a value meaningful to the navmesh task
//*********************************************************
// Create the CTaskMoveFollowNavMesh task
// Set up the task according to the passed-in parameters
//***********************************************
// This is always set for scripted navmesh tasks
pTaskFollowNavMesh->SetIsScriptedRoute(true);
pTaskFollowNavMesh->SetTargetStopHeading(fTargetHeading);
return pTaskFollowNavMesh;
}
CTaskMoveFollowNavMesh * pTaskFollowNavMesh =
CreateNavigateTask(iPedIndex, vScrTarget, fMoveBlendRatio, iTime, fTargetRadius,
fTargetHeading<DEFAULT_NAVMESH_FINAL_HEADING ? DtoR * fTargetHeading :
fTargetHeading);
if(!pTaskFollowNavMesh)
return;
#if __ASSERT
if (fTargetHeading<DEFAULT_NAVMESH_FINAL_HEADING && ((iFlags &
ENAV_SUPPRESS_EXACT_STOP)!=0))
{
Assertf(false, "You cannot specify 'ENAV_SUPPRESS_EXACT_STOP' and
have a target-heading");
}
#endif
pTaskFollowNavMesh->SetScriptBehaviourFlags(iFlags, NULL);
//*********************************************************************************
********************
// The 'fMainTaskTimer' value is used to warp the ped via the parent
CTaskComplexControlMovement task
//*********************************************************************************
*
// Now wrap the task in the CTaskComplexControlMovement parent, and
give to the ped
//********************
// Create the task
CTaskMoveFollowNavMesh * pTaskFollowNavMesh =
CreateNavigateTask(iPedIndex, vTarget, fMoveBlendRatio, iTime, fTargetRadius,
fTargetHeading<DEFAULT_NAVMESH_FINAL_HEADING ? DtoR * fTargetHeading:
fTargetHeading);
if(!pTaskFollowNavMesh)
return;
pTaskFollowNavMesh->SetScriptBehaviourFlags(iFlags, pNavData);
//*********************************************************************************
********************
// The 'fMainTaskTimer' value is used to warp the ped via the parent
CTaskComplexControlMovement task
//***********************************************************
// CommandTaskNavigateToCoordAdvanced - parameter list:
//
// int iPedIndex
// const scrVector & vScrTarget
// float fMoveBlendRatio
// int iTime
// float fTargetRadius
// int iFlags
// TNavMeshScriptStruct navStruct
//
//**********************************************************************
// Extract the parameters from the scrThread::Info structure. This
// is necessary as the way of passing structures into script functions
// Final heading
const float fTargetHeading = info.Params[11].Float;
CommandTaskFollowNavMeshToCoordAdvanced(iPedIndex, vTarget,
fMoveBlendRatio, iTime, fTargetRadius, iFlags, &NavStruct, fTargetHeading);
}
// Sets the path-style for this ped, so that they will use climb-overs or not
during pathfinding
void CommandSetPedPathCanUseClimbOvers(int PedIndex, bool Flag)
{
CPed * pPed = CTheScripts::GetEntityToModifyFromGUID<CPed>(PedIndex);
if (pPed)
{
CPedIntelligence * pPedAI = pPed->GetPedIntelligence();
pPedAI-
>GetNavCapabilities().SetFlag(CPedNavCapabilityInfo::FLAG_MAY_CLIMB, Flag);
}
}
// Sets the path-style for this ped, so that they will use ladders or not
during pathfinding
void CommandSetPedPathCanUseLadders(int PedIndex, bool Flag)
{
CPed * pPed = CTheScripts::GetEntityToModifyFromGUID<CPed>(PedIndex);
if (pPed)
{
CPedIntelligence * pPedAI = pPed->GetPedIntelligence();
pPedAI-
>GetNavCapabilities().SetFlag(CPedNavCapabilityInfo::FLAG_MAY_USE_LADDERS, Flag);
}
}
// Sets the path-style for this ped, so that they will use high drop-downs or
not during pathfinding
void CommandSetPedPathCanDropFromHeight(int PedIndex, bool Flag)
{
CPed * pPed = CTheScripts::GetEntityToModifyFromGUID<CPed>(PedIndex);
if (pPed)
{
CPedIntelligence * pPedAI = pPed->GetPedIntelligence();
pPedAI-
>GetNavCapabilities().SetFlag(CPedNavCapabilityInfo::FLAG_MAY_DROP, Flag);
}
}
// Sets the path-style for this ped, so designers can modify how likely it is
for a ped to use a climb during navigation
void CommandSetPedPathClimbCostModifier(int PedIndex, float fModifier)
{
fModifier = Clamp(fModifier, 0.0f, 10.0f);
//
void CommandSetPedToMayEnterWater(int PedIndex, bool Flag)
{
CPed * pPed = CTheScripts::GetEntityToModifyFromGUID<CPed>(PedIndex);
if (pPed)
{
CPedIntelligence * pPedAI = pPed->GetPedIntelligence();
pPedAI-
>GetNavCapabilities().SetFlag(CPedNavCapabilityInfo::FLAG_MAY_ENTER_WATER, Flag);
}
}
// Sets the path-style for this ped, so that they will use prefer to avoid
water or not during pathfinding
void CommandSetPedPreferToAvoidWater(int PedIndex, bool Flag)
{
CPed * pPed = CTheScripts::GetEntityToModifyFromGUID<CPed>(PedIndex);
if (pPed)
{
CPedIntelligence * pPedAI = pPed->GetPedIntelligence();
pPedAI-
>GetNavCapabilities().SetFlag(CPedNavCapabilityInfo::FLAG_PREFER_TO_AVOID_WATER,
Flag);
}
}
// Sets the path-style for this ped, so that they will use prefer to avoid
fire during pathfinding
void CommandSetPedPathAvoidFire(int PedIndex, bool Flag)
{
CPed * pPed = CTheScripts::GetEntityToModifyFromGUID<CPed>(PedIndex);
if (pPed)
{
CPedIntelligence * pPedAI = pPed->GetPedIntelligence();
pPedAI-
>GetNavCapabilities().SetFlag(CPedNavCapabilityInfo::FLAG_AVOID_FIRE, Flag);
}
}
//****************************************************************************
// Retrieves the remaining distance to the target, if a ped is following
// a navmesh route in their primary slot. Returns enumeration value to
// indicate whether the navmesh task was found.
bThisIsLastRouteSection = pNavTask-
>GetLastRoutePointIsTarget();
return false;
}
void CommandTaskGoToCoordAnyMeans( int PedIndex, const scrVector &
scrVecCoors, float fMoveBlendRatio, int iVehicleID, bool
bUseLongRangeVehiclePathing, s32 iDrivingFlags, float fMaxRangeToShootTargets)
{
Vector3 vTarget(scrVecCoors);
CVehicle *pVehicle=NULL;
if(iVehicleID != NULL_IN_SCRIPTING_LANGUAGE)
{
pVehicle =
CTheScripts::GetEntityToModifyFromGUID<CVehicle>(iVehicleID,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
if(!pVehicle)
return;
}
CTask* pTask=rage_new
CTaskGoToPointAnyMeans(fMoveBlendRatio,vTarget,pVehicle,
CTaskGoToPointAnyMeans::ms_fTargetRadius, -1, bUseLongRangeVehiclePathing,
iDrivingFlags, fMaxRangeToShootTargets);
CScriptPeds::GivePedScriptedTask( PedIndex, pTask,
SCRIPT_TASK_GO_TO_COORD_ANY_MEANS, "TASK_GO_TO_COORD_ANY_MEANS");
}
#if __BANK
bool VerifyDictAndAnim(atHashString dictionaryHash, atHashString animHash,
const char * ASSERT_ONLY(scriptName))
{
strLocalIndex dictIndex =
fwAnimManager::FindSlotFromHashKey(dictionaryHash.GetHash());
return false;
}
#endif //__BANK
CTaskScriptedAnimation::ePlaybackPriority GetPriorityFromControlFlags(s32
nControlFlags)
{
// TODO - convert to support the new anim priority flags
CTaskScriptedAnimation::ePlaybackPriority priority =
CTaskScriptedAnimation::kPriorityLow;
if (nControlFlags == AF_PRIORITY_MEDIUM)
{
priority = CTaskScriptedAnimation::kPriorityMid;
}
else if (nControlFlags == AF_PRIORITY_HIGH)
{
priority = CTaskScriptedAnimation::kPriorityHigh;
}
return priority;
}
if(pPed->GetIsAttached())
{
SCRIPT_ASSERT(!flags.BitSet().IsSet(AF_OVERRIDE_PHYSICS),
"TASK_PLAY_ANIM - Cannot use AF_OVERRIDE_PHYSICS when ped is attached!");
SCRIPT_ASSERT(!flags.BitSet().IsSet(AF_TURN_OFF_COLLISION),
"TASK_PLAY_ANIM - Cannot set CTaskScriptedAnimation::AF_TURN_OFF_COLLISION when ped
is attached!");
SCRIPT_ASSERT(!flags.BitSet().IsSet(AF_IGNORE_GRAVITY),
"TASK_PLAY_ANIM - Cannot set CTaskScriptedAnimation::AF_IGNORE_GRAVITY when ped is
attached!");
}
}
else if(bAllowOverrideCloneUpdate)
{
SCRIPT_ASSERT(0, "In MP don't expect bAllowOverrideCloneUpdate to
be set true with null PedIndex!");
return;
}
//scriptAssertf(strlen(pAnimName)<ANIM_NAMELEN, "%s:TASK_PLAY_ANIM -
Animation name is null : %s", CTheScripts::GetCurrentScriptNameAndProgramCounter(),
pAnimName);
if(!bPartOfASequence)
{
BANK_ONLY(VerifyDictAndAnim(pAnimDictName, pAnimName,
"TASK_PLAY_ANIM");)
}
eIkControlFlagsBitSet& ikFlags =
reinterpret_cast<eIkControlFlagsBitSet&>(nIkFlags);
if (flags.BitSet().IsSet(AF_UPPERBODY))
{
iBoneMask = BONEMASK_UPPERONLY;
}
// Currently, always extract the mover and the initial offset when
using override physics mode
if (flags.BitSet().IsSet(AF_OVERRIDE_PHYSICS) )
{
flags.BitSet().Set(AF_USE_MOVER_EXTRACTION, true);
flags.BitSet().Set(AF_EXTRACT_INITIAL_OFFSET, true);
}
CTask* pTask;
if (nTimeToPlay<0)
nTimeToPlay = -1;
if (bAdvanced)
{
Quaternion rotationQuaternion;
CScriptEulers::QuaternionFromEulers(rotationQuaternion,
initialOrientation, RotationOrder);
pTask = rage_new CTaskScriptedAnimation(pAnimDictName, pAnimName,
CTaskScriptedAnimation::kPriorityLow, iBoneMask,
fwAnimHelpers::CalcBlendDuration(fBlendInDelta),
fwAnimHelpers::CalcBlendDuration(fBlendOutDelta), nTimeToPlay, flags, fStartPhase,
initialPosition, rotationQuaternion, false, phaseControlled, ikFlags,
bAllowOverrideCloneUpdate, bPartOfASequence);
}
else
{
pTask = rage_new CTaskScriptedAnimation(pAnimDictName, pAnimName,
CTaskScriptedAnimation::kPriorityLow, iBoneMask,
fwAnimHelpers::CalcBlendDuration(fBlendInDelta),
fwAnimHelpers::CalcBlendDuration(fBlendOutDelta), nTimeToPlay, flags, fStartPhase,
false, phaseControlled, ikFlags, bAllowOverrideCloneUpdate, bPartOfASequence);
}
#if !__FINAL
if(NetworkInterface::IsGameInProgress())
{
scriptDebugf1("PlayAnimScriptCommand PedIndex %d, pPed %s,
pAnimName %s, pAnimDictNameStr %s nControlFlags 0x%x, pTask [ %p ]",
PedIndex,
pPed?(pPed->GetNetworkObject()?pPed->GetNetworkObject()-
>GetLogName():pPed->GetModelName() ):"Null pPed",
pAnimName,
pAnimDictNameStr,
nControlFlags,
pTask);
}
#endif
if (flags.BitSet().IsSet(AF_USE_ALTERNATIVE_FP_ANIM))
{
static const char * s_fpsClipSuffixHash = "_FP";
u32 fpsClipHash = atPartialStringHash(s_fpsClipSuffixHash,
atPartialStringHash(pAnimName));
atHashString finalFpsHash(atFinalizeHash(fpsClipHash));
static_cast<CTaskScriptedAnimation*>(pTask)-
>SetFPSClipHash(finalFpsHash);
if(!bPartOfASequence)
{
BANK_ONLY(VerifyDictAndAnim(pAnimDictName, finalFpsHash,
"TASK_PLAY_ANIM");)
}
}
if(bAllowOverrideCloneUpdate)
{
scriptAssertf( !flags.BitSet().IsSet(AF_LOOPING) && !
flags.BitSet().IsSet(AF_HOLD_LAST_FRAME), "Don't support AF_LOOPING or
AF_HOLD_LAST_FRAME with bAllowOverrideCloneUpdate %d",nControlFlags);
CTaskScriptedAnimation* pTaskScriptedAnimation =
static_cast<CTaskScriptedAnimation*>(pTask);
if(pPed->IsNetworkClone())
{
pPed->GetPedIntelligence()-
>AddLocalCloneTask(pTaskScriptedAnimation, PED_TASK_PRIORITY_PRIMARY);
}
else
{
int iEventPriority = E_PRIORITY_GIVE_PED_TASK;
CEventGivePedTask
event(PED_TASK_PRIORITY_PRIMARY,pTaskScriptedAnimation,false,iEventPriority);
pPed->GetPedIntelligence()->AddEvent(event);
}
return;
}
#if __ASSERT
if (!pClip)
{
const char * pFailReason;
strLocalIndex dictIndex =
strLocalIndex(fwAnimManager::FindSlot(pDictName));
if (dictIndex.Get()<0)
{
pFailReason = " The dictionary does not exist.";
}
else
{
fwClipDictionaryDef* pDictDef =
fwAnimManager::GetSlot(dictIndex);
if ( !pDictDef)
{
pFailReason = " The dictionary is not in the image!";
}
else if (!GET_OBJECT(pDictDef))
{
pFailReason = " The dictionary is not streamed in.";
}
else
{
pFailReason = " The clip is not in the dictionary";
}
}
animAssertf (pClip, "(%s) Unable to retrieve clip '%s' from
dictionary '%s'.%s", pScriptName, pClipName, pDictName, pFailReason);
}
#endif // __ASSERT
return pClip;
}
#if __BANK
void VerifySlotData(CTaskScriptedAnimation::ScriptInitSlotData* pData)
{
if (pData)
{
switch(pData->state.Int)
{
case CTaskScriptedAnimation::kStateSingleClip:
{
VerifyDictAndAnim(scrDecodeString(pData-
>dict0.String), scrDecodeString(pData->clip0.String), "TASK_SCRIPTED_ANIMATION");
}
break;
case CTaskScriptedAnimation::kStateBlend:
{
VerifyDictAndAnim(scrDecodeString(pData-
>dict0.String), scrDecodeString(pData->clip0.String), "TASK_SCRIPTED_ANIMATION");
VerifyDictAndAnim(scrDecodeString(pData-
>dict1.String), scrDecodeString(pData->clip1.String), "TASK_SCRIPTED_ANIMATION");
VerifyDictAndAnim(scrDecodeString(pData-
>dict2.String), scrDecodeString(pData->clip2.String), "TASK_SCRIPTED_ANIMATION");
}
break;
default:
{
}
break;
}
}
}
#endif //__BANK
#if __BANK
// verify the clips exist, etc
VerifySlotData(priorityLow);
VerifySlotData(priorityMid);
VerifySlotData(priorityHigh);
#endif //__BANK
#if __ASSERT
if (NetworkInterface::IsGameInProgress() )
{
if( (priorityMid->state.Int!=CTaskScriptedAnimation::kStateEmpty)
|| (priorityHigh->state.Int!=CTaskScriptedAnimation::kStateEmpty) )
{
scriptAssertf(false,"TASK_SCRIPTED_ANIMATION:: Network
implementation only handles one slot data in ANIM_DATA& priorityLow. priorityMid
%s, priorityHigh %s",
(priorityMid->state.Int!
=CTaskScriptedAnimation::kStateEmpty)?"Valid":"Empty",
(priorityHigh->state.Int!
=CTaskScriptedAnimation::kStateEmpty)?"Valid":"Empty");
}
scriptAssertf( (priorityLow->clip2.String==NULL || priorityLow-
>weight2.Float==0.0f),"TASK_SCRIPTED_ANIMATION:: Network blended anim
implementation only handles first 2 weighted anims. weight2 = %.5f, clip =%s",
priorityLow->weight2.Float,
priorityLow->clip2.String?priorityLow-
>clip2.String:"Null clip string");
}
#endif
// Start the new task
CTask* pTask = rage_new CTaskScriptedAnimation(*priorityLow,
*priorityMid, *priorityHigh, blendInDelta, BlendOutDelta);
if (!bPartOfASequence &&
combinedFlags.BitSet().IsSet(AF_OVERRIDE_PHYSICS))
{
//force an ai update post camera so that the anim will be visible
next frame (rather than waiting for the next task update)
CPed * pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(pedIndex, bSecondaryTask ?
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES :
CTheScripts::GUID_ASSERT_FLAGS_ALL);
if(pPed)
{
pPed-
>SetPedResetFlag( CPED_RESET_FLAG_ForcePostCameraAIUpdate, true );
}
}
CScriptPeds::GivePedScriptedTask(pedIndex, pTask,
SCRIPT_TASK_PLAY_ANIM, "TASK_SCRIPTED_ANIMATION");
}
#if __BANK
// verify the clips exist, etc
VerifySlotData(priorityLow);
VerifySlotData(priorityMid);
VerifySlotData(priorityHigh);
#endif //__BANK
if (pClip)
{
pTaskMobilePhone-
>RequestAdditionalSecondaryAnims(pAnimDictHash, pAnimName, pFilterName,
fBlendInDuration, fBlendOutDuration, bIsLooping, bHoldLastFrame);
}
}
}
}
CPhysical *pPhysical =
CTheScripts::GetEntityToModifyFromGUID<CPhysical>(EntityIndex);
if(pPhysical)
{
// look for an existing scripted animation task running on the
ped
CTaskScriptedAnimation* pTask = NULL;
if (secondary)
{
pTask = entity_commands::FindScriptedAnimTask(EntityIndex,
true, false);
}
else
{
pTask = entity_commands::FindScriptedAnimTask(EntityIndex,
true);
}
if (secondary)
{
pTask = entity_commands::FindScriptedAnimTask(EntityIndex,
true, false);
}
else
{
pTask = entity_commands::FindScriptedAnimTask(EntityIndex,
true);
}
if (pClip)
{
pTask->SetClip(pClip,
GetPriorityFromControlFlags(priority), (u8)index);
}
}
}
}
if (secondary)
{
pTask = pTask =
entity_commands::FindScriptedAnimTask(EntityIndex, true, false);
}
else
{
pTask = pTask =
entity_commands::FindScriptedAnimTask(EntityIndex, true);
}
pTask->SetBlend(weight,
GetPriorityFromControlFlags(priority) , (u8)index);
}
}
}
if (secondary)
{
pTask = entity_commands::FindScriptedAnimTask(EntityIndex,
true, false);
}
else
{
pTask = entity_commands::FindScriptedAnimTask(EntityIndex,
true);
}
if (secondary)
{
pTask = entity_commands::FindScriptedAnimTask(EntityIndex,
true, false);
}
else
{
pTask = entity_commands::FindScriptedAnimTask(EntityIndex,
true);
}
if (secondary)
{
pTask = entity_commands::FindScriptedAnimTask(EntityIndex,
true, false);
}
else
{
pTask = entity_commands::FindScriptedAnimTask(EntityIndex,
true);
}
if (SCRIPT_VERIFY(pTask, "TASK_CLIP_SET_RATE: Anim task is not
playing. Use TASK_ANIM_START_CLIP or TASK_ANIM_START_BLEND to begin the task."))
{
pTask->SetRate(rate,
GetPriorityFromControlFlags(priority));
}
}
}
if (secondary)
{
pTask = entity_commands::FindScriptedAnimTask(EntityIndex,
true, false);
}
else
{
pTask = entity_commands::FindScriptedAnimTask(EntityIndex,
true);
}
#if GTA_REPLAY
CPed *pPed = NULL;
if(NULL_IN_SCRIPTING_LANGUAGE!=PedIndex)
{
pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(PedIndex,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
if(pPed)
{
CReplayMgr::RecordWarpedEntity(pPed);
}
}
#endif
if(pPed->GetIsAttached())
{
// If we are using CTaskUseScenario, it's
probably not a problem if we are attached, because it's likely
// the task itself that has attached the ped.
CTaskUseScenario* pScenarioTask =
static_cast<CTaskUseScenario*>(pPed->GetPedIntelligence()-
>FindTaskActiveByType(CTaskTypes::TASK_USE_SCENARIO));
if(pScenarioTask)
{
// It would have been expected to me that
the running CTaskUseScenario would be aborted and
// clean up the detachment before
CTaskSynchronizedScene starts, so that we would just need
// to find a way to bypass the attachment
check below. For some reason, that doesn't seem to happen,
// but by calling MakeAbortable(), the
task seems to clean up the attachment (and we can still
// check GetIsAttached() below), in case
the abort failed or if there was some other reason the
// ped was attached. /FF
pScenarioTask-
>MakeAbortable(CTask::ABORT_PRIORITY_IMMEDIATE, NULL);
}
}
if (pPed-
>GetPedConfigFlag( CPED_CONFIG_FLAG_InVehicle ))
{
#if __DEV
fwAnimDirectorComponentSyncedScene::RegisterWithSyncedScene(static_cast<fwSyncedSce
neId>(sceneId), pPed);
#endif //__DEV
CScriptPeds::GivePedScriptedTask(PedIndex,
pTask, SCRIPT_TASK_SYNCHRONIZED_SCENE, "TASK_SYNCHRONIZED_SCENE");
animEntityDebugf(pPed, "TASK_SYNCHRONIZED_SCENE
- %s starting synced scene task",
CTheScripts::GetCurrentScriptNameAndProgramCounter());
Sequence = CTheScripts::GetCurrentGtaScriptHandler()-
>RegisterScriptResourceAndGetId(sequenceResource);
}
CTaskSequences::ms_bIsOpened[iTaskID]=false;
CTaskSequences::ms_iActiveSequence=-1;
}
}
}
}
#if __ASSERT
//If assigning a sequence with a prop task in it,
make sure the ped has an inventory.
CPed* pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(PedIndex,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
CTaskSequences::ms_TaskSequenceLists[CTaskSequences::ms_iActiveSequence].SetRepeatM
ode(iRepeatMode);
}
}
}
}
if(SCRIPT_VERIFY(iSequenceTaskID==CTaskSequences::ms_iActiveSequence,
"SET_SEQUENCE_PREVENT_MIGRATION - Using wrong sequence ID"))
{
if(SCRIPT_VERIFY (iSequenceTaskID>=0 &&
iSequenceTaskID<CTaskSequences::MAX_NUM_SEQUENCE_TASKS, "SET_SEQUENCE_TO_REPEAT -
Sequence task ID out of range"))
{
if(SCRIPT_VERIFY
(CTaskSequences::ms_bIsOpened[iSequenceTaskID], "SET_SEQUENCE_PREVENT_MIGRATION -
Sequence task needs to be open"))
{
CTaskSequences::ms_TaskSequenceLists[CTaskSequences::ms_iActiveSequence].PreventMig
ration();
}
}
}
}
if(!b)
{
if( pPed->GetPedIntelligence()-
>GetQueriableInterface()->IsTaskPresentAtPriority( CTaskTypes::TASK_USE_SEQUENCE,
PED_TASK_PRIORITY_PRIMARY ) )
{
iProgress = pPed->GetPedIntelligence()-
>GetQueriableInterface()->GetSequenceProgressForTaskType( 0,
CTaskTypes::TASK_USE_SEQUENCE, PED_TASK_PRIORITY_PRIMARY );
}
else
{
scriptAssertf(false, "GET_SEQUENCE_PROGRESS-
Ped doesn't have a the correct primary task");
}
}
}
}
return iProgress;
}
return
CVehicleIntelligence::GetMissionIdentifierFromTaskType(iTaskType, params);
}
return MISSION_NONE;
}
vehicleFlags.BitSet().Set(CVehicleEnterExitFlags::WarpIfDoorBlocked);
}
CTask* pTask=rage_new CTaskLeaveAnyCar(iDelayTime, vehicleFlags);
AI_LOG_WITH_ARGS("[Script] - Script %s has created CTaskLeaveAnyCar
from SCRIPT_TASK_LEAVE_ANY_VEHICLE at 0x%p for ped with id %i\n",
CTheScripts::GetCurrentScriptName(), pTask, iPedID);
CScriptPeds::GivePedScriptedTask( iPedID, pTask,
SCRIPT_TASK_LEAVE_ANY_VEHICLE, "TASK_LEAVE_ANY_VEHICLE");
}
if (scriptVerifyf(pScriptedGunTaskInfo, "TASK_AIM_GUN_SCRIPTED -
scripted gun task info (%u) didn't exist, check metadata", iGunTaskType))
{
CPed* pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(iPedID);
if (pPed)
{
SCRIPT_ASSERT(pPed->IsLocalPlayer(), "TASK_AIM_GUN_SCRIPTED
- Only supported on the player ped");
//Position the default target position ahead of the player
Vector3 targetPos = VEC3V_TO_VECTOR3(pPed-
>GetTransform().GetPosition()) + (VEC3V_TO_VECTOR3(pPed-
>GetTransform().GetForward()) * 3.0f);
CTaskGun* pGunTask = rage_new
CTaskGun(CWeaponController::WCT_Player, CTaskTypes::TASK_AIM_GUN_SCRIPTED,
CWeaponTarget(targetPos));
if( bDisableBlockingClip )
pGunTask-
>GetGunFlags().SetFlag(GF_DisableBlockingClip);
if( bInstantBlendToAim )
pGunTask-
>GetGunFlags().SetFlag(GF_InstantBlendToAim);
pGunTask->GetGunFlags().SetFlag(GF_ForceAimState);
pGunTask->GetGunFlags().SetFlag(GF_DisableTorsoIk);
pGunTask->SetScriptedGunTaskInfoHash(pScriptedGunTaskInfo-
>GetName().GetHash());
CScriptPeds::GivePedScriptedTask( iPedID, pGunTask,
SCRIPT_TASK_AIM_GUN_SCRIPTED, "TASK_AIM_GUN_SCRIPTED");
}
}
}
if (scriptVerifyf(pScriptedGunTaskInfo,
"TASK_AIM_GUN_SCRIPTED_WITH_TARGET - scripted gun task info (%u) didn't exist,
check metadata", iGunTaskType))
{
CPed* pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(iPedID);
if (pPed)
{
CTaskGun* pGunTask;
Vec3V vTargetOrOffset(scrVecTargetOrOffset);
const CPed* pTargetPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(iTargetPedID,
CTheScripts::GUID_ASSERT_FLAG_DEAD_CHECK);
CWeaponController::WeaponControllerType controllerType =
CWeaponController::WCT_Fire;
if(bForceAim)
{
controllerType = CWeaponController::WCT_Aim;
}
if(pTargetPed)
{
pGunTask = rage_new CTaskGun(controllerType,
CTaskTypes::TASK_AIM_GUN_SCRIPTED, CWeaponTarget(pTargetPed,
VEC3V_TO_VECTOR3(vTargetOrOffset)));
}
else
{
pGunTask = rage_new CTaskGun(controllerType,
CTaskTypes::TASK_AIM_GUN_SCRIPTED,
CWeaponTarget(VEC3V_TO_VECTOR3(vTargetOrOffset)));
}
if(pPed->IsLocalPlayer())
{
pGunTask-
>SetFiringPatternHash(FIRING_PATTERN_FULL_AUTO);
}
if( bDisableBlockingClip )
pGunTask-
>GetGunFlags().SetFlag(GF_DisableBlockingClip);
pGunTask->GetGunFlags().SetFlag(GF_ForceAimState);
pGunTask->SetScriptedGunTaskInfoHash(pScriptedGunTaskInfo-
>GetName().GetHash());
CScriptPeds::GivePedScriptedTask( iPedID, pGunTask,
SCRIPT_TASK_AIM_GUN_SCRIPTED, "TASK_AIM_GUN_SCRIPTED_WITH_TARGET");
}
}
}
if(SCRIPT_VERIFY(pAimGunTask,
"UPDATE_TASK_AIM_GUN_SCRIPTED_TARGET - Ped must be running TASK_AIM_GUN_SCRIPTED"))
{
if( bDisableBlockingClip )
{
pAimGunTask-
>GetGunFlags().SetFlag(GF_DisableBlockingClip);
}
pAimGunTask->GetGunFlags().SetFlag(GF_ForceAimState);
if(pTargetPed)
{
pGunTask->SetTarget( CWeaponTarget(pTargetPed,
VEC3V_TO_VECTOR3(vTargetOrOffset)));
}
else
{
pGunTask-
>SetTarget( CWeaponTarget(VEC3V_TO_VECTOR3(vTargetOrOffset)));
}
}
}
}
}
return NULL;
}
if(SCRIPT_VERIFY(pAimTask,
"SET_ROPE_TRACK_ENTITY_FOR_SCRIPTED_GUN_TASK - Ped must be running
TASK_AIM_GUN_SCRIPTED"))
{
pAimTask->SetRopeOrientationEntity(pEntity);
}
}
}
}
if(iTime == -1)
{
pTaskGun->GetGunFlags().SetFlag(GF_InfiniteDuration);
}
else if (iTime == 0)
{
pTaskGun->GetGunFlags().SetFlag(GF_DisableAiming);
}
if(bInstantBlendToAim)
{
pTaskGun-
>GetGunFlags().SetFlag(GF_InstantBlendToAim);
}
if(iTime == -1)
{
pTaskGun->GetGunFlags().SetFlag(GF_InfiniteDuration);
}
else if(iTime == 0)
{
pTaskGun->GetGunFlags().SetFlag(GF_DisableAiming);
}
if(bInstantBlendToAim)
{
pTaskGun->GetGunFlags().SetFlag(GF_InstantBlendToAim);
}
if(bPlayAimIntro)
{
pTaskGun->SetPlayAimIntro(true);
}
CScriptPeds::GivePedScriptedTask(iPedID, pTaskGun,
SCRIPT_TASK_AIM_GUN_AT_COORD, "TASK_AIM_GUN_AT_COORD");
}
}
if(iPedID != NULL_IN_SCRIPTING_LANGUAGE)
{
CPed *pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(iPedID);
if (pPed)
{
if(scriptVerifyf(pPed->GetWeaponManager(),
"%s:TASK_SHOOT_GUN_AT_COORD - ped requires a weapon manager",
CTheScripts::GetCurrentScriptNameAndProgramCounter()))
{
const CWeaponInfo* pWeaponInfo =
CWeaponInfoManager::GetInfo<CWeaponInfo>(pPed->GetWeaponManager()-
>GetEquippedWeaponHash());
if(scriptVerifyf(pWeaponInfo,
"%s:TASK_SHOOT_GUN_AT_COORD - pWeaponInfo NULL - ped has no equiped weapon info",
CTheScripts::GetCurrentScriptNameAndProgramCounter())
&& pWeaponInfo->GetIsThrownWeapon())
{
pTask = rage_new
CTaskAimAndThrowProjectile( CWeaponTarget( TempCoors ) );
}
}
}
else
{
return;
}
}
if(pTask==NULL)
{
pTask = rage_new CTaskGun(CWeaponController::WCT_Fire,
CTaskTypes::TASK_AIM_GUN_ON_FOOT, CWeaponTarget(TempCoors), ((float) iTime) /
1000.0f);
if(iFiringPatternHash)
{
static_cast<CTaskGun*>(pTask)-
>SetFiringPatternHash(iFiringPatternHash);
}
if(iTime == -1)
{
static_cast<CTaskGun*>(pTask)-
>GetGunFlags().SetFlag(GF_InfiniteDuration);
}
}
CScriptPeds::GivePedScriptedTask( iPedID, pTask,
SCRIPT_TASK_SHOOT_AT_COORD, "TASK_SHOOT_GUN_AT_COORD");
}
}
if (pVehicle)
{
s32 iTargetSeatIndex = -1;
if (pPed && bUseAlternateShuffle && pVehicle->GetSeatManager() &&
pVehicle->GetVehicleModelInfo() && pVehicle->GetVehicleModelInfo()-
>GetModelSeatInfo())
{
const s32 iCurrentSeatIndex = pVehicle->GetSeatManager()-
>GetPedsSeatIndex(pPed);
const s32 iCurrentEntryPointIndex = pVehicle-
>GetVehicleModelInfo()->GetModelSeatInfo()-
>GetEntryPointIndexForSeat(iCurrentSeatIndex, pVehicle);
iTargetSeatIndex = pVehicle->GetVehicleModelInfo()-
>GetModelSeatInfo()->GetShuffleSeatForSeat(iCurrentEntryPointIndex,
iCurrentSeatIndex, true);
}
CTask* pTask=rage_new
TTaskMoveSeekEntityRadiusAngleOffset(pEntity,iTime);
CEntitySeekPosCalculatorRadiusAngleOffset
seekPosCalculator(fSeekRadius,fSeekAngle);
((TTaskMoveSeekEntityRadiusAngleOffset*)pTask)-
>SetEntitySeekPosCalculator(seekPosCalculator);
((TTaskMoveSeekEntityRadiusAngleOffset*)pTask)-
>SetMoveBlendRatio(fMoveBlendRatio);
((TTaskMoveSeekEntityRadiusAngleOffset*)pTask)-
>SetUseLargerSearchExtents(true);
CTaskComplexControlMovement* pSimpleControlMovement =
rage_new CTaskComplexControlMovement(pTask);
CScriptPeds::GivePedScriptedTask( iPedID,
pSimpleControlMovement, SCRIPT_TASK_GOTO_ENTITY_OFFSET, "TASK_GOTO_ENTITY_OFFSET");
}
}
}
CTask * pTask;
((TTaskMoveSeekEntityXYOffsetRotated*)pTask)-
>SetMoveBlendRatio(fMoveBlendRatio);
((TTaskMoveSeekEntityXYOffsetRotated*)pTask)-
>SetTargetRadius(fTargetRadius);
if((iGotoEntityOffsetFlags &
ESEEK_KEEP_TO_PAVEMENTS)!=0)
((TTaskMoveSeekEntityXYOffsetRotated*)pTask)-
>SetPreferPavements(true);
((TTaskMoveSeekEntityXYOffsetRotated*)pTask)-
>SetUseLargerSearchExtents(true);
}
else
{
pTask = rage_new
TTaskMoveSeekEntityXYOffsetFixed(pEntity, iTime);
CEntitySeekPosCalculatorXYOffsetFixed
seekPosCalculator( Vector3(fOffsetX, fOffsetY, 0.0f) );
((TTaskMoveSeekEntityXYOffsetFixed*)pTask)-
>SetEntitySeekPosCalculator(seekPosCalculator);
((TTaskMoveSeekEntityXYOffsetFixed*)pTask)-
>SetMoveBlendRatio(fMoveBlendRatio);
((TTaskMoveSeekEntityXYOffsetFixed*)pTask)-
>SetTargetRadius(fTargetRadius);
if((iGotoEntityOffsetFlags &
ESEEK_KEEP_TO_PAVEMENTS)!=0)
((TTaskMoveSeekEntityXYOffsetFixed*)pTask)-
>SetPreferPavements(true);
((TTaskMoveSeekEntityXYOffsetFixed*)pTask)-
>SetUseLargerSearchExtents(true);
}
CTaskComplexControlMovement* pSimpleControlMovement =
rage_new CTaskComplexControlMovement(pTask);
CScriptPeds::GivePedScriptedTask( iPedID,
pSimpleControlMovement, SCRIPT_TASK_GOTO_ENTITY_OFFSET,
"TASK_GOTO_ENTITY_OFFSET_XY");
}
}
}
// As there's only one flag right now, I'm just passing in a bool to
the constructor of CTaskInvestigate. [1/9/2013 mdawe]
const bool bReturnToPosition = !(investigateFlags &
SIF_DONT_RETURN_TO_ORIGINAL_POSITION);
CTask* pTask = rage_new CTaskInvestigate(vInvestigationPosition, NULL,
EVENT_SUSPICIOUS_ACTIVITY, timeToSpendAtSearchPointInMS, bReturnToPosition);
CScriptPeds::GivePedScriptedTask( iPedID, pTask,
SCRIPT_TASK_INVESTIGATE_COORDS, "TASK_INVESTIGATE");
}
// Remember to update the scripts if you change these flags
// eScriptLookAtFlags in commands_task.sch
// Please leave as numbers so its easy to compare with the flags in
commands_task.sch
// i.e dont change 4 to (1<<2)
enum eScriptLookatFlags
{
SLF_SLOW_TURN_RATE = 1, // turn the head toward the
target slowly
SLF_FAST_TURN_RATE = 2, // turn the head toward the
target quickly
SLF_EXTEND_YAW_LIMIT = 4, // wide yaw head limits
SLF_EXTEND_PITCH_LIMIT = 8, // wide pitch head limit
SLF_WIDEST_YAW_LIMIT = 16, // widest yaw head limit
SLF_WIDEST_PITCH_LIMIT = 32, // widest pitch head limit
SLF_NARROW_YAW_LIMIT = 64, // narrow yaw head limits
SLF_NARROW_PITCH_LIMIT = 128, // narrow pitch head limit
SLF_NARROWEST_YAW_LIMIT = 256, // narrowest yaw head limit
SLF_NARROWEST_PITCH_LIMIT = 512, // narrowest pitch head limit
SLF_USE_TORSO = 1024, // use the torso aswell as
the neck and head (currently disabled)
SLF_WHILE_NOT_IN_FOV = 2048, // keep tracking the target even
if they are not in the hard coded FOV
SLF_USE_CAMERA_FOCUS = 4096, // use the camera as the target
SLF_USE_EYES_ONLY = 8192, // only track the target with the
eyes
SLF_USE_LOOK_DIR = 16384, // use information in look dir
DOF
SLF_FROM_SCRIPT = 32768, // internal use only
SLF_USE_REF_DIR_ABSOLUTE = 65536 // use absolute reference
direction mode for solver
};
if(NULL_IN_SCRIPTING_LANGUAGE!=iPedID)
{
if (SCRIPT_VERIFY(-1==CTaskSequences::ms_iActiveSequence,
"TASK_LOOK_AT_COORD - Sequence opened unexpectedly"))
{
CPed
*pPed=CTheScripts::GetEntityToModifyFromGUID<CPed>(iPedID);
if (pPed)
{
ikDebugf3("%u TASK_LOOK_AT_COORD(pPed %p %s,
scrVecCoors %.3f,%.3f,%.3f, iTime %i, flags %i, priority %i) LookAt",
fwTimer::GetFrameCount(), pPed, pPed-
>GetModelName(), scrVecCoors.x, scrVecCoors.y, scrVecCoors.z, iTime, flags,
priority);
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
else
{
ikDebugf3("%u TASK_LOOK_AT_COORD(iPedID %i,
scrVecCoors %.3f,%.3f,%.3f, iTime %i, flags %i, priority %i) Sequence opened
unexpectedly!\n%s",
fwTimer::GetFrameCount(), iPedID,
scrVecCoors.x, scrVecCoors.y, scrVecCoors.z, iTime, flags, priority,
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
else
{
Vector3 offset(scrVecCoors);
CTaskSequences::ms_TaskSequenceLists[CTaskSequences::ms_iActiveSequence].AddTask(pT
ask);
}
else
{
ikDebugf3("%u TASK_LOOK_AT_COORD(iPedID %i,
scrVecCoors %.3f,%.3f,%.3f, iTime %i, flags %i, priority %i) Sequence task closed!\
n%s",
fwTimer::GetFrameCount(), iPedID,
scrVecCoors.x, scrVecCoors.y, scrVecCoors.z, iTime, flags, priority,
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
else
{
ikDebugf3("%u TASK_LOOK_AT_COORD(iPedID %i,
scrVecCoors %.3f,%.3f,%.3f, iTime %i, flags %i, priority %i) Sequence task closed!\
n%s",
fwTimer::GetFrameCount(), iPedID,
scrVecCoors.x, scrVecCoors.y, scrVecCoors.z, iTime, flags, priority,
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
}
}
if(NULL_IN_SCRIPTING_LANGUAGE!=iPedID)
{
if (SCRIPT_VERIFY(-
1==CTaskSequences::ms_iActiveSequence, "TASK_LOOK_AT_ENTITY - Sequence opened
unexpectedly"))
{
CPed *pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(iPedID,
CTheScripts::GUID_ASSERT_FLAGS_NO_DEAD_CHECK &
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
if(pPed)
{
scriptAssertf(pPed != pEntity,
"TASK_LOOK_AT_ENTITY - Target and source entities are the same (entityId = %d)",
iPedID);
if(NetworkUtils::IsNetworkCloneOrMigrating(pPed))
{
if(SCRIPT_VERIFY(pEntity-
>GetIsDynamic(), "TASK_LOOK_AT_ENTITY - Entity for clone is not dynamic!"))
{
netObject* pNetObj =
static_cast<const CDynamicEntity*>(pEntity)->GetNetworkObject();
if(SCRIPT_VERIFY(pNetObj,
"TASK_LOOK_AT_ENTITY - Entity for clone is not networked!"))
{
ikDebugf3("%u
TASK_LOOK_AT_ENTITY(pPed %p %s, pEntity %p %s, iTime %i, flags %i, priority %i)
CSettingOfLookAtEntity",
CScriptEntityStateChangeEvent::CSettingOfLookAtEntity parameters(pNetObj,
lookatFlags, iTime);
CScriptEntityStateChangeEvent::Trigger(pPed->GetNetworkObject(), parameters);
}
else
{
ikDebugf3("%u
TASK_LOOK_AT_ENTITY(pPed %p %s, pEntity %p %s, iTime %i, flags %i, priority %i)
Entity for clone is not networked!\n%s",
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
else
{
ikDebugf3("%u
TASK_LOOK_AT_ENTITY(pPed %p %s, pEntity %p %s, iTime %i, flags %i, priority %i)
Entity for clone is not dynamic!\n%s",
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
else
{
ikDebugf3("%u
TASK_LOOK_AT_ENTITY(pPed %p %s, pEntity %p %s, iTime %i, flags %i, priority %i)
LookAt",
fwTimer::GetFrameCount(),
pPed, pPed->GetModelName(), pEntity, pEntity->GetModelName(), iTime, flags,
priority);
pPed->GetIkManager().LookAt(0,
pEntity, iTime, boneTag, NULL, lookatFlags, 500, 500,
(CIkManager::eLookAtPriority)priority);
}
}
else
{
ikDebugf3("%u TASK_LOOK_AT_ENTITY(iPedID
%i, pEntity %p %s, iTime %i, flags %i, priority %i) Entity for clone is not
dynamic!\n%s",
fwTimer::GetFrameCount(), iPedID,
pEntity, pEntity->GetModelName(), iTime, flags, priority,
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
}
else
{
Vector3 offset(0,0,0);
if (SCRIPT_VERIFY(CTaskSequences::ms_iActiveSequence
>=0 && CTaskSequences::ms_iActiveSequence<CTaskSequences::MAX_NUM_SEQUENCE_TASKS,
"TASK_LOOK_AT_ENTITY - Sequence task closed"))
{
if
(SCRIPT_VERIFY(CTaskSequences::ms_bIsOpened[CTaskSequences::ms_iActiveSequence],
"TASK_LOOK_AT_ENTITY - sequence task closed"))
{
ikDebugf3("%u TASK_LOOK_AT_ENTITY(iPedID
%i, pEntity %p %s, iTime %i, flags %i, priority %i) CTaskTriggerLookAt",
fwTimer::GetFrameCount(), iPedID,
pEntity, pEntity->GetModelName(), iTime, flags, priority);
CTaskSequences::ms_TaskSequenceLists[CTaskSequences::ms_iActiveSequence].AddTask(pT
ask);
}
else
{
ikDebugf3("%u TASK_LOOK_AT_ENTITY(iPedID
%i, pEntity %p %s, iTime %i, flags %i, priority %i) Sequence task closed!\n%s",
fwTimer::GetFrameCount(), iPedID,
pEntity, pEntity->GetModelName(), iTime, flags, priority,
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
else
{
ikDebugf3("%u TASK_LOOK_AT_ENTITY(iPedID %i,
pEntity %p %s, iTime %i, flags %i, priority %i) Sequence task closed!\n%s",
fwTimer::GetFrameCount(), iPedID,
pEntity, pEntity->GetModelName(), iTime, flags, priority,
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
}
else
{
ikDebugf3("%u TASK_LOOK_AT_ENTITY(iPedID %i, iEntityID %i,
iTime %i, flags %i, priority %i) Could not find entity!\n%s",
fwTimer::GetFrameCount(), iPedID, iEntityID, iTime,
flags, priority,
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
else
{
ikDebugf3("%u TASK_LOOK_AT_ENTITY(iPedID %i, iEntityID %i, iTime
%i, flags %i, priority %i) Time must be -1 for infinite and > 0!\n%s",
fwTimer::GetFrameCount(), iPedID, iEntityID, iTime, flags,
priority,
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
void CommandClearLookAt(int iPedID)
{
if(NULL_IN_SCRIPTING_LANGUAGE!=iPedID)
{
if(SCRIPT_VERIFY(-1==CTaskSequences::ms_iActiveSequence,
"TASK_CLEAR_LOOK_AT - Sequence opened unexpectedly"))
{
CPed* pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(iPedID);
if(pPed)
{
if(pPed->GetIkManager().IsLooking())
{
ikDebugf3("%u CLEAR_LOOK_AT(pPed %p %s)
AbortLookAt(500)",
fwTimer::GetFrameCount(), pPed, pPed-
>GetModelName());
pPed->GetIkManager().AbortLookAt(500);
}
else
{
ikDebugf3("%u CLEAR_LOOK_AT(pPed %p %s) Ped is
not looking!\n%s",
fwTimer::GetFrameCount(), pPed, pPed-
>GetModelName(),
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
else
{
ikDebugf3("%u CLEAR_LOOK_AT(iPedID %i) Could not find
ped!\n%s",
fwTimer::GetFrameCount(), iPedID,
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
else
{
ikDebugf3("%u CLEAR_LOOK_AT(iPedID %i) Sequence opened
unexpectedly!\n%s",
fwTimer::GetFrameCount(), iPedID,
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
else
{
if(SCRIPT_VERIFY(CTaskSequences::ms_iActiveSequence >=0 &&
CTaskSequences::ms_iActiveSequence<CTaskSequences::MAX_NUM_SEQUENCE_TASKS,
"CLEAR_LOOK_AT - Sequence task closed"))
{
if(SCRIPT_VERIFY(CTaskSequences::ms_bIsOpened[CTaskSequences::ms_iActiveSequence],
"TASK_CLEAR_LOOK_AT - sequence task closed"))
{
ikDebugf3("%u CLEAR_LOOK_AT(iPedID %i)
CTaskClearLookAt",
fwTimer::GetFrameCount(), iPedID);
CTaskSequences::ms_TaskSequenceLists[CTaskSequences::ms_iActiveSequence].AddTask(pT
ask);
}
else
{
ikDebugf3("%u CLEAR_LOOK_AT(iPedID %i) Sequence task
closed!\n%s",
fwTimer::GetFrameCount(), iPedID,
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
else
{
ikDebugf3("%u CLEAR_LOOK_AT(iPedID %i) Sequence task
closed!\n%s",
fwTimer::GetFrameCount(), iPedID,
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
}
}
if(!pSpawnPoint)
{
return true;
}
if(gpClosestEntity == NULL ||
gfClosestDistSq > fDistSq )
{
gpClosestEntity = pEntity;
gfClosestDistSq = fDistSq;
}
}
return true;
}
void GivePedGoToPointAimingTask(
int iPedID, const CAITarget& goToTarget, const CAITarget& aimAtTarget,
float fMoveBlendRatio,
float TargetRadius, float SlowDistance, bool bShoot, bool bUseNavmesh,
int iNavFlags, bool bInstantBlendToAim, int iFiringPatternHash,
int iScriptTaskType, const char* commandName, const int iTime )
{
#if __ASSERT
Vector3 vGoToPosition;
Vector3 vAimAtPosition;
if(goToTarget.GetPosition(vGoToPosition))
{
scriptAssertf(!vGoToPosition.IsClose(VEC3_ZERO, SMALL_FLOAT), "%s
- Goto position is too close to the origin. %s", commandName,
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
if(aimAtTarget.GetPosition(vAimAtPosition))
{
scriptAssertf(!vAimAtPosition.IsClose(VEC3_ZERO, SMALL_FLOAT),
"%s - Aim at position is too close to the origin. %s", commandName,
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
#endif
if(bShoot)
{
pTask->SetFiringPattern(iFiringPatternHash);
}
void CommandTaskGoToCoordWhileAimingAtCoord(
int iPedID, const scrVector & scrVecGoToCoord, const scrVector &
scrVecAimAtCoord, float fMoveBlendRatio,
bool bShoot, float TargetRadius, float SlowDistance, bool bUseNavmesh,
int iNavFlags, bool bInstantBlendToAim, int iFiringPatternHash )
{
GivePedGoToPointAimingTask(
iPedID, CAITarget(Vector3(scrVecGoToCoord)),
CAITarget(Vector3(scrVecAimAtCoord)), fMoveBlendRatio,
TargetRadius, SlowDistance, bShoot, bUseNavmesh, iNavFlags,
bInstantBlendToAim, iFiringPatternHash,
SCRIPT_TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD,
"TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD", -1);
}
void CommandTaskGoToCoordWhileAimingAtEntity(
int iPedID, const scrVector & scrVecGoToCoord, int iAimAtEntityID,
float fMoveBlendRatio,
bool bShoot, float TargetRadius, float SlowDistance, bool bUseNavmesh,
int iNavFlags, bool bInstantBlendToAim, int iFiringPatternHash, const int iTime )
{
const CEntity* pAimAtEntity =
CTheScripts::GetEntityToQueryFromGUID<CEntity>(iAimAtEntityID);
if(pAimAtEntity)
{
GivePedGoToPointAimingTask(
iPedID, CAITarget(Vector3(scrVecGoToCoord)),
CAITarget(pAimAtEntity), fMoveBlendRatio,
TargetRadius, SlowDistance, bShoot, bUseNavmesh, iNavFlags,
bInstantBlendToAim, iFiringPatternHash,
SCRIPT_TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY,
"TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY", iTime);
}
}
void CommandTaskGoToCoordAndAimAtHatedEntitiesNearCoord(
int iPedID, const scrVector & scrVecGoToCoord, const scrVector &
scrAimNearCoord, float fMoveBlendRatio,
bool bShoot, float TargetRadius, float SlowDistance, bool bUseNavmesh,
int iNavFlags, int iTaskFlags, int iFiringPatternHash )
{
Vector3 vGoToPosition(scrVecGoToCoord);
scriptAssertf(!vGoToPosition.IsClose(VEC3_ZERO, SMALL_FLOAT),
"TASK_GO_TO_COORD_AND_AIM_AT_HATED_ENTITIES_NEAR_COORD - Go to position is too
close to the origin. %s", CTheScripts::GetCurrentScriptNameAndProgramCounter());
Vector3 vAimNearPosition(scrAimNearCoord);
scriptAssertf(!vAimNearPosition.IsClose(VEC3_ZERO, SMALL_FLOAT),
"TASK_GO_TO_COORD_AND_AIM_AT_HATED_ENTITIES_NEAR_COORD - Aim near position is too
close to the origin. %s", CTheScripts::GetCurrentScriptNameAndProgramCounter());
CTaskGoToPointAiming* pTask = rage_new
CTaskGoToPointAiming(CAITarget(vGoToPosition), CAITarget(vAimNearPosition),
fMoveBlendRatio, bShoot);
pTask->SetTargetRadius(TargetRadius);
pTask->SetSlowDownDistance(SlowDistance);
pTask->SetUseNavmesh(bUseNavmesh);
pTask->SetAimAtHatedEntitiesNearAimCoord(true);
pTask->SetScriptNavFlags(iNavFlags);
pTask->SetConfigFlags(iTaskFlags);
if(bShoot)
{
pTask->SetFiringPattern(iFiringPatternHash);
}
CScriptPeds::GivePedScriptedTask(iPedID, pTask,
SCRIPT_TASK_GO_TO_COORD_AND_AIM_AT_HATED_ENTITIES_NEAR_COORD,
"TASK_GO_TO_COORD_AND_AI
M_AT_HATED_ENTITIES_NEAR_COORD");
}
void CommandTaskGoToEntityWhileAimingAtCoord(
int iPedID, int iEntityID, const scrVector & scrVecAimAtCoord, float
fMoveBlendRatio,
bool bShoot, float TargetRadius, float SlowDistance, bool bUseNavmesh,
bool bInstantBlendToAim, int iFiringPatternHash )
{
const CEntity* pEntity =
CTheScripts::GetEntityToQueryFromGUID<CEntity>(iEntityID);
if(pEntity)
{
GivePedGoToPointAimingTask(
iPedID, CAITarget(pEntity),
CAITarget(Vector3(scrVecAimAtCoord)), fMoveBlendRatio,
TargetRadius, SlowDistance, bShoot, bUseNavmesh, 0,
bInstantBlendToAim, iFiringPatternHash,
SCRIPT_TASK_GO_TO_ENTITY_WHILE_AIMING_AT_COORD,
"TASK_GO_TO_ENTITY_WHILE_AIMING_AT_COORD", -1);
}
}
void CommandTaskGoToEntityWhileAimingAtEntity(
int iPedID, int iGoToEntityID, int iAimAtEntityID, float
fMoveBlendRatio,
bool bShoot, float TargetRadius, float SlowDistance, bool bUseNavmesh,
bool bInstantBlendToAim, int iFiringPatternHash )
{
const CEntity* pGoToEntity =
CTheScripts::GetEntityToQueryFromGUID<CEntity>(iGoToEntityID);
const CEntity* pAimAtEntity =
CTheScripts::GetEntityToQueryFromGUID<CEntity>(iAimAtEntityID);
if(pVehicle)
{
if(iPedID!=NULL_IN_SCRIPTING_LANGUAGE)
{
CPed *pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(iPedID,
CTheScripts::GUID_ASSERT_FLAGS_NO_DEAD_CHECK &
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
if(pPed &&
NetworkUtils::IsNetworkCloneOrMigrating(pPed))
{
netObject* pNetObj = pPed-
>GetNetworkObject();
if(pNetObj)
{
CScriptEntityStateChangeEvent::CSettingOfTaskVehicleTempAction
parameters(pVehicle->GetNetworkObject(),iAction,iTime);
CScriptEntityStateChangeEvent::Trigger(pNetObj, parameters);
}
}
else
{
if (NetworkInterface::IsGameInProgress()
&& iPedID==NULL_IN_SCRIPTING_LANGUAGE)
{
scriptAssertf(0,
"TASK_VEHICLE_TEMP_ACTION - temp actions cannot be added to a sequence in MP");
return;
}
pTask=rage_new
CTaskCarSetTempAction(pVehicle,iAction,iTime);
CScriptPeds::GivePedScriptedTask( iPedID,
pTask, SCRIPT_TASK_VEHICLE_TEMP_ACTION, "TASK_VEHICLE_TEMP_ACTION");
}
}
}
}
}
}
#if __ASSERT
if (iMission == MISSION_CRASH)
{
VehicleType vehicleType = pVehicle->GetVehicleType();
if (vehicleType != VEHICLE_TYPE_PLANE
&& vehicleType != VEHICLE_TYPE_HELI
&& vehicleType != VEHICLE_TYPE_BLIMP
&& vehicleType != VEHICLE_TYPE_AUTOGYRO)
{
scriptErrorf("%s:%s Non PLANE, HELI, BLIMP or AUTOGYRO has
been told to crash", CTheScripts::GetCurrentScriptNameAndProgramCounter(),
"TASK_VEHICLE_MISSION");
}
}
#endif //__ASSERT
aiTask *pCarTask =
CVehicleIntelligence::GetTaskFromMissionIdentifier(pVehicle, iMission,
pTargetVehicle, vTarget, iDrivingStyle, fTargetReached, fStraightLineDistance,
fCruiseSpeed, bAllowedToGoAgainstTraffic);
#if __ASSERT
if (iMission == MISSION_CRASH)
{
VehicleType vehicleType = pVehicle->GetVehicleType();
if (vehicleType != VEHICLE_TYPE_PLANE
&& vehicleType != VEHICLE_TYPE_HELI
&& vehicleType != VEHICLE_TYPE_BLIMP
&& vehicleType != VEHICLE_TYPE_AUTOGYRO)
{
scriptErrorf("%s:%s Non PLANE, HELI, BLIMP or AUTOGYRO has
been told to crash", CTheScripts::GetCurrentScriptNameAndProgramCounter(),
"TASK_VEHICLE_MISSION_PED_TARGET");
}
}
#endif //__ASSERT
aiTask *pCarTask =
CVehicleIntelligence::GetTaskFromMissionIdentifier(pVehicle, iMission, pTargetPed,
NULL, iDrivingStyle, fTargetReached, fStraightLineDistance, fCruiseSpeed,
bAllowedToGoAgainstTraffic);
CEventScriptCommand* pEvent =
static_cast<CEventScriptCommand*>(pPed->GetPedIntelligence()-
>GetEventOfType(EVENT_SCRIPT_COMMAND));
if( !scriptVerifyf(pEvent, "%s:%s - You must have previously
given the ped a valid driving task!",
CTheScripts::GetCurrentScriptNameAndProgramCounter(), szTaskName) )
{
delete pSubTask;
return;
}
}
// Add task to last sequence thats open
else
{
if( !scriptVerifyf(CTaskSequences::ms_iActiveSequence >=0 &&
CTaskSequences::ms_iActiveSequence<CTaskSequences::MAX_NUM_SEQUENCE_TASKS, "%s:%s
Sequence task closed", CTheScripts::GetCurrentScriptNameAndProgramCounter(),
szTaskName))
{
delete pSubTask;
return;
}
// Add task to sequence
if( !
scriptVerifyf(CTaskSequences::ms_bIsOpened[CTaskSequences::ms_iActiveSequence],
"%s:%s Sequence task closed", CTheScripts::GetCurrentScriptNameAndProgramCounter(),
szTaskName) )
{
delete pSubTask;
return;
}
aiTask* pTask =
CTaskSequences::ms_TaskSequenceLists[CTaskSequences::ms_iActiveSequence].GetLastAdd
edTask();
if( scriptVerifyf(pTask && (pTask->GetTaskType() ==
CTaskTypes::TASK_CONTROL_VEHICLE || pTask->GetTaskType() ==
CTaskTypes::TASK_CAR_DRIVE_POINT_ROUTE), "%s:%s Last task added to sequence not a
valid driving task", CTheScripts::GetCurrentScriptNameAndProgramCounter(),
szTaskName ) )
{
if( pTask->GetTaskType() ==
CTaskTypes::TASK_CONTROL_VEHICLE )
{
CTaskControlVehicle* pVehicleTask =
static_cast<CTaskControlVehicle*>(pTask);
pVehicleTask->SetDesiredSubtask(pSubTask);
}
else if( pTask->GetTaskType() ==
CTaskTypes::TASK_CAR_DRIVE_POINT_ROUTE )
{
CTaskDrivePointRoute* pVehicleTask =
static_cast<CTaskDrivePointRoute*>(pTask);
pVehicleTask->SetDesiredSubtask(pSubTask);
}
else
{
#if __ASSERT
scriptErrorf( "%s:%s unknown task type",
CTheScripts::GetCurrentScriptNameAndProgramCounter(), szTaskName);
#endif
delete pSubTask;
return;
}
}
else
{
delete pSubTask;
}
}
}
if(SCRIPT_VERIFY(NULL_IN_SCRIPTING_LANGUAGE!=iVehicleID,
"TASK_HELI_MISSION - You must specify a heli to be flown"))
{
pVehicle =
CTheScripts::GetEntityToModifyFromGUID<CVehicle>(iVehicleID,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
if(!pVehicle)
return;
if(!SCRIPT_VERIFY(pVehicle->GetVehicleType() ==
VEHICLE_TYPE_HELI, "TASK_HELI_MISSION - Vehicle to be used (2nd parameter) is not
actually a heli"))
return;
}
else
{
return;
}
pPhysical = const_cast<CVehicle*>(pTargetVehicle);
}
const CPed *pTargetPed = NULL;
if (NULL_IN_SCRIPTING_LANGUAGE!=iTargetPedID)
{
pTargetPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(iTargetPedID);
if(!pTargetPed)
return;
pPhysical = const_cast<CPed*>(pTargetPed);
}
aiTask *pHeliTask =
CVehicleIntelligence::GetHeliTaskFromMissionIdentifier(pVehicle, iMission,
pPhysical, &VecTargetCoors, fTargetReached, fCruiseSpeed, fHeliOrientation,
iFlightHeight, iMinHeightAboveTerrain, fSlowDownDistance, iHeliFlags);
if(SCRIPT_VERIFY(NULL_IN_SCRIPTING_LANGUAGE!=iVehicleID,
"TASK_HELI_ESCORT_HELI - You must specify a heli to be flown"))
{
pVehicle =
CTheScripts::GetEntityToModifyFromGUID<CVehicle>(iVehicleID,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
if(!pVehicle)
return;
if(!SCRIPT_VERIFY(pVehicle->GetVehicleType() ==
VEHICLE_TYPE_HELI, "TASK_HELI_ESCORT_HELI - Vehicle to be used (2nd parameter) is
not actually a heli"))
return;
}
else
{
return;
}
if(SCRIPT_VERIFY(NULL_IN_SCRIPTING_LANGUAGE!=iTargetVehicleID,
"TASK_HELI_ESCORT_HELI - You must specify a heli to be targetted"))
{
pTargetVehicle =
CTheScripts::GetEntityToModifyFromGUID<CVehicle>(iTargetVehicleID,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
if(!pTargetVehicle)
return;
if(!SCRIPT_VERIFY(pTargetVehicle->GetVehicleType() ==
VEHICLE_TYPE_HELI, "TASK_HELI_ESCORT_HELI - Vehicle to be targetted (2nd parameter)
is not actually a heli"))
return;
}
else
{
return;
}
Vector3 vOffset(offsetVec);
sVehicleMissionParams params;
params.SetTargetEntity(pTargetVehicle);
params.SetTargetPosition(vOffset);
if(SCRIPT_VERIFY(NULL_IN_SCRIPTING_LANGUAGE!=iVehicleID,
"TASK_PLANE_MISSION - You must specify a plane to be flown"))
{
pVehicle =
CTheScripts::GetEntityToModifyFromGUID<CVehicle>(iVehicleID,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
if(!pVehicle)
return;
if(!SCRIPT_VERIFY(pVehicle->GetVehicleType() ==
VEHICLE_TYPE_PLANE, "TASK_PLANE_MISSION - Vehicle to be used (2nd parameter) is not
actually a plane"))
return;
}
else
{
return;
}
pPhysical = const_cast<CVehicle*>(pTargetVehicle);
}
const CPed *pTargetPed = NULL;
if (NULL_IN_SCRIPTING_LANGUAGE!=iTargetPedID)
{
pTargetPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(iTargetPedID);
if(!pTargetPed)
return;
pPhysical = const_cast<CPed*>(pTargetPed);
}
aiTask *pPlaneTask =
CVehicleIntelligence::GetPlaneTaskFromMissionIdentifier(pVehicle, iMission,
pPhysical, &VecTargetCoors, fTargetReached, fCruiseSpeed, fOrientation,
iFlightHeight, iMinHeightAboveTerrain, bPrecise);
if( pPlaneTask )
{
CTask* pTask = rage_new CTaskControlVehicle(pVehicle,
pPlaneTask);
CScriptPeds::GivePedScriptedTask( iPedID, pTask,
SCRIPT_TASK_VEHICLE_MISSION, "TASK_PLANE_MISSION");
}
}
if(SCRIPT_VERIFY(NULL_IN_SCRIPTING_LANGUAGE!=iVehicleID,
"TASK_PLANE_TAXI - You must specify a plane to taxi"))
{
pVehicle =
CTheScripts::GetEntityToModifyFromGUID<CVehicle>(iVehicleID,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
if(!pVehicle)
return;
if(!SCRIPT_VERIFY(pVehicle->GetVehicleType() ==
VEHICLE_TYPE_PLANE, "TASK_PLANE_TAXI - Vehicle to be used (2nd parameter) is not
actually a plane"))
return;
}
else
{
return;
}
sVehicleMissionParams params;
params.SetTargetPosition(VecTargetCoors);
params.m_fTargetArriveDist = fTargetReached;
params.m_fCruiseSpeed = fCruiseSpeed;
if( pGotoTask )
{
CTask* pTask = rage_new CTaskControlVehicle(pVehicle, pGotoTask);
CScriptPeds::GivePedScriptedTask( iPedID, pTask,
SCRIPT_TASK_VEHICLE_MISSION, "TASK_PLANE_TAXI");
}
}
if(!SCRIPT_VERIFY(pVehicle->GetVehicleType() ==
VEHICLE_TYPE_BOAT, "TASK_BOAT_MISSION - Vehicle to be used (2nd parameter) is not
actually a boat"))
return;
}
else
{
return;
}
pPhysical = const_cast<CVehicle*>(pTargetVehicle);
}
const CPed *pTargetPed = NULL;
if (NULL_IN_SCRIPTING_LANGUAGE!=iTargetPedID)
{
pTargetPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(iTargetPedID);
if(!pTargetPed)
return;
pPhysical = const_cast<CPed*>(pTargetPed);
}
aiTask *pBoatTask =
CVehicleIntelligence::GetBoatTaskFromMissionIdentifier(pVehicle, iMission,
pPhysical, &VecTargetCoors, iDrivingStyle, fTargetReached, fCruiseSpeed,
iBoatFlags);
if( pBoatTask )
{
CTask* pTask = rage_new CTaskControlVehicle(pVehicle, pBoatTask);
CScriptPeds::GivePedScriptedTask( iPedID, pTask,
SCRIPT_TASK_VEHICLE_MISSION, "TASK_BOAT_MISSION");
}
}
void CommandTaskVehiclePark( int iPedID, int iVehicleID, const scrVector &
vecMoveTarget, float HeadingDegrees, int ParkType, float ToleranceDegrees, bool
bKeepLightsOn)
{
CVehicle* pVehicle = NULL;
Vector3 VecTargetCoors = Vector3 (vecMoveTarget);
if(SCRIPT_VERIFY(NULL_IN_SCRIPTING_LANGUAGE != iVehicleID,
"TASK_VEHICLE_PARK - You must specify a vehicle to be parked"))
{
pVehicle =
CTheScripts::GetEntityToModifyFromGUID<CVehicle>(iVehicleID,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
}
if(!pVehicle)
{
return;
}
direction.x = -rage::Sinf(HeadingRadians);
direction.y = rage::Cosf(HeadingRadians);
direction.z = 0.0f;
sVehicleMissionParams params;
params.SetTargetPosition(VecTargetCoors);
if(SCRIPT_VERIFY(NULL_IN_SCRIPTING_LANGUAGE != iVehicleID,
"TASK_PLANE_GOTO_PRECISE_VTOL - You must specify a vehicle to be parked"))
{
pVehicle =
CTheScripts::GetEntityToModifyFromGUID<CVehicle>(iVehicleID);
}
if(!pVehicle)
{
return;
}
if (!SCRIPT_VERIFY(pVehicle->InheritsFromPlane(),
"TASK_PLANE_GOTO_PRECISE_VTOL - Must be used on a plane"))
{
return;
}
sVehicleMissionParams params;
params.SetTargetPosition(VecTargetCoors);
fDesiredOrientation *= DtoR;
fDesiredOrientation += 90.0f*DtoR;
fDesiredOrientation =
fwAngle::LimitRadianAngleSafe(fDesiredOrientation);
if (bAutoPilot)
{
params.m_iDrivingFlags.SetFlag(DF_DontTerminateTaskWhenAchieved);
}
if (bAutoPilot)
{
// Apply task directly to the vehicle
pVehicle->GetIntelligence()->GetTaskManager()-
>SetTask(VEHICLE_TASK_TREE_PRIMARY, pPlaneTask, VEHICLE_TASK_PRIORITY_PRIMARY,
false);
pVehicle->GetIntelligence()->SetUsingScriptAutopilot(true);
pVehicle->SwitchEngineOn(true);
}
else
{
// Apply task to the ped as part of CTaskControlVehicle
CTask* pTask = rage_new CTaskControlVehicle(pVehicle,
pPlaneTask);
CScriptPeds::GivePedScriptedTask( iPedID, pTask,
SCRIPT_TASK_VEHICLE_MISSION, "TASK_PLANE_GOTO_PRECISE_VTOL");
}
}
if(SCRIPT_VERIFY(NULL_IN_SCRIPTING_LANGUAGE != iVehicleID,
"TASK_PLANE_GOTO_PRECISE_VTOL - You must specify a vehicle to be parked"))
{
pVehicle =
CTheScripts::GetEntityToModifyFromGUID<CVehicle>(iVehicleID);
}
if(!pVehicle)
{
return;
}
sVehicleMissionParams params;
params.SetTargetPosition(VecTargetCoors);
s32 subFlags = 0;
if (bAutoPilot)
{
params.m_iDrivingFlags.SetFlag(DF_DontTerminateTaskWhenAchieved);
subFlags = CTaskVehicleGoToSubmarine::SF_HoverAtEnd;
params.m_fTargetArriveDist = 30.0f;
}
if (bAutoPilot)
{
// Apply task directly to the vehicle
pVehicle->GetIntelligence()->GetTaskManager()-
>SetTask(VEHICLE_TASK_TREE_PRIMARY, pSubTask, VEHICLE_TASK_PRIORITY_PRIMARY,
false);
pVehicle->GetIntelligence()->SetUsingScriptAutopilot(true);
pVehicle->SwitchEngineOn(true);
}
else
{
// Apply task to the ped as part of CTaskControlVehicle
CTask* pTask = rage_new CTaskControlVehicle(pVehicle, pSubTask);
CScriptPeds::GivePedScriptedTask( iPedID, pTask,
SCRIPT_TASK_VEHICLE_MISSION, "TASK_SUBMARINE_GOTO_AND_STOP");
}
}
if(SCRIPT_VERIFY(NULL_IN_SCRIPTING_LANGUAGE != iVehicleID,
"TASK_VEHICLE_ESCORT - You must specify a vehicle to drive"))
{
pVehicle =
CTheScripts::GetEntityToModifyFromGUID<CVehicle>(iVehicleID,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
}
if(!pVehicle)
{
return;
}
CEntity *pEntity =
CTheScripts::GetEntityToModifyFromGUID<CEntity>(iEscortEntityID,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
if (!pEntity)
{
return;
}
sVehicleMissionParams params;
params.m_iDrivingFlags = iDrivingFlags;
params.SetTargetEntity(pEntity);
params.m_fCruiseSpeed = fCruiseSpeed;
if (iMinHeightAboveTerrain < 0)
{
iMinHeightAboveTerrain =
CTaskVehicleGoToHelicopter::DEFAULT_MIN_HEIGHT_ABOVE_TERRAIN;
}
CTaskVehicleEscort* pEscortTask = rage_new CTaskVehicleEscort(params,
(CTaskVehicleEscort::VehicleEscortType)iEscortType, fCustomOffset,
iMinHeightAboveTerrain, fStraightLineDist);
if(SCRIPT_VERIFY(NULL_IN_SCRIPTING_LANGUAGE != iVehicleID,
"TASK_VEHICLE_FOLLOW - You must specify a vehicle to drive"))
{
pVehicle =
CTheScripts::GetEntityToModifyFromGUID<CVehicle>(iVehicleID,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
}
if(!pVehicle)
{
return;
}
CEntity *pEntity =
CTheScripts::GetEntityToModifyFromGUID<CEntity>(iFollowEntityID,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
if (!pEntity)
{
return;
}
sVehicleMissionParams params;
params.m_iDrivingFlags = iDrivingFlags;
params.SetTargetEntity(pEntity);
params.m_fCruiseSpeed = fCruiseSpeed;
if(SCRIPT_VERIFY(NULL_IN_SCRIPTING_LANGUAGE != iVehicleID,
"TASK_VEHICLE_HELI_PROTECT - You must specify a vehicle to drive"))
{
pVehicle =
CTheScripts::GetEntityToModifyFromGUID<CVehicle>(iVehicleID,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
}
if(!pVehicle)
{
return;
}
CEntity *pEntity =
CTheScripts::GetEntityToModifyFromGUID<CEntity>(iEscortEntityID,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
if (!pEntity)
{
return;
}
sVehicleMissionParams params;
params.m_iDrivingFlags = iDrivingFlags;
params.SetTargetEntity(pEntity);
params.m_fCruiseSpeed = fCruiseSpeed;
if (iMinHeightAboveTerrain < 0)
{
iMinHeightAboveTerrain =
CTaskVehicleGoToHelicopter::DEFAULT_MIN_HEIGHT_ABOVE_TERRAIN;
}
CTask* pHeliTask = rage_new CTaskVehicleHeliProtect(params,
fCustomOffset, iMinHeightAboveTerrain, iHeliFlags);
CTask* pTask = rage_new CTaskControlVehicle(pVehicle, pHeliTask);
CScriptPeds::GivePedScriptedTask(iPedID, pTask,
SCRIPT_TASK_VEHICLE_MISSION, "TASK_VEHICLE_HELI_PROTECT");
}
CAITarget target;
target.SetEntityAndOffsetUnlimited(pTarget, vTargetOffset);
CTask* pTask = rage_new CTaskPlaneChase(target);
if(!pVehicle)
{
return;
}
pTask-
>SetOrientationMode(static_cast<CTaskHeliChase::OrientationMode>(iOrientationMode))
;
pTask-
>SetOrientationRelative(static_cast<CTaskHeliChase::OrientationRelative>(iOrientati
onRelative));
pTask->SetOrientationOffset(in_orientation);
}
// Ped target
if( iOtherPedID != NULL_IN_SCRIPTING_LANGUAGE )
{
if( !SCRIPT_VERIFY( iTargetVehicleID ==
NULL_IN_SCRIPTING_LANGUAGE, "SET_MOUNTED_WEAPON_TARGET - Can't have a target ped
and a target car" ) )
return;
pTargetEntity = pTargetPed;
}
// Vehicle target
if( iTargetVehicleID != NULL_IN_SCRIPTING_LANGUAGE )
{
const CVehicle *pTargetVehicle =
CTheScripts::GetEntityToQueryFromGUID<CVehicle>( iTargetVehicleID,
bIgnoreTargetVehDeadCheck ? CTheScripts::GUID_ASSERT_FLAGS_NO_DEAD_CHECK :
CTheScripts::GUID_ASSERT_FLAGS_ALL );
if( !SCRIPT_VERIFY( pTargetVehicle,
"SET_MOUNTED_WEAPON_TARGET - Target vehicle doesn't exist" ) )
return;
pTargetEntity = pTargetVehicle;
}
static_cast<CTaskVehicleMountedWeapon*>(pMountedWeaponBase)-
>SetMode((CTaskVehicleMountedWeapon::eTaskMode)TaskMode);
static_cast<CTaskVehicleMountedWeapon*>(pMountedWeaponBase)-
>SetTarget( pTargetEntity, &vTargetCoords );
else
static_cast<CTaskVehicleMountedWeapon*>(pMountedWeaponBase)-
>SetTargetPosition( vTargetCoords );
}
TempVec = Vector3(scrVecCoors);
pTargetEntity = pSecondPed;
}
else
{
return;
}
}
else
{
pSecondPed = NULL;
}
if (iTargetVehicleID != NULL_IN_SCRIPTING_LANGUAGE) // >= 0)
{
if(SCRIPT_VERIFY(iOtherPedID == NULL_IN_SCRIPTING_LANGUAGE,
"TASK_DRIVE_BY - Can't have a target ped and a target car"))
{
pSecondVehicle =
CTheScripts::GetEntityToQueryFromGUID<CVehicle>(iTargetVehicleID);
if(!SCRIPT_VERIFY(pSecondVehicle, "TASK_DRIVE_BY - Target
vehicle doesn't exist"))
return;
pTargetEntity = pSecondVehicle;
}
else
{
return;
}
}
else
{
pSecondVehicle = NULL;
}
bool bAlreadydoingDriveBy=false;
if(NULL_IN_SCRIPTING_LANGUAGE!=iPedID)
{
pPed = CTheScripts::GetEntityToModifyFromGUID<CPed>(iPedID);
if(pPed)
{
bool inVehicle = pPed-
>GetPedConfigFlag( CPED_CONFIG_FLAG_InVehicle );
bool onMount = (pPed->GetMyMount() != NULL);
if(SCRIPT_VERIFY(inVehicle || onMount, "TASK_DRIVE_BY: char
is not in vehicle or on a mount!"))
{
CTask* pControlVehicleTask = pPed-
>GetPedIntelligence()->FindTaskPrimaryByType( CTaskTypes::TASK_CONTROL_VEHICLE );
CTask* pCurrent=pPed->GetPedIntelligence()-
>GetTaskAtPriority(PED_TASK_PRIORITY_PRIMARY);
if(pCurrent && pCurrent-
>GetTaskType()==CTaskTypes::TASK_VEHICLE_GUN)
{
CTaskVehicleGun*
pTaskDriveBy=(CTaskVehicleGun*)pCurrent;
if(pTaskDriveBy-
>GetTarget().GetEntity()==pSecondPed)
{
bAlreadydoingDriveBy=true;
}
}
else if( bPushUnderneathDrivingTaskIfDriving &&
pControlVehicleTask )
{
CTaskControlVehicle*
pTaskControlVehicle=static_cast<CTaskControlVehicle*>(pControlVehicleTask);
pTask = rage_new
CTaskVehicleGun(CTaskVehicleGun::Mode_Fire,uFiringPattern,&target,
((float)iFrequencyPercentage)/100.0f,fAbortRange);
pTaskControlVehicle->SetDesiredSubtask(pTask);
bAlreadydoingDriveBy=true;
}
else if(onMount &&
bPushUnderneathDrivingTaskIfDriving)
{
CTaskComplexControlMovement* pControlTask =
static_cast<CTaskComplexControlMovement*>(pPed->GetPedIntelligence()-
>FindTaskActiveByType(CTaskTypes::TASK_COMPLEX_CONTROL_MOVEMENT));
if(pControlTask)
{
const int existingSubTask = pControlTask-
>GetMainSubTaskType();
if(existingSubTask ==
CTaskTypes::TASK_NONE || existingSubTask == CTaskTypes::TASK_VEHICLE_GUN)
{
pTask = rage_new
CTaskVehicleGun(CTaskVehicleGun::Mode_Fire,uFiringPattern,&target,
((float)iFrequencyPercentage)/100.0f,fAbortRange);
pControlTask-
>SetNewMainSubtask(pTask);
bAlreadydoingDriveBy=true;
}
// Note: not entirely sure what to do in
the case of there being a subtask that's something
// else than CTaskVehicleGun. Now, it
would still give you the driveby task, but running as the
// main task. This seems consistent with
the vehicle case and is probably acceptable.
}
}
}
}
}
if(!bAlreadydoingDriveBy)
{
pTask = rage_new
CTaskVehicleGun(CTaskVehicleGun::Mode_Fire,uFiringPattern,&target,
((float)iFrequencyPercentage)/100.0f,fAbortRange);
CScriptPeds::GivePedScriptedTask( iPedID, pTask,
SCRIPT_TASK_DRIVE_BY, "TASK_DRIVE_BY");
}
}
// Ped target
if( iOtherPedID != NULL_IN_SCRIPTING_LANGUAGE )
{
if( !SCRIPT_VERIFY( iTargetVehicleID ==
NULL_IN_SCRIPTING_LANGUAGE, "SET_DRIVERBY_TASK_TARGET - Can't have a target ped and
a target car" ) )
return;
pTargetEntity = pTargetPed;
}
// Vehicle target
if( iTargetVehicleID != NULL_IN_SCRIPTING_LANGUAGE )
{
const CVehicle *pTargetVehicle =
CTheScripts::GetEntityToQueryFromGUID<CVehicle>( iTargetVehicleID );
if( !SCRIPT_VERIFY( pTargetVehicle,
"SET_DRIVERBY_TASK_TARGET - Target vehicle doesn't exist" ) )
return;
pTargetEntity = pTargetVehicle;
}
static_cast<CTaskGun*>(pGunTaskBase)-
>SetTarget( target );
}
static_cast<CTaskVehicleGun*>(pVehicleGunTaskBase)->SetTarget( pTargetEntity,
&vTargetCoords );
else
static_cast<CTaskVehicleGun*>(pVehicleGunTaskBase)-
>SetTargetPosition( vTargetCoords );
}
// Get the other ped or location or both to determine the target type
CPed* pOtherPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(iOtherPedID);
Vector3 vTargetLoc = svTargetLocation;
CAITarget target;
if(pOtherPed)
{
target = vTargetLoc.IsZero() ? CAITarget(pOtherPed) :
CAITarget(pOtherPed, vTargetLoc);
}
else
{
target = CAITarget(vTargetLoc);
}
CTaskCombat::ms_Tunables.m_ChargeTuning.m_uMinTimeBetweenChargesAtSameTargetMS =
(u32)(fMinTimeSeconds * 1000.0f);
}
}
if(pPed)
{
CTask* pTask = pPed->GetPedIntelligence()-
>FindTaskActiveByType(CTaskTypes::TASK_CHAT);
if (pTask && static_cast<CTaskChat*>(pTask)->IsInPosition())
{
return true;
}
}
return false;
}
if(pPed)
{
CTask* pTask = pPed->GetPedIntelligence()-
>FindTaskActiveByType(CTaskTypes::TASK_CHAT);
if (pTask && static_cast<CTaskChat*>(pTask)->IsPlayingClip())
{
return true;
}
}
return false;
}
if(pPed)
{
CTask* pTask = pPed->GetPedIntelligence()-
>FindTaskActiveByType(CTaskTypes::TASK_CHAT);
if (pTask)
{
static_cast<CTaskChat*>(pTask)-
>LeaveChat(bPlayGoodByeGestures);
}
}
}
enum {
MOBILE_SUB_TASK_PHONE_IN,
MOBILE_SUB_TASK_PHONE_TALK,
MOBILE_SUB_TASK_PHONE_OUT,
MOBILE_SUB_TASK_PHONE_OTHER
};
// Assertf(pTaskUseMobile, "%s:GET_MOBILE_PHONE_TASK_SUB_TASK
- ped is not performing the mobile phone task",
CTheScripts::GetCurrentScriptNameAndProgramCounter());
if (pTaskUseMobile)
{
CTask *pSubTask = pTaskUseMobile->GetSubTask();
if (pSubTask)
{
switch (pSubTask->GetTaskType())
{
case CTaskTypes::TASK_SIMPLE_PHONE_IN:
ReturnSubTask = MOBILE_SUB_TASK_PHONE_IN;
break;
case CTaskTypes::TASK_SIMPLE_PHONE_TALK:
ReturnSubTask = MOBILE_SUB_TASK_PHONE_TALK;
break;
case CTaskTypes::TASK_SIMPLE_PHONE_OUT:
ReturnSubTask = MOBILE_SUB_TASK_PHONE_OUT;
break;
default: // return the same value for all other
sub task types?
ReturnSubTask = MOBILE_SUB_TASK_PHONE_OTHER;
break;
}
}
return true;
}
CVehicle *pVehicle =
CTheScripts::GetEntityToModifyFromGUID<CVehicle>(iVehicleID);
if(pVehicle)
{
s32 iSeatIndex = iSeat+1;
if( iSeatIndex == -1 )
{
// If -2 is passed in, we should put the ped into any
passenger seat
for (s32 seatIndex=1; seatIndex<pVehicle->GetSeatManager()-
>GetMaxSeats(); seatIndex++)
{
if (!pVehicle->GetSeatManager()-
>GetPedInSeat(seatIndex))
{
iSeatIndex = seatIndex;
break;
}
}
if (!SCRIPT_VERIFY(iSeatIndex != -1,
"TASK_WARP_PED_INTO_VEHICLE - Couldn't find free passenger seat to put ped in"))
return;
}
if( iSeatIndex != -1 )
{
if(!SCRIPT_VERIFY((iSeatIndex < pVehicle->GetSeatManager()-
>GetMaxSeats()), "TASK_WARP_PED_INTO_VEHICLE - Seat number is too large"))
return;
if(!SCRIPT_VERIFY(!pVehicle->GetSeatManager()-
>GetPedInSeat(iSeatIndex), "TASK_WARP_PED_INTO_VEHICLE - Vehicle already has a
passenger in the specified seat"))
return;
}
CTaskSetPedInVehicle* pTask=rage_new
CTaskSetPedInVehicle(pVehicle, iSeatIndex, CPed::PVF_Warp);
CScriptPeds::GivePedScriptedTask( iPedID, pTask,
SCRIPT_TASK_WARP_PED_INTO_VEHICLE, "TASK_WARP_PED_INTO_VEHICLE");
}
}
CPhysical* pEntity =
CTheScripts::GetEntityToModifyFromGUID<CPhysical>(iEntityID);
if(scriptVerifyf(!NetworkInterface::IsGameInProgress(),
"TASK_NM_ATTACH_PED_TO_ENTITY - This script command is not allowed in network game
scripts!"))
{
if(pEntity)
{
if(scriptVerifyf(fwAnimManager::GetClipIfExistsByName(pAnimDict,
pGetOnAnimName), "Check that the dictionary: %s is loaded and the anim: %s is
contained with the dictionary",pAnimDict ,pGetOnAnimName ))
{
if(scriptVerifyf(fwAnimManager::GetClipIfExistsByName(pAnimDict,
pIdleAnimName), "Check that the dictionary: %s is loaded and the anim: %s is
contained with the dictionary",pAnimDict ,pIdleAnimName))
{
animDictIndex =
fwAnimManager::FindSlot(pAnimDict).Get();
Quaternion rotationQuaternion;
CScriptEulers::QuaternionFromEulers(rotationQuaternion, vRotation,
static_cast<EulerAngleOrder>(RotOrder));
CTaskAnimatedAttach* pTaskAttach=rage_new
CTaskAnimatedAttach(pEntity, iAttachParentBone, vOffset, rotationQuaternion,
iAttachFlags, animDictIndex, atStringHash(pGetOnAnimName),
atStringHash(pIdleAnimName) );
CScriptPeds::GivePedScriptedTask( iPedID,
pTaskAttach, SCRIPT_TASK_NM_ATTACH_TO_VEHICLE, "TASK_NM_ATTACH_PED_TO_ENTITY");
}
}
}
}
}
#if 0
// This block of code is an attempt to make this task work
for a mounted ped, left in
// for reference. Was hoping that we could just use
CTaskGun with CTaskAimGunVehicleDriveBy,
// but there were some complications. Basically, if we
bypass CTaskVehicleGun, there is nothing
// streaming in the animations that
CTaskAimGunVehicleDriveBy needs. If on the other hand
// we create a CTaskVehicleGun instead of CTaskGun, we
probably won't have support for
// the time parameter. /FF
CTaskTypes::eTaskType aimTaskType =
CTaskTypes::TASK_AIM_GUN_ON_FOOT;
const CPed* pPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(iPedID);
if(pPed && pPed->GetMyMount())
{
aimTaskType =
CTaskTypes::TASK_AIM_GUN_VEHICLE_DRIVE_BY;
}
if(aimTaskType ==
CTaskTypes::TASK_AIM_GUN_VEHICLE_DRIVE_BY)
{
const CVehicleDriveByInfo* pDrivebyInfo =
CVehicleMetadataMgr::GetVehicleDriveByInfoFromPed(pPed);
taskAssert(pDrivebyInfo);
const CVehicleDriveByAnimInfo* pAnimInfo =
CVehicleMetadataMgr::GetDriveByAnimInfoForWeapon(pPed, pPed->GetWeaponManager()-
>GetEquippedWeaponHash());
pTaskGun->SetOverrideClipSetId(pAnimInfo-
>GetClipSet());
}
#endif
}
}
}
return -1;
}
if(pPed)
{
pPed->SetPedResetFlag(CPED_RESET_FLAG_ScriptClearingPedTasks,
true);
if(pPed->IsNetworkClone())
{
bool bClearTasksImmediately = true;
CClearPedTasksEvent::Trigger(pPed, bClearTasksImmediately);
}
else
{
AI_LOG_WITH_ARGS_IF_SCRIPT_OR_PLAYER_PED(pPed, "[Script] -
Ped %s has had tasks cleared immediately by script %s\n",
AILogging::GetDynamicEntityNameSafe(pPed), CTheScripts::GetCurrentScriptName());
pPed->GetPedIntelligence()->FlushImmediately(true);
pPed->SetIsCrouching(false);
pPed->StopAllMotion(true);
#if __DEV
// Record the task in the debug list
static char stringName[] = "CLEAR_PED_TASKS_IMMEDIATELY";
pPed->GetPedIntelligence()->AddScriptHistoryString(stringName,
stringName, CTheScripts::GetCurrentScriptName(),
CTheScripts::GetCurrentGtaScriptThread()->GetThreadPC());
#endif
}
}
if(SCRIPT_VERIFY(iProgress2<CTaskList::MAX_LIST_SIZE,
"TASK_PERFORM_SEQUENCE_FROM_PROGRESS - Sequence task ID too big"))
{
CTaskUseSequence* pTask=rage_new
CTaskUseSequence(iTaskID, iTaskIndex);
pTask-
>SetProgress((u32)iProgress1,iProgress2);
CScriptPeds::GivePedScriptedTask( iPedID,pTask,
SCRIPT_TASK_PERFORM_SEQUENCE_FROM_PROGRESS, "TASK_PERFORM_SEQUENCE_FROM_PROGRESS");
}
}
}
}
}
}
if (pPed)
{
return pPed->GetMotionData()->GetDesiredMbrY();
}
return 0;
}
if(pPed)
{
//Assertf(fMoveBlendRatio >= MOVEBLENDRATIO_STILL &&
fMoveBlendRatio <= MOVEBLENDRATIO_SPRINT, "MODIFY_PED_MOVE_BLEND_RATIO - Ratio must
be between 0..3 inclusive");
if(pPed->GetPedsGroup()!=NULL &&
iTaskPriority==PED_TASK_PRIORITY_EVENT_RESPONSE_NONTEMP
&& pPedAi-
>GetCurrentEventType()==EVENT_LEADER_ENTERED_CAR_AS_DRIVER)
{
pCtrlMove = (CTaskComplexControlMovement*)pPed-
>GetPedIntelligence()-
>FindTaskActiveByType(CTaskTypes::TASK_COMPLEX_CONTROL_MOVEMENT);
}
else
{
pCtrlMove = (CTaskComplexControlMovement*)pPed-
>GetPedIntelligence()-
>FindTaskPrimaryByType(CTaskTypes::TASK_COMPLEX_CONTROL_MOVEMENT);
}
if(!pCtrlMove)
{
return;
}
if(pRunningMoveTask)
{
Assert(pRunningMoveTask->IsMoveTask());
pRunningMoveTask-
>PropagateNewMoveSpeed(fNewMoveBlendRatio);
}
if(pBackUpMoveTask)
{
Assert(pBackUpMoveTask->IsMoveTask());
pBackUpMoveTask->PropagateNewMoveSpeed(fNewMoveBlendRatio);
}
}
}
pedCombatBehaviour.SetCombatMovement(CCombatData::CM_Defensive);
}
}
}
if(NULL_IN_SCRIPTING_LANGUAGE != iPedID)
{
CPed *pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(iPedID);
if (pPed)
{
pPed->GetPedIntelligence()->GetDefensiveAreaManager()-
>GetPrimaryDefensiveArea()->SetAsSphere( vCenter, fRadius, NULL );
SetPedDefensiveIfNeeded(pPed);
}
}
else
{
CTask* pTask = rage_new CTaskSetPedDefensiveArea(vCenter,
fRadius);
CScriptPeds::GivePedScriptedTask(iPedID, pTask,
SCRIPT_TASK_SET_PED_DEFENSIVE_AREA, "TASK_SET_PED_SPHERE_DEFENSIVE_AREA");
}
}
if(NULL_IN_SCRIPTING_LANGUAGE != iPedID)
{
CPed *pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(iPedID);
if (pPed && !pPed->IsNetworkClone())
{
pPed->GetPedIntelligence()->GetDefensiveAreaManager()-
>GetPrimaryDefensiveArea()->Reset();
bGivePedTask = false;
}
}
if(bGivePedTask)
{
CTask* pTask = rage_new CTaskSetPedDefensiveArea();
CScriptPeds::GivePedScriptedTask(iPedID, pTask,
SCRIPT_TASK_SET_PED_DEFENSIVE_AREA, "TASK_CLEAR_DEFENSIVE_AREA");
}
}
#if __DEV
if(NULL_IN_SCRIPTING_LANGUAGE != iPedID)
{
const CPed *pPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(iPedID);
if(pPed)
scriptAssertf(DistSquared(RCC_VEC3V(v), pPed-
>GetTransform().GetPosition()).Getf() < 100.0f, "TASK_PED_SLIDE_TO_COORD_HDG_RATE
is moving a ped over 10m.");
}
#endif
#if __DEV
const CPed *pPed = CTheScripts::GetEntityToQueryFromGUID<CPed>(iPedID);
if(pPed)
scriptAssertf(DistSquared(RCC_VEC3V(v), pPed-
>GetTransform().GetPosition()).Getf() < 100.0f, "TASK_PED_SLIDE_TO_COORD_HDG_RATE
is moving a ped over 10m.");
#endif
CTaskSlideToCoord * pTaskSlide;
if (iTime > 0)
{
pTaskSlide = rage_new
CTaskSlideToCoord(v,heading,speed,AnimName,AnimDictName,flags,fBlendDelta,bRunInSeq
uence,iTime);
}
else
{
pTaskSlide = rage_new
CTaskSlideToCoord(v,heading,speed,AnimName,AnimDictName,flags,fBlendDelta,bRunInSeq
uence);
}
pTaskSlide->SetHeadingIncrement( ( DtoR * fHdgChangeRate) );
pTaskList->AddTask(pTaskSlide);
void CommandTaskPedSlideToCoordAndPlayAnim(
int iPedID,
const scrVector & scrVecCoors,
float fHeadingDegrees, float fSpeed,
const char* AnimName, const char* AnimDictName,
float fBlendDelta,
bool bLooped, bool bExtractBackwardsVelocity, bool
bExtractSidewaysVelocity, bool bHoldOnLastFrame,
int iTime)
{
CommandTaskPedSlideToCoordAndPlayAnimWithHeadingChangeRate(
iPedID, scrVecCoors, fHeadingDegrees, fSpeed, AnimName,
AnimDictName, fBlendDelta, bLooped,
bExtractBackwardsVelocity, bExtractSidewaysVelocity,
bHoldOnLastFrame, iTime, 0.0f);
}
if(pVehicle)
{
fwModelId VehicleModelId;
if (VehicleModelHashKey !=
DUMMY_ENTRY_IN_MODEL_ENUM_FOR_SCRIPTING_LANGUAGE)
{
CModelInfo::GetBaseModelInfoFromHashKey((u32)
VehicleModelHashKey, &VehicleModelId); // ignores return value
scriptAssertf( VehicleModelId.IsValid(),
"%s:TASK_DRIVE_POINT_ROUTE_ADVANCED - this is not a valid model index",
CTheScripts::GetCurrentScriptNameAndProgramCounter());
}
CTask* pTask=rage_new
CTaskDrivePointRoute(pVehicle,CTaskMoveFollowPointRoute::ms_pointRoute,fCruiseSpeed
,iMode,VehicleModelId.GetModelIndex(),7.0f,iDrivingStyle); // 7.0 was -1.0
(finished radius)
CScriptPeds::GivePedScriptedTask( iPedID, pTask,
SCRIPT_TASK_DRIVE_POINT_ROUTE_ADVANCED, "TASK_DRIVE_POINT_ROUTE_ADVANCED");
}
}
Vector3 v1 = sv1;
Vector3 v2 = sv2;
CDefensiveArea area;
area.Set(v1, v2, fDefensiveAreaWidth);
scriptAssertf(!vDefendPosV3.IsClose(VEC3_ZERO, SMALL_FLOAT),
"TASK_GUARD_SPHERE_DEFENSIVE_AREA is tasking a ped to defend the origin. This is
is very likely an error.");
scriptAssertf(fDefensiveAreaRadius >=
CDefensiveArea::GetMinRadius(),"TASK_GUARD_SPHERE_DEFENSIVE_AREA - defensive area
radius should be at least %.2f, but passed in -
%.2f",CDefensiveArea::GetMinRadius(),fDefensiveAreaRadius);
CDefensiveArea area;
area.SetAsSphere(v1, fDefensiveAreaRadius);
fwAngle::LimitDegreeAngle(fNewPedHeading);
if (strcmp(szContext,"Default") == 0)
{
CTask* pTask = rage_new CTaskStandGuardFSM( vDefendPosV3, ( DtoR
* fNewPedHeading));
CScriptPeds::GivePedScriptedTask(iPedIndex, pTask,
SCRIPT_TASK_STAND_GUARD, "TASK_STAND_GUARD");
}
else
{
s32 scenarioType =
CScenarioManager::GetScenarioTypeFromHashKey(atStringHash(szContext));
CTask* pTask = rage_new CTaskStandGuardFSM( vDefendPosV3, ( DtoR
* fNewPedHeading),scenarioType);
CScriptPeds::GivePedScriptedTask(iPedIndex, pTask,
SCRIPT_TASK_STAND_GUARD, "TASK_STAND_GUARD");
}
}
return CTheScripts::GetCurrentGtaScriptHandler()-
>RegisterScriptResourceAndGetRef(coverPoint);
}
CTheScripts::GetCurrentGtaScriptHandler()-
>RemoveScriptResource(CGameScriptResource::SCRIPT_RESOURCE_COVERPOINT,
iIdentifier);
}
// Add a scripted cover area which will be appended to the streamed cover
area array
void CommandAddScriptedCoverArea(const scrVector & scrVecCoors, const float
fRadius)
{
if (CPed* pPlayer = CGameWorld::FindLocalPlayer())
{
Vector3 vFrom(scrVecCoors);
CCover::AddNewScriptedCoverArea(scrVecCoors, fRadius);
}
}
}
Vector3 vFrom(scrVecCoors);
CScriptPeds::GivePedScriptedTask(PedIndex, pCoverTask,
SCRIPT_TASK_SEEK_COVER_FROM_POS, "TASK_SEEK_COVER_FROM_POS");
}
}
if(!pOtherPed)
return;
CScriptPeds::GivePedScriptedTask(iPedIndex, pCoverTask,
SCRIPT_TASK_SEEK_COVER_FROM_PED, "TASK_SEEK_COVER_FROM_PED");
}
}
// Seek cover to the given cover point, away from the position specified
void CommandTaskSeekCoverToCoverPoint( int iPedIndex, int iIdentifier, const
scrVector & scrVecCoors, int iTime, bool bAllowPeekingAndFiring )
{
if (SCRIPT_VERIFY((iTime == -1) || (iTime >
0) ,"TASK_SEEK_COVER_TO_COVER_POINT - Time must be -1 for infinite and > 0" ))
{
CScriptedCoverPoint* pScriptedCoverPoint =
CTheScripts::GetScriptedCoverPointToModifyFromGUID(iIdentifier,
"TASK_SEEK_COVER_TO_COVER_POINT");
CScriptPeds::GivePedScriptedTask(iPedIndex, pCoverTask,
SCRIPT_TASK_SEEK_COVER_TO_COVER_POINT, "TASK_SEEK_COVER_TO_COVER_POINT");
}
}
}
// Seek cover to the given coords, away from the position specified
void CommandTaskSeekCoverToCoords( int iPedIndex, const scrVector &
scrVecCoverCoors, const scrVector & scrVecFromCoors, int iTime, bool
bAllowPeekingAndFiring )
{
if (SCRIPT_VERIFY((iTime == -1) || (iTime >
0) ,"TASK_SEEK_COVER_TO_COVER_COORD - Time must be -1 for infinite and > 0" ))
{
float fTime = ( ( float )iTime ) / 1000.0f;
Vector3 vCover(scrVecCoverCoors);
Vector3 vFrom(scrVecFromCoors);
CScriptPeds::GivePedScriptedTask(iPedIndex, pCoverTask,
SCRIPT_TASK_SEEK_COVER_TO_COORDS, "TASK_SEEK_COVER_TO_COVER_COORD");
}
}
if (bForceInitialFacingDirection)
{
aiDisplayf("TASK_PUT_PED_DIRECTLY_INTO_COVER called forcing ped
to face %s at <<%.2f,%.2f,%.2f>>", bForceFaceLeft ? "Left" : "Right", vscStart.x,
vscStart.y, vscStart.z);
iCoverFlags |= CTaskCover::CF_SpecifyInitialHeading;
if (bForceFaceLeft)
{
iCoverFlags |= CTaskCover::CF_FacingLeft;
}
}
if (iIdentifier != NULL_IN_SCRIPTING_LANGUAGE)
{
pScriptedCoverPoint =
CTheScripts::GetScriptedCoverPointToModifyFromGUID(iIdentifier,
"TASK_PUT_PED_DIRECTLY_INTO_COVER");
}
if (pScriptedCoverPoint)
{
s32 iCoverIndex = pScriptedCoverPoint->GetScriptIndex();
#if __ASSERT
// Find the cover point specified by the identifier
CCoverPoint* pCoverPoint =
CCover::FindCoverPointWithIndex( iCoverIndex );
scriptAssertf(pCoverPoint, "%s:TASK_SEEK_COVER_TO_COVER_POINT -
Invalid cover point specified",
CTheScripts::GetCurrentScriptNameAndProgramCounter());
Assert( pCoverPoint->GetType() ==
CCoverPoint::COVTYPE_SCRIPTED );
#endif
pCoverTask->SetSearchFlags(CTaskCover::CF_CoverSearchScripted |
CTaskCover::CF_ScriptedSeekCover);
pCoverTask->SetScriptedCoverIndex(iCoverIndex);
}
else
{
pCoverTask->SetSearchFlags(CTaskCover::CF_FindClosestPointAtStart
| CTaskCover::CF_ScriptedSeekCover);
}
pCoverTask->SetBlendInDuration(fBlendInDuration);
pCoverTask->SetSearchPosition(vStart);
pCoverTask->SetTimeInCover(fTime);
return pCoverTask;
}
TempVec = Vector3(vscTargetCoords);
const CEntity *pTargetEntity = NULL;
if (iOtherPedIndex != NULL_IN_SCRIPTING_LANGUAGE) // >= 0)
{
if(SCRIPT_VERIFY(iTargetVehicleIndex ==
NULL_IN_SCRIPTING_LANGUAGE, "TASK_PUT_PED_DIRECTLY_INTO_COVER_FROM_TARGET - Can't
have a target ped and a target car"))
{
pSecondPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(iOtherPedIndex);
if(!pSecondPed)
return false;
pTargetEntity = pSecondPed;
}
else
{
return false;
}
}
else
{
pSecondPed = NULL;
}
if (iTargetVehicleIndex != NULL_IN_SCRIPTING_LANGUAGE) // >= 0)
{
if(SCRIPT_VERIFY(iOtherPedIndex == NULL_IN_SCRIPTING_LANGUAGE,
"TASK_PUT_PED_DIRECTLY_INTO_COVER_FROM_TARGET - Can't have a target ped and a
target car"))
{
pSecondVehicle =
CTheScripts::GetEntityToQueryFromGUID<CVehicle>(iTargetVehicleIndex);
if(!SCRIPT_VERIFY(pSecondVehicle,
"TASK_PUT_PED_DIRECTLY_INTO_COVER_FROM_TARGET - Target vehicle doesn't exist"))
return false;
pTargetEntity = pSecondVehicle;
}
else
{
return false;
}
}
else
{
pSecondVehicle = NULL;
}
CTaskCover* pCoverTask =
CreatePutPedDirectlyIntoCoverTask(vPedPosition, CAITarget(), iTime,
bAllowPeekingAndFiring, 0.0f, bForceInitialFacingDirection, bForceFaceLeft,
iIdentifier, false);
pCoverTask-
>SetCoverFlag(CTaskCover::CF_WarpPedToCoverPosition);
CScriptPeds::GivePedScriptedTask(iPedIndex, pCoverTask,
SCRIPT_TASK_WARP_PED_DIRECTLY_INTO_COVER, "TASK_WARP_PED_DIRECTLY_INTO_COVER");
}
}
}
weaponTarget.SetEntityAndOffset(pEntity, vOffset);
}
else
{
weaponTarget.SetEntity(pEntity);
}
}
else
{
Vector3 vPosition(Vector3::ZeroType);
if (aiTarget.GetPosition(vPosition))
{
weaponTarget.SetPosition(vPosition);
}
}
}
}
}
}
}
// Exit cover
void CommandTaskExitCover( int iPedIndex, int iExitType, const scrVector &
vscTargetCoords )
{
s32 iFlags = 0;
CPed* pPed = CTheScripts::GetEntityToModifyFromGUID<CPed>( iPedIndex, 0
);
if (pPed)
{
// Early out if called on network clone or ped doesn't have a
cover point
if (!SCRIPT_VERIFY(!pPed->IsNetworkClone(),
"SCRIPT_TASK_EXIT_COVER - Cannot call on network clone"))
{
return;
}
if (!SCRIPT_VERIFY(pPed->GetCoverPoint(), "SCRIPT_TASK_EXIT_COVER
- Called on a ped without a cover point"))
{
return;
}
if (pPed->GetPedResetFlag(CPED_RESET_FLAG_InCoverFacingLeft))
{
iFlags |= CTaskCover::CF_FacingLeft;
}
}
CAITarget target;
if (iExitType == CTaskCover::FE_Aim)
{
target.SetPosition(vscTargetCoords);
}
CTaskMotionPed* pCurrentMotionTask =
static_cast<CTaskMotionPed*>(pPed->GetPedIntelligence()->GetTaskManager()-
>FindTaskByTypeActive(PED_TASK_TREE_MOTION, CTaskTypes::TASK_MOTION_PED));
if( pCurrentMotionTask )
{
pCurrentMotionTask-
>SetTaskFlag( CTaskMotionPed::PMF_SkipStrafeIntroAnim );
pCurrentMotionTask-
>SetInstantStrafePhaseSync( fStrafePhaseSync );
pCurrentMotionTask-
>SetStrafeDurationOverride( fBlendInDuration );
}
CPed* pTargetPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(iTargetIndex);
if(pPed)
{
if(SCRIPT_VERIFY(pPed->GetMyVehicle() && pPed-
>GetPedConfigFlag( CPED_CONFIG_FLAG_InVehicle ), "SET_DRIVE_TASK_CRUISE_SPEED - Ped
is not in car"))
{
if(SCRIPT_VERIFY(pPed->GetMyVehicle()->GetDriver() == pPed,
"SET_DRIVE_TASK_CRUISE_SPEED - Ped is not driver of car"))
{
if(NetworkUtils::IsNetworkCloneOrMigrating(pPed))
{
CScriptEntityStateChangeEvent::CSettingOfDriveTaskCruiseSpeed
parameters(CruiseSpeed);
CScriptEntityStateChangeEvent::Trigger(pPed-
>GetNetworkObject(), parameters);
}
else
{
CTaskVehicleMissionBase *pCarTask = pPed-
>GetMyVehicle()->GetIntelligence()->GetActiveTask();
if(pCarTask)
{
pCarTask->SetCruiseSpeed(CruiseSpeed);
}
}
}
}
}
}
if(pPed)
{
if(SCRIPT_VERIFY(pPed->GetMyVehicle() && pPed-
>GetPedConfigFlag( CPED_CONFIG_FLAG_InVehicle ), "SET_DRIVE_TASK_MAX_CRUISE_SPEED -
Ped is not in car"))
{
if(SCRIPT_VERIFY(pPed->GetMyVehicle()->GetDriver() == pPed,
"SET_DRIVE_TASK_MAX_CRUISE_SPEED - Ped is not driver of car"))
{
CTaskVehicleMissionBase *pCarTask = pPed-
>GetMyVehicle()->GetIntelligence()->GetActiveTask();
if(pCarTask)
pCarTask->SetMaxCruiseSpeed((u8)
MaxCruiseSpeed);
}
}
}
}
if(pPed)
{
if(SCRIPT_VERIFY(pPed->GetMyVehicle() && pPed-
>GetPedConfigFlag( CPED_CONFIG_FLAG_InVehicle ), "SET_DRIVE_TASK_DRIVING_STYLE -
Ped is not in car"))
{
if(SCRIPT_VERIFY(pPed->GetMyVehicle()->GetDriver() == pPed,
"SET_DRIVE_TASK_DRIVING_STYLE - Ped is not driver of car"))
{
CTaskVehicleMissionBase *pCarTask = pPed-
>GetMyVehicle()->GetIntelligence()->GetActiveTask();
if(pCarTask)
pCarTask->SetDrivingFlags(iDrivingFlags);
}
}
}
}
if(pPed)
{
if(SCRIPT_VERIFY(pPed->GetMyVehicle() && pPed-
>GetPedConfigFlag( CPED_CONFIG_FLAG_InVehicle ), "SET_PURSUE_TASK_IDEAL_DISTANCE -
Ped is not in car"))
{
if(SCRIPT_VERIFY(pPed->GetMyVehicle()->GetDriver() == pPed,
"SET_PURSUE_TASK_IDEAL_DISTANCE - Ped is not driver of car"))
{
CTaskVehiclePursue* pPursueTask =
static_cast<CTaskVehiclePursue*>(pPed->GetMyVehicle()->GetIntelligence()-
>GetTaskManager()->FindTaskByTypeActive(VEHICLE_TASK_TREE_PRIMARY,
CTaskTypes::TASK_VEHICLE_PURSUE));
if(SCRIPT_VERIFY(pPursueTask,
"SET_PURSUE_TASK_IDEAL_DISTANCE - Vehicle is not running TASK_VEHICLE_PURSUE"))
{
pPursueTask->SetIdealDistance(fIdealDistance);
}
}
}
}
}
// Remove any scripted cover points that contain the specified position.
void CommandRemoveCoverBlockingAreasAtPosition(const scrVector &vPosition)
{
Vector3 vPositionV3 = vPosition;
CCover::RemoveCoverBlockingAreasAtPosition(vPositionV3);
}
// Remove any scripter cover points that have the specified params.
void CommandRemoveSpecificCoverBlockingAreas(const scrVector & vStart, const
scrVector & vEnd, bool bBlockObjects, bool bBlockVehicles, bool bBlockMap, bool
bBlockPlayer)
{
Vector3 vStartV3 = vStart;
Vector3 vEndV3 = vEnd;
CCover::RemoveSpecificCoverBlockingArea( vStartV3, vEndV3,
bBlockObjects, bBlockVehicles, bBlockMap, bBlockPlayer );
}
if (scriptVerifyf(type!=Scenario_Invalid,
"TASK_START_SCENARIO_IN_PLACE: Unknown scenario type (%s)", szScenario ))
{
int flags = CTaskUseScenario::SF_StartInCurrentPosition;
if (!playIntro)
{
flags |= CTaskUseScenario::SF_SkipEnterClip;
}
if (iTimeToLeave < 0)
{
flags |= CTaskUseScenario::SF_IdleForever;
}
CTaskUseScenario* pTask = rage_new CTaskUseScenario(type,
flags );
#if __ASSERT
//If assigning a task with a prop, make sure the ped has an
inventory
if (PedIndex != NULL_IN_SCRIPTING_LANGUAGE)
{
CPed* pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(PedIndex,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
scriptAssertf(!pTask->GetScenarioInfo().HasProp() || pPed-
>GetInventory(), "%s: Attempting to assign a ped a scenario (%s) that has a prop,
but the ped(%s) has no inventory",
CTheScripts::GetCurrentScriptNameAndProgramCounter(), pTask-
>GetScenarioInfo().GetName(), pPed->GetModelName());
}
#endif
if(!CPedPopulation::GetScenarioPointInArea(args, &pScenarioPoint))
{
return false;
}
return true;
}
scriptAssertf(type!=Scenario_Invalid,
"DOES_SCENARIO_OF_TYPE_EXIST_IN_AREA: Unknown scenario type (%s)", szScenario );
CPedPopulation::GetScenarioPointInAreaArgs
args(RCC_VEC3V(vScenarioPoint), fMaxRange);
args.m_MustBeFree = false;
args.m_CheckPopulation = false;
if(!CPedPopulation::GetScenarioPointInArea(args, &pScenarioPoint))
{
return false;
}
if(needToCheckPeds)
{
int scenarioTypeFoundInLocation = pScenarioPoint-
>GetScenarioTypeVirtualOrReal();
bool isVirtual =
SCENARIOINFOMGR.IsVirtualIndex(scenarioTypeFoundInLocation);
if(foundNearby)
{
// We didn't find anybody running a CTaskUseScenario on
this scenario, but we found
// somebody using a scenario of the right type, close
enough to the point.
return true;
}
else
{
// Nobody nearby is using a scenario of this type.
return false;
}
}
else
{
return true;
}
}
return false;
}
void CommandResetScenarioGroupsEnabled()
{
SCENARIOPOINTMGR.ResetGroupsEnabledToDefaults();
}
SCENARIOPOINTMGR.SetExclusivelyEnabledScenarioGroupIndex(groupIndex);
}
}
void CommandResetExclusiveScenarioGroup()
{
SCENARIOPOINTMGR.SetExclusivelyEnabledScenarioGroupIndex(-1);
}
scriptAssertf(ret >= 0, "%s used with type name %s, which doesn't
exist.", cmdName, typeName ? typeName : "<NULL>");
return ret;
}
void CommandForceScenarioGroupPriority(const char* groupName, bool
bIsHighPriority)
{
int groupId = GetScenarioGroupHelper(groupName,
"FORCE_SCENARIO_GROUP_PRIORITY", true);
if(groupId != CScenarioPointManager::kNoGroup)
{
CScenarioPointPriorityManager::GetInstance().ForceScenarioPointGroupPriority((u8)gr
oupId, bIsHighPriority);
}
}
void CommandResetScenarioGroupsPriority()
{
CScenarioPointPriorityManager::GetInstance().RestoreGroupsToOriginalPriorities();
}
void CommandResetScenarioTypesEnabled()
{
SCENARIOINFOMGR.ResetScenarioTypesEnabledToDefaults();
}
void CommandSuppressNormalScenarioExitsNextFrame()
{
CScenarioManager::SetScenarioExitsSuppressed(true);
}
void CommandSuppressScenarioAttractionNextFrame()
{
CScenarioManager::SetScenarioAttractionSuppressed(true);
}
void CommandSuppressBreakoutScenarioExitsNextFrame()
{
CScenarioManager::SetScenarioBreakoutExitsSuppressed(true);
}
if(bCheckPeds)
{
// Really check if the ped is actually using the scenario...
// The CScenarioPoint.m_iUses won't get reset until the cleanup
function is called in CTaskUseScenario
// Other states here may be valid for us to start the scenario
CPed::Pool* pool = CPed::GetPool();
const int maxPeds = pool->GetSize();
for(int i = 0; i < maxPeds; i++)
{
CPed* pCurPed = pool->GetSlot(i);
if(!pCurPed || pCurPed == args.m_PedOrDummyToUsePoint ||
pCurPed->PopTypeIsMission())
{
continue;
}
CTaskUseScenario* pTaskUseScenario =
static_cast<CTaskUseScenario*>(pCurPed->GetPedIntelligence()-
>FindTaskActiveByType(CTaskTypes::TASK_USE_SCENARIO));
if(pTaskUseScenario)
{
if (pTaskUseScenario->GetScenarioPoint() !=
pScenarioPoint)
{
continue;
}
#if AI_DEBUG_OUTPUT_ENABLED
CNetObjGame* pNetObjPed = (NetworkInterface::IsGameInProgress() &&
pPed) ? pPed->GetNetworkObject() : NULL;
CAILogManager::GetLog().Log("CommonUseNearestScenarioToPos: [0x%p][%s],
(%.2f,%.2f,%.2f), Range (%.2f), Warp (%d), ScenarioType %d, ScenarioPoint 0x%p
(%.2f,%.2f,%.2f)\r\n",
pPed, pNetObjPed ? pNetObjPed->GetLogName() : "unknown",
svScenarioPlace.x, svScenarioPlace.y, svScenarioPlace.z,
fMaxRange, bWarp,
scenarioType, pScenarioPoint, pScenarioPoint-
>GetWorldPosition().GetXf(), pScenarioPoint->GetWorldPosition().GetYf(),
pScenarioPoint->GetWorldPosition().GetZf());
#endif
if(pScenarioTask)
{
if (pScenarioTask->GetTaskType() ==
CTaskTypes::TASK_USE_SCENARIO)
{
if (iTimeToLeave < 0)
{
((CTaskUseScenario*)pScenarioTask)-
>SetDontLeaveEver();
}
pPed->SetPosition(vPedPos);
pPed->SetHeading(fHeading);
pPed->SetDesiredHeading(fHeading);
}
}
else
{
#if __ASSERT
if( !bCalledFromTask )
scriptAssertf(0,
"%s:TASK_USE_NEAREST_SCENARIO_TO_POS(_WARP) - scenario type found of invalid type",
CTheScripts::GetCurrentScriptNameAndProgramCounter());
#endif // __ASSERT
}
return pScenarioTask;
}
if (pUseScenarioTask)
{
const CScenarioPoint* pScenarioPoint = pUseScenarioTask-
>GetScenarioPoint();
if (pScenarioPoint)
{
//Check if the scenario is on a train.
CEntity* pEntity = pScenarioPoint->GetEntity();
if(pEntity && pEntity->GetIsTypeVehicle())
{
CVehicle* pVehicle = static_cast<CVehicle
*>(pEntity);
if(pVehicle->InheritsFromTrain())
{
//Grab the train.
CTrain* pTrain = static_cast<CTrain
*>(pVehicle);
if (pTaskRideTrain)
{
CScriptPeds::GivePedScriptedTask(iPedIndex, pTaskRideTrain,
SCRIPT_TASK_USE_NEAREST_TRAIN_SCENARIO_TO_POS,
"TASK_USE_NEAREST_TRAIN_SCENARIO_TO_COORD_WARP");
}
}
return false;
}
return false;
}
CTaskComplexControlMovement * pCtrlTask;
pCtrlTask = rage_new CTaskComplexControlMovement( rage_new
CTaskMoveInAir(), rage_new CTaskFall(fallFlags),
CTaskComplexControlMovement::TerminateOnSubtask );
CScriptPeds::GivePedScriptedTask(iPedIndex, pCtrlTask,
SCRIPT_TASK_SKY_DIVE, "TASK_SKY_DIVE");
}
CPhysical* pTargetPhysical =
CTheScripts::GetEntityToModifyFromGUID<CPhysical>(iTargetEntityID);
if (SCRIPT_VERIFY(pTargetPhysical,
"TASK_JETPACK_SHOOT_AT_ENTITY - Target entity is not valid!"))
{
pTaskJetpack-
>SetShootAtParametersForAI(pTargetPhysical, vCoord, fAbortRange,
iFrequencyPercentage, iFiringPatternHash);
}
}
}
}
#endif
}
CScriptPeds::GivePedScriptedTask(iDraggerIndex, pTask,
SCRIPT_TASK_DRAG_PED_TO_COORD, "TASK_DRAG_PED_TO_COORD");
}
}
bool CommandIsPedGettingUp(int PedIndex)
{
const CPed *pPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(PedIndex);
if(pPed)
{
return pPed->GetPedIntelligence()->IsPedGettingUp();
}
return false;
}
if (bForceShootOnGround)
{
bEnableRagdollOnCollision = false;
}
CScriptPeds::GivePedScriptedTask(iPedID, pTask,
SCRIPT_TASK_WRITHE, "TASK_WRITHE");
}
}
return false;
}
void CommandClosePatrolRoute()
{
CTheScripts::GetScriptPatrol().ClosePatrolRoute();
}
void CommandAddPatrolNode(int NodeId, const char* NodeType, const scrVector &
scrNodePos, const scrVector & scrNodeHeading, int Duration)
{
Vector3 vNodePos(scrNodePos);
Vector3 vNodeHeading(scrNodeHeading);
CTheScripts::GetScriptPatrol().AddPatrolNode(NodeId, NodeType,
vNodePos, vNodeHeading, Duration);
}
void CommandCreatePatrolRoute()
{
CTheScripts::GetScriptPatrol().CreatePatrolRoute();
}
CTheScripts::GetCurrentGtaScriptHandler()-
>RemoveScriptResource(CGameScriptResource::SCRIPT_RESOURCE_PATROL_ROUTE,
static_cast<ScriptResourceRef>(HashedRouteName));
}
if (pPed)
{
}
return bHaveVaildTask;
if (pOtherPed)
{
CAITarget target(pOtherPed);
CTask* pTask=rage_new CTaskVehicleCombat(&target, 0,
fFireTolerance);
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_VEHICLE_SHOOT_AT_ENTITY, "TASK_VEHICLE_SHOOT_AT_PED");
}
}
if (pOtherPed)
{
CAITarget target(pOtherPed);
CTask* pTask=rage_new CTaskVehicleCombat(&target,
CTaskVehicleCombat::Flag_justAim);
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_VEHICLE_AIM_AT_ENTITY, "TASK_VEHICLE_AIM_AT_PED");
}
}
UpdatePedRagdollBoundsForScriptActivation(pPedSlung);
if(bAllowOverrideCloneUpdate)
{
iFlags |= CTaskMoVEScripted::Flag_AllowOverrideCloneUpdate;
}
CTaskMoVEScripted* pTask=rage_new
CTaskMoVEScripted(fwMvNetworkDefId(network), iFlags, blendDuration, VEC3_ZERO,
Quaternion::sm_I);
if (iFlags&CTaskMoVEScripted::Flag_Secondary)
{
if(SCRIPT_VERIFY( !bPartOfASequence,
"TASK_MOVE_NETWORK_BY_NAME_SECONDARY* Cant be used in a sequence!" ))
{
CPed * pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(PedIndex);
if(pPed)
{
pPed->GetPedIntelligence()-
>AddTaskSecondary( pTask, PED_TASK_SECONDARY_PARTIAL_ANIM );
}
}
return;
}
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_MOVE_NETWORK, "TASK_MOVE_NETWORK");
}
}
if(bAllowOverrideCloneUpdate)
{
iFlags |= CTaskMoVEScripted::Flag_AllowOverrideCloneUpdate;
}
CTaskMoVEScripted::ScriptInitialParameters* pInitParams =
reinterpret_cast<CTaskMoVEScripted::ScriptInitialParameters*>(&initialParameters);
CTaskMoVEScripted* pTask=rage_new
CTaskMoVEScripted(fwMvNetworkDefId(network), iFlags, blendDuration, VEC3_ZERO,
Quaternion::sm_I, pInitParams);
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_MOVE_NETWORK, "TASK_MOVE_NETWORK");
}
}
iFlags |= CTaskMoVEScripted::Flag_SetInitialPosition;
if(bAllowOverrideCloneUpdate)
{
iFlags |= CTaskMoVEScripted::Flag_AllowOverrideCloneUpdate;
}
Vector3 vPos(pos);
Vector3 vRot(rot);
vRot*= DtoR;
Quaternion qRot;
CScriptEulers::QuaternionFromEulers(qRot, vRot,
static_cast<EulerAngleOrder>(RotOrder));
CTaskMoVEScripted* pTask=rage_new
CTaskMoVEScripted(fwMvNetworkDefId(network), iFlags, blendDuration, vPos, qRot);
if (iFlags&CTaskMoVEScripted::Flag_Secondary)
{
if(SCRIPT_VERIFY( !bPartOfASequence,
"TASK_MOVE_NETWORK_ADVANCED_BY_NAME_SECONDARY* Cant be used in a sequence!" ))
{
CPed * pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(PedIndex);
if(pPed)
{
pPed->GetPedIntelligence()-
>AddTaskSecondary( pTask, PED_TASK_SECONDARY_PARTIAL_ANIM );
}
}
return;
}
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_MOVE_NETWORK, "TASK_MOVE_NETWORK_ADVANCED");
}
}
if (!pTask)
{
pTask = pPed->GetPedIntelligence()-
>FindTaskSecondaryByType(CTaskTypes::TASK_MOVE_SCRIPTED);
}
return static_cast<CTaskMoVEScripted*>(pTask);
}
iFlags |= CTaskMoVEScripted::Flag_SetInitialPosition;
if(bAllowOverrideCloneUpdate)
{
iFlags |= CTaskMoVEScripted::Flag_AllowOverrideCloneUpdate;
}
CTaskMoVEScripted::ScriptInitialParameters* pInitParams =
reinterpret_cast<CTaskMoVEScripted::ScriptInitialParameters*>(&initialParameters);
Vector3 vPos(pos);
Vector3 vRot(rot);
vRot*= DtoR;
Quaternion qRot;
CScriptEulers::QuaternionFromEulers(qRot, vRot,
static_cast<EulerAngleOrder>(RotOrder));
CTaskMoVEScripted* pTask=rage_new
CTaskMoVEScripted(fwMvNetworkDefId(network), iFlags, blendDuration, vPos, qRot,
pInitParams);
CScriptPeds::GivePedScriptedTask(PedIndex, pTask,
SCRIPT_TASK_MOVE_NETWORK, "TASK_MOVE_NETWORK_ADVANCED");
}
}
varId.SetHash((u32)variableClipSetHash);
setId.SetHash((u32)clipSetHash);
pTaskMoVE->SetClipSet(varId, setId);
}
}
}
void CommandSetTaskMoveNetworkEnableCollisionOnNetworkCloneWhenFixed(int
PedIndex, bool bEnableCollisionOnNetworkCloneWhenFixed)
{
CPed* pPed = CTheScripts::GetEntityToModifyFromGUID<CPed>(PedIndex);
if (pPed && pPed->GetPedIntelligence())
{
CTaskMoVEScripted* pTaskMoVE = FindScriptedMoveTask(pPed);
if (SCRIPT_VERIFY(pTaskMoVE,
"SET_TASK_MOVE_NETWORK_ENABLE_COLLISION_ON_NETWORK_CLONE_WHEN_FIXED - task is not
running!"))
{
if (SCRIPT_VERIFY(pTaskMoVE && pTaskMoVE-
>GetIsNetworkActive(),
"SET_TASK_MOVE_NETWORK_ENABLE_COLLISION_ON_NETWORK_CLONE_WHEN_FIXED - task not
active! Check IS_TASK_MOVE_NETWORK_ACTIVE!"))
{
return pTaskMoVE-
>SetEnableCollisionOnNetworkCloneWhenFixed(bEnableCollisionOnNetworkCloneWhenFixed)
;
}
}
}
}
if(!SCRIPT_VERIFY(pAnimDictName.IsNotNull(), "VEHICLE_TASK_PLAY_ANIM -
Animation dictionary name is null"))
{
return;
}
//scriptAssertf(strlen(pAnimName)<ANIM_NAMELEN, "%s:TASK_PLAY_ANIM -
Animation name is null : %s", CTheScripts::GetCurrentScriptNameAndProgramCounter(),
pAnimName);
if(pVehicle)
{
pVehicle->GetIntelligence()->AddTask(VEHICLE_TASK_TREE_SECONDARY,
pTask, VEHICLE_TASK_SECONDARY_ANIM);
}
}
/////////////////////////////////////////////////
// Start the sweep task and point at an entity
/////////////////////////////////////////////////
void CommandTaskSweepAimEntity(int PedIndex, const char* pAnimDictName, const
char* pLowAnimName, const char* pMedAnimName, const char* pHiAnimName, int runTime,
int TargetEntityIndex, float turnRate, float fBlendInDuration)
{
const CEntity *pEntity =
CTheScripts::GetEntityToQueryFromGUID<CEntity>(TargetEntityIndex);
if( pEntity )
{
int clipDictId =
fwAnimManager::FindSlot(strStreamingObjectName(pAnimDictName)).Get();
fwMvClipId lowClipId(pLowAnimName);
fwMvClipId medClipId(pMedAnimName);
fwMvClipId highClipId(pHiAnimName);
CPed *pCopPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(CopPedIndex, 0);
CPed *pCrookPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(CrookPedIndex,
CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
SCRIPT_ASSERT(pCrookPed, "TASK_ARREST_PED - You must specify the crook
ped!");
if(pCrookPed)
{
if(!pCopPed || !pCopPed->IsAPlayerPed())
{
CTask* pTask = rage_new CTaskArrestPed(pCrookPed);
CScriptPeds::GivePedScriptedTask(CopPedIndex, pTask,
SCRIPT_TASK_ARREST_PED, "TASK_ARREST_PED");
}
}
}
return false;
}
return false;
}
bool CommandIsPedBeingArrested(int
ENABLE_TASKS_ARREST_CUFFED_ONLY(iPedIndex))
{
#if ENABLE_TASKS_ARREST_CUFFED
if (const CPed* pPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(iPedIndex))
{
CTaskCuffed* pTaskCuffed = static_cast<CTaskCuffed*>(pPed-
>GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_CUFFED));
return pTaskCuffed && pTaskCuffed->IsBeingCuffed();
}
#endif // ENABLE_TASKS_ARREST_CUFFED
return false;
}
return false;
}
return 0;
}
bool CommandIsPedBeingUncuffed(int
ENABLE_TASKS_ARREST_CUFFED_ONLY(iPedIndex))
{
#if ENABLE_TASKS_ARREST_CUFFED
if (const CPed* pPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(iPedIndex))
{
CTaskCuffed* pTaskCuffed = static_cast<CTaskCuffed*>(pPed-
>GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_CUFFED));
return pTaskCuffed && pTaskCuffed->IsBeingUncuffed();
}
#endif // ENABLE_TASKS_ARREST_CUFFED
return false;
}
int CommandGetPedArrestingTarget(int
ENABLE_TASKS_ARREST_CUFFED_ONLY(iPedIndex))
{
#if ENABLE_TASKS_ARREST_CUFFED
if (const CPed* pPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(iPedIndex))
{
if (CTaskArrest* pTaskArrest = static_cast<CTaskArrest*>(pPed-
>GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_ARREST)))
{
if (pTaskArrest->IsArresting())
{
if (CPed* pTargetPed = pTaskArrest->GetTargetPed())
{
return
CTheScripts::GetGUIDFromEntity(*pTargetPed);
}
}
}
}
#endif // ENABLE_TASKS_ARREST_CUFFED
return 0;
}
bool CommandIsPedTakingCustody(int
ENABLE_TASKS_ARREST_CUFFED_ONLY(iPedIndex))
{
#if ENABLE_TASKS_ARREST_CUFFED
if (const CPed* pPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(iPedIndex))
{
if (CTaskArrest* pTaskArrest = static_cast<CTaskArrest*>(pPed-
>GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_ARREST)))
{
return pTaskArrest->IsTakingCustody();
}
}
#endif // ENABLE_TASKS_ARREST_CUFFED
return false;
}
int CommandGetPedTakingCustodyTarget(int
ENABLE_TASKS_ARREST_CUFFED_ONLY(iPedIndex))
{
#if ENABLE_TASKS_ARREST_CUFFED
if (const CPed* pPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(iPedIndex))
{
if (CTaskArrest* pTaskArrest = static_cast<CTaskArrest*>(pPed-
>GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_ARREST)))
{
if (pTaskArrest->IsTakingCustody())
{
if (CPed* pTargetPed = pTaskArrest->GetTargetPed())
{
return
CTheScripts::GetGUIDFromEntity(*pTargetPed);
}
}
}
}
#endif // ENABLE_TASKS_ARREST_CUFFED
return 0;
}
bool CommandIsPedBeingTakenIntoCustody(int
ENABLE_TASKS_ARREST_CUFFED_ONLY(iPedIndex))
{
#if ENABLE_TASKS_ARREST_CUFFED
if (const CPed* pPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(iPedIndex))
{
if(!pPed->GetPedConfigFlag(CPED_CONFIG_FLAG_IsInCustody))
{
CTaskInCustody* pTaskInCustody =
static_cast<CTaskInCustody*>(pPed->GetPedIntelligence()-
>FindTaskByType(CTaskTypes::TASK_IN_CUSTODY));
if (pTaskInCustody)
{
//! Ask in custody task.
return pTaskInCustody->IsBeingTakenIntoCustody();
}
else if(pPed->GetCustodian())
{
//! Having a custodian indicates that someone is
trying to put you into custody.
return true;
}
}
}
#endif // ENABLE_TASKS_ARREST_CUFFED
return false;
}
int CommandGetPedUncuffingTarget(int
ENABLE_TASKS_ARREST_CUFFED_ONLY(iPedIndex))
{
#if ENABLE_TASKS_ARREST_CUFFED
if (const CPed* pPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(iPedIndex))
{
if (CTaskArrest* pTaskArrest = static_cast<CTaskArrest*>(pPed-
>GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_ARREST)))
{
if(pTaskArrest->IsUnCuffing())
{
if (CPed* pTargetPed = pTaskArrest->GetTargetPed())
{
return
CTheScripts::GetGUIDFromEntity(*pTargetPed);
}
}
}
}
#endif // ENABLE_TASKS_ARREST_CUFFED
return 0;
}
void CommandTaskTakeCustody(int
ENABLE_TASKS_ARREST_CUFFED_ONLY(iCustodianIndex), int
ENABLE_TASKS_ARREST_CUFFED_ONLY(iPedIndex))
{
#if ENABLE_TASKS_ARREST_CUFFED
if (CPed* pCustodianPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(iCustodianIndex))
{
CPed* pPed =
CTheScripts::GetEntityToModifyFromGUID<CPed>(iPedIndex, 0);
if(pPed)
{
if(SCRIPT_VERIFY(!pPed->IsNetworkClone(),
"TASK_TAKE_CUSTODY - Must set on ped owner's, not clone!"))
{
pPed->SetInCustody(true, pCustodianPed);
CTaskInCustody* pTaskInCustody = rage_new
CTaskInCustody(pCustodianPed, true);
CScriptPeds::GivePedScriptedTask(iPedIndex,
pTaskInCustody, SCRIPT_TASK_IN_CUSTODY, "TASK_IN_CUSTODY");
}
}
}
#endif //ENABLE_TASKS_ARREST_CUFFED
}
float CommandGetPedArrestPhase(int
ENABLE_TASKS_ARREST_CUFFED_ONLY(iPedIndex))
{
#if ENABLE_TASKS_ARREST_CUFFED
if (const CPed* pPed =
CTheScripts::GetEntityToQueryFromGUID<CPed>(iPedIndex))
{
//! Arrest Task.
CTaskArrest* pTaskArrest = static_cast<CTaskArrest*>(pPed-
>GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_ARREST));
if (pTaskArrest)
{
return pTaskArrest->GetPhase();
}
//! Cuffed Task
CTaskCuffed* pTaskCuffed = static_cast<CTaskCuffed*>(pPed-
>GetPedIntelligence()->FindTaskActiveByType(CTaskTypes::TASK_CUFFED));
if (pTaskCuffed)
{
return pTaskCuffed->GetPhase();
}
//! In Custody Task.
if(pPed->GetCustodian())
{
CTaskArrest* pTaskArrest = static_cast<CTaskArrest*>(pPed-
>GetCustodian()->GetPedIntelligence()-
>FindTaskActiveByType(CTaskTypes::TASK_ARREST));
if(pTaskArrest && pTaskArrest->IsTakingCustody())
{
return pTaskArrest->GetPhase();
}
}
}
#endif // ENABLE_TASKS_ARREST_CUFFED
return 0.0f;
}
return 0;
}
return 0;
}
if(SCRIPT_VERIFY(NULL_IN_SCRIPTING_LANGUAGE != iVehicleID,
"TASK_VEHICLE_GOTO_NAVMESH - You must specify a vehicle!"))
{
pVehicle =
CTheScripts::GetEntityToModifyFromGUID<CVehicle>(iVehicleID);
}
if(!pVehicle)
{
return;
}
sVehicleMissionParams params;
params.m_iDrivingFlags = iDrivingFlags;
if (fCruiseSpeed > 0.0f)
{
params.m_fCruiseSpeed = fCruiseSpeed;
}
else
{
params.m_fCruiseSpeed = 64.0f;
}
Vector3 vTargetPos(scrVecCoors);
params.SetTargetPosition(vTargetPos);
params.m_fTargetArriveDist = fTargetReached;
ASSERT_ONLY(params.IsTargetValid());
pTargetPed-
>SetPedConfigFlag(CPED_CONFIG_FLAG_CanBeAgitated, true);
pTargetPed-
>SetPedConfigFlag(CPED_CONFIG_FLAG_IsAgitated, true);
pTargetPed->GetPedIntelligence()-
>AddTaskSecondary( pAgitatedTask, PED_TASK_SECONDARY_PARTIAL_ANIM );
/////////////////////////////////////////////////
void SetupScriptCommands()
{
SCR_REGISTER_SECURE(TASK_PAUSE,0x19c58ba8a663b64b,
CommandTaskPause );
SCR_REGISTER_SECURE(TASK_STAND_STILL,0x83f5bcfffba26699,
CommandTaskStandStill );
SCR_REGISTER_SECURE(TASK_JUMP,0x012983f49702416c,
CommandTaskJump
);
SCR_REGISTER_SECURE(TASK_COWER,0x402a537158a551bd,
CommandTaskCower );
SCR_REGISTER_SECURE(TASK_HANDS_UP,0x3598f95a00026dd8,
CommandTaskHandsUp );
SCR_REGISTER_SECURE(UPDATE_TASK_HANDS_UP_DURATION,0x46a203feec0ecef4,
CommandUpdateTaskHandsUpDuration );
SCR_REGISTER_UNUSED(TASK_DUCK,0x54b5addaf8a132f7,
CommandTaskDuck
);
SCR_REGISTER_SECURE(TASK_OPEN_VEHICLE_DOOR,0xf9d446af83e7a624,
CommandTaskOpenVehicleDoor );
SCR_REGISTER_SECURE(TASK_ENTER_VEHICLE,0xb486640392ec50bb,
CommandTaskEnterVehicle );
SCR_REGISTER_SECURE(TASK_LEAVE_VEHICLE,0x02f1caac7cb77e47,
CommandTaskLeaveVehicle );
SCR_REGISTER_UNUSED(TASK_MOUNT_ANIMAL,0x3f0ad0f6b2f34df6,
CommandTaskMountAnimal );
SCR_REGISTER_UNUSED(TASK_DISMOUNT_ANIMAL,0xfe2e56c600a68fce,
CommandTaskDismountAnimal );
SCR_REGISTER_SECURE(TASK_GET_OFF_BOAT,0x9aef335a2f73e00a,
CommandTaskGetOffBoat );
SCR_REGISTER_SECURE(TASK_SKY_DIVE,0x622c61505349f582,
CommandTaskSkyDive );
SCR_REGISTER_SECURE(TASK_PARACHUTE,0xb7121915a3797c65,
CommandTaskParachute );
SCR_REGISTER_SECURE(TASK_PARACHUTE_TO_TARGET,0xf323d744a727a4a2,
CommandTaskParachuteToTarget );
SCR_REGISTER_SECURE(SET_PARACHUTE_TASK_TARGET,0x878fd7e3c8110527,
CommandSetParachuteTaskTarget );
SCR_REGISTER_SECURE(SET_PARACHUTE_TASK_THRUST,0x3ca038370f6e3223,
CommandSetParachuteTaskThrust );
SCR_REGISTER_UNUSED(SET_PARACHUTE_TASK_TARGET_ENTITY,0x63b1ba4dbcd822ac,
CommandSetParachuteTaskTargetEntity );
SCR_REGISTER_UNUSED(TASK_JETPACK,0x23c36cbde291e36c,
CommandTaskJetpack );
SCR_REGISTER_UNUSED(TASK_JETPACK_GO_TO_COORD,0x586dae563b9e50c6,
CommandTaskJetpackGoToCoord );
SCR_REGISTER_UNUSED(TASK_JETPACK_GO_TO_ENTITY,0x67794f749799bd7d,
CommandTaskJetpackGoToEntity );
SCR_REGISTER_UNUSED(TASK_JETPACK_SHOOT_AT_COORD,0x6ebd50cacaab197e,
CommandTaskJetpackShootAtCoord );
SCR_REGISTER_UNUSED(TASK_JETPACK_SHOOT_AT_ENTITY,0xa767f2d717d074f9,
CommandTaskJetpackShootAtEntity );
SCR_REGISTER_UNUSED(TASK_JETPACK_STOP_SHOOTING,0xafd3096512ccc6cd,
CommandTaskJetpackStopShooting );
SCR_REGISTER_SECURE(TASK_RAPPEL_FROM_HELI,0x01ddcf3e0afad31b,
CommandTaskRappelFromHeli );
SCR_REGISTER_UNUSED(TASK_DRAG_PED_TO_COORD,0xb269aa2c4e7f407c,
CommandTaskDragPedToCoord );
SCR_REGISTER_SECURE(TASK_VEHICLE_DRIVE_TO_COORD,0x3b8f94419979a0b1,
CommandTaskVehicleDriveToCoord );
SCR_REGISTER_SECURE(TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE,0x70d024128ce0c114,
CommandTaskVehicleDriveToCoordLongRange);
SCR_REGISTER_SECURE(TASK_VEHICLE_DRIVE_WANDER,0xad6cdbcda713560a,
CommandTaskVehicleDriveWander );
SCR_REGISTER_SECURE(TASK_FOLLOW_TO_OFFSET_OF_ENTITY,0x6fce069e4940878c,
CommandTaskFollowToOffsetOfEntity );
SCR_REGISTER_UNUSED(TASK_FOLLOW_TO_OFFSET_OF_PICKUP,0x6f91735acae34873,
CommandTaskFollowToOffsetOfPickup);
SCR_REGISTER_SECURE(TASK_GO_STRAIGHT_TO_COORD,0x13c3030981ea7c3b,
CommandTaskGoStraightToCoord );
SCR_REGISTER_SECURE(TASK_GO_STRAIGHT_TO_COORD_RELATIVE_TO_ENTITY,0xc98e8d7f0d9d4795
, CommandTaskGoStraightToCoordRelativeToEntity );
SCR_REGISTER_SECURE(TASK_ACHIEVE_HEADING,0x30e00b59448ab97e,
CommandTaskAchieveHeading );
SCR_REGISTER_SECURE(TASK_FLUSH_ROUTE,0x83a64e1fe4669225,
CommandFlushRoute );
SCR_REGISTER_SECURE(TASK_EXTEND_ROUTE,0x9d38259cb54342be,
CommandExtendRoute );
SCR_REGISTER_SECURE(TASK_FOLLOW_POINT_ROUTE,0x790dea4e63d61baa,
CommandTaskFollowPointRoute );
SCR_REGISTER_SECURE(TASK_GO_TO_ENTITY,0xc149e50fbb27dd70,
CommandTaskGoToEntity );
SCR_REGISTER_SECURE(TASK_SMART_FLEE_COORD,0x84918839a90c954c,
CommandTaskSmartFleeCoord );
SCR_REGISTER_SECURE(TASK_SMART_FLEE_PED,0x7734082b0edb0be0,
CommandTaskSmartFleePed );
SCR_REGISTER_UNUSED(TASK_REACT_AND_FLEE_COORD,0x596713d55325f5c9,
CommandTaskReactAndFleeCoord );
SCR_REGISTER_SECURE(TASK_REACT_AND_FLEE_PED,0x7a9da0518e81ec15,
CommandTaskReactAndFleePed );
SCR_REGISTER_UNUSED(TASK_SHOCKING_EVENT_BACK_AWAY,0xa19ac1e1c0d01b42,
CommandTaskShockingEventBackAway );
SCR_REGISTER_UNUSED(TASK_SHOCKING_EVENT_HURRY_AWAY,0x4e742aa861140b96,
CommandTaskShockingEventHurryAway );
SCR_REGISTER_SECURE(TASK_SHOCKING_EVENT_REACT,0xb5bc9e2b43334cef,
CommandTaskShockingEventReact );
SCR_REGISTER_SECURE(TASK_WANDER_IN_AREA,0x5315f7ac22dc95f1,
CommandTaskWanderInArea );
SCR_REGISTER_SECURE(TASK_WANDER_STANDARD,0xd86a0bc9cc0a625a,
CommandTaskWanderStandard );
SCR_REGISTER_SECURE(TASK_WANDER_SPECIFIC,0x26f1da9738c260f2,
CommandTaskWanderSpecific);
SCR_REGISTER_SECURE(TASK_VEHICLE_PARK,0x5b7af57d366861f2,
CommandTaskVehiclePark );
SCR_REGISTER_SECURE(TASK_STEALTH_KILL,0xe2c1d6fa4e5ea991,
CommandTaskStealthKill );
SCR_REGISTER_SECURE(TASK_PLANT_BOMB,0xd9ab2b08ce49a043,
CommandTaskPlantBomb );
SCR_REGISTER_UNUSED(TASK_SHARK_CIRCLE_COORD,0xfff1232e7a485388,
CommandTaskSharkCircleCoord );
SCR_REGISTER_UNUSED(TASK_SHARK_CIRCLE_PED,0xfd4e7488138e4f25,
CommandTaskSharkCirclePed );
SCR_REGISTER_SECURE(TASK_FOLLOW_NAV_MESH_TO_COORD,0x7d1424753688ee7a,
CommandTaskFollowNavMeshToCoord );
scrThread::RegisterCommand(SCRHASH("TASK_FOLLOW_NAV_MESH_TO_COORD_ADVANCED",0x72f31
7bc03266125), CommandTaskFollowNavMeshToCoordAdvanced_ScrStruct
SCRIPT_DEBUGGING_ONLY(, "TASK_FOLLOW_NAV_MESH_TO_COORD_ADVANCED", __FILE__,
scrSignature()));
SCR_REGISTER_SECURE(SET_PED_PATH_CAN_USE_CLIMBOVERS,0xcacf57ad414acc75,
CommandSetPedPathCanUseClimbOvers );
SCR_REGISTER_SECURE(SET_PED_PATH_CAN_USE_LADDERS,0x32bb80e6e576379a,
CommandSetPedPathCanUseLadders );
SCR_REGISTER_SECURE(SET_PED_PATH_CAN_DROP_FROM_HEIGHT,0x91d9c55e11392690,
CommandSetPedPathCanDropFromHeight );
SCR_REGISTER_SECURE(SET_PED_PATH_CLIMB_COST_MODIFIER,0xd0b0e285f00a8b61,
CommandSetPedPathClimbCostModifier );
SCR_REGISTER_SECURE(SET_PED_PATH_MAY_ENTER_WATER,0xbe74e997fb714956,
CommandSetPedToMayEnterWater );
SCR_REGISTER_SECURE(SET_PED_PATH_PREFER_TO_AVOID_WATER,0x8bb90eda0a7b150e,
CommandSetPedPreferToAvoidWater );
SCR_REGISTER_SECURE(SET_PED_PATH_AVOID_FIRE,0x9ef69bf12b6fbcb3,
CommandSetPedPathAvoidFire );
SCR_REGISTER_SECURE(SET_GLOBAL_MIN_BIRD_FLIGHT_HEIGHT,0xb133bc406357c5a5,
CommandSetGlobalMinBirdFlightHeight );
SCR_REGISTER_SECURE(GET_NAVMESH_ROUTE_DISTANCE_REMAINING,0x9fa616df1ef7172a,
CommandGetNavMeshRouteDistanceRemaining );
SCR_REGISTER_SECURE(GET_NAVMESH_ROUTE_RESULT,0xb02b2cd950b6ba04,
CommandGetNavMeshRouteResult );
SCR_REGISTER_SECURE(IS_CONTROLLED_VEHICLE_UNABLE_TO_GET_TO_ROAD,0xa8a55d2ba7497f6f,
CommandIsControlledVehicleUnableToGetToRoad );
SCR_REGISTER_SECURE(TASK_GO_TO_COORD_ANY_MEANS,0x9603c0ec536c6425,
CommandTaskGoToCoordAnyMeans );
SCR_REGISTER_SECURE(TASK_GO_TO_COORD_ANY_MEANS_EXTRA_PARAMS,0x110dedd855267ad4,
CommandTaskGoToCoordAnyMeansExtraParams );
SCR_REGISTER_SECURE(TASK_GO_TO_COORD_ANY_MEANS_EXTRA_PARAMS_WITH_CRUISE_SPEED,0xfaa
a6a6a67097054, CommandTaskGoToCoordAnyMeansExtraParamsWithCruiseSpeed );
///////////////////////////////////////////////////////////////////////
///
//Animation task commands
///////////////////////////////////////////////////////////////////////
///
SCR_REGISTER_SECURE(TASK_PLAY_ANIM,0x49d97b076e3590ac,
CommandTaskPlayAnim
);
SCR_REGISTER_SECURE(TASK_PLAY_ANIM_ADVANCED,0x246c656f8e525dc7,
CommandTaskPlayAnimAdvanced );
SCR_REGISTER_SECURE(STOP_ANIM_TASK,0x227b2dd85a708e68,
CommandStopAnimTask
);
SCR_REGISTER_SECURE(TASK_SCRIPTED_ANIMATION,0x86577f7f045f84c7,
CommandTaskScriptedAnimation );
SCR_REGISTER_SECURE(PLAY_ENTITY_SCRIPTED_ANIM,0xc51d165944c64ca6,
CommandPlayEntityScriptedAnimation );
SCR_REGISTER_UNUSED(START_ANIM_PLAYBACK,0x8fc2aa42fd9fa172,
CommandStartAnimPlayback );
SCR_REGISTER_SECURE(STOP_ANIM_PLAYBACK,0xe3258b995b832e6a,
CommandStopAnimPlayback );
SCR_REGISTER_UNUSED(SET_ANIM_CLIP,0xf962040546b0d2d7,
CommandTaskClipSetClip );
SCR_REGISTER_SECURE(SET_ANIM_WEIGHT,0xecd4da16b454528f,
CommandTaskClipSetBlendWeight );
SCR_REGISTER_UNUSED(SET_ANIM_FILTER,0x979aba5e5d177c74,
CommandTaskClipSetFilter );
SCR_REGISTER_SECURE(SET_ANIM_PHASE,0x60f9850ce23ed209,
CommandTaskClipSetPhase );
SCR_REGISTER_SECURE(SET_ANIM_RATE,0x1cbf84e41b1bfe92,
CommandTaskClipSetRate );
SCR_REGISTER_SECURE(SET_ANIM_LOOPED,0x8bf7b8753e6fadd0,
CommandTaskClipSetLooped );
SCR_REGISTER_SECURE(TASK_PLAY_PHONE_GESTURE_ANIMATION,0xb8ea44dc2c77645c,
CommandTaskPlayPhoneGestureAnimation );
SCR_REGISTER_SECURE(TASK_STOP_PHONE_GESTURE_ANIMATION,0xfcd42d914e921580,
CommandTaskStopPhoneGestureAnimation );
SCR_REGISTER_SECURE(IS_PLAYING_PHONE_GESTURE_ANIM,0x7ce0cfe0533867b0,
CommandIsPlayingPhoneGestureAnim );
SCR_REGISTER_SECURE(GET_PHONE_GESTURE_ANIM_CURRENT_TIME,0x198866ca14785166,
CommandGetPhoneGestureAnimCurrentTime );
SCR_REGISTER_SECURE(GET_PHONE_GESTURE_ANIM_TOTAL_TIME,0xc20701b83e0998c5,
CommandGetPhoneGestureAnimTotalTime );
SCR_REGISTER_SECURE(TASK_VEHICLE_PLAY_ANIM,0x8da8932b29e225ed,
CommandVehicleTaskPlayAnim );
SCR_REGISTER_SECURE(TASK_LOOK_AT_COORD,0xe1e1af00ca06a2b7,
CommandTaskLookAtCoord );
SCR_REGISTER_SECURE(TASK_LOOK_AT_ENTITY,0xf30f15f203736de4,
CommandTaskLookAtEntity );
SCR_REGISTER_SECURE(TASK_CLEAR_LOOK_AT,0xc89ea639a6f338a6,
CommandClearLookAt );
SCR_REGISTER_SECURE(OPEN_SEQUENCE_TASK,0xa888f8cc04f25cc8,
CommandOpenSequenceTask );
SCR_REGISTER_SECURE(CLOSE_SEQUENCE_TASK,0xc963a45b50851768,
CommandCloseSequenceTask );
SCR_REGISTER_SECURE(TASK_PERFORM_SEQUENCE,0x8acada903fcaa42f,
CommandTaskPerformSequence );
SCR_REGISTER_SECURE(TASK_PERFORM_SEQUENCE_LOCALLY,0x7bcccccdabd49a93,
CommandTaskPerformSequenceLocally );
SCR_REGISTER_SECURE(CLEAR_SEQUENCE_TASK,0x7461d7c5ba953bc7,
CommandClearSequenceTask );
SCR_REGISTER_SECURE(SET_SEQUENCE_TO_REPEAT,0x3f2b528df27c8a9f,
CommandSetSequenceToRepeat );
SCR_REGISTER_UNUSED(SET_SEQUENCE_PREVENT_MIGRATION,0x6a177d7d156481ae,
CommandSetSequencePreventMigration );
SCR_REGISTER_SECURE(GET_SEQUENCE_PROGRESS,0x0829092f169950ab,
CommandGetSequenceProgress );
SCR_REGISTER_SECURE(GET_IS_TASK_ACTIVE,0x7f528e84564c4d10,
CommandGetIsTaskActive );
SCR_REGISTER_SECURE(GET_SCRIPT_TASK_STATUS,0x174ced88b97c78d9,
CommandGetScriptTaskStatus );
SCR_REGISTER_SECURE(GET_ACTIVE_VEHICLE_MISSION_TYPE,0xf9eec73ae0b9c439,
CommandGetActiveVehicleMissionType);
SCR_REGISTER_SECURE(TASK_LEAVE_ANY_VEHICLE,0xab7639d658bbccee,
CommandTaskLeaveAnyVehicle );
SCR_REGISTER_SECURE(TASK_AIM_GUN_SCRIPTED,0xccf862b807fe3901,
CommandTaskAimGunScripted );
SCR_REGISTER_SECURE(TASK_AIM_GUN_SCRIPTED_WITH_TARGET,0x30cd3d58df974a16,
CommandTaskAimGunScriptedWithTarget );
SCR_REGISTER_SECURE(UPDATE_TASK_AIM_GUN_SCRIPTED_TARGET,0x20a2aeaf04674323,
CommmandUpdateTaskAimGunScriptedTarget );
SCR_REGISTER_SECURE(GET_CLIP_SET_FOR_SCRIPTED_GUN_TASK,0x3943988de42ef74a,
CommandGetClipSetForScriptedGunTask );
SCR_REGISTER_UNUSED(SET_ROPE_TRACK_ENTITY_FOR_SCRIPTED_GUN_TASK,0x87ac327b490ecccc,
CommandSetRopeTrackEntityForGunTask );
SCR_REGISTER_SECURE(TASK_AIM_GUN_AT_ENTITY,0x636b3584208a6d73,
CommandTaskAimGunAtEntity );
SCR_REGISTER_SECURE(TASK_TURN_PED_TO_FACE_ENTITY,0x529d306014d3c29a,
CommandTaskTurnPedToFaceEntity );
SCR_REGISTER_SECURE(TASK_AIM_GUN_AT_COORD,0x2ea72cdbfacd9e92,
CommandTaskAimGunAtCoord );
SCR_REGISTER_SECURE(TASK_SHOOT_AT_COORD,0xa99ad9dee4794c48,
CommandTaskShootAtCoord );
SCR_REGISTER_SECURE(TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT,0x8625186d3a8ddd7a,
CommandTaskShuffleToNextVehicleSeat );
SCR_REGISTER_SECURE(CLEAR_PED_TASKS,0x03a927199a2dfe46,
CommandClearPedTasks );
SCR_REGISTER_UNUSED(CLEAR_PED_SCRIPT_TASK_IF_RUNNING_THREAT_RESPONSE_NON_TEMP_TASK,
0xf3642376bf6ac7a8, CommandClearPedScriptTaskIfRunningThreatResponseNonTempTask
);
SCR_REGISTER_SECURE(CLEAR_PED_SECONDARY_TASK,0xca2872f050840231,
CommandClearPedSecondaryTask );
SCR_REGISTER_SECURE(TASK_EVERYONE_LEAVE_VEHICLE,0x417047b1f659225c,
CommandTaskEveryoneLeaveVehicle );
SCR_REGISTER_SECURE(TASK_GOTO_ENTITY_OFFSET,0x6624b56c8f9a7bbf,
CommandTaskGotoEntityOffset );
SCR_REGISTER_SECURE(TASK_GOTO_ENTITY_OFFSET_XY,0xb17a6034b9f1bcc2,
CommandTaskGotoEntityOffsetXY );
SCR_REGISTER_UNUSED(TASK_INVESTIGATE_COORDS,0xb834945c258dac7b,
CommandTaskInvestigateCoords);
SCR_REGISTER_SECURE(TASK_TURN_PED_TO_FACE_COORD,0x1a96b8b416bc07d0,
CommandTaskTurnPedToFaceCoord );
SCR_REGISTER_UNUSED(TASK_DRIVE_POINT_ROUTE,0x8c4f2dd2f4b46da9,
CommandTaskDrivePointRoute );
SCR_REGISTER_SECURE(TASK_VEHICLE_TEMP_ACTION,0xcd41d6f721cb9c3a,
CommandTaskVehicleTempAction );
SCR_REGISTER_SECURE(TASK_VEHICLE_MISSION,0xfe5a02cf2178b6a8,
CommandTaskVehicleMission );
SCR_REGISTER_SECURE(TASK_VEHICLE_MISSION_PED_TARGET,0xb69d13e19147910f,
CommandTaskVehicleMissionPedTarget );
SCR_REGISTER_SECURE(TASK_VEHICLE_MISSION_COORS_TARGET,0xfdb121077308e944,
CommandTaskVehicleMissionCoorsTarget );
SCR_REGISTER_UNUSED(IS_PED_INVESTIGATING_WHISTLING_EVENT,0x7fd44d022e2a2e07,
CommandIsPedInvestigatingWhistlingEvent );
SCR_REGISTER_UNUSED(SET_INVESTIGATION_POSITION,0x00f6e31f2f0528cc,
CommandSetInvestigationPosition );
SCR_REGISTER_SECURE(TASK_VEHICLE_ESCORT,0xdbee353c7ca6e88e,
CommandTaskVehicleEscort );
SCR_REGISTER_SECURE(TASK_VEHICLE_FOLLOW,0xbb97101b3b2dbef5,
CommandTaskVehicleFollow );
SCR_REGISTER_SECURE(TASK_VEHICLE_CHASE,0x9286a110a3fd81f1,
CommandTaskVehicleChase );
SCR_REGISTER_SECURE(TASK_VEHICLE_HELI_PROTECT,0x69ac7dd318a3e1ba,
CommandTaskHeliProtect );
SCR_REGISTER_SECURE(SET_TASK_VEHICLE_CHASE_BEHAVIOR_FLAG,0xc8d0b0d2cfd76bb5,
CommandSetTaskVehicleChaseBehaviorFlag );
SCR_REGISTER_SECURE(SET_TASK_VEHICLE_CHASE_IDEAL_PURSUIT_DISTANCE,0xdfad0df477fd9eb
3, CommandSetTaskVehicleChaseIdealPursuitDistance);
SCR_REGISTER_SECURE(TASK_HELI_CHASE,0x42935fa7528ffce8,
CommandTaskHeliChase );
SCR_REGISTER_UNUSED(SET_TASK_HELI_CHASE_TARGET_OFFSET,0x4caff843df59d524,
CommandSetTaskHeliChaseTargetOffset );
SCR_REGISTER_UNUSED(SET_TASK_HELI_CHASE_TARGET_OFFSET_WORLD_SPACE,0x8d6ba126f7ac98e
4, CommandSetTaskHeliChaseTargetOffsetWorldSpace );
SCR_REGISTER_UNUSED(SET_TASK_HELI_CHASE_ORIENTATION,0xe97d050a690da21c,
CommandSetTaskHeliChaseOrientation );
SCR_REGISTER_SECURE(TASK_PLANE_CHASE,0xe8f8c382b0eb7478,
CommandTaskPlaneChase );
SCR_REGISTER_SECURE(TASK_PLANE_LAND,0x214f418bf9481244,
CommandTaskPlaneLand );
SCR_REGISTER_SECURE(CLEAR_DEFAULT_PRIMARY_TASK,0xeb6fbc20375e72c2,
CommandClearDefaultPrimaryTask );
SCR_REGISTER_SECURE(CLEAR_PRIMARY_VEHICLE_TASK,0xe4a094de05c0210c,
CommandClearPrimaryVehicleTask );
SCR_REGISTER_SECURE(CLEAR_VEHICLE_CRASH_TASK,0x273bc6472375634c,
CommandClearVehicleCrashTask );
SCR_REGISTER_SECURE(TASK_PLANE_GOTO_PRECISE_VTOL,0xce661a3c8cf58b44,
CommandTaskPlaneGotoPreciseVtol );
SCR_REGISTER_SECURE(TASK_SUBMARINE_GOTO_AND_STOP,0x835cbdb247b09c67,
CommandTaskSubmarineGotoAndStop );
SCR_REGISTER_SECURE(TASK_HELI_MISSION,0x545c59578966d5b8,
CommandTaskHeliMission );
SCR_REGISTER_SECURE(TASK_HELI_ESCORT_HELI,0x53a1d75e294fdb30,
CommandTaskHeliEscort );
SCR_REGISTER_SECURE(TASK_PLANE_MISSION,0xcdaacb23d43f080d,
CommandTaskPlaneMission );
SCR_REGISTER_SECURE(TASK_PLANE_TAXI,0x908b77e6d8aa83d8,
CommandTaskPlaneTaxi );
SCR_REGISTER_SECURE(TASK_BOAT_MISSION,0xc5a824d6ee9c9cd3,
CommandTaskBoatMission );
SCR_REGISTER_UNUSED(TASK_WEAPON_ROLL, 0x123b2716,
CommandTaskWeaponRoll );
SCR_REGISTER_SECURE(TASK_DRIVE_BY,0x0e6c3a4efa9d9d35,
CommandTaskDriveBy );
SCR_REGISTER_SECURE(SET_DRIVEBY_TASK_TARGET,0x8217f7dfe30383b0,
CommandSetDriveByTarget );
SCR_REGISTER_SECURE(CLEAR_DRIVEBY_TASK_UNDERNEATH_DRIVING_TASK,0xd639b91d6baf25c6,
CommandClearDrivebyTaskUnderneathDrivingTask);
SCR_REGISTER_SECURE(IS_DRIVEBY_TASK_UNDERNEATH_DRIVING_TASK,0x99d3be8c39ba34ff,
CommandIsDrivebyTaskUnderneathDrivingTask);
SCR_REGISTER_SECURE(CONTROL_MOUNTED_WEAPON,0xb604014eee3ca5f8,
CommandControlMountedWeapon );
SCR_REGISTER_SECURE(SET_MOUNTED_WEAPON_TARGET,0x748e7aee8deb2a3a,
CommandSetMountedWeaponTarget );
SCR_REGISTER_UNUSED(CLEAR_MOUNTED_WEAPON_TASK_UNDERNEATH_DRIVING_TASK,0xf4dedafc0c5
50318, CommandClearMountedWeaponTaskUnderneathDrivingTask);
SCR_REGISTER_SECURE(IS_MOUNTED_WEAPON_TASK_UNDERNEATH_DRIVING_TASK,0xcb8e14dc7871f5
2c, CommandIsMountedWeaponTaskUnderneathDrivingTask);
SCR_REGISTER_SECURE(TASK_USE_MOBILE_PHONE,0x57caa5fbf134d4ae,
CommandTaskUseMobilePhone );
SCR_REGISTER_SECURE(TASK_USE_MOBILE_PHONE_TIMED,0x9bd5d84c8c3f0b2c,
CommandTaskUseMobilePhoneTimed );
SCR_REGISTER_UNUSED(TASK_USE_WALKIE_TALKIE,0x46f7b490eb75e92c,
CommandTaskUseWalkieTalkie );
SCR_REGISTER_SECURE(TASK_CHAT_TO_PED,0x2966111306fa6611,
CommandTaskChatToPed );
SCR_REGISTER_UNUSED(IS_CHATTING_PED_IN_POSITION,0xd701a91d13919148,
CommandIsChattingPedInPosition );
SCR_REGISTER_UNUSED(IS_CHATTING_PED_PLAYING_ANIM,0xae8fabcda3959d22,
CommandIsChattingPedPlayingAnim );
SCR_REGISTER_UNUSED(MAKE_CHATTING_PED_PLAY_ANIM,0x3f4bfc1622d674be,
CommandMakeChattingPedPlayAnim );
SCR_REGISTER_UNUSED(MAKE_CHATTING_PED_LEAVE,0x9dfbb232fdaa2244,
CommandMakeChattingPedLeave );
SCR_REGISTER_UNUSED(ADD_FOLLOW_NAVMESH_TO_PHONE_TASK,0xe12df85ba18a27f8,
CommandAddFollowNavmeshToPhoneTask );
SCR_REGISTER_UNUSED(GET_MOBILE_PHONE_TASK_SUB_TASK,0xeb6576b40ae232f5,
CommandGetMobilePhoneTaskSubTask );
SCR_REGISTER_SECURE(TASK_WARP_PED_INTO_VEHICLE,0x73a521eac1ef5c1b,
CommandTaskWarpPedIntoVehicle );
SCR_REGISTER_SECURE(TASK_SHOOT_AT_ENTITY,0x913e191f1f726271,
CommandTaskShootAtEntity );
SCR_REGISTER_SECURE(TASK_CLIMB,0x893ddd76cc7c67b1,
CommandTaskClimb );
SCR_REGISTER_SECURE(TASK_CLIMB_LADDER,0x12425bd281be5f3c,
CommandTaskClimbLadder );
SCR_REGISTER_UNUSED(TASK_RAPPEL_DOWN_WALL,0x42ee24d502e263b3,
CommandTaskRappelDownWall );
SCR_REGISTER_SECURE(TASK_RAPPEL_DOWN_WALL_USING_CLIPSET_OVERRIDE,0x80f9b0598b0c9c85
, CommandTaskRappelDownWallUsingClipsetOverride);
SCR_REGISTER_SECURE(GET_TASK_RAPPEL_DOWN_WALL_STATE,0xa0584425edd6ec9d,
CommandsGetTaskRappelDownWallState );
SCR_REGISTER_SECURE(CLEAR_PED_TASKS_IMMEDIATELY,0x51bb443b279e4104,
CommandClearPedTasksImmediately );
SCR_REGISTER_SECURE(TASK_PERFORM_SEQUENCE_FROM_PROGRESS,0x23378ce912d5b544,
CommandTaskPerformSequenceFromProgress );
SCR_REGISTER_SECURE(SET_NEXT_DESIRED_MOVE_STATE,0x8ff5f2b541a0e471,
CommandSetNextDesiredMoveState );
SCR_REGISTER_SECURE(SET_PED_DESIRED_MOVE_BLEND_RATIO,0x98f7e0916b6b5a0b,
CommandSetPedDesiredMoveBlendRatio );
SCR_REGISTER_SECURE(GET_PED_DESIRED_MOVE_BLEND_RATIO,0x5e9b3bbf63a5e2f6,
CommandGetPedDesiredMoveBlendRatio );
SCR_REGISTER_SECURE(TASK_GOTO_ENTITY_AIMING,0x27c6152f3e5f2933,
CommandTaskGotoEntityAiming );
SCR_REGISTER_SECURE(TASK_SET_DECISION_MAKER,0xd029ba670c8df65b,
CommandTaskSetDecisionMaker );
SCR_REGISTER_SECURE(TASK_SET_SPHERE_DEFENSIVE_AREA,0x223133feb94059cd,
CommandTaskSetSphereDefensiveArea );
SCR_REGISTER_SECURE(TASK_CLEAR_DEFENSIVE_AREA,0x4b16afbb0c12b630,
CommandTaskClearDefensiveArea );
SCR_REGISTER_SECURE(TASK_PED_SLIDE_TO_COORD,0xed2842d9cc50eb6e,
CommandTaskPedSlideToCoord );
SCR_REGISTER_UNUSED(TASK_PED_SLIDE_TO_COORD_AND_PLAY_ANIM,0x93a741ed3ed7f56f,
CommandTaskPedSlideToCoordAndPlayAnim );
SCR_REGISTER_UNUSED(TASK_PED_SLIDE_TO_COORD_AND_PLAY_ANIM_HDG_RATE,
0x95abc676, CommandTaskPedSlideToCoordAndPlayAnimWithHeadingChangeRate );
SCR_REGISTER_SECURE(TASK_PED_SLIDE_TO_COORD_HDG_RATE,0xd6711eee6b632dae,
CommandTaskPedSlideToCoordWithHeadingChangeRate );
SCR_REGISTER_UNUSED(TASK_DRIVE_POINT_ROUTE_ADVANCED,0x730dad3cf7f02fa7,
CommandTaskDrivePointRouteAdvanced );
SCR_REGISTER_SECURE(DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS,0x7fd113b09d96c678,
CommandDoesScriptedCoverPointExistAtCoords );
SCR_REGISTER_SECURE(GET_SCRIPTED_COVER_POINT_COORDS,0x137fb6fc6e40a0a8,
CommandGetScriptedCoverPointCoords );
SCR_REGISTER_SECURE(ADD_SCRIPTED_COVER_AREA, 0x28b7b9bfdaf274aa,
CommandAddScriptedCoverArea);
//SCR_REGISTER_UNUSED(GET_SCRIPTED_COVER_POINT_STATUS, 0x56c9de8d,
CommandGetScriptedCoverPointStatus );
SCR_REGISTER_SECURE(TASK_COMBAT_PED,0xc1a74225341aa9fb,
CommandTaskCombat );
SCR_REGISTER_SECURE(TASK_COMBAT_PED_TIMED,0x5fc4a511155d6f9a,
CommandTaskCombatTimed );
SCR_REGISTER_SECURE(TASK_SEEK_COVER_FROM_POS,0x3f58924930345d8d,
CommandTaskSeekCoverFromPos );
SCR_REGISTER_SECURE(TASK_SEEK_COVER_FROM_PED,0xb67d1d267c666dc4,
CommandTaskSeekCoverFromPed );
SCR_REGISTER_SECURE(TASK_SEEK_COVER_TO_COVER_POINT,0x419e449559bf60b4,
CommandTaskSeekCoverToCoverPoint );
SCR_REGISTER_SECURE(TASK_SEEK_COVER_TO_COORDS,0x264cd1b504831626,
CommandTaskSeekCoverToCoords );
SCR_REGISTER_SECURE(TASK_PUT_PED_DIRECTLY_INTO_COVER,0x809dfa39515d5981,
CommandTaskPutPedDirectlyIntoCover );
SCR_REGISTER_UNUSED(TASK_PUT_PED_DIRECTLY_INTO_COVER_FROM_TARGET,0x9f8e54193d416a78
, CommandTaskPutPedDirectlyIntoCoverFromTarget );
SCR_REGISTER_SECURE(TASK_WARP_PED_DIRECTLY_INTO_COVER,0x6e01e9e8d89f8276,
CommandTaskWarpPedDirectlyIntoCover);
SCR_REGISTER_UNUSED(SET_COVER_TASK_TARGET,0x778c4e702f2a65e5,
CommandSetCoverTarget );
SCR_REGISTER_SECURE(TASK_EXIT_COVER,0x412ed6ee0b28c20d,
CommandTaskExitCover );
SCR_REGISTER_SECURE(TASK_PUT_PED_DIRECTLY_INTO_MELEE,0x957211dc68d2869f,
CommandTaskPutPedDirectlyIntoMelee );
SCR_REGISTER_UNUSED(TASK_ADVANCE_TO_TARGET_IN_LINE,0xd9c691ad25d0d5eb,
CommandTaskAdvanceToTargetInLine );
SCR_REGISTER_UNUSED(SET_CHARGE_TARGET_ENABLED,0x9dea9d830bfc9937,
CommandSetChargeTargetEnabled );
SCR_REGISTER_UNUSED(SET_MAX_NUM_ACTIVE_CHARGERS,0xa2d85c968ea44e3d,
CommandSetMaxNumActiveChargers );
SCR_REGISTER_UNUSED(SET_MIN_TIME_BETWEEN_CHARGES_AT_SAME_TARGET,0xfbb868ae331debcd,
CommandSetMinTimeBetweenChargesAtSameTarget );
SCR_REGISTER_SECURE(TASK_TOGGLE_DUCK,0xa5af895dd224fdc0,
CommandTaskToggleDuck );
SCR_REGISTER_SECURE(TASK_GUARD_CURRENT_POSITION,0x274a180d57a0d9a6,
CommandTaskGuardCurrentPosition );
SCR_REGISTER_SECURE(TASK_GUARD_ASSIGNED_DEFENSIVE_AREA,0x4182d960e26d40bb,
CommandTaskGuardAssignedDefensiveArea );
SCR_REGISTER_UNUSED(TASK_GUARD_ANGLED_DEFENSIVE_AREA,0xf035a69189e11b7a,
CommandTaskGuardAngledDefensiveArea );
SCR_REGISTER_SECURE(TASK_GUARD_SPHERE_DEFENSIVE_AREA,0x061a42ebc9ceb366,
CommandTaskGuardSphereDefensiveArea );
SCR_REGISTER_SECURE(TASK_STAND_GUARD,0x4b551665e9b2e8f6,
CommandTaskStandGuard );
SCR_REGISTER_SECURE(SET_DRIVE_TASK_CRUISE_SPEED,0xbb3480bb855cdb33,
CommandSetDriveTaskCruiseSpeed );
SCR_REGISTER_SECURE(SET_DRIVE_TASK_MAX_CRUISE_SPEED,0x3d2ebac0a745e60c,
CommandSetDriveTaskMaxCruiseSpeed );
SCR_REGISTER_SECURE(SET_DRIVE_TASK_DRIVING_STYLE,0x27be5555cdf6f983,
CommandSetDriveTaskDrivingStyle );
SCR_REGISTER_UNUSED(SET_PURSUE_TASK_IDEAL_DISTANCE,0x971919670679e003,
CommandSetPursueTaskIdealDistance );
SCR_REGISTER_SECURE(ADD_COVER_BLOCKING_AREA,0x5af3192f3c3d45ec,
CommandAddCoverBlockingArea );
SCR_REGISTER_SECURE(REMOVE_ALL_COVER_BLOCKING_AREAS,0x71fcd88fc7f98621,
CommandFlushCoverBlockingAreas );
SCR_REGISTER_SECURE(REMOVE_COVER_BLOCKING_AREAS_AT_POSITION,0xac7ab29fe3c36266,
CommandRemoveCoverBlockingAreasAtPosition );
SCR_REGISTER_SECURE(REMOVE_SPECIFIC_COVER_BLOCKING_AREAS,0xaa443863046f380a,
CommandRemoveSpecificCoverBlockingAreas);
SCR_REGISTER_SECURE(TASK_START_SCENARIO_IN_PLACE,0xc9fefb406c44f60b,
CommandTaskStartScenarioInPlace );
SCR_REGISTER_SECURE(TASK_START_SCENARIO_AT_POSITION,0xdb4f67aafbf32aa5,
CommandTaskStartScenarioAtPosition );
SCR_REGISTER_UNUSED(TASK_START_VEHICLE_SCENARIO,0xbfb160b082e439fa,
CommandTaskStartVehicleScenario );
SCR_REGISTER_SECURE(TASK_USE_NEAREST_SCENARIO_TO_COORD,0x1d698ecdff42ac58,
CommandTaskUseNearestScenarioToPos );
SCR_REGISTER_SECURE(TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP,0x8ceb5d8b56025aa2,
CommandTaskUseNearestScenarioToPosWarp );
SCR_REGISTER_UNUSED(TASK_USE_NEAREST_TRAIN_SCENARIO_TO_COORD_WARP,0x97deba5039a7f6c
7, CommandTaskUseNearestTrainScenarioToPosWarp);
SCR_REGISTER_SECURE(TASK_USE_NEAREST_SCENARIO_CHAIN_TO_COORD,0xaf0492886bc6c105,
CommandTaskUseNearestScenarioChainToPos );
SCR_REGISTER_SECURE(TASK_USE_NEAREST_SCENARIO_CHAIN_TO_COORD_WARP,0x6d4463628184206
0, CommandTaskUseNearestScenarioChainToPosWarp );
SCR_REGISTER_SECURE(DOES_SCENARIO_EXIST_IN_AREA,0x5b138084858689ac,
CommandDoesScenarioExistInArea );
SCR_REGISTER_SECURE(DOES_SCENARIO_OF_TYPE_EXIST_IN_AREA,0x48d8c2729764de01,
CommandDoesScenarioOfTypeExistInArea);
SCR_REGISTER_SECURE(IS_SCENARIO_OCCUPIED,0xc85b76c87214bd87,
CommandIsScenarioOccupied );
SCR_REGISTER_SECURE(PED_HAS_USE_SCENARIO_TASK,0x23bf8abbc9594609,
CommandPedHasUseScenarioTask );
SCR_REGISTER_UNUSED(OVERRIDE_TASKED_SCENARIO_BASE_ANIM,0xdd7e39f6a9fa3ce0,
CommandOverrideTaskedScenarioBaseAnim );
SCR_REGISTER_SECURE(PLAY_ANIM_ON_RUNNING_SCENARIO,0x8b90895f7d0bee59,
CommandPlayAnimOnRunnningScenario );
SCR_REGISTER_SECURE(DOES_SCENARIO_GROUP_EXIST,0x1e63be2394148da0,
CommandDoesScenarioGroupExist );
SCR_REGISTER_SECURE(IS_SCENARIO_GROUP_ENABLED,0x96a05000ccd43584,
CommandIsScenarioGroupEnabled );
SCR_REGISTER_SECURE(SET_SCENARIO_GROUP_ENABLED,0xa3d2c191df3cb742,
CommandSetScenarioGroupEnabled );
SCR_REGISTER_SECURE(RESET_SCENARIO_GROUPS_ENABLED,0xb750df5029a6790a,
CommandResetScenarioGroupsEnabled );
SCR_REGISTER_SECURE(SET_EXCLUSIVE_SCENARIO_GROUP,0xedf1af96b1a92325,
CommandSetExclusiveScenarioGroup );
SCR_REGISTER_SECURE(RESET_EXCLUSIVE_SCENARIO_GROUP,0xa7fee431b0d22e80,
CommandResetExclusiveScenarioGroup );
SCR_REGISTER_UNUSED(FORCE_SCENARIO_GROUP_PRIORITY,0xb2a385f314986d7d,
CommandForceScenarioGroupPriority );
SCR_REGISTER_UNUSED(RESET_SCENARIO_GROUPS_PRIORITY,0xf842c44cfffb8884,
CommandResetScenarioGroupsPriority );
SCR_REGISTER_SECURE(IS_SCENARIO_TYPE_ENABLED,0xaec3fb024079cf27,
CommandIsScenarioTypeEnabled );
SCR_REGISTER_SECURE(SET_SCENARIO_TYPE_ENABLED,0x247f21b1803f0ec4,
CommandSetScenarioTypeEnabled );
SCR_REGISTER_SECURE(RESET_SCENARIO_TYPES_ENABLED,0xa9fc42dea687033d,
CommandResetScenarioTypesEnabled );
SCR_REGISTER_UNUSED(SUPPRESS_NORMAL_SCENARIO_EXITS_NEXT_FRAME,0x462559c9bfdb51d1,
CommandSuppressNormalScenarioExitsNextFrame);
SCR_REGISTER_UNUSED(SUPPRESS_SCENARIO_ATTRACTION_NEXT_FRAME,0xf50d4dd468864fca,
CommandSuppressScenarioAttractionNextFrame);
SCR_REGISTER_UNUSED(SUPPRESS_BREAKOUT_SCENARIO_EXITS_NEXT_FRAME,0x743ef6f4b8c462a8,
CommandSuppressBreakoutScenarioExitsNextFrame);
SCR_REGISTER_SECURE(IS_PED_ACTIVE_IN_SCENARIO,0x67360b9474054c5e,
CommandIsPedActiveInScenario );
SCR_REGISTER_SECURE(IS_PED_PLAYING_BASE_CLIP_IN_SCENARIO,0x2dc1bc483b6a3316,
CommandIsPedPlayingBaseClipInScenario );
SCR_REGISTER_SECURE(SET_PED_CAN_PLAY_AMBIENT_IDLES,0xe72d9eb9db4b874d,
CommandSetCanPlayAmbientIdles );
SCR_REGISTER_SECURE(TASK_COMBAT_HATED_TARGETS_IN_AREA,0xe45039a194d735de,
CommandTaskCombatHatedTargetsInArea );
SCR_REGISTER_SECURE(TASK_COMBAT_HATED_TARGETS_AROUND_PED,0x766d377a16f499e3,
CommandTaskCombatHatedTargetsAroundPed );
SCR_REGISTER_SECURE(TASK_COMBAT_HATED_TARGETS_AROUND_PED_TIMED,0x34ad04c1e7cb67d8,
CommandTaskCombatHatedTargetsAroundPedTimed );
SCR_REGISTER_SECURE(TASK_THROW_PROJECTILE,0xa43ab969c8956eb8,
CommandTaskThrowProjectile );
SCR_REGISTER_SECURE(TASK_SWAP_WEAPON,0xd4834169f570e6d2,
CommandTaskSwapWeapon );
SCR_REGISTER_SECURE(TASK_RELOAD_WEAPON,0x62f1ebed7a072b40,
CommandTaskReloadWeapon );
SCR_REGISTER_UNUSED(TASK_COMBAT_ROLL,0x8eddf98bab0a7bc9,
CommandTaskCombatRoll );
SCR_REGISTER_SECURE(IS_PED_GETTING_UP,0x03454821a9ecf4aa,
CommandIsPedGettingUp );
SCR_REGISTER_SECURE(TASK_WRITHE,0x99e9c3c2d6af9a52,
CommandTaskWrithe );
SCR_REGISTER_SECURE(IS_PED_IN_WRITHE,0x645f244ecddef6cf,
CommandIsPedInWrithe );
SCR_REGISTER_SECURE(OPEN_PATROL_ROUTE,0x9d3e7062e40f2049,
CommandOpenPatrolRoute );
SCR_REGISTER_SECURE(CLOSE_PATROL_ROUTE,0xc65dee4d8f9f02eb,
CommandClosePatrolRoute );
SCR_REGISTER_SECURE(ADD_PATROL_ROUTE_NODE,0xad84831de60c1442,
CommandAddPatrolNode );
SCR_REGISTER_SECURE(ADD_PATROL_ROUTE_LINK,0x23c767cf5993cf13,
CommandAddPatrolNodeLink );
SCR_REGISTER_SECURE(CREATE_PATROL_ROUTE,0x274f700901c096dd,
CommandCreatePatrolRoute );
SCR_REGISTER_SECURE(DELETE_PATROL_ROUTE,0x6bd70dca1fdc1c56,
CommandDeletePatrolRoute );
SCR_REGISTER_SECURE(GET_PATROL_TASK_INFO,0x52f734cebe20dfba,
CommandGetPatrolNodeInfo );
SCR_REGISTER_SECURE(TASK_PATROL,0xac81ed4a4f2fec9c,
CommandTaskPatrol );
SCR_REGISTER_SECURE(TASK_STAY_IN_COVER,0xf21f1b3825b46822,
CommandTaskStayInCover );
SCR_REGISTER_SECURE(ADD_VEHICLE_SUBTASK_ATTACK_COORD,0xf2e8f4bd20869ab2,
CommandAddVehicleSubtaskAttackCoord );
SCR_REGISTER_SECURE(ADD_VEHICLE_SUBTASK_ATTACK_PED,0x80e8bfe6e62212c1,
CommandAddVehicleSubtaskAttackPed );
SCR_REGISTER_SECURE(TASK_VEHICLE_SHOOT_AT_PED,0xbba695ad5315cdd8,
CommandVehicleShootAtPed );
SCR_REGISTER_SECURE(TASK_VEHICLE_AIM_AT_PED,0xc514d16960a4fa43,
CommandVehicleAimAtPed );
SCR_REGISTER_SECURE(TASK_VEHICLE_SHOOT_AT_COORD,0xe5d96c43ab0b0dc6,
CommandVehicleShootAtCoord );
SCR_REGISTER_SECURE(TASK_VEHICLE_AIM_AT_COORD,0x7d49955a299139e9,
CommandVehicleAimAtCoord );
SCR_REGISTER_UNUSED(TASK_VEHICLE_AIM_USING_CAMERA,0x6614a146419eb189,
CommandVehicleAimUsingCamera );
SCR_REGISTER_UNUSED(TASK_HANG_GLIDER,0xbdbadc2ff688e5b2,
CommandTaskHangGlider );
SCR_REGISTER_UNUSED(SET_HANG_GLIDER_AIR_SPEED,0x23b2c655efd82c53,
CommandSetHangGliderAirSpeed );
SCR_REGISTER_SECURE(TASK_VEHICLE_GOTO_NAVMESH,0xdf44785f7bc09dd2,
CommandTaskVehicleGotoNavmesh );
SCR_REGISTER_SECURE(TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD,0x642c58f4ca259448,
CommandTaskGoToCoordWhileAimingAtCoord );
SCR_REGISTER_SECURE(TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY,0x98db2abd53b8d70b,
CommandTaskGoToCoordWhileAimingAtEntity );
SCR_REGISTER_SECURE(TASK_GO_TO_COORD_AND_AIM_AT_HATED_ENTITIES_NEAR_COORD,0x2a83cd9
941ec44d0, CommandTaskGoToCoordAndAimAtHatedEntitiesNearCoord);
SCR_REGISTER_SECURE(TASK_GO_TO_ENTITY_WHILE_AIMING_AT_COORD,0x60fad147bb45a92a,
CommandTaskGoToEntityWhileAimingAtCoord );
SCR_REGISTER_SECURE(TASK_GO_TO_ENTITY_WHILE_AIMING_AT_ENTITY,0x0b47872e9d74882c,
CommandTaskGoToEntityWhileAimingAtEntity);
SCR_REGISTER_UNUSED(TASK_BIND_POSE,0xac5fea0754bcc7cf,
CommandTaskBindPose );
SCR_REGISTER_UNUSED(ELECTROCUTE_PED,0x9eebf0c360e75bef,
CommandElectrocute );
SCR_REGISTER_SECURE(SET_HIGH_FALL_TASK,0xdb1174c6546afc65,
CommandHighFall
);
SCR_REGISTER_UNUSED(DANGLE_FROM_MEATHOOK,0xd9c1a873ff69a447,
CommandDangleFromMeathook );
SCR_REGISTER_UNUSED(SLUNG_OVER_SHOULDER,0xcbdd75b6dfb92714,
CommandSlungOverShoulder );
SCR_REGISTER_UNUSED(MAKE_PED_STUMBLE,0x6b0ebf2507baba30,
CommandStumble );
SCR_REGISTER_SECURE(REQUEST_WAYPOINT_RECORDING,0x70f260358d1a42c4,
waypoint_commands::CommandRequestWaypointRecording
);
SCR_REGISTER_SECURE(GET_IS_WAYPOINT_RECORDING_LOADED,0xbd3cea9cd36e271e,
waypoint_commands::CommandGetIsWaypointRecordingLoaded );
SCR_REGISTER_SECURE(REMOVE_WAYPOINT_RECORDING,0x10f7bfe3a88cb99b,
waypoint_commands::CommandRemoveWaypointRecording
);
SCR_REGISTER_SECURE(WAYPOINT_RECORDING_GET_NUM_POINTS,0x042959494b85e155,
waypoint_commands::CommandWaypointRecordingGetNumPoints );
SCR_REGISTER_SECURE(WAYPOINT_RECORDING_GET_COORD,0x76263b6f2b150aff,
waypoint_commands::CommandWaypointRecordingGetCoord );
SCR_REGISTER_SECURE(WAYPOINT_RECORDING_GET_SPEED_AT_POINT,0xaa4b93a8c0d05be3,
waypoint_commands::CommandWaypointRecordingGetSpeedAtPoint);
SCR_REGISTER_SECURE(WAYPOINT_RECORDING_GET_CLOSEST_WAYPOINT,0xe49fae8c75dfe3b0,
waypoint_commands::CommandWaypointRecordingGetClosestWaypoint );
SCR_REGISTER_SECURE(TASK_FOLLOW_WAYPOINT_RECORDING,0x4218764824f31173,
waypoint_commands::CommandTaskFollowWaypointRecording );
SCR_REGISTER_SECURE(IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED,0xb4ae2a423a4176ce,
waypoint_commands::CommandIsWaypointPlaybackGoingOnForPed );
SCR_REGISTER_SECURE(GET_PED_WAYPOINT_PROGRESS,0x0b331f8dc5c61933,
waypoint_commands::CommandGetPedWaypointProgress
);
SCR_REGISTER_UNUSED(SET_PED_WAYPOINT_PROGRESS,0xadc4c24903027450,
waypoint_commands::CommandSetPedWaypointProgress
);
SCR_REGISTER_SECURE(GET_PED_WAYPOINT_DISTANCE,0xb80b2f3bfb68df1a,
waypoint_commands::CommandGetPedWaypointDistance
);
SCR_REGISTER_SECURE(SET_PED_WAYPOINT_ROUTE_OFFSET,0x455e0249f399ef4c,
waypoint_commands::CommandSetPedWaypointRouteOffset
);
SCR_REGISTER_SECURE(GET_WAYPOINT_DISTANCE_ALONG_ROUTE,0xd2fe51a38e9a1946,
waypoint_commands::CommandGetWaypointDistanceAlongRoute );
SCR_REGISTER_SECURE(WAYPOINT_PLAYBACK_GET_IS_PAUSED,0x656f70678f75d966,
waypoint_commands::CommandWaypointPlaybackGetIsPaused );
SCR_REGISTER_SECURE(WAYPOINT_PLAYBACK_PAUSE,0x499c4b0d70f4097c,
waypoint_commands::CommandWaypointPlaybackPause );
SCR_REGISTER_SECURE(WAYPOINT_PLAYBACK_RESUME,0x4ffeb98e621afb27,
waypoint_commands::CommandWaypointPlaybackResume
);
SCR_REGISTER_SECURE(WAYPOINT_PLAYBACK_OVERRIDE_SPEED,0x369b082b04a4f619,
waypoint_commands::CommandWaypointPlaybackOverrideSpeed
);
SCR_REGISTER_SECURE(WAYPOINT_PLAYBACK_USE_DEFAULT_SPEED,0x5039c5050b42f1e0,
waypoint_commands::CommandWaypointPlaybackUseDefaultSpeed );
SCR_REGISTER_SECURE(USE_WAYPOINT_RECORDING_AS_ASSISTED_MOVEMENT_ROUTE,0xbb6589e0d27
bd54e, waypoint_commands::CommandUseWaypointRecordingAsAssistedMovementRoute);
SCR_REGISTER_SECURE(WAYPOINT_PLAYBACK_START_AIMING_AT_PED,0x9b4dd143cd0c78fe,
waypoint_commands::CommandWaypointPlaybackStartAimingAtPed );
SCR_REGISTER_UNUSED(WAYPOINT_PLAYBACK_START_AIMING_AT_ENTITY,0x47e2d6d68a34062a,
waypoint_commands::CommandWaypointPlaybackStartAimingAtEntity );
SCR_REGISTER_SECURE(WAYPOINT_PLAYBACK_START_AIMING_AT_COORD,0xa142fd669ff80016,
waypoint_commands::CommandWaypointPlaybackStartAimingAtCoord );
SCR_REGISTER_SECURE(WAYPOINT_PLAYBACK_START_SHOOTING_AT_PED,0xa9b13da1d075a160,
waypoint_commands::CommandWaypointPlaybackStartShootingAtPed );
SCR_REGISTER_UNUSED(WAYPOINT_PLAYBACK_START_SHOOTING_AT_ENTITY,0x4f6e75c1ca97a1ef,
waypoint_commands::CommandWaypointPlaybackStartShootingAtEntity );
SCR_REGISTER_SECURE(WAYPOINT_PLAYBACK_START_SHOOTING_AT_COORD,0x4f826adf9bdb6bd8,
waypoint_commands::CommandWaypointPlaybackStartShootingAtCoord );
SCR_REGISTER_SECURE(WAYPOINT_PLAYBACK_STOP_AIMING_OR_SHOOTING,0x282cae6fb0e3b2fc,
waypoint_commands::CommandWaypointPlaybackStopAimingOrShooting );
SCR_REGISTER_SECURE(ASSISTED_MOVEMENT_REQUEST_ROUTE,0xb5549ea4fcf75870,
waypoint_commands::CommandAssistedMovementRequestRoute);
SCR_REGISTER_SECURE(ASSISTED_MOVEMENT_REMOVE_ROUTE,0xed4af6b9266b55c9,
waypoint_commands::CommandAssistedMovementRemoveRoute);
SCR_REGISTER_SECURE(ASSISTED_MOVEMENT_IS_ROUTE_LOADED,0x632b7d3b9b85016a,
waypoint_commands::CommandAssistedMovementIsRouteLoaded);
SCR_REGISTER_UNUSED(ASSISTED_MOVEMENT_GET_ROUTE_PROPERTIES,0xec6dfa1a86cf270a,
waypoint_commands::CommandAssistedMovementGetRouteProperties);
SCR_REGISTER_SECURE(ASSISTED_MOVEMENT_SET_ROUTE_PROPERTIES,0x50569e4320bc8e92,
waypoint_commands::CommandAssistedMovementSetRouteProperties);
SCR_REGISTER_SECURE(ASSISTED_MOVEMENT_OVERRIDE_LOAD_DISTANCE_THIS_FRAME,0xd7e4e11cc
0659bb6,
waypoint_commands::CommandAssistedMovementOverrideLoadDistanceThisFrame);
SCR_REGISTER_SECURE(TASK_VEHICLE_FOLLOW_WAYPOINT_RECORDING,0xa24707688ba83cea,
waypoint_commands::CommandTaskVehicleFollowWaypointRecording);
SCR_REGISTER_SECURE(IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_VEHICLE,0x22ff01f89d3006c0,
waypoint_commands::CommandIsWaypointPlaybackGoingOnForVehicle);
SCR_REGISTER_SECURE(GET_VEHICLE_WAYPOINT_PROGRESS,0x46ea6598acefacc1,
waypoint_commands::CommandGetVehicleWaypointProgress);
SCR_REGISTER_SECURE(GET_VEHICLE_WAYPOINT_TARGET_POINT,0x0e9d3608e0ae9ee3,
waypoint_commands::CommandGetVehicleWaypointTargetPoint);
SCR_REGISTER_SECURE(VEHICLE_WAYPOINT_PLAYBACK_PAUSE,0xe3948de25c763434,
waypoint_commands::CommandVehicleWaypointPlaybackPause);
SCR_REGISTER_UNUSED(VEHICLE_WAYPOINT_PLAYBACK_GET_IS_PAUSED,0xa84a1cf14183e169,
waypoint_commands::CommandVehicleWaypointPlaybackGetIsPaused);
SCR_REGISTER_SECURE(VEHICLE_WAYPOINT_PLAYBACK_RESUME,0x211bb80656beac0f,
waypoint_commands::CommandVehicleWaypointPlaybackResume);
SCR_REGISTER_SECURE(VEHICLE_WAYPOINT_PLAYBACK_USE_DEFAULT_SPEED,0x502f9fce448f5724,
waypoint_commands::CommandVehicleWaypointPlaybackUseDefaultSpeed);
SCR_REGISTER_SECURE(VEHICLE_WAYPOINT_PLAYBACK_OVERRIDE_SPEED,0xf248aeaab65d17cd,
waypoint_commands::CommandVehicleWaypointPlaybackOverrideSpeed);
SCR_REGISTER_UNUSED(TASK_NM_ATTACH_PED_TO_ENTITY,0x7ed90e7321ac4a87,
CommandTaskNMAttachPedToEntity);
SCR_REGISTER_SECURE(TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS,0xf7b73727a8f72f54,
CommandTaskSetBlockingOfNonTemporaryEvents);
SCR_REGISTER_SECURE(TASK_FORCE_MOTION_STATE,0x57374b880e0a67bd,
CommandTaskForceMotionState);
// MoVE interface
SCR_REGISTER_SECURE(TASK_MOVE_NETWORK_BY_NAME,0x84a70ae1a2393914,
CommandTaskMoveNetworkByName);
SCR_REGISTER_SECURE(TASK_MOVE_NETWORK_ADVANCED_BY_NAME,0xad3d17c7e426d09d,
CommandTaskMoveNetworkAdvancedByName);
SCR_REGISTER_SECURE(TASK_MOVE_NETWORK_BY_NAME_WITH_INIT_PARAMS,0x4601817fd87b48e3,
CommandTaskMoveNetworkByNameWithInitParams);
SCR_REGISTER_SECURE(TASK_MOVE_NETWORK_ADVANCED_BY_NAME_WITH_INIT_PARAMS,0xca9cbdbc1
0f9d281,
CommandTaskMoveNetworkAdvancedByNameWithInitParams);
SCR_REGISTER_SECURE(IS_TASK_MOVE_NETWORK_ACTIVE,0xfcd53f51d587f4c6,
CommandIsTaskMoveNetworkActive);
SCR_REGISTER_SECURE(IS_TASK_MOVE_NETWORK_READY_FOR_TRANSITION,0x0422aefd9002867b,
CommandIsTaskMoveNetworkReadyForTransition);
SCR_REGISTER_SECURE(REQUEST_TASK_MOVE_NETWORK_STATE_TRANSITION,0xdcd29be535921736,
CommandRequestTaskMoveNetworkStateTransition);
SCR_REGISTER_SECURE(SET_EXPECTED_CLONE_NEXT_TASK_MOVE_NETWORK_STATE,0x2029bef342249
fb1,
CommandSetExpectedCloneNextTaskMoveNetworkState);
SCR_REGISTER_SECURE(GET_TASK_MOVE_NETWORK_STATE,0x111890991356db66,
CommandGetTaskMoveNetworkState);
SCR_REGISTER_SECURE(SET_TASK_MOVE_NETWORK_ANIM_SET,0x2d9f06756211492a,
CommandSetTaskMoveNetworkClipSet);
SCR_REGISTER_SECURE(SET_TASK_MOVE_NETWORK_SIGNAL_FLOAT,0x8e11f085404a3100,
CommandSetTaskMoveNetworkSignalFloat);
SCR_REGISTER_SECURE(SET_TASK_MOVE_NETWORK_SIGNAL_LOCAL_FLOAT,0x357c016ef8883bad,
CommandSetTaskMoveNetworkSignalLocalFloat);
SCR_REGISTER_SECURE(SET_TASK_MOVE_NETWORK_SIGNAL_FLOAT_LERP_RATE,0x6e3f82dd454ea5b1
, CommandSetTaskMoveNetworkSignalFloatLerpRate);
SCR_REGISTER_SECURE(SET_TASK_MOVE_NETWORK_SIGNAL_BOOL,0xdde2a56a49baf5b0,
CommandSetTaskMoveNetworkSignalBool);
SCR_REGISTER_UNUSED(SET_TASK_MOVE_NETWORK_SIGNAL_LOCAL_BOOL,0xbe46dff5c216a2b0,
CommandSetTaskMoveNetworkSignalLocalBool);
SCR_REGISTER_SECURE(GET_TASK_MOVE_NETWORK_SIGNAL_FLOAT,0x103bce39f925945e,
CommandGetTaskMoveNetworkSignalFloat);
SCR_REGISTER_SECURE(GET_TASK_MOVE_NETWORK_SIGNAL_BOOL,0x501632a36a6512aa,
CommandGetTaskMoveNetworkSignalBool);
SCR_REGISTER_SECURE(GET_TASK_MOVE_NETWORK_EVENT,0xce3f029a4833b5e1,
CommandGetTaskMoveNetworkEvent);
SCR_REGISTER_SECURE(SET_TASK_MOVE_NETWORK_ENABLE_COLLISION_ON_NETWORK_CLONE_WHEN_FI
XED,0x4a5f1661be58e97e,
CommandSetTaskMoveNetworkEnableCollisionOnNetworkCloneWhenFixed);
// End MoVE interface
SCR_REGISTER_SECURE(IS_MOVE_BLEND_RATIO_STILL,0x98daeb6e7093895e,
CommandIsMoveBlendRatioStill);
SCR_REGISTER_SECURE(IS_MOVE_BLEND_RATIO_WALKING,0x6b46f0285c770b5b,
CommandIsMoveBlendRatioWalking);
SCR_REGISTER_SECURE(IS_MOVE_BLEND_RATIO_RUNNING,0x833a52f892a42353,
CommandIsMoveBlendRatioRunning);
SCR_REGISTER_SECURE(IS_MOVE_BLEND_RATIO_SPRINTING,0x3861da7f20602340,
CommandIsMoveBlendRatioSprinting);
SCR_REGISTER_SECURE(IS_PED_STILL,0x443c6afb940b3c83,
CommandIsPedStill);
SCR_REGISTER_SECURE(IS_PED_WALKING,0x834c649d79d5128d,
CommandIsPedWalking);
SCR_REGISTER_SECURE(IS_PED_RUNNING,0x81bbcaf9fe3b469d,
CommandPedIsRunning);
SCR_REGISTER_SECURE(IS_PED_SPRINTING,0xe02d8bdf4b18d48d,
CommandPedIsSprinting);
SCR_REGISTER_SECURE(IS_PED_STRAFING,0xfe3baaf47e48d31f,
CommandPedIsStrafing);
// synchronized scenes
SCR_REGISTER_SECURE(TASK_SYNCHRONIZED_SCENE,0x950b26f4c891073f,
CommandTaskSynchronizedScene);
SCR_REGISTER_SECURE(TASK_AGITATED_ACTION_CONFRONT_RESPONSE,0x3e7d91f4eece76b8,
CommandGivePedAgitatedTaskConfront);
///////////////////////////////////////////////////////////////////////
///
// Ped SweepTask commands
///////////////////////////////////////////////////////////////////////
///
SCR_REGISTER_SECURE(TASK_SWEEP_AIM_ENTITY,0x26d2934cf2d5b32c,
CommandTaskSweepAimEntity);
SCR_REGISTER_SECURE(UPDATE_TASK_SWEEP_AIM_ENTITY,0x878b7bb84cc31442,
CommandUpdateTaskSweepAimEntity);
SCR_REGISTER_SECURE(TASK_SWEEP_AIM_POSITION,0x07c9c36e1a3234e9,
CommandTaskSweepAimPosition);
SCR_REGISTER_SECURE(UPDATE_TASK_SWEEP_AIM_POSITION,0xc82e4267a5f18820,
CommandUpdateTaskSweepAimPosition);
// Arrest/uncuff commands
SCR_REGISTER_SECURE(IS_PED_BEING_ARRESTED,0x1c7f03843c4541ad,
CommandIsPedBeingArrested);
SCR_REGISTER_UNUSED(IS_PED_BEING_UNCUFFED,0x522ef0aaa44cd03a,
CommandIsPedBeingUncuffed);
SCR_REGISTER_UNUSED(IS_PED_ARRESTING,0x2a706f5c5d386b6e,
CommandIsPedArresting);
SCR_REGISTER_UNUSED(IS_PED_UNCUFFING,0x1590a589bdbbf96c,
CommandIsPedUncuffing);
SCR_REGISTER_UNUSED(GET_PED_ARRESTER,0x1d081ef24f8c6203,
CommandGetPedArrester);
SCR_REGISTER_UNUSED(GET_PED_UNCUFFER,0x79a3054bf21c9039,
CommandGetPedUncuffer);
SCR_REGISTER_UNUSED(GET_PED_ARRESTING_TARGET,0x9def9d10068f6f46,
CommandGetPedArrestingTarget);
SCR_REGISTER_UNUSED(GET_PED_UNCUFFING_TARGET,0x08c5c742c9b17f90,
CommandGetPedUncuffingTarget);
SCR_REGISTER_UNUSED(CUFF_PED,0x7b9873a2f170f8b0,
CommandCuffPed);
SCR_REGISTER_SECURE(UNCUFF_PED,0x9a89b72b9931965c,
CommandUncuffPed);
SCR_REGISTER_SECURE(IS_PED_CUFFED,0xea266e5f12328e62,
CommandIsPedCuffed);
SCR_REGISTER_UNUSED(IS_PED_TAKING_CUSTODY,0xb178acc0bca5b82c,
CommandIsPedTakingCustody);
SCR_REGISTER_UNUSED(GET_PED_TAKING_CUSTODY_TARGET,0x2f6461d574428769,
CommandGetPedTakingCustodyTarget);
SCR_REGISTER_UNUSED(IS_PED_BEING_TAKEN_INTO_CUSTODY,0xcaff880c04b723c0,
CommandIsPedBeingTakenIntoCustody);
SCR_REGISTER_UNUSED(TASK_TAKE_CUSTODY,0x53baad9817f5de01,
CommandTaskTakeCustody);
SCR_REGISTER_UNUSED(GET_PED_CUSTODIAN,0x670b52c53b47a811,
CommandGetPedCustodian);
SCR_REGISTER_UNUSED(REMOVE_PED_FROM_CUSTODY,0x512b985df2d0e125,
CommandRemovePedFromCustody);
SCR_REGISTER_UNUSED(GET_PED_ARREST_PHASE,0x44559d9a1dd62526,
CommandGetPedArrestPhase);
SCR_REGISTER_UNUSED(GET_PED_POTENTIAL_ARREST_TARGET,0x1214edf270c95469,
CommandGetPedPotentialArrestTarget);
SCR_REGISTER_UNUSED(GET_PED_POTENTIAL_UNCUFF_TARGET,0x346aeaa1e63abaeb,
CommandGetPedPotentialUncuffTarget);
SCR_REGISTER_UNUSED(SET_PED_CUSTODY_FOLLOW_DISTANCE,0x006f134efa946bd1,
CommandSetPedCustodyOverrideFollowDistance);
SCR_REGISTER_UNUSED(WARP_INTO_LEADERS_VEHICLE,0x196931342f1803a2,
CommandWarpIntoLeadersVehicle);
}
} // end of namespace task_commands