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

Project1

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

[已经解决] 怎么把这个详情帮助脚本里添加装备武器等级限制的显示?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
121 小时
注册时间
2011-1-13
帖子
131
跳转到指定楼层
1
发表于 2011-8-25 12:21:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 有求必应 于 2011-8-25 12:25 编辑

详情帮助脚本:
  1. #==============================================================================
  2. # ■ Window_Help
  3. #------------------------------------------------------------------------------
  4. # 原作:xuelong
  5. # 修正:水迭澜
  6. # 移植:禾西
  7. #==============================================================================
  8. class Window_Help < Window_Base
  9.   #--------------------------------------------------------------------------
  10.   # ● 定義
  11.   #--------------------------------------------------------------------------
  12.   def set
  13.     @phrase,@y= {}, 0
  14.     @scope, @parameter_type = [], []
  15. =begin
  16.     @name_size = 名字文字大小
  17.     @size = 描述文字大小
  18.     @word = 每行的描述文字數
  19. =end
  20.     @name_size = 18
  21.     @size = 14
  22.     @word = 11
  23.    
  24.     # 不顯示的 屬性 與 狀態 ID
  25.     @unshow_elements = [17, 18]
  26.     @unshow_states = []
  27.    
  28.     # 基本文字設定
  29.     @phrase[:price]          = "价格"
  30.     @phrase[:elements]       = "攻击属性"
  31.     @phrase[:states]         = "复交状态"
  32.     @phrase[:guard_elements] = "减半状态"
  33.     @phrase[:guard_states]   = "无效化状态"
  34.     #------------------#
  35.     #   物品效果語句   #
  36.     #------------------#
  37.     @phrase[:recover]      = "回复"
  38.     @phrase[:hp]           = "HP"
  39.     @phrase[:mp]           = "MP"
  40.     @phrase[:plus_states]  = "状态附加"
  41.     @phrase[:minus_states] = "状态解除"
  42.     @phrase[:speed]        = "速度補正"
  43.     @phrase[:consumable]   = "消耗品"
  44.     @phrase[:base_damage]  = "基本伤害"
  45.     #------------------#
  46.     #   特殊效果語句   #
  47.     #------------------#
  48.     @phrase[:special]          = "特殊"
  49.     @phrase[:two_handed]       = "两手武器"
  50.     @phrase[:fast_attack]      = "回合内先制"
  51.     @phrase[:dual_attack]      = "连续攻击"
  52.     @phrase[:critical_bonus]   = "会心频发"
  53.     @phrase[:prevent_critical] = "会心防止"
  54.     @phrase[:half_mp_cost]     = "消费MP半分"
  55.     @phrase[:double_exp_gain]  = "取得经验值2倍"
  56.     @phrase[:auto_hp_recover]  = "HP自动回复"
  57.     @phrase[:physical_attack]  = "物理攻击"
  58.     @phrase[:damage_to_mp]     = "MP伤害"
  59.     @phrase[:absorb_damage]    = "伤害吸收"
  60.     @phrase[:ignore_defense]   = "无视防御"
  61.     #------------------#
  62.     #   技能描述語句   #
  63.     #------------------#
  64.     @phrase[:recovery] = "回复力"
  65.     @phrase[:mp_cost]  = "消耗SP"
  66.     @phrase[:hit]      = "命中率"
  67.     #------------------#
  68.     #   效果範圍語句   #
  69.     #------------------#
  70.     @phrase[:scope]    = "効果范围"
  71.     @scope[0]  = "特殊"
  72.     @scope[1]  = "敌单体"
  73.     @scope[2]  = "敌全体"
  74.     @scope[3]  = "敌単体 连续"
  75.     @scope[4]  = "敌単体 随机"
  76.     @scope[5]  = "敌二体 随机"
  77.     @scope[6]  = "敌三体 随机"
  78.     @scope[7]  = "我方单体"
  79.     @scope[8]  = "我方全体"
  80.     @scope[9]  = "我方战斗不能(单)"
  81.     @scope[10] = "我方战斗不能(全)"
  82.     @scope[11] = "使用者"
  83.     #------------------#
  84.     #   效果範圍語句   #
  85.     #------------------#
  86.     @parameter_type[1] = "MaxHP"
  87.     @parameter_type[2] = "MaxMP"
  88.     @parameter_type[3] = $data_system.terms.atk
  89.     @parameter_type[4] = $data_system.terms.def
  90.     @parameter_type[5] = $data_system.terms.spi
  91.     @parameter_type[6] = $data_system.terms.agi
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● 初始化對象
  95.   #--------------------------------------------------------------------------
  96.   def initialize
  97.     super(0, 0, 544, WLH + 32)
  98.     self.opacity = 200
  99.     self.z = 150
  100.     self.visible = false
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 設置文本
  104.   #     data  : 窗口顯示的字符串/物品資料
  105.   #     align : 對齊方式 (0..左對齊、1..中間對齊、2..右對齊)
  106.   #--------------------------------------------------------------------------
  107.   def set_text(data, align=0)
  108.     #------------------------------------------------------------------------
  109.     # ● 當資料爲文字時候
  110.     #------------------------------------------------------------------------
  111.     if data != @text or align != @align
  112.       if data.is_a?(String)
  113.         draw_string(data,align)
  114.       end
  115.     end
  116.     return if data.is_a?(String)
  117.     #------------------------------------------------------------------------
  118.     # ● 當沒有資料時候
  119.     #------------------------------------------------------------------------
  120.     if data.nil?
  121.       self.visible=false
  122.     else
  123.       self.visible=true
  124.     end
  125.     #------------------------------------------------------------------------
  126.     # ● 當資料爲物品/技能時候
  127.     #------------------------------------------------------------------------
  128.     if data != nil && @data != data
  129.       self.width = 210
  130.       self.height = 430
  131.       self.x=0
  132.       self.y=200
  133.       set
  134.       draw_data(data)
  135.     else
  136.       return
  137.     end
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 更新帮助窗口
  141.   #--------------------------------------------------------------------------
  142.   def draw_string(data,align)
  143.     self.width = 544        #修正寬度
  144.     self.height = WLH + 32  #修正高度
  145.     self.x=0                #修正 x 坐標
  146.     self.y=0                #修正 y 坐標
  147.     @text = data            #記錄文本資料
  148.     @align = align          #記錄對齊方式
  149.     @actor = nil            #清空角色資料
  150.     self.contents = Bitmap.new(width - 32, height - 32) if self.contents.nil?
  151.     self.contents.clear
  152.     self.contents.font.color = normal_color
  153.     self.contents.font.size = 20
  154.     self.contents.draw_text(4, 0, self.width - 40, 32, data, align)
  155.     self.visible = true
  156.   end
  157.   #--------------------------------------------------------------------------
  158.   # ● 更新帮助窗口
  159.   #--------------------------------------------------------------------------
  160.   def draw_data(data=@data)
  161.     self.width = 186        #修正寬度
  162.     self.height = 430       #修正高度
  163.     self.x=0                #修正 x 坐標
  164.     self.y=150              #修正 y 坐標
  165.     @data = data            #記錄 data 資料
  166.     case @data
  167.     when RPG::Item
  168.       set_item_text(@data)
  169.     when RPG::Weapon, RPG::Armor
  170.       set_equipment_text(@data)
  171.     when RPG::Skill
  172.       set_skill_text(@data)
  173.     end
  174.   end
  175.   #--------------------------------------------------------------------------
  176.   # ● 修正窗口位置
  177.   #--------------------------------------------------------------------------
  178.   def set_pos(x,y,width,oy,index,column_max)
  179.     cursor_width = width / column_max - 32
  180.     xx = index % column_max * (cursor_width + WLH)
  181.     yy = index / column_max * WLH - oy
  182.     self.x=xx+x+140
  183.     self.y=yy+y+35
  184.     if self.x+self.width>544
  185.       self.x=544-self.width
  186.     end
  187.     if self.y+self.height>416
  188.       self.y=416-self.height
  189.     end  
  190.   end
  191.   #------------------------------------------------------------------------
  192.   # ● 文字描繪
  193.   #------------------------------------------------------------------------
  194.   def draw_text(text, increase, move=0)
  195.     @y += increase
  196.     self.contents.font.color = normal_color
  197.     self.contents.font.size = @size
  198.     self.contents.draw_text(0+move, @y*@size+5, text.size*6, @size, text, 0)
  199.   end
  200. #-------------------------------------#
  201. # 子方法
  202. #-------------------------------------#
  203.   #--------------------------------------------------------------------------
  204.   # ● 裝備幫助窗口
  205.   #--------------------------------------------------------------------------
  206.   def set_equipment_text(equipment)
  207.     #------------------------------------------------------------------------
  208.     # ● 取得基本質料
  209.     #------------------------------------------------------------------------
  210.    
  211.     #----------------------------#
  212.     # 取得屬性、狀態、說明之副本 #
  213.     #----------------------------#
  214.     element_set = equipment.element_set.clone
  215.     state_set   = equipment.state_set.clone
  216.     description = equipment.description.clone
  217.     phrase      = @phrase
  218.     #----------------------------#
  219.     # 過濾不顯示的屬性與狀態描述 #
  220.     #----------------------------#
  221.     element_set -= @unshow_elements
  222.     state_set   -= @unshow_states
  223.     #----------------#
  224.     # 初始化數據設定 #
  225.     #----------------#
  226.     x, h, move = 0, 0, 0
  227.     #------------------#
  228.     # 取得特殊效果數據 #
  229.     #------------------#
  230.     special = []
  231.     case equipment
  232.     when RPG::Weapon
  233.       special << phrase[:two_handed]      if equipment.two_handed
  234.       special << phrase[:fast_attack]     if equipment.fast_attack
  235.       special << phrase[:dual_attack]     if equipment.dual_attack
  236.       special << phrase[:critical_bonus]  if equipment.critical_bonus
  237.     when RPG::Armor
  238.       special << phrase[:prevent_critical]if equipment.prevent_critical
  239.       special << phrase[:half_mp_cost]    if equipment.half_mp_cost
  240.       special << phrase[:double_exp_gain] if equipment.double_exp_gain
  241.       special << phrase[:auto_hp_recover] if equipment.auto_hp_recover
  242.     end
  243.     #------------------------------------------------------------------------
  244.     # ● 確定背景圖片的高度
  245.     #------------------------------------------------------------------------
  246.     h += (description.size/3/@word)
  247.     h += 1 if (description.size/3%@word) > 0
  248.     now_h = h
  249.    
  250.     h += 1                               #價格
  251.    
  252.     h += 1 unless equipment.atk.zero?    #攻擊力
  253.     h += 1 unless equipment.def.zero?    #防禦力
  254.     h += 1 unless equipment.spi.zero?    #精神力
  255.     h += 1 unless equipment.agi.zero?    #敏捷力

  256.     h += 1 unless equipment.nodur        ## 耐久度
  257.     h += element_set.size + 1 if element_set.size > 0  #屬性
  258.     h += state_set.size   + 1 if state_set.size   > 0  #狀態
  259.     h += special.size     + 1 if special.size     > 0  #特殊效果
  260.     #------------------------------------------------------------------------
  261.     # ● 圖片顯示保證高度
  262.     #------------------------------------------------------------------------
  263.     #h = 6 + now_h if (h - now_h) < 6
  264.     #------------------------------------------------------------------------
  265.     # ● 換算高度
  266.     #------------------------------------------------------------------------
  267.     self.height = h * @size + @name_size + 32
  268.     #------------------------------------------------------------------------
  269.     # ● 生成背景
  270.     #------------------------------------------------------------------------
  271.     self.contents = Bitmap.new(self.width - 32, self.height - 32)
  272.     self.contents.clear
  273.     #------------------------------------------------------------------------
  274.     # ● 名字描繪
  275.     #------------------------------------------------------------------------
  276.     text = equipment.name
  277.     self.contents.font.color = normal_color
  278.     self.contents.font.size = @name_size
  279.     if text.nil?
  280.       self.visible = false
  281.     else
  282.       self.visible = true
  283.       self.contents.draw_text(0, 0, text.size*7, @name_size, text, 0)
  284.     end
  285.     #------------------------------------------------------------------------
  286.     # ● 說明描繪
  287.     #------------------------------------------------------------------------
  288.     x = 0
  289.     @y += 1
  290.     while ((text = description.slice!(/./m)) != nil)
  291.       if x == @word
  292.         x=0
  293.         @y+=1
  294.       end
  295.       self.contents.font.color = normal_color
  296.       self.contents.font.size = @size
  297.       self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
  298.       x+=1
  299.     end
  300.     #------------------------------------------------------------------------
  301.     # ● 圖標描繪
  302.     #------------------------------------------------------------------------
  303.     #bitmap = Cache.system("Iconset")
  304.     #rect = Rect.new(equipment.icon_index % 16 * 24, equipment.icon_index / 16 * 24, 24, 24)
  305.     #self.contents.blt(0, y*size + 20, bitmap, rect, 255)
  306.     #------------------------------------------------------------------------
  307.     # ● 價格描繪
  308.     #------------------------------------------------------------------------
  309.     unless equipment.price.zero?
  310.       text = phrase[:price] + ":" + equipment.price.to_s
  311.       draw_text(text, 1, move)
  312.     end
  313.     #------------------------------------------------------------------------
  314.     # ● 攻擊力
  315.     #------------------------------------------------------------------------
  316.     unless equipment.atk.zero?
  317.       text = $data_system.terms.atk + ":" + equipment.atk.to_s
  318.       draw_text(text, 1, move)
  319.     end
  320.     #------------------------------------------------------------------------
  321.     # ● 防禦力
  322.     #------------------------------------------------------------------------
  323.     unless equipment.def.zero?
  324.       text = $data_system.terms.def + ":" + equipment.def.to_s
  325.       draw_text(text, 1, move)
  326.     end
  327.     #------------------------------------------------------------------------
  328.     # ● 精神力
  329.     #------------------------------------------------------------------------
  330.     unless equipment.spi.zero?
  331.       text = $data_system.terms.spi + ":" + equipment.spi.to_s
  332.       draw_text(text, 1, move)
  333.     end
  334.     #------------------------------------------------------------------------
  335.     # ● 敏捷力
  336.     #------------------------------------------------------------------------
  337.     unless equipment.agi.zero?
  338.       text = $data_system.terms.agi + ":" + equipment.agi.to_s
  339.       draw_text(text, 1, move)
  340.     end
  341.     #------------------------------------------------------------------------
  342.     # ● 屬性
  343.     #------------------------------------------------------------------------
  344.     if element_set.size > 0
  345.       case equipment
  346.       when RPG::Weapon
  347.         text=phrase[:elements]+":"
  348.       when RPG::Armor
  349.         text=phrase[:guard_elements]+":"
  350.       end
  351.       draw_text(text, 1, move)
  352.       element_set.each do |i|
  353.         text = $data_system.elements[i]
  354.         draw_text(text, 1, move + @size)
  355.       end
  356.     end

  357.     #------------------------------------------------------------------------
  358.     # ** 耐久度
  359.     #------------------------------------------------------------------------
  360.     unless equipment.nodur
  361.       unless equipment.indesctructible
  362.         text = "耐久度: #{equipment.dur} / #{equipment.maxdur}"
  363.       else
  364.         text = "耐久度:无法破坏"
  365.       end
  366.       draw_text(text, 1, move)
  367.     end
  368.    
  369.     #------------------------------------------------------------------------
  370.     # ● 狀態
  371.     #------------------------------------------------------------------------
  372.     if state_set.size > 0
  373.       case equipment
  374.       when RPG::Weapon
  375.         text=phrase[:states]+":"
  376.       when RPG::Armor
  377.         text=phrase[:guard_states]+":"
  378.       end
  379.       draw_text(text, 1, move)
  380.       state_set.each do |i|
  381.         text = $data_states[i].name
  382.         draw_text(text, 1, move + @size)
  383.       end
  384.     end
  385.     #------------------------------------------------------------------------
  386.     # ● 特殊效果
  387.     #------------------------------------------------------------------------
  388.     if special.size > 0
  389.       text = phrase[:special]+":"
  390.       draw_text(text, 1, move)
  391.       special.each {|text| draw_text(text, 1, move + @size)}
  392.     end
  393.   end
  394. #////////////////////////////////////////////////////////////////////////////
  395.   #--------------------------------------------------------------------------
  396.   # ● 物品幫助窗口
  397.   #--------------------------------------------------------------------------
  398.   def set_item_text(item)
  399.     #----------------------------#
  400.     # 取得屬性、狀態、說明之副本 #
  401.     #----------------------------#
  402.     description = item.description.clone
  403.     element_set = item.element_set.clone
  404.     plus_state_set = item.plus_state_set.clone
  405.     minus_state_set = item.minus_state_set.clone
  406.     # 過濾不顯示的描述
  407.     element_set -= @unshow_elements
  408.     plus_state_set -= @unshow_states
  409.     minus_state_set -= @unshow_states
  410.     # 初始化數據設定
  411.     x, h, move = 0, 0, 0
  412.     phrase = @phrase
  413.     scope = @scope
  414.     parameter_type = @parameter_type
  415.     occasion = @occasion
  416.     # 基本文字設定

  417.    
  418.     #------------------#
  419.     # 取得特殊效果數據 #
  420.     #------------------#
  421.     special = []
  422.     special << phrase[:physical_attack] if item.physical_attack #物理攻撃
  423.     special << phrase[:damage_to_mp]    if item.damage_to_mp    #MPにダメージ
  424.     special << phrase[:absorb_damage]   if item.absorb_damage   #ダメージを吸収
  425.     special << phrase[:ignore_defense]  if item.ignore_defense  #防御力無視
  426.    
  427.     #------------------------------------------------------------------------
  428.     # ● 確定背景圖片的高度
  429.     #------------------------------------------------------------------------
  430.     h += (description.size/3/@word)
  431.     h += 1 if (description.size/3%@word) > 0
  432.     now_h = h
  433.    
  434.     h += 2                                  #効果範囲,價格
  435.     h += 1 if item.consumable               #消耗品
  436.     h += 1 unless item.speed.zero?          #速度補正値
  437.    
  438.     h += 1 unless item.hp_recovery_rate==0 and item.hp_recovery==0 #HP 回復
  439.     h += 1 unless item.mp_recovery_rate==0 and item.mp_recovery==0 #MP 回復
  440.    
  441.     h += 1 unless item.parameter_type.zero? #能力値
  442.     h += 1 unless item.base_damage.zero?    #基本ダメージ
  443.    
  444.     h += element_set.size     + 1 if element_set.size     > 0  #屬性
  445.     h += plus_state_set.size  + 1 if plus_state_set.size  > 0  #附加狀態
  446.     h += minus_state_set.size + 1 if minus_state_set.size > 0  #解除狀態
  447.     h += special.size         + 1 if special.size         > 0  #特殊效果
  448.    
  449.     #------------------------------------------------------------------------
  450.     # ● 圖片顯示保證高度
  451.     #------------------------------------------------------------------------
  452.     ##h = 6 + now_h if (h - now_h) < 6
  453.     #------------------------------------------------------------------------
  454.     # ● 換算高度
  455.     #------------------------------------------------------------------------
  456.     self.height = h * @size + @name_size + 32
  457.     #------------------------------------------------------------------------
  458.     # ● 生成背景
  459.     #------------------------------------------------------------------------
  460.     self.contents = Bitmap.new(self.width - 32, self.height - 32)
  461.     self.contents.clear
  462.     #------------------------------------------------------------------------
  463.     # ● 名字描繪
  464.     #------------------------------------------------------------------------
  465.     text = item.name
  466.     self.contents.font.color = normal_color#顔色腳本
  467.     self.contents.font.size = @name_size
  468.     if text.nil?
  469.       self.visible = false
  470.     else
  471.       self.visible = true
  472.       self.contents.draw_text(0,0, text.size*7, 20, text, 0)
  473.     end
  474.     #------------------------------------------------------------------------
  475.     # ● 說明描繪
  476.     #------------------------------------------------------------------------
  477.      x = 0
  478.     @y += 1
  479.     while ((text = description.slice!(/./m)) != nil)
  480.       if x == @word
  481.          x = 0
  482.         @y += 1
  483.       end
  484.       self.contents.font.color = normal_color
  485.       self.contents.font.size = @size
  486.       self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
  487.       x+=1
  488.     end
  489.     #------------------------------------------------------------------------
  490.     # ● 圖標描繪
  491.     #------------------------------------------------------------------------
  492.     #bitmap = Cache.system("Iconset")
  493.     #rect = Rect.new(item.icon_index % 16 * 24, equipment.icon_index / 16 * 24, 24, 24)
  494.     #self.contents.blt(0, y*size + 20, bitmap, rect, 255)
  495.     #------------------------------------------------------------------------
  496.     # ● 效果範圍
  497.     #------------------------------------------------------------------------
  498.     text = phrase[:scope] +":"
  499.     draw_text(text, 1, move)
  500.     text = scope[item.scope]
  501.     draw_text(text, 1, move + @size)
  502.     #------------------------------------------------------------------------
  503.     # ● 價格
  504.     #------------------------------------------------------------------------
  505.     text = phrase[:price] + item.price.to_s
  506.     draw_text(text, 1, move)
  507.     #------------------------------------------------------------------------
  508.     # ● 消耗品
  509.     #------------------------------------------------------------------------
  510.     if item.consumable
  511.       text = phrase[:consumable]
  512.       draw_text(text, 1, move)
  513.     end
  514.     #------------------------------------------------------------------------
  515.     # ● 速度補正値
  516.     #------------------------------------------------------------------------
  517.     unless item.speed.zero?
  518.       text = phrase[:speed]
  519.       draw_text(text, 1, move)
  520.     end
  521.     #------------------------------------------------------------------------
  522.     # ● HP回復
  523.     #------------------------------------------------------------------------
  524.     unless item.hp_recovery_rate.zero? and item.hp_recovery.zero?
  525.       if item.hp_recovery_rate > 0 and item.hp_recovery > 0
  526.         text = " + "
  527.       else
  528.         text = ""
  529.       end
  530.       
  531.       unless item.hp_recovery_rate.zero?
  532.         text = item.hp_recovery_rate.to_s + "%" + text
  533.       end
  534.       unless item.hp_recovery.zero?
  535.         text += item.hp_recovery.to_s
  536.       end
  537.       text = phrase[:recover] +":" + phrase[:hp] + text
  538.       draw_text(text, 1, move)
  539.     end
  540.     #------------------------------------------------------------------------
  541.     # ● SP回復
  542.     #------------------------------------------------------------------------
  543.     unless item.mp_recovery_rate.zero? and item.mp_recovery.zero?
  544.       if item.mp_recovery_rate > 0 and item.mp_recovery > 0
  545.         text = " + "
  546.       else
  547.         text = ""
  548.       end
  549.       
  550.       unless item.mp_recovery_rate.zero?
  551.         text = item.mp_recovery_rate.to_s + "%" + text
  552.       end
  553.       unless item.mp_recovery.zero?
  554.         text += item.mp_recovery.to_s
  555.       end
  556.       text = phrase[:recover] +":" + phrase[:mp] + text
  557.       draw_text(text, 1, move)
  558.     end
  559.     #------------------------------------------------------------------------
  560.     # ● 能力值增加
  561.     #------------------------------------------------------------------------
  562.     unless item.parameter_type.zero?
  563.       text= parameter_type[item.parameter_type]+" +"+item.parameter_points.to_s
  564.       draw_text(text, 1, move)
  565.     end
  566.     #------------------------------------------------------------------------
  567.     # ● 基本ダメージ
  568.     #------------------------------------------------------------------------
  569.     unless item.base_damage.zero?
  570.       text = phrase[:base_damage] +":" + item.base_damage.to_s
  571.       draw_text(text, 1, move)
  572.     end
  573.     #------------------------------------------------------------------------
  574.     # ● 屬性
  575.     #------------------------------------------------------------------------
  576.     if element_set.size > 0
  577.       text = phrase[:elements]+":"
  578.       draw_text(text, 1, move)
  579.       element_set.each do |i|
  580.         text = $data_system.elements[i]
  581.         draw_text(text, 1, move + @size)
  582.       end
  583.     end
  584.     #------------------------------------------------------------------------
  585.     # ● 添加狀態
  586.     #------------------------------------------------------------------------
  587.     unless plus_state_set.empty?
  588.       text = phrase[:plus_states]+":"
  589.       draw_text(text, 1, move)
  590.       plus_state_set.each do |i|
  591.         text = $data_states[i].name
  592.         draw_text(text, 1, move + @size)
  593.       end
  594.     end
  595.     #------------------------------------------------------------------------
  596.     # ● 解除狀態
  597.     #------------------------------------------------------------------------
  598.     unless minus_state_set.empty?
  599.       text = phrase[:minus_states]+":"
  600.       draw_text(text, 1, move)
  601.       minus_state_set.each do |i|
  602.         text = $data_states[i].name
  603.         draw_text(text, 1, move + @size)
  604.       end
  605.     end
  606.     #------------------------------------------------------------------------
  607.     # ● 特殊效果
  608.     #------------------------------------------------------------------------
  609.     if special.size > 0
  610.       text = phrase[:special]+":"
  611.       draw_text(text, 1, move)
  612.       special.each {|text| draw_text(text, 1, move + @size)}
  613.     end
  614.   end
  615. #////////////////////////////////////////////////////////////////////////////
  616.   #--------------------------------------------------------------------------
  617.   # ● 技能帮助窗口
  618.   #--------------------------------------------------------------------------
  619.   def set_skill_text(skill)
  620.     #----------------------------#
  621.     # 取得屬性、狀態、說明之副本 #
  622.     #----------------------------#
  623.     description = skill.description.clone
  624.     element_set = skill.element_set.clone
  625.     plus_state_set = skill.plus_state_set.clone
  626.     minus_state_set = skill.minus_state_set.clone
  627.     # 過濾不顯示的描述
  628.     element_set -= @unshow_elements
  629.     plus_state_set -= @unshow_states
  630.     minus_state_set -= @unshow_states
  631.     # 初始化設定
  632.     x ,h, move = 0, 0, 0
  633.     phrase = @phrase
  634.     scope = @scope
  635.     #------------------#
  636.     # 取得特殊效果數據 #
  637.     #------------------#
  638.     special = []
  639.     special << phrase[:physical_attack] if skill.physical_attack #物理攻撃
  640.     special << phrase[:damage_to_mp]    if skill.damage_to_mp    #MPにダメージ
  641.     special << phrase[:absorb_damage]   if skill.absorb_damage   #ダメージを吸収
  642.     special << phrase[:ignore_defense]  if skill.ignore_defense  #防御力無視
  643.     #------------------------------------------------------------------------
  644.     # ● 確定背景圖片的高度
  645.     #------------------------------------------------------------------------
  646.     h += (description.size/3/@word)
  647.     h += 1 if (description.size/3%@word) > 0
  648.     now_h = h
  649.    
  650.     h += 4                                  #効果範囲,消費MP,命中率
  651.     h += 1 unless skill.speed.zero?         #速度補正値
  652.     h += 1 unless skill.base_damage.zero?   #基本ダメージ
  653.    
  654.    
  655.    
  656.     h += element_set.size     + 1 if element_set.size     > 0  #屬性
  657.     h += plus_state_set.size  + 1 if plus_state_set.size  > 0  #附加狀態
  658.     h += minus_state_set.size + 1 if minus_state_set.size > 0  #解除狀態
  659.     h += special.size         + 1 if special.size         > 0  #特殊效果
  660.     #------------------------------------------------------------------------
  661.     # ● 換算高度
  662.     #------------------------------------------------------------------------
  663.     self.height=h * @size + @name_size + 32  
  664.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  665.     self.contents.clear
  666.    
  667.     #------------------------------------------------------------------------
  668.     # ● 名字描述
  669.     #------------------------------------------------------------------------
  670.     text = skill.name
  671.     self.contents.font.color = Color.new(255, 255, 128, 255)
  672.     self.contents.font.size = @name_size
  673.     if text!=nil
  674.       self.visible = true
  675.       self.contents.draw_text(0,0, text.size*7, @name_size, text, 0)
  676.     else
  677.       self.visible = false
  678.     end
  679.    
  680.     #------------------------------------------------------------------------
  681.     # ● 說明描述
  682.     #------------------------------------------------------------------------
  683.     x = 0
  684.     @y += 1
  685.     text = description
  686.     while ((text = description.slice!(/./m)) != nil)
  687.       if x==@word
  688.         x = 0
  689.         @y += 1
  690.       end
  691.       self.contents.font.color = normal_color
  692.       self.contents.font.size = @size
  693.       self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
  694.       x+=1
  695.     end
  696.    
  697.     #------------------------------------------------------------------------
  698.     # ● 攻擊範圍
  699.     #------------------------------------------------------------------------
  700.     text = phrase[:scope] +":"
  701.     draw_text(text, 1, move)
  702.     text = scope[skill.scope]
  703.     draw_text(text, 1, move + @size)
  704.     #------------------------------------------------------------------------
  705.     # ● 基本ダメージ
  706.     #------------------------------------------------------------------------
  707.     unless skill.base_damage .zero?
  708.       text = skill.base_damage > 0 ? phrase[:base_damage] : phrase[:recovery]
  709.       text += ":" + skill.base_damage.abs.to_s
  710.       draw_text(text, 1, move)
  711.     end
  712.     #------------------------------------------------------------------------
  713.     # ● 消費SP描述
  714.     #------------------------------------------------------------------------
  715.     text = phrase[:mp_cost] +":"+ skill.mp_cost.to_s
  716.     draw_text(text, 1, move)
  717.     #------------------------------------------------------------------------
  718.     # ● 命中率描述
  719.     #------------------------------------------------------------------------
  720.     text = phrase[:hit] + ":" + skill.hit.to_s + "%"
  721.     draw_text(text, 1, move)
  722.     #------------------------------------------------------------------------
  723.     # ● 屬性
  724.     #------------------------------------------------------------------------
  725.     if element_set.size > 0
  726.       text = phrase[:elements]+":"
  727.       draw_text(text, 1, move)
  728.       element_set.each do |i|
  729.         text = $data_system.elements[i]
  730.         draw_text(text, 1, move + @size)
  731.       end
  732.     end
  733.     #------------------------------------------------------------------------
  734.     # ● 添加狀態
  735.     #------------------------------------------------------------------------
  736.     unless plus_state_set.empty?
  737.       text = phrase[:plus_states]+":"
  738.       draw_text(text, 1, move)
  739.       plus_state_set.each do |i|
  740.         text = $data_states[i].name
  741.         draw_text(text, 1, move + @size)
  742.       end
  743.     end
  744.     #------------------------------------------------------------------------
  745.     # ● 解除狀態
  746.     #------------------------------------------------------------------------
  747.     unless minus_state_set.empty?
  748.       text = phrase[:minus_states]+":"
  749.       draw_text(text, 1, move)
  750.       minus_state_set.each do |i|
  751.         text = $data_states[i].name
  752.         draw_text(text, 1, move + @size)
  753.       end
  754.     end
  755.     #------------------------------------------------------------------------
  756.     # ● 特殊效果
  757.     #------------------------------------------------------------------------
  758.     if special.size > 0
  759.       text = phrase[:special]+":"
  760.       draw_text(text, 1, move)
  761.       special.each {|text| draw_text(text, 1, move + @size)}
  762.     end  
  763.   end
  764. end

  765. #==============================================================================
  766. # ■ Window_Item
  767. #------------------------------------------------------------------------------
  768. #  アイテム画面などで、所持アイテムの一覧を表示するウィンドウです。
  769. #==============================================================================

  770. class Window_Item < Window_Selectable
  771.   #--------------------------------------------------------------------------
  772.   # ● ヘルプテキスト更新
  773.   #--------------------------------------------------------------------------
  774.   def update_help
  775.     @help_window.set_text(item)
  776.     #修正窗口位置
  777.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  778.   end
  779. end
  780. #==============================================================================
  781. # ■ Window_Skill
  782. #------------------------------------------------------------------------------
  783. #  スキル画面などで、使用できるスキルの一覧を表示するウィンドウです。
  784. #==============================================================================

  785. class Window_Skill < Window_Selectable
  786.   #--------------------------------------------------------------------------
  787.   # ● ヘルプテキスト更新
  788.   #--------------------------------------------------------------------------
  789.   def update_help
  790.     @help_window.set_text(skill)
  791.     #修正窗口位置
  792.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  793.   end
  794. end
  795. #==============================================================================
  796. # ■ Window_Equip
  797. #------------------------------------------------------------------------------
  798. #  装備画面で、アクターが現在装備しているアイテムを表示するウィンドウです。
  799. #==============================================================================

  800. class Window_Equip < Window_Selectable
  801.   #--------------------------------------------------------------------------
  802.   # ● ヘルプテキスト更新
  803.   #--------------------------------------------------------------------------
  804.   def update_help
  805.     @help_window.set_text(item)
  806.     #修正窗口位置
  807.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  808.   end
  809. end
  810. #==============================================================================
  811. # ■ Window_ShopBuy
  812. #------------------------------------------------------------------------------
  813. #  ショップ画面で、購入できる商品の一覧を表示するウィンドウです。
  814. #==============================================================================
  815. class Window_ShopBuy < Window_Selectable
  816.   #--------------------------------------------------------------------------
  817.   # ● ヘルプテキスト更新
  818.   #--------------------------------------------------------------------------
  819.   def update_help
  820.     @help_window.set_text(item)
  821.     #修正窗口位置
  822.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  823.   end
  824. end

