Aurora Team
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


Forum de la team Aurora
 
AccueilRechercherDernières imagesS'enregistrerConnexion
-21%
Le deal à ne pas rater :
LEGO® Icons 10329 Les Plantes Miniatures, Collection Botanique
39.59 € 49.99 €
Voir le deal

 

 Les bricoles de tonton Mimiman!

Aller en bas 
3 participants
AuteurMessage
Mimiman




Masculin
Nombre de messages : 11
Age : 33
Localisation : campagne perdu
Date d'inscription : 11/09/2007

Point de Travail / PT
Points de Travail / PT:
Les bricoles de tonton Mimiman! Left_bar_bleue150/5000Les bricoles de tonton Mimiman! Empty_bar_bleue  (150/5000)

Les bricoles de tonton Mimiman! Empty
MessageSujet: Les bricoles de tonton Mimiman!   Les bricoles de tonton Mimiman! Icon_minitimeJeu 13 Sep - 9:43

Tout le monde aime personnalisé son jeu? Logique, seulement copié plein de script par ci par là n'est pas toujours facile (on trouve pas ce qu'on veut, ce n'est pas forcément conpatible, etc).

C'est ici que j'arrive ^^, mon "projet" est de crée plein de mini-script qui rajoute des options au RGSS pour personnalisé son jeu.

J'essairais de posté des scripts régulièrement, au moin (j'espère) un par semaine.

Je le mets dans projet car je vois pas où le mettre d'autre, il y a pas de section pour poster ses scripts ^^.

D'abord copié ce script dans votre projet, c'est une base qui modifie/crée des fonctions au ruby (pour plus de possibilité et de rapidité)

Code:
module DegMath
  @cos=[]
  @sin=[]
  @tan=[]
  for i in 0...360
    @cos.push(Math.cos(i*Math::PI/180))
    @sin.push(Math.sin(i*Math::PI/180))
    @tan.push(Math.tan(i*Math::PI/180))
  end
  def self.cos(x)
    Math.cos(x*Math::PI/180) if x != x.to_i
    while x < 0
      x += 360
    end
    return @cos[x%360]
  end
  def self.sin(x)
    Math.sin(x*Math::PI/180) if x != x.to_i
    while x < 0
      x += 360
    end
    return @sin[x%360]
  end
  def self.tan(x)
    Math.tan(x*Math::PI/180) if x != x.to_i
    while x < 0
      x += 360
    end
    return @tan[x%360]
  end
  def self.acos(x)
    n = @cos.index(x)
    n = Math.acos(x)/Math::PI*180 if n == nil
    return n
  end
  def self.asin(x)
    n = @sin.index(x)
    n = Math.asin(x)/Math::PI*180 if n == nil
    return n
  end
  def self.atan(x)
    return @tan.index(x)
    n = Math.atan(x)/Math::PI*180 if n == nil
    return n
  end
end
class Numeric
  def sign
    return self/self.abs
  end
end

Sinon pour commencé voici un script qui permet de dessiner plusieur formes sur les objet Bitmap (donc par exemple les fenêtres)

Screen:
Les bricoles de tonton Mimiman! Bricole1qb4.th

Script(s):
Code:
class Bitmap
  def draw_circle(x,y,r,c)
    if r == 0
      self.set_pixel(x,y,c)
      return
    end
    for i in 0...(r*8)
      ang = ((90.0/(r*2))*i)
      x2 = x+DegMath.cos(ang)*r
      y2 = y+DegMath.sin(ang)*r
      self.set_pixel(x2.round,y2.round,c)
    end
  end
 
  def draw_line(x1,y1,x2,y2,color)
    dif_x = x2-x1
    dif_y = y2-y1
    if dif_x == 0
      xf = (x1<x2 ? x1 : x2)
      yf = (y1<y2 ? y1 : y2)
      self.fill_rect(xf,yf,1,dif_y.abs,color)
      return
    end
    if dif_y == 0
      xf = (x1<x2 ? x1 : x2)
      yf = (y1<y2 ? y1 : y2)
      self.fill_rect(xf,yf,dif_x.abs,1,color)
      return
    end
    if dif_x.abs == dif_y.abs
      for i in 0...dif_x.abs
        self.set_pixel(x1+i*dif_x.sign,y1+i*dif_y.sign,color)
      end
      return
    end
    if dif_x.abs > dif_y.abs
      coef = dif_x.abs.to_f/dif_y.abs
      if coef != 0
        for i in 0...dif_x.abs
          xf = x1+i*dif_x.sign
          yf = (y1+(i*dif_y.sign)/coef).to_i
          self.set_pixel(xf,yf,color)
        end
      end
      return
    end
    if dif_x.abs < dif_y.abs
      coef = dif_y.abs.to_f/dif_x.abs
      if coef != 0
        for i in 0...dif_y.abs
          xf = (x1+(i*dif_x.sign)/coef).to_i
          yf = y1+i*dif_y.sign
          self.set_pixel(xf,yf,color)
        end
      end
      return
    end
  end
 
  def draw_rect(x,y,w,h,color)
    self.fill_rect(x,y,w,1,color)
    self.fill_rect(x,y,1,h,color)
    self.fill_rect(x+w,y,1,h,color)
    self.fill_rect(x,y+h,w+1,1,color)
  end
 
  def draw_polygon(points,color)
    for i in 0...points.size
      j = (i+1)%points.size
      draw_line(points[i][0],points[i][1],points[j][0],points[j][1],color)
    end
  end
