Project1

标题: 求教,想做这样一个魔法系统 [打印本页]

作者: Brushbrother    时间: 2014-2-10 18:31
标题: 求教,想做这样一个魔法系统
本帖最后由 Brushbrother 于 2014-2-15 23:21 编辑

就是角色装备上武器之后可以增加其属性值。比如:装备卧槽剑,火+5
然后这个属性值限定你可以使用的魔法(当然属性值越高可以用的魔法就越多)
然后魔法可以通过奥义书等道具来学习到。但是当卸下装备或属性值降低以后,魔法也就不可用了。
本人脚本小白。。。
作者: zlpwb1666    时间: 2014-2-10 21:37
用变量吧,装备卧槽剑是 变量+5
然后分歧
当变量不小于5时,领悟火球术
当变量不小于10时,领悟XX技能
作者: 国产吃货    时间: 2014-2-10 23:04
如果你能说的更详细可能我就帮你
作者: Brushbrother    时间: 2014-2-12 10:34
国产吃货 发表于 2014-2-10 23:04
如果你能说的更详细可能我就帮你

问题的关键是在于怎么给武器定义属性值这一个参数
作者: Brushbrother    时间: 2014-2-12 15:07
国产吃货 发表于 2014-2-10 23:04
如果你能说的更详细可能我就帮你

简单但是怎么做。。。我过一会发一个详细一点的帖子
作者: feizhaodan    时间: 2014-2-13 01:25
Brushbrother 发表于 2014-2-12 15:07
简单但是怎么做。。。我过一会发一个详细一点的帖子


简单的做了一个脚本来让装备/拿下武器防具的时候让一个可以指定的变量增减。
在装备的备注栏内输入
  1. <VarnN>
复制代码
其中n是指定的变量ID,N是增减的数值并且要在前面输入加号或者减号。
然后变量ID也会根据装备/拿下武器防具的角色ID变化。
如1号角色装备上了备注栏上写着<Var10+5>的武器,那么第11号变量(指定的10加上角色ID1)就会多5。
拿下的时候会减去指定的数值。
以下是脚本
  1. class RPG::BaseItem
  2.   def get_addvar
  3.     temp = []
  4.     @note.each_line do |line|
  5.       case line
  6.       when /\<Var(\d+)([+-]\d+)\>/i
  7.         temp.push([$1.to_i,$2.to_i])
  8.       end
  9.     end
  10.     return temp
  11.   end
  12. end
  13. #==============================================================================
  14. # ■ Game_Actor
  15. #------------------------------------------------------------------------------
  16. #  管理角色的类。
  17. #   本类在 Game_Actors 类 ($game_actors) 的内部使用。
  18. #   具体使用请查看 Game_Party 类 ($game_party) 。
  19. #==============================================================================

  20. class Game_Actor < Game_Battler
  21.   #--------------------------------------------------------------------------
  22.   # ● 更换装备
  23.   #     slot_id : 装备栏 ID
  24.   #     item    : 武器/护甲(为 nil 时装备解除)
  25.   #--------------------------------------------------------------------------
  26.   alias equipchangevar_change_equip change_equip
  27.   def change_equip(slot_id, item)
  28.     preitem = @equips[slot_id].object
  29.     return unless trade_item_with_party(item, equips[slot_id])
  30.     return if item && equip_slots[slot_id] != item.etype_id
  31.     equipchangevar_change_equip(slot_id,item)
  32.     if item && !item.get_addvar.empty?
  33.       item.get_addvar.each do |arr|
  34.         $game_variables[arr[0]+@actor_id] += arr[1]
  35.       end
  36.     end
  37.     if preitem && !preitem.get_addvar.empty?
  38.       preitem.get_addvar.each do |arr|
  39.         $game_variables[arr[0]+@actor_id] -= arr[1]
  40.       end
  41.     end
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # ● 强制更换装备
  45.   #     slot_id : 装备栏 ID
  46.   #     item    : 武器/护甲(为 nil 时装备解除)
  47.   #--------------------------------------------------------------------------
  48.   alias equipchangevar_force_change_equip force_change_equip
  49.   def force_change_equip(slot_id, item)
  50.     preitem = @equips[slot_id].object
  51.     equipchangevar_force_change_equip(slot_id,item)
  52.     if item && !item.get_addvar.empty?
  53.       item.get_addvar.each do |arr|
  54.         $game_variables[arr[0]+@actor_id] += arr[1]
  55.       end
  56.     end
  57.     if preitem && !preitem.get_addvar.empty?
  58.       preitem.get_addvar.each do |arr|
  59.         $game_variables[arr[0]+@actor_id] -= arr[1]
  60.       end
  61.     end
  62.   end
  63. end
