搜索附件  
同能RPG制作大师 附件中心 同能RM技术讨论区 RPG Maker XP 讨论区 【简易坑爹系列】武器、装备及状态限制技能脚本: demo.zip

【简易坑爹系列】武器、装备及状态限制技能脚本: demo.zip

 

【简易坑爹系列】武器、装备及状态限制技能脚本:
随手写了个脚本来回答问题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.   unlessdefined?(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.eachdo |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.eachdo |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_evaldo
  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
复制代码


测试的时候还被ruby坑得不轻
最新更新加了一些新功能,稍微调整了脚本,估计兼容VX
             本帖来自P1论坛作者英顺的马甲,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=393783  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
关闭

幸运抽奖

社区每日抽奖来袭,快来试试你是欧皇还是非酋~

立即查看

Loading...

QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

GMT+8, 2025-4-19 17:59 , Processed in 0.068209 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部