Aller au contenu


Waterlevel, Getwaterlevel, Setwaterlevel ...


  • Veuillez vous connecter pour répondre
18 réponses à ce sujet

#1 Post-it

Post-it

    Attachant détachable adhérant sans tâcher


Posté 18 février 2009 - 12:57

Bonjour à tous, (eh oui encore moi !)

J'ai un autre problème pour un script qui associé à un activateur doit faire monter le niveau de l'eau (et fait apparaître une cascade et un peu de brouillard pendant le temps de la montée de l'eau) ... (niveau initiale de l'eau dans la cellule intérieure = -1500)

begin lil_niveau_eau_500

short palier
short initialisation

float niveau; niveau de l'eau
float niveaucible; niveau cible de l'eau

if ( palier == 2)
	return
endif

if ( MenuMode )
	return
endif

if ( initialisation == 0 )
	set niveaucible to 500
	set initialisation to 1
endif

if ( palier == 0)
	if ( OnActivate == 1 )
		set palier to 1
		PlaySound "Door Stone Open"
		lil_Ex_Vivec_waterfall_03->SetPos Z "-444" 
		lil_Ex_waterfall_mist_01->SetPos Z "-516"
		set niveau to GetWaterLevel
	endif
endif

if ( palier == 0)
	return
endif

"lil_activator"->MoveWorld Y -1.5; fait bouger l'activateur associé au script.

if ( niveau >=  niveaucible )
	lil_Ex_Vivec_waterfall_03->SetPos Z "-2444"
	lil_Ex_waterfall_mist_01->SetPos Z "-2516"
	set palier to 2
	return
else
	set niveau to niveau + 100
	SetWaterLevel, niveau
endif

end

Les problèmes :

- Les cascades n'apparaissent pas mais le son est joué ...
- Le niveau de l'eau ne monte pas ...
- L'activateur bouge apparemment ... (difficile à voir)

Y'a le Post-it et le Post-at ...

------------------------------------------------
Membre auto-proclamé des défenseurs des post-its sur forum, maintenant que je sais ce que c'est ...

#2 Snaïpe

Snaïpe

    ...itset tnus otroh nI


Posté 18 février 2009 - 13:36

je te propose d'adapter un peu ton script :

tout d'abord, cette ligne :

		lil_Ex_Vivec_waterfall_03->SetPos Z "-444" 
		 lil_Ex_waterfall_mist_01->SetPos Z "-516"

il est préférable d'adapter un script de fonctions Disable/enable sur la cascade et la brume, activé par une variable.

on attache donc ce script sur ces objets :

Begin NomDuScript1
 
 Short State
 
 If ( State == 1 )
 
	 Enable
 
 else
 
	 Disable
 
 endif
 
 end

puis à la place de :
		lil_Ex_Vivec_waterfall_03->SetPos Z "-444" 
		 lil_Ex_waterfall_mist_01->SetPos Z "-516"

mettre :

Set NomDuScript1.State to 1
; pour mettre la variable state du script précédent a 1.

idem pour les lignes

	lil_Ex_Vivec_waterfall_03->SetPos Z "-2444"
	 lil_Ex_waterfall_mist_01->SetPos Z "-2516"

à remplacer par

Set NomDuScript1.State to 0

si j'ai bien compris ce que tu veux faire.

pour le reste je suis en train de chercher...

Edit : je reprends ce script du MSFD8 :

