Attention : cet article a été écrit pour le SDK 2.2 d'Half-Life 1 ! Il se peut qu'il ne soit pas entièrement compatible avec des versions antérieures ou supérieures du Kit.

Introduction

Dans ce tutorial, je vais faire une description des Tasks de l'IA par défaut d'Half-life, afin que vous puissiez les utiliser dans vos IA personnalisées. Car ce n'est pas parce que vous créez un IA perso que vous n'avez pas le droit d'utiliser des Tasks de l'IA par défaut.

Les Tasks de l'IA par défaut sont énumérés dans le fichier d'en-tête schedule.h et définis dans schedule.cpp, dans les fonctions StartTask() et RunTask().

Liste des 90 Tasks

Voici la liste des 90 Tasks. Le 91ème est spécial. Lorsqu'il n'y a pas de paramètre, mettez 0 ou (float)0 comme paramètre.

Index Task Description
0 TASK_INVALID → INDÉFINI
1 TASK_WAIT → Fait attendre le monstre.
  • Paramètre : temps dont le monstre doit attendre.
  • RunTask() : oui.
2 TASK_WAIT_FACE_ENEMY → Fait attendre le monstre face à m_hEnemy.
  • Paramètre : temps dont le monstre doit attendre.
  • RunTask() : oui.
3 TASK_WAIT_PVS → Attend jusqu'à ce que qqch entre dans son PVS.
  • Paramètre : aucun.
  • RunTask() : oui.
4 TASK_SUGGEST_STATE → Change la valeur de m_IdealState.
  • Paramètre : nouvelle valeur de m_IdealState.
  • RunTask() : non.
5 TASK_WALK_TO_TARGET → Force le monstre à marcher vers m_hTargetEnt.
  • Paramètre : aucun.
  • RunTask() : non.
6 TASK_RUN_TO_TARGET → Force le monstre à courir vers m_hTargetEnt.
  • Paramètre : aucun.
  • RunTask() : non.
7 TASK_MOVE_TO_TARGET_RANGE → Force le monstre à se déplacer à une certaine distance de m_hTargetEnt.
  • Paramètre : distance entre le monstre et l'entité avant que MovementComplete() ne soit envoyé.
  • RunTask() : oui.
8 TASK_GET_PATH_TO_ENEMY → Le monstre prend un chemin vers m_hEnemy mais ne bouge pas.
  • Paramètre : aucun.
  • RunTask() : non.
9 TASK_GET_PATH_TO_ENEMY_LKP → Le monstre prend un chemin vers m_vecEnemyLKP mais ne bouge pas.
  • Paramètre : aucun.
  • RunTask() : oui.
