L'invisibilité, un problème irrésolu?

Répondre
Partager Rechercher
Bonjours à vous toutes et à vous tous.

Voila, suite à soz, nous rencontrons, sur notre mod, un pb sérieux avec l'invisibilité. c'était déjà pas ça avant... mais la, c'est n'importe quoi.
J'aimerais savoir si des solutions ont été proposé(j'ai cherché mais n'ai pas trouvé), et si non, ne peut on pas mettre en adéquation nos compétences pour enfin résoudre ce problème? y a bien un hak, que nous testons actuellement, mais le On HeartBeat semble être de mise, et je ne cache pas ma réticence a l'employer.
Voilou.
Salut

Si moi ça m' intéresse de résoudre ce problème mais je n' ai aucune idée de comment s' y prendre . Je ne sais pas scripter . Je sais juste qu' il y avait un patch ou un hak non officiel qui réglait ça il me semble . Je pense que je ne suis pas le seul que ça intéresse d' ailleurs de résoudre ce problème mais peut être comme moi les autres n' ont ni les moyens ni ne savent quoi te répondre .

A*
Idem je suis une quiche en script, toute fois, je me pose certaines questions (sans doute celles d'un profane).

-Serait il possible dans le 2da du sort d'y assimiler une, des compétences. au lancement du sort, passer le joueur en discrétion totale avec des valeurs genre 50 discrétion 20 en déplacement silencieux. l'effet serait donc de faire disparaitre le pj, mais que si un autre avec sa comp de percep auditive réussi son jet le voit en transparent..?

-ou, Rajouter au 2da la fonction d'un autre sort comme passage dans l'ether? je sais c'est un peu brutal mais que faire d'autre?

-ou corriger le on percep par défaut des pnj's qui a mon avis, fait bugger plus qu'avant le sort d'invisi.

En l'etat, je suis mage, sous le sort d'invisibilité, je me fais tout de meme remarquer par les moob's et donc attaquer si, soit un autre pj passe a l'attaque devant moi, ou si je lance un spell qui n'est pas censé rompre l'invi.

Eclairez nous de vos lumières, hooo grands scripteurs et scripteuses.
Je dis peut être une bêtise, mais n'est-ce pas plutôt l'effet camouflage qui est recherché? Le PJ ou la créature passe en mode transparent :

effect eConceal = EffectConcealment(50, MISS_CHANCE_TYPE_NORMAL); // ajuster les paramètres selon niveau de camouflage et de risque d'échec de la tentative de camouflage souhaités. Le pourcentage de camouflage donne le risque de détection, à 100 la créature est quasiment indétectable.

ApplyEffectToObject(DURATION_TYPE_INSTANT, eConceal, oCreature); // appliquer l'effet.
Citation :
En l'etat, je suis mage, sous le sort d'invisibilité, je me fais tout de meme remarquer par les moob's et donc attaquer si, soit un autre pj passe a l'attaque devant moi, ou si je lance un spell qui n'est pas censé rompre l'invi.
Si je peux suggérer une idée : Fais le test seul, et en incantation silencieuse.

Il y a clairement une sorte de "bug", vu que tu n'es pas le seul dans cette situation, mais quoi qu'il arrive les ennemis font aussi des tests de perception auditive.
Tout d'abord, merci de vos réponses, je reprends espoir.

Je vais effectuer des testes Claudius, en suivant ta proposition, *croise les doigts*
et vous tiendrez au courant. je ne sais pas quand exactement, car nous sommes en plein dev d'une maj importante.

Sinon, Deyonara, tu as tout à fais raison, et cela ne me dérange pas que les moob's fassent des testes de percep. Seulement, dans l'exemple j'ai du oublier de préciser que "moi le mage" je suis invisible et je ne bouge pas, incante pas. Pourtant, si un autre joueur est repéré par la créature, alors celle-ci me repère également. Que c'est autre pj soit dans mon groupe ou pas, la créature me verrouille comme si le sort d'invisi n'etait pas effectif.

Encore merci de votre attention. Je pense que si nous, pardon, surtout vous, arrivez à regler ce probleme une bonne fois pour toute, toute la communauté vous en sera grée.
Citation :
Publié par DM CabaL
Bonjours à vous toutes et à vous tous.

Voila, suite à soz, nous rencontrons, sur notre mod, un pb sérieux avec l'invisibilité. c'était déjà pas ça avant... mais la, c'est n'importe quoi.
J'aimerais savoir si des solutions ont été proposé(j'ai cherché mais n'ai pas trouvé), et si non, ne peut on pas mettre en adéquation nos compétences pour enfin résoudre ce problème? y a bien un hak, que nous testons actuellement, mais le On HeartBeat semble être de mise, et je ne cache pas ma réticence a l'employer.
Voilou.
Je crois que le plus gros problème est plutôt de chercher à respecter les règles, pas comment celles-ci sont appliquées dans nwn2.
Le sort d'invisibilité fonctionne parfaitement dans nwn2, si plusieurs individus pensent que ce n'est pas le cas, la faute n'en est pas imputable au jeu, mais à eux-mêmes (aussi nombreux soient-ils).

J'ai jeté un sort d'invisibilité sur mon roublard, il a pu se balader sans problème au milieu d'ennemis (je l'ai envoyé en éclaireur exprès sous ce mode afin de vérifier).

