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 29/12/2024 02:09:20
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 |
Baldurien L'homme qui chutait sur le macadam Messages: 14066 Localisation: Quadran Alpha |
Posté le : 16/03/2003 21:50:50 Sujet du message : Défoncer un PJ (1 PdV), l'allonger et le faire parler...
Bon:
J'ai le script suivant qui me péte les couilles pas tant pour le faire mais plus à cause de la connerie même du jeu "vous ne pouvez pas parler car vous êtes trop excités"... Voilà le but : en gros je cherche à faire un peu comme dans The Whitch Wake: - le personne est quasi HS (1 PdV) - il est allongé au sol - il se réveille et un dialogue se déroule Déjà: ça merde au niveau du "allongé au sol": le joueur est debout et n'est pas jouable (à cause du SetIsCommandable) , puis ça merde au niveau du dialogue (cf ce que j'ai dis en intro) Voici mon script: Code : /* But du script: On fout a terre le joueur, il s'est evanoui, il a ete gravement blesse.. Et on ne sait pas ce qui sait passe. */ #include "i_function" void main() { /* Variable dont on a besoin: */ object oEnteringObject = GetEnteringObject(); string sModuleFirstPlayerName = GetGlobalString( "MAIN_CHARACTER" ); string sPlayerName = GetPCPlayerName( oEnteringObject ); int bIsPc = GetIsPC( oEnteringObject ); effect eDamage; int iPlayerHP = GetCurrentHitPoints( oEnteringObject ); object oInvisible = GetObjectByTag( "objInvisible" ); /* c'est un joueur humain: */ if ( bIsPc == TRUE ) { // Pas de joueur predefini: if ( empty( sModuleFirstPlayerName ) ) { SetGlobalString( "MAIN_CHARACTER", sPlayerName ); // On fout les points de vie du joueur a 1: eDamage = EffectDamage( iPlayerHP - 1 ); ApplyEffectToObject( DURATION_TYPE_INSTANT, eDamage, oEnteringObject ); // On l'allonge SetCommandable( TRUE, oEnteringObject ); AssignCommand( oEnteringObject, PlayAnimation( ANIMATION_LOOPING_DEAD_FRONT, 1.0, 999999999.9 ) ); DelayCommand(0.1, SetCommandable( FALSE, oEnteringObject ) ); // On l'allonge et on demarre la conversation: DelayCommand(29.0, StartConversation( oInvisible, oEnteringObject ) ); SetCommandable( FALSE, oEnteringObject ); } // Joueur deja venu: else if ( !empty( sModuleFirstPlayerName ) && sModuleFirstPlayerName == sPlayerName ) { // Raf : dans l'optique: foutre le joueur dans une zone bis } else { SendMessageToPC( oEnteringObject, "Ce module peut se jouer qu'en mode Solo. Vous devrez" + "suivre les ordres du premier joueur: " + sModuleFirstPlayerName ); } } } Les fonctions *Global* sont des raccourcis vers les fonctions *Local*(GetModule(), ... ); . La fonction empty est une copie de la fonction PHP du même nom; et StartConversation contient ceci: Code : void StartConversation( object oSpeaker, object oToSpeak, string sConservation = "" ) { AssignCommand( oSpeaker, ActionStartConversation( oToSpeak, sConservation, TRUE ) ); } Si quelqu'un peut m'aider avant que je défonce le jeu? (php est simple, plus simple...) _________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
Jedaï Chevalier Messages: 89 Localisation: Le Havre, ville pourrie |
A priori, rajouter un AssignCommand( oenteringobject, ClearAllActions(TRUE)); juste après qu'on ait infligé les dommages devrait régler la plupart de tes problèmes... A moins que ça ne fasse rien du tout ...
Par ailleurs, y a un SetCommandable( FALSE, oEnteringObject ); de trop, laisse uniquement celui que tu as retardé avec DelayCommand(), l'autre risque d'interférer avec ton script. Dans le même esprit, inutile de mettre SetCommandable( TRUE, oEnteringObject ); c'est fait par défaut. Après tout ça, normalement ça ne devrait pas marcher... Donc tu me diras si y a des trucs qui ont quand même changé !! [Edit] Et ne défonce pas le jeu, c'est pas vrai que PHP est plus simple, PHP est plus documenté et stable, c'est tout ! |
Revenir en haut | |
Baldurien L'homme qui chutait sur le macadam Messages: 14066 Localisation: Quadran Alpha |
Je vais voir ça de suite tiens
bon alors ça fonctionne (le dialogue part) sauf que le perso ne reste pas allongé => je viens de tester un truc dans Dialogue "pas d'animation" (boucle) vais voir Correction apportée: Code : // On fout les points de vie du joueur a 1: eDamage = EffectDamage( iPlayerHP - 1 ); ApplyEffectToObject( DURATION_TYPE_INSTANT, eDamage, oEnteringObject ); // On tue tout les processus AssignCommand( oEnteringObject, ClearAllActions( TRUE ) ); //SetCommandable( FALSE, oEnteringObject ); // On l'allonge AssignCommand( oEnteringObject, PlayAnimation( ANIMATION_LOOPING_DEAD_FRONT, 1.0, 999999999.9 ) ); // on demarre la conversation: StartConversation( oInvisible, oEnteringObject ); // SetCommandable( TRUE, oEnteringObject ); 1. Ce con de joueur ne reste pas allongé 2. vais essayer de foutre un équivalent de AssignCommand( oEnteringObject, PlayAnimation( ANIMATION_LOOPING_DEAD_FRONT, 1.0, 999999999.9 ) ); dans le dialogue. Edit > c bon:) c fonctionnel Faut que je bloque le joueur dans son action now. _________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR Dernière édition par Baldurien le 17/03/2003 11:07:46; édité 1 fois
|
Revenir en haut | |
Konrad Grand Maître Chanteur du Conseil Messages: 1258 Localisation: Empire d'Halöven |
Si tu fais ça il va se mettre debout puis se recoucher à chaque réplique.
J'ai le même problème sur des PNJ que j'aimerai qu'il reste assit lorsqu'on leur parle. Donc ça m'interresse aussi de trouver une solution. C'est peut être le même problème. _________________ Le site du Module Dragon Noir Le groupe du Module L5A - L'ombre et la Lumière Crimson Skies |
Revenir en haut | |
Baldurien L'homme qui chutait sur le macadam Messages: 14066 Localisation: Quadran Alpha |
Konrad > en fait, tu fais :
Code : // on leve le pcspeaker void main() { AssignCommand( GetPCSpeaker(), ClearAllActions() ); AssignCommand( GetPCSpeaker(), PlayAnimation( ANIMATION_LOOPING_SIT_CROSS, 1.0, 999999999.9 ) ); } Un script que tu fous dans un fichier et que tu démarre au début Et tu fous "animation par défaut" _________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
Konrad Grand Maître Chanteur du Conseil Messages: 1258 Localisation: Empire d'Halöven |
J'essai ce week end
Merci _________________ Le site du Module Dragon Noir Le groupe du Module L5A - L'ombre et la Lumière Crimson Skies |
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