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

Project1

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

[原创发布] 【简易坑爹系列】武器、装备及状态限制技能脚本

[复制链接]

Lv1.梦旅人

路人党员

梦石
0
星屑
51
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
跳转到指定楼层
1
发表于 2016-5-30 00:20:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 英顺的马甲 于 2016-7-23 03:54 编辑

随手写了个脚本来回答问题
RUBY 代码复制
  1. #===============================================================================
  2. # ■ 【简易坑爹系列】武器、装备及状态限制技能脚本
  3. #-------------------------------------------------------------------------------
  4. # 使用方法:
  5. #   1. 插入Game_Actor之后,Main之前的任意位置。
  6. #   1. 在下面设置需要被视为武器种类的属性名称。
  7. #   2. 在属性列表内增加相对应的属性
  8. #   3. 利用武器属性来设置种类,每个武器只能归类到一个种类。
  9. #   4. 利用技能属性来设置发动技能需要的武器种类,可以设置多个,但只需满足其中
  10. #      一个便可发动。
  11. #   5. 没有设定条件的技能在任何武器或没有武器的情况下皆可发动。
  12. #   6. 上面所述皆可运用在装备及状态
  13. #===============================================================================
  14. module WLS
  15.   #-----------------------------------------------------------------------------
  16.   # 名称列在此的属性会被视为武器种类处理。
  17.   # 被视为武器种类的属性将不会对伤害造成任何影响。
  18.   #-----------------------------------------------------------------------------
  19.   TYPES = ["剑", "刀", "杖"]
  20.   #-----------------------------------------------------------------------------
  21.   unless defined?(ACTOR)
  22.     ACTOR  = ::Game_Actor
  23.     WEAPON = ::RPG::Weapon
  24.     SKILL  = ::RPG::Skill
  25.     ITEM   = ::RPG::Item
  26.     ARMOR  = ::RPG::Armor
  27.     ENEMY  = ::RPG::Enemy
  28.     CLASS  = ::RPG::Class
  29.     STATE  = ::RPG::State
  30.   end
  31.   module_function
  32.   def elementSetClass(claz, prefix = '')
  33.     copy_const(::Class.new(claz){
  34.       define_method(prefix.to_s + 'element_set') do
  35.         set = super.clone
  36.         temp = ::WLS::TYPES.map{|t|$data_system.elements.index(t)}
  37.         set.delete_if{|e|temp.include?(e)}
  38.         return set
  39.       end
  40.     })
  41.   end
  42.   def elementRanksClass(claz)
  43.     copy_const(::Class.new(claz) {
  44.       def element_ranks
  45.         ranks = super.clone
  46.         ::WLS::TYPES.each do |t|
  47.           ranks[$data_system.elements.index(t)] = 3
  48.         end
  49.         return ranks
  50.       end
  51.     })
  52.   end
  53.   def copy_const(claz)
  54.     claz.superclass.constants.each do |c|
  55.       claz.const_set(c, claz.superclass.const_get(c))
  56.     end
  57.     return claz
  58.   end
  59.   def define_type(claz, var)
  60.     claz.const_set(:VAR, var)
  61.     claz.class_eval do
  62.       def type
  63.         temp = WLS::TYPES.map{|t|$data_system.elements.index(t)}
  64.         return instance_variable_get(self.class::VAR).find{|e|temp.include?(e)}
  65.       end
  66.     end
  67.   end
  68. end
  69. Game_Actor = Class.new(WLS::ACTOR) do
  70.   def skill_can_use?(skill)
  71.     orig = super(skill)
  72.     skill = skill.is_a?(RPG::Skill) ? skill : $data_skills[skill]
  73.     types = [$data_weapons[self.weapon_id].type]
  74.     types |= [@armor1_id, @armor2_id, @armor3_id, @armor4_id].map{|i|$data_armors[i].type}
  75.     types |= @states.map{|s|$data_states[s].type}
  76.     return ((skill.required_types.empty? or skill.required_types.any?{|t|types.include?(t)}) and orig)
  77.   end
  78. end
  79. module RPG
  80.   Weapon = ::WLS.elementSetClass(::WLS::WEAPON)
  81.   Skill = ::WLS.elementSetClass(::WLS::SKILL)
  82.   Item = ::WLS.elementSetClass(::WLS::ITEM)
  83.   Armor = ::WLS.elementSetClass(::WLS::ARMOR, :guard_)
  84.   State = ::WLS.elementSetClass(::WLS::STATE, :guard_)
  85.   Class = ::WLS.elementRanksClass(::WLS::CLASS)
  86.   Enemy = ::WLS.elementRanksClass(::WLS::ENEMY)
  87.   ::WLS.define_type(Weapon, :@element_set)
  88.   ::WLS.define_type(Armor, :@guard_element_set)
  89.   ::WLS.define_type(State, :@guard_element_set)
  90.   class Skill
  91.     def required_types
  92.       temp = WLS::TYPES.map{|t|$data_system.elements.index(t)}
  93.       return @element_set.find_all{|e|temp.include?(e)}
  94.     end
  95.   end
  96. end

demo.zip (936.33 KB, 下载次数: 250)
测试的时候还被ruby坑得不轻
最新更新加了一些新功能,稍微调整了脚本,估计兼容VX

评分

参与人数 1星屑 +30 收起 理由
y967 + 30 塞糖

查看全部评分

本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党

Lv4.逐梦者

梦石
0
星屑
13119
在线时间
3791 小时
注册时间
2013-7-18
帖子
2280
2
发表于 2016-6-2 19:22:24 | 只看该作者
非常好用...领走
山岚野人,快人快语,礼数不周,还望海涵....
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 19:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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