Forum d'entraide à la création de jeux d'aventure
 
PortailAccueilFAQRechercherS'enregistrerMembresConnexion

Partagez | 
 

 FX : il neige ! (AGS 3.

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
avatar

Nombre de messages : 1431

Age : 42

Date d'inscription : 20/10/2006


MessageSujet: FX : il neige ! (AGS 3.   Jeu 18 Déc 2008 - 9:03

Voici une technique pour faire de la neige sans utiliser un module. On peut voir le resultat dans le Indiana Jones.
Y a peut-être plus simple (et plus propre), mais çà marche ! :ihih:
Ca peut facilement s'adapter pour faire de la pluie.

Dans le GlobalScript.ash
*** Declaration de variables globales ***
Code:

import int nb_flocons;
import int flocon_x[1000]; // absisse
import int flocon_y[1000]; // ordonnée
import int flocon_s[1000]; // vitesse
import int flocon_c[1000]; // couleur
import DrawingSurface *surface;
import DrawingSurface *backup;
import int flocons_i;
import int tempo;

Dans le script de la Room ou il neige (fonction Enter Room before fading) :
*** Initialisation des variables ***
Code:

function room_Load()
{
  nb_flocons = 500; // nombre de flocons (1000 maxi)
  tempo = 0;
  flocons_i = 0;
  while (flocons_i < nb_flocons) {
      flocon_x[flocons_i] = Random(320);
      flocon_y[flocons_i] = Random(144);
      flocon_s[flocons_i] = Random(5)+1;
      // la couleur des flocons est en fonction de leur vitesse
      if (flocon_s[flocons_i] == 1) flocon_c[flocons_i] = 200;
      if (flocon_s[flocons_i] == 2) flocon_c[flocons_i] = 210;
      if (flocon_s[flocons_i] == 3) flocon_c[flocons_i] = 225;
      if (flocon_s[flocons_i] == 4) flocon_c[flocons_i] = 230;
      if (flocon_s[flocons_i] == 5) flocon_c[flocons_i] = 245;
      if (flocon_s[flocons_i] == 6) flocon_c[flocons_i] = 255;
      flocons_i++;
  }
  surface = Room.GetDrawingSurfaceForBackground();
  backup = surface.CreateCopy();
}

Dans le GlobalScript.asc, tout en haut :
Code:

int nb_flocons;
export nb_flocons;
int flocon_x[1000];
export flocon_x;
int flocon_y[1000];
export flocon_y;
int flocon_s[1000];
export flocon_s;
int flocon_c[1000];
export flocon_c;
DrawingSurface *surface;
export surface;
DrawingSurface *backup;
export backup;
int flocons_i;
export flocons_i;
int tempo;
export tempo;

Toujours dans le GlobalScript.asc (ou on veut si la fonction repeatedly_execute_always n'a pas déjà été definie) :
*** On fait tomber chaque flocon de neige dans la fonction repeatedly_execute_always
Code:

function repeatedly_execute_always() {
  if (player.Room == ***NUMERO DE LA ROOM***) {
    tempo++;
    if (tempo >= 5) { // regle la vitesse générale de chutte de neige
      tempo = 0;
      surface = Room.GetDrawingSurfaceForBackground();
      surface.DrawSurface(backup);
      flocons_i = 0;
      while (flocons_i < nb_flocons) {
       
        bouge = Random(2); // mouvement horizontal
        if (bouge == 1) {
          flocon_x[flocons_i]++;
          if (flocon_x[flocons_i] >= 320) flocon_x[flocons_i] = 0;
        }
        if (bouge == 2) {
          flocon_x[flocons_i]--;
          if (flocon_x[flocons_i] < 0) flocon_x[flocons_i] = 319;
        }
       
        flocon_y[flocons_i] += flocon_s[flocons_i];
        if (flocon_y[flocons_i] >= 144) flocon_y[flocons_i] = 0; // 144 est le bas de l'écran
        surface.DrawingColor = Game.GetColorFromRGB(flocon_c[flocons_i], flocon_c[flocons_i], flocon_c[flocons_i]);     
        surface.DrawPixel(flocon_x[flocons_i] ,  flocon_y[flocons_i]);
        flocons_i++;
      }
      surface.Release();
    }
  }
}
Rempacer ***NUMERO DE LA ROOM*** par le numéro de la room ou il neige.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue
avatar

Nombre de messages : 5408

Age : 38

Localisation : Montpellier

Date d'inscription : 17/04/2006


MessageSujet: Re: FX : il neige ! (AGS 3.   Jeu 18 Déc 2008 - 11:07

Ah excellent ça ! Les modules neige/pluie dispos sur le site officiel ne marchent pas toujours très bien :sourire:
Notez toutefois que le module SimpleSnow vient d'être updaté pour AGS 3 et qu'il marche très bien et est très facile d'utilisation !
Bon il ne vaut pas le plugin SnowRain qui offrait un très beau résultat, mais malheureusement il ne marche qu'en mode 640x480 et avec les anciennes versions d'AGS... :pleure:

_________________
Mon profil Facebook!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
pilpoil
Cliqueur Amateur
Cliqueur Amateur
avatar

Nombre de messages : 227

Localisation : Québec!

Date d'inscription : 05/01/2009


MessageSujet: Re: FX : il neige ! (AGS 3.   Mar 6 Jan 2009 - 22:51

Je ne sais pas si c'est moi qui a fait une erreur ou une bêtise, mais le script ne fonctionne pas car AGS ne prend pas en charge le mot 'bouge'.
Est-ce que j'ai fait quelque chose de pas correct? :??:
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 2479

Date d'inscription : 01/08/2006


MessageSujet: Re: FX : il neige ! (AGS 3.   Mar 6 Jan 2009 - 23:01

Effectivement il semble y avoir un problème : "bouge" apparaît pour la première fois à la ligne bouge = Random(2); // mouvement horizontal, son type n'y est pas spécifié. AGS l'analyse donc comme un mot-clé, qu'il ne connaît évidemment pas.

Il faut donc remplacer cette ligne par celle-ci :
Code:
int bouge = Random(2); // mouvement horizontal
Remarque toutefois que Asraroth a fait de ce code un module disponible ici, et sur lequel il travaille encore pour l'améliorer. :sourire:

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
pilpoil
Cliqueur Amateur
Cliqueur Amateur
avatar

Nombre de messages : 227

Localisation : Québec!

Date d'inscription : 05/01/2009


MessageSujet: Re: FX : il neige ! (AGS 3.   Mer 7 Jan 2009 - 0:24

Ah d'accord merci Kitai je ne le savais pas!
Et félicitations Asraroth le résultat est super!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: FX : il neige ! (AGS 3.   

Revenir en haut Aller en bas
 
FX : il neige ! (AGS 3.
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Event RP-PVP : Du sang dans la neige.
» Module "pluie / neige"
» Le Village de la Neige
» Bonté divine "il neige"!!!!
» décor neige

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Trucs & Astuces, Tutoriaux-
Sauter vers: