Project1

标题: RMXP用的Font.shadow[已修BUG] [打印本页]

作者: david50407    时间: 2009-1-2 06:19
标题: RMXP用的Font.shadow[已修BUG]
感謝"后知后觉"大大回報
我修改了下,謝謝

---------------------------------------------

因為VX裡有Font.shadow的功能,使得文字看起來更漂亮
但是XP裡卻沒有,所以就自己寫了個


  1. class Font
  2.   #設定預設值
  3.   @default_shadow = true
  4.   @shadow = @default_shadow
  5.   def default_shadow
  6.     @default_shadow = true if @default_shadow == nil
  7.     return @default_shadow
  8.   end
  9.   def default_shadow=(shadow)
  10.     @default_shadow = shadow
  11.   end
  12.   def shadow
  13.     @shadow = self.default_shadow if @shadow == nil
  14.     return @shadow
  15.   end
  16.   def shadow=(shadow)
  17.     @shadow = shadow
  18.   end
  19. end

  20. class Bitmap
  21.   alias old_draw_text draw_text unless $font_shadow_changed.nil?
  22.   $font_shadow_changed = true
  23.   def draw_text(*args)
  24.     shadow = false
  25.     shadow = true if (self.font.shadow == true)
  26.     if args.size < 4
  27.       args[2] = 0 if args.size == 2
  28.       if shadow == true
  29.         args[0].x += 1
  30.         args[0].y += 1
  31.         color = Color.new(self.font.color.red, self.font.color.green, self.font.color.blue, self.font.color.alpha)
  32.         self.font.color.set(0, 0, 0, 255)
  33.         old_draw_text(args[0], args[1], args[2])
  34.         args[0].x -= 1
  35.         args[0].y -= 1
  36.         self.font.color = color
  37.       end
  38.       old_draw_text(args[0], args[1], args[2])
  39.     else
  40.       self.font.shadow = false
  41.       args[5] = 0 if args.size == 5
  42.       if shadow == true
  43.         args[0] += 1
  44.         args[1] += 1
  45.         color = Color.new(self.font.color.red, self.font.color.green, self.font.color.blue, self.font.color.alpha)
  46.         self.font.color.set(0, 0, 0, 255)
  47.         old_draw_text(args[0], args[1], args[2], args[3], args[4], args[5])
  48.         args[0] -= 1
  49.         args[1] -= 1
  50.         self.font.color = color
  51.       end
  52.       old_draw_text(args[0], args[1], args[2], args[3], args[4], args[5])
  53.       self.font.shadow = true
  54.     end
  55.   end
  56. end
复制代码


要插入在最前面,
還有要設定預設值的時候,不能像VX直接用"Font.default_shadow"
要直接在腳本裡改...

不知哪位大大能幫忙修改下

補上圖片:
未啟用:

啟用後:
作者: orochi2k    时间: 2009-1-2 06:34
偶记的SAILCAT大大写过一个来着
作者: 越前リョーマ    时间: 2009-1-2 07:00
强烈要求截图……
作者: 3nξhα0_lim    时间: 2009-1-2 10:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: 越前リョーマ    时间: 2009-1-2 23:34
看起来的确好看多了,
感谢。{/qiang}
作者: 精灵使者    时间: 2009-1-3 02:09
精灵曾经使用过的脚本就是sailcat大人的脚本,依然是我做XP的核心内容……
作者: ONEWateR    时间: 2009-1-3 02:19
不错不错。那啥,其它倒是看不错啥,倒是伤害值,让我想起可爱的vx。 {/qiang}
作者: TERENCE    时间: 2009-1-3 05:52
这种东西特别美好啊啊啊啊....!!!

作者: 后知后觉    时间: 2009-1-3 08:25
看上去貌似是挺不错的……!{/hx}
作者: swabwind    时间: 2009-1-3 20:32
终于XP也有文字阴影了,支持一个~
{/qiang}
作者: 后知后觉    时间: 2009-1-3 21:38
以下引用swabwind于2009-1-3 12:32:36的发言:

终于XP也有文字阴影了,支持一个~

XP早就有文字阴影了吧
只是感觉这个效果更beautiful一些
作者: 后知后觉    时间: 2009-1-5 05:16
额,
发现一个地方报错
正常游戏中还没遇到,
但是在正常游戏中安F12重新开始的话
就会报告错误……
作者: 紫苏    时间: 2009-5-31 15:53
alias draw_text 那里应该是 if 而不是 unless 吧,其实可以把 $font_shadow_changed 的判断放到整个脚本开头,这样按 F12 之后就不会重新解释这段脚本了,有点像头文件的 #pragma once
作者: 精灵使者    时间: 2009-5-31 16:49
以前美兽曾经解决过F12的错误。
其实以前的那个shadow脚本可以自己定义阴影和文字的颜色,会更加漂亮。

  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. class Bitmap
  5. unless $OK
  6.   alias sailcat_draw_text draw_text unless method_defined? :sailcat_draw_text
  7.   def draw_text(p1,p2,p3=0,p4=3,p5=nil,p6=0,p7=3,p8=nil)
  8.     case p1
  9.     when Numeric
  10.       x = p1
  11.       y = p2
  12.       width = p3
  13.       height = p4
  14.       text = p5
  15.       align = p6
  16.       shadow_direction = p7
  17.       shadow_color = p8
  18.       if shadow_color.nil?
  19.         shadow_color = Color.new(0,0,0,self.font.color.alpha * 0.67)
  20.       end
  21.     when Rect
  22.       x = p1.x
  23.       y = p1.y
  24.       width = p1.width
  25.       height = p1.height
  26.       text = p2
  27.       align = p3
  28.       shadow_direction = p4
  29.       shadow_color = p5
  30.       if shadow_color.nil?
  31.         shadow_color = Color.new(0,0,0,self.font.color.alpha * 0.67)
  32.       end
  33.     end
  34. color_temp = self.font.color.clone
  35. if shadow_direction != 0
  36.     self.font.color = shadow_color
  37.     case shadow_direction
  38.     when 1
  39.       sailcat_draw_text(x-1,y+1,width,height,text,align)
  40.     when 3
  41.       sailcat_draw_text(x+1,y+1,width,height,text,align)
  42.     when 7
  43.       sailcat_draw_text(x-1,y-1,width,height,text,align)
  44.     when 9
  45.       sailcat_draw_text(x+1,y-1,width,height,text,align)
  46.     end
  47.   self.font.color=color_temp
  48. end
  49.   $OK = true
  50.   sailcat_draw_text(x,y,width,height,text,align)
  51.   end
  52. end
  53. end
  54. #==============================================================================
  55. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  56. #==============================================================================
复制代码

这是精灵使用的那段脚本。直接插入前面即可。
现在一直都是我的游戏的核心脚本的说。
使用方法:
self.contents.draw_text(x, y, w, h, txt,0,align,color)




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1