JeuxOnLineForumsPlusConnectés : 633 (sites) | 1053 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Les doubles sont betes à mourrir.... RSS
   
Répondre
Partager Outils Rechercher
Sire Pom-pom
Roi
 
Pardon Tonton, j'ai été un peu long:
http://www.sharemation.com/pompom/NWN/copy_trap.rar
Voilà j'ai pas trop le temps d'expliquer là. Sinon que pour une raison qui m'échappe j'ai fait deux zones, dont une totalement inintéressante ou est le StartingPoint, cliquer sur la rive où le ruisseau passe "sous terre" (avec un peu d'imagination) pour aller dans la zone du piège. J'ai posé les trigger comme un sagouin. Je ne gère pas le problème de l'inventaire des copies (i.e. le détruire, lourd à faire sans modifier l'OnDeath des copies, pas impossible, dis moi ce que tu en pense). Voilà sinon je ne sais pas si la façon dont cela fonctionne correspond à ce que tu voulais.
PS: je l'ai très peu testé, "ça a l'air de marcher" est tout ce que je peux dire (notamment pas du tout essayé en multi).
Je sais plus, il est possible que j'ai laissé des lignes de debug (j'ai fait ça hier un peu tard ) . Voilà j'espère que ça te sera utile. N'hésites pas à demander des améliorations/modifications du système.
Lien direct vers le message - Vieux
Avatar de Reyan
Reyan [L.D.D]
Roi / Reine
 
Avatar de Reyan
 
Citation:
i.e. le détruire, lourd à faire sans modifier l'OnDeath des copies, pas impossible, dis moi ce que tu en pense).
et dans un onaquire item ?
en mettant une variable sur les item lors de la création du double, et test decu dans le onacquireitem . . .
c'est cette solution à laquelle tu fais allusion par "lourd à faire" ?
je remet rien en doute, je demande juste si ce genre de procédé est lourd (pas de malentendu hein )
Lien direct vers le message - Vieux
Sire Pom-pom
Roi
 
Citation:
Provient du message de Reyan
et dans un onaquire item ?
en mettant une variable sur les item lors de la création du double, et test decu dans le onacquireitem . . .
c'est cette solution à laquelle tu fais allusion par "lourd à faire" ?
je remet rien en doute, je demande juste si ce genre de procédé est lourd (pas de malentendu hein )
C'est une possibilité, le seul truc c'est que si il n'y a pas d'onacquireitem par ailleurs tu en fais un juste pour une petite zone, et puis tu ne détruit pas les objets au sol.
Je pensais plutôt détruire les objets quand
1) le levier qui crée les doubles est désactivé (les doubles existants sont déjà détruit dans ce cas là, donc ça ferait cohérent)
2) quand les PCs sortent de la zone, mais pour l'instant y a pas de sortie ...

En y réfléchissant c'est moins lourd que je ne pensais: contrairement à ce que j'ai cru on a pas besoin de faire un pseudo-tableau à la création de la copie: une pseudo-liste chainée marche. I.e. tu stockes le premier objet du premier inventaire sur la zone par exemple, tu stockes le deuxième sur le premier... quand tu as fini un inventaire tu stocke un pointeur de fin de liste sur la zone pour pouvoir mettre l'inventaire d'après à la suite rapidement. Quand tu veux détruire les items tu parcours ta liste. Ce qui veux quand même dire que à la désactivation du levier il faut faire cette opération avant de détruire les copies elle-même (sinon il y aurait des "trous" dans la liste correspondants aux inventaires des créatures détruites, et on ne pourrait plus la parcourir), ce qui est assez redondant. Finallement, c'est débile, mieux vaut faire un pseudo tableau, avec un index de dernier élément... mais là outre les opérations de destructions des items à proprement parlé tu dois aussi détruire les objets locaux, faute de quoi tu te retrouves probablement avec une collection de "pointeurs" vers OBJECT_INVALID... grr, sais pas...
Remarque, étant donné la gueule de certains des scripts que j'ai foutu la dedans l'optimisation maximale, je peux déjà oublier...

EDIT: je suis idiot: en faisant une liste chaînée par inventaire, on obtient le meilleur des deux méthodes. Bon je fais ça un peu plus tard.
EDIT2: j'avais oublié les potions et autres parchemins que l'IA de la copie peut lui faire utiliser pendant les combats, ça crée des trous aussi, donc je vais faire un pseudo-tableau, pas joli, lourd, mais au moins ça marchera.
PS: Il y a toujours la possibilité du OnAcquire comme le disait Reyan, mais ça c'est à toi de voir Tonton, étant sonné que ça a un "look" un peu différent. Remarque c'est pas mal les objets fantômes qui disparaissent quand tu les rammasse
Lien direct vers le message - Vieux
Avatar de Le grognon
Le grognon
Alpha & Oméga
 
