Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Factions... et SetBehaviorState
Factions... et SetBehaviorState
Par Archamedes_Fr le 18/12/2002 à 22:49:38 (#2827029)
Comme bon nombre d'entre vous, j'ai ajouté des factions. Entre autre, une faction animale. J'aurais aimé que cette faction hostile, n'attaque pas les Rangers ou les Druides, mais tout les autres, qui passent trop, si.
J'ai d'abord pensé à utiliser cette portion du code du OnSpawn:// SPECIAL BEHAVIOR SECTION
/*
The following section outlines the various special behaviors that can be placed on a creature. To activate one of the special
behaviors:
1. Comment in SetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL);
2. Comment in one other special behavior setting (ONLY ONE).
*/
SetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL);
SetBehaviorState(NW_FLAG_BEHAVIOR_OMNIVORE); //Creature will only attack those that close within 5m and are not friends,
//Rangers or Druids.
//SetBehaviorState(NW_FLAG_BEHAVIOR_HERBIVORE);//Creature will flee those that close within 7m if they are not friends,
//Rangers or Druids.
Mais, bhen oui, vous vous doutiez bien qu'il y avait un mais, si j'opte pour cette option, les animaux n'attaque plus personne... Ils sont bien hostiles envers tout individu, quelque soit sa classe, mais ils attendent patiemment que quelqu'un les agresse, et ce quelque soit sa classe.
Ai-je raté quelque chose ? Ou compris de travers ? Y a-t-il une autre option à activer ?
bijour
Par Reyan le 19/12/2002 à 19:41:09 (#2833956)
(au fait bonjour à tous ;) )
edit : dsl, j'avais mal lu la ligne, en fait zappé le commenttaires
bref, oublie ce que j'ai dit :lol: :monstre:
et je ne sais pas pourquoi ca marche pas ... mais c'est sur que ca serait pratique
Par Jedaï le 19/12/2002 à 19:51:45 (#2834045)
Tu as deux solutions, si tu es un minimum doué en scripting tu peux faire des scripts de remplacement acceptables sans grand problème :) . Sinon fouille un peu sur ce forum : c'est une question récurrente bien que jamais vraiment définitivement réglée.:cool:
essai ça ;)
Par Reyan le 19/12/2002 à 21:49:20 (#2835216)
#include "nw_i0_plot"
int nAppelepar = GetUserDefinedEventNumber();
object oPerceived = GetLastPerceived();
void main()
{
switch (nAppelepar)
{
case 1002 ://si appele par OnPerception
if (GetIsPC(oPerceived) == TRUE)
{
int nDruid = GetLevelByClass(CLASS_TYPE_DRUID, oPerceived);
int nRanger = GetLevelByClass(CLASS_TYPE_RANGER, oPerceived);
if ((nRanger !=0) || (nDruid !=0))
{
ClearAllActions();//n'attaque pas !
ActionMoveToObject(oPerceived, FALSE, 1.5);//renifle le deriere
ActionPlayAnimation(ANIMATION_FIREFORGET_HEAD_TURN_LEFT, 1.0);
ActionPlayAnimation(ANIMATION_FIREFORGET_HEAD_TURN_RIGHT, 1.0);
AdjustFactionReputation(oPerceived, OBJECT_SELF, 100 - GetFactionAverageReputation(OBJECT_SELF, oPerceived));
//dis à toute la faction : copain !
}
}
break;
}
return;
}
dans le UserDefined de ton streum, après avoir "décoché" SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT);
dans son OnSpawn :)
alors je formule moi même les grosses critique et j'en profite pour me poser des questions stupide :p
1- C'est quoi la syntaxe pour "ou"
2- Je n'ai pas réussi à trouver comment attraper la faction de ton animal, donc j'ai mis celle par défaut "hostile", sauf que du coup tout bonhomme hostile n'attaqueras pas le PJ après ça ... alors c'est pratique parce qu'aucun animal ne le feras, c'est sur, perso je pensais m'en servir pour des animaux gardiens qui décident qui la forêt peut attaquer. Un bidouillage (stupide, doit y avoir un meilleur moyen ;) ) c'est de ne mettre que tes animaux et hostile, mais c'est idiot (je trouve :mdr: )
3- la pauvre animations où le streum viens renifler le pj ... dsl je séchais là...:rolleyes: si vous avez une idée ...
tiens, je viens d'y trouver un avantage, si tu as déjà tuer un animal, ba si t'es un druide on te pardonne ... mouais , est ce bien un avantage ... mais pour éviter ça il suffit d'une petite variable je pense :)
alors voila, c'est un des mes premiers script, je le trouve simpliste :doute:
donc si vous avez une meilleur idée :D
ps : j'ai un peu fouillé sur le forum pour les factions ... et j'ai trouvé ça
mais je dois avouer ne pas voir comment l'utiliser là ... et surtout ça n'est que pour l'objet incriminer (le streum dont il est question) et ça ne permet pas mon histoire d'animaux gardiens ...
bon, j'ai trouvé comment utilisé le AdjustReputation(object1, object2, int) :
donc maintenant ça marche quelque soit la factions (standard ou pas) et ce pour toute la factions, même les streums sans le script, je corrige :)
edit 2 : bon, ca commence à faire un message à ralonge, mais il faut éviter les scripts non corrigé pas vrai ?
donc j'ai changé la syntaxe, ca fait plus court quand même ...
Re: essai ça ;)
Par Taern le 19/12/2002 à 22:39:04 (#2835514)
Provient du message de Reyan
1- C'est quoi la syntaxe pour "ou"
Proposition1 || Proposition2
Pour le reste je préfère pas m'aventurer, ces histoires de faction/réputation ça me donne mal au crâne. :doute:
Au fait, bienvenue parmi nous Reyan :p
PS: y'a une ptite erreur dans ton script, un "ç" à la place d'un "c" dans le mot "case" :ange:
Par Reyan le 19/12/2002 à 23:05:15 (#2835714)
c'est a cause que je voulais faire un post propre pour un fois :mdr:
bon, je corrige et adapte avec le || :)
et personne n'aurait une idée pour l'animation ? parce que ça serait plus sympa quand même non ?
Par Archamedes_Fr le 20/12/2002 à 12:14:02 (#2838712)
Ton script fait exactement ce que j'attendais de la fonction de Bioware...
Comme quoi le vieil adage... " Pourquoi ne pas faire compliquer puisque chercher à faire simple ne fonctionne jamais." Heu... c'était pas ça ? :doute:
Et bonne idée que d'éditer le message.
JOL Archives 1.0.1
@ JOL / JeuxOnLine