赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 8686 |
最后登录 | 2015-3-30 |
在线时间 | 99 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 99 小时
- 注册时间
- 2012-9-11
- 帖子
- 22
|
4楼
楼主 |
发表于 2013-7-5 16:02:16
|
只看该作者
首先感谢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 |
|