设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 889|回复: 2
打印 上一主题 下一主题

对话脚本出错问题

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-9-22
帖子
85
跳转到指定楼层
1
发表于 2008-10-18 02:07:16 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

Lv1.梦旅人

蚂蚁卡卡

梦石
0
星屑
116
在线时间
66 小时
注册时间
2007-12-16
帖子
3081
3
发表于 2008-10-18 17:27:05 | 只看该作者
http://rpg.blue/viewthread.php?tid=95668
这个里面有 对话脚本
这个是配套教学 有冲突 再来问{/hx}
系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
《隋唐乱》完整解密版点击进入
米兰,让我怎么说离开……

曾经我也是一个有志青年,直到我膝盖中了一箭……

《隋唐乱》博客地址
回复 支持 反对

使用道具 举报

Lv1.梦旅人

穿越一季:朔

梦石
0
星屑
50
在线时间
333 小时
注册时间
2007-4-11
帖子
5369

贵宾

2
发表于 2008-10-18 03:22:46 | 只看该作者
我把配音的那段脚本删除了..相信你也不会去配音..
直接把这个拿去覆盖原脚本

  1. #——说明

  2. #默认为一个字一个字的方式,如果需要一次全部显示,
  3. #请在游戏中使用脚本:$game_system.typing = true

  4. # 其他在对话中可以使用的功能:

  5. # \n[1]:显示1号角色的姓名

  6. # \name[李逍遥]:显示一个“李逍遥”方框,表示说话人姓名

  7. # \p[1]:对话框出现在1号事件的上方
  8. # \p[0]:主人公上方出现对话框
  9. #——————————————————使用\p功能后可以自动调整对话框大小

  10. # \\:显示"\"这个符号

  11. # \c[1-8]:更改颜色

  12. # \g:显示金钱窗口

  13. # \a[SE文件名]:对话的时候播放SE

  14. # \s[1-19]:更改弹字的速度

  15. # \.   :停顿一刹那(1、2帧)
  16. # \|   :停顿片刻(20帧)

  17. # \>   :文字不用打字方式
  18. # \<   :文字使用打字方式

  19. # \!   :等待玩家按回车再继续
  20. # \~   :文字直接消失

  21. # \I   :下一行从这个位置开始

  22. # \o[123]:文字透明度改为123,模拟将死之人(汗)

  23. # \h[12]:改用12号字

  24. # \b[50]:空50象素

  25. # \K[今天天气不错]:在出现“今天天气不错”这几个字的时候播放$game_system.soundname_on_speak设置的音效

  26. # \L[001]:在左边显示图片“Graphics/battlers/66rpg_001_h.png”
  27. # \R[001]:在右边显示图片“Graphics/battlers/66rpg_001_h.png”

  28. # \Lk:清除左边的图像
  29. # \Rk:清除右边的图像

  30. #==============================================================================
  31. # ■ Window_Message
  32. #------------------------------------------------------------------------------
  33. class Window_Message < Window_Selectable
  34. #--------------------------------------------------------------------------
  35. # ● 初始化状态
  36. #--------------------------------------------------------------------------
  37. def initialize
  38.    super(80, 304, 480, 160)
  39.    self.contents = Bitmap.new(width - 32, height - 32)
  40.    self.visible = false
  41.    self.z = 9998
  42.    @fade_in = false
  43.    @fade_out = false
  44.    @contents_showing = false
  45.    @cursor_width = 0
  46.    self.active = false
  47.    self.index = -1

  48.    end
  49.    @opacity_text_buf = Bitmap.new(32, 32)
  50. end
  51. #--------------------------------------------------------------------------
  52. # ● 释放
  53. #--------------------------------------------------------------------------
  54. def dispose
  55.    terminate_message
  56.    $game_temp.message_window_showing = false
  57.    if @input_number_window != nil
  58.      @input_number_window.dispose
  59.    end
  60.    super
  61. end
  62. #--------------------------------------------------------------------------
  63. # ● 处理信息结束
  64. #--------------------------------------------------------------------------
  65. def terminate_message
  66.    self.active = false
  67.    self.pause = false
  68.    self.index = -1
  69.    self.contents.clear
  70.    # 清除显示中标志
  71.    @contents_showing = false
  72.    # 呼叫信息调用
  73.    if $game_temp.message_proc != nil
  74.      $game_temp.message_proc.call
  75.    end
  76.    # 清除文章、选择项、输入数值的相关变量
  77.    $game_temp.message_text = nil
  78.    $game_temp.message_proc = nil
  79.    $game_temp.choice_start = 99
  80.    $game_temp.choice_max = 0
  81.    $game_temp.choice_cancel_type = 0
  82.    $game_temp.choice_proc = nil
  83.    $game_temp.num_input_start = 99
  84.    $game_temp.num_input_variable_id = 0
  85.    $game_temp.num_input_digits_max = 0
  86.    # 开放金钱窗口
  87.    if @gold_window != nil
  88.      @gold_window.dispose
  89.      @gold_window = nil
  90.    end
  91.    if @name_window_frame != nil
  92.      @name_window_frame.dispose
  93.      @name_window_frame = nil
  94.    end
  95.    if @name_window_text != nil
  96.      @name_window_text.dispose
  97.      @name_window_text = nil
  98.    end
  99.    if @right_picture != nil and @right_keep == true
  100.      @right_picture.dispose
  101.    end   
  102.    if @left_picture != nil and @left_keep == true
  103.      @left_picture.dispose
  104.    end
  105. end
  106. def refresh
  107.    # 初期化
  108.    self.contents.clear
  109.    self.contents.font.color = normal_color
  110.    self.contents.font.size = Font.default_size
  111.    @x = @y = @max_x = @max_y = @indent = @lines = 0
  112.    @left_keep = @right_keep = false
  113.    @face_indent = 0
  114.    @opacity = 255
  115.    @cursor_width = 0
  116.    @write_speed = 0
  117.    @write_wait = 0
  118.    @mid_stop = false
  119.    @face_file = nil
  120.    @popchar = -2
  121.    if $game_temp.choice_start == 0
  122.      @x = 8
  123.    end
  124.    if $game_temp.message_text != nil
  125.      @now_text = $game_temp.message_text
  126.      #——头像设置
  127.      if (/\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then
  128.        @face_file = $1 + ".png"
  129.        @x = @face_indent = 128
  130.        if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")
  131.          self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
  132.        end
  133.        @now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" }
  134.      end
  135.      #——左半身像设置
  136.      if (/\\[Ll]\[(.+?)\]/.match(@now_text))!=nil then
  137.        @face = "66rpg_" + $1 + "_h.png"
  138.        if $加密 == true
  139.          if @left_picture != nil
  140.            @left_picture.dispose
  141.          end
  142.          @left_picture = Sprite.new
  143.          @left_picture.bitmap = Bitmap.new("Graphics/battlers/#{@face}")
  144.          @left_picture.y = 480-@left_picture.bitmap.height
  145.          @left_picture.x = 0
  146.          @left_picture.mirror = true
  147.          @now_text.gsub!(/\\[Ll]\[(.*?)\]/) { "" }
  148.        else         
  149.          if FileTest.exist?("Graphics/battlers/#{@face}")
  150.            if @left_picture != nil
  151.              @left_picture.dispose
  152.            end
  153.            @left_picture = Sprite.new
  154.            @left_picture.bitmap = Bitmap.new("Graphics/battlers/#{@face}")
  155.            @left_picture.y = 480-@left_picture.bitmap.height
  156.            @left_picture.x = 0
  157.            @left_picture.mirror = true
  158.            @now_text.gsub!(/\\[Ll]\[(.*?)\]/) { "" }
  159.          end
  160.        end        
  161.      end
  162.      #——右半身像设置
  163.      if (/\\[Rr]\[(.+?)\]/.match(@now_text))!=nil then
  164.        @face = "66rpg_" + $1 + "_h.png"
  165.        if $加密 == true
  166.          if @right_picture != nil
  167.            @right_picture.dispose
  168.          end
  169.          @right_picture = Sprite.new
  170.          @right_picture.bitmap = Bitmap.new("Graphics/battlers/#{@face}")
  171.          @right_picture.y = 480-@right_picture.bitmap.height
  172.          @right_picture.x = 640-@right_picture.bitmap.width
  173.          @now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "" }
  174.        else
  175.          if FileTest.exist?("Graphics/battlers/#{@face}")
  176.            if @right_picture != nil
  177.              @right_picture.dispose
  178.            end
  179.            @right_picture = Sprite.new
  180.            @right_picture.bitmap = Bitmap.new("Graphics/battlers/#{@face}")
  181.            @right_picture.y = 480-@right_picture.bitmap.height
  182.            @right_picture.x = 640-@right_picture.bitmap.width
  183.            @now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "" }
  184.          end
  185.        end
  186.      end
  187.      if (/\\[Rr]k/.match(@now_text)) != nil
  188.        @right_keep = true
  189.        @now_text.sub!(/\\[Rr]k/) { "" }
  190.      end
  191.      if (/\\[Ll]k/.match(@now_text)) != nil
  192.        @left_keep = true
  193.        @now_text.sub!(/\\[Ll]k/) { "" }
  194.      end
  195.      # 显示人物姓名
  196.      name_window_set = false
  197.      if (/\\[Nn]ame\[(.+?)\]/.match(@now_text)) != nil
  198.        name_window_set = true
  199.        name_text = $1
  200.        @now_text.sub!(/\\[Nn]ame\[(.*?)\]/) { "" }
  201.      end
  202.      
  203.      # 文字位置的判定
  204.      if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then
  205.        @popchar = $1.to_i
  206.        if @popchar == -1
  207.          @x = @indent = 48
  208.          @y = 4
  209.        end
  210.        @now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" }
  211.      end
  212.      
  213.      # 开始
  214.      begin
  215.        last_text = @now_text.clone
  216.        @now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) }
  217.      end until @now_text == last_text
  218.      @now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  219.      $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  220.    end
  221.    @now_text.gsub!(/\\\\/) { "\000" }
  222.    @now_text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  223.    @now_text.gsub!(/\\[Gg]/) { "\002" }
  224.    @now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\003[#{$1}]" }
  225.    @now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "\004[#{$1}]" }
  226.    @now_text.gsub!(/\\[.]/) { "\005" }
  227.    @now_text.gsub!(/\\[|]/) { "\006" }

  228.    @now_text.gsub!(/\\[>]/) { "\016" }
  229.    @now_text.gsub!(/\\[<]/) { "\017" }
  230.    @now_text.gsub!(/\\[!]/) { "\020" }
  231.    @now_text.gsub!(/\\[~]/) { "\021" }
  232.    
  233.    @now_text.gsub!(/\\[Ii]/) { "\023" }
  234.    @now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }
  235.    @now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }
  236.    @now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" }
  237.    @now_text.gsub!(/\\[Kk]\[(.*?)\]/) { "\027[#{$1}]" }
  238.    if @popchar >= 0
  239.      @text_save = @now_text.clone
  240.      @max_x = 0
  241.      @max_y = 4
  242.      for i in 0..3
  243.        line = @now_text.split(/\n/)[3-i]
  244.        @max_y -= 1 if line == nil and @max_y <= 4-i
  245.        next if line == nil
  246.        cx = contents.text_size(line).width
  247.        @max_x = cx if cx > @max_x
  248.      end
  249.      self.width = @max_x + 48 + @face_indent
  250.      self.height = (@max_y - 1) * 32 + 64
  251.    else
  252.      @max_x = self.width - 32 - @face_indent
  253.    end
  254.    reset_window
  255.      if name_window_set
  256.        off_x = 0
  257.        off_y = -40
  258.        space = 2
  259.        x = self.x + off_x - space / 2
  260.        y = self.y + off_y - space / 2
  261.        w = self.contents.text_size(name_text).width + 26 + space
  262.        h = 40 + space
  263.        @name_window_frame = Window_Frame.new(x, y, w, h)
  264.        @name_window_frame.z = self.z + 1
  265.        x = self.x + off_x + 4
  266.        y = self.y + off_y
  267.        @name_window_text = Air_Text.new(x+4, y+6, name_text)
  268.        @name_window_text.z = self.z + 2
  269.      end
  270.    end
  271.    reset_window
  272.    if $game_temp.choice_max > 0
  273.      @item_max = $game_temp.choice_max
  274.      self.active = true
  275.      self.index = 0
  276.    end
  277.    if $game_temp.num_input_variable_id > 0
  278.      digits_max = $game_temp.num_input_digits_max
  279.      number = $game_variables[$game_temp.num_input_variable_id]
  280.      @input_number_window = Window_InputNumber.new(digits_max)
  281.      @input_number_window.number = number
  282.      @input_number_window.x = self.x + 8
  283.      @input_number_window.y = self.y + $game_temp.num_input_start * 32
  284.    end
  285. end
  286. #--------------------------------------------------------------------------
  287. # ● 更新
  288. #--------------------------------------------------------------------------
  289. def update
  290.    super
  291.    if @fade_in
  292.      self.contents_opacity += 24
  293.      if @input_number_window != nil
  294.        @input_number_window.contents_opacity += 24
  295.      end
  296.      if self.contents_opacity == 255
  297.        @fade_in = false
  298.      end
  299.      return
  300.    end
  301.    @now_text = nil if @now_text == ""
  302.    
  303.    if @now_text != nil and @mid_stop == false
  304.      if @write_wait > 0
  305.        @write_wait -= 1
  306.        return
  307.      end
  308.      text_not_skip = $game_system.typing
  309.      while true
  310.        @max_x = @x if @max_x < @x
  311.        @max_y = @y if @max_y < @y
  312.        if (c = @now_text.slice!(/./m)) != nil
  313.          if c == "\000"
  314.            c = "\\"
  315.          end
  316.          if c == "\001"
  317.            @now_text.sub!(/\[([0-9]+)\]/, "")
  318.            color = $1.to_i
  319.            if color >= 0 and color <= 7
  320.              self.contents.font.color = text_color(color)
  321.            end
  322.            c = ""
  323.          end
  324.          if c == "\002"
  325.            if @gold_window == nil and @popchar <= 0
  326.              @gold_window = Window_Gold.new
  327.              @gold_window.x = 560 - @gold_window.width
  328.              if $game_temp.in_battle
  329.                @gold_window.y = 192
  330.              else
  331.                @gold_window.y = self.y >= 128 ? 32 : 384
  332.              end
  333.              @gold_window.opacity = self.opacity
  334.              @gold_window.back_opacity = self.back_opacity
  335.            end
  336.            c = ""
  337.          end
  338.          if c == "\003"
  339.            @now_text.sub!(/\[([0-9]+)\]/, "")
  340.            speed = $1.to_i
  341.            if speed >= 0 and speed <= 19
  342.              @write_speed = speed
  343.            end
  344.            c = ""
  345.          end
  346.          if c == "\004"
  347.            @now_text.sub!(/\[(.*?)\]/, "")
  348.            buftxt = $1.dup.to_s
  349.            if buftxt.match(/\//) == nil and buftxt != "" then
  350.              $game_system.soundname_on_speak = "Audio/SE/" + buftxt
  351.            else
  352.              $game_system.soundname_on_speak = buftxt.dup
  353.            end
  354.            c = ""
  355.          elsif c == "\004"
  356.            c = ""
  357.          end
  358.          if c == "\005"
  359.            @write_wait += 5
  360.            c = ""
  361.          end
  362.          if c == "\006"
  363.            @write_wait += 20
  364.            c = ""
  365.          end
  366.          if c == "\016"
  367.            text_not_skip = false
  368.            c = ""
  369.          end
  370.          if c == "\017"
  371.            text_not_skip = true
  372.            c = ""
  373.          end
  374.          if c == "\020"
  375.            @mid_stop = true
  376.            c = ""
  377.          end
  378.          if c == "\021"
  379.            terminate_message
  380.            return
  381.          end
  382.          if c == "\023"
  383.            @indent = @x
  384.            c = ""
  385.          end
  386.          if c == "\024"
  387.            @now_text.sub!(/\[([0-9]+)\]/, "")
  388.            @opacity = $1.to_i
  389.            c = ""
  390.          end
  391.          if c == "\025"
  392.            @now_text.sub!(/\[([0-9]+)\]/, "")
  393.            self.contents.font.size = [[$1.to_i, 6].max, 32].min
  394.            c = ""
  395.          end
  396.          if c == "\026"
  397.            @now_text.sub!(/\[([0-9]+)\]/, "")
  398.            @x += $1.to_i
  399.            c = ""
  400.          end
  401.          if c == "\027"
  402.            @now_text.sub!(/\[(.*?)\]/, "")
  403.            @x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity)
  404.            if $game_system.soundname_on_speak != ""
  405.              Audio.se_play($game_system.soundname_on_speak)
  406.            end
  407.            c = ""
  408.          end
  409.          if c == "\030"
  410.            @now_text.sub!(/\[(.*?)\]/, "")
  411.            self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24))
  412.           if $game_system.soundname_on_speak != ""
  413.              Audio.se_play($game_system.soundname_on_speak)
  414.            end
  415.            @x += 24
  416.            c = ""
  417.          end
  418.          if c == "\n"
  419.            if @lines >= $game_temp.choice_start
  420.              @cursor_width = [@cursor_width, @max_x - @face_indent].max
  421.            end
  422.            @lines += 1
  423.            @y += 1
  424.            @x = 0 + @indent + @face_indent
  425.            if @lines >= $game_temp.choice_start
  426.              @x = 8 + @indent + @face_indent
  427.            end
  428.            c = ""
  429.          end
  430.          if c != ""
  431.            # 文字描画
  432.            @x += opacity_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), c, @opacity)
  433.            if $game_system.soundname_on_speak != "" then
  434.            Audio.se_play($game_system.soundname_on_speak)
  435.            end
  436.          end
  437.          if Input.press?(Input::B)
  438.            text_not_skip = false
  439.          end
  440.        else
  441.          text_not_skip = true
  442.          break
  443.        end
  444.        # 終了判定
  445.        if text_not_skip
  446.          break
  447.        end
  448.      end
  449.      @write_wait += @write_speed
  450.      return
  451.    end
  452.    if @input_number_window != nil
  453.      @input_number_window.update
  454.      # 決定
  455.      if Input.trigger?(Input::C)
  456.        $game_system.se_play($data_system.decision_se)
  457.        $game_variables[$game_temp.num_input_variable_id] =
  458.        @input_number_window.number
  459.        $game_map.need_refresh = true
  460.        @input_number_window.dispose
  461.        @input_number_window = nil
  462.        terminate_message
  463.      end
  464.      return
  465.    end
  466.    if @contents_showing
  467.      if $game_temp.choice_max == 0
  468.        self.pause = true
  469.      end
  470.      # 取消
  471.      if Input.trigger?(Input::B)
  472.        if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
  473.          $game_system.se_play($data_system.cancel_se)
  474.          $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
  475.          terminate_message
  476.        end
  477.      end
  478.      # 決定
  479.      if Input.trigger?(Input::C)
  480.        if $game_temp.choice_max > 0
  481.          $game_system.se_play($data_system.decision_se)
  482.          $game_temp.choice_proc.call(self.index)
  483.        end
  484.        if @mid_stop
  485.          @mid_stop = false
  486.          return
  487.        else
  488.          terminate_message
  489.        end
  490.      end
  491.      return
  492.    end
  493.    if @fade_out == false and $game_temp.message_text != nil
  494.      @contents_showing = true
  495.      $game_temp.message_window_showing = true
  496.      refresh
  497.      Graphics.frame_reset
  498.      self.visible = true
  499.      self.contents_opacity = 0
  500.    if @input_number_window != nil
  501.      @input_number_window.contents_opacity = 0
  502.    end
  503.      @fade_in = true
  504.      return
  505.    end
  506.    if self.visible
  507.      @fade_out = true
  508.      self.opacity -= 48
  509.      if self.opacity == 0
  510.        self.visible = false
  511.        @fade_out = false
  512.        $game_temp.message_window_showing = false
  513.      end
  514.      return
  515.    end
  516. end
  517. #--------------------------------------------------------------------------
  518. # ● 获得字符
  519. #--------------------------------------------------------------------------
  520. def get_character(parameter)
  521.    case parameter
  522.    when 0
  523.      return $game_player
  524.    else
  525.      events = $game_map.events
  526.      return events == nil ? nil : events[parameter]
  527.    end
  528. end
  529. #--------------------------------------------------------------------------
  530. # ● ウィンドウの位置と不透明度の設定
  531. #--------------------------------------------------------------------------
  532. def reset_window
  533.    # 判定
  534.    if @popchar >= 0
  535.      events = $game_map.events
  536.      if events != nil
  537.        character = get_character(@popchar)
  538.        x = [[character.screen_x - 0 - self.width / 2, 4].max, 636 - self.width].min
  539.        y = [[character.screen_y - 48 - self.height, 4].max, 476 - self.height].min
  540.        self.x = x
  541.        self.y = y
  542.      end
  543.    elsif @popchar == -1
  544.      self.x = -4
  545.      self.y = -4
  546.      self.width = 648
  547.      self.height = 488
  548.    else
  549.      if $game_temp.in_battle
  550.        self.y = 16
  551.      else
  552.        case $game_system.message_position
  553.        when 0 # 上
  554.          self.y = 16
  555.        when 1 # 中
  556.          self.y = 160
  557.        when 2 # 下
  558.          self.y = 304
  559.        end
  560.        self.x = 80
  561.        if @face_file == nil
  562.          self.width = 480
  563.        else
  564.          self.width = 600
  565.          self.x -= 60
  566.        end
  567.        self.height = 160
  568.      end
  569.    end
  570.    self.contents = Bitmap.new(self.width - 32, self.height - 32)
  571.    if @face_file != nil
  572.      self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
  573.    end
  574.    if @popchar == -1
  575.      self.opacity = 255
  576.      self.back_opacity = 0
  577.    elsif $game_system.message_frame == 0
  578.      self.opacity = 255
  579.      self.back_opacity = 200
  580.    else
  581.      self.opacity = 0
  582.      self.back_opacity = 200
  583.    end
  584. end
  585. #--------------------------------------------------------------------------
  586. # ● line_height
  587. #--------------------------------------------------------------------------
  588. # 返回値:行高
  589. #--------------------------------------------------------------------------
  590. def line_height
  591.    return 32
  592.    if self.contents.font.size >= 20 and self.contents.font.size <= 24
  593.      return 32
  594.    else
  595.      return self.contents.font.size * 15 / 10
  596.    end
  597. end
  598. #--------------------------------------------------------------------------
  599. # ● 透過文字描画
  600. #--------------------------------------------------------------------------
  601. # target :描画対象。Bitmapクラスを指定。
  602. # x :x座標
  603. # y :y座標
  604. # str  :描画文字列
  605. # opacity:透過率(0~255)
  606. # 返回値 :文字幅(@x増加値)。
  607. #--------------------------------------------------------------------------
  608. def opacity_draw_text(target, x, y, str,opacity)
  609.    height = target.font.size
  610.    width = target.text_size(str).width
  611.    opacity = [[opacity, 0].max, 255].min
  612.    if opacity == 255
  613.      target.draw_text(x, y, width, height, str)
  614.      return width
  615.    else
  616.      if @opacity_text_buf.width < width or @opacity_text_buf.height < height
  617.        @opacity_text_buf.dispose
  618.        @opacity_text_buf = Bitmap.new(width, height)
  619.      else
  620.        @opacity_text_buf.clear
  621.      end
  622.      @opacity_text_buf.font.size = target.font.size
  623.      @opacity_text_buf.draw_text(0, 0, width, height, str)
  624.      target.blt(x, y, @opacity_text_buf, Rect.new(0, 0, width, height), opacity)
  625.    return width
  626.    end
  627. end
  628. def ruby_draw_text(target, x, y, str,opacity)
  629.    sizeback = target.font.size
  630.    target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2
  631.    rubysize = [rubysize, 6].max
  632.    
  633.    opacity = [[opacity, 0].max, 255].min
  634.    split_s = str.split(/,/)
  635.    
  636.    split_s[0] == nil ? split_s[0] = "" : nil
  637.    split_s[1] == nil ? split_s[1] = "" : nil
  638.    
  639.    height = sizeback + rubysize
  640.    width = target.text_size(split_s[0]).width
  641.    
  642.    target.font.size = rubysize
  643.    ruby_width = target.text_size(split_s[1]).width
  644.    target.font.size = sizeback
  645.    
  646.    buf_width = [target.text_size(split_s[0]).width, ruby_width].max
  647.    
  648.    width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0
  649.    
  650.    if opacity == 255
  651.      target.font.size = rubysize
  652.      target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1])
  653.      target.font.size = sizeback
  654.      target.draw_text(x, y, width, target.font.size, split_s[0])
  655.      return width
  656.    else
  657.      if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height
  658.        @opacity_text_buf.dispose
  659.        @opacity_text_buf = Bitmap.new(buf_width, height)
  660.      else
  661.        @opacity_text_buf.clear
  662.      end
  663.      @opacity_text_buf.font.size = rubysize
  664.      @opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1)
  665.      @opacity_text_buf.font.size = sizeback
  666.      @opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1)
  667.      if sub_x >= 0
  668.        target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
  669.      else
  670.        target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
  671.      end
  672.      return width
  673.    end
  674. end
  675. #--------------------------------------------------------------------------
  676. # ● \V 变换
  677. #--------------------------------------------------------------------------
  678. def convart_value(option, index)
  679.    option == nil ? option = "" : nil
  680.    option.downcase!
  681.    case option
  682.      when "i"
  683.        unless $data_items[index].name == nil
  684.          r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)
  685.        end
  686.      when "w"
  687.        unless $data_weapons[index].name == nil
  688.          r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
  689.        end
  690.      when "a"
  691.        unless $data_armors[index].name == nil
  692.          r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
  693.        end
  694.      when "s"
  695.        unless $data_skills[index].name == nil
  696.          r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name)
  697.        end
  698.      else
  699.      r = $game_variables[index]
  700.    end
  701.    r == nil ? r = "" : nil
  702.    return r
  703. end
  704. #--------------------------------------------------------------------------
  705. # ● 解放
  706. #--------------------------------------------------------------------------
  707. def dispose
  708.    terminate_message
  709.    if @gaiji_cache != nil
  710.      unless @gaiji_cache.disposed?
  711.        @gaiji_cache.dispose
  712.      end
  713.    end
  714.    unless @opacity_text_buf.disposed?
  715.      @opacity_text_buf.dispose
  716.    end
  717.    $game_temp.message_window_showing = false
  718.    if @input_number_window != nil
  719.      @input_number_window.dispose
  720.    end
  721.    super
  722. end
  723. #--------------------------------------------------------------------------
  724. # ● 矩形更新
  725. #--------------------------------------------------------------------------
  726. def update_cursor_rect
  727.    if @index >= 0
  728.      n = $game_temp.choice_start + @index
  729.      self.cursor_rect.set(4 + @indent + @face_indent, n * 32 + 4, @cursor_width, 32)
  730.    else
  731.      self.cursor_rect.empty
  732.    end
  733. end

  734. #==============================================================================
  735. # ■ Window_Frame (枠だけで中身の無いウィンドウ)
  736. #==============================================================================
  737. class Window_Frame < Window_Base
  738. #--------------------------------------------------------------------------
  739. # ● オブジェクト初期化
  740. #--------------------------------------------------------------------------
  741. def initialize(x, y, width, height)
  742.    super(x, y, width, height)
  743.    self.contents = nil
  744.    self.back_opacity = 200
  745. end
  746. #--------------------------------------------------------------------------
  747. # ● 解放
  748. #--------------------------------------------------------------------------
  749. def dispose
  750.    super
  751.    end
  752. end
  753. #==============================================================================
  754. # ■ Air_Text (何も無いところに文字描写 = 枠の無い瞬間表示メッセージウィンドウ)
  755. #==============================================================================
  756. class Air_Text < Window_Base
  757. #--------------------------------------------------------------------------
  758. # ● オブジェクト初期化
  759. #--------------------------------------------------------------------------
  760. def initialize(x, y, designate_text)
  761.    super(x-16, y-16, 32 + designate_text.size * 12, 56)
  762.    self.opacity = 0
  763.    self.back_opacity = 0
  764.    self.contents = Bitmap.new(self.width - 32, self.height - 32)
  765.    w = self.contents.width
  766.    h = self.contents.height
  767.    self.contents.draw_text(0, 0, w, h, designate_text)
  768. end
  769. #--------------------------------------------------------------------------
  770. # ● 解放
  771. #--------------------------------------------------------------------------
  772. def dispose
  773.    self.contents.clear
  774.    super
  775. end
  776. end
复制代码
6R复活?别扯淡了.

柳柳一旦接手66RPG,我果断呵呵啊。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-22 21:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表