复制代码
等级限制脚本:
  1. ============================================================================
  2. #         BY drgdrg  (感谢snstar2006提供的提取[]内容代码)
  3. #定义装备等级限制方法:在数据库装备备注里写上[LV n] ,LV后有空格,n为等级,
  4. #同理,定义装备能力值限制方法:备注里写上[ATK n][DEF n][SPI n][AGI n]。
  5. #若某项限制不写则没有装备限制。
  6. #注意这里限制的能力值是人物原始的能力值,不考虑装备、状态的影响,
  7. #但是考虑事件对能力值的影响。
  8. #==============================================================================
  9. #==============================================================================
  10. # ■ RPG::BaseItem
  11. #==============================================================================
  12. class RPG::BaseItem

  13.   def LVlimit                                         #物品要求最低等级
  14.     m = 0
  15.     self.note.split(/[\r\n]+/).each { |line|
  16.       m = $1.to_i if line =~ /\[LV (\d+)\]/
  17.     }   
  18.     return m
  19.   end
  20.   
  21.   def ATKlimit                                        #物品要求最低个人攻击力
  22.     m = 0
  23.     self.note.split(/[\r\n]+/).each { |line|
  24.       m = $1.to_i if line =~ /\[ATK (\d+)\]/
  25.     }   
  26.     return m
  27.   end
  28.   
  29.   def DEFlimit                                        #物品要求最低个人防御力
  30.     m = 0
  31.     self.note.split(/[\r\n]+/).each { |line|
  32.       m = $1.to_i if line =~ /\[DEF (\d+)\]/
  33.     }   
  34.     return m
  35.   end

  36.   def SPIlimit                                        #物品要求最低个人精神力
  37.     m = 0
  38.     self.note.split(/[\r\n]+/).each { |line|
  39.       m = $1.to_i if line =~ /\[SPI (\d+)\]/
  40.     }   
  41.     return m
  42.   end
  43.   
  44.   def AGIlimit                                        #物品要求最低个人敏捷性
  45.     m = 0
  46.     self.note.split(/[\r\n]+/).each { |line|
  47.       m = $1.to_i if line =~ /\[AGI (\d+)\]/
  48.     }   
  49.     return m
  50.   end  
  51. end



  52. #==============================================================================
  53. # ■ Game_Actor
  54. #------------------------------------------------------------------------------
  55. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  56. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  57. #==============================================================================

  58. class Game_Actor < Game_Battler  
  59.   #--------------------------------------------------------------------------
  60.   # ● 判断是否可以装备
  61.   #     item : 物品
  62.   #--------------------------------------------------------------------------
  63.   def equippable?(item)
  64.     return false if self.level < item.LVlimit                     #等级限制
  65.     return false if actor.parameters[2, @level] + @atk_plus < item.ATKlimit                   #攻击力限制
  66.     return false if actor.parameters[3, @level] + @def_plus < item.DEFlimit                   #防御力限制
  67.     return false if actor.parameters[4, @level] + @spi_plus < item.SPIlimit                   #精神力限制   
  68.     return false if actor.parameters[5, @level] + @agi_plus < item.AGIlimit                   #敏捷性限制
  69.     if item.is_a?(RPG::Weapon)
  70.       return self.class.weapon_set.include?(item.id)
  71.     elsif item.is_a?(RPG::Armor)
  72.       return false if two_swords_style and item.kind == 0  
  73.       return self.class.armor_set.include?(item.id)
  74.     end
  75.     return false
  76.   end
  77.   
  78. end

  79. #==============================================================================
  80. # ■ Window_Item
  81. #------------------------------------------------------------------------------
  82. #  物品画面、战斗画面、显示浏览物品的窗口。
  83. #==============================================================================

  84. class Window_Item < Window_Selectable
  85.   #--------------------------------------------------------------------------
  86.   # ● 更新帮助文本(自动显示使用物品的等级能力限制)
  87.   #--------------------------------------------------------------------------
  88.   def update_help
  89.    
  90.     if item != nil
  91.       newdes = item.description
  92.       newdes += "  要求:" if(item.LVlimit !=0 or item.ATKlimit !=0 or item.DEFlimit != 0 or item.SPIlimit != 0 or item.AGIlimit != 0)
  93.       newdes += " LV" + item.LVlimit.to_s    if  item.LVlimit != 0
  94.       newdes += " 攻" + item.ATKlimit.to_s   if  item.ATKlimit != 0
  95.       newdes += " 防" + item.DEFlimit.to_s   if  item.DEFlimit != 0
  96.       newdes += " 精" + item.SPIlimit.to_s   if  item.SPIlimit != 0
  97.       newdes += " 敏" + item.AGIlimit.to_s   if  item.AGIlimit != 0
  98.       @help_window.set_text(newdes)
  99.     else
  100.       @help_window.set_text("")
  101.     end
  102.    
  103.   end
  104. end
