Jump to content

Ped Subtasks (Knowing if a ped is doing something specific)


Recommended Posts

I figured out a lot of ped subtasks, and some of them are really useful. Here's what I've coded to know if a ped is doing something specific, like entering a car, aiming from cover, driving, etc.

 

I've found this knowedge specially useful to avoid tasking peds to do something they're already doing, like following the player or driving to a destination.

 

Written in C#.

    public enum Subtask    {        AIMED_SHOOTING_ON_FOOT = 4,        GETTING_UP = 16,        MOVING_ON_FOOT_NO_COMBAT = 35,        MOVING_ON_FOOT_COMBAT = 38,        USING_LADDER = 47,        CLIMBING = 50,        GETTING_OFF_SOMETHING = 51,        SWAPPING_WEAPON = 56,        REMOVING_HELMET = 92,        DEAD = 97,        MELEE_COMBAT = 130,        HITTING_MELEE = 130,        SITTING_IN_VEHICLE = 150,        DRIVING_WANDERING = 151,        EXITING_VEHICLE = 152,        ENTERING_VEHICLE_GENERAL = 160,        ENTERING_VEHICLE_BREAKING_WINDOW = 161,        ENTERING_VEHICLE_OPENING_DOOR = 162,        ENTERING_VEHICLE_ENTERING = 163,        ENTERING_VEHICLE_CLOSING_DOOR = 164,        EXIING_VEHICLE_OPENING_DOOR_EXITING = 167,        EXITING_VEHICLE_CLOSING_DOOR = 168,        DRIVING_GOING_TO_DESTINATION_OR_ESCORTING = 169,        USING_MOUNTED_WEAPON = 199,        AIMING_THROWABLE = 289,        AIMING_GUN = 290,        AIMING_PREVENTED_BY_OBSTACLE = 299,        IN_COVER_GENERAL = 287,        IN_COVER_FULLY_IN_COVER = 288,        RELOADING = 298,        RUNNING_TO_COVER = 300,        IN_COVER_TRANSITION_TO_AIMING_FROM_COVER = 302,        IN_COVER_TRANSITION_FROM_AIMING_FROM_COVER = 303,        IN_COVER_BLIND_FIRE = 304,        PARACHUTING = 334,        PUTTING_OFF_PARACHUTE = 336,        JUMPING_OR_CLIMBING_GENERAL = 420,        JUMPING_AIR = 421,        JUMPING_FINISHING_JUMP = 422,    }    public static bool IsSubttaskActive(Ped ped, Subtask task)    {        return Function.Call<bool>(Hash.GET_IS_TASK_ACTIVE, ped, (int)task);    }    public static bool IsDriving(Ped ped)    {        return (IsSubttaskActive(ped, Subtask.DRIVING_WANDERING) || IsSubttaskActive(ped, Subtask.DRIVING_GOING_TO_DESTINATION_OR_ESCORTING));    }

If you're interested in finding more, simply do a for (0, 1000) and print all subtasks active in a subtitle or helptext, referencing your player or a ped of your choice, and then seeing what tasks are active when the ped does X.

That's how I did it.

 

There's a LOT of subtasks, but I couldn't figure out most of them, only these.

 

Warnings:

 

- Tasks that imply AI (MOVING_ON_FOOT_COMBAT, DRIVING_WANDERING) are always false for the player, but if the player is actually tasked to do them, they will be true. For example, all ENTERING_VEHICLE subtasks are applicable to the player, because it uses NPC AI to perform that action.

 

- DRIVING_GOING_TO_DESTINATION_OR_ESCORTING is always true for peds flying an helicopter. And planes probably, too.

Edited by Eddlm
  • 2 weeks later...
  • 4 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • 0 User Currently Viewing
    0 members, 0 Anonymous, 0 Guests

×
×
  • Create New...

Important Information

By using GTAForums.com, you agree to our Terms of Use and Privacy Policy.