La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 10:12:19


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
zelmir1337
Novice
Inscrit le: 20 Avr 2010
Messages: 5
Répondre en citant
Posté le : 11/06/2012 11:38:54 Sujet du message : pnj qui ne ce défend pas

Bonjour, Je débute avec l'éditeur de nwn2 et je bloque sur la création d'un garde.

j'ai voulu créer un pnj garde teste pour mon module ainsi qu'une faction, cette faction et quasi identique que la faction defender seule différence est que la faction que j'ai créer a 50 point en ver un player au lieu de 100 comme pour le defender.

Quand je teste mon garde avec un pj je peu attaquer le le garde c'est ce que je recherchais par contre ce que je comprend pas c'est pourquoi mon garde ne ce défend pas.

Je ne trouve pas l'astuce pour régler ce souci et je n'est pas trouvé de poste a ce sujet alors je viens demander de l'aide, si vous pouvez m'éclairer sur ce sujet je vous serais très reconnaissant.Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Claudius33
Grand Sage du Conseil
Inscrit le: 25 Avr 2008
Messages: 547
Répondre en citant
Posté le : 13/06/2012 20:26:56 Sujet du message :

50 est neutre.

Il faut agir par script (éventuellement depuis une conversation) et soit changer le garde de faction, le passer HOSTILE (fonction ChangeStandardFaction), par exemple dans un script attaché à l'évènement "script déclenché en cas de dégâts".

On peut aussi changer la valeur 50 par script et la remplacer par 0, je ne me rappelle plus la fonction exacte mais en filtrant sur "faction" on la retrouve facilement. L'avantage c'est que toute la faction change d'un coup envers le joueur.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
zelmir1337
Novice
Inscrit le: 20 Avr 2010
Messages: 5
Répondre en citant
Posté le : 14/06/2012 17:02:39 Sujet du message :

merci de t'as réponse je vais essayé sa au plus vite encore merci:smile:
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
zelmir1337
Novice
Inscrit le: 20 Avr 2010
Messages: 5
Répondre en citant
Posté le : 17/06/2012 08:22:26 Sujet du message :

j'aimerais déclencher une conversation au moment d'une attaque physique j'ai donc placé le script ga_conversation_self mais je ne sais pas si c'est le bon script et comment le modifier pour qu'il lance la conversation choisi .

voici le script

NWScript :

// ga_conversation_self
/*
  start a conversation file with yourself.

  Parameters:
    string sConversation = Conversation file to start.
*/

// ChazM 2/25/06

// #include "ginc_param_const"

void main(string sConversation)
{
  object oPC = (GetPCSpeaker()==OBJECT_INVALID?OBJECT_SELF:GetPCSpeaker());

  AssignCommand(oPC, ActionStartConversation(oPC, sConversation, TRUE, FALSE));
}
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.


merci d'avance pour votre aide
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Claudius33
Grand Sage du Conseil
Inscrit le: 25 Avr 2008
Messages: 547
Répondre en citant
Posté le : 17/06/2012 10:30:05 Sujet du message :

Je suppose qu'il s'agit du garde précédent.

Pour que ça marche, il faut :
- repasser le garde dans une faction amie (DEFENDER, COMMONER, ...)
- terminer la situation de combat
- lancer la conversation

Dans l'évènement 'dégats' du garde :

NWScript :
void main()
{
  object oPC = GetLastDamager(OBJECT_SELF); // celui qui vient de taper sur le garde
  if (!GetIsPC(oPC)) return; // sort si ce n'est pas le PC

  ChangeToStandardFaction(OBJECT_SELF, STANDARD_FACTION_COMMONER); // passe le garde en faction amie
  AssignCommand(oPC, ClearAllActions(TRUE)); // stoppe la situation de combat
  DelayCommand(0.2f, AssignCommand(oPC, ActionStartConversation(oPC, "ma_convo")));
}
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.

NB : pour un mod solo, on identifie le PC à coup sûr par object oPC = GetFirstPC() plutôt que de se prendre la tête entre les différentes façons de l'identifier en fonction des situations. Par contre cela irrite les puristes Laughing

}
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
zelmir1337
Novice
Inscrit le: 20 Avr 2010
Messages: 5
Répondre en citant
Posté le : 19/06/2012 21:59:21 Sujet du message :

Merci pour t'as réponse , sa marche mais j'ai encore un petit souci. Quand je l'attaque la conversation ce lance comme prévu mais après la conversation je reprend le combat et si tôt que je lui refais des dégats sa relance la conversation. comment faire pour que le script qui lance la conversation au moment ou le pnj ce prend des dégats ne s'enclenche pas à chaque foi?

Et suis-je obliger de faire passer le pnj en hostile pour faire attaquer le joueur? parce-que sa me pose quelque problème du genre après le combat il reste hostile et ces potes garde l'attaque, je préférerais faire passer le joueur en hostile jusque à sa mort ou pendant un certain temps si c'etais possible.

encore merci pour ton aide Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Claudius33
Grand Sage du Conseil
Inscrit le: 25 Avr 2008
Messages: 547
Répondre en citant
Posté le : 20/06/2012 20:07:28 Sujet du message :

Le plus simple est d'attacher une variable au garde. Dans le toolset( sous les scripts. Par exemple "Fait", initialisée à 0.

Puis dans le script :
NWScript :
....
if (!GetIsPC(oPC)) return; // sort si ce n'est pas le PC
if (GetLocalInt(OBJECT_SELF, "Fait")) return;

SetLocalInt(OBJECT_SELF, "Fait", 1);
...
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.


Si COMMONER ne suffit pas (bizarre?) repasses le en DEFENDER. Ou vérifies que ta faction spéciale pour les gardes n'est pas hostile à COMMONER.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger 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 32.852ms