复制代码
因为如果不把等级限制的显示添加到详情帮助里就会出现这样的事情很难看:

前面或许没什么问题但是装备后会转到详情帮助的显示状态而且没有显示等级限制了

这道还可以接受但是当武器装备完再卸下再装备的时候问题出现了:

所以请问怎么把武器等级限制脚本的等级限制显示移植到详情帮助里显示
坑:


VX脚本;易语言龟速学习中ing。。。

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

2
发表于 2011-8-25 13:35:38 | 只看该作者
额,刷新了两次确定不是我网络不行后,我吐:

你不给那个详情帮助和装备武器等级限制给我让我做什么!!!!!!!
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1165
在线时间
274 小时
注册时间
2011-7-24
帖子
272
3
发表于 2011-8-25 13:40:03 | 只看该作者
表示你什么都不写会被干掉的
脚本的话这里:
  1. #=====================================================================
  2. #            装备限制 兼容 物品分类 补丁   by DRG
  3. #=====================================================================
  4. class Window_Item < Window_Selectable
  5.   def update_help
  6.    
  7.     if item != nil
  8.       newdes = item.description
  9.       newdes += "  要求:" if(item.LVlimit !=0 or item.ATKlimit !=0 or item.DEFlimit != 0 or item.SPIlimit != 0 or item.AGIlimit != 0)
  10.       newdes += " LV" + item.LVlimit.to_s    if  item.LVlimit != 0
  11.       newdes += " 攻" + item.ATKlimit.to_s   if  item.ATKlimit != 0
  12.       newdes += " 防" + item.DEFlimit.to_s   if  item.DEFlimit != 0
  13.       newdes += " 精" + item.SPIlimit.to_s   if  item.SPIlimit != 0
  14.       newdes += " 敏" + item.AGIlimit.to_s   if  item.AGIlimit != 0
  15.       @help_window.set_text(newdes)
  16.     end
  17.   end
  18.   
  19. end  
