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

Project1

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

[已经解决] 技能冷却脚本和【迷糊的安安】中的技能显示脚本发生冲突

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
38 小时
注册时间
2014-10-28
帖子
94
跳转到指定楼层
1
发表于 2014-11-1 09:47:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 猩红之月 于 2014-11-1 09:54 编辑

技能冷却依旧有效。不过,冷却的进度条没有了。

3J2`LLGZ1` (281.19 KB, 下载次数: 35)

3J2`LLGZ1`

点评

另外帖子可以编辑的,编辑按钮就在下面铅笔一样的图案那个。  发表于 2014-11-1 09:51
图片不是传自己电脑本地的链接,你应该要上传本地文件来发图  发表于 2014-11-1 09:50

Lv1.梦旅人

梦石
0
星屑
50
在线时间
38 小时
注册时间
2014-10-28
帖子
94
2
 楼主| 发表于 2014-11-1 09:50:52 | 只看该作者
本帖最后由 VIPArcher 于 2014-11-1 10:17 编辑

以下是技能冷却脚本:
RUBY 代码复制
  1. =begin
  2. 在VA默认战斗系统上增加技能冷却时间系统。使用一个技能后在一定回合内不可以使用。
  3. 需要在技能备注里添加<CD x>
  4. 调用脚本
  5. $game_actors[x].skill_cool_add(y,z)可以使x号角色的y号技能的剩余冷却时间增加z,如果z为负数则减少剩余冷却时间
  6. =end
  7. class RPG::Skill < RPG::UsableItem
  8.   def cool_time
  9.     @note.each_line{|line|
  10.     case line
  11.     when /\<(?:CD)[ ]*(\d+)\>/
  12.       return $1.to_i
  13.     end
  14.     }
  15.     return 0
  16.   end
  17. end
  18. #==============================================================================
  19. # ■ Game_Actor
  20. #------------------------------------------------------------------------------
  21. #  管理角色的类。
  22. #   本类在 Game_Actors 类 ($game_actors) 的内部使用。
  23. #   具体使用请查看 Game_Party 类 ($game_party) 。
  24. #==============================================================================
  25.  
  26. class Game_Battler
  27.   #--------------------------------------------------------------------------
  28.   # ● 初始化对象
  29.   #--------------------------------------------------------------------------
  30.   alias skill_cool_time_initialize initialize
  31.   def initialize
  32.     skill_cool_time_initialize
  33.     @skill_cool_time=[]
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 应用技能/物品的效果★
  37.   #--------------------------------------------------------------------------
  38.   alias skill_cool_time_item_apply item_apply
  39.   def item_apply(user, item)
  40.     skill_cool_time_item_apply(user,item)
  41.     if item.is_a?(RPG::Skill)
  42.       user.set_cool_time(item)
  43.     end
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 设置技能冷却时间
  47.   #--------------------------------------------------------------------------
  48.   def set_cool_time(skill)
  49.     if skill.cool_time
  50.       @skill_cool_time[skill.id] = skill.cool_time
  51.     end
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   # ● 回合结束处理
  55.   #--------------------------------------------------------------------------
  56.   alias skill_cool_time_on_turn_end on_turn_end
  57.   def on_turn_end
  58.     skill_cool_time_on_turn_end
  59.     @skill_cool_time.each_index{|index|
  60.     @skill_cool_time[index] -= 1 if @skill_cool_time[index] and @skill_cool_time[index] > 0
  61.     }
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 技能是否正在冷却
  65.   #--------------------------------------------------------------------------
  66.   def skill_cooling?(skill)
  67.     @skill_cool_time[skill.id] and @skill_cool_time[skill.id] != 0
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 获取冷却回合
  71.   #--------------------------------------------------------------------------
  72.   def skill_cool_turn(skill)
  73.     @skill_cool_time[skill.id] ? @skill_cool_time[skill.id] : 0
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ★ 增加与减少冷却回合
  77.   #--------------------------------------------------------------------------
  78.   def skill_cool_add(skill,y)
  79.     if y<0
  80.       if @skill_cool_time[skill.id]>-y
  81.         @skill_cool_time[skill.id]+=y
  82.       else
  83.         @skill_cool_time[skill.id]=0
  84.       end
  85.     else
  86.       @skill_cool_time[skill.id]+=y
  87.     end
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 检查技能的使用条件
  91.   #--------------------------------------------------------------------------
  92.   alias skill_cool_time_skill_conditions_met? skill_conditions_met?
  93.   def skill_conditions_met?(skill)
  94.     skill_cool_time_skill_conditions_met?(skill) && !skill_cooling?(skill)
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● 战斗结束处理
  98.   #--------------------------------------------------------------------------
  99.   alias skill_cool_time_on_battle_end on_battle_end
  100.   def on_battle_end
  101.       skill_cool_time_on_battle_end
  102.       @skill_cool_time.clear
  103.   end
  104. end
  105. #==============================================================================
  106. # ■ Window_SkillList
  107. #------------------------------------------------------------------------------
  108. #  技能画面中,显示技能的窗口。
  109. #==============================================================================
  110.  
  111. class Window_SkillList < Window_Selectable
  112.   #--------------------------------------------------------------------------
  113.   # ● 绘制项目★
  114.   #--------------------------------------------------------------------------
  115.   alias skill_cool_time_draw_item draw_item
  116.   def draw_item(index)
  117.     skill = @data[index]
  118.     if skill
  119.       if @actor.skill_cooling?(skill)
  120.         rect = item_rect(index)
  121.         w = (skill.cool_time - @actor.skill_cool_turn(skill)).to_f / skill.cool_time
  122.         draw_gauge(rect.x,rect.y,rect.width,w,text_color(5),text_color(13))
  123.       end
  124.     end
  125.     skill_cool_time_draw_item(index)
  126.   end
  127. end

这个是【迷糊的安安】技能显示脚本:(我选择的是第2种风格)
RUBY 代码复制
  1. #ITEM:ID18NUM3 代表每次使用该技能需要消耗第18号物品,数量3个,
  2. #没有该物品或不足消耗量将无法发动技能。
  3. #ITEM:ID18NUM1UN 代表使用该技能的前提条件是队伍持有第18号物品1个,但是不会被消耗。
  4. #ARM:ID10 代表使用该技能的前提条件是使用者装备着第10号防具。
  5. #ITEM:ID19NUM1
  6. #EQU:ID2
  7. #这两行代表,代表使用该技能的前提条件是使用者装备着第2号武器。
  8. #每次使用该技能消耗第19号物品1个。
  9. #
  10. module IISNOW_ITEM_CONSUME_SKILL
  11.  
  12.   PATTERN = /.*ITEM:ID(\d+)NUM(\d+)(.*)/m  
  13.   # 非专业人士请勿修改,正则匹配式,修改后注意备注写法的改变,下同
  14.   PATTERN_E = /.*EQU:ID(\d+).*/m
  15.   PATTERN_A = /.*ARM:ID(\d+).*/m
  16.   STR_UN_CONSUM = "UN" # 物品不消耗标识
  17.  
  18.   TP_ICON = 189  # 你说你懂的
  19.   MP_ICON = 188
  20.  
  21.   STYLE = 1 # 界面风格(支持1,2,3,4效果自己体会,不推荐4)
  22.   STYLE_A = 2 # 提示风格(支持1,2,3,同上)
  23.   PLACE = 3 # 消耗物品的图标与数目间的间距
  24.   PLACE_E = 2 # 不同消耗物品间的间距
  25.   ORDER = [0,1,2]     # 从右往左的消耗显示顺序(0,TP;1,MP;2,物品)
  26.  
  27.   COLOR_ITEM = Color.new(255,255,255) # 物品消耗数目的字的颜色
  28.   COLOR_WE_L = Color.new(255,0,0) # 具体限定武器的框的颜色
  29.   COLOR_WE_A = Color.new(255,0,0) # 具体限定防具的框的颜色
  30.   COLOR_UN_I = Color.new(0,255,0) # 物品限定但不消耗的提示框的颜色
  31.  
  32.   TRAN_DE = 100 # 风格_A2下的透明度再次降低(最大为160)
  33. end
  34.  
  35. class Window_SkillList
  36.  
  37.   include IISNOW_ITEM_CONSUME_SKILL
  38.  
  39.   def col_max
  40.     case STYLE
  41.     when 1,3,4
  42.       return 2
  43.     when 2
  44.       return 1
  45.     end
  46.   end
  47.  
  48.   def item_height
  49.     case STYLE
  50.     when 3
  51.       line_height * 2
  52.     when 1,2,4
  53.       line_height + 1
  54.     end
  55.   end
  56.  
  57.   def draw_item(index)
  58.     skill = @data[index]
  59.     if skill
  60.       rect = item_rect(index)
  61.       rect.width -= 4
  62.       draw_item_name(skill, rect.x, rect.y, enable?(skill))
  63.       draw_skill_cost(rect, skill)
  64.     end
  65.   end
  66.  
  67.   alias :iisnow_draw_item_name :draw_item_name
  68.   def draw_item_name(item, x, y, enabled = true, width = 172)
  69.     iisnow_draw_item_name(item, x, y, enabled,width)
  70.     rect_temp = text_size(item.name)
  71.     if @actor.skill_eq_limt(item)
  72.       draw_kuang(x + 24 + PLACE  + rect_temp.width,y,24,24,COLOR_WE_L,enabled)
  73.       draw_icon(@actor.skill_eq_limt(item).icon_index,x + 24 + PLACE + rect_temp.width,y,enabled)
  74.       rect_temp.width += (24 + PLACE_E)
  75.     end
  76.     if @actor.skill_ar_limt(item)
  77.       draw_kuang(x + 24 + PLACE + rect_temp.width,y,24,24,COLOR_WE_A,enabled)
  78.       draw_icon(@actor.skill_ar_limt(item).icon_index,x + 24 + PLACE + rect_temp.width,y,enabled)
  79.     end
  80.   end
  81.  
  82.   def draw_skill_cost(rect, skill)
  83.     str = create_string(skill)
  84.     color = [tp_cost_color,mp_cost_color,COLOR_ITEM]
  85.     str.each_with_index do |str,i|
  86.       next unless str
  87.       change_color(color[ORDER[i]], enable?(skill))
  88.       kuang = false
  89.       case i
  90.       when ORDER.index(2)
  91.         icon_index = str[0].icon_index
  92.         kuang = true if str[2]
  93.         str = str[1]
  94.       when ORDER.index(1)
  95.         icon_index = MP_ICON
  96.       when ORDER.index(0)
  97.         icon_index = TP_ICON
  98.       end
  99.       contents.font.size = STYLE == 1 ? Font.default_size - 6 : Font.default_size
  100.       draw_style(icon_index,rect,str,skill,kuang)
  101.     end
  102.     contents.font.size = Font.default_size
  103.   end
  104.  
  105.   def draw_style(icon_index,rect,str,skill,kuang)
  106.     case STYLE
  107.     when 1
  108.       draw_kuang(rect.width - 24 + rect.x,rect.y,24,24,COLOR_UN_I,enable?(skill)) if kuang
  109.       draw_icon(icon_index,rect.width - 24 + rect.x,rect.y,enable?(skill))
  110.       draw_text(Rect.new(rect.x + rect.width - 24,rect.y + 8,24,16),str,2) if str.to_i != 1
  111.       rect.width -= (24 + PLACE_E)
  112.     when 2,4
  113.       draw_text(rect,str,2) if str.to_i != 1
  114.       rect.width -= (text_size(str).width + PLACE) if str.to_i != 1
  115.       draw_kuang(rect.width - 24 + rect.x,rect.y,24,24,COLOR_UN_I,enable?(skill)) if kuang
  116.       draw_icon(icon_index,rect.width - 24 + rect.x,rect.y,enable?(skill))
  117.       rect.width -= (24 + PLACE_E)
  118.     when 3
  119.       rect_temp = rect.clone
  120.       rect_temp.y += (rect_temp.height / 2)
  121.       rect_temp.height /= 2
  122.       draw_text(rect_temp,str,2) if str.to_i != 1
  123.       rect.width -= (text_size(str).width + PLACE) if str.to_i != 1
  124.       draw_kuang(rect.width - 24 + rect.x,rect_temp.y,24,24,COLOR_UN_I,enable?(skill)) if kuang
  125.       draw_icon(icon_index,rect.width - 24 + rect.x,rect_temp.y,enable?(skill))
  126.       rect.width -= (24 + PLACE_E)
  127.     end
  128.   end
  129.  
  130.   def draw_kuang(x,y,w,h,c,fl)
  131.     c.alpha = fl ? 255 : translucent_alpha - (STYLE_A == 2 ? TRAN_DE : 0)
  132.     case STYLE_A
  133.     when 1
  134.       contents.fill_rect(x,y,w,1,c)
  135.       contents.fill_rect(x,y + 1,1,h - 1,c)
  136.       contents.fill_rect(x + 1,y + h - 1,w - 1,1,c)
  137.       contents.fill_rect(x + w -1,y + 1,1,h - 2,c)
  138.     when 2
  139.       contents.fill_rect(x,y,w,h,c)
  140.     end
  141.   end
  142.  
  143.   def create_string(skill)
  144.     str1 = @actor.skill_tp_cost(skill)
  145.     str2 = @actor.skill_mp_cost(skill)
  146.     str3 = @actor.skill_it_cost(skill)
  147.     str1 = str1 > 0 ?  str1.to_s : nil
  148.     str2 = str2 > 0 ?  str2.to_s : nil
  149.     str3 = str3[1] > 0 ? [str3[0],str3[1].to_s,str3[2]] : nil
  150.     str = [str1,str2,str3]
  151.     iisnow = [str[ORDER[0]],str[ORDER[1]],str[ORDER[2]]]
  152.     iisnow
  153.   end
  154.  
  155. end
  156.  
  157. class Game_BattlerBase
  158.  
  159.   include IISNOW_ITEM_CONSUME_SKILL
  160.  
  161.   def skill_it_cost(skill)
  162.     skill.note.match(PATTERN)
  163.     item = $data_items[$1.to_i] if $1 != 0
  164.     num = $2.to_i
  165.     flag = $3.match(/^#{STR_UN_CONSUM}/) if $3
  166.     return [item,num,flag]
  167.   end
  168.  
  169.   def skill_eq_limt(skill)
  170.     skill.note.match(PATTERN_E)
  171.     eq = $data_weapons[$1.to_i] if $1 != 0
  172.     return eq
  173.   end
  174.  
  175.   def skill_ar_limt(skill)
  176.     skill.note.match(PATTERN_A)
  177.     eq = $data_armors[$1.to_i] if $1 != 0
  178.     return eq
  179.   end
  180.  
  181.   alias :iisnow_skill_cost_payable? :skill_cost_payable?
  182.   def skill_cost_payable?(skill)
  183.     result1 = iisnow_skill_cost_payable?(skill)
  184.     if skill_it_cost(skill)[0]
  185.       result2 = $game_party.item_number(skill_it_cost(skill)[0]) >= skill_it_cost(skill)[1]
  186.       return result1 && result2
  187.     end
  188.     return result1
  189.   end
  190.  
  191.   alias :iisnow_pay_skill_cost :pay_skill_cost
  192.   def pay_skill_cost(skill)
  193.     iisnow_pay_skill_cost(skill)
  194.     if skill_it_cost(skill)[0] && !skill_it_cost(skill)[2]
  195.       $game_party.gain_item(skill_it_cost(skill)[0],-skill_it_cost(skill)[1])
  196.     end
  197.   end
  198.  
  199. end
  200.  
  201. class Game_Actor
  202.  
  203.   alias :iisnow_skill_wtype_ok? :skill_wtype_ok?
  204.   def skill_wtype_ok?(skill)
  205.     result1 = iisnow_skill_wtype_ok?(skill)
  206.     result2 = skill_eq_limt(skill) ? weapons.include?(skill_eq_limt(skill)) : true
  207.     result3 = skill_ar_limt(skill) ? armors.include?(skill_ar_limt(skill)) : true
  208.     return result1 && result2 && result3
  209.   end
  210.  
  211. end



这次帮你编辑了。下次请善用论坛功能。  VIPArcher ——留

点评

发脚本可以用代码框<>,在发帖子的时候工具栏里应该可以找到的  发表于 2014-11-1 10:16
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

3
发表于 2014-11-1 10:15:22 | 只看该作者
把安安的脚本放在CD的脚本上面试试,应该是绘制方法覆盖了。

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
38 小时
注册时间
2014-10-28
帖子
94
4
 楼主| 发表于 2014-11-1 10:23:45 | 只看该作者
VIPArcher 发表于 2014-11-1 10:15
把安安的脚本放在CD的脚本上面试试,应该是绘制方法覆盖了。

谢谢,问题已经完美的解决了。最后再问一句,在66rpg中如何使用悬赏功能?

点评

你需要有VIP。然后发布悬赏帖(发帖里有个选项:["发表帖子","发布悬赏"])。  发表于 2014-11-1 10:25
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

5
发表于 2014-11-1 10:26:22 | 只看该作者
技能CD放下面就可以了···

评分

参与人数 1星屑 +132 收起 理由
VIPArcher + 132 塞糖

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
54
在线时间
1208 小时
注册时间
2011-1-23
帖子
910

贵宾

6
发表于 2014-11-1 18:20:22 | 只看该作者
豪火灭却不是火遁吗……

点评

不要在意这些细节。  发表于 2014-11-2 20:40
→→→牛排的小黑屋←←←
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
532
在线时间
238 小时
注册时间
2011-7-17
帖子
101
7
发表于 2014-11-2 14:12:13 | 只看该作者
我其实想问下楼主  图中战斗时菜单显示角色缩略图是用的新的战斗系统中带的还是单独的脚本

点评

是独立的脚本  发表于 2014-11-2 20:40
可以不用下载范例,上面的帖子中有链接,可以转到日志里看脚本  发表于 2014-11-2 17:03
资源已删除了···  发表于 2014-11-2 16:58
[url]http://rm.66rpg.com/thread-252003-1-1.html[/url]  发表于 2014-11-2 16:27
善用点评或私信功能,(不过也没事啦。  发表于 2014-11-2 14:26
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 23:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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