Natives relations
Par défaut, chaque ped de GTA appartient à des groupes de relation qui décident qui tire sur qui. Quand votre mod spawne son propre casting — un gang, une escouade, une unité de police — vous devez dire à ces peds qui ils haïssent, craignent, respectent et ignorent. C'est à ça que servent les natives de relation.
Les groupes de relation
GET_PED_RELATIONSHIP_GROUP_HASH(ped) retourne le groupe d'un ped ; SET_PED_RELATIONSHIP_GROUP_HASH(ped, groupHash) le fait entrer dans votre propre groupe.
Quand en avoir besoin : dès que vous spawnez des acteurs qui doivent former une faction qui n'existait pas. Un équipage de malfrats sorti du pool doit avoir son propre groupe, sinon le jeu classe chaque membre au hasard.
Déclarer la relation
SET_RELATIONSHIP_BETWEEN_GROUPS(relationship, groupA, groupB) fixe la disposition. Les valeurs comptent :
| Relation | Signification |
|---|---|
0 (Respect) | se laissent tranquilles |
1 (Like) | amicaux, alliés dans un combat |
3 (Dislike) | tension, hostilité non provoquée en groupe |
4 (Hate) | combattent à vue |
255 (Pedestrian) | défaut ambiant |
Dans le code réel, on voit les deux sens posés — (a,b) et (b,a) — parce que le jeu lit la paire dans les deux sens selon le ped qui interroge.
Quand en avoir besoin : votre escouade doit combattre le gang mais pas les civils ; votre garde du corps doit aimer le groupe du joueur et haïr les attaquants ; les policiers de votre mod doivent traiter les peds civils comme des piétons tout en chassant les ennemis marqués.
Function.Call(Hash.SET_RELATIONSHIP_BETWEEN_GROUPS, 4 /* Hate */, gangHash, playerGroupHash);
Function.Call(Hash.SET_RELATIONSHIP_BETWEEN_GROUPS, 4 /* Hate */, playerGroupHash, gangHash);
Les interrupteurs globaux
SET_EVERYONE_IGNORE_PLAYER(bool) et SET_POLICE_IGNORE_PLAYER(bool) basculent d'un coup l'attitude du monde entier envers le joueur.
Quand en avoir besoin : deux situations diamétralement opposées — un sandbox « dieu de la ville » où personne ne réagit, et une arrestation scriptée où le joueur est menotté et où la police ne doit pas ouvrir le feu au moment précis du roleplay que vous avez construit. Les vrais mods basculent ces flags autour des scènes de détention, puis les restaurent.
Ce qu'il ne faut pas faire
N'appelez pas SET_RELATIONSHIP_BETWEEN_GROUPS à chaque frame — c'est un événement, pas un réglage ; le rappeler en boucle désynchronise l'ia de combat et coûte des frames. Posez-le une fois quand votre faction s'assemble, et ne touchez les interrupteurs globaux que pendant la scène qu'ils gardent.