La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 10:22:33
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Charietto Acolyte Messages: 25 |
Encore un truc trop dur pour moi !
J'ai supprimé le respawn dans mon module, et il n'y a pas de posibilité de rappel à la vie et autre résurrection. Ce n'est pas un gros problème en solo, il suffit d'avoir le réflexe élémentaire de sauvegarder régulièrement. Par contre pas de respawn en multijoueur, c'est embêtant. J'ai donc créé un petit objet baptisé "Point de Destin" (pas trés original je vous l'accorde). Un personnage en reçoit un au début du module, puis un à chaque quête accomplie (et pourra en recevoir d'autres en diverses occasions). Lorsque le personnage meurt, s'il a un point de destin dans son inventaire, celui-ci est détruit, et le perso ressuscite, sans pénalité; l'idéal serait que les adversaires immédiats du personnages lui laissent un court répit pour lui permettre de porter une attaque, ou de boire une potion. Avec le script ci-dessous, placé dans le OnPlayerDeath du module, les jolis effets sur le perso et sa résurrection fonctionnent, et l'objet "point de destin" est bien détruit. Par contre, je n'ai pas réussi à faire quoi que ce soit à son adversaire. Je pense que le problème doit venir de la sélection de l'ennemi à affecter. En cherchant sur le forum, j'ai vu que GetLastKiller ne pouvait pas fonctionner dans ce sens; d'aprés la description de l'éditeur de script, GetLastAttacker ne marche pas non plus. J'ai essayé avec GetLastDamager, mais cela n'a aucun effet non plus. J'en suis finalement arrivé à la version actuelle, et la non plus, rien ne se passe. Qui plus est, je ne vois pas comment faire pour affecter plusieurs adversaires à la fois. Voilà le morceau de script incriminé (que je rajoute à la fin du OnPlayerDeath): NWScript :
object oDestinBenef = GetLastPlayerDied(); if (GetItemPossessedBy(oDestinBenef,"PointDestin") != OBJECT_INVALID) { object oDestinCible = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC,OBJECT_SELF,1); object oPtDestin = GetItemPossessedBy(oDestinBenef,"PointDestin"); DestroyObject(oPtDestin,0.0); AssignCommand(oDestinCible,ClearAllActions(TRUE)); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_STRIKE_HOLY,FALSE),oDestinBenef,1.0); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_WAIL_O_BANSHEES,FALSE),oDestinBenef,1.0); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oDestinBenef,1.0); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUNBEAM,TRUE),oDestinCible,1.0); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectBlindness(),oDestinCible,5.0); } Comme, d'aprés ce que j'ai vu sur le forum, le jeu considère que c'est le module qui tue le perso dans le OnPlayerDeath, j'ai essayé de mettre le script dans le OnPlayerDying, en remplaçant GetLAstPlayerDied par GetLastPlayerDying, mais cela ne marche pas non plus. J'ai essayé de placer les effets affectant l'adversaire dans le OnRespawn, mais je suppose qu'un personnage qui est réssuscité ne doit pas être considéré comme respawn-ant, car ça ne marche pas non plus. Du coup, je me demande si c'est possible (tout comme je me demande s'il est possible d'affecter plusieurs adversaires). La seule solution de remplacement assez approchante serait de lancer le script si les points de vie du PJ tombent trés bas, pour juste lui permettre de gagner du temps sans le ressusciter, mais cela pose quelques problèmes: * d'abord, je sais comment faire ce test pour un PNJ ou un monstre, mais je ne vois pas comment l'appliquer à un PJ (et je crains qu'au final, ce soit un peu lourd); * et surtout, la solution reste trés approximative car un perso n'est pas à l'abri de recevoir une grosse baffe qui va le tuer sans passer par la case script (mettre le script dans le OnPlayerDying pose d'ailleurs un problème similaire); c'est pourquoi il me semble que le OnPlayerDeath est le meilleur endroit. Alors, euh, comment dire... Heeeeeelp les gars!!! Dernière édition par Charietto le 12/07/2006 17:12:23; édité 1 fois
|
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Tu peux ptet rendre le joueur immortel pendant 4-5 secondes le temps qu'il retrouve ses esprits.
Sinon un EffectEthearal() pour pas qu'il se fasse attaquer. Pour le truc "c'est le module qui tue le joueur" c'est seulement en cas de passage par le OnPlayerDying. Et il y a GetLastHostileActor (ou un truc comme ça je sais plus) pour trouver le tueur facilement ou presque. Le OnPlayerRespawn c'est uniquement pour ceux qui appuient sur le bouton "Respawn" du GUI quand on est mort, ça n'affecte pas les sorts de resu (tu dois les modifier si tu veux toucher à toutes les resurections) |
Revenir en haut | |
Charietto Acolyte Messages: 25 |
Un grand merci!
Je ne devais pas avoir les yeux en face des trous pour être passé à côté du GetLastHostileActor! Enfin, je viens d'essayer en remplaçant NWScript :
object oDestinCible = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC,OBJECT_SELF,1); par NWScript :
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. et il ne veut toujours pas me trouver l'adversaire. Soit je passe complétement à côté d'un truc, soit une fois le perso mort puis ressuscité, il n'est plus possible de détecter quoi que ce soit aux alentours (il y a peut être un délai nécessaire?). S'il te vient une idée, je suis preneur! En attendant, je vais essayer les méthodes de substitution que tu me suggères (rendre le perso immortel ou éthéré a en plus l'avantage de l'immuniser aux attaques de plusieurs ennemis s'il y a lieu). Merci encore! |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Hmm, si c'est dans le OnPlayerDeath que t'as essayé, OBJECT_SELF c'est le module, donc a peu pas marcher, faut que le parametre soit le joueur.
|
Revenir en haut | |
Charietto Acolyte Messages: 25 |
Ca marche (en remplaçant OBJECT_SELF par oDestinBenef)!
Joie, bonheur, extrême félicité... Merci beaucoup! |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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