Avatar de Le grognon
 
oula je te remercie.. je vais tester ça... et ne t'excuse pas pour le temps... vu ce que je gagne en ne faisant rien ... la moindre des choses et d'attendre ton bon plaisir
Lien direct vers le message - Vieux
Sire Pom-pom
Roi
 
Bon je suis désolé, je viens de reprendre le truc, et j'avais laissé un mélange bizarroïde dans pp_pb_copycat, ce qui crée des bugs. Je sors là ,mais je corrige ça après ou demain.
Lien direct vers le message - Vieux
Sire Pom-pom
Roi
 
Bon, je vais tout de même te tenir au courant: c'est à s'arracher les cheveux. Il y a des bugs partout du côté de Bioware, je crois que j'ai enfin réussi à les démêler:
1) le truc que j'utilise, la bonne nouvelle c'est que ça marche à tous les coups mais:
2) ironiquement un bug de l'effet domination (pas très sûr là) a les même conséquence (à savoir laisser les scripts en place) mais de façon complètement aléatoire autant que je puisse en juger (grosso modo 1 fois sur deux), il m'a fallu un bon moment pour comprendre que certaines de mes premières copies gardaient aussi les scripts d'Henchman. Comme c'est aléatoire c'est inexploitable, mais ça gène pas vraiment non plus si on s'y prend correctement.
3) CopyObject: Là c'est beaucoup plus ******, les copies de PJ sont aléatoirement buggées, environ une sur trois elles se retrouvent complètement en dehors du système de faction:
Code PHP:
    ChangeToStandardFaction(OBJECT_SELF,STANDARD_FACTION_HOSTILE);
    
AdjustReputation(GetFirstPC(), OBJECT_SELF, -100);
    
SetIsTemporaryEnemy(GetFirstPC()); 
n'aura aucun effet sur ces copies buggées!

Malheureusement ça passe aussi aux copies de copies, quoique moins souvent j'ai l'impression (probablement seulement une partie des copies de copies buggées je suppose), donc en faisant des copies de copies de copies de copies de copies de copies de PJs, je peux peut-être diminuer la probabilité mais ça ne me semble pas être une très bonne idée .

Pourquoi est-ce ennuyeux? Parce que DetermineCombatRound, sans oIntruder, cherche une cible parmi les créatures hostiles qui sont présentes. Résultat: quand j'appelle DetermineCombatRound la première fois ça marche car je lui passe l'original en paramètre, mais ça ne marche qu'un round, après quoi la copie buggée n'a plus de cible et reste planté là. Lui taper dessus ne change rien, étant donné qu'elle est en dehors du système de faction, les ajustements automatiques ne lui sont pas appliqués et elle reste neutre.

Comment s'en sortir? Modifier DétermineCombatRound pour forcer la copie à avoir une cible (je ne parle pas de modifier nw_i0_generic , juste de faire une version spéciale pour ces copies). Du coup, je pourrais implémenter ton idée de copie attaquant son original uniquement, aux attaques opportunistes près. Pour ça je préfèrerais tout de même passer par un Hakpack, pour rediriger les scripts de créatures dominées (pas encore testé, mais ça devrait marcher) histoire de ne pas alourdir les scripts de henchman/animal compagnon/familier/créature convoquée, et pour ne pas générer de conflit avec des versions modifier de ces scripts.

Le résultat sera tout de même étrange: les copies attaqueront les PJs sans être hostiles, au cour du combat certaines le deviendront (celle qui ne seront pas buggées) et d'autre non, mais le combat devrait ce dérouler normalement sinon.

Autre problème: la destruction des objets, mon système marche.... presque :bouffon: . J'avais oublié un détail, les objets empilable (stackable): si un PJ ramasse un de ces objets, et que ce dernier se combine avec un équivalent déjà présent dans l'inventaire du joueur, l'objet résultant n'est pas l'objet ramassé, donc il n'est pas détruit par la routine.
Solution?
1) Passer par l'OnAcquire du module comme le suggérais Reyan
2) Utiliser le OnDeath de la copie (tant qu'à faire des scripts spécifiques...)
3) Détruire les objets non équipés de l'inventaire à la création de la copie, ce serait dommage, car dans ce cas la copie n'utilisera pas les propres potion du joueur pour se soigner sous son nez . Par ailleurs ça laisse de côté les munitions... on peut les détruire aussi, mais il ne vaut mieux pas que l'original soit un archer dans ce cas.

Voilà, si tu veux je peux te mettre à disposition une version reflétant ce que j'ai fais jusque là, bug aléatoire de faction inclus. J'attend tes impressions , Si tu penses que ça vaut le coup de continuer (avec un hak et la bizarrerie des copies neutre qui combattent), n'hésite pas.

