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 21:18:50


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Elanam Alarune
Novice
Inscrit le: 25 Juil 2004
Messages: 19
Localisation: Dans les Bas Fonds de Kemper, là où les korrigans dansent la gigue
Répondre en citant
Posté le : 25/07/2004 15:32:49 Sujet du message : calculer la durée d'un déplacement

Bonjour !


Je suis nouveau sur ce forum et débutant en scriptage.
J'ai un problème dont la solution est peut-être évidente mais cela fait un moment que je cherche et je n'ai toujours pas trouvé.Sad

J'aimerais pouvoir calculer la durée que met un personnage pour aller d'un point A à un point B. J'ai évidemment pensé à durée = vitesse*distance en prenant comme poin t de départ la fonction GetTimeSecond. Le problème c'est que je ne sais pas non plus calculer la vitesse du personnage ! Mad La fonction GetMovementRate ne me calcule pas la vitesse en mètre/seconde .

S'il vous plaît, aidez-mooooiii !!!Crying or Very sad
_________________
Nous sommes des héros, Bouh ! Les rodeurs et les hamsters, partout, content nos exploits !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Longbow
Grand Sage du Conseil
Inscrit le: 10 Déc 2003
Messages: 638
Localisation: Orléans
Répondre en citant
Posté le : 25/07/2004 20:34:38 Sujet du message :

Hum, hum...

Premiers éléments de réponse comme disent les journaleux... grâce au Lexicon. La fontion GetMovementRate(object) peut te permettre de connaître la vitesse d'une créature.

1e colonne en marchant, la seconde en courant (en mètre/ round).
PC Movement: 2.00, 4.00
Immobile: 0.00, 0.00
Very Slow: 0.75, 1.50
Slow: 1.25, 2.50
Normal: 1.75, 3.50
Fast: 2.25, 4.50
Very Fast: 2.75, 5.50
DM Fast: 5.50, 11.00

Rq: attention aux potions et autres incantations pour augmenter la vitesse (EffectMovementSpeedIncrease)
_________________
Rex illeteratus
Quasi Asinus Coronatus
Jean de Salisbury
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Elanam Alarune
Novice
Inscrit le: 25 Juil 2004
Messages: 19
Localisation: Dans les Bas Fonds de Kemper, là où les korrigans dansent la gigue
Répondre en citant
Posté le : 25/07/2004 21:14:11 Sujet du message :

Tout d'abord merci d'avoir répondu

ok, ça j'ai vu.

Mais, la fonction GetMovementRate me donne un integer qui correspond à la vitesse du PC. Il ne me donne donc pas vraiment la vitesse du PC, mais seulement un code : 0 = PC speed, 1=immobile, etc...

Peut-être suis-je un peut bête mais je ne vois donc pas comment m'en servir pour calculer le temps que le PC met à aller à un point A à un point B.

Si tu vois ce que je veux dire ...
_________________
Nous sommes des héros, Bouh ! Les rodeurs et les hamsters, partout, content nos exploits !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Longbow
Grand Sage du Conseil
Inscrit le: 10 Déc 2003
Messages: 638
Localisation: Orléans
Répondre en citant
Posté le : 25/07/2004 23:28:45 Sujet du message :

Hum, hum...

Je ne suis pas un matheux et encore moins fort à la course en sac, mais une équivalence pourrait peut-être faire l'affaire... du genre:

NWScript :
void main()
{
int iRate = GetMovementRate(GetFirstPC());
float fVitesse;
float fDist = GetDistanceBetween(GetObjectByTag("Ptd'arrivee"),GetFirstPC());

if (iRate == 0)
{fVitesse = 2.0;}

else if (iRate == 1)
{fVitesse = 0.0;}

else if (iRate == 2)
{fVitesse = 0.75;}

// Etc...
float fTotal = fVitesse*fDist;
string SResult = FloatToString (fTotal);
SendMessageToPC(GetFirstPC(), "" + SResult);
}
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.

Ca compile, mais je n'ai aucune certitude de la justesse de ce magma de float et d"interger...
_________________
Rex illeteratus
Quasi Asinus Coronatus
Jean de Salisbury
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 26/07/2004 07:18:52 Sujet du message :


Elanam Alarune a écrit :
Peut-être suis-je un peut bête mais je ne vois donc pas comment m'en servir pour calculer le temps que le PC met à aller à un point A à un point B.

