首先感谢rpgxs朋友的热心帮助,不过的确是因为破限脚本的问题,我是一个一个脚本删着试出来的。。。 我用的是方正粗圆字体,还使用了文字加强脚本,你可以试试。 脚本如下: #=============================================================================== # ■ Bitmap の draw_text を改造して ゴージャスな感じにします。 #----------------------------------------------------------------------------- # ☆ 製作者 たねQ # # ☆ 利用規約 # 1 製作中のゲームに スクリプト素材として導入する → ○ # 2 個人(又は製作グループ)によって 当スクリプトを書き換えて使用する → ○ # 3 他人に 当スクリプトの改造を 依頼する → △ # 相手の方に 迷惑をかけないように お願いします # 4 素材として 再配布(又は転載)する → × # 改造したものであれば → ○ # その場合は 元のスクリプトの製作者が たねQであることを明記してください。 # # 改造等をせずに このままで使用される方は # スタッフロール等に 名前を載せる義務はありません。 # が スタッフロール等に 名前を載せてもいいよ という方は「たねQ」でお願いします。 # #----------------------------------------------------------------------------- # 当スクリプトは 完全ぶち込み型のため # 導入するだけで 自動的に 縁取り&グラデエーション文字になります。 # ただし グラデーションの開始色が 白で固定してあるので # 描画色が 白の時は グラデーションしませんのでアシカラズ。 #=============================================================================== class Bitmap Font.default_shadow = true # 元処理をエイリアス 前处理别名 alias org_draw_text draw_text unless $! def draw_text(*n) if n[0].is_a?(Rect) draw_text_type_a(*n) else draw_text_type_b(*n) end if (font.color.red == 255.0) and (font.color.green == 255.0) and (font.color.blue == 255.0) org_draw_text(*n) else gradient_draw_text(*n) end end # 縁部分の描画(引数に矩形を渡した時) 边缘部分,绘图(关于矩形给了点) def draw_text_type_a(rect, text, align = 0) rect.x = rect.x + 5 if rect.x == 0 temp = Bitmap.new(rect.width, rect.height) temp.font = font.dup maxi = [font.color.red, font.color.green, font.color.blue].max mini = [font.color.red, font.color.green, font.color.blue].min if maxi == mini if maxi > 127 temp.font.color = Color.new(25, 25, 112) #边缘色 else temp.font.color = Color.new(255, 255, 255) end else m = maxi > 127 ? 48 : 255 l = maxi > 127 ? 0 : 128 c = maxi > 127 ? 24 : 192 temp.font.color.red = font.color.red == maxi ? m : font.color.red == mini ? l : c temp.font.color.green = font.color.green == maxi ? m : font.color.green == mini ? l : c temp.font.color.blue = font.color.blue == maxi ? m : font.color.blue == mini ? l : c end temp.org_draw_text(0, 0, rect.width, rect.height, text, align) temp.blur blt(rect.x, rect.y - 1, temp, temp.rect, font.color.alpha) blt(rect.x - 1, rect.y, temp, temp.rect, font.color.alpha) blt(rect.x + 1, rect.y, temp, temp.rect, font.color.alpha) blt(rect.x, rect.y + 1, temp, temp.rect, font.color.alpha) temp.dispose end # 縁部分の描画(引数に矩形をバラで渡した時) def draw_text_type_b(x, y, width, height, text, align = 0) x = x + 1 if x == 0 width = 32 if width <= 0 temp = Bitmap.new(width, height) temp.font = font.dup maxi = [font.color.red, font.color.green, font.color.blue].max mini = [font.color.red, font.color.green, font.color.blue].min if maxi == mini if maxi > 127 temp.font.color = Color.new(0, 0, 0) else temp.font.color = Color.new(255, 255, 255) end else m = maxi > 127 ? 48 : 255 l = maxi > 127 ? 0 : 128 c = maxi > 127 ? 24 : 192 temp.font.color.red = font.color.red == maxi ? m : font.color.red == mini ? l : c temp.font.color.green = font.color.green == maxi ? m : font.color.green == mini ? l : c temp.font.color.blue = font.color.blue == maxi ? m : font.color.blue == mini ? l : c end #~ temp.org_draw_text(0, 0, width, height, text, align) #修复游戏内存导致崩溃 #~ temp.blur blt(x, y - 1, temp, temp.rect, font.color.alpha) blt(x - 1, y, temp, temp.rect, font.color.alpha) blt(x + 1, y, temp, temp.rect, font.color.alpha) blt(x, y + 1, temp, temp.rect, font.color.alpha) temp.dispose end #~ # グラディエーション文字 def gradient_draw_text(*n) s = font.shadow #~ font.shadow = true org_draw_text(*n) font.shadow = s if n[0].is_a?(Rect) gradient_draw_text_type_a(*n) else gradient_draw_text_type_b(*n) end end #~ # 引数 A def gradient_draw_text_type_a(rect, text, align = 0) bmp = Bitmap.new(rect.width, rect.height) bmp.font = font.dup bmp.font.color = Color.new(255, 255, 255) bmp.org_draw_text(0, 0, rect.width, rect.height, text, align) d_r = Rect.new(0, 0, rect.width, 1) alpha = font.color.alpha for i in 0...rect.height d_r.y = i blt(rect.x, rect.y + i, bmp, d_r, alpha - alpha / rect.height * i) end bmp.dispose end #~ # 引数 B def gradient_draw_text_type_b(x, y, width, height, text, align = 0) bmp = Bitmap.new(width, height) bmp.font = font.dup bmp.font.color = Color.new(255, 255, 255) bmp.org_draw_text(0, 0, width, height, text, align) d_r = Rect.new(0, 0, width, 1) alpha = font.color.alpha for i in 0...height d_r.y = i blt(x, y + i, bmp, d_r, alpha - alpha / height * i) end bmp.dispose end end |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-18 10:20
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.