Begin crank
 
 short changelevel;changement de niveau à effectuer : oui ou non
 float direction;égale 1 si l'eau monte; -1 sinon
 float waterlift;valeur de la montée ou de la descente d'eau
 short crankturn;pour effectuer la rotation de la manivelle
 short currcrank;position courante de la manivelle
 float newwaterlevel;nouvelle valeur du niveau de l'eau
 
 set waterlift to 120 * GetSecondsPassed
 set waterlift to waterlift * direction
 ModWaterLevel waterlift
 
 set newwaterlevel to GetWaterLevel
 
 if ( direction == 1 );si on augmente le niveau d'eau
 
	 if ( newwaterlevel >= 500 );niveau d'eau >=500
 
		   SetWaterLevel 500; c'est le maximum défini pour cette pièce
		   set changelevel to 0;on a fini de changer le niveau
 
	 endif
 
 else;si on baisse le niveau
 
	 if ( newwaterlevel <= 0 );le niveau est au minimum nul
 
		   SetWaterLevel 0
		   set changelevel to 0;on a fini de changer le niveau
 
	 endif
 
 endif
 
 end

si tu ne veux pas trop t'embêter a fusionner les 2 scripts, je te propose d'en faire un deuxième, comme ci dessus, et d'appeler ce dernier par la fonction StartScript dans ton script d'origine. par contre, il te faudra régler le niveau originel de l'eau dans l'interieur à 0 [Edit] : j'ai écrit une bêtise... (cf partie barrée)

Modifié par Snaïpe, 18 février 2009 - 14:09.


#3 Post-it

Post-it

    Attachant détachable adhérant sans tâcher


Posté 18 février 2009 - 13:48

Re-bonjour Snaïpe, :)

Un grand merci à toi pour te pencher sur mes petits problèmes (voilà deux jours que je tourne en rond sur ce script, j'ai beau regarder comment est fait le script dans les égouts de Lonsanglot, je ne comprends pas pourquoi le niveau de l'eau ne veut pas monter)

J'ai compris ce que tu me proposes en première partie est je trouve cela plutôt bien : je vais tout de suite le mettre en place ...

EDIT : problème la cascade a déjà un script : Sound_Water_Spout

je vais essayer de les fusionner.

Modifié par Post-it, 18 février 2009 - 14:05.

Y'a le Post-it et le Post-at ...

------------------------------------------------
Membre auto-proclamé des défenseurs des post-its sur forum, maintenant que je sais ce que c'est ...

#4 Snaïpe

Snaïpe

    ...itset tnus otroh nI


Posté 18 février 2009 - 14:07

je récapitule.

On a Trois scripts, que j'appellerai respectivement MainScript, WaterLevel, et Waterfall  

on a ton script d'origine, un peu modifié :

begin MainScript
  
  short palier
  short initialisation
  float timer
  short switch
  
  float niveau; niveau de l'eau
  float niveaucible; niveau cible de l'eau
  
  if ( palier == 2)
	  return
  endif
  
  if ( MenuMode )
	  return
  endif
  
  if ( initialisation == 0 )
	  set niveaucible to 500
	  set initialisation to 1
  endif

  if ( OnActivate == 1 )

	  if ( palier == 0)
		  set palier to 1
		  PlaySound "Door Stone Open"
		  Set Waterfall.State to 1
		  StartScript WaterLevel
		 set switch to 1
	 endif

  endif
  
If ( switch == 1 )
  
		Set Timer to Timer + GetSecondsPassed
  
	  If ( timer < 1 )
  
		   "lil_activator"->MoveWorld Y -1.5; fait bouger l'activateur associé au script.
  
	   else
  
		   set switch to 2
  
	   endif
  
endif
  
  
  end

puis le 2e script a attacher sur les cascades et la brume :

Begin WaterFall
  
  Short State
  
  If ( State == 1 )
  
	  Enable
  
  else
  
	  Disable
  
  endif
  
  end

et un 3e script, qui touche le niveau de l'eau :