Si tu vois ce que je veux dire ...
Ca me paraît un peu ambigu tel que tu l'as présenté. Est-ce le temps que le personnage "mettra" à le faire, donc un calcul théorique, ou le temps qu'il "a mis", donc factuel, qui t'intéresse ?

Dans le premier cas, la réponse de Longbow me semble convenable.

Dans le second, il y a de l'idée avec GetTimeSecond, mais tu t'es arrêté un peu vite. GetTimeSecond te donne seulement le nombre de seconde écoulé dans la minute courante. Il te faut GetTimeMinute et GetTimeHour pour avoir une heure précise de départ et encore faut-il que le personnage parte du point A et arrive au point B le même jour. Si son départ et son arrivée son à cheval sur 2 jours il te faudra aussi tenir compte de la date, donc GetCalendarDay, GetCalendarMonth et GetCalendarYear dans le même temps.

La technique de base consiste à noter la date et l'heure de départ au moment où il quitte le point A. Le OnExit d'un déclencheur peut faire l'affaire. Ensuite, dans le OnEnter du déclencheur d'arrivée, tu récoltes l'heure d'arrivée et tu réalises une soustraction.

Voici le code à placer sur les deux déclencheurs en question :
NWScript :


void main()
{
  object oCreature = GetExitingObject();
  int nSecond = GetTimeSecond();
  int nMinute = GetTimeMinute();
  int nHour = GetTimeHour();
  int nDay = GetCalendarDay();
  int nMonth = GetCalendarMonth();
  int nYear = GetCalendarYear();
 
  int nTotalSecond = nSecond + nMinute * 60 + FloatToInt(HoursToSeconds(nHour));
 
  int nTotalDay = nYear * 12 * 28 + nMonth * 28 + nDay;
  SetLocalInt(oCreature, "START_SECOND", nTotalSecond);
  SetLocalInt(oCreature, "START_DAY", nTotalDay);
}


void main()
{
  object oCreature = GetEnteringObject();
  int nSecond = GetTimeSecond();
  int nMinute = GetTimeMinute();
  int nHour = GetTimeHour();
  int nDay = GetCalendarDay();
  int nMonth = GetCalendarMonth();
  int nYear = GetCalendarYear();
  int nTotalSecond = nSecond + nMinute * 60 + FloatToInt(HoursToSeconds(nHour));
  int nTotalDay = nYear * 12 * 28 + nMonth * 28 + nDay;
 
  int nSTotalSecond = GetLocalInt(oCreature, "START_SECOND");
  int nSTotalDay = GetLocalInt(oCreature, "START_DAY");
 
  int nDiffDay = nTotalDay - nSTotalDay;
 
  int nTotalDiff = nDiffDay * FloatToInt(HoursToSeconds(24)) + nTotalSecond - nSTotalSecond;
  SendMessageToPC(oCreature, "Vous avez mis " + IntToString(nTotalDiff) + "");
}
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.