复制代码
  1. #=====================================================================
  2. #            装备物品限制 兼容 物品分类 补丁   by DRG
  3. #=====================================================================
  4. class Window_Item < Window_Selectable
  5.   def update_help
  6.     if item != nil
  7.      newdes = item.description         
  8.      if(item.LVlimit !=0 or item.ATKlimit !=0 or item.DEFlimit != 0 or item.SPIlimit != 0 or item.AGIlimit != 0)
  9.        newdes += "  要求"
  10.        case item.LimitType
  11.        when 0
  12.          newdes += "使用者:"
  13.        when 1
  14.          newdes += "使用目标:"
  15.        when 2
  16.          newdes += "使用者和目标:"
  17.        end
  18.        newdes += " LV" + item.LVlimit.to_s    if  item.LVlimit != 0
  19.        newdes += " 攻" + item.ATKlimit.to_s   if  item.ATKlimit != 0
  20.        newdes += " 防" + item.DEFlimit.to_s   if  item.DEFlimit != 0
  21.        newdes += " 精" + item.SPIlimit.to_s   if  item.SPIlimit != 0
  22.        newdes += " 敏" + item.AGIlimit.to_s   if  item.AGIlimit != 0
  23.      end
  24.        @help_window.set_text(newdes)
  25.     else
  26.       @help_window.set_text("")
  27.     end
  28.   end
  29.   
  30. end  
