darketheal Posted May 16, 2009 Voilà après en avoir longuement parlé ici, je poste le problème rencontré avec la machine du laboratoire de Geh'lo'nah : La machine s'active une fois mais rien ne se passe, l'erreur viens d'un script qui s'exécute mal (ou ne s'exécute pas); La solution a été trouvée par Alakdar, je la poste ici : j'ai trouvé l'erreur, vous trouverez après le script corrigé, mais attendez d'abord que Confridín valide les modifications avant de les faires Spoiler : cliquez ici pour voir le message begin "SG_Scr_Act_Geh_Bouton" short notified short DoOnce short tropres short unefois short superjournal float timer if ( MenuMode == 1 ) Return endif if ( DoOnce == 0 ) "SG_St_Geh_LightningShield"->Disable "SG_St_Geh_FrostShield2"->Disable "SG_St_Geh_FrostShield"->Disable StopSound "SG_Snd_Electricité" Set DoOnce to 1 endif if ( DoOnce == 1 ) if ( OnActivate == 1 ) PlayGroup Idle2 PlaySound "SG_Snd_bouton_porte_morro" MessageBox "La machine semble se mettre en marche" Set DoOnce to 2 endif endif if ( DoOnce == 2 ) Set Timer to ( Timer + GetSecondsPassed ) if ( Timer >= 2 ) if ( unefois == 0 ) PlaySound "SG_Snd_Tremblement" set unefois to 1 endif endif if ( Timer >= 3 ) "SG_St_Geh_LightningShield"->Enable "SG_St_Geh_FrostShield2"->Enable "SG_St_Geh_FrostShield"->Enable PlayLoopSound3D "SG_Snd_Electricité" 0.7 MessageBox "Vous entendez une voix qui provient de la machine : Dysfonctionnement, ne pas s'approcher !" if ( superjournal == 0 ) journal "SG_Geh" 17 set superjournal to 1 endif Set DoOnce to 3 endif endif if ( DoOnce == 3 ) if ( OnActivate == 1 ) playgroup Idle PlaySound "SG_Snd_bouton_porte_morro" MessageBox "La machine semble s'éteindre" Set unefois to 0 Set DoOnce to 0 Set Timer to 0 endif endif if ( DoOnce == 3 ) if ( "Player"->GetDistance "SG_St_Geh_FrostShield" < 150 ) Set tropres to 1 Elseif ( "Player"->GetDistance "SG_St_Geh_FrostShield2" < 150 ) Set tropres to 1 Elseif ( "Player"->GetDistance "SG_St_Geh_LightningShield" < 150 ) Set tropres to 1 Else set notified to 0 Set tropres to 0 endif endif if ( tropres == 1 ) "Player"->ModCurrentHealth - 10 if ( notified == 0 ) MessageBox "La machine commence à vous brûler le corps" set notified to 1 endif endif end moi j'ai fait les modifications puis je les ai enregistré dans un autre mod conçu exprès. part contre j'ai remarqué que les dégats quant on est proche ne se font pas... alors que le message s'affiche Bon je sais pas si Confridin à confirmé les modifications, mais en tout cas elles fonctionnes au moins chez deux personnes ^^. EDIT : Pour ceux qui ne savent pas faire et qui veulent découvrir cette planète je fournirais un fichier Correction-Qehlonah.esp une fois que le sript aura été approuvé par Confridin ou toute autre personne du staff Morrowind Stargate. Share this post Link to post Share on other sites
Nightmare Posted May 16, 2009 D'après ce que j'ai compris le Furling intervient dans une quete qui sera dispo dans la V2 mais je ne sais pas si cette machine doit attendre la V2 pour fonctionner ou si il y'a bien un problème Attendons donc les commentaires des concepteurs Share this post Link to post Share on other sites
SeiKen Posted May 17, 2009 Je dirais "+1" avec Nightmare. On compte sortir l'esp en V1.1 dans les prochains jours pour corriger ces problèmes Share this post Link to post Share on other sites
darketheal Posted May 17, 2009 Je dirais "+1" avec Nightmare.On compte sortir l'esp en V1.1 dans les prochains jours pour corriger ces problèmes Je savais plus trop combien de temps (en gros) après la version 1.0 la version 1.1 devait sortir, c'était juste pour ceux qui ne voulaient voir Mezhchanus tout de suite ^^ Share this post Link to post Share on other sites
Confridín Posted May 17, 2009 J'ai trouvé qui donne les coordonnées de Mezhchanus: il s'agit du furling Odin Valkar.Il nous donne ces coordonnées suite à une quête quant on va au labo qu'on actionne la machine plusieurs fois puis... le problème est que la machine ne s'actionne qu'une fois pour moi, et qu'après il ne se passe plus rien. Edit: j'ai trouvé l'erreur, vous trouverez après le script corrigé, mais attendez d'abord que Confridín valide les modifications avant de les faires Spoiler : cliquez ici pour voir le messagebegin "SG_Scr_Act_Geh_Bouton" short notified short DoOnce short tropres short unefois short superjournal float timer if ( MenuMode == 1 ) Return endif if ( DoOnce == 0 ) "SG_St_Geh_LightningShield"->Disable "SG_St_Geh_FrostShield2"->Disable "SG_St_Geh_FrostShield"->Disable StopSound "SG_Snd_Electricité" Set DoOnce to 1 endif if ( DoOnce == 1 ) if ( OnActivate == 1 ) PlayGroup Idle2 PlaySound "SG_Snd_bouton_porte_morro" MessageBox "La machine semble se mettre en marche" Set DoOnce to 2 endif endif if ( DoOnce == 2 ) Set Timer to ( Timer + GetSecondsPassed ) if ( Timer >= 2 ) if ( unefois == 0 ) PlaySound "SG_Snd_Tremblement" set unefois to 1 endif endif if ( Timer >= 3 ) "SG_St_Geh_LightningShield"->Enable "SG_St_Geh_FrostShield2"->Enable "SG_St_Geh_FrostShield"->Enable PlayLoopSound3D "SG_Snd_Electricité" 0.7 MessageBox "Vous entendez une voix qui provient de la machine : Dysfonctionnement, ne pas s'approcher !" if ( superjournal == 0 ) journal "SG_Geh" 17 set superjournal to 1 endif Set DoOnce to 3 endif endif if ( DoOnce == 3 ) if ( OnActivate == 1 ) playgroup Idle PlaySound "SG_Snd_bouton_porte_morro" MessageBox "La machine semble s'éteindre" Set unefois to 0 Set DoOnce to 0 Set Timer to 0 endif endif if ( DoOnce == 3 ) if ( "Player"->GetDistance "SG_St_Geh_FrostShield" < 150 ) Set tropres to 1 Elseif ( "Player"->GetDistance "SG_St_Geh_FrostShield2" < 150 ) Set tropres to 1 Elseif ( "Player"->GetDistance "SG_St_Geh_LightningShield" < 150 ) Set tropres to 1 Else set notified to 0 Set tropres to 0 endif endif if ( tropres == 1 ) "Player"->ModCurrentHealth - 10 if ( notified == 0 ) MessageBox "La machine commence à vous brûler le corps" set notified to 1 endif endif end moi j'ai fait les modifications puis je les ai enregistré dans un autre mod conçu exprès. part contre j'ai remarqué que les dégats quant on est proche ne se font pas... alors que le message s'affiche Merci pour le script. On teste dès que possible. Share this post Link to post Share on other sites
Alakdar Posted May 18, 2009 Il devait s'agir d'une erreur car voici l'algorithme de départ: Si Timer >= 2 alors ...... Sinon Si Timer >3 alors ...... FinSi on essaye pour Timer vaut 1 -> il se passe rien, si Timer vaut 2 -> la condition "Timer >= 2" est vérifié et on éxecute la commande, mais si Timer vaut 3 ou + alors la condition "Timer >= 2" est vérifié, donc la condition "Si Timer >3" ne s'exécute pas puisque Timer est supérieur à 2 et que la condition est un sinon !!! Il aurait fallu faire: Si Timer >3 alors ...... Sinon Si Timer >= 2 alors ...... FinSi Ou alors, ce que j'ai fait: Si Timer >= 2 alors ...... FinSi Si Timer >= 3 alors ...... FinSi En espérant avoir été clair Share this post Link to post Share on other sites