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

Project1

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

[已经解决] 复杂装备系统出错!~~~~急~!!

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
83 小时
注册时间
2013-1-13
帖子
36
跳转到指定楼层
1
 楼主| 发表于 2013-2-10 14:57:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. ==============================================================================
  2. # ■ Window_Help
  3. #------------------------------------------------------------------------------
  4. # 原作:xuelong
  5. # 修正:水迭澜
  6. # 移植:禾西
  7. # protosssonny修改版
  8. #==============================================================================
  9. class Window_Help < Window_Base
  10.   #--------------------------------------------------------------------------
  11.   # ● 定義
  12.   #--------------------------------------------------------------------------
  13.   def set
  14.     @phrase,@y= {}, 0
  15.     @scope, @parameter_type = [], []
  16.    #@name_size = 名字文字大小
  17.    #@size = 描述文字大小
  18.    #[url=home.php?mod=space&uid=79957]@WORD[/url] = 每行的描述文字數
  19.     @name_size = 18
  20.     @size = 14
  21.     @word = 11
  22.    
  23.     # 不顯示的 屬性 與 狀態 ID
  24.     @unshow_elements = []
  25.     @unshow_states = [17,29,31,37,38,39,40]
  26.    
  27.     # 基本文字設定
  28.     @phrase[:price]          = "价格"
  29.     @phrase[:elements]       = "攻击属性"
  30.     @phrase[:states]         = "附加状态"
  31.     @phrase[:guard_elements] = "减半属性"
  32.     @phrase[:guard_states]   = "无效化状态"
  33.     #------------------#
  34.     #   物品效果語句   #
  35.     #------------------#
  36.     @phrase[:recover]      = "恢复"
  37.     @phrase[:hp]           = "HP"
  38.     @phrase[:mp]           = "MP"
  39.     @phrase[:plus_states]  = "状态附加"
  40.     @phrase[:minus_states] = "状态解除"
  41.     @phrase[:speed]        = "速度修正"
  42.     @phrase[:consumable]   = "消耗品"
  43.     @phrase[:base_damage]  = "基本伤害"
  44.     #------------------#
  45.     #   特殊效果語句   #
  46.     #------------------#
  47.     @phrase[:special]          = "附带属性"
  48.     @phrase[:two_handed]       = "双手武器"
  49.     @phrase[:fast_attack]      = "回合内先制"
  50.     @phrase[:dual_attack]      = "连续攻击"
  51.     @phrase[:critical_bonus]   = "频繁暴击"
  52.     @phrase[:prevent_critical] = "防止暴击"
  53.     @phrase[:half_mp_cost]     = "消耗MP减半"
  54.     @phrase[:double_exp_gain]  = "取得经验值2倍"
  55.     @phrase[:auto_hp_recover]  = "HP自动恢复"
  56.     @phrase[:physical_attack]  = "物理攻击"
  57.     @phrase[:damage_to_mp]     = "MP伤害"
  58.     @phrase[:absorb_damage]    = "伤害吸收"
  59.     @phrase[:ignore_defense]   = "不可出售"
  60.     #------------------#
  61.     #   技能描述語句   #
  62.     #------------------#
  63.     @phrase[:recovery] = "恢复力"
  64.     @phrase[:mp_cost]  = "消耗MP"
  65.     @phrase[:hit]      = "命中率"
  66.     #------------------#
  67.     #   效果範圍語句   #
  68.     #------------------#
  69.     @phrase[:scope]    = "效果范围"
  70.     @scope[0]  = "无"
  71.     @scope[1]  = "敌人"
  72.     @scope[2]  = "敌全体"
  73.     @scope[3]  = "敌单体 连续"
  74.     @scope[4]  = "一至二人"
  75.     @scope[5]  = "二至四人"
  76.     @scope[6]  = "四至十人"
  77.     @scope[7]  = "我方单体"
  78.     @scope[8]  = "我方全体"
  79.     @scope[9]  = "我方单个死亡者"
  80.     @scope[10] = "我方所有死亡者"
  81.     @scope[11] = "自己"
  82.     #------------------#
  83.     #   效果範圍語句   #
  84.     #------------------#
  85.     @parameter_type[1] = "MaxHP"
  86.     @parameter_type[2] = "MaxMP"
  87.     @parameter_type[3] = $data_system.terms.atk
  88.     @parameter_type[4] = $data_system.terms.def
  89.     @parameter_type[5] = $data_system.terms.spi
  90.     @parameter_type[6] = $data_system.terms.agi
  91.   end
  92.   
  93.   #--------------------------------------------------------------------------
  94.   # ● 初始化對象
  95.   #--------------------------------------------------------------------------
  96.   def initialize
  97.     super(240,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 = 240            #修正 x 坐標
  146.     self.y = 0              #修正 y 坐標
  147.     @text = data            #記錄文本資料
  148.     @align = align          #記錄對齊方式
  149.     [url=home.php?mod=space&uid=95897]@actor[/url] = 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, 28, 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.size = @size
  197.     @special_size = 0 if @special_size == nil
  198.     @first_line = 0 if @first_line == nil
  199.     if @special_size > 0 and not @data.is_a?(RPG::Item)
  200.       if @y >= increase * @first_line
  201.         case @special_size
  202.         when 0
  203.           self.contents.font.color = normal_color
  204.         when 1
  205.           self.contents.font.color = text_color(12)
  206.         when 2
  207.           self.contents.font.color = text_color(29)
  208.         when 3
  209.           self.contents.font.color = text_color(17)
  210.         when 4
  211.           self.contents.font.color = text_color(20)
  212.         when 5
  213.           self.contents.font.color = text_color(26)
  214.         when 6
  215.           self.contents.font.color = text_color(31)
  216.         end
  217.       end
  218.       self.contents.draw_text(0+move, @y*@size+5, text.size*6, @size, text, 0)
  219.     else
  220.       self.contents.font.color = normal_color
  221.       self.contents.draw_text(0+move, @y*@size+5, text.size*6, @size, text, 0)
  222.     end
  223.   end

  224. #-------------------------------------#
  225. # 子方法
  226. #-------------------------------------#
  227.   #--------------------------------------------------------------------------
  228.   # ● 裝備幫助窗口
  229.   #--------------------------------------------------------------------------
  230.   def set_equipment_text(equipment)
  231.     #------------------------------------------------------------------------
  232.     # ● 取得基本質料
  233.     #------------------------------------------------------------------------
  234.    
  235.     #----------------------------#
  236.     # 取得屬性、狀態、說明之副本 #
  237.     #----------------------------#
  238.     element_set = equipment.element_set.clone
  239.     state_set   = equipment.state_set.clone
  240.     description = equipment.description.clone
  241.     phrase      = @phrase
  242.     #----------------------------#
  243.     # 過濾不顯示的屬性與狀態描述 #
  244.     #----------------------------#
  245.     element_set -= @unshow_elements
  246.     state_set   -= @unshow_states
  247.     #----------------#
  248.     # 初始化數據設定 #
  249.     #----------------#
  250.     x, h, move = 0, 0, 0
  251.     #------------------#
  252.     # 取得特殊效果數據 #
  253.     #------------------#
  254.     special = []
  255.     gifts = equipment.gifts
  256.     gifts = [] if gifts.nil?
  257.     s = [
  258.     "攻击 + [s]",   "攻击 + [s]%",
  259.     "防御 + [s]",   "防御 + [s]%",
  260.     "魔力 + [s]",   "魔力 + [s]%",
  261.     "速度 + [s]",   "速度 + [s]%",
  262.     "最大HP + [s]", "最大HP + [s]%",
  263.     "最大MP + [s]", "最大MP + [s]%",
  264.     "命中率 + [s]",
  265.     "闪避率 + [s]",
  266.     "暴击率 + [s]",
  267.     "所有主要属性 + [s]",
  268.     "抗魔性 + [s]"
  269.     ]
  270.     for g in gifts
  271.       special << s[g.type].sub(/\[s\]/) {g.value}
  272.     end
  273.     #------------------------------------------------------------------------
  274.     # ● 確定背景圖片的高度
  275.     #------------------------------------------------------------------------
  276.     h += (description.size/3/@word)
  277.     h += 1 if (description.size/3%@word) >= 0
  278.     now_h = h
  279.    
  280.     h += 1                                               #價格
  281.     h += 1                                               #装备等级
  282.     h += 1 unless equipment.nodur or PA::USE_DUR == false#耐久度
  283.     h += 1 if equipment.sockets_num > 0                  #孔数
  284.    
  285.     h += 1 unless equipment.atk.zero?                    #攻擊力
  286.     h += 1 unless equipment.def.zero?                    #防禦力
  287.     h += 1 unless equipment.spi.zero?                    #精神力
  288.     h += 1 unless equipment.agi.zero?                    #敏捷力
  289.    
  290.     h += element_set.size + 1 if element_set.size > 0    #屬性
  291.     h += state_set.size   + 1 if state_set.size   > 0    #狀態
  292.     h += special.size     + 2 if special.size     > 0    #特殊效果
  293.     if special.size > 0
  294.     case special.size
  295.     when 1
  296.       @first_line = h-1
  297.     when 2
  298.       @first_line = h-2
  299.     when 3
  300.       @first_line = h-3
  301.     when 4
  302.       @first_line = h-4
  303.     when 5
  304.       @first_line = h-5
  305.     when 6
  306.       @first_line = h-6
  307.     end
  308.     end
  309.     @special_size = special.size
  310.    
  311.     #------------------------------------------------------------------------
  312.     # ● 圖片顯示保證高度
  313.     #------------------------------------------------------------------------
  314.     #h = 6 + now_h if (h - now_h) < 6
  315.     #------------------------------------------------------------------------
  316.     # ● 換算高度
  317.     #------------------------------------------------------------------------
  318.     self.height = h * @size + @name_size + 36
  319.     #------------------------------------------------------------------------
  320.     # ● 生成背景
  321.     #------------------------------------------------------------------------
  322.     self.contents = Bitmap.new(self.width - 32, self.height - 32)
  323.     self.contents.clear
  324.     #------------------------------------------------------------------------
  325.     # ● 名字描繪
  326.     #------------------------------------------------------------------------
  327.     text = equipment.name
  328.     self.contents.font.size = @name_size
  329.     if text.nil?
  330.       self.visible = false
  331.     else
  332.       self.visible = true
  333.       ###self.contents.draw_text(0, 0, text.size*7, @name_size, text, 0)
  334.       #我加的,用case判断颜色
  335.       unless equipment.is_a?(RPG::Item)
  336.         case gifts.size
  337.         when 1
  338.           self.contents.font.color = text_color(12)
  339.         when 2
  340.           self.contents.font.color = text_color(29)
  341.         when 3
  342.           self.contents.font.color = text_color(17)
  343.         when 4
  344.           self.contents.font.color = text_color(20)
  345.         when 5
  346.           self.contents.font.color = text_color(26)
  347.         when 6
  348.           self.contents.font.color = text_color(31)
  349.         end
  350.       else
  351.         self.contents.font.color = text_color(0)
  352.       end  
  353.       self.contents.draw_text(0, 0, contents.width-4, @name_size, text)
  354.     end
  355.     #------------------------------------------------------------------------
  356.     # ● 說明描繪
  357.     #------------------------------------------------------------------------
  358.     x = 0
  359.     @y += 1
  360.     while ((text = description.slice!(/./m)) != nil)
  361.       self.contents.font.color = normal_color
  362.       self.contents.font.size = @size
  363.       self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
  364.       if words_judge(text) == true
  365.         x += 1
  366.       else
  367.         x += 0.5
  368.       end  
  369.       if x == @word or x == @word - 0.5
  370.         x = 0
  371.         @y += 1
  372.       end
  373.     end
  374.     #------------------------------------------------------------------------
  375.     # ● 圖標描繪
  376.     #------------------------------------------------------------------------
  377.     #bitmap = Cache.system("Iconset")
  378.     #rect = Rect.new(equipment.icon_index % 16 * 24, equipment.icon_index / 16 * 24, 24, 24)
  379.     #self.contents.blt(0, y*size + 20, bitmap, rect, 255)
  380.     #------------------------------------------------------------------------
  381.     # ● 價格描繪
  382.     #------------------------------------------------------------------------
  383.     unless equipment.price.zero?
  384.       text = phrase[:price] + ":" + equipment.price.to_s
  385.       draw_text(text, 1, move)
  386.     end
  387.     #------------------------------------------------------------------------
  388.     # ● 装备等级描繪
  389.     #------------------------------------------------------------------------
  390.     unless equipment.read_note('装备等级') == nil
  391.       text = "角色等级要求:" + equipment.read_note('装备等级').to_s
  392.       draw_text(text, 1, move)
  393.     end
  394.     #------------------------------------------------------------------------
  395.     # ● 耐久度
  396.     #------------------------------------------------------------------------
  397.     if PA::USE_DUR == true
  398.       unless equipment.nodur
  399.         unless equipment.indesctructible
  400.           if equipment.maxdur == nil
  401.             text = "耐久度:#{equipment.dur} / #{equipment.read_note('耐久度')}"
  402.           else
  403.             text = "耐久度:#{equipment.dur} / #{equipment.maxdur}"
  404.           end
  405.         else
  406.           text = "耐久度:无法破坏"
  407.         end
  408.         draw_text(text, 1, move)
  409.       end
  410.     end
  411.     #------------------------------------------------------------------------
  412.     # ● 孔数
  413.     #------------------------------------------------------------------------
  414.     if equipment.sockets_num > 0
  415.       text = "剩余孔数:#{equipment.sockets_num}"
  416.       draw_text(text, 1, move)
  417.     end  
  418.     #------------------------------------------------------------------------
  419.     # ● 攻擊力
  420.     #------------------------------------------------------------------------
  421.     unless equipment.atk.zero?
  422.       text = $data_system.terms.atk + ":" + equipment.base_atk.to_s
  423.       draw_text(text, 1, move)
  424.     end
  425.     #------------------------------------------------------------------------
  426.     # ● 防禦力
  427.     #------------------------------------------------------------------------
  428.     unless equipment.def.zero?
  429.       text = $data_system.terms.def + ":" + equipment.base_def.to_s
  430.       draw_text(text, 1, move)
  431.     end
  432.     #------------------------------------------------------------------------
  433.     # ● 精神力
  434.     #------------------------------------------------------------------------
  435.     unless equipment.spi.zero?
  436.       text = $data_system.terms.spi + ":" + equipment.base_spi.to_s
  437.       draw_text(text, 1, move)
  438.     end
  439.     #------------------------------------------------------------------------
  440.     # ● 敏捷力
  441.     #------------------------------------------------------------------------
  442.     unless equipment.agi.zero?
  443.       text = $data_system.terms.agi + ":" + equipment.base_agi.to_s
  444.       draw_text(text, 1, move)
  445.     end
  446.     #------------------------------------------------------------------------
  447.     # ● 屬性
  448.     #------------------------------------------------------------------------
  449.     if element_set.size > 0
  450.       case equipment
  451.       when RPG::Weapon
  452.         text=phrase[:elements]+":"
  453.       when RPG::Armor
  454.         text=phrase[:guard_elements]+":"
  455.       end
  456.       draw_text(text, 1, move)
  457.       element_set.each do |i|
  458.         text = $data_system.elements[i]
  459.         draw_text(text, 1, move + @size)
  460.       end
  461.     end
  462.     #------------------------------------------------------------------------
  463.     # ● 狀態
  464.     #------------------------------------------------------------------------
  465.     if state_set.size > 0
  466.       case equipment
  467.       when RPG::Weapon
  468.         text=phrase[:states]+":"
  469.       when RPG::Armor
  470.         text=phrase[:guard_states]+":"
  471.       end
  472.       draw_text(text, 1, move)
  473.       state_set.each do |i|
  474.         text = $data_states[i].name
  475.         draw_text(text, 1, move + @size)
  476.       end
  477.     end
  478.     #------------------------------------------------------------------------
  479.     # ● 特殊效果
  480.     #------------------------------------------------------------------------
  481.     if special.size > 0
  482.       kind_text = ["","","",""]
  483.       weapon_gifts = [0,1,4,5,12,14,15]
  484.       armor0_gifts = [2,3,4,5,10,11,15,16]
  485.       armor1_gifts = [2,3,8,9,15,16]
  486.       armor2_gifts = [2,3,6,7,13,15,16]
  487.       kind_text[0] = " 武器" if  weapon_gifts.include?(equipment.gifts[0].type)
  488.       kind_text[1] = " 盾" if  armor0_gifts.include?(equipment.gifts[0].type)
  489.       kind_text[2] = " 盔" if  armor1_gifts.include?(equipment.gifts[0].type)
  490.       kind_text[3] = " 衣" if  armor2_gifts.include?(equipment.gifts[0].type)
  491.       if equipment.is_a?(RPG::Armor) and equipment.base_id == PA::CRYSTAL
  492.         text = "可注入" + kind_text[0] + kind_text[1] + kind_text[2] + kind_text[3]
  493.         draw_text(text, 1, move)
  494.         special.each {|text| draw_text(text, 1, move + @size)}
  495.       else
  496.         text = phrase[:special]+":"
  497.         draw_text(text, 1, move)
  498.         special.each {|text| draw_text(text, 1, move + @size)}
  499.       end
  500.     end
  501.   end
  502.   
  503. #////////////////////////////////////////////////////////////////////////////
  504.   #--------------------------------------------------------------------------
  505.   # ● 物品幫助窗口
  506.   #--------------------------------------------------------------------------
  507.   def set_item_text(item)
  508.     #----------------------------#
  509.     # 取得屬性、狀態、說明之副本 #
  510.     #----------------------------#
  511.     description = item.description.clone
  512.     element_set = item.element_set.clone
  513.     plus_state_set = item.plus_state_set.clone
  514.     minus_state_set = item.minus_state_set.clone
  515.     # 過濾不顯示的描述
  516.     element_set -= @unshow_elements
  517.     plus_state_set -= @unshow_states
  518.     minus_state_set -= @unshow_states
  519.     # 初始化數據設定
  520.     x, h, move = 0, 0, 0
  521.     phrase = @phrase
  522.     scope = @scope
  523.     parameter_type = @parameter_type
  524.     occasion = @occasion
  525.     # 基本文字設定

  526.    
  527.     #------------------#
  528.     # 取得特殊效果數據 #
  529.     #------------------#
  530.     special = []
  531.     special << phrase[:physical_attack] if item.physical_attack #物理攻撃
  532.     special << phrase[:damage_to_mp]    if item.damage_to_mp    #MPにダメージ
  533.     special << phrase[:absorb_damage]   if item.absorb_damage   #ダメージを吸収
  534.     special << phrase[:ignore_defense]  if item.ignore_defense  #防御力無視
  535.    
  536.     #------------------------------------------------------------------------
  537.     # ● 確定背景圖片的高度
  538.     #------------------------------------------------------------------------
  539.     h += (description.size/3/@word)
  540.     h += 1 if (description.size/3%@word) >= 0
  541.     now_h = h
  542.    
  543.     h += 2 unless scope[item.scope] == "无" #効果範囲
  544.     h += 1 unless item.price == 0           #價格
  545.     h += 1 if item.consumable               #消耗品
  546.     h += 1 unless item.speed.zero?          #速度補正値
  547.    
  548.     h += 1 unless item.hp_recovery_rate==0 and item.hp_recovery==0 #HP 回復
  549.     h += 1 unless item.mp_recovery_rate==0 and item.mp_recovery==0 #MP 回復
  550.    
  551.     h += 1 unless item.parameter_type.zero? #能力値
  552.     h += 1 unless item.base_damage.zero?    #基本ダメージ
  553.    
  554.     h += element_set.size     + 1 if element_set.size     > 0  #屬性
  555.     h += plus_state_set.size  + 1 if plus_state_set.size  > 0  #附加狀態
  556.     h += minus_state_set.size + 2 if minus_state_set.size > 0  #解除狀態
  557.     h += special.size         + 1 if special.size         > 0  #特殊效果
  558.    
  559.     #------------------------------------------------------------------------
  560.     # ● 圖片顯示保證高度
  561.     #------------------------------------------------------------------------
  562.     #h = 6 + now_h if (h - now_h) < 6
  563.     #------------------------------------------------------------------------
  564.     # ● 換算高度
  565.     #------------------------------------------------------------------------
  566.     self.height = h * @size + @name_size + 36
  567.     #------------------------------------------------------------------------
  568.     # ● 生成背景
  569.     #------------------------------------------------------------------------
  570.     self.contents = Bitmap.new(self.width - 32, self.height - 32)
  571.     self.contents.clear
  572.     #------------------------------------------------------------------------
  573.     # ● 名字描繪
  574.     #------------------------------------------------------------------------
  575.     text = item.name
  576.     self.contents.font.color = normal_color#顔色腳本
  577.     self.contents.font.size = @name_size
  578.     if text.nil?
  579.       self.visible = false
  580.     else
  581.       self.visible = true
  582.       self.contents.draw_text(0,0, text.size*7, 20, text, 0)
  583.     end
  584.     #------------------------------------------------------------------------
  585.     # ● 說明描繪
  586.     #------------------------------------------------------------------------
  587.      x = 0
  588.     @y += 1
  589.     while ((text = description.slice!(/./m)) != nil)
  590.       self.contents.font.color = normal_color
  591.       self.contents.font.size = @size
  592.       self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
  593.       if words_judge(text) == true
  594.         x+=1
  595.       else
  596.         x+=0.5
  597.       end  
  598.       if x == @word or x == @word - 0.5
  599.         x = 0
  600.         @y += 1
  601.       end
  602.     end
  603.     #------------------------------------------------------------------------
  604.     # ● 圖標描繪
  605.     #------------------------------------------------------------------------
  606.     #bitmap = Cache.system("Iconset")
  607.     #rect = Rect.new(item.icon_index % 16 * 24, equipment.icon_index / 16 * 24, 24, 24)
  608.     #self.contents.blt(0, y*size + 20, bitmap, rect, 255)
  609.     #------------------------------------------------------------------------
  610.     # ● 效果範圍
  611.     #------------------------------------------------------------------------
  612.     unless scope[item.scope] == "无"
  613.       text = phrase[:scope] +":"
  614.       draw_text(text, 1, move)
  615.       text = scope[item.scope]
  616.       draw_text(text, 1, move + @size)
  617.     end
  618.     #------------------------------------------------------------------------
  619.     # ● 價格
  620.     #------------------------------------------------------------------------
  621.     unless item.price == 0
  622.       text = phrase[:price] + ":" + item.price.to_s
  623.       draw_text(text, 1, move)
  624.     end
  625.     #------------------------------------------------------------------------
  626.     # ● 消耗品
  627.     #------------------------------------------------------------------------
  628.     if item.consumable
  629.       text = phrase[:consumable]
  630.       draw_text(text, 1, move)
  631.     end
  632.     #------------------------------------------------------------------------
  633.     # ● 速度補正値
  634.     #------------------------------------------------------------------------
  635.     unless item.speed.zero?
  636.       text = phrase[:speed]
  637.       draw_text(text, 1, move)
  638.     end
  639.     #------------------------------------------------------------------------
  640.     # ● HP回復
  641.     #------------------------------------------------------------------------
  642.     unless item.hp_recovery_rate.zero? and item.hp_recovery.zero?
  643.       if item.hp_recovery_rate > 0 and item.hp_recovery > 0
  644.         text = " + "
  645.       else
  646.         text = ""
  647.       end
  648.       
  649.       unless item.hp_recovery_rate.zero?
  650.         text = item.hp_recovery_rate.to_s + "%" + text
  651.       end
  652.       unless item.hp_recovery.zero?
  653.         text += item.hp_recovery.to_s
  654.       end
  655.       text = phrase[:recover] +":"  + text + phrase[:hp]
  656.       draw_text(text, 1, move)
  657.     end
  658.     #------------------------------------------------------------------------
  659.     # ● SP回復
  660.     #------------------------------------------------------------------------
  661.     unless item.mp_recovery_rate.zero? and item.mp_recovery.zero?
  662.       if item.mp_recovery_rate > 0 and item.mp_recovery > 0
  663.         text = " + "
  664.       else
  665.         text = ""
  666.       end
  667.       
  668.       unless item.mp_recovery_rate.zero?
  669.         text = item.mp_recovery_rate.to_s + "%" + text
  670.       end
  671.       unless item.mp_recovery.zero?
  672.         text += item.mp_recovery.to_s
  673.       end
  674.       text = phrase[:recover] +":" + text + phrase[:mp]
  675.       draw_text(text, 1, move)
  676.     end
  677.     #------------------------------------------------------------------------
  678.     # ● 能力值增加
  679.     #------------------------------------------------------------------------
  680.     unless item.parameter_type.zero?
  681.       text = parameter_type[item.parameter_type]+" +"+item.parameter_points.to_s
  682.       draw_text(text, 1, move)
  683.     end
  684.     #------------------------------------------------------------------------
  685.     # ● 基本ダメージ
  686.     #------------------------------------------------------------------------
  687.     unless item.base_damage.zero?
  688.       #text = phrase[:base_damage] +":" + item.base_damage.to_s
  689.       text = item.base_damage > 0 ? phrase[:base_damage] +":" + item.base_damage.to_s: phrase[:recovery] +":" + (-item.base_damage).to_s
  690.       draw_text(text, 1, move)
  691.     end
  692.     #------------------------------------------------------------------------
  693.     # ● 屬性
  694.     #------------------------------------------------------------------------
  695.     if element_set.size > 0
  696.       text = phrase[:elements]+":"
  697.       draw_text(text, 1, move)
  698.       element_set.each do |i|
  699.         text = $data_system.elements[i]
  700.         draw_text(text, 1, move + @size)
  701.       end
  702.     end
  703.     #------------------------------------------------------------------------
  704.     # ● 添加狀態
  705.     #------------------------------------------------------------------------
  706.     unless plus_state_set.empty?
  707.       text = phrase[:plus_states]+":"
  708.       draw_text(text, 1, move)
  709.       plus_state_set.each do |i|
  710.         text = $data_states[i].name
  711.         draw_text(text, 1, move + @size)
  712.       end
  713.     end
  714.     #------------------------------------------------------------------------
  715.     # ● 解除狀態
  716.     #------------------------------------------------------------------------
  717.     unless minus_state_set.empty?
  718.       text = phrase[:minus_states]+":"
  719.       draw_text(text, 1, move)
  720.       minus_state_set.each do |i|
  721.         text = $data_states[i].name
  722.         draw_text(text, 1, move + @size)
  723.       end
  724.     end
  725.     #------------------------------------------------------------------------
  726.     # ● 特殊效果
  727.     #------------------------------------------------------------------------
  728.     if special.size > 0
  729.       text = phrase[:special]+":"
  730.       draw_text(text, 1, move)
  731.       special.each {|text| draw_text(text, 1, move + @size)}
  732.     end
  733.   end
  734. #////////////////////////////////////////////////////////////////////////////
  735.   #--------------------------------------------------------------------------
  736.   # ● 技能帮助窗口
  737.   #--------------------------------------------------------------------------
  738.   def set_skill_text(skill)
  739.     #----------------------------#
  740.     # 取得屬性、狀態、說明之副本 #
  741.     #----------------------------#
  742.     description = skill.description.clone
  743.     element_set = skill.element_set.clone
  744.     plus_state_set = skill.plus_state_set.clone
  745.     minus_state_set = skill.minus_state_set.clone
  746.     # 過濾不顯示的描述
  747.     element_set -= @unshow_elements
  748.     plus_state_set -= @unshow_states
  749.     minus_state_set -= @unshow_states
  750.     # 初始化設定
  751.     x ,h, move = 0, 0, 0
  752.     phrase = @phrase
  753.     scope = @scope
  754.     #------------------#
  755.     # 取得特殊效果數據 #
  756.     #------------------#
  757.     special = []
  758.     special << phrase[:physical_attack] if skill.physical_attack #物理攻撃
  759.     special << phrase[:damage_to_mp]    if skill.damage_to_mp    #MPにダメージ
  760.     special << phrase[:absorb_damage]   if skill.absorb_damage   #ダメージを吸収
  761.     special << phrase[:ignore_defense]  if skill.ignore_defense  #防御力無視
  762.     #------------------------------------------------------------------------
  763.     # ● 確定背景圖片的高度
  764.     #------------------------------------------------------------------------
  765.     h += (description.size/3/@word)
  766.     h += 1 if (description.size/3%@word) >= 0
  767.     now_h = h
  768.    
  769.     h += 4                                  #効果範囲,消費MP,命中率
  770.     h += 1 unless skill.speed.zero?         #速度補正値
  771.     h += 1 unless skill.base_damage.zero?   #基本ダメージ
  772.    
  773.    
  774.    
  775.     h += element_set.size     + 1 if element_set.size     > 0  #屬性
  776.     h += plus_state_set.size  + 1 if plus_state_set.size  > 0  #附加狀態
  777.     h += minus_state_set.size + 1 if minus_state_set.size > 0  #解除狀態
  778.     h += special.size         + 1 if special.size         > 0  #特殊效果
  779.     @special_size = nil
  780.     @first_line = nil
  781.     #------------------------------------------------------------------------
  782.     # ● 換算高度
  783.     #------------------------------------------------------------------------
  784.     self.height=(h + 1) * @size + @name_size + 36  
  785.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  786.     self.contents.clear
  787.    
  788.     #------------------------------------------------------------------------
  789.     # ● 名字描述
  790.     #------------------------------------------------------------------------
  791.     text = skill.name
  792.     self.contents.font.color = Color.new(255, 255, 128, 255)
  793.     self.contents.font.size = @name_size
  794.     if text!=nil
  795.       self.visible = true
  796.       self.contents.draw_text(0,0, text.size*7, @name_size, text, 0)
  797.     else
  798.       self.visible = false
  799.     end
  800.    
  801.     #------------------------------------------------------------------------
  802.     # ● 說明描述
  803.     #------------------------------------------------------------------------
  804.     x = 0
  805.     @y += 1
  806.     text = description
  807.     text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
  808.     while ((text = description.slice!(/./m)) != nil)
  809.       self.contents.font.color = system_color
  810.       self.contents.font.size = @size
  811.       self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
  812.       if words_judge(text) == true
  813.         x+=1
  814.       else
  815.         x+=0.5
  816.       end  
  817.       if x == @word or x == @word - 0.5
  818.         x = 0
  819.         @y += 1
  820.       end
  821.     end
  822.     #------------------------------------------------------------------------
  823.     # ● 攻擊範圍
  824.     #------------------------------------------------------------------------
  825.     self.contents.font.color = normal_color
  826.     text = phrase[:scope] +":"
  827.     draw_text(text, 1, move)
  828.     text = scope[skill.scope]
  829.     draw_text(text, 1, move + @size)
  830.     #------------------------------------------------------------------------
  831.     # ● 基本ダメージ
  832.     #------------------------------------------------------------------------
  833.     unless skill.base_damage .zero?
  834.       text = skill.base_damage > 0 ? phrase[:base_damage] : phrase[:recovery]
  835.       text += ":" + skill.base_damage.abs.to_s
  836.       draw_text(text, 1, move)
  837.     end
  838.     #------------------------------------------------------------------------
  839.     # ● 消費SP描述
  840.     #------------------------------------------------------------------------
  841.     text = phrase[:mp_cost] +":"+ skill.mp_cost.to_s
  842.     if skill.mp_cost == 0 and skill.base_damage .zero? #被动技能调用
  843.       text = phrase[:mp_cost] +":"+ "被动技能"
  844.     end
  845.     draw_text(text, 1, move)
  846.     #------------------------------------------------------------------------
  847.     # ● 命中率描述
  848.     #------------------------------------------------------------------------
  849.     text = phrase[:hit] + ":" + skill.hit.to_s + "%"
  850.     draw_text(text, 1, move)
  851.     #------------------------------------------------------------------------
  852.     # ● 屬性
  853.     #------------------------------------------------------------------------
  854.     if element_set.size > 0
  855.       text = phrase[:elements]+":"
  856.       draw_text(text, 1, move)
  857.       element_set.each do |i|
  858.         text = $data_system.elements[i]
  859.         draw_text(text, 1, move + @size)
  860.       end
  861.     end
  862.     #------------------------------------------------------------------------
  863.     # ● 添加狀態
  864.     #------------------------------------------------------------------------
  865.     unless plus_state_set.empty?
  866.       text = phrase[:plus_states]+":"
  867.       draw_text(text, 1, move)
  868.       plus_state_set.each do |i|
  869.         text = $data_states[i].name
  870.         draw_text(text, 1, move + @size)
  871.       end
  872.     end
  873.     #------------------------------------------------------------------------
  874.     # ● 解除狀態
  875.     #------------------------------------------------------------------------
  876.     unless minus_state_set.empty?
  877.       text = phrase[:minus_states]+":"
  878.       draw_text(text, 1, move)
  879.       minus_state_set.each do |i|
  880.         text = $data_states[i].name
  881.         draw_text(text, 1, move + @size)
  882.       end
  883.     end
  884.     #------------------------------------------------------------------------
  885.     # ● 特殊效果
  886.     #------------------------------------------------------------------------
  887.     if special.size > 0
  888.       text = phrase[:special]+":"
  889.       draw_text(text, 1, move)
  890.       special.each {|text| draw_text(text, 1, move + @size)}
  891.     end  
  892.   end
  893.   #------------------------------------------------------------------------
  894.   # ● 文字数字判定
  895.   #------------------------------------------------------------------------
  896.   def words_judge(word)
  897.     case word
  898.     when "0","1","2","3","4","5","6","7","8","9","%",".","A","B","C","D","E",\
  899.       "F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W",\
  900.       "X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o",\
  901.       "p","q","r","s","t","u","v","w","x","y","z"
  902.       return false
  903.     end
  904.     return true
  905.   end  
  906. end

  907. #==============================================================================
  908. # ■ Window_Item
  909. #------------------------------------------------------------------------------
  910. #  アイテム画面などで、所持アイテムの一覧を表示するウィンドウです。
  911. #==============================================================================

  912. class Window_Item < Window_Selectable
  913.   #--------------------------------------------------------------------------
  914.   # ● ヘルプテキスト更新
  915.   #--------------------------------------------------------------------------
  916.   def update_help
  917.     @help_window.set_text(item)
  918.     #修正窗口位置
  919.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  920.   end
  921. end
  922. #==============================================================================
  923. # ■ Window_Skill
  924. #------------------------------------------------------------------------------
  925. #  スキル画面などで、使用できるスキルの一覧を表示するウィンドウです。
  926. #==============================================================================

  927. class Window_Skill < Window_Selectable
  928.   #--------------------------------------------------------------------------
  929.   # ● ヘルプテキスト更新
  930.   #--------------------------------------------------------------------------
  931.   def update_help   
  932.     @help_window.set_text(skill)
  933.     if skill != nil
  934.       @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  935.     else
  936.       @help_window.x = 1000  #没有物品时,让帮助窗口出界而看不见
  937.     end
  938.   end
  939. end
  940. #==============================================================================
  941. # ■ Window_Equip
  942. #------------------------------------------------------------------------------
  943. #  装備画面で、アクターが現在装備しているアイテムを表示するウィンドウです。
  944. #==============================================================================

  945. class Window_Equip < Window_Selectable
  946.   #--------------------------------------------------------------------------
  947.   # ● ヘルプテキスト更新
  948.   #--------------------------------------------------------------------------
  949.   def update_help   
  950.     @help_window.set_text(item)
  951.     if item != nil
  952.       @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  953.     else
  954.       @help_window.x = 1000  #没有物品时,让帮助窗口出界而看不见
  955.     end
  956.   end
  957. end
  958. #==============================================================================
  959. # ■ Window_ShopBuy
  960. #------------------------------------------------------------------------------
  961. #  ショップ画面で、購入できる商品の一覧を表示するウィンドウです。
  962. #==============================================================================
  963. class Window_ShopBuy < Window_Selectable
  964.   #--------------------------------------------------------------------------
  965.   # ● ヘルプテキスト更新
  966.   #--------------------------------------------------------------------------
  967.   def update_help   
  968.     @help_window.set_text(item)
  969.     if item != nil
  970.       @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  971.     else
  972.       @help_window.x = 1000  #没有物品时,让帮助窗口出界而看不见
  973.     end
  974.   end
  975. end
复制代码
#gifts = equipment.gifts这句出错!!!!!!_/_/_/_/_/_

点评

前面带#应该无效了不会出错= =  发表于 2013-2-10 23:57

Lv1.梦旅人

梦石
0
星屑
70
在线时间
202 小时
注册时间
2012-1-21
帖子
37
2
发表于 2013-2-11 01:35:31 | 只看该作者
推荐可以使用P叔整合的复杂装备系统
简单实用~
http://rpg.blue/forum.php?mod=viewthread&tid=246631

点评

咳,我错了...  发表于 2013-2-11 22:54
LZ的脚本不是正是从我的整合系统里面抽出的吗?  发表于 2013-2-11 22:49
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4514
在线时间
5228 小时
注册时间
2009-4-29
帖子
14318

贵宾

3
发表于 2013-2-11 22:53:40 | 只看该作者
改出错行为这样试试:
  1. gifts = equipment.gifts rescue []
复制代码

点评

轰了LZ!  发表于 2013-2-12 13:32

评分

参与人数 1星屑 +100 收起 理由
Luciffer + 100 认可答案

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-14 20:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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