La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 30/09/2024 13:20:48


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 24/10/2003 11:50:07 Sujet du message : accompagne un NPJ pour une quete - un henchman

Cool Salut y a t il qqun pour m'indiquer un script pas trop complique pour q un npj me suive jusqu a un point precis, j aimerai garde mon henchman reste avec moi
merci
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 24/10/2003 12:01:55 Sujet du message :

Ton post a plus sa place dans le forum Script, je le déplace Wink


Pour faire déplacer un PNJ, un simple MoveToObject suffit Wink
_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 24/10/2003 12:09:21 Sujet du message :

merci

non ce que je souhaite c est qu un NPJ lors d une quete me demande de l accompagner vers un lieu (comme garde du corps) mais tout en gardant avec moi mon henchman

as tu une idee
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 24/10/2003 12:13:36 Sujet du message :

Ah OK...

J'utilise à peu près le même script sur mon module, sauf qu'il est sur le OnPerception du PNJ, mais c'est facilement modifiable (par exemple en remplaçant GetLastPerceived() par GetLastSpeaker() (si tu met le script sur une conversation), ça devrait marcher)

Code :
object oPercu = GetLastPerceived();

void main()
{
if (GetIsPC(oPercu) == TRUE)
    {
    ActionForceFollowObject(oPercu, 5.0);
    }
}


Le if est là pour vérifier qu'il s'agit bien d'un joueur (des fois que le PNJ se mettrait à suivre n'importe quoi d'autre Very Happy), et tu peux changer la distance à laquelle il te suit dans le ActionForceFollowObject, il te suffit de mettre autre chose à la place de 5.0.
_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 24/10/2003 12:28:06 Sujet du message :

encore merci
je vais de ce pas le tester
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 24/10/2003 12:36:34 Sujet du message :

encore moi
si je change en GetLastSpeaker()
il faut que je change oPercu
tu me dire par quoi Very Happy
merci
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 24/10/2003 12:40:26 Sujet du message :

En effet "oPercu" ça peut paraître bizarre dans un script de conversation Very Happy, mais ça ne pose pas de problème, tu peux mettre ce que tu veux à la place, même Tagadatsointsoin, l'important c'est que ça soit écrit de la même façon partout Wink

Quelque chose comme ça quoi :


Code :
object oPNJ = GetLastSpeaker();

void main()
{
if (GetIsPC(oPNJ) == TRUE)
    {
    ActionForceFollowObject(oPNJ, 5.0);
    }
}

_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 24/10/2003 12:47:53 Sujet du message :

suite

je dois etre du genre gros blaire Sad

j ai mis ton script dans action taken en fin de dialogue
mais il ne me suis toujours pas Sad

j ai oublie qq chose
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 24/10/2003 12:53:09 Sujet du message :

Essaie de mettre le tag de ton PNJ à la place, à la première ligne :
Code :
object oPNJ = GetObjectByTag("TagduPNJ");

_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 24/10/2003 13:07:30 Sujet du message :

donc suite de la suite

j ai mis ceci dans action taken

object oPNJ = GetObjectByTag("NW_MALEKID01");


Code :
void main()
{
if (GetIsPC(oPNJ) == TRUE)
    {
    ActionForceFollowObject(oPNJ, 5.0);
    }
}


et devine cela ne marche toujours pasje me suis peut etre mal explique sur ce que je veux

je veux que lui me suive et non moi qui dois le suivre

merci
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 24/10/2003 13:26:12 Sujet du message :

Ah oui merde Embarassed

Aheum, erreur d'appréciation dirons nous Very Happy

Essaie donc ça :
Code :
object oPJ = GetFirstPC();


(n'oublie pas de changer les autres oPNJ par oPJ sinon ça ne marchera pas Wink )


Et si là ça ne marche pas... je veux bien qu'on me redonne mon grade Poulet Rôti Laughing
_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 24/10/2003 13:39:04 Sujet du message :

cela restera entre nous (tu sais l histoire de grand poulet roti)

mais si j ai bien compris et si cela dois donner cela

object oPJ = GetFirstPC();

void main()
{
if (GetIsPC(oPJ) == TRUE)
{
ActionForceFollowObject(oPJ, 2.0);
}
}


ca marche toujours pas Crying or Very sad


ps comment je fais pour metre un cadre autour du script

merci
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 24/10/2003 14:06:39 Sujet du message :

j espere que personne ne t a transforme en mac chicken Laughing

tas toujours aucune idee a mon pleme

merci
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Wololo
Légende vivante
Inscrit le: 13 Déc 2002
Messages: 385
Répondre en citant
Posté le : 24/10/2003 16:00:16 Sujet du message :

ce script va forcer l'objet de tag 'Poulet Roti' à suivre sur 2 mètres le premier pj trouvé ..

NWScript :

void main()
{
object oPJ = GetFirstPC();
object oPNJ = GetObjectByTag("PouletRoti");

AssignCommand(oPNJ,ActionForceFollowObject(oPJ, 2.0));

}


Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

_________________
vive les dumps et les livres !
Sanctuaire des Scripts
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 27/10/2003 10:40:39 Sujet du message :

merci d'abord à Cassin et à Wololo

bien mon autre probleme est de mettre dans un trigger

une variable qui me permette de verifier si poulet roti est bien dans la piece
cette variable doit me servir en suite de verification dans un dialogue j' ai essayé dan OnEnter avec

void main()
{
SetLocalInt(GetPCSpeaker(), "iratapquet", 200);
}

puis dans mon dialogue dans conditions exec avec :


int StartingConditional()
{

// Inspecter variables locales
if(!(GetLocalInt(GetPCSpeaker(), "iratapquet") == 200))
return FALSE;

return TRUE;
}

et ca marche pas

ou est le probleme svp
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Lavok
Légende vivante
Inscrit le: 22 Oct 2002
Messages: 434
Localisation: Sphère planaire
Répondre en citant
Posté le : 27/10/2003 11:17:40 Sujet du message :


yellow submarine a écrit :
cette variable doit me servir en suite de verification dans un dialogue j' ai essayé dan OnEnter avec

void main()
{
SetLocalInt(GetPCSpeaker(), "iratapquet", 200);
}
Qu'est-ce que le GetPCSpeaker() fiche là-dedans Surprised ? A remplacer par
Code :
void main()
{
object oPoulet = GetEnteringObject();
if(GetTag(oPoulet)=="Pouletrôti")
{
SetLocalInt(oPoulet, "irapquet", 200);
}
}


Bien sûr, dans la condition de dialogue, ce sera plutôt :
Code :

int StartingConditional()
{

// Inspecter variables locales
if(!(GetLocalInt(OBJECT_SELF, "iratapquet") == 200))
return FALSE;

return TRUE;
}

_________________
ToB : Une seule chose semble certaine : tant que le trône de sang de Bhaal restera vide, le chaos règnera.

Moi : Une seule chose semble certaine : tant que la tête de singe de Bush restera vide, le chaos règnera.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 27/10/2003 11:38:44 Sujet du message :

Merci bien seigneur Lavok

si je peux abuser Very Happy

je resume, j'ai fais en sorte (voir remerciements)
qu'un PNJ me demande sa protection jusqu'a un point donné

la mission terminée comment faire pour qu'il ne me suive plus (j'ai pensé à le pétrifier Cool mais bon )

si t'as une idee

encore merci
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Lavok
Légende vivante
Inscrit le: 22 Oct 2002
Messages: 434
Localisation: Sphère planaire
Répondre en citant
Posté le : 27/10/2003 14:33:03 Sujet du message :

Script de tout-à-l'heure en un peu plus complet :

Code :
void main()
{
object oPoulet = GetEnteringObject();
if(GetTag(oPoulet)=="Pouletrôti")
{
SetLocalInt(oPoulet, "irapquet", 200);
AssignCommand(oPoulet, ClearAllActions());
DestroyObject(OBJECT_SELF);
}
}


Ah, oui, si ton pnj se fait parfois interrompre (par exemple un monstre qui le fait s'enfuir/combattre), va falloir le préciser dans le script. Si c'est le cas, n'hésite pas à me demander.
_________________
ToB : Une seule chose semble certaine : tant que le trône de sang de Bhaal restera vide, le chaos règnera.

Moi : Une seule chose semble certaine : tant que la tête de singe de Bush restera vide, le chaos règnera.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 28/10/2003 10:30:12 Sujet du message :

encore merci Lavok

oui il est vrai si le NPJ ce fait attaquer, il ne me suis plus par la suite,
donc je lui parle à nouveau pour que dans action taken il prenne

Code :
void main()
{
object oPJ = GetFirstPC();
object oPNJ = GetObjectByTag("ratapeg");

AssignCommand(oPNJ,ActionForceFollowObject(oPJ, 1.0));
 }


c'est la solution actuelle

tes idees sont toujours les bienvenues


ps comment faire pour encadrer dans le forum (les scripts par ex)




EDIT de Cassin : il suffit de mettre ton script entre deux balises [ code ] et [ /code ] (sans les espaces) Wink
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Lavok
Légende vivante
Inscrit le: 22 Oct 2002
Messages: 434
Localisation: Sphère planaire
Répondre en citant
Posté le : 28/10/2003 12:15:13 Sujet du message :

Dans le OnHeartbeat du pnj :

Code :
void main ()
{
if(GetLocalInt(OBJECT_SELF, "irapquet")==100)
{
if(GetCurrentAction()==ACTION_INVALID)
{
ActionForceFollowObject(GetFirstPC(), 2.0);
}
}
}



Modifie dans la foulée le script de fin de conversation pour que ton pnj suive (c'est pour la variable à 100) :
Code :
 
void main()
{
object oPJ = GetPCSpeaker();
ActionForceFollowObject(oPJ, 2.0));
SetLocalInt(OBJECT_SELF, "irapquet", 100);
}



Désormais, si ce brave pnj ne fait rien pendant 6 secondes alors qu'il est censé suivre le pj, il va directement le suivre de nouveau.


Une variante :
Code :
void main ()
{
if(GetLocalInt(OBJECT_SELF, "irapquet")==100)
{
if(GetCurrentAction()!=ACTION_FOLLOW || ACTION_DIALOGOBJECT)
{
ActionForceFollowObject(GetFirstPC(), 2.0);
}
}
}


Ici, même pendant un combat, le pnj suivra le pj. En fait, il effectuera cette action tant qu'il n'est pas déjà en train de le suivre ou de parler.
_________________
ToB : Une seule chose semble certaine : tant que le trône de sang de Bhaal restera vide, le chaos règnera.

Moi : Une seule chose semble certaine : tant que la tête de singe de Bush restera vide, le chaos règnera.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 29/10/2003 09:41:33 Sujet du message :

encore merci pour tes lumieres
amicalement
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 69.089ms