Begin WaterLevel
  
  short DoOnce
  short originlevel
  short changelevel;changement de niveau à effectuer : oui ou non
  float waterlift;valeur de la montée ou de la descente d'eau
  float newwaterlevel;nouvelle valeur du niveau de l'eau
  
  If ( DoOnce == 0 )
  
	  Set originlevel to GetWaterLevel
	  Set DoOnce to 1
  
  endif
  
  set waterlift to 120 * GetSecondsPassed
  ModWaterLevel waterlift
  
  set newwaterlevel to GetWaterLevel - originlevel
  
  
  if ( newwaterlevel >= 500 );niveau d'eau >=500
  
		 SetWaterLevel 500; c'est le maximum défini pour cette pièce
		 set changelevel to 0;on a fini de changer le niveau
		 Set WaterFall.State to 0
		 StopScript WaterLevel
  
  endif
  
  end

Modifié par Snaïpe, 18 février 2009 - 17:24.


#5 Post-it

Post-it

    Attachant détachable adhérant sans tâcher


Posté 18 février 2009 - 14:09

Euh, je ne vois pas où attacher le troisième script ? -> A oublier fortement j'ai compris :)

Edit : je ne veux pas que le PJ puisse baisser l'eau ... l'eau doit resté comme cela ad vitam eternam. L'activateur est bloqué est ne sert plus à rien...
Edit 2 : puis-je te demander ce qui ne fonctionnait pas dans mon script ?

Modifié par Post-it, 18 février 2009 - 14:21.

Y'a le Post-it et le Post-at ...

------------------------------------------------
Membre auto-proclamé des défenseurs des post-its sur forum, maintenant que je sais ce que c'est ...

#6 Snaïpe

Snaïpe

    ...itset tnus otroh nI


Posté 18 février 2009 - 14:11

pas besoin de l'attacher, c'est un global, c'est à dire qu'il est actif sans avoir besoin d'objets, du moment qu'il est appelé par un autre script ( StartScript NomDuScript ).

[edit] j'ai réédité le 3e script et le 1er pour qu'il ne puisse plus se baisser.

[edit2] pour ce qui est de l'activateur, il risque de partir très loin :), mais j'ai besoin de savoir de combien d'unités tu veux que celui-ci bouge sur l'axe des Y...

pour les cascades, ce qui n'allait pas était dû, je pense, à un mauvais rafraichissement de la cellule...

quand au niveau de l'eau, j'en suis pas certain, mais tu faisait monter le niveau de 500 en moins d'une seconde, et Morrowind n'a pas dû apprécier...

Il faut que tu retiennes une chose très importante : Un script s'exécute en 1 frame, et quand je dis le script, c'est le script entier qui s'exécute, ce qui fait que ton script est lu plusieurs centaines de fois en 1 seconde. avec ton script, le niveau est monté de 100 par frame, ce qui fait qu'en 5 frames, tu avais déjà atteint le niveau demandé... C'est pourquoi il vaut mieux utiliser dans des déplacements, etc,... une fonction de temps ( GetSecondsPassed ) pour y pourvoir faire des scripts longue durée, et non pas des extrêmement rapides comme tu l'a fait. jette un oeil au Morrowind Scripting For Dummies 8 ( MSFD8 ) pour avoir une documentation très spécialisée sur les scripts.

Modifié par Snaïpe, 18 février 2009 - 14:31.


#7 Post-it

Post-it

    Attachant détachable adhérant sans tâcher


Posté 18 février 2009 - 15:56

Pour ne rien te cacher j'avais un petit peu regardé ce tutoriel et je savais que le script s'exécutait en boucle mais je ne pensait pas que cela pourrait poser des problèmes de cet ordre. J'avais déjà essayé avec la variable de temps et la fonction GetsedondsPassed mais j'ai eu le même échec. En fait le script que j'ai mis sur le premier post doit être mon 6ème essais... :(

Pour en revenir au vif du sujet, j'ai essayé plusieurs fois avec ton aide et cela ne fonctionne pas. :) Je vais craquer...

- la première fois j'ai eu un message d'erreur : syntax error in script WaterLevel

j'ai supprimé la ligne dans le scipt en question :
set waterlift to waterlift * direction
je pense que tu avais oublié de le faire quand tu as transformé ton script.

-> Résultat plus de message d'erreur.

- deuxième et troisième essais (on ne sait jamais des fois que j'ai rêvé)

La cascade et la brume n'apparaissent pas, l'eau ne monte pas et comble de tout cela me lance le script du squelette dont on avait parlé, il y a quelques jours... :) je vais craquer (deuxième édition). Bon j'ai vérifié bien sûr les noms des scripts et tout et tout, mais là je ne vois vraiment pas. :(

Edit : pour l'activateur, c'est vrai il part très loin, en fait je voulais qu'il bouge très peu (un bouton qu'on enfonce en somme) soit -1,5 sur Y.

Modifié par Post-it, 18 février 2009 - 16:07.

Y'a le Post-it et le Post-at ...

------------------------------------------------
Membre auto-proclamé des défenseurs des post-its sur forum, maintenant que je sais ce que c'est ...

#8 Snaïpe

Snaïpe

    ...itset tnus otroh nI


Posté 18 février 2009 - 16:39

pour tes cascades, tape dans la console, en jeu "TCL", et "vole" en dehors de la cellule, au cas ou elle serait partie ( ça arrive des fois suite a un bug )

si elle est là mais pas dans la pièce, faut trouver la source du bug.
sinon, essaye de sortir de ta cellule puis d'y re-rentrer. si les cascades sont là, alors la pièce ne s'est pas rafraichie lors du script, et il faudra le réadapter. dans l'autre cas je ne vois plus mais bon...

[edit] j'ai re-modifié le 1er script pour l'histoire du bouton.

Modifié par Snaïpe, 18 février 2009 - 17:14.


#9 Post-it

Post-it

    Attachant détachable adhérant sans tâcher


Posté 18 février 2009 - 17:08

Euh ... Désolé Snaïpe, mais avant de refaire je voudrais être sur le script va devenir :

set waterlift to 120 * GetSecondsPassed
Set waterlift to 1

Quel est l'intérêt de la première ligne alors.
Merci pour le switch.

Pour les essais in-Game :

Après avoir lancé TCL et être ressorti de la cellule aucune cascade. (la cascade est bien dans le TES)

Y'a le Post-it et le Post-at ...

------------------------------------------------
Membre auto-proclamé des défenseurs des post-its sur forum, maintenant que je sais ce que c'est ...

#10 Snaïpe

Snaïpe

    ...itset tnus otroh nI


Posté 18 février 2009 - 17:11

Citation

Set waterlift to 1

j'ai fait un infâme lapsus. en fait supprime la ligne, y'en a pas besoin ( Set waterlift to waterlift * 1 si tu préfères :blush: )

[edit]Va voir dans le fichier Warnings.txt ( si il y en a un ) dans ton dossier morrowind, ça peut éclaircir certaines choses

Modifié par Snaïpe, 18 février 2009 - 17:13.


#11 Post-it

Post-it

    Attachant détachable adhérant sans tâcher


Posté 18 février 2009 - 17:18

Ah tient c'est marrant j'ai deux warnings, je l'ai mets ici :

Texture "Textures\_land_default.tga" count 3.
Texture "Textures\menu_thick_border_bottom_right_corner.dds" count 2.

Y'a le Post-it et le Post-at ...

------------------------------------------------
Membre auto-proclamé des défenseurs des post-its sur forum, maintenant que je sais ce que c'est ...

#12 Snaïpe

Snaïpe

    ...itset tnus otroh nI


Posté 18 février 2009 - 17:23

bon, ils n'ont rien a voir, tant pis....

désolé mais là je ne vois plus...quelqu'un d'autre peut-être ?

#13 Post-it

Post-it

    Attachant détachable adhérant sans tâcher


Posté 18 février 2009 - 17:28

Ok je te remercie !

Y'a le Post-it et le Post-at ...

------------------------------------------------
Membre auto-proclamé des défenseurs des post-its sur forum, maintenant que je sais ce que c'est ...

