La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 12:40:17


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Baldurien
L'homme qui chutait sur le macadam
Inscrit le: 12 Sep 2002
Messages: 14066
Localisation: Quadran Alpha
Répondre en citant
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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Jedaï
Chevalier
Inscrit le: 14 Nov 2002
Messages: 89
Localisation: Le Havre, ville pourrie
Répondre en citant
Posté le : 16/03/2003 23:59:46 Sujet du message :

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 ... Very Happy
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. Cool
Dans le même esprit, inutile de mettre SetCommandable( TRUE, oEnteringObject ); c'est fait par défaut. Very Happy

Après tout ça, normalement ça ne devrait pas marcher... Razz
Donc tu me diras si y a des trucs qui ont quand même changé !! Very Happy

[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 ! Embarassed
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Baldurien
L'homme qui chutait sur le macadam
Inscrit le: 12 Sep 2002
Messages: 14066
Localisation: Quadran Alpha
Répondre en citant
Posté le : 17/03/2003 10:59:03 Sujet du message :

Je vais voir ça de suite tiens

bon alors ça fonctionne (le dialogue part) sauf que le perso ne reste pas allongéConfused

=> 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é Confused
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 Razz

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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Konrad
Grand Maître Chanteur du Conseil
Inscrit le: 30 Sep 2002
Messages: 1258
Localisation: Empire d'Halöven
Répondre en citant
Posté le : 17/03/2003 11:06:21 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Baldurien
L'homme qui chutait sur le macadam
Inscrit le: 12 Sep 2002
Messages: 14066
Localisation: Quadran Alpha
Répondre en citant
Posté le : 17/03/2003 11:09:07 Sujet du message :

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 Smile
Et tu fous "animation par défaut"
_________________
#nwnights-fr @ irc.darkmyst.org TitanQuest-FR
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Konrad
Grand Maître Chanteur du Conseil
Inscrit le: 30 Sep 2002
Messages: 1258
Localisation: Empire d'Halöven
Répondre en citant
Posté le : 17/03/2003 11:49:13 Sujet du message :

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Montrer les messages depuis :
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


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 30.366ms