10 TASK_GET_PATH_TO_ENEMY_CORPSE → Le monstre prend un chemin vers m_vecEnemyLKP (qui est la position du corps après la mort de l'ennemi) mais ne bouge pas.
  • Paramètre : aucun.
  • RunTask() : oui.
11 TASK_GET_PATH_TO_LEADER → INDÉFINI
12 TASK_GET_PATH_TO_SPOT → Le monstre prend un chemin vers m_vecMoveGoal mais ne bouge pas.
  • Paramètre : aucun.
  • RunTask() : non.
13 TASK_GET_PATH_TO_TARGET → Le monstre se déplace vers m_hTargetEnt.
  • Paramètre : aucun.
  • RunTask() : non.
14 TASK_GET_PATH_TO_HINTNODE → Le monstre se déplace vers m_iHintNode.
  • Paramètre : aucun.
  • RunTask() : non.
15 TASK_GET_PATH_TO_LASTPOSITION → Le monstre se déplace vers m_vecLastPosition.
  • Paramètre : aucun.
  • RunTask() : non.
16 TASK_GET_PATH_TO_BESTSOUND → Le monstre se déplace vers le meilleur son (le plus fort ?).
  • Paramètre : aucun.
  • RunTask() : non.
17 TASK_GET_PATH_TO_BESTSCENT → Le monstre se déplace vers la valeur que PBestScent() retourne.
  • Paramètre : aucun.
  • RunTask() : non.
18 TASK_RUN_PATH → Force le monstre à courir sur son chemin.
  • Paramètre : aucun.
  • RunTask() : non.
19 TASK_WALK_PATH → Force le monstre à marcher sur son chemin.
  • Paramètre : aucun.
  • RunTask() : non.
20 TASK_STRAFE_PATH → Force le monstre à straffer sur son chemin.
  • Paramètre : aucun.
  • RunTask() : non.
21 TASK_CLEAR_MOVE_WAIT → Stocke le temps actuel dans m_flMoveWaitFinished. Pas d'actions particulières...
  • Paramètre : aucun.
  • RunTask() : non.
22 TASK_STORE_LASTPOSITION → Stocke la position du monstre (pev->origin) dans m_vecLastPosition.
  • Paramètre : aucun.
  • RunTask() : non.
23 TASK_CLEAR_LASTPOSITION → nettoie la variable m_vecLastPosition qui correspond au TASK_STORE_LASPOSITION, en l'initialisant par g_vecZero.
  • Paramètre : aucun.
  • RunTask() : non.
24 TASK_PLAY_ACTIVE_IDLE → Je pense qu'il s'agit de se déplacer vers un node en vérifiant s'il y a une action spéciale pour.
  • Paramètre : aucun.
  • RunTask() : oui.
25 TASK_FIND_HINTNODE → Force le monstre à stocker le node le plus proche dans m_iHintNode.
  • Paramètre : aucun.
  • RunTask() : non.
26 TASK_CLEAR_HINTNODE → nettoie la variable m_iHintNode en l'initialisant par NO_NODE.
  • Paramètre : aucun.
  • RunTask() : non.
27 TASK_SMALL_FLINCH → Force le monstre à avoir un petit recul (small flinch).
  • Paramètre : aucun.
  • RunTask() : oui.
28 TASK_FACE_IDEAL → Force le monstre à se tourner vers ce que IdealYaw() retourne.
  • Paramètre : aucun.
  • RunTask() : oui.
29 TASK_FACE_ROUTE → Force le monstre à se tourner vers le prochain point de son chemin.
  • Paramètre : aucun.
  • RunTask() : oui.
30 TASK_FACE_ENEMY → Force le monstre à se tourner vers m_vecEnemyLKP.
  • Paramètre : aucun.
  • RunTask() : oui.
31 TASK_FACE_HINTNODE → Force le monstre à se tourner en direction du node stocké dans m_iHintNode.
  • Paramètre : aucun.
  • RunTask() : oui.
32 TASK_FACE_TARGET → Force le monstre à se tourner vers m_hTargetEnt.
  • Paramètre : aucun.
  • RunTask() : oui.
33 TASK_FACE_LASTPOSITION → Force le monstre à se tourner vers le point stocké dans m_vecLastPosition.
  • Paramètre : aucun.
  • RunTask() : oui.
34 TASK_RANGE_ATTACK1 → Force le monstre à se tourner vers m_hEnemyLKP puis d'attaquer.
  • Paramètre : aucun.
  • RunTask() : oui.
35 TASK_RANGE_ATTACK2 → Force le monstre à se tourner vers m_hEnemyLKP puis d'attaquer.
  • Paramètre : aucun.
  • RunTask() : oui.
36 TASK_MELEE_ATTACK1 → Force le monstre à se tourner vers m_hEnemyLKP puis d'attaquer.
  • Paramètre : aucun.
  • RunTask() : oui.
37 TASK_MELEE_ATTACK2 → Force le monstre à se tourner vers m_hEnemyLKP puis d'attaquer.
  • Paramètre : aucun.
  • RunTask() : oui.
38 TASK_RELOAD → Force le monstre à se tourner vers m_hEnemyLKP puis de recharger.
  • Paramètre : aucun.
  • RunTask() : oui.
39 TASK_RANGE_ATTACK1_NOTURN → Force le monstre à attaquer sans tourner.
  • Paramètre : aucun.
  • RunTask() : oui.
40 TASK_RANGE_ATTACK2_NOTURN → Force le monstre à attaquer sans tourner.
  • Paramètre : aucun.
  • RunTask() : oui.
41 TASK_MELEE_ATTACK1_NOTURN → Force le monstre à attaquer sans tourner.
  • Paramètre : aucun.
  • RunTask() : oui.
42 TASK_MELEE_ATTACK2_NOTURN → Force le monstre à attaquer sans tourner.
  • Paramètre : aucun.
  • RunTask() : oui.
43 TASK_RELOAD_NOTURN → Force le monstre à recharger sans tourner.
  • Paramètre : aucun.
  • RunTask() : oui.
44 TASK_SPECIAL_ATTACK1 → Force le monstre à se tourner vers m_hEnemyLKP puis d'attaquer.
  • Paramètre : aucun.
  • RunTask() : oui.
45 TASK_SPECIAL_ATTACK2 → Force le monstre à se tourner vers m_hEnemyLKP puis d'attaquer.
  • Paramètre : aucun.
  • RunTask() : oui.
46 TASK_CROUCH → INDÉFINI
47 TASK_STAND → INDÉFINI
48 TASK_GUARD → INDÉFINI
49 TASK_STEP_LEFT → INDÉFINI
50 TASK_STEP_RIGHT → INDÉFINI
51 TASK_STEP_FORWARD → INDÉFINI
52 TASK_STEP_BACK → INDÉFINI
53 TASK_DODGE_LEFT → INDÉFINI
54 TASK_DODGE_RIGHT → INDÉFINI
55 TASK_SOUND_ANGRY → Ecris dans la console : « SOUND ».
  • Paramètre : aucun.
  • RunTask() : non.
56 TASK_SOUND_DEATH → Force le monstre à jouer son DeathSound().
  • Paramètre : aucun.
  • RunTask() : non.
57 TASK_SET_ACTIVITY → Force le monstre à exécuter une activité (ex : ACT_IDLE)
  • Paramètre : aucun.
  • RunTask() : non.
58 TASK_SET_SCHEDULE → Exécute un Schedule.
  • Paramètre : constante du Schedule à exécuté (énumérées dans schedule.h).
  • RunTask() : non.
59 TASK_SET_FAIL_SCHEDULE → Schedule à exécuter si l'un des Task de la liste foirait.
  • Paramètre : Schedule à exécuter.
  • RunTask() : non.
60 TASK_CLEAR_FAIL_SCHEDULE → Nettoie TASK_FAIL_SCHEDULE.
  • Paramètre : aucun.
  • RunTask() : non.
61 TASK_PLAY_SEQUENCE → Force le monstre à jouer une séquence.
  • Paramètre : constante d'une séquence (ex : ACT_IDLE).
  • RunTask() : oui.
62 TASK_PLAY_SEQUENCE_FACE_ENEMY → Force le monstre à jouer une séquence tant qu'il fait face à m_hEnemy.
  • Paramètre : constante d'une séquence (ex : ACT_IDLE).
  • RunTask() : oui.
63 TASK_PLAY_SEQUENCE_FACE_TARGET → Force le monstre à jouer une séquence tant qu'il fait face à m_hTargetEnt.
  • Paramètre : constante d'une séquence (ex : ACT_IDLE).
  • RunTask() : oui.
64 TASK_SOUND_IDLE → Force le monstre à jouer son IdleSound().
  • Paramètre : aucun.
  • RunTask() : non.
65 TASK_SOUND_WAKE → Force le monstre à jouer son AlertSound().
  • Paramètre : aucun.
  • RunTask() : non.
66 TASK_SOUND_PAIN → Force le monstre à jouer son PainSound().
  • Paramètre : aucun.
  • RunTask() : non.
67 TASK_SOUND_DIE → Force le monstre à jouer son DeathSound().
  • Paramètre : aucun.
  • RunTask() : non.
68 TASK_FIND_COVER_FROM_BEST_SOUND → Cherche à se couvrir du meilleur son (sans doute le plus audible ?).
  • Paramètre : durée dont le monstre doit courir pour se couvrir (je crois).
  • RunTask() : non.
69 TASK_FIND_COVER_FROM_ENEMY → Je pense qu'il s'agit de se déplacer pour se couvrir.
  • Paramètre : durée dont le monstre doit courir pour se couvrir (je crois).
  • RunTask() : non.
70 TASK_FIND_LATERAL_COVER_FROM_ENEMY → Je pense qu'il s'agit de se déplacer pour se couvrir.
  • Paramètre : durée dont le monstre doit courir pour se couvrir (je crois).
  • RunTask() : non.
71 TASK_FIND_NODE_COVER_FROM_ENEMY → Cherche un node pour se couvrir dans un rayon définit par CoverRadius().
  • Paramètre : aucun.
  • RunTask() : non.
72 TASK_FIND_NEAR_NODE_COVER_FROM_ENEMY → Cherche un node dans un rayon définit par le paramètre.
  • Paramètre : distance maximale entre l'ennemi et le monstre.
  • RunTask() : non.
73 TASK_FIND_FAR_NODE_COVER_FROM_ENEMY → Trouve un node pour se couvrir dans une zone entre un cercle de rayon définit par le paramètre et un cercle de rayon définit par CoverRadius().
  • Paramètre : rayon distance minimum.
  • RunTask() : non.
74 TASK_FIND_COVER_FROM_ORIGIN → Cherche à se couvrir de son point d'origine.
  • Paramètre : durée don't le monstre doit courir pour se couvrir (je crois).
  • RunTask() : non.
75 TASK_EAT → Bouffe un cadavre.
  • Paramètre : durée du repas.
  • RunTask() : non.
76 TASK_DIE → Mort du monstre.
  • Paramètre : aucun.
  • RunTask() : oui.
77 TASK_WAIT_FOR_SCRIPT → Le monstre attend que le script soit terminé.
  • Paramètre : aucun.
  • RunTask() : oui.
78 TASK_PLAY_SCRIPT → Force le monstre à jouer une séquence scriptée.
  • Paramètre : aucun.
  • RunTask() : oui.
79 TASK_ENABLE_SCRIPT → Je pense que c'est pour dire que le monstre peut à présent jouer une séquence scriptée.
  • Paramètre : aucun.
  • RunTask() : non.
80 TASK_PLANT_ON_SCRIPT → Place le monstre sur m_hTargetEnt (téléportation ?).
  • Paramètre : aucun.
  • RunTask() : non.
81 TASK_FACE_SCRIPT → Force le monstre à faire face à m_hTargetEnt.
  • Paramètre : aucun.
  • RunTask() : non.
82 TASK_WAIT_RANDOM → Attend un temps aléatoire.
  • Paramètre : le temps est une valeur aléatoire entre 0.1 et le paramètre.
  • RunTask() : oui.
83 TASK_WAIT_INDEFINITE → Attend indéfiniment, jusqu'à ce qu'un évènement extérieur ne vienne briser la boucle (pas de TaskComplete()).
  • Paramètre : aucun.
  • RunTask() : oui.
84 TASK_STOP_MOVING → Stop le monstre (et annule son chemin).
  • Paramètre : aucun.
  • RunTask() : non.
85 TASK_TURN_LEFT → Force le monstre à tourner sur la gauche.
  • Paramètre : angle (en degrés) de rotation.
  • RunTask() : oui.
86 TASK_TURN_RIGHT → Force le monstre à tourner sur la droite.
  • Paramètre : angle (en degrés) de rotation.
  • RunTask() : oui.
87 TASK_REMEMBER → Active un bit à la variable de la mémoire du monstre.
  • Paramètre : valeur du bit à mémoriser (bits_MEMORY_###).
  • RunTask() : non.
88 TASK_FORGET → Désactive un bit à la variable de la mémoire du monstre
  • Paramètre : valeur du bit à oublier (bits_MEMORY_###).
  • RunTask() : non.
89 TASK_WAIT_FOR_MOVEMENT → Force le monstre à attendre la fin de son mouvement pour entamer le suivant.
  • Paramètre : aucun.
  • RunTask() : oui.
90 LAST_COMMON_TASK → Représente la valeur du dernier Task pour créer des listes de Task personnalisées.
Creative Commons Logo Contrat Creative Commons

Cet article est mis à disposition sous un contrat Creative Commons (licence CC-BY-ND).