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

Project1

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

谁能帮我翻译下这个文章显示脚本啊?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
4 小时
注册时间
2006-5-12
帖子
447
跳转到指定楼层
1
发表于 2007-7-10 07:18:04 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
{/pz}谁能帮我翻译下这个文章显示脚本啊?
  1. #=============================================================================
  2. # ■ AMS - Advanced Message Script
  3. #=============================================================================
  4. # Dubealex
  5. # Version 3
  6. # 29.11.05
  7. #=============================================================================
  8. # For more infos and update, visit:
  9. # www.dubealex.com (Creation Asylum)
  10. #
  11. # Edited, Fixed and Enhanced by: Dubealex
  12. # Original Script Core by: XRXS Scripter (Jap Dudes)
  13. # HTML Hexadecimal color feature from: Phylomorphis
  14. #
  15. # Special Thanks:
  16. # Rabu: For enabling the Show Face feature in an encrypted project
  17. #
  18. # To found all my new features, search the following:  #NEW
  19. # To configure the button to skip the dialog, search:  #SKIP_TEXT_CODE
  20. #=============================================================================

  21. #--------------------------------------------------------------------------
  22. # * SDK Log Script
  23. #--------------------------------------------------------------------------
  24. SDK.log("AMS", "Dubealex", 3, "29.11.05")

  25. #--------------------------------------------------------------------------
  26. # * Begin SDK Enable Test
  27. #--------------------------------------------------------------------------
  28. if SDK.state("AMS") == true

  29.   LETTER_BY_LETTER_MODE = true   #Set the letter by letter mode ON/OFF         
  30.   
  31.   #===================================================
  32.   # ▼ CLASS AMS Begins
  33.   #===================================================
  34.   class AMS
  35.    
  36.     attr_accessor :name_box_x_offset
  37.     attr_accessor :name_box_y_offset
  38.     attr_accessor :font_type
  39.     attr_accessor :name_font_type
  40.     attr_accessor :font_size
  41.     attr_accessor :name_font_size
  42.     attr_accessor :message_box_opacity
  43.     attr_accessor :name_box_skin
  44.     attr_accessor :name_box_text_color
  45.     attr_accessor :message_box_text_color
  46.     attr_accessor :message_box_skin
  47.     attr_accessor :name_box_width
  48.     attr_accessor :name_box_height
  49.      
  50.    def initialize
  51.      
  52.     @name_box_x_offset = 0       #Choose the X axis offset of the name bos. default= 0
  53.     @name_box_y_offset = -10    #Choose the Y axis offset of the name bos. default= -10
  54.     @name_box_width = 8           #Choose the width of the Name Box. default= 8  
  55.     @name_box_height = 26        #Choose the height of the Name Box. default= 26
  56.    
  57.     @font_type = "Tahoma"           #Choose the Font Name (Case Sensitive) for message box
  58.     @name_font_type = "Tahoma" #Choose the Font Name (Case Sensitive) for Name Box
  59.     @font_size = 22                      #Choose the default Font Size for message box text
  60.     @name_font_size = 22            #Choose the deafault Font Size for Name Box text
  61.     @name_box_text_color=0        #Choose the Text Color of the Name Box
  62.     @message_box_text_color=0   #Choose the Text Color of the Message Box
  63.    
  64.     @message_box_opacity = 160            #Choose the opacity of the message window. Default=160
  65.     @message_box_skin = "001-Blue01"   #Choose the WindowSkin for the Message Box
  66.     @name_box_skin = "001-Blue01"       #Choose the WindowSkin for the Name Box
  67.    
  68.    end
  69.   end
  70.   #===================================================
  71.   # ▲ CLASS AMS Ends
  72.   #===================================================
  73.   
  74.   
  75.   #===================================================
  76.   # ▼ Class Window_Message Begins
  77.   #===================================================
  78.   class Window_Message < Window_Selectable   
  79.   
  80.   alias xrxs9_initialize initialize
  81.   
  82.   def initialize
  83.   
  84.   @alex_skip = false
  85.   
  86.    xrxs9_initialize
  87.   
  88.    if $soundname_on_speak == nil then
  89.      $soundname_on_speak = ""
  90.    end
  91.   
  92.    $gaiji_file = "./Graphics/Gaiji/sample.png"
  93.   
  94.    if FileTest.exist?($gaiji_file)
  95.      @gaiji_cache = Bitmap.new($gaiji_file)
  96.    else
  97.      @gaigi_cache = nil
  98.    end
  99.    @opacity_text_buf = Bitmap.new(32, 32)
  100.   end
  101.   
  102.   #--------------------------------------------------------------------------
  103.   
  104.   alias xrxs9_terminate_message terminate_message
  105.   
  106.   def terminate_message
  107.    
  108.    if @name_window_frame != nil
  109.      @name_window_frame.dispose
  110.      @name_window_frame = nil
  111.    end
  112.    
  113.    if @name_window_text  != nil
  114.      @name_window_text.dispose
  115.      @name_window_text  = nil
  116.    end
  117.    xrxs9_terminate_message
  118.   end
  119.   
  120.   #--------------------------------------------------------------------------
  121.   
  122.   def refresh
  123.    
  124.    self.contents.clear
  125.    self.contents.font.color = text_color($ams.message_box_text_color)
  126.    self.contents.font.name = $ams.font_type
  127.    self.contents.font.size = $ams.font_size
  128.    self.windowskin = RPG::Cache.windowskin($ams.message_box_skin)
  129.    @x = @y = @max_x = @max_y = @indent = @lines = 0
  130.    @face_indent = 0
  131.    @opacity = 255
  132.    @cursor_width = 0
  133.    @write_speed = 0
  134.    @write_wait = 0
  135.    @mid_stop = false
  136.    @face_file = nil
  137.    @popchar = -2
  138.    
  139.    if $game_temp.choice_start == 0
  140.      @x = 8
  141.    end
  142.    
  143.    if $game_temp.message_text != nil
  144.      @now_text = $game_temp.message_text
  145.      if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then
  146.         @face_file = $1 + ".png"
  147.         @x = @face_indent = 128
  148.        if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")
  149.          self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
  150.        end
  151.        @now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" }
  152.      end
  153.   
  154.      begin
  155.      last_text = @now_text.clone
  156.      @now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) }
  157.      end until @now_text == last_text
  158.      @now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  159.        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  160.       end
  161.      
  162.      #NEW
  163.      #Dubealex's Stop Skip Text ON-OFF
  164.      @now_text.gsub!(/\\[%]/) { "\100" }
  165.      #End new command
  166.       
  167.      #NEW
  168.      #Dubealex's Show Monster Name Feature
  169.       @now_text.gsub!(/\\[Mm]\[([0-9]+)\]/) do
  170.       $data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : ""
  171.       end
  172.       #End new command
  173.       
  174.      #NEW
  175.      #Dubealex's Show Item Price Feature
  176.       @now_text.gsub!(/\\[Pp]rice\[([0-9]+)\]/) do
  177.       $data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : ""
  178.       end
  179.       #End new command
  180.       
  181.      #NEW
  182.      #Dubealex's Show Hero Class Name Feature
  183.       @now_text.gsub!(/\\[Cc]lass\[([0-9]+)\]/) do
  184.       $data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : ""
  185.       end
  186.       #End new command
  187.       
  188.      #NEW
  189.      #Dubealex's Show Current Map Name Feature
  190.       @now_text.gsub!(/\\[Mm]ap/) do
  191.       $game_map.name    != nil ? $game_map.name    : ""
  192.       end
  193.       #End new command
  194.       
  195.      #NEW
  196.      #Dubealex's Choose Name Box Text Color
  197.       @now_text.gsub!(/\\[Zz]\[([0-9]+)\]/) do
  198.       $ams.name_box_text_color=$1.to_i
  199.       @now_text.sub!(/\\[Zz]\[([0-9]+)\]/) { "" }
  200.       end
  201.       #End new command
  202.       
  203.      name_window_set = false
  204.      if (/\\[Nn]ame\[(.+?)\]/.match(@now_text)) != nil
  205.        name_window_set = true
  206.        name_text = $1
  207.        @now_text.sub!(/\\[Nn]ame\[(.*?)\]/) { "" }
  208.      end
  209.   
  210.      if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then
  211.        @popchar = $1.to_i
  212.        if @popchar == -1
  213.          @x = @indent = 48
  214.          @y = 4
  215.        end
  216.        @now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" }
  217.      end
  218.   
  219.      @max_choice_x = 0
  220.      if @popchar >= 0
  221.        @text_save = @now_text.clone
  222.        @max_x = 0
  223.        @max_y = 4
  224.        for i in 0..3
  225.          line = @now_text.split(/\n/)[3-i]
  226.          @max_y -= 1 if line == nil and @max_y <= 4-i
  227.          next if line == nil
  228.          line.gsub!(/\\\w\[(\w+)\]/) { "" }
  229.          cx = contents.text_size(line).width
  230.          @max_x = cx if cx > @max_x
  231.          if i >= $game_temp.choice_start
  232.            @max_choice_x = cx if cx > @max_choice_x
  233.          end
  234.        end
  235.        self.width = @max_x + 32 + @face_indent
  236.        self.height = (@max_y - 1) * 32 + 64
  237.        @max_choice_x -= 68
  238.        @max_choice_x -= @face_indent*216/128
  239.      else
  240.        @max_x = self.width - 32 - @face_indent
  241.        for i in 0..3
  242.          line = @now_text.split(/\n/)[i]
  243.          next if line == nil
  244.          line.gsub!(/\\\w\[(\w+)\]/) { "" }
  245.          cx = contents.text_size(line).width
  246.          if i >= $game_temp.choice_start
  247.            @max_choice_x = cx if cx > @max_choice_x
  248.          end
  249.        end
  250.        @max_choice_x += 8
  251.      end
  252.      @cursor_width = 0
  253.      @now_text.gsub!(/\\\\/) { "\000" }
  254.      @now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { "\001[#{$1}]" }
  255.      @now_text.gsub!(/\\[Gg]/) { "\002" }
  256.      @now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\003[#{$1}]" }
  257.      @now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "\004[#{$1}]" }
  258.      
  259.       #NEW
  260.       #Dubealex's Permanent Color Change
  261.       @now_text.gsub!(/\\[Cc]olor\[([0-9]+)\]/) do
  262.         $ams.message_box_text_color= $1.to_i
  263.        @now_text.sub!(/\\[Cc]\[([0-9]+)\]/) { "" }
  264.         end
  265.       #End of new command
  266.       
  267.       #NEW
  268.       #Dubealex's Font Change Feature
  269.        @now_text.gsub(/\\[Tt]\[(.*?)\]/) do
  270.         buftxt = $1.to_s
  271.         $ams.font_type = buftxt
  272.         @now_text.sub!(/\\[Tt]\[(.*?)\]/) { "" }
  273.         end
  274.       #End of new command
  275.       
  276.      @now_text.gsub!(/\\[.]/) { "\005" }
  277.      @now_text.gsub!(/\\[|]/) { "\006" }
  278.      @now_text.gsub!(/\\[>]/) { "\016" }
  279.      @now_text.gsub!(/\\[<]/) { "\017" }
  280.      @now_text.gsub!(/\\[!]/) { "\020" }
  281.      @now_text.gsub!(/\\[~]/) { "\021" }
  282.      @now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\022[#{$1}]" }
  283.      @now_text.gsub!(/\\[Ii]/) { "\023" }
  284.      @now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }
  285.      @now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }
  286.      @now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" }
  287.      @now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "\027[#{$1}]" }
  288.      
  289.      reset_window
  290.      
  291.      if name_window_set
  292.        color=$ams.name_box_text_color
  293.        off_x =  $ams.name_box_x_offset
  294.        off_y =  $ams.name_box_y_offset
  295.        space = 2
  296.        x = self.x + off_x - space / 2
  297.        y = self.y + off_y - space / 2
  298.        w = self.contents.text_size(name_text).width + $ams.name_box_width + space
  299.        h = $ams.name_box_height + space
  300.        @name_window_frame = Window_Frame.new(x, y, w, h)
  301.        @name_window_frame.z = self.z + 1
  302.        x = self.x + off_x + 4
  303.        y = self.y + off_y
  304.        @name_window_text  = Air_Text.new(x, y, name_text, color)
  305.        @name_window_text.z = self.z + 2
  306.      end
  307.    end
  308.   
  309.    reset_window
  310.    
  311.    if $game_temp.choice_max > 0
  312.      @item_max = $game_temp.choice_max
  313.      self.active = true
  314.      self.index = 0
  315.    end
  316.   
  317.    if $game_temp.num_input_variable_id > 0
  318.      digits_max = $game_temp.num_input_digits_max
  319.      number = $game_variables[$game_temp.num_input_variable_id]
  320.      @input_number_window = Window_InputNumber.new(digits_max)
  321.      @input_number_window.number = number
  322.      @input_number_window.x = self.x + 8
  323.      @input_number_window.y = self.y + $game_temp.num_input_start * 32
  324.    end
  325.   end
  326.   
  327.   #--------------------------------------------------------------------------
  328.   
  329.   def update
  330.    
  331.    super
  332.    
  333.    if @fade_in
  334.      self.contents_opacity += 24
  335.      if @input_number_window != nil
  336.        @input_number_window.contents_opacity += 24
  337.      end
  338.      if self.contents_opacity == 255
  339.        @fade_in = false
  340.      end
  341.      return
  342.    end
  343.    @now_text = nil if @now_text == ""
  344.   
  345.    if @now_text != nil and @mid_stop == false
  346.      if @write_wait > 0
  347.        @write_wait -= 1
  348.        return
  349.      end
  350.      text_not_skip = LETTER_BY_LETTER_MODE
  351.      while true
  352.        @max_x = @x if @max_x < @x
  353.        @max_y = @y if @max_y < @y
  354.        if (c = @now_text.slice!(/./m)) != nil
  355.          if c == "\000"
  356.            c = "\\"
  357.          end
  358.          
  359.          if c == "\001"
  360.            @now_text.sub!(/\[([0123456789ABCDEF#]+)\]/, "")
  361.            temp_color = $1
  362.            color = temp_color.to_i
  363.            leading_x = temp_color.to_s.slice!(/./m)
  364.            if leading_x == "#"
  365.              self.contents.font.color = hex_color(temp_color)
  366.              next
  367.            end
  368.            if color >= 0 and color <= 7
  369.              self.contents.font.color = text_color(color)
  370.            end
  371.            next
  372.          end
  373.   
  374.          if c == "\002"
  375.            if @gold_window == nil and @popchar <= 0
  376.              @gold_window = Window_Gold.new
  377.              @gold_window.x = 560 - @gold_window.width
  378.              if $game_temp.in_battle
  379.                @gold_window.y = 192
  380.              else
  381.                @gold_window.y = self.y >= 128 ? 32 : 384
  382.              end
  383.              @gold_window.opacity = self.opacity
  384.              @gold_window.back_opacity = self.back_opacity
  385.            end
  386.            c = ""
  387.          end
  388.   
  389.          if c == "\003"
  390.            @now_text.sub!(/\[([0-9]+)\]/, "")
  391.            speed = $1.to_i
  392.            if speed >= 0 and speed <= 19
  393.              @write_speed = speed
  394.            end
  395.            c = ""
  396.          end
  397.   
  398.          if c == "\004"
  399.            @now_text.sub!(/\[(.*?)\]/, "")
  400.            buftxt = $1.dup.to_s
  401.            if buftxt.match(/\//) == nil and buftxt != "" then
  402.              $soundname_on_speak = "Audio/SE/" + buftxt
  403.            else
  404.              $soundname_on_speak = buftxt.dup
  405.            end
  406.            c = ""
  407.          elsif c == "\004"
  408.            c = ""
  409.          end
  410.          
  411.          if c == "\005"
  412.            @write_wait += 5
  413.            c = ""
  414.          end
  415.          
  416.          if c == "\006"
  417.            @write_wait += 20
  418.            c = ""
  419.          end
  420.          
  421.          if c == "\016"
  422.            text_not_skip = false
  423.            c = ""
  424.          end
  425.          
  426.          if c == "\017"
  427.            text_not_skip = true
  428.            c = ""
  429.          end
  430.          
  431.          if c == "\020"
  432.            @mid_stop = true
  433.            c = ""
  434.          end
  435.          
  436.          if c == "\021"
  437.            terminate_message
  438.            return
  439.          end
  440.          
  441.          if c == "\023"
  442.            @indent = @x
  443.            c = ""
  444.          end
  445.   
  446.          if c == "\024"
  447.            @now_text.sub!(/\[([0-9]+)\]/, "")
  448.            @opacity = $1.to_i
  449.            color = self.contents.font.color
  450.            self.contents.font.name = $ams.font_type
  451.            self.contents.font.size = $ams.font_size
  452.            self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255)
  453.            c = ""
  454.          end
  455.   
  456.          if c == "\025"
  457.            @now_text.sub!(/\[([0-9]+)\]/, "")
  458.            self.contents.font.size = [[$1.to_i, 6].max, 32].min
  459.            c = ""
  460.          end
  461.   
  462.          if c == "\026"
  463.            @now_text.sub!(/\[([0-9]+)\]/, "")
  464.            @x += $1.to_i
  465.            c = ""
  466.          end
  467.          
  468.          if c == "\027"
  469.            @now_text.sub!(/\[(.*?)\]/, "")
  470.            @x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity)
  471.            if $soundname_on_speak != ""
  472.              Audio.se_play($soundname_on_speak)
  473.            end
  474.          c = ""
  475.          end
  476.   
  477.          if c == "\030"
  478.            @now_text.sub!(/\[(.*?)\]/, "")
  479.            self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24))
  480.            if $soundname_on_speak != ""
  481.              Audio.se_play($soundname_on_speak)
  482.            end
  483.            @x += 24
  484.            c = ""
  485.          end
  486.   
  487.          if c == "\n"
  488.            @lines += 1
  489.            @y += 1
  490.            @x = 0 + @indent + @face_indent
  491.            if @lines >= $game_temp.choice_start
  492.              @x = 8 + @indent + @face_indent
  493.              @cursor_width = @max_choice_x
  494.            end
  495.            c = ""
  496.          end
  497.          
  498.          if c == "\022"
  499.            @now_text.sub!(/\[([0-9]+)\]/, "")
  500.            @x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i)
  501.            c = ""
  502.          end
  503.          
  504.          #NEW
  505.          #Dubealex's Text Skip On/OFF Command
  506.           if c == "\100"
  507.              if @alex_skip==false
  508.                 @alex_skip=true
  509.              else
  510.                @alex_skip=false
  511.              end
  512.             c = ""
  513.           end  
  514.           #end of new command
  515.                                       
  516.          if c != ""
  517.            self.contents.draw_text(0+@x, 32 * @y, 40, 32, c)
  518.            @x += self.contents.text_size(c).width
  519.            if $soundname_on_speak != "" then
  520.              Audio.se_play($soundname_on_speak)
  521.            end
  522.          end
  523.          
  524.   #SKIP_TEXT_CODE
  525.   
  526.   # B = Escape, 0 (On The NumPad), X
  527.   # C = Enter, Space Bar and C
  528.   # A = Shift, Z
  529.   
  530.      if Input.press?(Input::C) # <-- Change the value on that line
  531.        if @alex_skip==false      
  532.        text_not_skip = false
  533.        end
  534.          end
  535.        else
  536.          text_not_skip = true
  537.          break
  538.        end
  539.       
  540.        if text_not_skip
  541.          break
  542.        end
  543.      end
  544.      @write_wait += @write_speed
  545.      return
  546.    end
  547.   
  548.    if @input_number_window != nil
  549.      @input_number_window.update
  550.      if Input.trigger?(Input::C)
  551.        $game_system.se_play($data_system.decision_se)
  552.        $game_variables[$game_temp.num_input_variable_id] =
  553.          @input_number_window.number
  554.        $game_map.need_refresh = true
  555.        @input_number_window.dispose
  556.        @input_number_window = nil
  557.        terminate_message
  558.      end
  559.      return
  560.    end
  561.   
  562.    if @contents_showing
  563.      if $game_temp.choice_max == 0
  564.        self.pause = true
  565.      end
  566.      
  567.      if Input.trigger?(Input::B)
  568.        if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
  569.          $game_system.se_play($data_system.cancel_se)
  570.          $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
  571.          terminate_message
  572.        end
  573.      end
  574.      
  575.      if Input.trigger?(Input::C)
  576.        if $game_temp.choice_max > 0
  577.          $game_system.se_play($data_system.decision_se)
  578.          $game_temp.choice_proc.call(self.index)
  579.        end
  580.        if @mid_stop
  581.          @mid_stop = false
  582.          return
  583.        else
  584.          terminate_message
  585.        end
  586.      end
  587.      return
  588.    end
  589.   
  590.    if @fade_out == false and $game_temp.message_text != nil
  591.      @contents_showing = true
  592.      $game_temp.message_window_showing = true
  593.      refresh
  594.      Graphics.frame_reset
  595.      self.visible = true
  596.      self.contents_opacity = 0
  597.      if @input_number_window != nil
  598.        @input_number_window.contents_opacity = 0
  599.      end
  600.      @fade_in = true
  601.      return
  602.    end
  603.   
  604.    if self.visible
  605.      @fade_out = true
  606.      self.opacity -= 48
  607.      if self.opacity == 0
  608.        self.visible = false
  609.        @fade_out = false
  610.        $game_temp.message_window_showing = false
  611.      end
  612.      return
  613.    end
  614.   end
  615.   
  616.   #--------------------------------------------------------------------------
  617.   
  618.   def get_character(parameter)
  619.   
  620.    case parameter
  621.    when 0  
  622.      return $game_player
  623.    else
  624.      events = $game_map.events
  625.      return events == nil ? nil : events[parameter]
  626.    end
  627.   end
  628.   
  629.   #--------------------------------------------------------------------------
  630.   
  631.   def reset_window
  632.   
  633.    if @popchar >= 0
  634.      events = $game_map.events
  635.      if events != nil
  636.        character = get_character(@popchar)
  637.        x = [[character.screen_x -  0 - self.width / 2, 4].max, 636 - self.width].min
  638.        y = [[character.screen_y - 48 - self.height, 4].max, 476 - self.height].min
  639.        self.x = x
  640.        self.y = y
  641.      end
  642.    elsif @popchar == -1
  643.      self.x = -4
  644.      self.y = -4
  645.      self.width = 648
  646.      self.height = 488
  647.    else
  648.      if $game_temp.in_battle
  649.        self.y = 16
  650.      else
  651.        case $game_system.message_position
  652.        when 0  
  653.          self.y = 16
  654.        when 1  
  655.          self.y = 160
  656.        when 2  
  657.          self.y = 304
  658.        end
  659.        self.x = 80
  660.        if @face_file == nil
  661.          self.width = 480
  662.        else
  663.          self.width = 600
  664.          self.x -= 60
  665.        end
  666.        self.height = 160
  667.      end
  668.    end
  669.    self.contents = Bitmap.new(self.width - 32, self.height - 32)
  670.    self.contents.font.color = text_color($ams.message_box_text_color)
  671.    self.contents.font.name = $ams.font_type
  672.     self.contents.font.size = $ams.font_size
  673.    if @face_file != nil
  674.      self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
  675.    end
  676.    if @popchar == -1
  677.      self.opacity = 255
  678.      self.back_opacity = 0
  679.    elsif $game_system.message_frame == 0
  680.      self.opacity = 255
  681.      self.back_opacity = $ams.message_box_opacity
  682.    else
  683.      self.opacity = 0
  684.      self.back_opacity = $ams.message_box_opacity
  685.    end
  686.   end
  687.   
  688.   #--------------------------------------------------------------------------
  689.   
  690.   def gaiji_draw(x, y, num)
  691.   
  692.    if @gaiji_cache == nil
  693.      return 0
  694.    else
  695.      if @gaiji_cache.width < num * 24
  696.        return 0
  697.      end
  698.   
  699.      if self.contents.font.size >= 20 and self.contents.font.size <= 24
  700.        size = 24
  701.      else
  702.        size = self.contents.font.size * 100 * 24 / 2200
  703.      end
  704.   
  705.      self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24))
  706.   
  707.      if $soundname_on_speak != "" then
  708.        Audio.se_play($soundname_on_speak)
  709.      end
  710.      return size
  711.    end
  712.   end
  713.   
  714.   #--------------------------------------------------------------------------
  715.   
  716.   def line_height
  717.    return 32
  718.   
  719.    if self.contents.font.size >= 20 and self.contents.font.size <= 24
  720.      return 32
  721.    else
  722.      return self.contents.font.size * 15 / 10
  723.    end
  724.   end
  725.   
  726.   #--------------------------------------------------------------------------
  727.   
  728.   def ruby_draw_text(target, x, y, str,opacity)
  729.   
  730.    sizeback = target.font.size
  731.    target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2
  732.    rubysize = [rubysize, 6].max
  733.    opacity = [[opacity, 0].max, 255].min
  734.    split_s = str.split(/,/)
  735.    split_s[0] == nil ? split_s[0] = "" : nil
  736.    split_s[1] == nil ? split_s[1] = "" : nil
  737.   
  738.    height = sizeback + rubysize
  739.    width  = target.text_size(split_s[0]).width
  740.   
  741.    target.font.size = rubysize
  742.    ruby_width = target.text_size(split_s[1]).width
  743.    target.font.size = sizeback
  744.   
  745.    buf_width = [target.text_size(split_s[0]).width, ruby_width].max
  746.   
  747.    width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0
  748.   
  749.    if opacity == 255
  750.      target.font.size = rubysize
  751.      target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1])
  752.      target.font.size = sizeback
  753.      target.draw_text(x, y, width, target.font.size, split_s[0])
  754.      return width
  755.    else
  756.      if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height
  757.        @opacity_text_buf.dispose
  758.        @opacity_text_buf = Bitmap.new(buf_width, height)
  759.      else
  760.        @opacity_text_buf.clear
  761.      end
  762.      @opacity_text_buf.font.size = rubysize
  763.      @opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1)
  764.      @opacity_text_buf.font.size = sizeback
  765.      @opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1)
  766.      if sub_x >= 0
  767.        target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
  768.      else
  769.        target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
  770.      end
  771.      return width
  772.    end
  773.   end
  774.   
  775.   #--------------------------------------------------------------------------
  776.   
  777.   def convart_value(option, index)
  778.    option == nil ? option = "" : nil
  779.    option.downcase!
  780.   
  781.    case option
  782.    when "i"
  783.      unless $data_items[index].name == nil
  784.        r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)
  785.      end
  786.    when "w"
  787.      unless $data_weapons[index].name == nil
  788.        r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
  789.      end
  790.    when "a"
  791.      unless $data_armors[index].name == nil
  792.        r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
  793.      end
  794.    when "s"
  795.      unless $data_skills[index].name == nil
  796.        r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name)
  797.      end
  798.    else
  799.      r = $game_variables[index]
  800.    end
  801.   
  802.    r == nil ? r = "" : nil
  803.    return r
  804.   end
  805.   
  806.   #--------------------------------------------------------------------------
  807.   
  808.   def dispose
  809.    terminate_message
  810.   
  811.    if @gaiji_cache != nil
  812.      unless @gaiji_cache.disposed?
  813.        @gaiji_cache.dispose
  814.      end
  815.    end
  816.   
  817.    unless @opacity_text_buf.disposed?
  818.      @opacity_text_buf.dispose
  819.    end
  820.   
  821.    $game_temp.message_window_showing = false
  822.    if @input_number_window != nil
  823.      @input_number_window.dispose
  824.    end
  825.    super
  826.   end
  827.   
  828.   #--------------------------------------------------------------------------
  829.   
  830.   def update_cursor_rect
  831.    if @index >= 0
  832.      n = $game_temp.choice_start + @index
  833.      self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32)
  834.    else
  835.      self.cursor_rect.empty
  836.    end
  837.   end
  838.   end
  839.   #=========================================
  840.   # ▲ CLASS Window_Message Ends
  841.   #=========================================
  842.   
  843.   
  844.   #=========================================
  845.   # ▼ Class Window_Frame Begins
  846.   #=========================================
  847.   class Window_Frame < Window_Base
  848.   
  849.   def initialize(x, y, width, height)
  850.    super(x, y, width, height)
  851.    self.windowskin = RPG::Cache.windowskin($ams.name_box_skin)
  852.    self.contents = nil
  853.   end
  854.   
  855.   #--------------------------------------------------------------------------
  856.   
  857.   def dispose
  858.    super
  859.   end
  860.   end
  861.   #=========================================
  862.   # ▲ CLASS Window_Frame Ends
  863.   #=========================================
  864.   
  865.   
  866.   #=========================================
  867.   # ▼ CLASS Game_Map Additional Code Begins
  868.   #=========================================
  869.   class Game_Map
  870.    
  871.   #Dubealex's Addition (from XRXS) to show Map Name on screen
  872.   def name
  873.     $map_infos[@map_id]
  874.   end
  875.   end
  876.   #=========================================
  877.   # ▲ CLASS Game_Map Additional Code Ends
  878.   #=========================================
  879.   
  880.   
  881.   #=========================================
  882.   # ▼ CLASS Scene_Title Additional Code Begins
  883.   #=========================================
  884.   class Scene_Title
  885.   
  886.   #Dubealex's Addition (from XRXS) to show Map Name on screen
  887.     $map_infos = load_data("Data/MapInfos.rxdata")
  888.     for key in $map_infos.keys
  889.       $map_infos[key] = $map_infos[key].name
  890.     end
  891.    
  892.     #Dubealex's addition to save data from the AMS in the save files
  893.     $ams = AMS.new
  894.    
  895.   end
  896.   #=========================================
  897.   # ▲ CLASS Scene_Title Additional Code Ends
  898.   #=========================================
  899.   
  900.   #===================================================
  901.   # ▼ CLASS Scene_Save Additional Code Begins
  902.   #===================================================
  903.   class Scene_Save
  904.   
  905.   alias alex_ams_write_data write_data
  906.   
  907.     def write_data(file)
  908.       alex_ams_write_data(file)
  909.       Marshal.dump($ams, file)
  910.     end
  911.    
  912.   end  
  913.   #===================================================
  914.   # ▲ CLASS Scene_Save Additional Code Ends
  915.   #===================================================
  916.   
  917.   
  918.   #===================================================
  919.   # ▼ CLASS Scene_Load Additional Code Begins
  920.   #===================================================
  921.   class Scene_Load
  922.   
  923.   alias alex_ams_read_data read_data
  924.   
  925.     def read_data(file)
  926.       alex_ams_read_data(file)
  927.       $ams      = Marshal.load(file)
  928.     end
  929.    
  930.   end  
  931.   #===================================================
  932.   # ▲ CLASS Scene_Load Additional Code Ends
  933.   #===================================================
  934.   
  935.   #===================================================
  936.   # ▼ CLASS Window_Base Additional Code Begins
  937.   #===================================================
  938.   class Window_Base < Window
  939.    
  940.   #Dubealex Addition (from Phylomorphis) to use HTML Hex Code Colors
  941.    def hex_color(string)
  942.      red = 0
  943.      green = 0
  944.      blue = 0
  945.      if string.size != 6
  946.        print("Hex strings must be six characters long.")
  947.        print("White text will be used.")
  948.        return Color.new(255, 255, 255, 255)
  949.      end
  950.      for i in 1..6
  951.        s = string.slice!(/./m)
  952.        if s == "#"
  953.          print("Hex color string may not contain the \"#\" character.")
  954.          print("White text will be used.")
  955.          return Color.new(255, 255, 255, 255)
  956.        end
  957.        value = hex_convert(s)
  958.        if value == -1
  959.          print("Error converting hex value.")
  960.          print("White text will be used.")
  961.          return Color.new(255, 255, 255, 255)
  962.        end
  963.        case i
  964.        when 1
  965.          red += value * 16
  966.        when 2
  967.          red += value
  968.        when 3
  969.          green += value * 16
  970.        when 4
  971.          green += value
  972.        when 5
  973.          blue += value * 16
  974.        when 6
  975.          blue += value
  976.        end
  977.      end
  978.      return Color.new(red, green, blue, 255)
  979.    end
  980.    
  981.   #--------------------------------------------------------------------------
  982.    
  983.    def hex_convert(character)
  984.      case character
  985.       when "0"
  986.         return 0
  987.      when "1"
  988.         return 1
  989.      when "2"
  990.         return 2
  991.      when "3"
  992.         return 3
  993.      when "4"
  994.         return 4
  995.      when "5"
  996.         return 5
  997.      when "6"
  998.         return 6
  999.      when "7"
  1000.         return 7
  1001.      when "8"
  1002.         return 8
  1003.      when "9"
  1004.         return 9
  1005.      when "A"
  1006.         return 10
  1007.      when "B"
  1008.         return 11
  1009.      when "C"
  1010.         return 12
  1011.      when "D"
  1012.         return 13
  1013.      when "E"
  1014.         return 14
  1015.      when "F"
  1016.         return 15
  1017.       end
  1018.      return -1
  1019.    end
  1020.   end
  1021.   #=========================================
  1022.   # ▲ CLASS Window_Base Additional Code Ends
  1023.   #=========================================
  1024.   
  1025.   
  1026.   #=========================================
  1027.   # ▼ Class Air_Text Begins
  1028.   #=========================================
  1029.   class Air_Text < Window_Base
  1030.   
  1031.   def initialize(x, y, designate_text, color=0)
  1032.    
  1033.    super(x-16, y-16, 32 + designate_text.size * 12, 56)
  1034.    self.opacity      = 0
  1035.    self.back_opacity = 0
  1036.    self.contents = Bitmap.new(self.width - 32, self.height - 32)
  1037.    w = self.contents.width
  1038.    h = self.contents.height
  1039.    self.contents.font.name = $ams.name_font_type
  1040.    self.contents.font.size = $ams.name_font_size
  1041.    self.contents.font.color = text_color(color)
  1042.    self.contents.draw_text(0, 0, w, h, designate_text)
  1043.   end
  1044.   
  1045.   #--------------------------------------------------------------------------
  1046.   
  1047.   def dispose
  1048.    self.contents.clear
  1049.    super
  1050.   end
  1051.   end
  1052.   #==========================================
  1053.   # ▲ CLASS Air_Text  Ends
  1054.   #==========================================
  1055.   
  1056.   #===================================================
  1057.   # ▼ CLASS Game_System Additional Code Begins
  1058.   #===================================================
  1059.   class Game_System
  1060.    
  1061.     alias alex_ams_game_system_initialize initialize
  1062.    
  1063.     def initialize
  1064.       alex_ams_game_system_initialize
  1065.       @message_position = 0 #Choose the Y axis offset of the msg box. default= 2
  1066.     end
  1067.    
  1068.   end
  1069.   #===================================================
  1070.   # ▲ CLASS Game_System Additional Code Ends
  1071.   #===================================================

  1072. #--------------------------------------------------------------------------
  1073. # * End SDK Enable Test
  1074. #--------------------------------------------------------------------------
  1075. end
