
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.







La date/heure actuelle est 19/04/2025 21:02:55
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 |
Nemo700 Chevalier Messages: 90 |
ok je vais faire un autre sujet pour reformuler la question concernant le chant (qui intervient bien suite à un dialogue)
pour ce qui est du cafarnaüm (je sais pas l'écrire non plus), pour ma demande "principale", si tu veux je peux faire un récap global de la scène souhaitée, avec les "dialogues" les actions que tu as déja réussi à scripter et celles qui resteraient à ajouter ? qu'en penses tu ? sinon mon accès adsl est revenu, free avait juste choisi hier soir comme moment pour faire mon dégroupage (qui avait été demandé en 2002 ![]() |
Revenir en haut | ![]() ![]() ![]() |
-MeteZ- Seigneur ![]() Messages: 205 Localisation: Région Parisienne (95) |
Voilà j'ai fini le script il était dur parce que je suis pas assez méthodique
![]() Bon bah tu laisses les propriétés du henchman comme je te l'avais dit. Tu laisse les scripts OnDeath et OnPerceveid du boss comme avant et tu édite juste le script ci dessous (OnCombatRoundEnd). Récapitulatif: -Monstre à - de 10% de sa vie: Monstre lance un sort au joueur. Joueur renversé, perd son arme. Henchman ramasse l'arme, la plante dans le monstre (il perd l'arme). Le monstre meurt. L'arme est contenue dans les "restes" du boss. OnCombatRoundEnd: NWScript : //: ![]() //:: Name Fin de round du boss //:: Filename st_aboss_combat //:: Created By: -MeteZ- // // Si vous desirez modifier/arranger, faire part // // de vos appreciations/remarques, n'hesitez pas, // // a me le faire savoir.*/ // ////////////////////////////// //////////////////// /* BOSS A TUER : Script a mettre dans le OnCombatRoundEnd du boss ! N'oubliez pas de mettre le script "st_aboss_percept" Dans le OnPerceveid du boss sinon ca ne sert a rien ! */ #include "nw_i0_plot" #include "NW_I0_GENERIC" void main() { object oJoueur = GetLocalObject(OBJECT_SELF, "ENNEMI_DU_BOSS"); object oHenchman = GetLocalObject(oJoueur, "ASSOCIE"); // D'apres l'ancien script, on a deja verifier si oJoueur est bien PJ object oBoss = OBJECT_SELF; if(GetIsDead(oJoueur) == TRUE) { // Si le joueur est mort, le boss reprend sa vie SetLocalInt(OBJECT_SELF, "PERCEPTION", 0); // la perception de st_aboss_percept revien a zero au cas ou ... RemoveEffects(oBoss); ActionCastSpellAtObject(SPELL_RESTORATION, oBoss,METAMAGIC_ANY, FALSE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE); } if(GetIsDead(oHenchman) == TRUE) { SetLocalInt(OBJECT_SELF, "PERCEPTION", 0); // la perception de st_aboss_percept revien a zero au cas ou ... } if(GetPercentageHPLoss(oBoss) < 20) // si le boss n'a plus que 10% de sa vie { if(GetLocalInt(OBJECT_SELF, "COMBAT_TERMINE") != 1) { SetLocalInt(OBJECT_SELF, "COMBAT_TERMINE", 1); // le combat est termine ActionDoCommand(ActionWait(1.0)); SurrenderToEnemies(); ActionDoCommand(ActionWait(1.0)); ActionSpeakString("Tu est a ma merci, meurt !"); // Comme on ne peut pas revenir sur les reputations des 3, on doit taper fictivement location lBoss = GetLocation(oBoss); CreateObject(OBJECT_TYPE_PLACEABLE, "invisobj", lBoss, FALSE, "InvisibleObject"); // on cree un objet invisible a la location du boss object oPlaceBoss = GetNearestObjectByTag("InvisibleObject"); ActionDoCommand(ActionWait(0.5)); ActionCastFakeSpellAtObject(SPELL_FIRE_STORM, oJoueur, PROJECTILE_PATH_TYPE_DEFAULT); // Lance le sort DelayCommand(3.2, AssignCommand(oJoueur, ActionPlayAnimation(ANIMATION_LOOPING_DEAD_BACK, 0.0, 10.0))); // Le joueur se retrouve a terre object oArme = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oJoueur); //larme du PJ if(oArme != OBJECT_INVALID) { AssignCommand(oHenchman, ActionTakeItem(oArme, oJoueur)); // on retire l'arme du PJ "elle glisse" DelayCommand(2.9, FloatingTextStringOnCreature("Votre arme vous glisse des mains lors du renversement", oJoueur, FALSE)); DelayCommand(3.8, AssignCommand(oHenchman, ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW, 1.0, 2.0))); // le henchman se baisse pour ramasser lepee DelayCommand(3.5, FloatingTextStringOnCreature(GetName(oHenchman) + " ramasse votre arme et s'en equipe.", oJoueur, FALSE)); DelayCommand(4.7, AssignCommand(oHenchman, ActionEquipItem(oArme, INVENTORY_SLOT_RIGHTHAND))); } // c'est a ce moment que le henchman revient pour sauver le PJ if(GetLocalInt(oJoueur, "HENCHMAN_PRESENT") != 1) // Si le henchman n'est pas encore revenu { DelayCommand(4.0, AddHenchman(oJoueur, oHenchman)); DelayCommand(4.1, SetLocalInt(oJoueur, "HENCHMAN_PRESENT", 1)); } // Break : if(GetLocalInt(oJoueur, "HENCHMAN_PRESENT") != 1) DelayCommand(5.0, AssignCommand(oHenchman, ActionAttack(oPlaceBoss))); // Le henchman attaque oPlaceBoss DelayCommand(6.0, FloatingTextStringOnCreature(GetName(oHenchman) + " plante l'arme dans la poitrine du monstre.", oJoueur, FALSE)); DelayCommand(4.3, AssignCommand(oHenchman, ActionSpeakString("Non !"))); effect eDamage = EffectDamage(5000, DAMAGE_TYPE_NEGATIVE, DAMAGE_POWER_NORMAL); // 5000 de degats au boss = mort du boss DelayCommand(7.2, ActionTakeItem(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oHenchman), oHenchman)); DelayCommand(7.9, ActionSpeakString("Aaaaaah !")); DelayCommand(7.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oBoss, 0.5)); // On inflige eDamage } // Break : if(GetLocalInt(OBJECT_SELF, "COMBAT_TERMINE") != 1) // Arret du combat : debut de la fin ! } // Break : if(GetHitDice(oJoueur) < GetMaxHitPoints(oJoueur)/2) } // Break : void main() _________________ "Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit." |
Revenir en haut | ![]() ![]() ![]() |
Nemo700 Chevalier Messages: 90 |
Fantastique !! j'essaye ça dès que je rentre à la maison, merci vraiment pour tes efforts...
Je ne voudrais pas abuser, mais est ce que tu as pu ajouter l'effet visuel (par ex: souffle de dragon/feu) quand le boss jette son sort ? Pourrais tu faire aller le hench sur le waypoint "healnash" pendant que le joueur et le boss se tapent dessus ? je te tiens au courant dès que j'ai testé ton script ![]() |
Revenir en haut | ![]() ![]() ![]() |
-MeteZ- Seigneur ![]() Messages: 205 Localisation: Région Parisienne (95) |
Ouay mais je verrai si je peux faire ca mais là comme je suis sur la réalisation d'un module avec un ami ca devient plus dur pour faire les scripts des autres.
_________________ "Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit." |
Revenir en haut | ![]() ![]() ![]() |
Nemo700 Chevalier Messages: 90 |
![]() Le hench ne reste pas du tout en retrait au contraire il se rue au combat avant le joueur même du coup il se fait latter en 3 secondes et meurt. Après tout est presque parfait : le combat dure juste comme il faut, le monstre fini par attendre ses derniers HP (là il manque l'effet visuel mais je suppose que c'est un détail pour toi, si tu peux le souffle de dragon de feu serait parfait) puis le joueur est envoyé à terre par le sort du boss, la phrase indiquant que le hench ramasse l'épée apparait mais comme il est mort je ne vois rien (cependant son portrait réapparait sur côté) A ce stade j'aimerai pouvoir insérer une phrase criée par le hench, disons "Je ne te laisserai pas faire ça" (je la modifierai plus tard) Puis le boss s'éloigne de quelques pas et se fait achever. Tout sera donc parfait si tu peux empêcher le hench de joindre le combat. [EDIT : Là j'avais exposé une suggestion assez complexe pour contourner ça, mais je crois que j'ai trouvé mieux, du coup j'ai fait un autre message et je retire cette partie] Enfin ce qui serait génial c'est que quelques secondes après la fin de ce combat on puisse lancer automatiquement la transition vers la zone suivante (disons que je vais l'appeler "final") un nouvelle fois je te remercie pour tes efforts Dernière édition par Nemo700 le 23/03/2006 23:14:30; édité 1 fois
|
Revenir en haut | ![]() ![]() ![]() |
Nemo700 Chevalier Messages: 90 |
J'ai trouvé plus simple.. on oublie l'idée du mec blessé, j'ai juste demandé au hench de tenir la position un peu avant d'entrer dans la zone de detection du boss et du coup tout s'est passé à la perfection.
Du coup ce qui serait necessaire serait un petit script que je pourrais placer sur un trigger et qui justement forcerai le hench à tenir la position. Tu pourrais réussir ça ? Si oui il restera plus que l'effet visuel et la "sortie" de la zone On y est presque !! |
Revenir en haut | ![]() ![]() ![]() |
-MeteZ- Seigneur ![]() Messages: 205 Localisation: Région Parisienne (95) |
Je regarderai ca quand j'aurai le temps
![]() ![]() _________________ "Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit." |
Revenir en haut | ![]() ![]() ![]() |
Nemo700 Chevalier Messages: 90 |
oki, fait comme tu pourras, ton aide est déja très précieuse comme ça.
Je vais faire un demande dans un autre sujet pour créer un déclencheur qui forcera le hench à "tenir la position" comme si je lui avais donné l'ordre Avec un peu de chance quelqu'un l'aura dèja fait et je pourrais ajouter ça tout seul Pour le changement de zone, je vais regarder dans d'autre mods pour trouver une commande similaire, avec un peu de bol je réussirai à la modifier tout seul |
Revenir en haut | ![]() ![]() ![]() |
Nemo700 Chevalier Messages: 90 |
Le soucis du hench qui doit rester en retrait est résolu !! (merci à ceux qui m'ont aidé
![]() Par contre je me suis aperçu d'un petit problème de timing : en fait la phrase disant que le hench ramasse l'épée apparait quand il est encore en train de se rapprocher des 2 combattants, mais surtout la phrase indiquant que celui ci plante l'épée dans le boss et la chute de ce dernier arrivent alors que le hench est encore en train de ramasser l'épée. Je vais essayer de jouer dur les valeurs "Delay" dans ton script pour retarder les opérations, le temps que les animations se finissent. Si j'ai bien compris l'effet visuel c'est dans la commande : 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 donc l'effet visuel c'est "SPELL_FIRE_STORM" je vais aussi essayer de trouver une liste d'autres effets visuels dans les tuto et voir si je peux le changer Si je réussi à faire ça il ne resterai qu'à insérer la commande qui rend sa liberté de mouvement au hench 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 à trouver comment lancer la transition "forcée" vers la zone suivante Si tu lis ça je te remercie à nouveau pour ton aide très précieuse, tes suggestions sont toujours bienvenues ![]() |
Revenir en haut | ![]() ![]() ![]() |
-MeteZ- Seigneur ![]() Messages: 205 Localisation: Région Parisienne (95) |
Pour ajuster les DelayCommand ce n'est pas à moi de faire toi. Parce que comme ont a pas les mêmes distances etc etc, mon résultat pour moi ne sera pas le même pour toi.
Tien je te donne comment téléporter le PJ (le henchman se téléporte avec.) NWScript :
DelayCommand(5.0, AssignCommand(oJoueur, ActionJumpToObject(GetObjectByTag("TAG_DE_LOBJET_AUQUEL_ON_SE_TP")))); La aussi, j'ai mit 5.0 secondes mais c'est à toi d'ajuster. Je te conseille de mettre au moins 10 secondes après que la scène se soit passer histoire que le joueur est le temps d'analyser la scène etc etc. _________________ "Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit." |
Revenir en haut | ![]() ![]() ![]() |
Nemo700 Chevalier Messages: 90 |
super je m'y atèle de suite, juste deux questions :
pour les délais, les écarts en secondes c'est depuis le départ du script je crois (et non pas un timing depuis la dernière action) pour insérer les commandes de libération du hench et de téléportation à la fin, je dois les mettre en tout dernier juste avant le "}" ou il y a une subtilité à prendre en compte ? |
Revenir en haut | ![]() ![]() ![]() |
-MeteZ- Seigneur ![]() Messages: 205 Localisation: Région Parisienne (95) |
Non fais comme tu as dit.
Oui pour les delayCommand _________________ "Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit." |
Revenir en haut | ![]() ![]() ![]() |
Nemo700 Chevalier Messages: 90 |
J'ai réglé les delay et c'est ok (en deux temps car j'ai un peu allongé les textes affichés et donc il fallait avoir le temps de les lire
![]() Par contre les commandes pour remettre le hench à l'état "me suivre" et pour lancer la téléportation vers la zone finale ne font aucun effet (le script se compile sans soucis, mais il ne se passe rien du tout) |
Revenir en haut | ![]() ![]() ![]() |
Nemo700 Chevalier Messages: 90 |
-MeteZ- je voulais juste te demander un petit truc par rapport à ton script, maintenant que j'ai pu jouer sur les delay et changer les phrases apparaissant à l'écran il est parfait pour moi,
mais il y a un point que je ne n'arrive pas à comprendre : est ce que tu avais prévu que "visuellement" le hench attaque le boss ? Parcequ'on le voit bien ramasser l'épée puis "l'équiper" mais ensuite il reste debout et c'est le texte qui précise qu'il frappe le boss. Est ce que tu avais mis une commande pour qu'on le voit "physiquement" porter un coup au boss ? (style ActionAttack ?) C'est déja très bien comme ça, mais si on pouvait le voir frapper le boss ce serait encore mieux qu'une cinématique ![]() En tous cas cette scene est le grand final du mod et c'est à toi que la doit : milles fois merci EDIT : et bien oui j'ai regardé de plus pret et j'ai trouvé ta commande ActionAttack, mais elle ne fait pas d'effet. J'ai même essayé pour voir de mettre directement à attaquer oBoss (au cas ou le oPlaceBoss aurait été trop loin) mais le hench reste immobile. Est ce que tu saurais pourquoi ? EDIT 2 : je pense que je sais ce qu'il se passe : en utilisant ton script seul, le hench entrait dans le combat et donc ça ne marchait pas. Alors j'ai placé un trigger qui à permis de donner l'ordre au hench de tenir la position (stand ground) et comme ça il restait en arrière le temps d'entrer dans la zone de perception du boss et du coup ton script s'activait et le hench quittait le groupe puis revenait comme ton script le prévoit. Seulement l'état stand ground semble être gardé même si le hench à quitté l'équipe et du coup, même s'il exécute les animations il n'attaque pas le boss. Il faudrait lever cet état de "stand ground" mais juste l'annuler, si on repasse sur l'état "suivez moi" le hench rapplique et ton script tombe à plat Ou alors au lieu de lui faire faire "stand ground" il faudrait le freezer juste assez de temps pour que je rentre dans la zone de detection du boss |
Revenir en haut | ![]() ![]() ![]() |
-MeteZ- Seigneur ![]() Messages: 205 Localisation: Région Parisienne (95) |
Nan je suis plus dans le sujet
![]() ![]() (Désolé je suis en projet en ce moment.) _________________ "Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit." |
Revenir en haut | ![]() ![]() ![]() |
Nemo700 Chevalier Messages: 90 |
ben déja merci pour ce que tu as fait (c'est à dire 90% du travail sur ce script) et tant pis si tu ne veux plus intervenir et que tu es trop occupé.
cependant après vérif je confirme qu'après avoir modifié ton script pout "immobiliser" puis libérer le hench ça ne change rien au fait que l'animation d'attaque du boss par hench ne se produit pas si tu peux juste essayer de me dire pourquoi tu m'aiderais bien à avancer... |
Revenir en haut | ![]() ![]() ![]() |
-MeteZ- Seigneur ![]() Messages: 205 Localisation: Région Parisienne (95) |
Au fait, je ne sais plus ou sur le forum tu as dit que le henchman attaquait bien le PNJ invisible que tu as crée. Mais que celui était loin du boss alors c'était pas crédible, et bien tu pourrai faire en sorte que le PNJ suivent le boss.
Mais ce script dans le OnSpawn du PNJ invisible. 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. _________________ "Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit." |
Revenir en haut | ![]() ![]() ![]() |
Nemo700 Chevalier Messages: 90 |
merci pour l'astuce, je ne sais pas si ça va pouvoir marcher (en tous cas sur le OnSpawn) vu qu'au début le personnage invisible est très loin dans un coin de la zone et que je le téléporte près du boss juste au moment ou il doit se faire attaquer.
En tous cas je vais tester. Merci Je sais pas si tu as vu mais kiky.le.magnifique à tenté une modification de ton script dans l'autre sujet et la sienne fonctionne bien pour que le hench attaque le boss mais par contre j'ai du mal à réintégrer la partie ou le hench ramasse l'épée que lui n'avais pas pris en compte. |
Revenir en haut | ![]() ![]() ![]() |


Page 2 sur 2 ¤ Aller à la page Précédente 1, 2
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