Il faut juste éviter de rêver debout ; si le sort d'invisibilité est de niveau 2, visage éthéré de niveau 7, ce n'est pas sans raison. Si vous voulez ne pas être détecté sous invisibilité tout en vous déplaçant, vous n'avez qu'à investir dans des points de déplacement silencieux (comme le dit Deyonara).
Corriger les erreurs éventuelles du jeu pourquoi pas, mais ici c'est du cheat.

http://www.regles-donjons-dragons.co...html#Topic2167
ça...je n'en doute pas...
bref, la réaction des moob's fasse a ce spell est bel et bien buggué. nous y travaillons. Des que l'on tient une piste, je fais un rapport ici.
valou.
Peut être une piste. dans ma campagne (partie II), il y a mission de nuit en solo complet où la furtivité est importante.

En NWN2 1.1153 pas de problème particulier, avec un déguisement qui donne +12 en déplacement furtif et en discrétion, un PJ même assez nul dans ces compétences est difficile à détecter à cette étape de la campagne. Quand il se dévoile un bref moment pour éliminer une cible et repasse dès que possible en mode furtif, il redevient normalement difficile à détecter.

Mais en NWN2+MotB+SoZ 1.2257 puis 1.2258, avec une moine déjà douée en discrétion et déplacement furtif (30 pour les deux avec le déguisement!), voici ce que j'ai constaté :
- elle peut se balader sans problème et rester au milieu des ennemis jusqu'au moment où elle se dévoile pour frapper une cible.
- si elle réussit à repasser en mode furtif, elle continue cependant à être poursuivie et attaquée par les ennemis qui l'ont vue et attaquée auparavant!
- L'IA "appelle les renforts" sur une distance plus grande qu'avant. De ce fait l'ennemi ou les ennemis qui avaient un moment vue la moine, continue(nt) à la suivre et à diriger plus de renforts vers elle, bien qu'elle soit repassée en mode furtif. Cependant les renforts ne la voient pas mais risque de la voir si elle est obligée de se dévoiler.
- Repassée en mode furtif, la moine peut cependant se faufiler au milieu des créatures qui ne l'ont jamais vue.

Conclusion : je pense que depuis un certain niveau de patch un ennemi continue à suivre sa cible, même si celle ci est repassée en mode furtif, dès qu'il la vue (et attaquée?) au moins une fois.
Normalement, redevenir furtif aux yeux de l'ennemi nécessite un don que possède notamment le Maître des Ombres et un autre je crois : Discrétion totale, et je viens de voir dans sa description) que même celle-ci n'est pas automatique.
J'ai également remarqué qu'en mode furtif avec un mdo, en disparaissant sous les yeux d'ennemis, ceux ci ne te voient plus, donc cessent d'attaquer, mais en revanche te suivent sur des kilomètres...
n'ont pas forcement pistage comme don, ni une comp de survie gonflée.


Une personne bien sympathique nous a gentiment ouvert une piste sur notre forum. je pose ici.

Citation :
J’ai lu sur JoL les messages sur le problème de la réaction des créatures quand le joueur est invisible, et comme c’est un problème qui m’intéresse, je fais un passage ici pour vous donner mon avis, en espérant qu’il soit utile.

Il n’y a pas que les sorts d’invisibilité qui provoquent ce problème. Le sort « passage dans l’éther » produit le même problème sauf que les créatures n’attaquent pas, le joueur étant considéré en sanctuaire, mais elles se collent au joueur.

Mon avis de façon brutale : Pour l’IA un perso qui n’est pas en mode furtif est toujours audible.

Dans le fichier « hench_i0_target » il ya une fonction qui scanne les ennemis de la créature.
« void InitializeBasicTargetInfo() « dans cette fonction il ya une boucle sans fin que je reproduit ci-dessous.

while (TRUE)
{
ogClosestHeardEnemy = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY,
OBJECT_SELF, giCurHeardCreatureCount++, CREATURE_TYPE_PERCEPTION, PERCEPTION_HEARD_AND_NOT_SEEN,
CREATURE_TYPE_IS_ALIVE, TRUE);
int nSkillDD = GetSkillRank(8,ogClosestHeardEnemy)+ d20();
SendMessageToPC(GetFirstPC(),"DD "+IntToString(nSkillDD));
int Result = GetIsSkillSuccessful(OBJECT_SELF,6,nSkillDD);
SendMessageToPC(GetFirstPC(),"Result "+IntToString(Result));
if(Result==0)ogClosestHeardEnemy = OBJECT_INVALID;
if (!GetIsObjectValid(ogClosestHeardEnemy))
{
break;
}
// Jug_Debug("%%%%%%" + GetName(OBJECT_SELF) + " found heard enemy " + GetName(ogClosestHeardEnemy) + " heard " + IntToString(GetObjectHeard(ogClosestHeardEnemy)));
else if (!HenchEnemyOnOtherSideOfUncheckedDoor(ogClosestHeardEnemy))
{
// Jug_Debug(GetName(OBJECT_SELF) + " ignoring door creature " + GetName(ogClosestHeardEnemy));
// ignore creatures on other side of checked door
ogClosestHeardEnemy = OBJECT_INVALID;
break; // don't keep checking
}
else if (GetPlotFlag(ogClosestHeardEnemy) ||
GetLocalInt(ogClosestHeardEnemy, sHenchRunningAway) || ((igIntelligenceLevel > HENCH_INT_LOW) ?
(GetCreatureNegEffects(ogClosestHeardEnemy) & HENCH_EFFECT_DISABLED) :
(GetCreatureNegEffects(ogClosestHeardEnemy) & HENCH_EFFECT_TYPE_CHARMED)))
{
SetNonActiveEnemy(ogClosestHeardEnemy);
}
/* else if (GetHasEffect(EFFECT_TYPE_SANCTUARY, ogClosestHeardEnemy) /*GetLocalInt(ogClosestHeardEnemy, curPostiveEffectsStr) & HENCH_EFFECT_TYPE_ETHEREAL/)
{
// ignore creatures with ethereal effect
// Jug_Debug(GetName(OBJECT_SELF) + " ignoring heard creature " + GetName(ogClosestHeardEnemy));
} */
// never consider dying henchman
else if (!GetAssociateState(NW_ASC_MODE_DYING, ogClosestHeardEnemy))
{
break;
}
}

Dans cette boucle il y a la fonction :

ogClosestHeardEnemy = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, giCurHeardCreatureCount++, CREATURE_TYPE_PERCEPTION, PERCEPTION_HEARD_AND_NOT_SEEN, CREATURE_TYPE_IS_ALIVE, TRUE);

Elle renvoie un ennemi qui n’est pas visible mais audible. Le problème est que si le joueur n’est pas en mode furtif il est toujours audible.
Juste dessous j’ai ajouté du code pour tester et le comportement des créatures a changé.

Voilà où j’en suis dans les méandres de l’IA qui est excellente
C'est vrai. Cela dit dans mon cas, la moine peut semer ses adversaires et repasser en mode furtif, alors qu'elle n'est plus en vue. Mais ça n'a pas l'air de fonctionner. En fait elle repasse bien en mode furtif (avec la nouvelle animation ), mais est toujours suivie par ceux qui l'ont vue. Du coup il vaut mieux qu'elle se souvienne des Horiaces et des Curiaces.

Cela dit un des patchs corrige peut être ce qui était en fait considéré comme une anomalie et devient maintenant réservé à un don particulier comme celui du maître des ombres.
Peut-être faudrait-il se tourner sur les capacités d'audition des suiveurs ? Celle-ci est peut-être surdimensionnée, le test est à réussite automatique ou le rayon de perception est trop grand.
Bonjour,

Le comportement des créatures vis-à-vis de l’invisibilité est un peu bizarre et c’est l’IA de combat qui le provoque. Pour en être sûr il suffit de réutiliser l’ancienne en copiant les fichiers nw_c2_defaultx (d’avant SoZ) dans le répertoire du module.
Le fonctionnement de l’IA est, en gros, deux scripts qui s’appellent entre eux. Le premier « HenchDetermineCombatRound » qui se trouve dans le fichier « hench_i0_ai » regarde si la créature a besoin d’être traiter et si oui le script « hench_o0_ai » est lancé. Le script « hench_o0_ai » est le script principal de l’IA, il détermine les ennemis de la créature puis décide quel ennemi va devenir la cible et s’il n’en trouve pas il lance le script « HenchDetermineCombatRound ».
L’IA a besoin de lister les ennemis et de déterminer pour chacun s’il est une cible valide. Dans le fichier « hench_i0_target » il ya une fonction « void InitializeBasicTargetInfo » qui scanne les ennemis de la créature. C’est cette fonction que j’ai modifié pour changer le comportement des créatures.
D’abord le fichier « hench_i0_target » est un fichier « include » donc une fois compilé il faut recompiler les fichiers qui l’utilisent, dans mon cas, au moins deux : « hench_i0_initialize » et « hench_o0_ai ».
J’ai copié dans le répertoire du module les trois fichiers et chaque fois que je modifie la fonction « void InitializeBasicTargetInfo » je compile dans l’ordre « hench_i0_target », « hench_i0_initialize » et « hench_o0_ai ».
Ci-dessous une copie de la boucle sans fin avec le code que j’ai ajouté :

