JeuxOnLineForumsPlusConnectés : 419 (sites) | 956 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > un npc vous Interpelle? comment faire? RSS
   
Répondre
Partager Outils Rechercher
Avatar de sojkowski
sojkowski
Dauphin
 
Avatar de sojkowski
 
Question

un npc vous Interpelle? comment faire?

Quel est le script du "onPerception" pour qu'un NPC vienne vous parler et d'éclanche un dialogue "heptoilabas" créé avec l'editeur?
Lien direct vers le message - Vieux
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 
Code PHP:
void main() 

object oPC GetLastPerceived(); 
object oNPC OBJECT_SELF

if (!
IsInConversation(oNPC)) 

AssignCommand(oNPCClearAllActions()); 
AssignCommand(oNPCActionMoveToObject(oPCFALSE)); 
AssignCommand(oNPCActionStartConversation(oPC,"heptoilabas")); 


Lien direct vers le message - Vieux
Avatar de sojkowski
sojkowski
Dauphin
 
Avatar de sojkowski
 
Code PHP:
include "nw_i0_generic"
int StartingConditional()
{
object oPC GetLastPerceived();
object oNPC OBJECT_SELF;

    
// Restriction selon l'alignement du joueur
    
if(GetAlignmentGoodEvil(oPC) != ALIGNMENT_EVIL)
        return 
FALSE;

    return 
TRUE;
}
void main()
{

if (!
IsInConversation(oNPC))
{
AssignCommand(oNPCClearAllActions());
AssignCommand(oNPCActionMoveToObject(oPCFALSE));
AssignCommand(oNPCActionStartConversation(oPC,"guardnorland"));

Merci tyrion! j'y suis presque grace a toi


Comme tu vois, j'ai ajouté une condition. Si le personnage est mauvais il va venir vers moi me parler. Mais le prob, c que je sois bon ou mauvais il m'attaque qd meme

Dans le dialogue j'ai créé avec l'editeur ce script:

Code PHP:
#include "nw_i0_generic"

void main()
{

    
// Paramétrer la faction de manière à ce qu'elle déteste le joueur et l'attaque
    
AdjustReputation(GetPCSpeaker(), OBJECT_SELF, -100);
    
DetermineCombatRound(GetPCSpeaker());

ce qui ne me plait pas c le GetPCSpeaker...
Car je suis obliger de donner une réponse pour que la condition sois pris en compte
du style,

hey toi la bas!
Quoi?! <- là j'ai seulement le getspeaker!

alors que j'aurrai voulu juste un "hey toi là bas" et le guard m'attaque directement.
Lien direct vers le message - Vieux
Avatar de sojkowski
sojkowski
Dauphin
 
Avatar de sojkowski
 
Code PHP:
void main()
{
object oPC GetLastPerceived();
object oNPC OBJECT_SELF;



 if(
GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL// Restriction selon l'alignement du joueur
{
 
AssignCommand(oNPCClearAllActions());
 
AssignCommand(oNPCActionSpeakString("hey toi la bas!"));
 
AssignCommand(oNPCActionMoveToObject(oPCFALSE));
 
AdjustReputation(oPCoNPC, -100); // Paramétrer la faction de manière à ce qu'elle déteste le joueur et l'attaque
 
DetermineCombatRound(oPC);
  }

 if(
GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD// Restriction selon l'alignement du joueur
  
{
   
AssignCommand(oNPCActionSpeakString("tu as de la chance"));
   }




Bien voilà mon script qui marche je commence a comprendre un peu les nuances du code.

ça marcher pas a cause du "=" il fallait un "==", je me suis souvenu des explications que vous m'avez donné

ah c bowéno! v pouvoir enfin dormir trankil ce soir
Lien direct vers le message - Vieux
Avatar de sojkowski
sojkowski
Dauphin
 
Avatar de sojkowski
 
Bon là je pige pas, y a surement une variante ds mon cas.

J'expose la situation...

Trois Drows guardent l'entrée d'une grotte.
le sergent drow dit:"Hey! halte-là!" (speakstring)

il s'avance vers vous qd il vous voit... et doit démarrer un dialogue que j'ai appelé "test" pour le moment.


Voici le script en cour
Code PHP:
#include "nw_i0_generic"


void main()
{
object oPC GetLastPerceived();
object oNPC OBJECT_SELF;



 if(
GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD// Restriction selon l'alignement du joueur
{
 
AssignCommand(oNPCClearAllActions());
 
AssignCommand(oNPCActionSpeakString("Sortez les armes! faites couler le sang!!!"));
 
AssignCommand(oNPCActionMoveToObject(oPCFALSE));
 
AdjustReputation(oPCoNPC, -100); // Paramétrer la faction de manière à ce qu'elle déteste le joueur et l'attaque
 
DetermineCombatRound(oPC);
  }

if(
GetSubRace(oPC) == "Drow")
    {
      
AssignCommand(oNPCClearAllActions());
   
AssignCommand(oNPCActionSpeakString("Hey toi! halte-la!"));
 
AssignCommand(oNPCActionMoveToObject(oPCFALSE));
 
AssignCommand(oNPCActionStartConversation(oPC,"test"));
 
//BeginConversation("test", oNPC);
}


Premier probleme rencontrer... le sergent s'avance bien sur moi mais aussi sur les autre npc drow si je m'eloigne.

il me dit bien "hey halte-là!" s'avnce devant moi mais jamais aucune conversation ne commence. Meme si je click dessu il parle pas

le plus frustrant de tout... , c'est qd je me casse, lui il continue son inspection avec les autres guards et commence le dialogue en speakstring

Donc du coup je sais a la limite comment faire mainteant pour un dialogue de contoire
Lien direct vers le message - Vieux
Avatar de MadCat
MadCat
Dauphin
 
Avatar de MadCat
 
la doc bioware
Je rappelle que ce genre de problème est abordé dans la doc officielle de bioware.
La traduction sur la chose: http://nwn.chez.tiscali.fr/Tutorial/Scripts/ther12.htm
__________________
MadCat
Lien direct vers le message - Vieux
Avatar de sojkowski
sojkowski
Dauphin
 
Avatar de sojkowski
 
ça me gonfle! ça marche pas non plus! a ce demandé si il a completment testé ou a moin que j'ai oublié quelque chose, j'arrete pas d'essayer :baille:
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
Bien sûr, tu ne vérifies même pas que oPC est bien un PJ : ton chef gnoll perçoit aussi les PNJs (heureusement pour lui !).
Lien direct vers le message - Vieux
Avatar de sojkowski
sojkowski
Dauphin
 
Avatar de sojkowski
 
j'ai besoin de quoi pour que le " ActionStartConversation" marche?!

parce que là le perso se pointe devant moi et il ne me lance jamais mon dial!
Lien direct vers le message - Vieux
Avatar de sojkowski
sojkowski
Dauphin
 
Avatar de sojkowski
 
Bien j'y perd mon latin, j'ai effacé mon perso recopier coller les meme scripts et là ça remarche

bon faut que je dise qu'il ne doit parler seulement aux joueur et pas aux autres npc...
Lien direct vers le message - Vieux
Avatar de sojkowski
sojkowski
Dauphin
 
Avatar de sojkowski
 
Bon je compre mieu, j'avais simplment un probleme sur mon locuteur! c t pas le sergent drow donc ça pouvais pas marcher! suis vert...




Petite suggestion pour differentier un pj d'un npc... il suffirait pas demander si la creature n'appartiendrai pas a une faction PJ pluto que de s'enmerder a ecrire des scripts de 50000 pages?
Lien direct vers le message - Vieux
Avatar de MadCat
MadCat
Dauphin
 
Avatar de MadCat
 
je comprend pas très bien...
je comprend pas très bien...

Citation:
Petite suggestion pour differentier un pj d'un npc... il suffirait pas demander si la creature n'appartiendrai pas a une faction PJ pluto que de s'enmerder a ecrire des scripts de 50000 pages?
La fonction GetIsPC(object) fait ça très bien ...

Citation:
GetIsPC(object)
Check whether a creature is player controlled.

int GetIsPC(
object oCreature
);
Parameters
oCreature

The creature to check for PC status.



Description
Returns TRUE if oCreature is a player controlled character, otherwise FALSE.

A player controlled character is treated as one of the following: a PC, DM avatars, familiars possessed by PCs, monsters possessed by DMs.
__________________
MadCat
Lien direct vers le message - Vieux
Avatar de sojkowski
sojkowski
Dauphin
 
Avatar de sojkowski
 
Code PHP:
{

object oPC GetLastPerceived();
object oNPC OBJECT_SELF;
string sTag ;




 if(
GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD// Restriction selon l'alignement du joueur
{
 
AssignCommand(oNPCClearAllActions());
 
AssignCommand(oNPCActionSpeakString("hey!!! toi la bas!"));
 
AssignCommand(oNPCActionMoveToObject(oPCFALSE));
 
AdjustReputation(oPCoNPC, -100); // Paramétrer la faction de manière à ce qu'elle déteste le joueur et l'attaque
 
DetermineCombatRound(oPC);
  }

if (
GetIsPC(oPC))
{
AssignCommand(oNPCClearAllActions());
AssignCommand(oNPCActionSpeakString("hey! halte-la!"));
AssignCommand(oNPCActionMoveToObject(oPCFALSE));
AssignCommand(oNPCActionStartConversation(oPC,"indentifiezvous"));
}


voilà, cette fois ça marche nikel! pas besoin de strigger ou autre, bien que les strigger vont me servir pour autre chose

j'ai donc simplement implanté le GetIsPC et le npc n'a va plus ennuyer les autres npc

super cool
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > un npc vous Interpelle? comment faire?
   

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 09h25.
   

© 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