Un petit peu de commentaire :
La séparation du calcul des jours et des secondes écoulées dans le jour est volontaire. En effet, calculer le nombre absolu de seconde écoulée dans le module par rapport à l'an 0 du calendrier du module mène le plus souvent à un dépassement de capacité des entiers comme des float (les entiers à cause d'un dépassement du maximum, les floats à cause des approximations). En calculant la difference du nombre de jour, nous réduisons le risque de dépassement.
A moins de vouloir les millisecondes (car c'est possible), ce résultat à la seconde prêt se basant sur l'écoulement du temps dans le module tiendra compte des arrêts de jeu (mise en pause, sauvegarde et arrêt du jeu pour une reprise ultérieure, etc..).
On peut bien sur améliorer la chose... Par exemple en s'efforçant de ne prendre qu'une seule valeur de départ, car dans l'état actuel, le PJ pourrait revenir dans le déclencheur de départ pour en ressortir et ainsi reprendre un temps de départ.

Les scripts n'ont pas été testés, ils comportent peut-être des erreurs.
_________________
Lendraste de Loreval
Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel.
La cité des mensonges - 1
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
Elanam Alarune
Novice
Inscrit le: 25 Juil 2004
Messages: 19
Localisation: Dans les Bas Fonds de Kemper, là où les korrigans dansent la gigue
Répondre en citant
Posté le : 26/07/2004 19:51:17 Sujet du message :

Ehm ...

En effet, en me relisant, j'ai bien vu que ce n'était pas très clair, aussi je m'en excuse.

En fait, ce que je cherche, c'est davantage la solution apportée par Longbow que celle apportée par lendraste. Ce script doit me permettre de calculer la distance à parcourir et non celle déjà parcourue afin de l'inclure dans une cinématique.

La solution de Longbow en fait marche très bien à ceci près que dans la cinématique (j'utilise la fonction GestaltCameraMove qui est plus que très utile quand on n'a pas compris comment marchaient celles de base) il met faut une durée en seconde et pas en round, d'où certaines modifications.

Voilà mon script :

NWScript :
//:Confused///////////////////////// /////////////////////
//:: Name cadf_discuskmiag
//:: Copyright (c) 2001 Bioware Corp.
//:Confused///////////////////////// ////////////////////
/* Le plus gros du script pour la cinematique
  dans la salle d'invocation du Centre Adminiistratif.
*/

//:Confused///////////////////////// ////////////////////
//:: Created By: Elanam Alarune
//:: Created On:
//:Confused///////////////////////// ////////////////////

#include "ressourcevariabl"
#include "in_g_cameramove"

void main()
{
object oPC = GetEnteringObject ();
  if (!GetIsPC(oPC)) return;

object oArrive;

  GestaltStopCameraMoves (oPC);

  DelayCommand (1.0, AssignCommand (oAgegnor, SpeakString ("Ah, Conseillat, vous voila enfin ! Nous n'attendions plus que vous.")));
  DelayCommand (2.5, AssignCommand (oKmissit, SpeakString ("")));
  DelayCommand (4.0, AssignCommand (oAgegnor, SpeakString ("")));

  DelayCommand (4.5, AssignCommand (oKmissit, ActionMoveToObject (GetObjectByTag ("camdbut1"),FALSE)));
  DelayCommand (4.5, AssignCommand (oAgegnor, ActionMoveToObject (GetObjectByTag ("camdbut3"),FALSE)));
  DelayCommand (4.5, AssignCommand (oDrUn, ActionSit (GetObjectByTag ("bancressoitcul3"))));
  DelayCommand (6.0, AssignCommand (oPC, ActionMoveToObject (GetObjectByTag ("camdbut4"))));
  DelayCommand (10.0, AssignCommand (oPC, ActionMoveToObject (GetObjectByTag ("camdbut7"))));
  DelayCommand (6.5, AssignCommand(oKmissit, SetFacingPoint(GetPosition(GetObjectByTag ("camdbut2")))));
  DelayCommand (6.5, AssignCommand(oAgegnor, SetFacingPoint(GetPosition(GetObjectByTag("camdbut2")))));

  // calcul de la duree du deplacement du PC au point oArrive
oArrive = GetObjectByTag ("camdbut4");

int iRatePC = GetMovementRate(oPC);
float fVitesse;
float fDistAB = GetDistanceBetween((oArrive),oPC);

//calcul de la vitesse du PC quand il marche

if (iRatePC == 0)
{fVitesse = 2.0;}

else if (iRatePC == 1)
{fVitesse = 0.0;}

else if (iRatePC == 2)
{fVitesse = 0.75;}

else if (iRatePC == 3)
{fVitesse = 1.25;}

else if (iRatePC == 4)
{fVitesse = 1.75;}

else if (iRatePC == 5)
{fVitesse = 2.25;}

else if (iRatePC == 6)
{fVitesse = 2.75;}

else if (iRatePC ==7) //je ne savais pas quoi mettre : 7 = creature defaut
{return ; }

else if (iRatePC == 8)
{fVitesse = 5.25;}

//calcul de la duree
float fVitesseMparS = fVitesse/6;
float fDuree = fVitesseMparS*fDistAB;

//calcul de la duree avec EffectMovementSpeedDecrease (50) sur le PC : probleme = trop rapide
float fDureeRalentieInter = (fVitesse/2)/6;
float fDureeRalenti = fDureeRalentieInter*fDistAB;

  //mouvements de la camera en prenant comme donnee "duree" la duree calculee juste au-dessus en prenant compte EffectMovementSpeedDecrease (50).
  //la camera tourne  180 degres avant que le PC n'atteigne le point oArrive.
  //En remplacant fDureeRalenti par fDuree, le timing est bon.
  GestaltCameraMove (6.0,
                    90.0, 3.0, 100.0,
                    180.0, 3.0, 100.0,
                    fDureeRalenti, 30.0,
                    oPC);




}
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.


Explications :

Je n'ai pas inséré ma bibliothèque qui ne contient que les définitions des variables utilisées au début du script et qui ne nous interessent pas.

Comme vous pouvez le voir, j'ai voulu intégrer dans le calcul le fait que j'avais lancé auparavant sur le PC EffectMovementSpeedDecrease (50) afin qu'il n'aille pas trop vite et qu'il ne dépasse les autres (ici, le joueur est le caméraman, la fonction SetCutsceneMode et l'invisibilité du joueur sont annoncé dans un autre script.

Le problème c'est que je ne sais pas à quel nombre est appliqué le EffectMovementSpeedDecrease (50). Ici, j'ai fait comme s'il était appliqué à la vitesse en mètres par round. Mais avec ce script, la caméra atteint 1801 degrés avant que le joueur n'arrive au point oArrive. SI je calcule en fonction de fDuree, la camera est cette-fois ci trop lente par rapport au PC.
Est-ce une erreur de calcul? Avez-vous une idée ?
_________________
Nous sommes des héros, Bouh ! Les rodeurs et les hamsters, partout, content nos exploits !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
k0rvet
Ecuyer
Inscrit le: 24 Nov 2003
Messages: 67
Répondre en citant
Posté le : 27/07/2004 09:04:30 Sujet du message :

Salut à tous!!
Ce thread est très intéressant, bien que je ne comprenne pas grand chose à la GestaltCamera. Enfin c'est pas le problème. Je me permets de poster pour avoir un éclaircissement sur le "calcul de la vitesse du PC quand il marche".

Au sujet de la fonction GetMovementRate(). Tu passes comme argument dedans oPC et tu as bien pris soin au début du script de faire en sorte que ca soit uniquement un PJ. Dans ce cas, GetMovementRate renverra systématiquement 0.


Lexicon a écrit :
Remarks
This cannot be used to determine if a PC (Or any other creature) is walking or running as a PC always returns a value of 0.
Tu te retrouvera donc a chaque fois avec un movement rate de 2.00/4.00 respectivement pour la marche et la course. Je pense donc que la partie "calcule de la vitesse du PC quand il marche" est superflue because elle ne varie jamais.
Maintenant si tu force ton PJ à marcher, tu connaitra tout de suite son movement rate (2.00) et tous les calculs deviennent plus simple non?

D'autre part, EffectMovementSpeedDecrease(50) a pour effet de diviser par deux l'allure de marche et de course du PJ, on se retrouve donc avec 1.00/2.00 en movement rate.

Tout ca, bien sur, en supposant que le PJ n'ai aucun effet de rapidité ni de lenteur.

J'espère avoir été clair, avoir bien saisi ou tu voulais en venir et surtout avoir fait avancé le shmilblick.
_________________
Moi j'dis ca, mais bon j'dis rien hein?
..:: Les Chroniques de la Terre du Milieu ::..
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Elanam Alarune
Novice
Inscrit le: 25 Juil 2004
Messages: 19
Localisation: Dans les Bas Fonds de Kemper, là où les korrigans dansent la gigue
Répondre en citant
Posté le : 27/07/2004 16:54:17 Sujet du message :

Salut à toi kOrvet et prend place avec nous!

Ton idée était certes bonne pour le script présent mais je souhaiterais tout de même pouvoir l'utiliser dans le cas général, c'est-à-dire, dans le cas où le PC n'est pas le joueur. J'ai écris dans ce script toutes les étapes nécessaires pour être sûr de les retrouver plus tard sans avoir à me recreser la tête parce que j'aurais oublié comment faire. Very Happy

Bref, tout ça pour dire que je sais que dans le cas présent, beaucoup de choses sont inutiles mais qu'il vaut mieux avoir toutes les données sous les yeux pour trouver une réponse à mon problème Confused

De plus j'ai expliqué que j'ai dans mon script divisé la vitesse par 2 pour prendre en compte le EffectMovementSpeedDecrease (50) mais que le mouvement de caméra était trop rapide .

Merci quand même d'avoir essayé de résoudre le problème et si tu as d'autrees idées ...



Bon, en fait, j'ai remarqué que j'avais fait une bête erreur de mathématique.Embarassed En effet le calcul de la durée n'est pas Durée = Vitesse * Distance mais plutôt Durée = Distance/Vitesse. Cours de math de 4ème (au moins)Razz

Autre chose (décidemment), j'ai remarqué que le PC courait pour aller du pint de départ à celui d'arrivé. J'ai pris mon Lexicon en main et constatai qu'avec ActionMoveToObject, le PC (joueur) courait toujours et que pour le faire marcher, il fallait utiliiser ActionMoveToLocation. Ceci arrangé dans mon script, je me suis rendu compte que ça ne marchait toujours pas. J'ai vérifié que mon PC était bien ralenti et là je me suis rendu compte que non ,il n'était pas ralenti. Mon EffetMouvementSpeedDecrease ne voulait plus fonctionner. Je l'ai alors essayé dans un autre script en ne mettant que cette fonction, et là tout fonctionnait !?!!ConfusedMad Je ne vois pas où j'ai fait une erreur alors si vous avez une idée ...


NWScript :
//:Confused///////////////////////// /////////////////////
//:: Name cadf_discuskmiag
//:: Copyright (c) 2001 Bioware Corp.
//:Confused///////////////////////// ////////////////////
/* Le plus gros du script pour la cinematique
  dans la salle d'invocation du Centre Adminiistratif.
*/

//:Confused///////////////////////// ////////////////////
//:: Created By: Elanam Alarune
//:: Created On:
//:Confused///////////////////////// ////////////////////

#include "ressourcevariabl"
#include "in_g_cameramove"

void main()
{
object oPC = GetEnteringObject ();
  if (!GetIsPC(oPC)) return;

object oArrive;

//voici mon fameux  EffectMovementSpeedDecrease (50). Ou est l'erreur ?
effect eCameralenti = EffectMovementSpeedDecrease (50);
  AssignCommand(oPC, ApplyEffectToObject (DURATION_TYPE_PERMANENT, eCameralenti, oPC));

  DelayCommand (1.0, AssignCommand (oAgegnor, SpeakString ("Ah, Conseillat, vous voila enfin ! Nous n'attendions plus que vous.")));
  DelayCommand (2.5, AssignCommand (oKmissit, SpeakString ("")));
  DelayCommand (4.0, AssignCommand (oAgegnor, SpeakString ("")));

  DelayCommand (4.5, AssignCommand (oKmissit, ActionMoveToObject (GetObjectByTag ("camdbut1"),FALSE)));
  DelayCommand (4.5, AssignCommand (oAgegnor, ActionMoveToObject (GetObjectByTag ("camdbut3"),FALSE)));
  DelayCommand (4.5, AssignCommand (oDrUn, ActionSit (GetObjectByTag ("bancressoitcul3"))));
  DelayCommand (6.0, AssignCommand (oPC, ActionMoveToLocation (GetLocation (GetObjectByTag ("camdbut4")))));
  DelayCommand (10.0, AssignCommand (oPC, ActionMoveToLocation (GetLocation (GetObjectByTag ("camdbut7")))));
  DelayCommand (6.5, AssignCommand(oKmissit, SetFacingPoint(GetPosition(GetObjectByTag ("camdbut2")))));
  DelayCommand (6.5, AssignCommand(oAgegnor, SetFacingPoint(GetPosition(GetObjectByTag("camdbut2")))));

  // calcul de la duree du deplacement du PC au point oArrive
oArrive = GetObjectByTag ("camdbut4");

int iRatePC = GetMovementRate(oPC);
float fVitesse;
float fDistAB = GetDistanceBetween((oArrive),oPC);

//calcul de la vitesse du PC quand il marche

if (iRatePC == 0)
{fVitesse = 2.0;}

else if (iRatePC == 1)
{fVitesse = 0.0;}

else if (iRatePC == 2)
{fVitesse = 0.75;}

else if (iRatePC == 3)
{fVitesse = 1.25;}

else if (iRatePC == 4)
{fVitesse = 1.75;}

else if (iRatePC == 5)
{fVitesse = 2.25;}

else if (iRatePC == 6)
{fVitesse = 2.75;}

else if (iRatePC ==7) //je ne savais pas quoi mettre : 7 = creature defaut
{return ; }

else if (iRatePC == 8)
{fVitesse = 5.25;}

//calcul de la duree
float fVitesseMparS = fVitesse/6;
float fDuree = fDistAB/fVitesse;

//calcul de la duree avec EffectMovementSpeedDecrease (50) sur le PC
float fDureeRalenti = fDuree*2 ;

  //mouvements de camera
  GestaltCameraMove (6.0,
                    90.0, 3.0, 100.0,
                    180.0, 3.0, 100.0,
                    fDureeRalenti, 30.0,
                    oPC);




}
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.

_________________
Nous sommes des héros, Bouh ! Les rodeurs et les hamsters, partout, content nos exploits !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Elanam Alarune
Novice
Inscrit le: 25 Juil 2004
Messages: 19
Localisation: Dans les Bas Fonds de Kemper, là où les korrigans dansent la gigue
Répondre en citant
Posté le : 29/07/2004 13:14:53 Sujet du message :

Salut !

Bon, j'ai découvert le problème dans mon script qui faisait que mon PC n'était pas ralenti. C'est tout simplement que la fonction EffectSpeedDecrease ne fonctionne pas en mode cutscene. J'ai pensé mettre mon effet ralenti avant d'entrer en mode cutscene et là, surprise ! ça marchait toujours pas.Confused En fait je me suis rappelé qu'en mode cutscene le PC était intouchable. Par contre à la fin de la cutscene comme je n'avais pas enlevé l'effet sur le PC, il était bien ralenti !

Connaissez-vous une autre fonction permettant de ralentir le PC même pendant une cutscene ?

Merci d'avance.
_________________
Nous sommes des héros, Bouh ! Les rodeurs et les hamsters, partout, content nos exploits !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
k0rvet
Ecuyer
Inscrit le: 24 Nov 2003
Messages: 67
Répondre en citant
Posté le : 29/07/2004 13:31:08 Sujet du message :

Juste une idée comme ca, en passant.
Ca me fait penser à ce qui arrive avec un SetCommandable(). Il faut glisser les actions dans la queue d'action du PJ à l'aide de DelayCommand avant d'enclencher le SetCommandable. Et si c'était un peu la même chose? Je ne suis pas familier du système Gestalt mais il semblerais que ce soit l'appel à ces fonctions qui déclenchent la cutscene à proprement parler (le fait que le PJ ne soit plus "touchable"). Dans ce cas, je mettrais un DelayCommand de 0.1 sur le GestaltCameraMove. Ca laisserai le temps à l'effet de lenteur de se lancer effectivement sur le PJ avant d'entammer la cutscene.

Enfin c'est une supposition hein?

*espère*
_________________
Moi j'dis ca, mais bon j'dis rien hein?
..:: Les Chroniques de la Terre du Milieu ::..
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Elanam Alarune
Novice
Inscrit le: 25 Juil 2004
Messages: 19
Localisation: Dans les Bas Fonds de Kemper, là où les korrigans dansent la gigue
Répondre en citant
Posté le : 29/07/2004 20:15:53 Sujet du message :

Ouais, pas con, mais en fait c'est la commande SetCutsceneMode (qui n'est pas une commande de Gestalt) qui fait foirer l' EffectMovementSpeed. Je viens de voir que je l'ai pas mis dans le script plus haut mais qu'il est annoncé dans un autre événement avant.
Le GestaltCameraMove (très bon moyen de faire de faire des cinématiques mis au point par John Bye ; désolé pour la pub:lol) ne fait que déplacer la caméra mais ne fait pas passer le jeu en mode cutscene, c'est à toi de le rajouter. Je sais tu pouvais pas deviner, j'aurais pu être un peu plus précis ...Confused
En fait j'y avais déjà pensé, et j'ai mis DelayCommand (0.1) avant mon SetCutsceneMode. Résultat (comme je l'expliquait plus haut Razz) : le PC n'est pas ralenti pendant le mode cutscene mais l'est avant et après !!!Mad

Je te remercie de te creuser les méninges sur mon problèmes mais si tu pouvais passer une ou deux nuits blanches dessus encore, ça pourrait m'arranger ...Embarassed

Aller, encore un peu d'effort, je sens qu'on approche de la solution.
_________________
Nous sommes des héros, Bouh ! Les rodeurs et les hamsters, partout, content nos exploits !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé 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 135.264ms