end

Avec ce script vous pouvez dessiner des cercles, des lignes, des rectangles et des polygone quelqu'onque, bon forcément vide, je sais pas les remplirs ^^.

Aussi, tous ceux qui savent scripter (même un petit peu) et qui ont un script dans le genre, qu'ils le postent, pareil si vous avez des idées.(Attention: demandé pas des scripts trop compliqué, je ne ferais que ceux rapide, j'ai pas le temps pour autre chose)
Revenir en haut Aller en bas
http://aucun.fr
Mimiman




Masculin
Nombre de messages : 11
Age : 33
Localisation : campagne perdu
Date d'inscription : 11/09/2007

Point de Travail / PT
Points de Travail / PT:
Les bricoles de tonton Mimiman! Left_bar_bleue150/5000Les bricoles de tonton Mimiman! Empty_bar_bleue  (150/5000)

Les bricoles de tonton Mimiman! Empty
MessageSujet: Re: Les bricoles de tonton Mimiman!   Les bricoles de tonton Mimiman! Icon_minitimeJeu 13 Sep - 9:58

Barre:

Ce script permet de dessiner des barres verticale ou horizontale, de la ou les couleur(s) qu'on veut
Screen:
Les bricoles de tonton Mimiman! Arcencielxj3

Script(s):
Code:
class Bitmap
  def draw_vertical_bar(x,y,h,color,coef_diag = 1)
    w = 20
    case color
    when Color
      for i in 0...w
        h2 = h+(coef_diag<0 ? i*coef_diag : i*coef_diag-w*coef_diag)
        self.fill_rect(x+i,y-h2,1,h2,color)
      end
    when Array
      case color.size
      when 1
        for i in 0...w
          h2 = h+(coef_diag<0 ? i*coef_diag : i*coef_diag-w*coef_diag)
          self.fill_rect(x+i,y-h2,1,h2,color[0])
        end
      else
        w2 = w/(color.size-1)
        for j in 0...(color.size-1)
          for i in (w2*j)...(w2*(j+1))
            h2 = h+(coef_diag<0 ? i*coef_diag : i*coef_diag-w*coef_diag)
            red = ((color[j].red-color[j+1].red)/w2)*(i-(w2*j))
            green = ((color[j].green-color[j+1].green)/w2)*(i-(w2*j))
            blue = ((color[j].blue-color[j+1].blue)/w2)*(i-(w2*j))
            fcolor = Color.new(color[j].red-red,color[j].green-green,color[j].blue-blue)
            self.fill_rect(x+i,y-h2,1,h2,fcolor)
          end
        end
      end
    end
  end
 
  def draw_horizontal_bar(x,y,w,color,coef_diag = 1)
    h = 20
    case color
    when Color
      for i in 0...h
        w2 = w+(coef_diag<0 ? i*coef_diag : i*coef_diag-h*coef_diag)
        self.fill_rect(x+w2,y+i,1,h2,color)
      end
    when Array
      case color.size
      when 1
        for i in 0...w
          w2 = w+(coef_diag<0 ? i*coef_diag : i*coef_diag-h*coef_diag)
          self.fill_rect(x+w2,y+i,1,h2,color)
        end
      else
        h2 = h/(color.size-1)
        for j in 0...(color.size-1)
          for i in (h2*j)...(h2*(j+1))
            w2 = w+(coef_diag<0 ? i*coef_diag : i*coef_diag-h*coef_diag)
            red = ((color[j].red-color[j+1].red)/w2)*(i-(w2*j))
            green = ((color[j].green-color[j+1].green)/w2)*(i-(w2*j))
            blue = ((color[j].blue-color[j+1].blue)/w2)*(i-(w2*j))
            fcolor = Color.new(color[j].red-red,color[j].green-green,color[j].blue-blue)
            self.fill_rect(x+w2,y+i,1,h2,color)
          end
        end
      end
    end
  end