复制代码

作者: Brushbrother    时间: 2014-2-13 18:02
feizhaodan 发表于 2014-2-13 01:25
简单的做了一个脚本来让装备/拿下武器防具的时候让一个可以指定的变量增减。
在装备的备注栏内输入其中n ...

谢谢大大。不过还有一个问题,我的魔法系统是想做成这样的:

给武器添加了这么一个备注,让它得到属性值这个变量
然后用技能书这样的物品来习得

技能书是这样的一个公共事件

这样在属性值不足的时候就无法习得技能,但是“火球术”会消耗。我想让属性值不足时“火球术”技能书就无法使用,怎么办?
作者: eel    时间: 2014-2-13 19:40
Brushbrother 发表于 2014-2-13 18:02
谢谢大大。不过还有一个问题,我的魔法系统是想做成这样的:

给武器添加了这么一个备注,让它得到属性值 ...

公共事件再学一遍
作者: Brushbrother    时间: 2014-2-14 21:45
feizhaodan 发表于 2014-2-13 01:25
简单的做了一个脚本来让装备/拿下武器防具的时候让一个可以指定的变量增减。
在装备的备注栏内输入其中n ...

还有我用了你这个脚本之后
装备一个武器时,武器的数量-2


装备上就

请问这是什么情况
作者: feizhaodan    时间: 2014-2-15 01:30
Brushbrother 发表于 2014-2-14 21:45
还有我用了你这个脚本之后
装备一个武器时,武器的数量-2
  1. class RPG::BaseItem
  2.   def get_addvar
  3.     temp = []
  4.     @note.each_line do |line|
  5.       case line
  6.       when /\<Var(\d+)([+-]\d+)\>/i
  7.         temp.push([$1.to_i,$2.to_i])
  8.       end
  9.     end
  10.     return temp
  11.   end
  12. end
  13. #==============================================================================
  14. # ■ Game_Actor
  15. #------------------------------------------------------------------------------
  16. #  管理角色的类。
  17. #   本类在 Game_Actors 类 ($game_actors) 的内部使用。
  18. #   具体使用请查看 Game_Party 类 ($game_party) 。
  19. #==============================================================================

  20. class Game_Actor < Game_Battler
  21.   #--------------------------------------------------------------------------
  22.   # ● 更换装备
  23.   #     slot_id : 装备栏 ID
  24.   #     item    : 武器/护甲(为 nil 时装备解除)
  25.   #--------------------------------------------------------------------------
  26.   alias equipchangevar_change_equip change_equip
  27.   def change_equip(slot_id, item)
  28.     preitem = @equips[slot_id].object
  29.     return if item && equip_slots[slot_id] != item.etype_id
  30.     equipchangevar_change_equip(slot_id,item)
  31.     if item && !item.get_addvar.empty?
  32.       item.get_addvar.each do |arr|
  33.         $game_variables[arr[0]+@actor_id] += arr[1]
  34.       end
  35.     end
  36.     if preitem && !preitem.get_addvar.empty?
  37.       preitem.get_addvar.each do |arr|
  38.         $game_variables[arr[0]+@actor_id] -= arr[1]
  39.       end
  40.     end
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 强制更换装备
  44.   #     slot_id : 装备栏 ID
  45.   #     item    : 武器/护甲(为 nil 时装备解除)
  46.   #--------------------------------------------------------------------------
  47.   alias equipchangevar_force_change_equip force_change_equip
  48.   def force_change_equip(slot_id, item)
  49.     preitem = @equips[slot_id].object
  50.     equipchangevar_force_change_equip(slot_id,item)
  51.     if item && !item.get_addvar.empty?
  52.       item.get_addvar.each do |arr|
  53.         $game_variables[arr[0]+@actor_id] += arr[1]
  54.       end
  55.     end
  56.     if preitem && !preitem.get_addvar.empty?
  57.       preitem.get_addvar.each do |arr|
  58.         $game_variables[arr[0]+@actor_id] -= arr[1]
  59.       end
  60.     end
  61.   end
  62. end
复制代码
修正。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1