Expansión de las clases Bitmap y Font Para ambos maker en 1 script.
Descripción:
Bueno si bien he estado en las lindas ‘campañas’ anti-alias y blah blah blah, decidí hacer un script simple, y que por supuesto sea compatible con ambos makers sin modificar nada.
Asi nació este pequeño script que agrega unas cuantas funciones interesantes a las clases Font y Bitmap
Caracteristicas:
-Muchos recordarán que las letras en RM2k3 eran degradas, bueno ahora es posible con gradient_draw_text
-Es una herramienta de scripting, no un script ‘plug&play’
-Corrige el bug de la opcion vertical de VX y obiamente agrega “gradient_fill_rect” al XP.
- Da un efecto ‘cool a tus juegos’
- Y mucho más (típico de scripters que dejan misticismo)
Script:
#===========================================================================# ** Expansión de las clases Bitmap y Font [RMVX/RMXP]#—————————————————————————# por Ramiro# V 1.0#————————————————————————–# Notas:# Si se usa demasiado por escena puede generar bastante lag(en especial# la gradiente)#————————————————————————–# Algunos datos:# bug de gradient_fill_rect corregido(VX)# nuevós metodos:## Font# Font#outline=(booleano), permite lineas alrededor del texto(en VX desactiva# Font#automáticamente la sombrapara una mejor visualización)# Font#outline_color1=(Color) El color interior del borde# Font#outline_color2=(Color) El color exterior del borde## Bitmap## Bitmap#gradient_fill_rect(*argumentos) #[Agregado en XP]# Bitmap#gradient_draw_text(*argumentos) Revisar el método para saber su uso## PROHIBIDO PARA USO COMERCIAL#===========================================================================class Fontattr_accessorutline
attr_accessorutline_color1
attr_accessorutline_color2
alias fond_expand_initialize initializedef initializefond_expand_initialize@outline = true@outline_color1 = Color.new(0,0,0)@outline_color2 = Color.new(0,0,0,0)endendclass Bitmap#————————————————————————–# Bitmap#draw_text# correción para que acepte “outline” simple y/o doble#————————————————————————–alias org_draw_text draw_text if !method_defined?(‘org_draw_text’)def draw_text(*args)if args[0].is_a?(Rect)x = args[0].xy = args[0].yw = args[0].widthh = args[0].heighttext = args[1]aling = args[2] if args[2]elsex = args[0]y = args[1]w = args[2]h = args[3]text = args[4]aling = args[5] if args[5]endaling = 0 if !alingif font.outlineif font.respond_to?(“shadow”)shval = font.shadowfont.shadow = falseendcolor = font.color.clonefont.color = font.outline_color2org_draw_text(x-2,y-2,w,h,text,aling)org_draw_text(x,y-2,w,h,text,aling)org_draw_text(x-2,y,w,h,text,aling)org_draw_text(x+2,y+2,w,h,text,aling)org_draw_text(x-2,y+2,w,h,text,aling)org_draw_text(x+2,y-2,w,h,text,aling)org_draw_text(x+2,y,w,h,text,aling)org_draw_text(x,y+2,w,h,text,aling)font.color = font.outline_color1org_draw_text(x-1,y-1,w,h,text,aling)org_draw_text(x,y-1,w,h,text,aling)org_draw_text(x-1,y,w,h,text,aling)org_draw_text(x+1,y+1,w,h,text,aling)org_draw_text(x-1,y+1,w,h,text,aling)org_draw_text(x+1,y-1,w,h,text,aling)org_draw_text(x+1,y,w,h,text,aling)org_draw_text(x,y+1,w,h,text,aling)font.color = color.clonefont.shadow = shval if shvalendorg_draw_text(*args)end#————————————————————————–# Bitmap#Gradient Fill Rect# los parmátros son identicos a Gradient_fill_rect de VX,# cualquier duda referirse a su documentación# (Se le ha agregado una corrección al bug de “vertical”)#————————————————————————–def gradient_fill_rect(*args)if args[0].is_a?(Rect)x = args[0].xy = args[0].yw = args[0].widthh = args[0].heightc1 = args[1]c2 = args[2]v = args[3]elsex = args[0]y = args[1]w = args[2]h = args[3]c1 = args[4]c2 = args[5]v = args[6]endv = false if !vcolor_tones = []if vfor i in 0…hr = c1.red * (h – i) / h + c2.red * i / hg = c1.green * (h – i) / h + c2.green * i / hb = c1.blue * (h – i) / h + c2.blue * i / ha = c1.alpha * (h – i) / h + c2.alpha * i / hfill_rect(Rect.new(x,y+i,w,1),Color.new(r,g,b,a))endelsefor i in 0…wr = c1.red * (w – i) / w + c2.red * i / wg = c1.green * (w – i) / w + c2.green * i / wb = c1.blue * (w – i) / w + c2.blue * i / wa = c1.alpha * (w – i) / w + c2.alpha * i / wfill_rect(Rect.new(x+i,y,1,h),Color.new(r,g,b,a))endendend#————————————————————————–# Bitmap#gradient_draw_text## Argumentos:## Rect,name,color1,color2,aling,vertical# x,y,width.height,text,color1,color2,aling,vertical# Rect, x, y, width,height, text y aling funcionan igual que el draw_text# convencional## Datos que varian:# color1 = Color inicial del degradado# color2 = Color Final del degradado# vertical: si es true el degrado es vertical, sino horizontal## – Parametrtos por defecto:## aling = 0# vertical = false##————————————————————————–# ¡Atención!## Requiere conocimientos básicos del Bitmap#draw_text del rpg maker.#————————————————————————–def gradient_draw_text(*args)if args[0].is_a?(Rect)x = args[0].xy = args[0].yw = args[0].widthh = args[0].heighttext = args[1]color1 = args[2]color2 = args[3]aling = args[4] if args[4]vertical = args[5] if args[5]elsex = args[0]y = args[1]w = args[2]h = args[3]text = args[4]color1 = args[5]color2 = args[6]aling = args[7] if args[7]vertical = args[8] if args[8]endaling = 0 if !alingvertical = false if !verticaltext_bmp = Bitmap.new(w,h)text_bmp.font.name = font.nametext_bmp.font.size = font.sizetext_bmp.font.shadow = false if text_bmp.font.respond_to?(“shadow”)text_bmp.font.outline = false if text_bmp.font.respond_to?(“outline”)text_bmp.font.border = false if text_bmp.font.respond_to?(“border”)text_bmp.font.bold = font.boldtext_bmp.font.italic = font.italictext_bmp.draw_text(0,0,w,h,text,aling)gradient_bmp = Bitmap.new(w,h)gradient_bmp.gradient_fill_rect(0, 0, w, h, color1, color2, vertical)for x2 in 0…wfor y2 in 0…halpha_txt = text_bmp.get_pixel(x2,y2).alphaif alpha_txt > 0c = gradient_bmp.get_pixel(x2,y2)c.alpha = alpha_txttext_bmp.set_pixel(x2,y2,c)endendenddraw_text(x,y,w,h,text,aling)blt(x,y,text_bmp,Rect.new(0,0,w,h))endend
Screens:
Soy bueno y les dejó un preview de lo que se puede lograr con este código, y sin mucho esfuerzo si sabes las bases de ruby:

Mostrabdo lo que hace el script
Y el miniscript que lo logra(probado en VX, pero deberia funcionar en XP):
class Window_Base#————————————————————————–# * Draw Name# actor : actor# x : draw spot x-coordinate# y : draw spot y-coordinate#————————————————————————–def draw_actor_name(actor, x, y)contents.gradient_draw_text(x,y,108,WLH,actor.name,Color.new(255,0,0),Color.new(0,255,0),0,false)endend
Advertisement
Selkie's forest
Vgvgf's blog
muy bueno, no se esperava menos de ti xD muy buen aporte ^^
Por: Cloud Srtife el 18 julio, 2010
a las 1:04 AM