end

Pour s'en servir voici le mode d'emploie:
Choisissez la fonction à utiliser:
draw_vertical_bar()
draw_horizontal_bar()
pour choisir le sens (vertical,horizontal) de la barre

Entre parenthèse mettez, dans cette ordre!,
la coordonnée X,
la coordonnée Y,
la largeur de la barre,
la (les) couleur(s),
la façon dont la barre est coupé au bout.

Sur le screen le découpage est à 1 ce nombre peut avoir n'importe qu'elle valeur (décimal, négatif, positif, nulle, etc)

Pour les couleurs, sa marche la classe Color.
Si vous voulez une barre avec une couleur vous mettez:
Color.new(r,v,b)
Si vous voulez plusieur couleur vous devez faire un tableau de couleur:
[Color.new(r,v,b),Color.new(r,v,b),Color.new(r,v,b),...]

Où r,v et b sont les doses de rouge, vert et bleu.

Voila, je crois avoir tout dit.

Si vous avez des questions n'hésitez pas car je sais que c'est pas simple à comprendre.
Revenir en haut Aller en bas
http://aucun.fr
NooByOne_KeNooBy

NooByOne_KeNooBy


Masculin
Nombre de messages : 68
Age : 36
Localisation : Marseille
Date d'inscription : 07/08/2007

Point de Travail / PT
Points de Travail / PT:
Les bricoles de tonton Mimiman! Left_bar_bleue5000/5000Les bricoles de tonton Mimiman! Empty_bar_bleue  (5000/5000)

Les bricoles de tonton Mimiman! Empty
MessageSujet: Re: Les bricoles de tonton Mimiman!   Les bricoles de tonton Mimiman! Icon_minitimeJeu 13 Sep - 14:15

Il n'y a pas de section script parceque je voulais pas concurencer ou copier les sites de rpg making, le forum aurora étant destiné a l'équipe et aux fans/amis.

Mais je vais regler le probleme, je trouverai une solution Smile

Sinon bah j'ai vu cosinus marqué quelque part ! Il m'est venu des boutons dis donc ! Depuis 3 ans que j'ai pas touché au maths...

Tes scripts sont très sympa, je vais essayer de les tester ce soir si j'ai le temps, sinon bah merci du partage, c'est cool de ta part Smile

+ 150 PT
Revenir en haut Aller en bas
https://aurora-team.forumgaming.fr
Mimiman




Masculin
Nombre de messages : 11
Age : 33
Localisation : campagne perdu
Date d'inscription : 11/09/2007

Point de Travail / PT
Points de Travail / PT:
Les bricoles de tonton Mimiman! Left_bar_bleue150/5000Les bricoles de tonton Mimiman! Empty_bar_bleue  (150/5000)

Les bricoles de tonton Mimiman! Empty
MessageSujet: Re: Les bricoles de tonton Mimiman!   Les bricoles de tonton Mimiman! Icon_minitimeJeu 13 Sep - 19:51

Citation :
Il n'y a pas de section script parceque je voulais pas concurencer ou copier les sites de rpg making, le forum aurora étant destiné a l'équipe et aux fans/amis.

C'est pas avec un scripteur que tu vas concurencer qui que ce soit ^^.
Et pouvoir partager nos création entre membre de la team serait une bonne idée, donc dedans ce serait les création perso (rien pris autre part)

Ah les math, grande phobie de l'homme ^^, tu me crois si je te dis que mon père ne punie plus au math depuis que j'en ai redemander? Que l'année dernière j'avais déjà apris des choses de première et même peut-être de terminal? ^^ Juste pour le plaisir ^^!
Oui je suis fou (ou peut-être maso) mais c'est moi ^^.

