Forum de la team Aurora |
| | Les bricoles de tonton Mimiman! | |
| | Auteur | Message |
---|
Mimiman
Nombre de messages : 11 Age : 33 Localisation : campagne perdu Date d'inscription : 11/09/2007
Point de Travail / PT Points de Travail / PT: (150/5000)
| Sujet: Les bricoles de tonton Mimiman! Jeu 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: 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) | |
| | | Mimiman
Nombre de messages : 11 Age : 33 Localisation : campagne perdu Date d'inscription : 11/09/2007
Point de Travail / PT Points de Travail / PT: (150/5000)
| Sujet: Re: Les bricoles de tonton Mimiman! Jeu 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: 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. | |
| | | NooByOne_KeNooBy
Nombre de messages : 68 Age : 36 Localisation : Marseille Date d'inscription : 07/08/2007
Point de Travail / PT Points de Travail / PT: (5000/5000)
| Sujet: Re: Les bricoles de tonton Mimiman! Jeu 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 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 + 150 PT | |
| | | Mimiman
Nombre de messages : 11 Age : 33 Localisation : campagne perdu Date d'inscription : 11/09/2007
Point de Travail / PT Points de Travail / PT: (150/5000)
| Sujet: Re: Les bricoles de tonton Mimiman! Jeu 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 ^^. | |
| | | NooByOne_KeNooBy
Nombre de messages : 68 Age : 36 Localisation : Marseille Date d'inscription : 07/08/2007
Point de Travail / PT Points de Travail / PT: (5000/5000)
| Sujet: Re: Les bricoles de tonton Mimiman! Jeu 13 Sep - 20:14 | |
| Effectivement, au plus tu apprendra, au plus tu risque d'être éfficace 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 ) | |
| | | Mimiman
Nombre de messages : 11 Age : 33 Localisation : campagne perdu Date d'inscription : 11/09/2007
Point de Travail / PT Points de Travail / PT: (150/5000)
| Sujet: Re: Les bricoles de tonton Mimiman! Jeu 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). | |
| | | superfabien
Nombre de messages : 39 Age : 32 Date d'inscription : 06/08/2007
Point de Travail / PT Points de Travail / PT: (5000/5000)
| Sujet: Re: Les bricoles de tonton Mimiman! Jeu 13 Sep - 20:29 | |
| Très intéressant tes script mi miman Merci pour le partage Je vais les tester ce soir | |
| | | Mimiman
Nombre de messages : 11 Age : 33 Localisation : campagne perdu Date d'inscription : 11/09/2007
Point de Travail / PT Points de Travail / PT: (150/5000)
| Sujet: Re: Les bricoles de tonton Mimiman! Sam 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 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) | |
| | | Contenu sponsorisé
| Sujet: Re: Les bricoles de tonton Mimiman! | |
| |
| | | | Les bricoles de tonton Mimiman! | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |
|