PS: Ce truc soulève probablement une question sur le statut des copies de PJs non buggées dans le système de faction... Eh bien, elles ont sûrement une faction mais je ne sais pas laquelle, aucune de celle qui sont censées exister dans le module je pense, peut-être une faction pour chaque (quoique... AdjustReputation n'a l'air de rien faire même sur les copies non buggées, avant changement de faction en tout cas, tirez en votre propre conclusion) .
EDIT : Entre les problèmes des forums, et mes problèmes de connexion, c'est une gageure de poster ici, j'ai donc un peu avancé sur l'option hakpack (fichier de 2ko décompressé), depuis que j’ai rédigé tout ça, ça marche.
Voilà comment je vois la chose chaque double attaquera son original, et s'autodétruira si celui-ci meurt, de plus il auto soignera immédiatement tous les dégâts provoqués par quelqu'un d'autre que son double.
Ca t’irait?
PS: j'espère très sincèrement que je n'aurais pas à aller modifier les sous fonctions de DetermineCombatRound, je crois que non...
Lien direct vers le message - Vieux
Avatar de SidSilver
SidSilver
Roi
 
Avatar de SidSilver
 
Ah ce Jerry avec ses questions... Toujours autant scripteur fou
__________________
SidSilver... Harbar forever !
Lien direct vers le message - Vieux
Sire Pom-pom
Roi
 
Bon, à tête reposée, je me suis dit qu'il y avait tout de même quelque chose d'étrange, étant donné que je n'avais pas vu ce bug la première fois. Il s'avère que le bug est bien là, mais que je l'avais écrasé par inadvertance, je ne vais pas expliquer, je pense que je vous ai déjà assez soûlés comme ça... Je le fais un peu dans les commentaires de pp_i_hostcopy.nss. Passons, le résultat est que j'arrive à déclancher et maintenir le combat sans modif de script (nw_ch_ac1 est juste là pour le débuggage). Cette fois, tout à l'air de marcher (sauf cf plus bas problème des objets empilables, j'attends du retour sur cette version), je me suis même pris une déculottée sorcier de niveau 20 contre copie exacte, mais j'étais pas chaud, j'avais la pression, et arrêt du temps, c'est pas fair-play.
voilà donc la version modifiée: copy_trap.rar

détail:
Ca marche pareil, quand le levier est activé ça déverrouille la porte et produit les copies, qui sont invulnérables et passives tant que leur original ne s'aie pas approché (trigger), suite à quoi elles l'attaquent.
Par contre ne plus tester comme DM car plus rien ne se produira.
Je ne fait de copies que des joueurs, pas de leurs familiers, henchman, etc... Peut être modifié.
Ah oui, le deuxième effet kisscool, que j'avais oublié de mentionner, si un joueur de la zone a une créature dominée quand le levier est activée, il la perd immédiatement. Etant donné le temps que dure domination je ne pense pas que cela arrivera très souvent ceci dit.
Je n'ai pas corrigé l'histoire des objets empilables non détruits si ils sont ramassés, j'attend des échos, en effet si je met un hak pour rediriger les scripts de domination (à mon avis la version la plus propre et la plus versatile, à la fois par rapport à celle ci et à l'édition directe des nw_ch_ac*) le OnDeath rend cela trivial.
J'ai tout de même fait un effort de présentation: conversations avec texte en jolies couleurs (enfin, pour ceux qui aiment le violet), le trigger pour "plonger" dans le ruisseau est correctement posé (et oui, la zone qui ne sert à rien est toujours là)...
Ne pas faire attention à tout ce qui traîne, bâton de sorcier, trois petit garçons... C'est des outils de débuggage.
Lien direct vers le message - Vieux
Avatar de Skanzo Sylan
Skanzo Sylan
Empereur
 
Avatar de Skanzo Sylan
 
Dommage que j'ai qu'une bécane qui puisse rouler sur nwn sinon j'aurais pu tester avec deux PJ
En tout cas, ça m'a l'air de bien tourner

Citation:
Pom-pom: Je crois que je suis en compétition avec Skanzo pour le prix du bidouillage le plus infâme maintenant...

Azra: Et ben accroche toi mon coco, t'as encore du boulot
"Infâme" ils disent :bouffon:
Pourtant j'ai jamais vraiment poussé le vice
Lien direct vers le message - Vieux
Avatar de Le grognon
Le grognon
Alpha & Oméga
 
Avatar de Le grognon
 
*va tester ça... et 'mouhahahah'tise en pensant aux joueurs *

pom, pom,pom,pommmmm .....pom,pom,pom,pommmmmm *air connu *
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
Citation:
Pom-pom: Je crois que je suis en compétition avec Skanzo pour le prix du bidouillage le plus infâme maintenant...
Les gars... vous pouvez pas faire pire que moi... chui le plus infame bidouilleur du coin...
(si Nylou voyait mon code, elle pleurerait )
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Les doubles sont betes à mourrir....
   

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 12h05.
   

© 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