C'est normal, si je peux me rendre utile je le fais ^^.
Revenir en haut Aller en bas
http://aucun.fr
NooByOne_KeNooBy

NooByOne_KeNooBy


Masculin
Nombre de messages : 68
Age : 36
Localisation : Marseille
Date d'inscription : 07/08/2007

Point de Travail / PT
Points de Travail / PT:
Les bricoles de tonton Mimiman! Left_bar_bleue5000/5000Les bricoles de tonton Mimiman! Empty_bar_bleue  (5000/5000)

Les bricoles de tonton Mimiman! Empty
MessageSujet: Re: Les bricoles de tonton Mimiman!   Les bricoles de tonton Mimiman! Icon_minitimeJeu 13 Sep - 20:14

Effectivement, au plus tu apprendra, au plus tu risque d'être éfficace Very Happy

J'en attends pas moins de toi miminounet.

Par contre, n'oublie pas, le co-scripteur nouveau venu, Lloyd25 ( totoooooooooooo )

Allez bises ( je te prépare des schémas pour script )
Revenir en haut Aller en bas
https://aurora-team.forumgaming.fr
Mimiman




Masculin
Nombre de messages : 11
Age : 33
Localisation : campagne perdu
Date d'inscription : 11/09/2007

Point de Travail / PT
Points de Travail / PT:
Les bricoles de tonton Mimiman! Left_bar_bleue150/5000Les bricoles de tonton Mimiman! Empty_bar_bleue  (150/5000)

Les bricoles de tonton Mimiman! Empty
MessageSujet: Re: Les bricoles de tonton Mimiman!   Les bricoles de tonton Mimiman! Icon_minitimeJeu 13 Sep - 20:26

Ah un esclave pour faire tout le boulot à ma place, mais c'est génial ^^.

Sinon j'attends tes schémas.

Pour le sujet de ce topic, le prochain permettera de faire des effets sur le texte, j'en avais déjà fait un pour le projet mais je vais en refaire un de 0 et essayer de l'optimiser (plus d'effet pour moin de puissance consommée).
Revenir en haut Aller en bas
http://aucun.fr
superfabien

superfabien


Masculin
Nombre de messages : 39
Age : 32
Date d'inscription : 06/08/2007

Point de Travail / PT
Points de Travail / PT:
Les bricoles de tonton Mimiman! Left_bar_bleue5000/5000Les bricoles de tonton Mimiman! Empty_bar_bleue  (5000/5000)

Les bricoles de tonton Mimiman! Empty
MessageSujet: Re: Les bricoles de tonton Mimiman!   Les bricoles de tonton Mimiman! Icon_minitimeJeu 13 Sep - 20:29

Très intéressant tes script mimiman Exclamation

Merci pour le partage Wink

Je vais les tester ce soir Smile
Revenir en haut Aller en bas
https://aurora-team.forumgaming.fr
Mimiman




Masculin
Nombre de messages : 11
Age : 33
Localisation : campagne perdu
Date d'inscription : 11/09/2007

Point de Travail / PT
Points de Travail / PT:
Les bricoles de tonton Mimiman! Left_bar_bleue150/5000Les bricoles de tonton Mimiman! Empty_bar_bleue  (150/5000)

Les bricoles de tonton Mimiman! Empty
MessageSujet: Re: Les bricoles de tonton Mimiman!   Les bricoles de tonton Mimiman! Icon_minitimeSam 15 Sep - 9:31

Modif du script des dessins pour une interpolation (les mots compliqué font croire qu'on est bon donc j'en profite ^^) des couleurs façon openGL et autre gros module graphique.

Code:
class Bitmap
  def avancee(a,b,t,i)
    dist = b-a
    return a+dist/t.to_f.abs*i
  end
 
  def draw_circle(x,y,r,color)
    if r == 0
      if color.is_a?(Array)
        c = color[0]
      else
        c = color
      end
      self.set_pixel(x,y,c)
      return
    end
    for i in 0...(r*8)
      ang = ((90.0/(r*2))*i)
      x2 = x+DegMath.cos(ang)*r
      y2 = y+DegMath.sin(ang)*r
      if color.is_a?(Array)
        if i < r*4
          c = Color.new(0,0,0)
          c.red = avancee(color[0].red,color[1].red,r*4,i)
          c.green = avancee(color[0].green,color[1].green,r*4,i)
          c.blue = avancee(color[0].blue,color[1].blue,r*4,i)
          c.alpha = avancee(color[0].alpha,color[1].alpha,r*4,i)
        else
          c = Color.new(0,0,0)
          c.red = avancee(color[1].red,color[0].red,r*4,i-r*4)
          c.green = avancee(color[1].green,color[0].green,r*4,i-r*4)
          c.blue = avancee(color[1].blue,color[0].blue,r*4,i-r*4)
          c.alpha = avancee(color[1].alpha,color[0].alpha,r*4,i-r*4)
        end
      else
        c = color
      end
      self.set_pixel(x2.round,y2.round,c)
    end
  end
 
  def draw_line(x1,y1,x2,y2,color)
    dif_x = x2-x1
    dif_y = y2-y1
    if dif_x == 0
      yf = (y1<y2 ? y1 : y2)
      for i in 0...dif_y.abs
        if color.is_a?(Array)
          c = Color.new(0,0,0)
          c.red = avancee(color[0].red,color[1].red,dif_y,i)
          c.green = avancee(color[0].green,color[1].green,dif_y,i)
          c.blue = avancee(color[0].blue,color[1].blue,dif_y,i)
          c.alpha = avancee(color[0].alpha,color[1].alpha,dif_y,i)
        else
          c = color
        end
        self.set_pixel(x1,y1+i*dif_y.sign,c)
      end
      return
    end
    if dif_y == 0
      xf = (x1<x2> dif_y.abs
      coef = dif_x.abs.to_f/dif_y.abs
      if coef != 0
        for i in 0...dif_x.abs
          xf = x1+i*dif_x.sign
          yf = (y1+(i*dif_y.sign)/coef).to_i
          if color.is_a?(Array)
            c = Color.new(0,0,0)
            c.red = avancee(color[0].red,color[1].red,dif_x,i)
            c.green = avancee(color[0].green,color[1].green,dif_x,i)
            c.blue = avancee(color[0].blue,color[1].blue,dif_x,i)
            c.alpha = avancee(color[0].alpha,color[1].alpha,dif_x,i)
          else
            c = color
          end
          self.set_pixel(xf,yf,c)
        end
      end
      return
    end
    if dif_x.abs < dif_y.abs
      coef = dif_y.abs.to_f/dif_x.abs
      if coef != 0
        for i in 0...dif_y.abs
          xf = (x1+(i*dif_x.sign)/coef).to_i
          yf = y1+i*dif_y.sign
          if color.is_a?(Array)
            c = Color.new(0,0,0)
            c.red = avancee(color[0].red,color[1].red,dif_y,i)
            c.green = avancee(color[0].green,color[1].green,dif_y,i)
            c.blue = avancee(color[0].blue,color[1].blue,dif_y,i)
            c.alpha = avancee(color[0].alpha,color[1].alpha,dif_y,i)
          else
            c = color
          end
          self.set_pixel(xf,yf,c)
        end
      end
      return
    end
  end
 
  def draw_rect(x,y,w,h,color)
    self.fill_rect(x,y,w,1,color)
    self.fill_rect(x,y,1,h,color)
    self.fill_rect(x+w,y,1,h,color)
    self.fill_rect(x,y+h,w+1,1,color)
  end
 
  def draw_polygon(points,color)
    for i in 0...points.size
      j = (i+1)%points.size
      if color.is_a?(Array)
        c = [color[i],color[j]]
      else
        c = color
      end
      draw_line(points[i][0],points[i][1],points[j][0],points[j][1],c)
    end
  end
end

Les bricoles de tonton Mimiman! Bricole12rw6.th

Voila, donc c'est juste une mise à jour.

PS:Je préfert prévenir, l'utilisation du dégradé est EXTREMENT lente, c'est à utiliser le moin possible ou en tout cas pas en temps réel (c'est un peu comme pour l'écriture d'un texte, c'est pas à faire toutes les frames)
Revenir en haut Aller en bas
http://aucun.fr
Contenu sponsorisé





Les bricoles de tonton Mimiman! Empty
MessageSujet: Re: Les bricoles de tonton Mimiman!   Les bricoles de tonton Mimiman! Icon_minitime

Revenir en haut Aller en bas
 
Les bricoles de tonton Mimiman!
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Mimiman

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Aurora Team :: Vie du forum :: Votre projet-
Sauter vers: