Écrit par David Henry, le 27 juillet 2002
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.
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()
.
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.
|
2 | TASK_WAIT_FACE_ENEMY | → Fait attendre le monstre face à m_hEnemy .
|
3 | TASK_WAIT_PVS | → Attend jusqu'à ce que qqch entre dans son PVS.
|
4 | TASK_SUGGEST_STATE | → Change la valeur de m_IdealState.
|
5 | TASK_WALK_TO_TARGET | → Force le monstre à marcher vers m_hTargetEnt .
|
6 | TASK_RUN_TO_TARGET | → Force le monstre à courir vers m_hTargetEnt .
|
7 | TASK_MOVE_TO_TARGET_RANGE | → Force le monstre à se déplacer à une certaine distance de m_hTargetEnt .
|
8 | TASK_GET_PATH_TO_ENEMY | → Le monstre prend un chemin vers m_hEnemy mais ne bouge pas.
|
9 | TASK_GET_PATH_TO_ENEMY_LKP | → Le monstre prend un chemin vers m_vecEnemyLKP mais ne bouge pas.
|
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.
|
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.
|
13 | TASK_GET_PATH_TO_TARGET | → Le monstre se déplace vers m_hTargetEnt .
|
14 | TASK_GET_PATH_TO_HINTNODE | → Le monstre se déplace vers m_iHintNode .
|
15 | TASK_GET_PATH_TO_LASTPOSITION | → Le monstre se déplace vers m_vecLastPosition .
|
16 | TASK_GET_PATH_TO_BESTSOUND | → Le monstre se déplace vers le meilleur son (le plus fort ?).
|
17 | TASK_GET_PATH_TO_BESTSCENT | → Le monstre se déplace vers la valeur que PBestScent() retourne.
|
18 | TASK_RUN_PATH | → Force le monstre à courir sur son chemin.
|
19 | TASK_WALK_PATH | → Force le monstre à marcher sur son chemin.
|
20 | TASK_STRAFE_PATH | → Force le monstre à straffer sur son chemin.
|
21 | TASK_CLEAR_MOVE_WAIT | → Stocke le temps actuel dans m_flMoveWaitFinished . Pas d'actions particulières...
|
22 | TASK_STORE_LASTPOSITION | → Stocke la position du monstre (pev->origin ) dans m_vecLastPosition .
|
23 | TASK_CLEAR_LASTPOSITION | → nettoie la variable m_vecLastPosition qui correspond au
TASK_STORE_LASPOSITION , en l'initialisant par g_vecZero .
|
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.
|
25 | TASK_FIND_HINTNODE | → Force le monstre à stocker le node le plus proche dans m_iHintNode .
|
26 | TASK_CLEAR_HINTNODE | → nettoie la variable m_iHintNode en l'initialisant par NO_NODE .
|
27 | TASK_SMALL_FLINCH | → Force le monstre à avoir un petit recul (small flinch).
|
28 | TASK_FACE_IDEAL | → Force le monstre à se tourner vers ce que IdealYaw() retourne.
|
29 | TASK_FACE_ROUTE | → Force le monstre à se tourner vers le prochain point de son chemin.
|
30 | TASK_FACE_ENEMY | → Force le monstre à se tourner vers m_vecEnemyLKP .
|
31 | TASK_FACE_HINTNODE | → Force le monstre à se tourner en direction du node stocké dans m_iHintNode .
|
32 | TASK_FACE_TARGET | → Force le monstre à se tourner vers m_hTargetEnt .
|
33 | TASK_FACE_LASTPOSITION | → Force le monstre à se tourner vers le point stocké dans m_vecLastPosition .
|
34 | TASK_RANGE_ATTACK1 | → Force le monstre à se tourner vers m_hEnemyLKP puis d'attaquer.
|
35 | TASK_RANGE_ATTACK2 | → Force le monstre à se tourner vers m_hEnemyLKP puis d'attaquer.
|
36 | TASK_MELEE_ATTACK1 | → Force le monstre à se tourner vers m_hEnemyLKP puis d'attaquer.
|
37 | TASK_MELEE_ATTACK2 | → Force le monstre à se tourner vers m_hEnemyLKP puis d'attaquer.
|
38 | TASK_RELOAD | → Force le monstre à se tourner vers m_hEnemyLKP puis de recharger.
|
39 | TASK_RANGE_ATTACK1_NOTURN | → Force le monstre à attaquer sans tourner.
|
40 | TASK_RANGE_ATTACK2_NOTURN | → Force le monstre à attaquer sans tourner.
|
41 | TASK_MELEE_ATTACK1_NOTURN | → Force le monstre à attaquer sans tourner.
|
42 | TASK_MELEE_ATTACK2_NOTURN | → Force le monstre à attaquer sans tourner.
|
43 | TASK_RELOAD_NOTURN | → Force le monstre à recharger sans tourner.
|
44 | TASK_SPECIAL_ATTACK1 | → Force le monstre à se tourner vers m_hEnemyLKP puis d'attaquer.
|
45 | TASK_SPECIAL_ATTACK2 | → Force le monstre à se tourner vers m_hEnemyLKP puis d'attaquer.
|
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 ».
|
56 | TASK_SOUND_DEATH | → Force le monstre à jouer son DeathSound() .
|
57 | TASK_SET_ACTIVITY | → Force le monstre à exécuter une activité (ex : ACT_IDLE )
|
58 | TASK_SET_SCHEDULE | → Exécute un Schedule.
|
59 | TASK_SET_FAIL_SCHEDULE | → Schedule à exécuter si l'un des Task de la liste foirait.
|
60 | TASK_CLEAR_FAIL_SCHEDULE | → Nettoie TASK_FAIL_SCHEDULE .
|
61 | TASK_PLAY_SEQUENCE | → Force le monstre à jouer une séquence.
|
62 | TASK_PLAY_SEQUENCE_FACE_ENEMY | → Force le monstre à jouer une séquence tant qu'il fait face à m_hEnemy .
|
63 | TASK_PLAY_SEQUENCE_FACE_TARGET | → Force le monstre à jouer une séquence tant qu'il fait face à m_hTargetEnt .
|
64 | TASK_SOUND_IDLE | → Force le monstre à jouer son IdleSound() .
|
65 | TASK_SOUND_WAKE | → Force le monstre à jouer son AlertSound() .
|
66 | TASK_SOUND_PAIN | → Force le monstre à jouer son PainSound() .
|
67 | TASK_SOUND_DIE | → Force le monstre à jouer son DeathSound() .
|
68 | TASK_FIND_COVER_FROM_BEST_SOUND | → Cherche à se couvrir du meilleur son (sans doute le plus audible ?).
|
69 | TASK_FIND_COVER_FROM_ENEMY | → Je pense qu'il s'agit de se déplacer pour se couvrir.
|
70 | TASK_FIND_LATERAL_COVER_FROM_ENEMY | → Je pense qu'il s'agit de se déplacer pour se couvrir.
|
71 | TASK_FIND_NODE_COVER_FROM_ENEMY | → Cherche un node pour se couvrir dans un rayon définit par CoverRadius() .
|
72 | TASK_FIND_NEAR_NODE_COVER_FROM_ENEMY | → Cherche un node dans un rayon définit par le paramètre.
|
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() .
|
74 | TASK_FIND_COVER_FROM_ORIGIN | → Cherche à se couvrir de son point d'origine.
|
75 | TASK_EAT | → Bouffe un cadavre.
|
76 | TASK_DIE | → Mort du monstre.
|
77 | TASK_WAIT_FOR_SCRIPT | → Le monstre attend que le script soit terminé.
|
78 | TASK_PLAY_SCRIPT | → Force le monstre à jouer une séquence scriptée.
|
79 | TASK_ENABLE_SCRIPT | → Je pense que c'est pour dire que le monstre peut à présent jouer une séquence scriptée.
|
80 | TASK_PLANT_ON_SCRIPT | → Place le monstre sur m_hTargetEnt (téléportation ?).
|
81 | TASK_FACE_SCRIPT | → Force le monstre à faire face à m_hTargetEnt .
|
82 | TASK_WAIT_RANDOM | → Attend un temps aléatoire.
|
83 | TASK_WAIT_INDEFINITE | → Attend indéfiniment, jusqu'à ce qu'un évènement extérieur ne vienne briser
la boucle (pas de TaskComplete() ).
|
84 | TASK_STOP_MOVING | → Stop le monstre (et annule son chemin).
|
85 | TASK_TURN_LEFT | → Force le monstre à tourner sur la gauche.
|
86 | TASK_TURN_RIGHT | → Force le monstre à tourner sur la droite.
|
87 | TASK_REMEMBER | → Active un bit à la variable de la mémoire du monstre.
|
88 | TASK_FORGET | → Désactive un bit à la variable de la mémoire du monstre
|
89 | TASK_WAIT_FOR_MOVEMENT | → Force le monstre à attendre la fin de son mouvement pour entamer le suivant.
|
90 | LAST_COMMON_TASK | → Représente la valeur du dernier Task pour créer des listes de Task personnalisées. |
Cet article est mis à disposition sous un contrat Creative Commons (licence CC-BY-ND).