查看: 2276|回复: 2

[已经解决] LNX11战斗界面系统与技能消耗道具脚本冲突

[复制链接]
梦石
0
星屑
64
在线时间
124 小时
注册时间
2015-1-30
回帖
46
发表于 2015-8-5 11:22:38 | 显示全部楼层 |阅读模式

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

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

×
本人在自己的游戏中同时添加了LNX11与技能消耗道具两套脚本,可在实际操作过程中发现,虽然游戏不会报错,可是在战斗时技能界面的技能选项变得看不见了。
具体情况如下图:
QQ截图20150805105544.png
也许是两套脚本在特技这个选项上有些冲突,本人脚本知识匮乏所以无从下手,望各位大大出手相助。
最后附上范例:
Project2.zip (1.5 MB, 下载次数: 78)

点评

顺序反了  发表于 2015-8-5 11:28

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-8-5 11:26:18 | 显示全部楼层
将技能消耗道具对UI的修改废除就可以了。如想保留,请自己重写这部分代码

[pre lang="ruby"]#https://rpg.blue/thread-226207-1-1.html
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 = 2 # 提示风格(支持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 = 0 # 风格_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], 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 -= (24 + 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[/pre]

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
64
在线时间
124 小时
注册时间
2015-1-30
回帖
46
 楼主| 发表于 2015-8-5 11:51:19 | 显示全部楼层
taroxd 发表于 2015-8-5 11:26
将技能消耗道具对UI的修改废除就可以了。如想保留,请自己重写这部分代码

#https://rpg.blue/thread-22 ...

非常感谢大大
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部