| 赞 | 0  | 
 
| VIP | 0 | 
 
| 好人卡 | 0 | 
 
| 积分 | 1 | 
 
| 经验 | 1219 | 
 
| 最后登录 | 2014-8-28 | 
 
| 在线时间 | 44 小时 | 
 
 
 
 
 
Lv1.梦旅人 
	- 梦石
 - 0 
 
        - 星屑
 - 50 
 
        - 在线时间
 - 44 小时
 
        - 注册时间
 - 2014-8-16
 
        - 帖子
 - 8
 
 
 
 | 
	
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员  
 
x
 
我又來了>< 
想請問下,我從論壇下了技能消耗物品腳本,但是護甲圖標會蓋到技能名稱,弄了好久弄不好,特此請教! 
以及,該怎麼讓圖標顯示得清楚一點?現在是有一點淡化的感覺 
 
 
 
感激不盡! 
 
 
module IISNOW_ITEM_CONSUME_SKILL     PATTERN = /.*ITEM:ID(\d+)NUM(\d+)(.*)/m     # 非专业人士请勿修改,正则匹配式,修改后注意备注写法的改变,下同   PATTERN_E = /.*EQU:ID(\d+).*/m   PATTERN_A = /.*ARM:ID(\d+).*/m   STR_UN_CONSUM = "UN" # 物品不消耗标识     TP_ICON = 189  # 你说你懂的   MP_ICON = 188      STYLE = 1 # 界面风格(支持1,2,3,4效果自己体会,不推荐4)   STYLE_A = 1 # 提示风格(支持1,2,3,同上)   PLACE = 3 # 消耗物品的图标与数目间的间距   PLACE_E = 2 # 不同消耗物品间的间距   ORDER = [0,1,2]     # 从右往左的消耗显示顺序(0,TP;1,MP;2,物品)     COLOR_ITEM = Color.new(255,255,255) # 物品消耗数目的字的颜色   COLOR_WE_L = Color.new(255,0,0) # 具体限定武器的框的颜色   COLOR_WE_A = Color.new(255,0,0) # 具体限定防具的框的颜色   COLOR_UN_I = Color.new(0,255,0) # 物品限定但不消耗的提示框的颜色     TRAN_DE = 100 # 风格_A2下的透明度再次降低(最大为160) end   class Window_SkillList     include IISNOW_ITEM_CONSUME_SKILL     def col_max     case STYLE     when 1,3,4       return 2     when 2       return 1     end   end     def item_height     case STYLE     when 3       line_height * 2     when 1,2,4       line_height + 1     end   end     def draw_item(index)     skill = @data[index]     if skill       rect = item_rect(index)       rect.width -= 4       draw_item_name(skill, rect.x, rect.y, enable?(skill))       draw_skill_cost(rect, skill)     end   end     alias :iisnow_draw_item_name :draw_item_name   def draw_item_name(item, x, y, enabled = true, width = 172)     iisnow_draw_item_name(item, x, y, enabled,width)     rect_temp = text_size(item.name)     if @actor.skill_eq_limt(item)       draw_kuang(x + 24 + PLACE  + rect_temp.width,y,24,24,COLOR_WE_L,enabled)       draw_icon(@actor.skill_eq_limt(item).icon_index,x + 24 + PLACE + rect_temp.width,y,enabled)        rect_temp.width += (24 + PLACE_E)     end     if @actor.skill_ar_limt(item)       draw_kuang(x + 24 + PLACE + rect_temp.width,y,24,24,COLOR_WE_A,enabled)       draw_icon(@actor.skill_ar_limt(item).icon_index,x + 24 + PLACE + rect_temp.width,y,enabled)      end   end     def draw_skill_cost(rect, skill)     str = create_string(skill)     color = [tp_cost_color,mp_cost_color,COLOR_ITEM]     str.each_with_index do |str,i|       next unless str       change_color(color[ORDER[i]], enable?(skill))       kuang = false       case i       when ORDER.index(2)         icon_index = str[0].icon_index         kuang = true if str[2]         str = str[1]       when ORDER.index(1)         icon_index = MP_ICON       when ORDER.index(0)         icon_index = TP_ICON       end       contents.font.size = STYLE == 1 ? Font.default_size - 6 : Font.default_size       draw_style(icon_index,rect,str,skill,kuang)     end     contents.font.size = Font.default_size   end     def draw_style(icon_index,rect,str,skill,kuang)     case STYLE     when 1       draw_kuang(rect.width - 24 + rect.x,rect.y,24,24,COLOR_UN_I,enable?(skill)) if kuang       draw_icon(icon_index,rect.width - 24 + rect.x,rect.y,enable?(skill))       draw_text(Rect.new(rect.x + rect.width - 24,rect.y + 8,24,16),str,2) if str.to_i != 1       rect.width -= (30 + PLACE_E)     when 2,4       draw_text(rect,str,2) if str.to_i != 1       rect.width -= (text_size(str).width + PLACE) if str.to_i != 1       draw_kuang(rect.width - 24 + rect.x,rect.y,24,24,COLOR_UN_I,enable?(skill)) if kuang       draw_icon(icon_index,rect.width - 24 + rect.x,rect.y,enable?(skill))       rect.width -= (24 + PLACE_E)     when 3       rect_temp = rect.clone       rect_temp.y += (rect_temp.height / 2)       rect_temp.height /= 2       draw_text(rect_temp,str,2) if str.to_i != 1       rect.width -= (text_size(str).width + PLACE) if str.to_i != 1       draw_kuang(rect.width - 24 + rect.x,rect_temp.y,24,24,COLOR_UN_I,enable?(skill)) if kuang       draw_icon(icon_index,rect.width - 24 + rect.x,rect_temp.y,enable?(skill))       rect.width -= (24 + PLACE_E)     end   end     def draw_kuang(x,y,w,h,c,fl)     c.alpha = fl ? 255 : translucent_alpha - (STYLE_A == 2 ? TRAN_DE : 0)     case STYLE_A      when 1       contents.fill_rect(x,y,w,1,c)       contents.fill_rect(x,y + 1,1,h - 1,c)       contents.fill_rect(x + 1,y + h - 1,w - 1,1,c)       contents.fill_rect(x + w -1,y + 1,1,h - 2,c)     when 2       contents.fill_rect(x,y,w,h,c)     end   end     def create_string(skill)     str1 = @actor.skill_tp_cost(skill)     str2 = @actor.skill_mp_cost(skill)     str3 = @actor.skill_it_cost(skill)     str1 = str1 > 0 ?  str1.to_s : nil     str2 = str2 > 0 ?  str2.to_s : nil     str3 = str3[1] > 0 ? [str3[0],str3[1].to_s,str3[2]] : nil     str = [str1,str2,str3]     iisnow = [str[ORDER[0]],str[ORDER[1]],str[ORDER[2]]]     iisnow   end   end   class Game_BattlerBase     include IISNOW_ITEM_CONSUME_SKILL     def skill_it_cost(skill)     skill.note.match(PATTERN)     item = $data_items[$1.to_i] if $1 != 0     num = $2.to_i     flag = $3.match(/^#{STR_UN_CONSUM}/) if $3     return [item,num,flag]   end     def skill_eq_limt(skill)     skill.note.match(PATTERN_E)     eq = $data_weapons[$1.to_i] if $1 != 0     return eq   end     def skill_ar_limt(skill)     skill.note.match(PATTERN_A)     eq = $data_armors[$1.to_i] if $1 != 0     return eq   end     alias :iisnow_skill_cost_payable? :skill_cost_payable?   def skill_cost_payable?(skill)     result1 = iisnow_skill_cost_payable?(skill)      if skill_it_cost(skill)[0]        result2 = $game_party.item_number(skill_it_cost(skill)[0]) >= skill_it_cost(skill)[1]       return result1 && result2     end     return result1   end     alias :iisnow_pay_skill_cost :pay_skill_cost   def pay_skill_cost(skill)     iisnow_pay_skill_cost(skill)     if skill_it_cost(skill)[0] && !skill_it_cost(skill)[2]       $game_party.gain_item(skill_it_cost(skill)[0],-skill_it_cost(skill)[1])     end   end   end   class Game_Actor     alias :iisnow_skill_wtype_ok? :skill_wtype_ok?   def skill_wtype_ok?(skill)     result1 = iisnow_skill_wtype_ok?(skill)     result2 = skill_eq_limt(skill) ? weapons.include?(skill_eq_limt(skill)) : true     result3 = skill_ar_limt(skill) ? armors.include?(skill_ar_limt(skill)) : true     return result1 && result2 && result3   end   end 
 
 module IISNOW_ITEM_CONSUME_SKILL  
   
  PATTERN = /.*ITEM:ID(\d+)NUM(\d+)(.*)/m    
  # 非专业人士请勿修改,正则匹配式,修改后注意备注写法的改变,下同  
  PATTERN_E = /.*EQU:ID(\d+).*/m  
  PATTERN_A = /.*ARM:ID(\d+).*/m  
  STR_UN_CONSUM = "UN" # 物品不消耗标识  
   
  TP_ICON = 189  # 你说你懂的  
  MP_ICON = 188   
   
  STYLE = 1 # 界面风格(支持1,2,3,4效果自己体会,不推荐4)  
  STYLE_A = 1 # 提示风格(支持1,2,3,同上)  
  PLACE = 3 # 消耗物品的图标与数目间的间距  
  PLACE_E = 2 # 不同消耗物品间的间距  
  ORDER = [0,1,2]     # 从右往左的消耗显示顺序(0,TP;1,MP;2,物品)  
   
  COLOR_ITEM = Color.new(255,255,255) # 物品消耗数目的字的颜色  
  COLOR_WE_L = Color.new(255,0,0) # 具体限定武器的框的颜色  
  COLOR_WE_A = Color.new(255,0,0) # 具体限定防具的框的颜色  
  COLOR_UN_I = Color.new(0,255,0) # 物品限定但不消耗的提示框的颜色  
   
  TRAN_DE = 100 # 风格_A2下的透明度再次降低(最大为160)  