复制代码

Lv1.梦旅人

查无此人

梦石
0
星屑
50
在线时间
9 小时
注册时间
2006-5-8
帖子
1399
3
发表于 2007-7-10 16:50:25 | 只看该作者
居然是Dubealex大的 AMS...但是怎么不是通用的R4版本??!!
KRKR + NS 学习中..........
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
4 小时
注册时间
2006-5-12
帖子
447
2
 楼主| 发表于 2007-7-10 07:18:04 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
{/pz}谁能帮我翻译下这个文章显示脚本啊?
  1. #=============================================================================
  2. # ■ AMS - Advanced Message Script
  3. #=============================================================================
  4. # Dubealex
  5. # Version 3
  6. # 29.11.05
  7. #=============================================================================
  8. # For more infos and update, visit:
  9. # www.dubealex.com (Creation Asylum)
  10. #
  11. # Edited, Fixed and Enhanced by: Dubealex
  12. # Original Script Core by: XRXS Scripter (Jap Dudes)
  13. # HTML Hexadecimal color feature from: Phylomorphis
  14. #
  15. # Special Thanks:
  16. # Rabu: For enabling the Show Face feature in an encrypted project
  17. #
  18. # To found all my new features, search the following:  #NEW
  19. # To configure the button to skip the dialog, search:  #SKIP_TEXT_CODE
  20. #=============================================================================

  21. #--------------------------------------------------------------------------
  22. # * SDK Log Script
  23. #--------------------------------------------------------------------------
  24. SDK.log("AMS", "Dubealex", 3, "29.11.05")

  25. #--------------------------------------------------------------------------
  26. # * Begin SDK Enable Test
  27. #--------------------------------------------------------------------------
  28. if SDK.state("AMS") == true

  29.   LETTER_BY_LETTER_MODE = true   #Set the letter by letter mode ON/OFF         
  30.   
  31.   #===================================================
  32.   # ▼ CLASS AMS Begins
  33.   #===================================================
  34.   class AMS
  35.    
  36.     attr_accessor :name_box_x_offset
  37.     attr_accessor :name_box_y_offset
  38.     attr_accessor :font_type
  39.     attr_accessor :name_font_type
  40.     attr_accessor :font_size
  41.     attr_accessor :name_font_size
  42.     attr_accessor :message_box_opacity
  43.     attr_accessor :name_box_skin
  44.     attr_accessor :name_box_text_color
  45.     attr_accessor :message_box_text_color
  46.     attr_accessor :message_box_skin
  47.     attr_accessor :name_box_width
  48.     attr_accessor :name_box_height
  49.      
  50.    def initialize
  51.      
  52.     @name_box_x_offset = 0       #Choose the X axis offset of the name bos. default= 0
  53.     @name_box_y_offset = -10    #Choose the Y axis offset of the name bos. default= -10
  54.     @name_box_width = 8           #Choose the width of the Name Box. default= 8  
  55.     @name_box_height = 26        #Choose the height of the Name Box. default= 26
  56.    
  57.     @font_type = "Tahoma"           #Choose the Font Name (Case Sensitive) for message box
  58.     @name_font_type = "Tahoma" #Choose the Font Name (Case Sensitive) for Name Box
  59.     @font_size = 22                      #Choose the default Font Size for message box text
  60.     @name_font_size = 22            #Choose the deafault Font Size for Name Box text
  61.     @name_box_text_color=0        #Choose the Text Color of the Name Box
  62.     @message_box_text_color=0   #Choose the Text Color of the Message Box
  63.    
  64.     @message_box_opacity = 160            #Choose the opacity of the message window. Default=160
  65.     @message_box_skin = "001-Blue01"   #Choose the WindowSkin for the Message Box
  66.     @name_box_skin = "001-Blue01"       #Choose the WindowSkin for the Name Box
  67.    
  68.    end
  69.   end
  70.   #===================================================
  71.   # ▲ CLASS AMS Ends
  72.   #===================================================
  73.   
  74.   
  75.   #===================================================
  76.   # ▼ Class Window_Message Begins
  77.   #===================================================
  78.   class Window_Message < Window_Selectable   
  79.   
  80.   alias xrxs9_initialize initialize
  81.   
  82.   def initialize
  83.   
  84.   @alex_skip = false
  85.   
  86.    xrxs9_initialize
  87.   
  88.    if $soundname_on_speak == nil then
  89.      $soundname_on_speak = ""
  90.    end
  91.   
  92.    $gaiji_file = "./Graphics/Gaiji/sample.png"
  93.   
  94.    if FileTest.exist?($gaiji_file)
  95.      @gaiji_cache = Bitmap.new($gaiji_file)
  96.    else
  97.      @gaigi_cache = nil
  98.    end
  99.    @opacity_text_buf = Bitmap.new(32, 32)
  100.   end
  101.   
  102.   #--------------------------------------------------------------------------
  103.   
  104.   alias xrxs9_terminate_message terminate_message
  105.   
  106.   def terminate_message
  107.    
  108.    if @name_window_frame != nil
  109.      @name_window_frame.dispose
  110.      @name_window_frame = nil
  111.    end
  112.    
  113.    if @name_window_text  != nil
  114.      @name_window_text.dispose
  115.      @name_window_text  = nil
  116.    end
  117.    xrxs9_terminate_message
  118.   end
  119.   
  120.   #--------------------------------------------------------------------------
  121.   
  122.   def refresh
  123.    
  124.    self.contents.clear
  125.    self.contents.font.color = text_color($ams.message_box_text_color)
  126.    self.contents.font.name = $ams.font_type
  127.    self.contents.font.size = $ams.font_size
  128.    self.windowskin = RPG::Cache.windowskin($ams.message_box_skin)
  129.    @x = @y = @max_x = @max_y = @indent = @lines = 0
  130.    @face_indent = 0
  131.    @opacity = 255
  132.    @cursor_width = 0
  133.    @write_speed = 0
  134.    @write_wait = 0
  135.    @mid_stop = false
  136.    @face_file = nil
  137.    @popchar = -2
  138.    
  139.    if $game_temp.choice_start == 0
  140.      @x = 8
  141.    end
  142.    
  143.    if $game_temp.message_text != nil
  144.      @now_text = $game_temp.message_text
  145.      if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then
  146.         @face_file = $1 + ".png"
  147.         @x = @face_indent = 128
  148.        if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")
  149.          self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
  150.        end
  151.        @now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" }
  152.      end
  153.   
  154.      begin
  155.      last_text = @now_text.clone
  156.      @now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) }
  157.      end until @now_text == last_text
  158.      @now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  159.        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  160.       end
  161.      
  162.      #NEW
  163.      #Dubealex's Stop Skip Text ON-OFF
  164.      @now_text.gsub!(/\\[%]/) { "\100" }
  165.      #End new command
  166.       
  167.      #NEW
  168.      #Dubealex's Show Monster Name Feature
  169.       @now_text.gsub!(/\\[Mm]\[([0-9]+)\]/) do
  170.       $data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : ""
  171.       end
  172.       #End new command
  173.       
  174.      #NEW
  175.      #Dubealex's Show Item Price Feature
  176.       @now_text.gsub!(/\\[Pp]rice\[([0-9]+)\]/) do
  177.       $data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : ""
  178.       end
  179.       #End new command
  180.       
  181.      #NEW
  182.      #Dubealex's Show Hero Class Name Feature
  183.       @now_text.gsub!(/\\[Cc]lass\[([0-9]+)\]/) do
  184.       $data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : ""
  185.       end
  186.       #End new command
  187.       
  188.      #NEW
  189.      #Dubealex's Show Current Map Name Feature
  190.       @now_text.gsub!(/\\[Mm]ap/) do
  191.       $game_map.name    != nil ? $game_map.name    : ""
  192.       end
  193.       #End new command
  194.       
  195.      #NEW
  196.      #Dubealex's Choose Name Box Text Color
  197.       @now_text.gsub!(/\\[Zz]\[([0-9]+)\]/) do
  198.       $ams.name_box_text_color=$1.to_i
  199.       @now_text.sub!(/\\[Zz]\[([0-9]+)\]/) { "" }
  200.       end
  201.       #End new command
  202.       
  203.      name_window_set = false
  204.      if (/\\[Nn]ame\[(.+?)\]/.match(@now_text)) != nil
  205.        name_window_set = true
  206.        name_text = $1
  207.        @now_text.sub!(/\\[Nn]ame\[(.*?)\]/) { "" }
  208.      end
  209.   
  210.      if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then
  211.        @popchar = $1.to_i
  212.        if @popchar == -1
  213.          @x = @indent = 48
  214.          @y = 4
  215.        end
  216.        @now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" }
  217.      end
  218.   
  219.      @max_choice_x = 0
  220.      if @popchar >= 0
  221.        @text_save = @now_text.clone
  222.        @max_x = 0
  223.        @max_y = 4
  224.        for i in 0..3
  225.          line = @now_text.split(/\n/)[3-i]
  226.          @max_y -= 1 if line == nil and @max_y <= 4-i
  227.          next if line == nil
  228.          line.gsub!(/\\\w\[(\w+)\]/) { "" }
  229.          cx = contents.text_size(line).width
  230.          @max_x = cx if cx > @max_x
  231.          if i >= $game_temp.choice_start
  232.            @max_choice_x = cx if cx > @max_choice_x
  233.          end
  234.        end
  235.        self.width = @max_x + 32 + @face_indent
  236.        self.height = (@max_y - 1) * 32 + 64
  237.        @max_choice_x -= 68
  238.        @max_choice_x -= @face_indent*216/128
  239.      else
  240.        @max_x = self.width - 32 - @face_indent
  241.        for i in 0..3
  242.          line = @now_text.split(/\n/)[i]
  243.          next if line == nil
  244.          line.gsub!(/\\\w\[(\w+)\]/) { "" }
  245.          cx = contents.text_size(line).width
  246.          if i >= $game_temp.choice_start
  247.            @max_choice_x = cx if cx > @max_choice_x
  248.          end
  249.        end
  250.        @max_choice_x += 8
  251.      end
  252.      @cursor_width = 0
  253.      @now_text.gsub!(/\\\\/) { "\000" }
  254.      @now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { "\001[#{$1}]" }
  255.      @now_text.gsub!(/\\[Gg]/) { "\002" }
  256.      @now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\003[#{$1}]" }
  257.      @now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "\004[#{$1}]" }
  258.      
  259.       #NEW
  260.       #Dubealex's Permanent Color Change
  261.       @now_text.gsub!(/\\[Cc]olor\[([0-9]+)\]/) do
  262.         $ams.message_box_text_color= $1.to_i
  263.        @now_text.sub!(/\\[Cc]\[([0-9]+)\]/) { "" }
  264.         end
  265.       #End of new command
  266.       
  267.       #NEW
  268.       #Dubealex's Font Change Feature
  269.        @now_text.gsub(/\\[Tt]\[(.*?)\]/) do
  270.         buftxt = $1.to_s
  271.         $ams.font_type = buftxt
  272.         @now_text.sub!(/\\[Tt]\[(.*?)\]/) { "" }
  273.         end
  274.       #End of new command
  275.       
  276.      @now_text.gsub!(/\\[.]/) { "\005" }
  277.      @now_text.gsub!(/\\[|]/) { "\006" }
  278.      @now_text.gsub!(/\\[>]/) { "\016" }
  279.      @now_text.gsub!(/\\[<]/) { "\017" }
  280.      @now_text.gsub!(/\\[!]/) { "\020" }
  281.      @now_text.gsub!(/\\[~]/) { "\021" }
  282.      @now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\022[#{$1}]" }
  283.      @now_text.gsub!(/\\[Ii]/) { "\023" }
  284.      @now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }
  285.      @now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }
  286.      @now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" }
  287.      @now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "\027[#{$1}]" }
  288.      
  289.      reset_window
  290.      
  291.      if name_window_set
  292.        color=$ams.name_box_text_color
  293.        off_x =  $ams.name_box_x_offset
  294.        off_y =  $ams.name_box_y_offset
  295.        space = 2
  296.        x = self.x + off_x - space / 2
  297.        y = self.y + off_y - space / 2
  298.        w = self.contents.text_size(name_text).width + $ams.name_box_width + space
  299.        h = $ams.name_box_height + space
  300.        @name_window_frame = Window_Frame.new(x, y, w, h)
  301.        @name_window_frame.z = self.z + 1
  302.        x = self.x + off_x + 4
  303.        y = self.y + off_y
  304.        @name_window_text  = Air_Text.new(x, y, name_text, color)
  305.        @name_window_text.z = self.z + 2
  306.      end
  307.    end
  308.   
  309.    reset_window
  310.    
  311.    if $game_temp.choice_max > 0
  312.      @item_max = $game_temp.choice_max
  313.      self.active = true
  314.      self.index = 0
  315.    end
  316.   
  317.    if $game_temp.num_input_variable_id > 0
  318.      digits_max = $game_temp.num_input_digits_max
  319.      number = $game_variables[$game_temp.num_input_variable_id]
  320.      @input_number_window = Window_InputNumber.new(digits_max)
  321.      @input_number_window.number = number
  322.      @input_number_window.x = self.x + 8
  323.      @input_number_window.y = self.y + $game_temp.num_input_start * 32
  324.    end
  325.   end
  326.   
  327.   #--------------------------------------------------------------------------
  328.   
  329.   def update
  330.    
  331.    super
  332.    
  333.    if @fade_in
  334.      self.contents_opacity += 24
  335.      if @input_number_window != nil
  336.        @input_number_window.contents_opacity += 24
  337.      end
  338.      if self.contents_opacity == 255
  339.        @fade_in = false
  340.      end
  341.      return
  342.    end
  343.    @now_text = nil if @now_text == ""
  344.   
  345.    if @now_text != nil and @mid_stop == false
  346.      if @write_wait > 0
  347.        @write_wait -= 1
  348.        return
  349.      end
  350.      text_not_skip = LETTER_BY_LETTER_MODE
  351.      while true
  352.        @max_x = @x if @max_x < @x
  353.        @max_y = @y if @max_y < @y
  354.        if (c = @now_text.slice!(/./m)) != nil
  355.          if c == "\000"
  356.            c = "\\"
  357.          end
  358.          
  359.          if c == "\001"
  360.            @now_text.sub!(/\[([0123456789ABCDEF#]+)\]/, "")
  361.            temp_color = $1
  362.            color = temp_color.to_i
  363.            leading_x = temp_color.to_s.slice!(/./m)
  364.            if leading_x == "#"
  365.              self.contents.font.color = hex_color(temp_color)
  366.              next
  367.            end
  368.            if color >= 0 and color <= 7
  369.              self.contents.font.color = text_color(color)
  370.            end
  371.            next
  372.          end
  373.   
  374.          if c == "\002"
  375.            if @gold_window == nil and @popchar <= 0
  376.              @gold_window = Window_Gold.new
  377.              @gold_window.x = 560 - @gold_window.width
  378.              if $game_temp.in_battle
  379.                @gold_window.y = 192
  380.              else
  381.                @gold_window.y = self.y >= 128 ? 32 : 384
  382.              end
  383.              @gold_window.opacity = self.opacity
  384.              @gold_window.back_opacity = self.back_opacity
  385.            end
  386.            c = ""
  387.          end
  388.   
  389.          if c == "\003"
  390.            @now_text.sub!(/\[([0-9]+)\]/, "")
  391.            speed = $1.to_i
  392.            if speed >= 0 and speed <= 19
  393.              @write_speed = speed
  394.            end
  395.            c = ""
  396.          end
  397.   
  398.          if c == "\004"
  399.            @now_text.sub!(/\[(.*?)\]/, "")
  400.            buftxt = $1.dup.to_s
  401.            if buftxt.match(/\//) == nil and buftxt != "" then
  402.              $soundname_on_speak = "Audio/SE/" + buftxt
  403.            else
  404.              $soundname_on_speak = buftxt.dup
  405.            end
  406.            c = ""
  407.          elsif c == "\004"
  408.            c = ""
  409.          end
  410.          
  411.          if c == "\005"
  412.            @write_wait += 5
  413.            c = ""
  414.          end
  415.          
  416.          if c == "\006"
  417.            @write_wait += 20
  418.            c = ""
  419.          end
  420.          
  421.          if c == "\016"
  422.            text_not_skip = false
  423.            c = ""
  424.          end
  425.          
  426.          if c == "\017"
  427.            text_not_skip = true
  428.            c = ""
  429.          end
  430.          
  431.          if c == "\020"
  432.            @mid_stop = true
  433.            c = ""
  434.          end
  435.          
  436.          if c == "\021"
  437.            terminate_message
  438.            return
  439.          end
  440.          
  441.          if c == "\023"
  442.            @indent = @x
  443.            c = ""
  444.          end
  445.   
  446.          if c == "\024"
  447.            @now_text.sub!(/\[([0-9]+)\]/, "")
  448.            @opacity = $1.to_i
  449.            color = self.contents.font.color
  450.            self.contents.font.name = $ams.font_type
  451.            self.contents.font.size = $ams.font_size
  452.            self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255)
  453.            c = ""
  454.          end
  455.   
  456.          if c == "\025"
  457.            @now_text.sub!(/\[([0-9]+)\]/, "")
  458.            self.contents.font.size = [[$1.to_i, 6].max, 32].min
  459.            c = ""
  460.          end
  461.   
  462.          if c == "\026"
  463.            @now_text.sub!(/\[([0-9]+)\]/, "")
  464.            @x += $1.to_i
  465.            c = ""
  466.          end
  467.          
  468.          if c == "\027"
  469.            @now_text.sub!(/\[(.*?)\]/, "")
  470.            @x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity)
  471.            if $soundname_on_speak != ""
  472.              Audio.se_play($soundname_on_speak)
  473.            end
  474.          c = ""
  475.          end
  476.   
  477.          if c == "\030"
  478.            @now_text.sub!(/\[(.*?)\]/, "")
  479.            self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24))
  480.            if $soundname_on_speak != ""
  481.              Audio.se_play($soundname_on_speak)
  482.            end
  483.            @x += 24
  484.            c = ""
  485.          end
  486.   
  487.          if c == "\n"
  488.            @lines += 1
  489.            @y += 1
  490.            @x = 0 + @indent + @face_indent
  491.            if @lines >= $game_temp.choice_start
  492.              @x = 8 + @indent + @face_indent
  493.              @cursor_width = @max_choice_x
  494.            end
  495.            c = ""
  496.          end
  497.          
  498.          if c == "\022"
  499.            @now_text.sub!(/\[([0-9]+)\]/, "")
  500.            @x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i)
  501.            c = ""
  502.          end
  503.          
  504.          #NEW
  505.          #Dubealex's Text Skip On/OFF Command
  506.           if c == "\100"
  507.              if @alex_skip==false
  508.                 @alex_skip=true
  509.              else
  510.                @alex_skip=false
  511.              end
  512.             c = ""
  513.           end  
  514.           #end of new command
  515.                                       
  516.          if c != ""
  517.            self.contents.draw_text(0+@x, 32 * @y, 40, 32, c)
  518.            @x += self.contents.text_size(c).width
  519.            if $soundname_on_speak != "" then
  520.              Audio.se_play($soundname_on_speak)
  521.            end
  522.          end
  523.          
  524.   #SKIP_TEXT_CODE
  525.   
  526.   # B = Escape, 0 (On The NumPad), X
  527.   # C = Enter, Space Bar and C
  528.   # A = Shift, Z
  529.   
  530.      if Input.press?(Input::C) # <-- Change the value on that line
  531.        if @alex_skip==false      
  532.        text_not_skip = false
  533.        end
  534.          end
  535.        else
  536.          text_not_skip = true
  537.          break
  538.        end
  539.       
  540.        if text_not_skip
  541.          break
  542.        end
  543.      end
  544.      @write_wait += @write_speed
  545.      return
  546.    end
  547.   
  548.    if @input_number_window != nil
  549.      @input_number_window.update
  550.      if Input.trigger?(Input::C)
  551.        $game_system.se_play($data_system.decision_se)
  552.        $game_variables[$game_temp.num_input_variable_id] =
  553.          @input_number_window.number
  554.        $game_map.need_refresh = true
  555.        @input_number_window.dispose
  556.        @input_number_window = nil
  557.        terminate_message
  558.      end
  559.      return
  560.    end
  561.   
  562.    if @contents_showing
  563.      if $game_temp.choice_max == 0
  564.        self.pause = true
  565.      end
  566.      
  567.      if Input.trigger?(Input::B)
  568.        if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
  569.          $game_system.se_play($data_system.cancel_se)
  570.          $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
  571.          terminate_message
  572.        end
  573.      end
  574.      
  575.      if Input.trigger?(Input::C)
  576.        if $game_temp.choice_max > 0
  577.          $game_system.se_play($data_system.decision_se)
  578.          $game_temp.choice_proc.call(self.index)
  579.        end
  580.        if @mid_stop
  581.          @mid_stop = false
  582.          return
  583.        else
  584.          terminate_message
  585.        end
  586.      end
  587.      return
  588.    end
  589.   
  590.    if @fade_out == false and $game_temp.message_text != nil
  591.      @contents_showing = true
  592.      $game_temp.message_window_showing = true
  593.      refresh
  594.      Graphics.frame_reset
  595.      self.visible = true
  596.      self.contents_opacity = 0
  597.      if @input_number_window != nil
  598.        @input_number_window.contents_opacity = 0
  599.      end
  600.      @fade_in = true
  601.      return
  602.    end
  603.   
  604.    if self.visible
  605.      @fade_out = true
  606.      self.opacity -= 48
  607.      if self.opacity == 0
  608.        self.visible = false
  609.        @fade_out = false
  610.        $game_temp.message_window_showing = false
  611.      end
  612.      return
  613.    end
  614.   end
  615.   
  616.   #--------------------------------------------------------------------------
  617.   
  618.   def get_character(parameter)
  619.   
  620.    case parameter
  621.    when 0  
  622.      return $game_player
  623.    else
  624.      events = $game_map.events
  625.      return events == nil ? nil : events[parameter]
  626.    end
  627.   end
  628.   
  629.   #--------------------------------------------------------------------------
  630.   
  631.   def reset_window
  632.   
  633.    if @popchar >= 0
  634.      events = $game_map.events
  635.      if events != nil
  636.        character = get_character(@popchar)
  637.        x = [[character.screen_x -  0 - self.width / 2, 4].max, 636 - self.width].min
  638.        y = [[character.screen_y - 48 - self.height, 4].max, 476 - self.height].min
  639.        self.x = x
  640.        self.y = y
  641.      end
  642.    elsif @popchar == -1
  643.      self.x = -4
  644.      self.y = -4
  645.      self.width = 648
  646.      self.height = 488
  647.    else
  648.      if $game_temp.in_battle
  649.        self.y = 16
  650.      else
  651.        case $game_system.message_position
  652.        when 0  
  653.          self.y = 16
  654.        when 1  
  655.          self.y = 160
  656.        when 2  
  657.          self.y = 304
  658.        end
  659.        self.x = 80
  660.        if @face_file == nil
  661.          self.width = 480
  662.        else
  663.          self.width = 600
  664.          self.x -= 60
  665.        end
  666.        self.height = 160
  667.      end
  668.    end
  669.    self.contents = Bitmap.new(self.width - 32, self.height - 32)
  670.    self.contents.font.color = text_color($ams.message_box_text_color)
  671.    self.contents.font.name = $ams.font_type
  672.     self.contents.font.size = $ams.font_size
  673.    if @face_file != nil
  674.      self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
  675.    end
  676.    if @popchar == -1
  677.      self.opacity = 255
  678.      self.back_opacity = 0
  679.    elsif $game_system.message_frame == 0
  680.      self.opacity = 255
  681.      self.back_opacity = $ams.message_box_opacity
  682.    else
  683.      self.opacity = 0
  684.      self.back_opacity = $ams.message_box_opacity
  685.    end
  686.   end
  687.   
  688.   #--------------------------------------------------------------------------
  689.   
  690.   def gaiji_draw(x, y, num)
  691.   
  692.    if @gaiji_cache == nil
  693.      return 0
  694.    else
  695.      if @gaiji_cache.width < num * 24
  696.        return 0
  697.      end
  698.   
  699.      if self.contents.font.size >= 20 and self.contents.font.size <= 24
  700.        size = 24
  701.      else
  702.        size = self.contents.font.size * 100 * 24 / 2200
  703.      end
  704.   
  705.      self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24))
  706.   
  707.      if $soundname_on_speak != "" then
  708.        Audio.se_play($soundname_on_speak)
  709.      end
  710.      return size
  711.    end
  712.   end
  713.   
  714.   #--------------------------------------------------------------------------
  715.   
  716.   def line_height
  717.    return 32
  718.   
  719.    if self.contents.font.size >= 20 and self.contents.font.size <= 24
  720.      return 32
  721.    else
  722.      return self.contents.font.size * 15 / 10
  723.    end
  724.   end
  725.   
  726.   #--------------------------------------------------------------------------
  727.   
  728.   def ruby_draw_text(target, x, y, str,opacity)
  729.   
  730.    sizeback = target.font.size
  731.    target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2
  732.    rubysize = [rubysize, 6].max
  733.    opacity = [[opacity, 0].max, 255].min
  734.    split_s = str.split(/,/)
  735.    split_s[0] == nil ? split_s[0] = "" : nil
  736.    split_s[1] == nil ? split_s[1] = "" : nil
  737.   
  738.    height = sizeback + rubysize
  739.    width  = target.text_size(split_s[0]).width
  740.   
  741.    target.font.size = rubysize
  742.    ruby_width = target.text_size(split_s[1]).width
  743.    target.font.size = sizeback
  744.   
  745.    buf_width = [target.text_size(split_s[0]).width, ruby_width].max
  746.   
  747.    width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0
  748.   
  749.    if opacity == 255
  750.      target.font.size = rubysize
  751.      target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1])
  752.      target.font.size = sizeback
  753.      target.draw_text(x, y, width, target.font.size, split_s[0])
  754.      return width
  755.    else
  756.      if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height
  757.        @opacity_text_buf.dispose
  758.        @opacity_text_buf = Bitmap.new(buf_width, height)
  759.      else
  760.        @opacity_text_buf.clear
  761.      end
  762.      @opacity_text_buf.font.size = rubysize
  763.      @opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1)
  764.      @opacity_text_buf.font.size = sizeback
  765.      @opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1)
  766.      if sub_x >= 0
  767.        target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
  768.      else
  769.        target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
  770.      end
  771.      return width
  772.    end
  773.   end
  774.   
  775.   #--------------------------------------------------------------------------
  776.   
  777.   def convart_value(option, index)
  778.    option == nil ? option = "" : nil
  779.    option.downcase!
  780.   
  781.    case option
  782.    when "i"
  783.      unless $data_items[index].name == nil
  784.        r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)
  785.      end
  786.    when "w"
  787.      unless $data_weapons[index].name == nil
  788.        r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
  789.      end
  790.    when "a"
  791.      unless $data_armors[index].name == nil
  792.        r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
  793.      end
  794.    when "s"
  795.      unless $data_skills[index].name == nil
  796.        r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name)
  797.      end
  798.    else
  799.      r = $game_variables[index]
  800.    end
  801.   
  802.    r == nil ? r = "" : nil
  803.    return r
  804.   end
  805.   
  806.   #--------------------------------------------------------------------------
  807.   
  808.   def dispose
  809.    terminate_message
  810.   
  811.    if @gaiji_cache != nil
  812.      unless @gaiji_cache.disposed?
  813.        @gaiji_cache.dispose
  814.      end
  815.    end
  816.   
  817.    unless @opacity_text_buf.disposed?
  818.      @opacity_text_buf.dispose
  819.    end
  820.   
  821.    $game_temp.message_window_showing = false
  822.    if @input_number_window != nil
  823.      @input_number_window.dispose
  824.    end
  825.    super
  826.   end
  827.   
  828.   #--------------------------------------------------------------------------
  829.   
  830.   def update_cursor_rect
  831.    if @index >= 0
  832.      n = $game_temp.choice_start + @index
  833.      self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32)
  834.    else
  835.      self.cursor_rect.empty
  836.    end
  837.   end
  838.   end
  839.   #=========================================
  840.   # ▲ CLASS Window_Message Ends
  841.   #=========================================
  842.   
  843.   
  844.   #=========================================
  845.   # ▼ Class Window_Frame Begins
  846.   #=========================================
  847.   class Window_Frame < Window_Base
  848.   
  849.   def initialize(x, y, width, height)
  850.    super(x, y, width, height)
  851.    self.windowskin = RPG::Cache.windowskin($ams.name_box_skin)
  852.    self.contents = nil
  853.   end
  854.   
  855.   #--------------------------------------------------------------------------
  856.   
  857.   def dispose
  858.    super
  859.   end
  860.   end
  861.   #=========================================
  862.   # ▲ CLASS Window_Frame Ends
  863.   #=========================================
  864.   
  865.   
  866.   #=========================================
  867.   # ▼ CLASS Game_Map Additional Code Begins
  868.   #=========================================
  869.   class Game_Map
  870.    
  871.   #Dubealex's Addition (from XRXS) to show Map Name on screen
  872.   def name
  873.     $map_infos[@map_id]
  874.   end
  875.   end
  876.   #=========================================
  877.   # ▲ CLASS Game_Map Additional Code Ends
  878.   #=========================================
  879.   
  880.   
  881.   #=========================================
  882.   # ▼ CLASS Scene_Title Additional Code Begins
  883.   #=========================================
  884.   class Scene_Title
  885.   
  886.   #Dubealex's Addition (from XRXS) to show Map Name on screen
  887.     $map_infos = load_data("Data/MapInfos.rxdata")
  888.     for key in $map_infos.keys
  889.       $map_infos[key] = $map_infos[key].name
  890.     end
  891.    
  892.     #Dubealex's addition to save data from the AMS in the save files
  893.     $ams = AMS.new
  894.    
  895.   end
  896.   #=========================================
  897.   # ▲ CLASS Scene_Title Additional Code Ends
  898.   #=========================================
  899.   
  900.   #===================================================
  901.   # ▼ CLASS Scene_Save Additional Code Begins
  902.   #===================================================
  903.   class Scene_Save
  904.   
  905.   alias alex_ams_write_data write_data
  906.   
  907.     def write_data(file)
  908.       alex_ams_write_data(file)
  909.       Marshal.dump($ams, file)
  910.     end
  911.    
  912.   end  
  913.   #===================================================
  914.   # ▲ CLASS Scene_Save Additional Code Ends
  915.   #===================================================
  916.   
  917.   
  918.   #===================================================
  919.   # ▼ CLASS Scene_Load Additional Code Begins
  920.   #===================================================
  921.   class Scene_Load
  922.   
  923.   alias alex_ams_read_data read_data
  924.   
  925.     def read_data(file)
  926.       alex_ams_read_data(file)
  927.       $ams      = Marshal.load(file)
  928.     end
  929.    
  930.   end  
  931.   #===================================================
  932.   # ▲ CLASS Scene_Load Additional Code Ends
  933.   #===================================================
  934.   
  935.   #===================================================
  936.   # ▼ CLASS Window_Base Additional Code Begins
  937.   #===================================================
  938.   class Window_Base < Window
  939.    
  940.   #Dubealex Addition (from Phylomorphis) to use HTML Hex Code Colors
  941.    def hex_color(string)
  942.      red = 0
  943.      green = 0
  944.      blue = 0
  945.      if string.size != 6
  946.        print("Hex strings must be six characters long.")
  947.        print("White text will be used.")
  948.        return Color.new(255, 255, 255, 255)
  949.      end
  950.      for i in 1..6
  951.        s = string.slice!(/./m)
  952.        if s == "#"
  953.          print("Hex color string may not contain the \"#\" character.")
  954.          print("White text will be used.")
  955.          return Color.new(255, 255, 255, 255)
  956.        end
  957.        value = hex_convert(s)
  958.        if value == -1
  959.          print("Error converting hex value.")
  960.          print("White text will be used.")
  961.          return Color.new(255, 255, 255, 255)
  962.        end
  963.        case i
  964.        when 1
  965.          red += value * 16
  966.        when 2
  967.          red += value
  968.        when 3
  969.          green += value * 16
  970.        when 4
  971.          green += value
  972.        when 5
  973.          blue += value * 16
  974.        when 6
  975.          blue += value
  976.        end
  977.      end
  978.      return Color.new(red, green, blue, 255)
  979.    end
  980.    
  981.   #--------------------------------------------------------------------------
  982.    
  983.    def hex_convert(character)
  984.      case character
  985.       when "0"
  986.         return 0
  987.      when "1"
  988.         return 1
  989.      when "2"
  990.         return 2
  991.      when "3"
  992.         return 3
  993.      when "4"
  994.         return 4
  995.      when "5"
  996.         return 5
  997.      when "6"
  998.         return 6
  999.      when "7"
  1000.         return 7
  1001.      when "8"
  1002.         return 8
  1003.      when "9"
  1004.         return 9
  1005.      when "A"
  1006.         return 10
  1007.      when "B"
  1008.         return 11
  1009.      when "C"
  1010.         return 12
  1011.      when "D"
  1012.         return 13
  1013.      when "E"
  1014.         return 14
  1015.      when "F"
  1016.         return 15
  1017.       end
  1018.      return -1
  1019.    end
  1020.   end
  1021.   #=========================================
  1022.   # ▲ CLASS Window_Base Additional Code Ends
  1023.   #=========================================
  1024.   
  1025.   
  1026.   #=========================================
  1027.   # ▼ Class Air_Text Begins
  1028.   #=========================================
  1029.   class Air_Text < Window_Base
  1030.   
  1031.   def initialize(x, y, designate_text, color=0)
  1032.    
  1033.    super(x-16, y-16, 32 + designate_text.size * 12, 56)
  1034.    self.opacity      = 0
  1035.    self.back_opacity = 0
  1036.    self.contents = Bitmap.new(self.width - 32, self.height - 32)
  1037.    w = self.contents.width
  1038.    h = self.contents.height
  1039.    self.contents.font.name = $ams.name_font_type
  1040.    self.contents.font.size = $ams.name_font_size
  1041.    self.contents.font.color = text_color(color)
  1042.    self.contents.draw_text(0, 0, w, h, designate_text)
  1043.   end
  1044.   
  1045.   #--------------------------------------------------------------------------
  1046.   
  1047.   def dispose
  1048.    self.contents.clear
  1049.    super
  1050.   end
  1051.   end
  1052.   #==========================================
  1053.   # ▲ CLASS Air_Text  Ends
  1054.   #==========================================
  1055.   
  1056.   #===================================================
  1057.   # ▼ CLASS Game_System Additional Code Begins
  1058.   #===================================================
  1059.   class Game_System
  1060.    
  1061.     alias alex_ams_game_system_initialize initialize
  1062.    
  1063.     def initialize
  1064.       alex_ams_game_system_initialize
  1065.       @message_position = 0 #Choose the Y axis offset of the msg box. default= 2
  1066.     end
  1067.    
  1068.   end
  1069.   #===================================================
  1070.   # ▲ CLASS Game_System Additional Code Ends
  1071.   #===================================================

  1072. #--------------------------------------------------------------------------
  1073. # * End SDK Enable Test
  1074. #--------------------------------------------------------------------------
  1075. end
复制代码
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-25 04:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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