Project1

标题: 请问哪位高人会做对话文字模糊的效果? [打印本页]

作者: 虚幻死神    时间: 2008-7-31 17:53
看不到圖
作者: rpg83200    时间: 2008-7-31 17:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: IamI    时间: 2008-7-31 17:56
所谓的“模糊”是指什么特效?高斯模糊?
然后就是= =你用的是什么对话脚本?
对话脚本贴上来啊XD
作者: rpg83200    时间: 2008-7-31 17:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: rpg83200    时间: 2008-7-31 18:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: rpg83200    时间: 2008-7-31 19:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: IamI    时间: 2008-7-31 19:14
成功骗LZ3连贴= =
恩,我发誓我以后打死也不碰美兽殿的滤镜效果了……浪费了我2个小时
用chaos的边缘模糊来凑一下= =效果不是很好
  1. # ————————————————————————————————————
  2. # 本脚本来自www.66rpg.com,转载请保留此信息
  3. # ————————————————————————————————————
  4. #——说明
  5. #默认为一个字一个字的方式,如果需要一次全部显示,
  6. #请在游戏中使用脚本:$game_system.typing = true
  7. # 其他在对话中可以使用的功能:

  8. # \n[1]:显示1号角色的姓名
  9. # \name[李逍遥]:显示一个“李逍遥”方框,表示说话人姓名
  10. # \name[\n[1]]:显示1号主角的姓名方框
  11. # \p[1]:对话框出现在1号事件的上方
  12. # \p[0]:主人公上方出现对话框
  13. #——————————————————使用\p功能后可以自动调整对话框大小
  14. # \>   :文字不用打字方式
  15. # \<   :文字使用打字方式
  16. # \\:显示"\"这个符号
  17. # \c[1-8]:更改颜色
  18. # \g:显示金钱窗口
  19. # \t: 显示游戏时间窗口
  20. # \v[7]:显示7号变量的值
  21. # \v[a7]:显示7号防具的名称
  22. # \v[s7]:显示7号特技的名称
  23. # \v[w7]:显示7号武器的名称
  24. # \v[i7]:显示7号道具的名称
  25. # \I   :下一行从这个位置开始
  26. # \o[123]:文字透明度改为123,模拟将死之人(汗)
  27. # \h[12]:改用12号字
  28. # \b[50]:空50象素
  29. # \L[001]:在左边显示图片“Graphics/battlers/66rpg_001_h.png”
  30. # \R[001]:在右边显示图片“Graphics/battlers/66rpg_001_h.png”
  31. # \Lk:清除左边的图像
  32. # \Rk:清除右边的图像
  33. # \A:头像及姓名框靠左排列
  34. # \a:头像及姓名框靠右排列
  35. # \M[60]:等待60帧文字直接消失
  36. # \MS[1-8]:更改文字背景颜色
  37. # \ME:恢复文字背景颜色
  38. #颜色自定义设定范围0-255
  39. #使用方法:在文章前输入如下脚本定义颜色
  40. #          $color0 = 数值
  41. #          $color1 = 数值
  42. #          $color2 = 数值
  43. #\name参数的颜色自定义设定范围0-255
  44. #使用方法:在文章前输入如下脚本定义颜色
  45. #          $ncolor0 = 数值
  46. #          $ncolor1 = 数值
  47. #          $ncolor2 = 数值
  48. # \!   :等待玩家按回车再继续
  49. #$speed :文字的打字速度设置用的,数字越大速度越慢。

  50. #============================

  51. #常数设定
  52. ORZ_MOVE_ON = 20

  53. class Game_System
  54. attr_accessor :typing
  55. alias carol3_ini initialize
  56. def initialize
  57. carol3_ini
  58. @typing = true
  59. end
  60. end
  61. #########################################################
  62. $font_buf=Bitmap.new(640,480)
  63. class Bitmap
  64. def chaochao_draw_text_border(x, y, width, height, str, align = 0,
  65.   bordersize = 1, bordercolor = Color.new(0, 0, 0))
  66.   
  67.   buf_rect=Rect.new(0,0,width,height)
  68.   $font_buf.font = self.font
  69.   $font_buf.font.color = bordercolor
  70.   $font_buf.fill_rect(buf_rect, Color.new(0, 0, 0, 0))
  71.   $font_buf.draw_text(buf_rect, str, align)
  72.   
  73.   if (bordersize == 1) and (bordersize != 0)
  74.     self.blt(x-bordersize, y,$font_buf,buf_rect)
  75.     self.blt(x+bordersize, y,$font_buf,buf_rect)
  76.     self.blt(x, y-bordersize,$font_buf,buf_rect)
  77.     self.blt(x, y+bordersize,$font_buf,buf_rect)
  78.   elsif bordersize > 1
  79.     for i in 0..bordersize
  80.       for j in 0..bordersize
  81.         alpha = 0
  82.         alpha += (255/[(i*i+j*j),1].max)
  83.         alpha += (255/[(j*j+i*i),1].max)
  84.         alpha /= 2 if i == bordersize
  85.         alpha /= 2 if j == bordersize
  86.         self.blt(x-i, y-j,$font_buf,buf_rect,alpha)
  87.         self.blt(x-i, y+j,$font_buf,buf_rect,alpha)
  88.         self.blt(x+i, y-j,$font_buf,buf_rect,alpha)
  89.         self.blt(x+i, y+j,$font_buf,buf_rect,alpha)
  90.       end
  91.     end
  92.   end
  93.   draw_text(x, y, width, height, str, align)
  94. end
  95. end
  96. ##############################################################
  97. #=================================#==============================================================================
  98. # ■ Window_Message
  99. #------------------------------------------------------------------------------
  100. class Window_Message < Window_Selectable
  101. #颜色自定义用的全局变量定义
  102. $color0 = 255
  103. $color1 = 255
  104. $color2 = 255
  105. #颜色自定义用的全局变量定义

  106. #说话速度设置用的全局变量

  107. $speed = 1

  108. #--------------------------------------------------------------------------
  109. # ● 初始化状态
  110. #--------------------------------------------------------------------------
  111. def initialize
  112. super(40, 50, 820, 160)
  113. self.contents = Bitmap.new(width - 40, height - 32)
  114. self.visible = false
  115. self.z = 199
  116. @fade_in = false
  117. @fade_out = false
  118. @contents_showing = false
  119. @cursor_width = 0
  120. # Start
  121. @bflag = false
  122. # End
  123. @autoclosetime = -1
  124. self.active = false
  125. self.index = -1
  126. @opacity_text_buf = Bitmap.new(32, 32)
  127. end
  128. #--------------------------------------------------------------------------
  129. # ● 释放
  130. #--------------------------------------------------------------------------
  131. def dispose
  132. terminate_message
  133. $game_temp.message_window_showing = false
  134. if @input_number_window != nil
  135.    @input_number_window.dispose
  136. end
  137. super
  138. end
  139. #--------------------------------------------------------------------------
  140. # ● 处理信息结束
  141. #--------------------------------------------------------------------------
  142. def terminate_message
  143. self.active = false
  144. self.pause = false
  145. self.index = -1
  146. self.contents.clear
  147. # 清除显示中标志
  148. @contents_showing = false
  149. # 呼叫信息调用
  150. if $game_temp.message_proc != nil
  151.    $game_temp.message_proc.call
  152. end
  153. # 清除文章、选择项、输入数值的相关变量
  154. $game_temp.message_text = nil
  155. $game_temp.message_proc = nil
  156. $game_temp.choice_start = 99
  157. $game_temp.choice_max = 0
  158. $game_temp.choice_cancel_type = 0
  159. $game_temp.choice_proc = nil
  160. $game_temp.num_input_start = 99
  161. $game_temp.num_input_variable_id = 0
  162. $game_temp.num_input_digits_max = 0
  163. # 开放金钱窗口
  164. if @gold_window != nil
  165.    @gold_window.dispose
  166.    @gold_window = nil
  167. end
  168. #Start
  169. # ピクチャ廃棄処理
  170. begin
  171. #      if @spgra.disposed? == false
  172.      @spgra.dispose
  173. #      end
  174. #      if @backgraphic.disposed? == false
  175.      @backgraphic.dispose
  176. #      end
  177. rescue
  178. #      print "ピクチャが読み込めていません!"
  179. end
  180. #End
  181. # 开放时间窗口
  182. if @playtime_window != nil
  183.    @playtime_window.dispose
  184.    @playtime_window = nil
  185. end
  186. if @name_window_frame != nil
  187.    @name_window_frame.dispose
  188.    @name_window_frame = nil
  189. end
  190. if @name_window_text != nil
  191.    @name_window_text.dispose
  192.    @name_window_text = nil
  193. end
  194. if @right_picture != nil and @right_keep == true
  195.    @right_picture.dispose
  196. end   
  197. if @left_picture != nil and @left_keep == true
  198.    @left_picture.dispose
  199. end
  200. @face_bitmap = nil
  201. end
  202. def refresh
  203. # 初期化
  204. self.contents.clear
  205. self.contents.font.color = normal_color
  206. self.contents.font.size = Font.default_size
  207. @x = @y = @max_x = @max_y = @indent = @lines = 0
  208. @left_keep = @right_keep = false
  209. @face_indent = 0
  210. @opacity = 255
  211. @cursor_width = 0
  212. @autoclosetime = -1
  213. @write_speed = $speed
  214. @write_wait = 0
  215. @mid_stop = false
  216. face = nil
  217. @popchar = -2
  218. @alignment = true
  219. if $game_temp.choice_start == 0
  220.    @x = 8
  221. end
  222. if $game_temp.message_text != nil
  223.    @now_text = $game_temp.message_text
  224.    #——对齐设置
  225.    if (/\\([Aa])/.match(@now_text))!=nil then
  226.      if $1 == "A"
  227.        @alignment = true
  228.      else
  229.        @alignment = false
  230.      end
  231.      @now_text.gsub!(/\\([Aa])/) { "" }
  232.    end
  233.    #——头像设置
  234.     if (/\\([Ff])\[(.+?)\]/.match(@now_text))!=nil then
  235.       @face = $2 + "_f.png"
  236.       if $1 == "f" and $game_actors[$2.to_i] != nil
  237.         face = $game_actors[$2.to_i].battler_name + "_f.png"
  238.       end
  239.       if FileTest.exist?("Graphics/Pictures/#{face}")
  240.         @face_bitmap = Bitmap.new("Graphics/Pictures/#{face}")
  241.         if @alignment
  242.           @x = @face_indent = 128
  243.           self.contents.blt(16, 16, @face_bitmap, Rect.new(0, 0, 96, 96))
  244.         else
  245.           self.contents.blt(self.contents.width - 112, 16, @face_bitmap,
  246.             Rect.new(0, 0, 96, 96))
  247.         end
  248.       else
  249.         face = nil
  250.         @face_bitmap = nil
  251.       end
  252.       @now_text.gsub!(/\\([Ff])\[(.*?)\]/) { "" }
  253.     end
  254.    #——左半身像设置
  255.    if (/\\[Ll]\[(.+?)\]/.match(@now_text))!=nil then
  256.      @face = "66rpg_" + $1 + "_h.png"
  257.      if $加密 == true
  258.        if @left_picture != nil
  259.          @left_picture.dispose
  260.        end
  261.        @left_picture = Sprite.new
  262.        @left_picture.bitmap = Bitmap.new("Graphics/battlers/#{@face}")
  263.        @left_picture.y = 480-@left_picture.bitmap.height
  264.        @left_picture.x = 0
  265.        @left_picture.mirror = true
  266.        @now_text.gsub!(/\\[Ll]\[(.*?)\]/) { "" }
  267.      else         
  268.        if FileTest.exist?("Graphics/battlers/#{@face}")
  269.          if @left_picture != nil
  270.            @left_picture.dispose
  271.          end
  272.          @left_picture = Sprite.new
  273.          @left_picture.bitmap = Bitmap.new("Graphics/battlers/#{@face}")
  274.          @left_picture.y = 480-@left_picture.bitmap.height
  275.          @left_picture.x = 0
  276.          @left_picture.mirror = true
  277.          @now_text.gsub!(/\\[Ll]\[(.*?)\]/) { "" }
  278.        end
  279.      end        
  280.    end
  281.    #——右半身像设置
  282.    if (/\\[Rr]\[(.+?)\]/.match(@now_text))!=nil then
  283.      @face = "66rpg_" + $1 + "_h.png"
  284.      if $加密 == true
  285.        if @right_picture != nil
  286.          @right_picture.dispose
  287.        end
  288.        @right_picture = Sprite.new
  289.        @right_picture.bitmap = Bitmap.new("Graphics/battlers/#{@face}")
  290.        @right_picture.y = 480-@right_picture.bitmap.height
  291.        @right_picture.x = 640-@right_picture.bitmap.width
  292.        @now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "" }
  293.      else
  294.        if FileTest.exist?("Graphics/battlers/#{@face}")
  295.          if @right_picture != nil
  296.            @right_picture.dispose
  297.          end
  298.          @right_picture = Sprite.new
  299.          @right_picture.bitmap = Bitmap.new("Graphics/battlers/#{@face}")
  300.          @right_picture.y = 480-@right_picture.bitmap.height
  301.          @right_picture.x = 640-@right_picture.bitmap.width
  302.          @now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "" }
  303.        end
  304.      end
  305.    end
  306.    if (/\\[Rr]k/.match(@now_text)) != nil
  307.      @right_keep = true
  308.      @now_text.sub!(/\\[Rr]k/) { "" }
  309.    end
  310.    if (/\\[Ll]k/.match(@now_text)) != nil
  311.      @left_keep = true
  312.      @now_text.sub!(/\\[Ll]k/) { "" }
  313.    end
  314.    # 替换人物姓名
  315.    @now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  316.      $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  317.    end
  318.    # 显示人物姓名
  319.    name_window_set = false
  320.    if (/\\[Nn][Aa][Mm][Ee](.*?)\[(.+?)\]/.match(@now_text)) != nil
  321.      name_window_set = true
  322.      name_text = $2
  323.      @now_text.sub!(/\\[Nn][Aa][Mm][Ee](.*?)\[(.*?)\]/) { "" }
  324.    end
  325.    # 文字位置的判定
  326.    if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then
  327.      @popchar = $1.to_i
  328.      if @popchar == -1
  329.        @x = @indent = 48
  330.        @y = 4
  331.      end
  332.      @now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" }
  333.    end
  334.    
  335.    # 开始
  336.    begin
  337.      last_text = @now_text.clone
  338.      @now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) }
  339.    end until @now_text == last_text
  340. @now_text.gsub!(/\\\\/) { "\000" }
  341. @now_text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  342. @now_text.gsub!(/\\[Gg]/) { "\002" }
  343. @now_text.gsub!(/\\[Tt]/) { "\004" }
  344. @now_text.gsub!(/\\[Mm]\[([0-9]+)\]/) { "\050[#{$1}]" }
  345. @now_text.gsub!(/\\[Ii]/) { "\023" }
  346. @now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }
  347. @now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }
  348. @now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" }
  349. @now_text.gsub!(/\\[Dd]\[([0-9]+)\]/) { "\027[#{$1}]" }
  350. @now_text.gsub!(/\\[!]/) { "\020" }
  351. @now_text.gsub!(/\\[>]/) { "\016" }
  352. @now_text.gsub!(/\\[<]/) { "\017" }

  353. # Start
  354. # ◎
  355.    # "\\MS" を "\052" に、 "\\ME" を "\053" に変更
  356.    @now_text.gsub!(/\\[Mm][Ss]\[([0-9]+)\]/) { "\052[#{$1}]" }
  357.    @now_text.gsub!(/\\[Mm][Ee]/) { "\053" }
  358. # ◎
  359. # End

  360. if @popchar >= 0
  361.    @text_save = @now_text.clone
  362.    @max_x = 0
  363.    @max_y = 4
  364.    for i in 0..3
  365.      line = @now_text.split(/\n/)[3-i]
  366.      @max_y -= 1 if line == nil and @max_y <= 4-i
  367.      next if line == nil
  368.      cx = contents.text_size(line).width
  369.      @max_x = cx if cx > @max_x
  370.    end
  371.    self.width = @max_x + 48 + @face_indent
  372.    self.height = (@max_y - 1) * 32 + 64
  373. else
  374.    @max_x = self.width - 32 - @face_indent
  375. end
  376. reset_window
  377.    if name_window_set
  378.      off_x = 0
  379.      off_y = -40
  380.      space = 2
  381.      w = self.contents.text_size(name_text).width + 26 + space
  382.      x = @alignment ? self.x + off_x - space / 2 : self.x + off_x - space / 2 + self.width - w
  383.      y = self.y + off_y - space / 2
  384.      h = 40 + space
  385.      @name_window_frame = Window_Frame.new(x, y, w, h)
  386.      @name_window_frame.z = self.z + 1
  387.      x = @alignment ? self.x + off_x - space / 2 + 4 : self.x + off_x - space / 2 + 4 + self.width - w
  388.      y = self.y + off_y - space / 2
  389.      @name_window_text = Air_Text.new(x+4, y+6, name_text)
  390.      @name_window_text.z = self.z + 2
  391.    end
  392. end
  393. reset_window
  394. if $game_temp.choice_max > 0
  395.    @item_max = $game_temp.choice_max
  396.    self.active = true
  397.    self.index = 0
  398. end
  399. if $game_temp.num_input_variable_id > 0
  400.    digits_max = $game_temp.num_input_digits_max
  401.    number = $game_variables[$game_temp.num_input_variable_id]
  402.    @input_number_window = Window_InputNumber.new(digits_max)
  403.    @input_number_window.number = number
  404.    @input_number_window.x = self.x + 8
  405.    @input_number_window.y = self.y + $game_temp.num_input_start * 32
  406. end
  407. end
  408. #--------------------------------------------------------------------------
  409. # ● 更新
  410. #--------------------------------------------------------------------------
  411. def update
  412. super
  413.    if @autoclosetime == 0
  414.    @autoclosetime = -1
  415.    terminate_message
  416. end
  417. if @autoclosetime >= 1
  418.    @autoclosetime -= 1
  419. end
  420. if @fade_in
  421.    self.contents_opacity += 24
  422.    if @input_number_window != nil
  423.      @input_number_window.contents_opacity += 24
  424.    end
  425.    if self.contents_opacity == 255
  426.      @fade_in = false
  427.    end
  428.    return
  429. end
  430. @now_text = nil if @now_text == ""

  431. if @now_text != nil and @mid_stop == false
  432.    if @write_wait > 0
  433.      @write_wait -= 1
  434.      return
  435.    end
  436.    text_not_skip = $game_system.typing
  437.    while true
  438.      @max_x = @x if @max_x < @x
  439.      @max_y = @y if @max_y < @y
  440.      if (c = @now_text.slice!(/./m)) != nil
  441.        if c == "\000"
  442.          c = "\\"
  443.        end
  444.        if c == "\001"
  445.          @now_text.sub!(/\[([0-9]+)\]/, "")
  446.          color = $1.to_i
  447.          if color >= 0 and color <= 7
  448.            self.contents.font.color = text_color(color)
  449.          end
  450.          c = ""
  451.        end
  452.        if c == "\002"
  453.          if @gold_window == nil and @popchar <= 0
  454.            @gold_window = Window_Gold.new
  455.            @gold_window.x = 560 - @gold_window.width
  456.            if $game_temp.in_battle
  457.              @gold_window.y = 192
  458.            else
  459.              @gold_window.y = self.y >= 128 ? 32 : 384
  460.            end
  461.            @gold_window.opacity = self.opacity
  462.            @gold_window.back_opacity = self.back_opacity
  463.          end
  464.          c = ""
  465.        end
  466.      if c == "\004"
  467.        if @playtime_window == nil and @popchar <=0
  468.          @playtime_window = Window_PlayTime.new
  469.          @playtime_window.x = 80
  470.          if $game_temp.in_battle
  471.            @playtime_window.y = 192
  472.          else
  473.            @playtime_window.y = self.y >= 128 ? 32 : 384
  474.          end
  475.          @playtime_window.opacity = self.opacity
  476.          @playtime_window.back_opacity = self.back_opacity
  477.        end
  478.      end
  479.       if c == "\016"
  480.         text_not_skip = false
  481.         c = ""
  482.       end
  483.       if c == "\017"
  484.         text_not_skip = true
  485.         c = ""
  486.       end
  487.       if c == "\020"
  488.         @mid_stop = true
  489.         c = ""
  490.       end        
  491.        if c == "\023"
  492.          @indent = @x
  493.          c = ""
  494.        end
  495.        if c == "\024"
  496.          @now_text.sub!(/\[([0-9]+)\]/, "")
  497.          @opacity = $1.to_i
  498.          c = ""
  499.        end
  500.        if c == "\025"
  501.          @now_text.sub!(/\[([0-9]+)\]/, "")
  502.          self.contents.font.size = [[$1.to_i, 6].max, 32].min
  503.          c = ""
  504.        end
  505.        if c == "\026"
  506.          @now_text.sub!(/\[([0-9]+)\]/, "")
  507.          @x += $1.to_i
  508.          c = ""
  509.        end
  510.      if c == "\027"
  511.        @now_text.sub!(/\[([0-9]+)\]/, "")
  512.        @x += $1.to_i * self.contents.font.size / 2
  513.        next
  514.      end
  515.        if c == "\030"
  516.          @now_text.sub!(/\[(.*?)\]/, "")
  517.          self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24))
  518.          @x += 24
  519.          c = ""
  520.        end
  521.        if c == "\050"
  522.        @now_text.sub!(/\[([0-9]+)\]/, "")
  523.        @autoclosetime = $1.to_i
  524.        next
  525.      end
  526. # Start
  527. # ◎
  528.      # \MSの場合
  529.      if c == "\052"
  530.        @now_text.sub!(/\[([0-9]+)\]/, "")
  531.        bcolor = $1.to_i
  532.        @bflag = true
  533.      end
  534.      # \MEの場合
  535.      if c == "\053"
  536.        @bflag = false
  537.        bcolor = 0
  538.      end
  539. # ◎
  540. # End
  541. # Start
  542. # ◎
  543.      if @bflag == true
  544.        if bcolor >= 0 and bcolor <= 7
  545.          bsize = self.contents.text_size(c).width
  546.          self.contents.fill_rect(4 + @x, 32 * @y, bsize, 32, text_color(bcolor))
  547.        end
  548.      end
  549. # ◎
  550. # End
  551.        if c == "\n"
  552.          if @lines >= $game_temp.choice_start
  553.            @cursor_width = [@cursor_width, @max_x - @face_indent].max
  554.          end
  555.          @lines += 1
  556.          @y += 1
  557.          @x = 0 + @indent + @face_indent
  558.          if @lines >= $game_temp.choice_start
  559.            @x = 8 + @indent + @face_indent
  560.          end
  561.          c = ""
  562.        end
  563.        if c != ""
  564.          # 文字描画
  565.          @x += opacity_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), c, @opacity)
  566.        end
  567.        if Input.press?(Input::B) and $game_switches[93] == false
  568.          text_not_skip = false
  569.        end
  570.      else
  571.        text_not_skip = true
  572.        break
  573.      end
  574.      # 終了判定
  575.      if text_not_skip
  576.        break
  577.      end
  578.    end
  579.    @write_wait += @write_speed
  580.    return
  581. end
  582. if @input_number_window != nil
  583.    @input_number_window.update
  584.    # 決定
  585.    
  586.   
  587.   if Input.trigger?(Input::C) and $game_switches[93] == false
  588.      
  589.      $game_system.se_play($data_system.decision_se)
  590.      $game_variables[$game_temp.num_input_variable_id] =
  591.      @input_number_window.number
  592.      $game_map.need_refresh = true
  593.      @input_number_window.dispose
  594.      @input_number_window = nil
  595.      terminate_message
  596.    
  597. end
  598.    return
  599. end
  600. if @contents_showing
  601.    if $game_temp.choice_max == 0
  602.      self.pause = true
  603.    end
  604.    # 取消
  605.    
  606.   
  607.    if Input.trigger?(Input::B) and $game_switches[93] == false
  608.       
  609.      if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
  610.        $game_system.se_play($data_system.cancel_se)
  611.        $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
  612.        terminate_message
  613.      
  614.    end
  615. end  
  616.    # 決定
  617.    if Input.trigger?(Input::C) and $game_switches[93] == false
  618.      if $game_temp.choice_max > 0
  619.        $game_system.se_play($data_system.decision_se)
  620.        $game_temp.choice_proc.call(self.index)
  621.      end
  622.      if @mid_stop
  623.        @mid_stop = false
  624.        return
  625.      else
  626.        terminate_message
  627.      end
  628.    end
  629.    return
  630. end
  631. if @fade_out == false and $game_temp.message_text != nil
  632.    @contents_showing = true
  633.    $game_temp.message_window_showing = true
  634.    refresh
  635.    Graphics.frame_reset
  636.    self.visible = true
  637.    self.contents_opacity = 0
  638. if @input_number_window != nil
  639.    @input_number_window.contents_opacity = 0
  640. end
  641.    @fade_in = true
  642.    return
  643. end
  644. if self.visible
  645.    @fade_out = true
  646.    self.opacity -= 48
  647.    if self.opacity == 0
  648.      self.visible = false
  649.      @fade_out = false
  650.      $game_temp.message_window_showing = false
  651.    end
  652.    return
  653. end
  654. end
  655. #--------------------------------------------------------------------------
  656. # ● 获得字符
  657. #--------------------------------------------------------------------------
  658. def get_character(parameter)
  659. case parameter
  660. when 0
  661.    return $game_player
  662. else
  663.    events = $game_map.events
  664.    return events == nil ? nil : events[parameter]
  665. end
  666. end
  667. #--------------------------------------------------------------------------
  668. # ● ウィンドウの位置と不透明度の設定
  669. #--------------------------------------------------------------------------
  670. def reset_window
  671. # 判定
  672. if @popchar >= 0
  673.    events = $game_map.events
  674.    if events != nil
  675.      character = get_character(@popchar)
  676.      x = [[character.screen_x - 0 - self.width / 2, 4].max, 636 - self.width].min
  677.      y = [[character.screen_y - 48 - self.height, 4].max, 476 - self.height].min
  678.      self.x = x
  679.      self.y = y
  680.    end
  681. elsif @popchar == -1
  682.    self.x = -4
  683.    self.y = -4
  684.    self.width = 50
  685.    self.height = 488
  686. else
  687.    if $game_temp.in_battle
  688.       case $game_system.message_position
  689.       when 0 # 上
  690.        self.y = 16
  691.       when 1 # 中
  692.        self.y = 160
  693.       when 2 # 下
  694.        self.y = 315
  695.      case $game_system.message_position  
  696.      when 0  
  697.        self.x = 0
  698.      when 1
  699.        self.x = 180
  700.      when 2
  701.        self.x = 0
  702.      end      
  703.    end
  704.    else
  705.      case $game_system.message_position
  706.      when 0 # 上
  707.        self.y = 16
  708.      when 1 # 中
  709.        self.y = 160
  710.      when 2 # 下
  711.        self.y = 315
  712.      end
  713.      case $game_system.message_position  
  714.      when 0  
  715.        self.x = 0
  716.      when 1
  717.        self.x = 160
  718.      when 2
  719.        self.x = 0
  720.      end
  721.      
  722.       if @face_bitmap == nil
  723.         self.width = 800
  724.       else
  725.         self.width = 800
  726.         self.x -= 20
  727.       end
  728.       self.height = 170
  729.     end
  730.   end
  731. self.contents = Bitmap.new(self.width - 32, self.height - 32)
  732.   if @face_bitmap != nil
  733.     if @alignment
  734.       self.contents.blt(16, 16, @face_bitmap, Rect.new(0, 0, 96, 96))
  735.     else
  736.       self.contents.blt(self.contents.width - 112, 16, @face_bitmap,
  737.         Rect.new(0, 0, 96, 96))
  738.     end
  739.   end
  740.   if @popchar == -1
  741.    self.opacity = 255
  742.    self.back_opacity = 0
  743. elsif $game_system.message_frame == 0
  744.    self.opacity = 255
  745.    self.back_opacity = 100
  746. else
  747.    self.opacity = 0
  748.    self.back_opacity = 100
  749. end
  750. end
  751. #--------------------------------------------------------------------------
  752. # ● line_height
  753. #--------------------------------------------------------------------------
  754. # 返回値:行高
  755. #--------------------------------------------------------------------------
  756. def line_height
  757. return 32
  758. if self.contents.font.size >= 20 and self.contents.font.size <= 24
  759.    return 32
  760. else
  761.    return self.contents.font.size * 15 / 10
  762. end
  763. end
  764. #--------------------------------------------------------------------------
  765. # ● \V 变换
  766. #--------------------------------------------------------------------------
  767. def convart_value(option, index)
  768. option == nil ? option = "" : nil
  769. option.downcase!
  770. case option
  771.    when "i"
  772.      unless $data_items[index].name == nil
  773.        r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)
  774.      end
  775.    when "w"
  776.      unless $data_weapons[index].name == nil
  777.        r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
  778.      end
  779.    when "a"
  780.      unless $data_armors[index].name == nil
  781.        r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
  782.      end
  783.    when "s"
  784.      unless $data_skills[index].name == nil
  785.        r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name)
  786.      end
  787.    else
  788.    r = $game_variables[index]
  789. end
  790. r == nil ? r = "" : nil
  791. return r
  792. end
  793. #--------------------------------------------------------------------------
  794. # ● 透過文字描画
  795. #--------------------------------------------------------------------------
  796. # target :描画対象。Bitmapクラスを指定。
  797. # x :x座標
  798. # y :y座標
  799. # str  :描画文字列
  800. # opacity:透過率(0~255)
  801. # 返回値 :文字幅(@x増加値)。
  802. #--------------------------------------------------------------------------
  803. def opacity_draw_text(target, x, y, str,opacity)
  804. height = target.font.size
  805. width = target.text_size(str).width
  806. opacity = [[opacity, 0].max, 255].min
  807. if opacity == 255
  808.    #
  809.   ################################################
  810.    #if @orz_on == true
  811.     #p "CALL"
  812.   if $game_switches[ORZ_MOVE_ON] == true
  813.     target.chaochao_draw_text_border(x,y,width,height,str,0,1,target.font.color)
  814.   else
  815.     target.draw_text(x, y, width, height, str)
  816.   end
  817.    #end
  818.    ###############################################
  819.       return width
  820. else
  821.    if @opacity_text_buf.width < width or @opacity_text_buf.height < height
  822.      @opacity_text_buf.dispose
  823.      @opacity_text_buf = Bitmap.new(width, height)
  824.    else
  825.      @opacity_text_buf.clear
  826.    end
  827.    @opacity_text_buf.font.size = target.font.size
  828.    @opacity_text_buf.draw_text(0, 0, width, height, str)
  829.    target.blt(x, y, @opacity_text_buf, Rect.new(0, 0, width, height), opacity)
  830. return width
  831. end
  832. end
  833. def ruby_draw_text(target, x, y, str,opacity)
  834. sizeback = target.font.size
  835. target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2
  836. rubysize = [rubysize, 6].max

  837. opacity = [[opacity, 0].max, 255].min
  838. split_s = str.split(/,/)

  839. split_s[0] == nil ? split_s[0] = "" : nil
  840. split_s[1] == nil ? split_s[1] = "" : nil

  841. height = sizeback + rubysize
  842. width = target.text_size(split_s[0]).width

  843. target.font.size = rubysize
  844. ruby_width = target.text_size(split_s[1]).width
  845. target.font.size = sizeback

  846. buf_width = [target.text_size(split_s[0]).width, ruby_width].max

  847. width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0

  848. if opacity == 255
  849.    target.font.size = rubysize
  850.    target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1])
  851.    target.font.size = sizeback
  852.    target.draw_text(x, y, width, target.font.size, split_s[0])
  853.    return width
  854. else
  855.    if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height
  856.      @opacity_text_buf.dispose
  857.      @opacity_text_buf = Bitmap.new(buf_width, height)
  858.    else
  859.      @opacity_text_buf.clear
  860.    end
  861.    @opacity_text_buf.font.size = rubysize
  862.    @opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1)
  863.    @opacity_text_buf.font.size = sizeback
  864.    @opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1)
  865.    if sub_x >= 0
  866.      target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
  867.    else
  868.      target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
  869.    end
  870.    return width
  871. end
  872. end
  873. #--------------------------------------------------------------------------
  874. # ● 解放
  875. #--------------------------------------------------------------------------
  876. def dispose
  877. terminate_message
  878. if @gaiji_cache != nil
  879.    unless @gaiji_cache.disposed?
  880.      @gaiji_cache.dispose
  881.    end
  882. end
  883. unless @opacity_text_buf.disposed?
  884.    @opacity_text_buf.dispose
  885. end
  886. $game_temp.message_window_showing = false
  887. if @input_number_window != nil
  888.    @input_number_window.dispose
  889. end
  890. super
  891. end
  892. #--------------------------------------------------------------------------
  893. # ● 矩形更新
  894. #--------------------------------------------------------------------------
  895. def update_cursor_rect
  896. if @index >= 0
  897.    n = $game_temp.choice_start + @index
  898.    self.cursor_rect.set(4 + @indent + @face_indent, n * 32 + 4, @cursor_width, 32)
  899. else
  900.    self.cursor_rect.empty
  901. end
  902. end
  903. end
  904. #==============================================================================
  905. # ■ Window_Frame (枠だけで中身の無いウィンドウ)
  906. #==============================================================================
  907. class Window_Frame < Window_Base
  908. #--------------------------------------------------------------------------
  909. # ● オブジェクト初期化
  910. #--------------------------------------------------------------------------
  911. def initialize(x, y, width, height)
  912. super(x, y, width, height)
  913. self.contents = nil
  914. self.back_opacity = 100
  915. end
  916. #--------------------------------------------------------------------------
  917. # ● 解放
  918. #--------------------------------------------------------------------------
  919. def dispose
  920. super
  921. end
  922. end
  923. #==============================================================================
  924. # ■ Air_Text (何も無いところに文字描写 = 枠の無い瞬間表示メッセージウィンドウ)
  925. #==============================================================================
  926. class Air_Text < Window_Base


  927. #参数的颜色自定义设定范围0-255
  928. $ncolor0 = 255
  929. $ncolor1 = 255
  930. $ncolor2 = 255
  931. #参数的颜色自定义设定范围0-255

  932. #--------------------------------------------------------------------------
  933. # ● オブジェクト初期化
  934. #--------------------------------------------------------------------------
  935. def initialize(x, y, designate_text)
  936. super(x-16, y-16, 32 + designate_text.size * 12, 56)
  937. self.opacity = 0
  938. self.back_opacity = 0
  939. self.contents = Bitmap.new(self.width - 50, self.height - 32)
  940. w = self.contents.width
  941. h = self.contents.height


  942.    #颜色自定义设定范围0-255
  943.    self.contents.font.color = Color.new($ncolor0, $ncolor1, $ncolor2)
  944.    #颜色自定义设定范围0-255

  945.    
  946.    
  947. #    self.contents.font.color = text_color(color)
  948. self.contents.draw_text(0, 0, w, h, designate_text)
  949. end
  950. #--------------------------------------------------------------------------
  951. # ● 解放
  952. #--------------------------------------------------------------------------
  953. def dispose
  954. self.contents.clear
  955. super
  956. end
  957. end
复制代码

恩,可以自己开启20号开关看一下,有设定\o[x]的无效 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: rpg83200    时间: 2008-7-31 19:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: rpg83200    时间: 2008-7-31 19:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: 柳之一    时间: 2008-7-31 21:35
以下引用rpg83200于2008-7-31 11:49:26的发言:

继续寻求~@@@

晕,0积分,估计没有人尝试了
作者: rpg83200    时间: 2008-7-31 22:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: rpg83200    时间: 2008-8-3 19:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: darkten    时间: 2008-8-3 20:11
以下引用柳之一于2008-7-31 13:35:58的发言:
晕,0积分,估计没有人尝试了
只要解决了问题,可以pm我一下,或者在认可申诉帖里面说明,就会人工补上悬赏积分...

作者: rpg83200    时间: 2009-6-12 08:00
提示: 作者被禁止或删除 内容自动屏蔽




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