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

De OSWiki
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
 
(7 versions intermédiaires par le même utilisateur non affichées)
Ligne 6 : Ligne 6 :
/*
/*
Script Acryline Erin 2017
Script Acryline Erin 2017
NPC suiveur
Version 1
Licence  : Attribution - Partage dans les Mêmes Conditions 3.0 France (CC BY-SA 3.0 FR)
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/   
https://creativecommons.org/licenses/by-sa/3.0/fr/   
Ligne 26 : Ligne 28 :
vector pos;
vector pos;
vector origine;
vector origine;
integer voler = OS_NPC_FLY;
integer marcher = OS_NPC_NO_FLY;


//remplacer NPC par le nom du NPC suiveur
//remplacer NPC par le nom du NPC suiveur
Ligne 33 : Ligne 33 :
//remplacer bot par le prénom du NPC suiveur
//remplacer bot par le prénom du NPC suiveur
string prenomNPC = "bot";  
string prenomNPC = "bot";  
//remplacer marcher par voler si le npc doit voler.
//remplacer OS_NPC_FLY par OS_NPC_NO_FLY si le npc doit marcher.
integer deplacement = marcher;  
integer deplacement = OS_NPC_FLY;
//vous pouvez modifier le temps de réaction du NPC suiveur
//ici, il détecte votre position toutes les 5 secondes
float tps = 5.0;


default
default
Ligne 53 : Ligne 56 :
   state_entry()
   state_entry()
   {
   {
       pos.x +=1.0;
       pos.x -=1.0;
       pos.y +=1.0;
       pos.y -=1.0;
       npc = osNpcCreate(nomNPC, prenomNPC, pos, "appearance");  
       npc = osNpcCreate(nomNPC, prenomNPC, pos, "appearance");  
       llSleep(2.0);   
       llSleep(2.0);   
       llSetTimerEvent(5.0);     
       llSetTimerEvent(tps);     
   }
   }
   touch_end(integer nbr)
   touch_end(integer nbr)
Ligne 68 : Ligne 71 :
         origine = pos;
         origine = pos;
         pos = llGetPos();
         pos = llGetPos();
         pos.x +=1.0;
         pos.x -=1.0;
         pos.y +=1.0;
         pos.y -=1.0;
         if(origine !=pos) { osNpcMoveToTarget(npc, pos, deplacement );}     
         if(origine !=pos) { osNpcMoveToTarget(npc, pos, deplacement );}     
     }
     }
Ligne 84 : Ligne 87 :
}
}
</source>
</source>
[[Catégorie:Scripts LSL]]

Version actuelle datée du 15 décembre 2017 à 20:18

/*
Script Acryline Erin 2017
NPC suiveur 
Version 1
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;

//remplacer NPC par le nom du NPC suiveur
string nomNPC = "NPC"; 
//remplacer bot par le prénom du NPC suiveur
string prenomNPC = "bot"; 
//remplacer OS_NPC_FLY par OS_NPC_NO_FLY si le npc doit marcher.
integer deplacement = OS_NPC_FLY; 
//vous pouvez modifier le temps de réaction du NPC suiveur
//ici, il détecte votre position toutes les 5 secondes
float tps = 5.0;

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(tps);    
   }
   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;      
   }
}