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 19:39:49
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 |
Tuyen Demi-dieu Messages: 460 Localisation: Chez moi |
Posté le : 03/09/2004 20:41:02 Sujet du message : un trigger qui blesse les persos tous les x secondes
bonjour!
Je voudrais créer un trigger qui blesse tous ceux qui s'y trouvent de x points de vie périodiquement. Je sais comment faire pour qu'il blesse les PNJ et PJ qui y entrent, on n'a qu'à mettre dans le onenter un script qui donne des dégats à celui qui entre dans le trigger. Le problème, c'est que s'il y reste, il ne subit pas d'autres dommage. Donc je voudrais que si le PJ reste sur le trigger, il continue à perdre des points de vie toutes les y secondes, ou à chaque heartbeat. Merci de vos suggestions ou de vos réponses! |
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
Dans ce genre de cas, je te propose que le OnEnter serve à créer un objet invisible qui possède un script de dégat dans le HeartBeat. Dans le OnExit du trigger, un script qui détruit l'objet. La difficulté vient de la multiplication des joueurs. Il faudrait qu'il y ait un objet invisible attribué à chaque joueur. 1. Mettre dans la palette personnalisée, un objet invisible non statique (dont le resref serait "damo") 2. Dans le OnEnter du trigger NWScript :
void main() { object oPC = GetEnteringObject(); if (GetIsPC(oPC)) { string sName = GetPCPlayerName(oPC); location lLoc = GetLocation(oPC); CreateObject(OBJECT_TYPE_PLACEABLE, "damo", lLoc, FALSE , sName); SetLocalString(GetModule(), sName, "test"); AssignCommand(oPC, SpeakString("")); } } 3. Dans le OnExit du trigger NWScript :
void main() { object oExit = GetExitingObject(); if (GetIsPC(oExit)) { string sName = GetPCPlayerName(oExit); DestroyObject(GetObjectByTag(sName)); AssignCommand(oExit, SpeakString("")); } } 4. Dans le HeartBeat de l'objet, qui applique les dégats NWScript :
void main() { string sVar = GetLocalString(GetModule(), "test"); object oPC = GetObjectByTag(sVar); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(1, DAMAGE_TYPE_MAGICAL), oPC); AssignCommand(oPC, SpeakString("")); } Ca fonctionne en solo, reste à tester en multi, je suis impatient de savoir si c'est bien celui qui reste dans le trigger qui prend les dégats.... Voila. _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
Tuyen Demi-dieu Messages: 460 Localisation: Chez moi |
Merci pour ta réponse très complète!
Je m'en vais tester ça tout de suite! |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Une idée folle comme ça ... Ça pourrait peut-être marcher avec un effet de régénération négative appliquée au PJ, ou l'effet équivalent à la propriété "sanglante" de l'arme... Ça éviterait de charger le onHeartBeat et ce serait plus simple je crois (enfin je sais pas si ça marche une régénération avec un score négatif)
_________________ » Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine » 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII |
Revenir en haut | |
Tuyen Demi-dieu Messages: 460 Localisation: Chez moi |
longbow :
J'ai essayé tes scripts en les modifiant légèrement : j'ai plus besoin de tester si un PJ qui entre car mon trigger est censé blesser n'importe qui... J'ai donc pris le tag de la créature entrante au lieu du nom du PJ. (sachant que le PJ a un tag vide) Tout marche, mis à part un petit problème : quand je sors du trigger, cela ne me détruit pas mon placable, qui continue à me causer des dégats... J'ai bien décoché la case statique dans ses propriétés. J'ai aussi testé si le tag de l'objet créé est le même que l'objet détruit, et c'est le cas... Comment faire???? finipe : je ne peux pas utiliser une régénération négative pour deux raisons : 1- ca marche pas, c'est que positif 2- il faut que les dégats causés sur mon perso cessent quand je sors du trigger, et on peut pas arrêter un effet permanent sur un perso à moins qu'il se repose. |
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
Et la case Intrigue ? Comment sais-tu qu'il s'agit bien du bon objet qui est détruit ?? J'aimerais bien connaître ta fonction de DEBUGG ?? 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. Citation : J'ai donc pris le tag de la créature entrante mais alors le DestroyObject pourrait détruire la créature dont on a récupéré le Tag, non ???_________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Et avec l'effet "sanglant" des armes t'as rien trouvé ? (excuse, je cherche pas bcp j'ai un peu la flemme )
_________________ » Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine » 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII |
Revenir en haut | |
Tuyen Demi-dieu Messages: 460 Localisation: Chez moi |
Bon bon, voici mes scripts... j'en ai pas fait un de débug vu que je sais pas comment on fait, mais j'ai fais des speakstring pour afficher les variables qui m'intéresse. Ah oui! j'ai pas coché la case intrigue non plus.
script on enter : NWScript :
void main() { object oEnter = GetEnteringObject (); string sName = GetTag(oEnter); location lLoc = GetLocation(oEnter); CreateObject(OBJECT_TYPE_PLACEABLE, "plac_poison", lLoc, FALSE , "a_" + sName); //SetLocalString(GetModule(), sName, "test"); AssignCommand(oEnter, SpeakString("a_" + sName)); } script du on exit : NWScript :
void main() { object oExit = GetExitingObject(); string sName = GetTag(oExit); DestroyObject(GetObjectByTag("a_" + sName, 1), 0.1); AssignCommand(oExit, SpeakString("a_" + sName)); } script du on heartbeat du placeable : NWScript : void main() { string sTag = GetTag (OBJECT_SELF); string sVar = GetSubString(sTag, 2, 15); //GetLocalString(GetModule(), "test"); object oEnter = GetObjectByTag(sVar); // 2D6 de degat de poison a chaque fois qu'on entre dans la zone int iDamAmount = d6 (2); effect eDamage = EffectDamage (iDamAmount, DAMAGE_TYPE_ACID, DAMAGE_POWER_NORMAL); effect eVisual = EffectVisualEffect (VFX_COM_HIT_ACID, FALSE); ApplyEffectToObject (DURATION_TYPE_INSTANT, eDamage, oEnter); ApplyEffectToObject (DURATION_TYPE_INSTANT, eVisual, oEnter); AssignCommand(oPC, SpeakString(sVar)); } |
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
1. Tout d'abord, bien vu le "a_" + sName, je n'y avais pas pensé. 2. Quand la créature sort du trig, le speakstring affiche qques chose ? 3. Un truc courant, au début du OnExit, tu mets un ClearAllActions(); Ca peut décoincer... 4. Autres hypothèse, tu nommes plus haut l'objet à créer... En résumé: NWScript : void main() { object oExit = GetExitingObject(); string sName = GetTag(oExit); object oDestroy = GetObjectByTag("a_" + sName); ClearAllActions(); DestroyObject(oDestroy, 0.1); AssignCommand(oExit, SpeakString("a_" + sName)); } _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
Tuyen Demi-dieu Messages: 460 Localisation: Chez moi |
oké merci ca marche! L'objet disparait quand le PJ sort de la zone, le blesse quand il est dedans, etc.. c'est merveilleux!
Par contre ca ne blesse pas mes ennemis... Enfin bon! On peut pas tout avoir! |
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
Citation : Par contre ca ne blesse pas mes ennemis ?? Que veux-tu dire par là ?? Tes ennemis sont entrés dans la zone et ils n'ont pas déclenché le système d'objet invisible ??_________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
Tuyen Demi-dieu Messages: 460 Localisation: Chez moi |
En fait ils créent bien le placeable ( je le sais car j'ai lui ai donné l'apparence d'une table (pour tester)), et ca porte bien le tag de la créature, mais j'ai pas l'impression que ca la blesse...
|
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
L'effet visuel ne se déclenche pas ? _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
Tuyen Demi-dieu Messages: 460 Localisation: Chez moi |
Ni l'effet visuel, ni les dégats...
Enfin bon, peutêtre que dans le feu de l'action j'ai pas bien vu tout.... |
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