Déplacement des pnj

Répondre
Partager Rechercher
bonjour, j'aimerai avoir un petit renseignement, je désirerai faire déplacer certains de mes pnj suivant un itinéraire précis, mais je sait pas comment faire, je sait qu'on peu s'aider en liant des Waypoint mais après je sait pas trop comment, donc si quelqu'un peu m'aider.

merci pour l'aide
Ce n'est pas forcément évident il faut utiliser des Waypoint numérotés et un script récurrent. Dans cette exemple tirée d'une célèbre campagne récente , le PNJ guide le PJ suivant un itinéraire défini par 4 Waypoints.

Quand le PNJ arrive au Waypoint suivant, il attend. Dès que le PJ arrive suffisamment près le PNJ se dirige vers le Waypoint suivant. Quand il atteint le dernier il le signale.

Le script, attaché au PNJ, utilise 3 variables locales attachées au PNJ : IsArrived, IsWaiting et NWP. NWP donne le N° du Waypoint suivant. Le tag du Waypoint suivant est calculé sous la forme "WP_walk_"+IntToString(NWP).

Le mouvement est déclenché par l'instruction ActionMoveToLocation.

Désolé pour les commentaires en anglais, mais il faut penser aussi aux modeurs non francophones. En espérant que ça aide.
Code PHP:

// move Ulwe according to PC movements. Recurrent attached to Ulwe.

const int MAXWAYPOINTS 4;
const 
string NWP "NWaypoint";

void main()
{
    
object oUlwe OBJECT_SELF;

    if (
GetLocalInt(oUlwe"IsArrived"))    // already arrived, execute default and exit
    
{
        
ExecuteScript("nw_c2_default1"oUlwe);
        return;
    }

    
float fDistance GetDistanceBetween(oUlweGetFirstPC());
    
string sWP;
    
int n;
    
    if (
GetLocalInt(oUlwe"IsWaiting")) // Ulwe is waiting for the PC
    
{
        if (
fDistance 2.1f)                 // if PC close
        
{
            
SetLocalInt(oUlwe"IsWaiting"0);        // no more waiting
            
GetLocalInt(oUlweNWP);     // next waypoint to reach
            
SetLocalInt(oUlweNWPn);
            if (
<= MAXWAYPOINTS)        // not yet arrived, move Ulwe to the next waypoint
            
{
                
sWP "WP_walk_"+IntToString(n);
                
AssignCommand(oUlweActionMoveToLocation(GetLocation(GetWaypointByTag(sWP))));
                
SpeakString("Suis moi.");
            }
            else                        
// arrived
            
{
                
SetLocalInt(oUlwe"IsArrived"1);
                
SpeakString("Nous sommes arrivés, regardes.");
            }
        }
    }
    else                                    
// Ulwe is moving
    
{
        
sWP "WP_walk_"+IntToString(GetLocalInt(oUlweNWP)); // WP to reach
        
SetLocalInt(oUlwe"IsWaiting", (GetDistanceBetween(oUlweGetObjectByTag(sWP)) < 1.1f)); // start waiting if close enough
    
}

Par contre si tu veux simplement déplacer un PNJ selon un chemin répété infiniment (comme pour une patrouille), c'est beaucoup plus simple.
Positionnes les Waypoijnt sur la carte. Ensuite sélectionnes les tous ensemble, puis Click droit/Céer Groupe de Waypoints (ou un truc de ce genre).

Donnes un nom par exemple "MonTrajet", il va les appeler "WP_MonTrajet_01" .... "WP_Montrajet_nn". Il te suffira de tagger tous les PNJ que tu souhaites "MonTrajet", ils emprunteront automatiquement l'itinéraire indéfiniment (une fois arrivés au dernier ils reviennent au premier)
En même temps, la possibilité de créer des trajets pour un PNJ est intégré au toolset.

Tu poses le PNJ sur la zone, clic droit, option "Créer un waypoint" ( pas certain de la traduction, j'utilise en anglais et c'est "Create Waypoint" )

Tu déplaces ton PNJ et tu répètes l'opération.

Au fur et à mesure, des waypoints sont créés avec un tag
"%tag-de-ton-PNJ%numero-incrémenté-automatiquement%"
ex : "pnj_akama_01", "pnj_akama_02" etc.
re
bonjour bonjour, autre question , voila je désirerai créer une patrouille de 3 milicien qui suive le même trajet, est ce que le principe du waypoint marcherai pour les 3 déjà et de deux si les 3 PNJs ont le même tag cela causera t'il pas des soucis.
Ça marchera tant que tu feras des choses simples. Comme je pense que c'est le cas, tu peux y aller et tu pourras t'épargner les causes de souci potentiel ainsi que les moyens de les éviter.

Cela étant, seuls des tests permettent de confirmer la théorie.

Tu as découvert la "pose de waypoints" intégrée et automatisée au fait?
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés