查看: 3360|回复: 4

[RMVA发布] 【不是创意的创意】一个技能多类型

[复制链接]
梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2015-1-23 11:54:49 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 chd114 于 2015-3-6 12:41 编辑

举个例子好了···把技能类型重新调整,可以让【火球术】同时为【魔法】和【火系】两种类型,【治疗术】同时为【魔法】和【治疗系】两种类型,当【火系】技能类型被禁用则【火球术】无法使用,如果【魔法】技能类型被禁用则【火球术】和【治疗术】都无法使用

需要插入3段脚本,请按顺序插入,具体效果是让一个技能可以同时归属多种类型

[fold=
2015年3月7日 05:06:03更新:允许多类型的技能在所有占用类型的技能分类里查看使用]
解释起来有点拗口···举个例子,你可以在【魔法】和【火系】两个技能类型里都找到【火球术】,但是这里只给出了在特技界面查看时的补丁···

  1. #==============================================================================
  2. # ■ Window_SkillList
  3. #------------------------------------------------------------------------------
  4. #  技能画面中,显示技能的窗口。(如果技能同时含有多种技能类型的元素存在则会在多个技能类型里显示)
  5. #==============================================================================
  6. class Window_SkillList < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 查询列表中是否含有此技能
  9.   #--------------------------------------------------------------------------
  10.   def include?(item)
  11.     if Chd114::Skill::Skilltype[item.id]!=[]
  12.     for i in 0...Chd114::Skill::Skilltype[item.id].size#多类型技能的判定
  13.       item && Chd114::Skill::Skilltype[item.id][i] == @stype_id
  14.     end
  15.     else
  16.     item && item.stype_id == @stype_id
  17.     end
  18.   end
  19. end
复制代码
[/fold]

[fold=
需要用到的新方法部分]
[pre lang="ruby" line="1"]class Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 判定技能类型是否添加
  #--------------------------------------------------------------------------
  def skill_type_added?(stype_id)
    features_set(FEATURE_STYPE_ADD).include?(stype_id)
  end
  #--------------------------------------------------------------------------
  # ● 禁用技能类型时直接删除该技能类型(该部分来自Taroxd)
  #--------------------------------------------------------------------------
  alias ast_20141004 added_skill_types
  def added_skill_types
    ast_20141004.delete_if &method(:skill_type_sealed?)
  end
end[/pre]
[/fold]
[fold=
设置部分]
[pre lang="ruby" line="1"]=begin
给一个技能多种类型分类,只有角色能使用一个技能下设定的所有类型的技能才能使用
=end
module Chd114 end
module Chd114::Skill
  Skilltype = {
  147=>[2],#147号技能类型为数据库设置的技能类型+这里设置的2号技能类型
  }
end
(1..999).each{|i|Chd114::Skill::Skilltype ||=[]}[/pre]
[/fold]
[fold=
处理部分]
[pre lang="ruby" line="1"]class Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 检查技能的使用条件
  #--------------------------------------------------------------------------
  alias skill_type_conditions_met? skill_conditions_met?
  def skill_conditions_met?(skill)
    skillcan=0
    for i in 0...Chd114::Skill::Skilltype[skill.id].size
      skillcan+=1 if skill_type_added?(Chd114::Skill::Skilltype[skill.id]) &&
      !skill_type_sealed?(Chd114::Skill::Skilltype[skill.id])
    end
    skill_type_conditions_met?(skill) if skillcan==Chd114::Skill::Skilltype[skill.id].size
  end
end[/pre]
[/fold]

评分

参与人数 3星屑 +201 梦石 +1 收起 理由
怪蜀黍 + 125 + 1 发布奖励
VIPArcher + 66 卧槽,我还以为是精灵发的
3106345123 + 10 塞糖

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
梦石
0
星屑
211
在线时间
905 小时
注册时间
2010-9-6
回帖
3138
发表于 2015-1-23 18:18:14 | 显示全部楼层
创意不错!但是治疗和魔法不是对应牧师和法师么?职业限制就可以区分了。

点评

咒法系也有治疗法术……  发表于 2015-4-29 13:28
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

 楼主| 发表于 2015-1-23 18:40:00 | 显示全部楼层
stevenrock 发表于 2015-1-23 01:18
创意不错!但是治疗和魔法不是对应牧师和法师么?职业限制就可以区分了。 ...

还是有点区别的···比如你只想让敌人禁止角色放治疗魔法···

点评

疯狂的多塔和刀塔死亡学院有类似的设定  发表于 2015-1-23 18:44
哦,这样啊  发表于 2015-1-23 18:42
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

 楼主| 发表于 2015-3-7 05:10:07 | 显示全部楼层
更新自己射一发···

点评

的確有這問題..我下面有解決辦法(可能不夠簡化..最少能用)  发表于 2015-3-15 12:37
我也在DEBUG···  发表于 2015-3-14 20:32
诶。。那我这边,所有类型都出现了设定的内个技能了诶  发表于 2015-3-14 20:23
1、2会有,其他没有  发表于 2015-3-14 20:19
比如说。技能1 数据库里设定的是 type1 ,脚本里设置的是type2,那么在type1,2,3,4,5等技能类型里都会显示这个技能的么  发表于 2015-3-14 19:44
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
166
在线时间
454 小时
注册时间
2015-2-25
回帖
358
发表于 2015-3-15 01:36:01 | 显示全部楼层
改這樣[pre lang="ruby"]def include?(item)
  if Chd114::Skill::Skilltype[item.id]!=[]
    for i in 0...Chd114::Skill::Skilltype[item.id].size#多类型技能的判定
      return true if item && Chd114::Skill::Skilltype[item.id] == @stype_id  
    end
  end
  return item && item.stype_id == @stype_id
end[/pre]
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部