end  
   
class Window_SkillList  
   
  include IISNOW_ITEM_CONSUME_SKILL  
   
  def col_max  
    case STYLE  
    when 1,3,4  
      return 2  
    when 2  
      return 1  
    end  
  end  
   
  def item_height  
    case STYLE  
    when 3  
      line_height * 2  
    when 1,2,4  
      line_height + 1  
    end  
  end  
   
  def draw_item(index)  
    skill = @data[index]  
    if skill  
      rect = item_rect(index)  
      rect.width -= 4  
      draw_item_name(skill, rect.x, rect.y, enable?(skill))  
      draw_skill_cost(rect, skill)  
    end  
  end  
   
  alias :iisnow_draw_item_name :draw_item_name  
  def draw_item_name(item, x, y, enabled = true, width = 172)  
    iisnow_draw_item_name(item, x, y, enabled,width)  
    rect_temp = text_size(item.name)  
    if @actor.skill_eq_limt(item)  
      draw_kuang(x + 24 + PLACE  + rect_temp.width,y,24,24,COLOR_WE_L,enabled)  
      draw_icon(@actor.skill_eq_limt(item).icon_index,x + 24 + PLACE + rect_temp.width,y,enabled)   
      rect_temp.width += (24 + PLACE_E)  
    end  
    if @actor.skill_ar_limt(item)  
      draw_kuang(x + 24 + PLACE + rect_temp.width,y,24,24,COLOR_WE_A,enabled)  
      draw_icon(@actor.skill_ar_limt(item).icon_index,x + 24 + PLACE + rect_temp.width,y,enabled)   
    end  
  end  
   
  def draw_skill_cost(rect, skill)  
    str = create_string(skill)  
    color = [tp_cost_color,mp_cost_color,COLOR_ITEM]  
    str.each_with_index do |str,i|  
      next unless str  
      change_color(color[ORDER[i]], enable?(skill))  
      kuang = false  
      case i  
      when ORDER.index(2)  
        icon_index = str[0].icon_index  
        kuang = true if str[2]  
        str = str[1]  
      when ORDER.index(1)  
        icon_index = MP_ICON  
      when ORDER.index(0)  
        icon_index = TP_ICON  
      end  
      contents.font.size = STYLE == 1 ? Font.default_size - 6 : Font.default_size  
      draw_style(icon_index,rect,str,skill,kuang)  
    end  
    contents.font.size = Font.default_size  
  end  
   
  def draw_style(icon_index,rect,str,skill,kuang)  
    case STYLE  
    when 1  
      draw_kuang(rect.width - 24 + rect.x,rect.y,24,24,COLOR_UN_I,enable?(skill)) if kuang  
      draw_icon(icon_index,rect.width - 24 + rect.x,rect.y,enable?(skill))  
      draw_text(Rect.new(rect.x + rect.width - 24,rect.y + 8,24,16),str,2) if str.to_i != 1  
      rect.width -= (30 + PLACE_E)  
    when 2,4  
      draw_text(rect,str,2) if str.to_i != 1  
      rect.width -= (text_size(str).width + PLACE) if str.to_i != 1  
      draw_kuang(rect.width - 24 + rect.x,rect.y,24,24,COLOR_UN_I,enable?(skill)) if kuang  
      draw_icon(icon_index,rect.width - 24 + rect.x,rect.y,enable?(skill))  
      rect.width -= (24 + PLACE_E)  
    when 3  
      rect_temp = rect.clone  
      rect_temp.y += (rect_temp.height / 2)  
      rect_temp.height /= 2  
      draw_text(rect_temp,str,2) if str.to_i != 1  
      rect.width -= (text_size(str).width + PLACE) if str.to_i != 1  
      draw_kuang(rect.width - 24 + rect.x,rect_temp.y,24,24,COLOR_UN_I,enable?(skill)) if kuang  
      draw_icon(icon_index,rect.width - 24 + rect.x,rect_temp.y,enable?(skill))  
      rect.width -= (24 + PLACE_E)  
    end  
  end  
   
  def draw_kuang(x,y,w,h,c,fl)  
    c.alpha = fl ? 255 : translucent_alpha - (STYLE_A == 2 ? TRAN_DE : 0)  
    case STYLE_A   
    when 1  
      contents.fill_rect(x,y,w,1,c)  
      contents.fill_rect(x,y + 1,1,h - 1,c)  
      contents.fill_rect(x + 1,y + h - 1,w - 1,1,c)  
      contents.fill_rect(x + w -1,y + 1,1,h - 2,c)  
    when 2  
      contents.fill_rect(x,y,w,h,c)  
    end  
  end  
   
  def create_string(skill)  
    str1 = @actor.skill_tp_cost(skill)  
    str2 = @actor.skill_mp_cost(skill)  
    str3 = @actor.skill_it_cost(skill)  
    str1 = str1 > 0 ?  str1.to_s : nil  
    str2 = str2 > 0 ?  str2.to_s : nil  
    str3 = str3[1] > 0 ? [str3[0],str3[1].to_s,str3[2]] : nil  
    str = [str1,str2,str3]  
    iisnow = [str[ORDER[0]],str[ORDER[1]],str[ORDER[2]]]  
    iisnow  
  end  
   
end  
   
class Game_BattlerBase  
   
  include IISNOW_ITEM_CONSUME_SKILL  
   
  def skill_it_cost(skill)  
    skill.note.match(PATTERN)  
    item = $data_items[$1.to_i] if $1 != 0  
    num = $2.to_i  
    flag = $3.match(/^#{STR_UN_CONSUM}/) if $3  
    return [item,num,flag]  
  end  
   
  def skill_eq_limt(skill)  
    skill.note.match(PATTERN_E)  
    eq = $data_weapons[$1.to_i] if $1 != 0  
    return eq  
  end  
   
  def skill_ar_limt(skill)  
    skill.note.match(PATTERN_A)  
    eq = $data_armors[$1.to_i] if $1 != 0  
    return eq  
  end  
   
  alias :iisnow_skill_cost_payable? :skill_cost_payable?  
  def skill_cost_payable?(skill)  
    result1 = iisnow_skill_cost_payable?(skill)   
    if skill_it_cost(skill)[0]   
      result2 = $game_party.item_number(skill_it_cost(skill)[0]) >= skill_it_cost(skill)[1]  
      return result1 && result2  
    end  
    return result1  
  end  
   
  alias :iisnow_pay_skill_cost :pay_skill_cost  
  def pay_skill_cost(skill)  
    iisnow_pay_skill_cost(skill)  
    if skill_it_cost(skill)[0] && !skill_it_cost(skill)[2]  
      $game_party.gain_item(skill_it_cost(skill)[0],-skill_it_cost(skill)[1])  
    end  
  end  
   
end  
   
class Game_Actor  
   
  alias :iisnow_skill_wtype_ok? :skill_wtype_ok?  
  def skill_wtype_ok?(skill)  
    result1 = iisnow_skill_wtype_ok?(skill)  
    result2 = skill_eq_limt(skill) ? weapons.include?(skill_eq_limt(skill)) : true  
    result3 = skill_ar_limt(skill) ? armors.include?(skill_ar_limt(skill)) : true  
    return result1 && result2 && result3  
  end  
   
end  
 
  |   
 
 
 
 |