Code:
Citation :
while (TRUE)
{
ogClosestHeardEnemy = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY,
OBJECT_SELF, giCurHeardCreatureCount++, CREATURE_TYPE_PERCEPTION, PERCEPTION_HEARD_AND_NOT_SEEN,
CREATURE_TYPE_IS_ALIVE, TRUE);
//modif code
if(GetIsObjectValid(ogClosestHeardEnemy))
{
if(GetHasEffect(EFFECT_TYPE_SANCTUARY, ogClosestHeardEnemy)
|| GetHasEffect(EFFECT_TYPE_ETHEREAL, gClosestHeardEnemy))
{
ogClosestHeardEnemy = OBJECT_INVALID;
}
else
{
int nSkillDD = GetSkillRank(8,ogClosestHeardEnemy)+ d20();
int Result = GetIsSkillSuccessful(OBJECT_SELF,6,nSkillDD);
if(Result==0)ogClosestHeardEnemy = OBJECT_INVALID;
}
}
//fin modif code
if (!GetIsObjectValid(ogClosestHeardEnemy))
{
break;
}
// Jug_Debug("%%%%%%" + GetName(OBJECT_SELF) + " found heard enemy " + GetName(ogClosestHeardEnemy) + " heard " + IntToString(GetObjectHeard(ogClosestHeardEnemy)));
else if (!HenchEnemyOnOtherSideOfUncheckedDoor(ogClosestHeardEnemy))
{
// Jug_Debug(GetName(OBJECT_SELF) + " ignoring door creature " + GetName(ogClosestHeardEnemy));
// ignore creatures on other side of checked door
ogClosestHeardEnemy = OBJECT_INVALID;
break; // don't keep checking
}
else if (GetPlotFlag(ogClosestHeardEnemy) ||
GetLocalInt(ogClosestHeardEnemy, sHenchRunningAway) || ((igIntelligenceLevel > HENCH_INT_LOW) ?
(GetCreatureNegEffects(ogClosestHeardEnemy) & HENCH_EFFECT_DISABLED) :
(GetCreatureNegEffects(ogClosestHeardEnemy) & HENCH_EFFECT_TYPE_CHARMED)))
{
SetNonActiveEnemy(ogClosestHeardEnemy);
}
/* else if (GetHasEffect(EFFECT_TYPE_SANCTUARY, ogClosestHeardEnemy) /*GetLocalInt(ogClosestHeardEnemy, curPostiveEffectsStr) & HENCH_EFFECT_TYPE_ETHEREAL/)
{
// ignore creatures with ethereal effect
// Jug_Debug(GetName(OBJECT_SELF) + " ignoring heard creature " + GetName(ogClosestHeardEnemy));
} */
// never consider dying henchman
else if (!GetAssociateState(NW_ASC_MODE_DYING, ogClosestHeardEnemy))
{
break;
}
}
Ce que fait le code : si le perso est dans l’éther ou en sanctuaire il n’existe pas pour les créatures. Si le perso est invisible la créature a droit à un jet de perception auditive contre le déplacement silencieux du perso et en cas de réussite elle peut attaquer le perso mais ça dépend de la décision de l’IA. Ne pas oublier que le script tourne au moins une fois par round de combat et que ces saletés de bestioles communiquent entre elles.
Si tu veux un comportement identique à l’ancienne IA, dans cette fonction :
Code:
Citation :
ogClosestHeardEnemy = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, giCurHeardCreatureCount++, CREATURE_TYPE_PERCEPTION, PERCEPTION_HEARD_AND_NOT_SEEN,
CREATURE_TYPE_IS_ALIVE, TRUE);
Tu remplaces « PERCEPTION_HEARD_AND_NOT_SEEN” par “PERCEPTION_SEEN”, et tu effaces mon code il ne sert plus à rien.


Citation :
Oui, toute la communauté peut en profiter
Par BlaireauAgile.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés