JeuxOnLineForumsPlusConnectés : 282 (sites) | 501 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > HELP Random Walk de pnj? + eboueur RSS
   
Répondre
Partager Outils Rechercher
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 

HELP Random Walk de pnj? + eboueur

Bonjour, je suis encore moins qu'une quiche en script et voici ma question

j'aimerai, si possible, que quelqu'un m'explique comment faire un randomwalk. j'ai été regarder dans le forum mais il y a tellement de lignes dans certains scripts que ca me casse la tete!

si qq'un pouvait me faire un petit script du genre

.....
.....
action... "ici-tu-mets-le-tag-de..."

tu mets ce script dans ...

et idem pour un script d'eboueur car j'ai fait un copier/coller mais je sais pas ce que je dois changer et où!

en vous remerciant de tout coeur d'avance,

un moins que quiche en script

Lien direct vers le message - Vieux
Avatar de Ange Musicien
JOL Ange Musicien
Alpha & Oméga
 
Avatar de Ange Musicien
 
Allez je m'y colle
Je suis un de rares à être en vacances, alors...
Random Walks, tu as un joli script, qui s'appelle "dans ville il y a vie", tome 1. Créé par moi, il est fait pour être éducatif... T'as de la chance, hein ? T'as juste à regarder dans le post à liens pour script. Pour éboueurs, tu veux que ça fasse quoi exactement ? (durée avant disparitions, etc.) Ca te vas si j'utilise un heartbeat (CPU-- ) ou tu veux un truc plus léger ?
Lien direct vers le message - Vieux
Avatar de MaJo
MaJo
Empereur
 
Avatar de MaJo
 
Exclamation
Heu...ca m'intéresse aussi
oui oui!

Moi ce que j'aimerai bien avoir c'est un éboueur léger (pas Heartbeat) qui fasse disparaître les items posés ou laissés au sol après un certain temps (1min. environ).

*Court avant de se faire taper par le posteur initial!*

Merci
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
le OnHeartBeat, bien utilisé, est moins generateur de temps CPU et d'erreur que le executeScript...
Lien direct vers le message - Vieux
Avatar de Templier
Templier
Roi
 
Avatar de Templier
 
Ben il me semble que RAT a fait un script déjà pour l'éboueur non ? Même un pack complet téléchargeable il me semble, contenant le Boueux et son script. Ensuite tu as juste à tout installer dans le module et à poser les PNJ dans les endroits que tu veux.

Rat me dit qu'il t'expliquera où trouver le script et comment l'installer dès qu'il arrive au Taf.
Lien direct vers le message - Vieux
Avatar de RAT
RAT
Alpha & Oméga
 
Avatar de RAT
 
Bon voilà, je remets le code ici car il est perdu dans plusieurs posts .

En fait la tu fais un copier/coller sur un script vierge.
tu le sauvegarde en le nommant comme tu veux.
Après, tu te crées un NPC . Et dans les propriétés, dans l'onglet OnHeartbeat (trigger) , tu mets le nom du script que tu viens de sauvegarder ou tu vas chercher dans la liste. Tu sauvegardes tout.

Et voilà ,

Bon dès que je rentre ce soir, je peux vous faire un petit pack car je ne l'ai plus sur mon DD ni sur mon site.
Je ne pensais pas que ce script aurait été utilisé lol

Enfin j'espère que tu as mieux compris. Désolé si j'ai fais peut être une explication simpliste pour ceux qui connaissent un peu nwn, mais j'ai voulu être le plus simple possible pour que même une personne qui ne connaît pas du tout puisse le faire.
Donc je m'excuse d'avance

@ bientôt,

RAT

Code PHP:
//::///////////////////////////////////////////////
//:: Default On Heartbeat
//:: NW_C2_DEFAULT1
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    This script will have people perform default
    animations.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Nov 23, 2001
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Modifie par: RAT
//:://////////////////////////////////////////////
#include "NW_I0_GENERIC"

void main()
{
    if(
GetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY))
    {
        if(
TalentAdvancedBuff(40.0))
        {
            
SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMYFALSE);
            return;
        }
    }

    if(
GetSpawnInCondition(NW_FLAG_DAY_NIGHT_POSTING))
    {
        
int nDay FALSE;
        if(
GetIsDay() || GetIsDawn())
        {
            
nDay TRUE;
        }
        if(
GetLocalInt(OBJECT_SELF"NW_GENERIC_DAY_NIGHT") != nDay)
        {
            if(
nDay == TRUE)
            {
                
SetLocalInt(OBJECT_SELF"NW_GENERIC_DAY_NIGHT"TRUE);
            }
            else
            {
                
SetLocalInt(OBJECT_SELF"NW_GENERIC_DAY_NIGHT"FALSE);
            }
            
WalkWayPoints();
        }
    }

    if(!
GetHasEffect(EFFECT_TYPE_SLEEP))
    {
        if(!
GetIsPostOrWalking())
        {
            if(!
GetIsObjectValid(GetAttemptedAttackTarget()) && !GetIsObjectValid(GetAttemptedSpellTarget()))
            {
                if(!
GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATIONREPUTATION_TYPE_ENEMYOBJECT_SELF1CREATURE_TYPE_PERCEPTIONPERCEPTION_SEEN)))
                {
                    if(!
GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL) && !IsInConversation(OBJECT_SELF))
                    {
                        if(
GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS) || GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVIAN))
                        {
                            
PlayMobileAmbientAnimations();
                        }
                        else if(
GetIsEncounterCreature() &&
                        !
GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATIONREPUTATION_TYPE_ENEMYOBJECT_SELF1CREATURE_TYPE_PERCEPTIONPERCEPTION_SEEN)))
                        {
                            
PlayMobileAmbientAnimations();
                        }
                        else if(
GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS) &&
                           !
GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATIONREPUTATION_TYPE_ENEMYOBJECT_SELF1CREATURE_TYPE_PERCEPTIONPERCEPTION_SEEN)))
                        {
                            
PlayImmobileAmbientAnimations();
                        }
                    }
                    else
                    {
                        
DetermineSpecialBehavior();
                    }
                }
                else
                {
                    
//DetermineCombatRound();
                
}
            }
        }
    }
    else
    {
        if(
GetSpawnInCondition(NW_FLAG_SLEEPING_AT_NIGHT))
        {
            
effect eVis EffectVisualEffect(VFX_IMP_SLEEP);
            if(
d10() > 6)
            {
                
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisOBJECT_SELF);
            }
        }
    }
    if(
GetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT))
    {
        
SignalEvent(OBJECT_SELFEventUserDefined(1001));
    }

//:://////////////////////////////////////////////
//:: Cree par :RAT
//:: script permettant de faire les nettoyeux publics sur un module
//:: ils rammassent les objets qu'ils peuvent voir
//:: et le detruisent dans leur inventaire
//:: Mettre les NPC en perception longue
//:://////////////////////////////////////////////

//:://////////////////////////////////////////////
//:: Declaration des variables
//:://////////////////////////////////////////////

 
object oitem=GetNearestObject(OBJECT_TYPE_ITEM,OBJECT_SELF,1);
 
object oNPC=OBJECT_SELF;
 
int inth=1;
float fDuree=60.0;  // si vous voulez qu'ils attendent plus d'une minute, vous
// devez changer cette valeur

if (GetIsObjectValid(oitem))
{
  if (
GetDistanceToObject(oitem)<=20.0//s'il voit un objet ds un rayon de 20 metres
  
{

    
ClearAllActions();


   
string stag=GetTag(oitem);
     if (
GetLocalInt(oitem,"BLOKE_EBOUEUR")==0)  // verifie si l item possede le tag pour bloquer le NPC
      
{
      
DelayCommand(fDuree,SetLocalInt(oitem,"BLOKE_EBOUEUR",1)); // au bout d'une minute , on debloque le NPC
      
}
      else
      {
     
SetLocalInt(oitem,"BLOKE_EBOUEUR",0);
      
ActionPickUpItem(oitem);   // et donc va chercher l'item
      
object oinvent=GetFirstItemInInventory(OBJECT_SELF);   // on regarde le premier objet dans son inventaire
         // ActionRandomWalk();
      
DestroyObject(oinvent,1.0);   // et il le supprime
      // SendMessageToAllDMs(stag); // message de test
       
ActionRandomWalk();  // on redemande au NPC de marcher aleatoirement
       //break;

      
}
  }

  else
  {

   
string stag2=GetTag(oitem);   // si le NPC le voit a plus de 20 metre ,

   
ActionPickUpItem(oitem);  //on le deplace, mais il sera rebloquer pendant une minute quand l'item
                             //rentrera dans son rayon de 20 metres

    
SetLocalInt(oitem,"BLOKE_EBOUEUR",0);
  }

}
else
{
SetLocalInt(oitem,"BLOKE_EBOUEUR",0);
  
ActionRandomWalk();

}

//:://////////////////////////////////////////////
//::                FIN DU SCRIPT
//:://////////////////////////////////////////////






Lien direct vers le message - Vieux
BERNARD_JULIUS [[LH]]
Roi
 
Etant moi-même une quiche, je te suggère d'utiliser une solution simple, parce que le fait d'utiliser les scripts compliqués de quelqu'un d'autre comporte quelques inconvénients : dès que tu veux modifier quelque chose t'es paumé.
Pour apprendre faut y aller petit à petit.

Donc ma solution simplissime pour un randomwalk :
...
je suppose que le but est de donner un peu de vie aux habitants du village que tu as crée, par exemple...

Alors tu poses un npc, tu lui laisses ses scripts par défaut.

Tu édites celui du OnSpawn ( nw_c2_default9 )
Tu enlèves les // devant les lignes suivantes:
//SetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS);
//SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS);

Puis tu sauves ce script sous un autre nom, par ex "villageois".

Voilà, maintenant tu mets le script "villageois" sur le OnSpawn de chaque villageois ( enfin ceux que tu veux qu'ils se déplacent aléatoirement)...

Pour l'éboueur, je n'ai aucune solution simple comme celle-là...

Voilà de quoi te dépanner en attendant de pouvoir rédiger tes propres scripts...
Lien direct vers le message - Vieux
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 
Merci à tous.
Pour le randomwalk, j'ai utilisé le script de BERNARD_JULIUS
et par hasard, je dois changer quoi pour qu'il court au lieu de marcher?

Par contre, pour l'éboueur, serait-il possible de le faire sans PNJ, un script qui s'exécute apres 5 min et fais disparaitre les objets au sol. j'avais vu un script dans le genre où il fallait mettre une partie dans les propriétés du mod puis une deuxième partie dans les propriétés de la zone à nettoyer. C'est celui-là que j'avais copier/coller mais ils s'exécute pas car je sais pas s'il faut changer qq chose (mettre le tag de la zone ou du mod, ...) qq part.

Voila, merci d'avance
Lien direct vers le message - Vieux
Avatar de RAT
RAT
Alpha & Oméga
 
Avatar de RAT
 
Ba bien sur , la faudra plus le mettre dans le onheartbeat du module, et utiliser le onenter du module

ou de la zone au choix

En tout cas, si tu pourrais me donner le lien, pour que je puisse analyser le code pour que je puisse t'aider

Cela serait sympa
Lien direct vers le message - Vieux
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 
le script des eboueurs c'est sur nwn-fr.com dans la section atelier-script. lien ici

mais eux disent qu'il faut le mettre dans le onheartbeat
Lien direct vers le message - Vieux
Avatar de RAT
RAT
Alpha & Oméga
 
Avatar de RAT
 
Vi comme j'ai dis soit le onheartbeat soit le onenter en utilisant la simulation du heartbeat .


je crois connaître ce script là je vais aller vérifier cela
Lien direct vers le message - Vieux
Avatar de RAT
RAT
Alpha & Oméga
 
Avatar de RAT
 
Bon j'ai regardé rapidement , déjà il se lance toutes les 6 secondes, normal comme c'est dans le Onheartbeat du module .


Maintenant, je trouve ça dommage de mettre un script dans chaque area comme ça mais bon c'est mon avis perso, alors qu'on peut très bien le faire dans un seul script
Lien direct vers le message - Vieux
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 
Bon ben je vais essayer l'éboueur de RAT.

on verra ce que ca donne

merci beaucoup

euh petit bug dans le script de RAT
cette ligne (19) : if (GetIsObjectValid(oitem))

il me dit erreur et que ca ne compile pas

de plus, je l'ai quand meme essayé. mais ton éboueur, c'est pour une zone calme? car le miens il s'intéresse pas du tout au déchets mais plutot aux gobelins des alentours. ce qui fait qu'il se fait buter!
Lien direct vers le message - Vieux
Avatar de RAT
RAT
Alpha & Oméga
 
Avatar de RAT
 
Ba pour la faute si tu me dis pas l'erreur , je vais pas pouvoir t'aider .

J'ai peut être oublier de tout copier sur l'ancien post, mais je trouve cela étrange :////


Maintenant pour l'éboueur , c'est un peu logique, car faudrait que tu le mettes en intrigue pour qu'il soit invulnérable.
Et si tu veux mettre le même npc autant pour tous les types d'alignements.

Tu peux créer une faction et tu fais soit tous à 50% soit tout à 100% .

Sinon, tu le mets en personne du peuple et en général ça passe très bien.


Je rappelle juste comme ça, que mon éboueur attend une minute des qu'il trouve un objet dans sa perception avant d'aller le chercher et de le détruire
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > HELP Random Walk de pnj? + eboueur
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 03h46.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite