il servirait juste à rendre une caverne éclairé par des lueurs qui se deplacerai aleatoirement
j'ai choisi de n'utiliser que les translations (et deja avec ca c'est bien compliqué ^^ )
la lueur ne doit pas sortir d'un cube predefinie dans l'initialisation
je rencontre un pb:
ma lueur veut bien rester stable selon l'axe Z mais en revanche suivant X et Y , c'est pas du tout gagner.
ce n'est vraiment pas un script essentiel à mon mod donc pas la peine de prendre la tete dessus
voici le code :
begin PhMvtAletoire ;initialisation partielle des variables ( consomme moins de ressource ) short DirectionEtSens short DoOnce ;ce premier morceau permet de faire bouger la lumiere if ( DirectionEtSens == 1 ) move, X , -500 elseif ( DirectionEtSens == 2 ) move, X , 500 elseif ( DirectionEtSens == 3 ) move, Y , -500 elseif ( DirectionEtSens == 4 ) move, Y , 500 elseif ( DirectionEtSens == 5 ) move, Z , -500 elseif ( DirectionEtSens == 6 ) move, Z , 500 endif ;celui ci sert à stopper l'avance du script et à repeter le premier morceau ;de script (celui qui deplace la lumiere ) ;cette repetion dure ici pendant 1 seconde short vara float dureee set dureee to ( dureee + GetSecondsPassed ) if ( dureee > 1 ) set vara to vara + 1 set dureee to 0 endif if (vara != 1) return endif set vara to 0 ;initialisation complete if ( DoOnce == 0 ) set DoOnce to 1 float Xini float Yini float Zini float CoteDuCube float Xmin float Xmax float Ymin float Ymax float Zmin float Zmax set Xini to ( GetPos, X );prend les coordonnées initiales de la lumiere set Yini to ( getpos, Y ) set Zini to ( getpos, Z ) set CoteDuCube to 100 ;permet de changer la longueur du coté ;du cube dans lequel va bouger la lumière set Xmin to ( Xini - CoteDuCube ) ;rentre en variable les set Xmax to ( Xini + CoteDuCube ) ;coordonnées à ne pas depasser set Ymin to ( Yini - CoteDuCube ) set Ymax to ( Yini + CoteDuCube ) set Zmin to ( Zini - CoteDuCube ) set Zmax to ( Zini + CoteDuCube ) ; messagebox "lumiere initialisé " endif set DirectionEtSens to 0 ; donne une direction et un sens au mouvement de facon aleatoire. ; c'est ici le point crucial du programme: il faut que ; l'objet deplacé reste dans un cube if (random100 <= 16 ) ; bouger selon les x if ( (getpos, X) >= Xmin ) set DirectionEtSens to 1 endif elseif (random100 <= 32 ) if ( (getpos, X) <= Xmax ) set DirectionEtSens to 2 endif elseif (random100 <= 48 ) ;bouger selon les Y if ( (getpos, Y) >= Ymin ) set DirectionEtSens to 3 endif elseif (random100 <= 64 ) if ( (getpos, Y) <= Ymax ) set DirectionEtSens to 4 endif elseif (random100 <= 80 ) ;bouger selon les Z if ( (getpos, Z) >= Zmin ) set DirectionEtSens to 5 endif elseif (random100 <=100 ) if ( (getpos, Z ) <= Zmax ) set DirectionEtSens to 6 endif endif End PhMvtAletoire
Modifié par drakan, 11 avril 2010 - 10:26.