#14 Orann

Orann

    Nérévarine de Pertevue


Posté 18 février 2009 - 18:39

Les warnings, je les ai aussi et je crois que tout le monde les a même en ne lançant que Morro... C'est "normal" et ça ne déclenche rien de particulier! :blush:
Palme d'honneur 2010 pour le mod Archipel de Pertevue

Entamez votre voyage vers l'Archipel de Pertevue ! Test communautaire en cours.

#15 elendell

elendell

    Mécano Dell'Arte


Posté 18 février 2009 - 19:58

Bonjour les scripteurs,

Voir le messageSnaïpe, le 18.02.2009 à 17:22, dit :

désolé mais là je ne vois plus...quelqu'un d'autre peut-être ?
Il me semble que le problème vient de ça : Set Waterfall.State to 1.

Warefall est le nom du script. Si mes souvenirs sont bons, tu peux pointer une variable d'un script global mais pour un script local, il faut pointer l'objet auquel il est attaché. Essaye avec ceci à la place :

Set IDdelaCasacade.State to 1
Set IDdelaBrume.State to 1

Si c'est bien ça, il faudra aussi faire la même chose dans "WaterLevel".

#16 Finraïl

Finraïl

    Modèle de wiwilandais nanotechnologique


Posté 18 février 2009 - 20:02

Voir le messageelendell, le 18.02.2009 à 19:57, dit :

Warefall est le nom du script. Si mes souvenirs sont bons, tu peux pointer une variable d'un script global mais pour un script local, il faut pointer l'objet auquel il est attaché.
Exact  :blush:

Not Quite Dead, le 22.06.2006 à 19:42, dit :

[...]un changement avatarien, même infime, est PAS BIEN et nuisible [...]
Les lisez-moi c'est bon, mangez-en !! Image IPB

Fervent Partisan de l'Immuabilité Avatarienne.

Morrowind Renaissance


#17 Post-it

Post-it

    Attachant détachable adhérant sans tâcher


Posté 18 février 2009 - 20:03

L'eau monte, et ne me demandais pas pourquoi ! (j'ai changé deux choses : j'ai monté l'eau de telle manière que le PJ puisse la voir au départ elle touche une des constructions, le plus bas de la construction est dans l'eau, j'ai également fait le test en recommençant totalement une partie), le script ne fait plus démarrer le script du squelette qui n'avait rien avoir et la encore je sais pas pourquoi !

Reste la cascade à faire apparaître...

Oups j'avais pas fait attention mais d'autres wiwilandais ont répondu à mon appel, vite je vais tout lire prestement. :blush:

A Elendell : j'essaye tout de suite ...

Modifié par Post-it, 18 février 2009 - 20:06.

Y'a le Post-it et le Post-at ...

------------------------------------------------
Membre auto-proclamé des défenseurs des post-its sur forum, maintenant que je sais ce que c'est ...

#18 Snaïpe

Snaïpe

    ...itset tnus otroh nI


Posté 18 février 2009 - 20:21

Citation

Waterfall est le nom du script. Si mes souvenirs sont bons, tu peux pointer une variable d'un script global mais pour un script local, il faut pointer l'objet auquel il est attaché. Essaye avec ceci à la place :

oups, je ne m'en souvenait pas... j'y repenserai à l'avenir.

#19 Post-it

Post-it

    Attachant détachable adhérant sans tâcher


Posté 18 février 2009 - 20:29

Après un premier test : Génial tout fonctionne à merveille :blush: !!!! Plus que quelques réglages à effectuer mais là je crois que vous m'avez fait avancé d'un grand pas !

Merci beaucoup Elendell !! Merci beaucoup Snaïpe !!

Y'a le Post-it et le Post-at ...

------------------------------------------------
Membre auto-proclamé des défenseurs des post-its sur forum, maintenant que je sais ce que c'est ...




0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)