复制代码
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
121 小时
注册时间
2011-1-13
帖子
131
4
 楼主| 发表于 2011-8-25 15:39:33 | 只看该作者
本帖最后由 有求必应 于 2011-8-25 16:37 编辑


我说的是这两个脚本显示的帮助能显示在一起(就是把武器限制的要求LV xx 显示在详情帮助脚本的小框框里不要上面那个长条了):
  1. #============================================================================
  2. #         BY drgdrg  (感谢snstar2006提供的提取[]内容代码)
  3. #定义装备等级限制方法:在数据库装备备注里写上[LV n] ,LV后有空格,n为等级,
  4. #同理,定义装备能力值限制方法:备注里写上[ATK n][DEF n][SPI n][AGI n]。
  5. #若某项限制不写则没有装备限制。
  6. #注意这里限制的能力值是人物原始的能力值,不考虑装备、状态的影响,
  7. #但是考虑事件对能力值的影响。
  8. #==============================================================================
  9. #==============================================================================
  10. # ■ RPG::BaseItem
  11. #==============================================================================
  12. class RPG::BaseItem

  13.   def LVlimit                                         #物品要求最低等级
  14.     m = 0
  15.     self.note.split(/[\r\n]+/).each { |line|
  16.       m = $1.to_i if line =~ /\[LV (\d+)\]/
  17.     }   
  18.     return m
  19.   end
  20.   
  21.   def ATKlimit                                        #物品要求最低个人攻击力
  22.     m = 0
  23.     self.note.split(/[\r\n]+/).each { |line|
  24.       m = $1.to_i if line =~ /\[ATK (\d+)\]/
  25.     }   
  26.     return m
  27.   end
  28.   
  29.   def DEFlimit                                        #物品要求最低个人防御力
  30.     m = 0
  31.     self.note.split(/[\r\n]+/).each { |line|
  32.       m = $1.to_i if line =~ /\[DEF (\d+)\]/
  33.     }   
  34.     return m
  35.   end

  36.   def SPIlimit                                        #物品要求最低个人精神力
  37.     m = 0
  38.     self.note.split(/[\r\n]+/).each { |line|
  39.       m = $1.to_i if line =~ /\[SPI (\d+)\]/
  40.     }   
  41.     return m
  42.   end
  43.   
  44.   def AGIlimit                                        #物品要求最低个人敏捷性
  45.     m = 0
  46.     self.note.split(/[\r\n]+/).each { |line|
  47.       m = $1.to_i if line =~ /\[AGI (\d+)\]/
  48.     }   
  49.     return m
  50.   end  
  51. end



  52. #==============================================================================
  53. # ■ Game_Actor
  54. #------------------------------------------------------------------------------
  55. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  56. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  57. #==============================================================================

  58. class Game_Actor < Game_Battler  
  59.   #--------------------------------------------------------------------------
  60.   # ● 判断是否可以装备
  61.   #     item : 物品
  62.   #--------------------------------------------------------------------------
  63.   def equippable?(item)
  64.     return false if self.level < item.LVlimit                     #等级限制
  65.     return false if actor.parameters[2, @level] + @atk_plus < item.ATKlimit                   #攻击力限制
  66.     return false if actor.parameters[3, @level] + @def_plus < item.DEFlimit                   #防御力限制
  67.     return false if actor.parameters[4, @level] + @spi_plus < item.SPIlimit                   #精神力限制   
  68.     return false if actor.parameters[5, @level] + @agi_plus < item.AGIlimit                   #敏捷性限制
  69.     if item.is_a?(RPG::Weapon)
  70.       return self.class.weapon_set.include?(item.id)
  71.     elsif item.is_a?(RPG::Armor)
  72.       return false if two_swords_style and item.kind == 0  
  73.       return self.class.armor_set.include?(item.id)
  74.     end
  75.     return false
  76.   end
  77.   
  78. end

  79. #==============================================================================
  80. # ■ Window_Item
  81. #------------------------------------------------------------------------------
  82. #  物品画面、战斗画面、显示浏览物品的窗口。
  83. #==============================================================================

  84. class Window_Item < Window_Selectable
  85.   #--------------------------------------------------------------------------
  86.   # ● 更新帮助文本(自动显示使用物品的等级能力限制)
  87.   #--------------------------------------------------------------------------
  88.   def update_help
  89.    
  90.     if item != nil
  91.       newdes = item.description
  92.       newdes += "  要求:" if(item.LVlimit !=0 or item.ATKlimit !=0 or item.DEFlimit != 0 or item.SPIlimit != 0 or item.AGIlimit != 0)
  93.       newdes += " LV" + item.LVlimit.to_s    if  item.LVlimit != 0
  94.       newdes += " 攻" + item.ATKlimit.to_s   if  item.ATKlimit != 0
  95.       newdes += " 防" + item.DEFlimit.to_s   if  item.DEFlimit != 0
  96.       newdes += " 精" + item.SPIlimit.to_s   if  item.SPIlimit != 0
  97.       newdes += " 敏" + item.AGIlimit.to_s   if  item.AGIlimit != 0
  98.       @help_window.set_text(newdes)
  99.     else
  100.       @help_window.set_text("")
  101.     end
  102.    
  103.   end
  104. end
复制代码
  1. #==============================================================================
  2. # ■ Window_Help
  3. #------------------------------------------------------------------------------
  4. # 原作:xuelong
  5. # 修正:水迭澜
  6. # 移植:禾西
  7. #==============================================================================
  8. class Window_Help < Window_Base
  9.   #--------------------------------------------------------------------------
  10.   # ● 定義
  11.   #--------------------------------------------------------------------------
  12.   def set
  13.     @phrase,@y= {}, 0
  14.     @scope, @parameter_type = [], []
  15. =begin
  16.     @name_size = 名字文字大小
  17.     @size = 描述文字大小
  18.     @word = 每行的描述文字數
  19. =end
  20.     @name_size = 18
  21.     @size = 14
  22.     @word = 11
  23.    
  24.     # 不顯示的 屬性 與 狀態 ID
  25.     @unshow_elements = [17, 18]
  26.     @unshow_states = []
  27.    
  28.     # 基本文字設定
  29.     @phrase[:price]          = "价格"
  30.     @phrase[:elements]       = "攻击属性"
  31.     @phrase[:states]         = "复交状态"
  32.     @phrase[:guard_elements] = "减半状态"
  33.     @phrase[:guard_states]   = "无效化状态"
  34.     #------------------#
  35.     #   物品效果語句   #
  36.     #------------------#
  37.     @phrase[:recover]      = "回复"
  38.     @phrase[:hp]           = "HP"
  39.     @phrase[:mp]           = "MP"
  40.     @phrase[:plus_states]  = "状态附加"
  41.     @phrase[:minus_states] = "状态解除"
  42.     @phrase[:speed]        = "速度補正"
  43.     @phrase[:consumable]   = "消耗品"
  44.     @phrase[:base_damage]  = "基本伤害"
  45.     #------------------#
  46.     #   特殊效果語句   #
  47.     #------------------#
  48.     @phrase[:special]          = "特殊"
  49.     @phrase[:two_handed]       = "两手武器"
  50.     @phrase[:fast_attack]      = "回合内先制"
  51.     @phrase[:dual_attack]      = "连续攻击"
  52.     @phrase[:critical_bonus]   = "会心频发"
  53.     @phrase[:prevent_critical] = "会心防止"
  54.     @phrase[:half_mp_cost]     = "消费MP半分"
  55.     @phrase[:double_exp_gain]  = "取得经验值2倍"
  56.     @phrase[:auto_hp_recover]  = "HP自动回复"
  57.     @phrase[:physical_attack]  = "物理攻击"
  58.     @phrase[:damage_to_mp]     = "MP伤害"
  59.     @phrase[:absorb_damage]    = "伤害吸收"
  60.     @phrase[:ignore_defense]   = "无视防御"
  61.     #------------------#
  62.     #   技能描述語句   #
  63.     #------------------#
  64.     @phrase[:recovery] = "回复力"
  65.     @phrase[:mp_cost]  = "消耗SP"
  66.     @phrase[:hit]      = "命中率"
  67.     #------------------#
  68.     #   效果範圍語句   #
  69.     #------------------#
  70.     @phrase[:scope]    = "効果范围"
  71.     @scope[0]  = "特殊"
  72.     @scope[1]  = "敌单体"
  73.     @scope[2]  = "敌全体"
  74.     @scope[3]  = "敌単体 连续"
  75.     @scope[4]  = "敌単体 随机"
  76.     @scope[5]  = "敌二体 随机"
  77.     @scope[6]  = "敌三体 随机"
  78.     @scope[7]  = "我方单体"
  79.     @scope[8]  = "我方全体"
  80.     @scope[9]  = "我方战斗不能(单)"
  81.     @scope[10] = "我方战斗不能(全)"
  82.     @scope[11] = "使用者"
  83.     #------------------#
  84.     #   效果範圍語句   #
  85.     #------------------#
  86.     @parameter_type[1] = "MaxHP"
  87.     @parameter_type[2] = "MaxMP"
  88.     @parameter_type[3] = $data_system.terms.atk
  89.     @parameter_type[4] = $data_system.terms.def
  90.     @parameter_type[5] = $data_system.terms.spi
  91.     @parameter_type[6] = $data_system.terms.agi
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● 初始化對象
  95.   #--------------------------------------------------------------------------
  96.   def initialize
  97.     super(0, 0, 544, WLH + 32)
  98.     self.opacity = 200
  99.     self.z = 150
  100.     self.visible = false
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 設置文本
  104.   #     data  : 窗口顯示的字符串/物品資料
  105.   #     align : 對齊方式 (0..左對齊、1..中間對齊、2..右對齊)
  106.   #--------------------------------------------------------------------------
  107.   def set_text(data, align=0)
  108.     #------------------------------------------------------------------------
  109.     # ● 當資料爲文字時候
  110.     #------------------------------------------------------------------------
  111.     if data != @text or align != @align
  112.       if data.is_a?(String)
  113.         draw_string(data,align)
  114.       end
  115.     end
  116.     return if data.is_a?(String)
  117.     #------------------------------------------------------------------------
  118.     # ● 當沒有資料時候
  119.     #------------------------------------------------------------------------
  120.     if data.nil?
  121.       self.visible=false
  122.     else
  123.       self.visible=true
  124.     end
  125.     #------------------------------------------------------------------------
  126.     # ● 當資料爲物品/技能時候
  127.     #------------------------------------------------------------------------
  128.     if data != nil && @data != data
  129.       self.width = 210
  130.       self.height = 430
  131.       self.x=0
  132.       self.y=200
  133.       set
  134.       draw_data(data)
  135.     else
  136.       return
  137.     end
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 更新帮助窗口
  141.   #--------------------------------------------------------------------------
  142.   def draw_string(data,align)
  143.     self.width = 544        #修正寬度
  144.     self.height = WLH + 32  #修正高度
  145.     self.x=0                #修正 x 坐標
  146.     self.y=0                #修正 y 坐標
  147.     @text = data            #記錄文本資料
  148.     @align = align          #記錄對齊方式
  149.     @actor = nil            #清空角色資料
  150.     self.contents = Bitmap.new(width - 32, height - 32) if self.contents.nil?
  151.     self.contents.clear
  152.     self.contents.font.color = normal_color
  153.     self.contents.font.size = 20
  154.     self.contents.draw_text(4, 0, self.width - 40, 32, data, align)
  155.     self.visible = true
  156.   end
  157.   #--------------------------------------------------------------------------
  158.   # ● 更新帮助窗口
  159.   #--------------------------------------------------------------------------
  160.   def draw_data(data=@data)
  161.     self.width = 186        #修正寬度
  162.     self.height = 430       #修正高度
  163.     self.x=0                #修正 x 坐標
  164.     self.y=150              #修正 y 坐標
  165.     @data = data            #記錄 data 資料
  166.     case @data
  167.     when RPG::Item
  168.       set_item_text(@data)
  169.     when RPG::Weapon, RPG::Armor
  170.       set_equipment_text(@data)
  171.     when RPG::Skill
  172.       set_skill_text(@data)
  173.     end
  174.   end
  175.   #--------------------------------------------------------------------------
  176.   # ● 修正窗口位置
  177.   #--------------------------------------------------------------------------
  178.   def set_pos(x,y,width,oy,index,column_max)
  179.     cursor_width = width / column_max - 32
  180.     xx = index % column_max * (cursor_width + WLH)
  181.     yy = index / column_max * WLH - oy
  182.     self.x=xx+x+140
  183.     self.y=yy+y+35
  184.     if self.x+self.width>544
  185.       self.x=544-self.width
  186.     end
  187.     if self.y+self.height>416
  188.       self.y=416-self.height
  189.     end  
  190.   end
  191.   #------------------------------------------------------------------------
  192.   # ● 文字描繪
  193.   #------------------------------------------------------------------------
  194.   def draw_text(text, increase, move=0)
  195.     @y += increase
  196.     self.contents.font.color = normal_color
  197.     self.contents.font.size = @size
  198.     self.contents.draw_text(0+move, @y*@size+5, text.size*6, @size, text, 0)
  199.   end
  200. #-------------------------------------#
  201. # 子方法
  202. #-------------------------------------#
  203.   #--------------------------------------------------------------------------
  204.   # ● 裝備幫助窗口
  205.   #--------------------------------------------------------------------------
  206.   def set_equipment_text(equipment)
  207.     #------------------------------------------------------------------------
  208.     # ● 取得基本質料
  209.     #------------------------------------------------------------------------
  210.    
  211.     #----------------------------#
  212.     # 取得屬性、狀態、說明之副本 #
  213.     #----------------------------#
  214.     element_set = equipment.element_set.clone
  215.     state_set   = equipment.state_set.clone
  216.     description = equipment.description.clone
  217.     phrase      = @phrase
  218.     #----------------------------#
  219.     # 過濾不顯示的屬性與狀態描述 #
  220.     #----------------------------#
  221.     element_set -= @unshow_elements
  222.     state_set   -= @unshow_states
  223.     #----------------#
  224.     # 初始化數據設定 #
  225.     #----------------#
  226.     x, h, move = 0, 0, 0
  227.     #------------------#
  228.     # 取得特殊效果數據 #
  229.     #------------------#
  230.     special = []
  231.     case equipment
  232.     when RPG::Weapon
  233.       special << phrase[:two_handed]      if equipment.two_handed
  234.       special << phrase[:fast_attack]     if equipment.fast_attack
  235.       special << phrase[:dual_attack]     if equipment.dual_attack
  236.       special << phrase[:critical_bonus]  if equipment.critical_bonus
  237.     when RPG::Armor
  238.       special << phrase[:prevent_critical]if equipment.prevent_critical
  239.       special << phrase[:half_mp_cost]    if equipment.half_mp_cost
  240.       special << phrase[:double_exp_gain] if equipment.double_exp_gain
  241.       special << phrase[:auto_hp_recover] if equipment.auto_hp_recover
  242.     end
  243.     #------------------------------------------------------------------------
  244.     # ● 確定背景圖片的高度
  245.     #------------------------------------------------------------------------
  246.     h += (description.size/3/@word)
  247.     h += 1 if (description.size/3%@word) > 0
  248.     now_h = h
  249.    
  250.     h += 1                               #價格
  251.    
  252.     h += 1 unless equipment.atk.zero?    #攻擊力
  253.     h += 1 unless equipment.def.zero?    #防禦力
  254.     h += 1 unless equipment.spi.zero?    #精神力
  255.     h += 1 unless equipment.agi.zero?    #敏捷力

  256.     h += 1 unless equipment.nodur        ## 耐久度
  257.     h += element_set.size + 1 if element_set.size > 0  #屬性
  258.     h += state_set.size   + 1 if state_set.size   > 0  #狀態
  259.     h += special.size     + 1 if special.size     > 0  #特殊效果
  260.     #------------------------------------------------------------------------
  261.     # ● 圖片顯示保證高度
  262.     #------------------------------------------------------------------------
  263.     #h = 6 + now_h if (h - now_h) < 6
  264.     #------------------------------------------------------------------------
  265.     # ● 換算高度
  266.     #------------------------------------------------------------------------
  267.     self.height = h * @size + @name_size + 32
  268.     #------------------------------------------------------------------------
  269.     # ● 生成背景
  270.     #------------------------------------------------------------------------
  271.     self.contents = Bitmap.new(self.width - 32, self.height - 32)
  272.     self.contents.clear
  273.     #------------------------------------------------------------------------
  274.     # ● 名字描繪
  275.     #------------------------------------------------------------------------
  276.     text = equipment.name
  277.     self.contents.font.color = normal_color
  278.     self.contents.font.size = @name_size
  279.     if text.nil?
  280.       self.visible = false
  281.     else
  282.       self.visible = true
  283.       self.contents.draw_text(0, 0, text.size*7, @name_size, text, 0)
  284.     end
  285.     #------------------------------------------------------------------------
  286.     # ● 說明描繪
  287.     #------------------------------------------------------------------------
  288.     x = 0
  289.     @y += 1
  290.     while ((text = description.slice!(/./m)) != nil)
  291.       if x == @word
  292.         x=0
  293.         @y+=1
  294.       end
  295.       self.contents.font.color = normal_color
  296.       self.contents.font.size = @size
  297.       self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
  298.       x+=1
  299.     end
  300.     #------------------------------------------------------------------------
  301.     # ● 圖標描繪
  302.     #------------------------------------------------------------------------
  303.     #bitmap = Cache.system("Iconset")
  304.     #rect = Rect.new(equipment.icon_index % 16 * 24, equipment.icon_index / 16 * 24, 24, 24)
  305.     #self.contents.blt(0, y*size + 20, bitmap, rect, 255)
  306.     #------------------------------------------------------------------------
  307.     # ● 價格描繪
  308.     #------------------------------------------------------------------------
  309.     unless equipment.price.zero?
  310.       text = phrase[:price] + ":" + equipment.price.to_s
  311.       draw_text(text, 1, move)
  312.     end
  313.     #------------------------------------------------------------------------
  314.     # ● 攻擊力
  315.     #------------------------------------------------------------------------
  316.     unless equipment.atk.zero?
  317.       text = $data_system.terms.atk + ":" + equipment.atk.to_s
  318.       draw_text(text, 1, move)
  319.     end
  320.     #------------------------------------------------------------------------
  321.     # ● 防禦力
  322.     #------------------------------------------------------------------------
  323.     unless equipment.def.zero?
  324.       text = $data_system.terms.def + ":" + equipment.def.to_s
  325.       draw_text(text, 1, move)
  326.     end
  327.     #------------------------------------------------------------------------
  328.     # ● 精神力
  329.     #------------------------------------------------------------------------
  330.     unless equipment.spi.zero?
  331.       text = $data_system.terms.spi + ":" + equipment.spi.to_s
  332.       draw_text(text, 1, move)
  333.     end
  334.     #------------------------------------------------------------------------
  335.     # ● 敏捷力
  336.     #------------------------------------------------------------------------
  337.     unless equipment.agi.zero?
  338.       text = $data_system.terms.agi + ":" + equipment.agi.to_s
  339.       draw_text(text, 1, move)
  340.     end
  341.     #------------------------------------------------------------------------
  342.     # ● 屬性
  343.     #------------------------------------------------------------------------
  344.     if element_set.size > 0
  345.       case equipment
  346.       when RPG::Weapon
  347.         text=phrase[:elements]+":"
  348.       when RPG::Armor
  349.         text=phrase[:guard_elements]+":"
  350.       end
  351.       draw_text(text, 1, move)
  352.       element_set.each do |i|
  353.         text = $data_system.elements[i]
  354.         draw_text(text, 1, move + @size)
  355.       end
  356.     end

  357.     #------------------------------------------------------------------------
  358.     # ** 耐久度
  359.     #------------------------------------------------------------------------
  360.     unless equipment.nodur
  361.       unless equipment.indesctructible
  362.         text = "耐久度: #{equipment.dur} / #{equipment.maxdur}"
  363.       else
  364.         text = "耐久度:无法破坏"
  365.       end
  366.       draw_text(text, 1, move)
  367.     end
  368.    
  369.     #------------------------------------------------------------------------
  370.     # ● 狀態
  371.     #------------------------------------------------------------------------
  372.     if state_set.size > 0
  373.       case equipment
  374.       when RPG::Weapon
  375.         text=phrase[:states]+":"
  376.       when RPG::Armor
  377.         text=phrase[:guard_states]+":"
  378.       end
  379.       draw_text(text, 1, move)
  380.       state_set.each do |i|
  381.         text = $data_states[i].name
  382.         draw_text(text, 1, move + @size)
  383.       end
  384.     end
  385.     #------------------------------------------------------------------------
  386.     # ● 特殊效果
  387.     #------------------------------------------------------------------------
  388.     if special.size > 0
  389.       text = phrase[:special]+":"
  390.       draw_text(text, 1, move)
  391.       special.each {|text| draw_text(text, 1, move + @size)}
  392.     end
  393.   end
  394. #////////////////////////////////////////////////////////////////////////////
  395.   #--------------------------------------------------------------------------
  396.   # ● 物品幫助窗口
  397.   #--------------------------------------------------------------------------
  398.   def set_item_text(item)
  399.     #----------------------------#
  400.     # 取得屬性、狀態、說明之副本 #
  401.     #----------------------------#
  402.     description = item.description.clone
  403.     element_set = item.element_set.clone
  404.     plus_state_set = item.plus_state_set.clone
  405.     minus_state_set = item.minus_state_set.clone
  406.     # 過濾不顯示的描述
  407.     element_set -= @unshow_elements
  408.     plus_state_set -= @unshow_states
  409.     minus_state_set -= @unshow_states
  410.     # 初始化數據設定
  411.     x, h, move = 0, 0, 0
  412.     phrase = @phrase
  413.     scope = @scope
  414.     parameter_type = @parameter_type
  415.     occasion = @occasion
  416.     # 基本文字設定

  417.    
  418.     #------------------#
  419.     # 取得特殊效果數據 #
  420.     #------------------#
  421.     special = []
  422.     special << phrase[:physical_attack] if item.physical_attack #物理攻撃
  423.     special << phrase[:damage_to_mp]    if item.damage_to_mp    #MPにダメージ
  424.     special << phrase[:absorb_damage]   if item.absorb_damage   #ダメージを吸収
  425.     special << phrase[:ignore_defense]  if item.ignore_defense  #防御力無視
  426.    
  427.     #------------------------------------------------------------------------
  428.     # ● 確定背景圖片的高度
  429.     #------------------------------------------------------------------------
  430.     h += (description.size/3/@word)
  431.     h += 1 if (description.size/3%@word) > 0
  432.     now_h = h
  433.    
  434.     h += 2                                  #効果範囲,價格
  435.     h += 1 if item.consumable               #消耗品
  436.     h += 1 unless item.speed.zero?          #速度補正値
  437.    
  438.     h += 1 unless item.hp_recovery_rate==0 and item.hp_recovery==0 #HP 回復
  439.     h += 1 unless item.mp_recovery_rate==0 and item.mp_recovery==0 #MP 回復
  440.    
  441.     h += 1 unless item.parameter_type.zero? #能力値
  442.     h += 1 unless item.base_damage.zero?    #基本ダメージ
  443.    
  444.     h += element_set.size     + 1 if element_set.size     > 0  #屬性
  445.     h += plus_state_set.size  + 1 if plus_state_set.size  > 0  #附加狀態
  446.     h += minus_state_set.size + 1 if minus_state_set.size > 0  #解除狀態
  447.     h += special.size         + 1 if special.size         > 0  #特殊效果
  448.    
  449.     #------------------------------------------------------------------------
  450.     # ● 圖片顯示保證高度
  451.     #------------------------------------------------------------------------
  452.     ##h = 6 + now_h if (h - now_h) < 6
  453.     #------------------------------------------------------------------------
  454.     # ● 換算高度
  455.     #------------------------------------------------------------------------
  456.     self.height = h * @size + @name_size + 32
  457.     #------------------------------------------------------------------------
  458.     # ● 生成背景
  459.     #------------------------------------------------------------------------
  460.     self.contents = Bitmap.new(self.width - 32, self.height - 32)
  461.     self.contents.clear
  462.     #------------------------------------------------------------------------
  463.     # ● 名字描繪
  464.     #------------------------------------------------------------------------
  465.     text = item.name
  466.     self.contents.font.color = normal_color#顔色腳本
  467.     self.contents.font.size = @name_size
  468.     if text.nil?
  469.       self.visible = false
  470.     else
  471.       self.visible = true
  472.       self.contents.draw_text(0,0, text.size*7, 20, text, 0)
  473.     end
  474.     #------------------------------------------------------------------------
  475.     # ● 說明描繪
  476.     #------------------------------------------------------------------------
  477.      x = 0
  478.     @y += 1
  479.     while ((text = description.slice!(/./m)) != nil)
  480.       if x == @word
  481.          x = 0
  482.         @y += 1
  483.       end
  484.       self.contents.font.color = normal_color
  485.       self.contents.font.size = @size
  486.       self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
  487.       x+=1
  488.     end
  489.     #------------------------------------------------------------------------
  490.     # ● 圖標描繪
  491.     #------------------------------------------------------------------------
  492.     #bitmap = Cache.system("Iconset")
  493.     #rect = Rect.new(item.icon_index % 16 * 24, equipment.icon_index / 16 * 24, 24, 24)
  494.     #self.contents.blt(0, y*size + 20, bitmap, rect, 255)
  495.     #------------------------------------------------------------------------
  496.     # ● 效果範圍
  497.     #------------------------------------------------------------------------
  498.     text = phrase[:scope] +":"
  499.     draw_text(text, 1, move)
  500.     text = scope[item.scope]
  501.     draw_text(text, 1, move + @size)
  502.     #------------------------------------------------------------------------
  503.     # ● 價格
  504.     #------------------------------------------------------------------------
  505.     text = phrase[:price] + item.price.to_s
  506.     draw_text(text, 1, move)
  507.     #------------------------------------------------------------------------
  508.     # ● 消耗品
  509.     #------------------------------------------------------------------------
  510.     if item.consumable
  511.       text = phrase[:consumable]
  512.       draw_text(text, 1, move)
  513.     end
  514.     #------------------------------------------------------------------------
  515.     # ● 速度補正値
  516.     #------------------------------------------------------------------------
  517.     unless item.speed.zero?
  518.       text = phrase[:speed]
  519.       draw_text(text, 1, move)
  520.     end
  521.     #------------------------------------------------------------------------
  522.     # ● HP回復
  523.     #------------------------------------------------------------------------
  524.     unless item.hp_recovery_rate.zero? and item.hp_recovery.zero?
  525.       if item.hp_recovery_rate > 0 and item.hp_recovery > 0
  526.         text = " + "
  527.       else
  528.         text = ""
  529.       end
  530.       
  531.       unless item.hp_recovery_rate.zero?
  532.         text = item.hp_recovery_rate.to_s + "%" + text
  533.       end
  534.       unless item.hp_recovery.zero?
  535.         text += item.hp_recovery.to_s
  536.       end
  537.       text = phrase[:recover] +":" + phrase[:hp] + text
  538.       draw_text(text, 1, move)
  539.     end
  540.     #------------------------------------------------------------------------
  541.     # ● SP回復
  542.     #------------------------------------------------------------------------
  543.     unless item.mp_recovery_rate.zero? and item.mp_recovery.zero?
  544.       if item.mp_recovery_rate > 0 and item.mp_recovery > 0
  545.         text = " + "
  546.       else
  547.         text = ""
  548.       end
  549.       
  550.       unless item.mp_recovery_rate.zero?
  551.         text = item.mp_recovery_rate.to_s + "%" + text
  552.       end
  553.       unless item.mp_recovery.zero?
  554.         text += item.mp_recovery.to_s
  555.       end
  556.       text = phrase[:recover] +":" + phrase[:mp] + text
  557.       draw_text(text, 1, move)
  558.     end
  559.     #------------------------------------------------------------------------
  560.     # ● 能力值增加
  561.     #------------------------------------------------------------------------
  562.     unless item.parameter_type.zero?
  563.       text= parameter_type[item.parameter_type]+" +"+item.parameter_points.to_s
  564.       draw_text(text, 1, move)
  565.     end
  566.     #------------------------------------------------------------------------
  567.     # ● 基本ダメージ
  568.     #------------------------------------------------------------------------
  569.     unless item.base_damage.zero?
  570.       text = phrase[:base_damage] +":" + item.base_damage.to_s
  571.       draw_text(text, 1, move)
  572.     end
  573.     #------------------------------------------------------------------------
  574.     # ● 屬性
  575.     #------------------------------------------------------------------------
  576.     if element_set.size > 0
  577.       text = phrase[:elements]+":"
  578.       draw_text(text, 1, move)
  579.       element_set.each do |i|
  580.         text = $data_system.elements[i]
  581.         draw_text(text, 1, move + @size)
  582.       end
  583.     end
  584.     #------------------------------------------------------------------------
  585.     # ● 添加狀態
  586.     #------------------------------------------------------------------------
  587.     unless plus_state_set.empty?
  588.       text = phrase[:plus_states]+":"
  589.       draw_text(text, 1, move)
  590.       plus_state_set.each do |i|
  591.         text = $data_states[i].name
  592.         draw_text(text, 1, move + @size)
  593.       end
  594.     end
  595.     #------------------------------------------------------------------------
  596.     # ● 解除狀態
  597.     #------------------------------------------------------------------------
  598.     unless minus_state_set.empty?
  599.       text = phrase[:minus_states]+":"
  600.       draw_text(text, 1, move)
  601.       minus_state_set.each do |i|
  602.         text = $data_states[i].name
  603.         draw_text(text, 1, move + @size)
  604.       end
  605.     end
  606.     #------------------------------------------------------------------------
  607.     # ● 特殊效果
  608.     #------------------------------------------------------------------------
  609.     if special.size > 0
  610.       text = phrase[:special]+":"
  611.       draw_text(text, 1, move)
  612.       special.each {|text| draw_text(text, 1, move + @size)}
  613.     end
  614.   end
  615. #////////////////////////////////////////////////////////////////////////////
  616.   #--------------------------------------------------------------------------
  617.   # ● 技能帮助窗口
  618.   #--------------------------------------------------------------------------
  619.   def set_skill_text(skill)
  620.     #----------------------------#
  621.     # 取得屬性、狀態、說明之副本 #
  622.     #----------------------------#
  623.     description = skill.description.clone
  624.     element_set = skill.element_set.clone
  625.     plus_state_set = skill.plus_state_set.clone
  626.     minus_state_set = skill.minus_state_set.clone
  627.     # 過濾不顯示的描述
  628.     element_set -= @unshow_elements
  629.     plus_state_set -= @unshow_states
  630.     minus_state_set -= @unshow_states
  631.     # 初始化設定
  632.     x ,h, move = 0, 0, 0
  633.     phrase = @phrase
  634.     scope = @scope
  635.     #------------------#
  636.     # 取得特殊效果數據 #
  637.     #------------------#
  638.     special = []
  639.     special << phrase[:physical_attack] if skill.physical_attack #物理攻撃
  640.     special << phrase[:damage_to_mp]    if skill.damage_to_mp    #MPにダメージ
  641.     special << phrase[:absorb_damage]   if skill.absorb_damage   #ダメージを吸収
  642.     special << phrase[:ignore_defense]  if skill.ignore_defense  #防御力無視
  643.     #------------------------------------------------------------------------
  644.     # ● 確定背景圖片的高度
  645.     #------------------------------------------------------------------------
  646.     h += (description.size/3/@word)
  647.     h += 1 if (description.size/3%@word) > 0
  648.     now_h = h
  649.    
  650.     h += 4                                  #効果範囲,消費MP,命中率
  651.     h += 1 unless skill.speed.zero?         #速度補正値
  652.     h += 1 unless skill.base_damage.zero?   #基本ダメージ
  653.    
  654.    
  655.    
  656.     h += element_set.size     + 1 if element_set.size     > 0  #屬性
  657.     h += plus_state_set.size  + 1 if plus_state_set.size  > 0  #附加狀態
  658.     h += minus_state_set.size + 1 if minus_state_set.size > 0  #解除狀態
  659.     h += special.size         + 1 if special.size         > 0  #特殊效果
  660.     #------------------------------------------------------------------------
  661.     # ● 換算高度
  662.     #------------------------------------------------------------------------
  663.     self.height=h * @size + @name_size + 32  
  664.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  665.     self.contents.clear
  666.    
  667.     #------------------------------------------------------------------------
  668.     # ● 名字描述
  669.     #------------------------------------------------------------------------
  670.     text = skill.name
  671.     self.contents.font.color = Color.new(255, 255, 128, 255)
  672.     self.contents.font.size = @name_size
  673.     if text!=nil
  674.       self.visible = true
  675.       self.contents.draw_text(0,0, text.size*7, @name_size, text, 0)
  676.     else
  677.       self.visible = false
  678.     end
  679.    
  680.     #------------------------------------------------------------------------
  681.     # ● 說明描述
  682.     #------------------------------------------------------------------------
  683.     x = 0
  684.     @y += 1
  685.     text = description
  686.     while ((text = description.slice!(/./m)) != nil)
  687.       if x==@word
  688.         x = 0
  689.         @y += 1
  690.       end
  691.       self.contents.font.color = normal_color
  692.       self.contents.font.size = @size
  693.       self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
  694.       x+=1
  695.     end
  696.    
  697.     #------------------------------------------------------------------------
  698.     # ● 攻擊範圍
  699.     #------------------------------------------------------------------------
  700.     text = phrase[:scope] +":"
  701.     draw_text(text, 1, move)
  702.     text = scope[skill.scope]
  703.     draw_text(text, 1, move + @size)
  704.     #------------------------------------------------------------------------
  705.     # ● 基本ダメージ
  706.     #------------------------------------------------------------------------
  707.     unless skill.base_damage .zero?
  708.       text = skill.base_damage > 0 ? phrase[:base_damage] : phrase[:recovery]
  709.       text += ":" + skill.base_damage.abs.to_s
  710.       draw_text(text, 1, move)
  711.     end
  712.     #------------------------------------------------------------------------
  713.     # ● 消費SP描述
  714.     #------------------------------------------------------------------------
  715.     text = phrase[:mp_cost] +":"+ skill.mp_cost.to_s
  716.     draw_text(text, 1, move)
  717.     #------------------------------------------------------------------------
  718.     # ● 命中率描述
  719.     #------------------------------------------------------------------------
  720.     text = phrase[:hit] + ":" + skill.hit.to_s + "%"
  721.     draw_text(text, 1, move)
  722.     #------------------------------------------------------------------------
  723.     # ● 屬性
  724.     #------------------------------------------------------------------------
  725.     if element_set.size > 0
  726.       text = phrase[:elements]+":"
  727.       draw_text(text, 1, move)
  728.       element_set.each do |i|
  729.         text = $data_system.elements[i]
  730.         draw_text(text, 1, move + @size)
  731.       end
  732.     end
  733.     #------------------------------------------------------------------------
  734.     # ● 添加狀態
  735.     #------------------------------------------------------------------------
  736.     unless plus_state_set.empty?
  737.       text = phrase[:plus_states]+":"
  738.       draw_text(text, 1, move)
  739.       plus_state_set.each do |i|
  740.         text = $data_states[i].name
  741.         draw_text(text, 1, move + @size)
  742.       end
  743.     end
  744.     #------------------------------------------------------------------------
  745.     # ● 解除狀態
  746.     #------------------------------------------------------------------------
  747.     unless minus_state_set.empty?
  748.       text = phrase[:minus_states]+":"
  749.       draw_text(text, 1, move)
  750.       minus_state_set.each do |i|
  751.         text = $data_states[i].name
  752.         draw_text(text, 1, move + @size)
  753.       end
  754.     end
  755.     #------------------------------------------------------------------------
  756.     # ● 特殊效果
  757.     #------------------------------------------------------------------------
  758.     if special.size > 0
  759.       text = phrase[:special]+":"
  760.       draw_text(text, 1, move)
  761.       special.each {|text| draw_text(text, 1, move + @size)}
  762.     end  
  763.   end
  764. end

  765. #==============================================================================
  766. # ■ Window_Item
  767. #------------------------------------------------------------------------------
  768. #  アイテム画面などで、所持アイテムの一覧を表示するウィンドウです。
  769. #==============================================================================

  770. class Window_Item < Window_Selectable
  771.   #--------------------------------------------------------------------------
  772.   # ● ヘルプテキスト更新
  773.   #--------------------------------------------------------------------------
  774.   def update_help
  775.     @help_window.set_text(item)
  776.     #修正窗口位置
  777.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  778.   end
  779. end
  780. #==============================================================================
  781. # ■ Window_Skill
  782. #------------------------------------------------------------------------------
  783. #  スキル画面などで、使用できるスキルの一覧を表示するウィンドウです。
  784. #==============================================================================

  785. class Window_Skill < Window_Selectable
  786.   #--------------------------------------------------------------------------
  787.   # ● ヘルプテキスト更新
  788.   #--------------------------------------------------------------------------
  789.   def update_help
  790.     @help_window.set_text(skill)
  791.     #修正窗口位置
  792.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  793.   end
  794. end
  795. #==============================================================================
  796. # ■ Window_Equip
  797. #------------------------------------------------------------------------------
  798. #  装備画面で、アクターが現在装備しているアイテムを表示するウィンドウです。
  799. #==============================================================================

  800. class Window_Equip < Window_Selectable
  801.   #--------------------------------------------------------------------------
  802.   # ● ヘルプテキスト更新
  803.   #--------------------------------------------------------------------------
  804.   def update_help
  805.     @help_window.set_text(item)
  806.     #修正窗口位置
  807.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  808.   end
  809. end
  810. #==============================================================================
  811. # ■ Window_ShopBuy
  812. #------------------------------------------------------------------------------
  813. #  ショップ画面で、購入できる商品の一覧を表示するウィンドウです。
  814. #==============================================================================
  815. class Window_ShopBuy < Window_Selectable
  816.   #--------------------------------------------------------------------------
  817.   # ● ヘルプテキスト更新
  818.   #--------------------------------------------------------------------------
  819.   def update_help
  820.     @help_window.set_text(item)
  821.     #修正窗口位置
  822.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  823.   end
  824. end

复制代码

点评

怎么说吧!我记得貌似等级能力限制的发布帖里就有兼容的方法 http://bbs.66rpg.com/forum.php?mod=viewthread&tid=99302&fro  发表于 2011-8-25 17:20
额脚本在3l............可以用请认可  发表于 2011-8-25 15:48
额脚本在3l............可以用请认可  发表于 2011-8-25 15:48
额脚本在3l............可以用请认可  发表于 2011-8-25 15:47
坑:


VX脚本;易语言龟速学习中ing。。。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-10 03:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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