« Scripts NPC - NPC suiveur » : différence entre les versions

De OSWiki
Aller à la navigation Aller à la recherche
(Page créée avec « <gallery> Fichier:Npc suiveur.jpg </gallery> <source lang="ada"> /* Script Acryline Erin 2017 Licence : Attribution - Partage dans les Mêmes Conditions 3.0 France (CC B... »)
 
Aucun résumé des modifications
Ligne 26 : Ligne 26 :
vector pos;
vector pos;
vector origine;
vector origine;
integer voler = "OS_NPC_FLY";
integer voler = OS_NPC_FLY;
integer marcher = "OS_NPC_NO_FLY";
integer marcher = OS_NPC_NO_FLY;


//remplacer NPC par le nom du NPC suiveur
//remplacer NPC par le nom du NPC suiveur

Version du 25 novembre 2017 à 12:08

<source lang="ada"> /* Script Acryline Erin 2017 Licence  : Attribution - Partage dans les Mêmes Conditions 3.0 France (CC BY-SA 3.0 FR) https://creativecommons.org/licenses/by-sa/3.0/fr/

Vous devez avoir le droit d'utiliser des scripts et les fonctions osNpcCreate, osNpcRemove et osNpcMoveToTarget sur la région.

Placer dans le contenu d'une primitive :

- ce script,
- la note de l'apparence du NPC nommée "appearance".

Porter la primitive et cliquer dessus. Un NPC apparaît et vous suit. Avant d'éditer ce script ou de détacher la primitive, cliquer une deuxième fois sur la primitive pour supprimer le NPC. Dans le cas contraire le NPC restera sur la région (voir le script supprimer les NPCs).

  • /

key npc; vector pos; vector origine; integer voler = OS_NPC_FLY; integer marcher = OS_NPC_NO_FLY;

//remplacer NPC par le nom du NPC suiveur string nomNPC = "NPC"; //remplacer bot par le prénom du NPC suiveur string prenomNPC = "bot"; //remplacer marcher par voler si le npc doit voler. integer deplacement = marcher;

default {

   state_entry()
   {
     llResetScript();  
   }
   touch_end(integer nbr)
   {
     pos = llDetectedPos(0);
     state npcOn;       
   }

}

state npcOn {

  state_entry()
  {
     pos.x +=1.0;
     pos.y +=1.0;
     npc = osNpcCreate(nomNPC, prenomNPC, pos, "appearance"); 
     llSleep(2.0);  
     llSetTimerEvent(5.0);    
  }
  touch_end(integer nbr)
   {
     llSetTimerEvent(0.0);   
     state npcOff;       
   }
   timer()
   {
       origine = pos;
       pos = llGetPos();
       pos.x +=1.0;
       pos.y +=1.0;
       if(origine !=pos) { osNpcMoveToTarget(npc, pos, deplacement );}    
   }

}

state npcOff {

  state_entry()
  {  
     osNpcRemove (npc);
     llSleep(2.0);
     state default;      
  }

} </source>