Project1

标题: 怎样用事件(用物品给使用者加随机的体力上限等)? [打印本页]

作者: shengfeng    时间: 2017-6-23 22:28
标题: 怎样用事件(用物品给使用者加随机的体力上限等)?
没办法完成必须在事件中加脚本
作者: 魔法丶小肉包    时间: 2017-6-23 23:49
插件脚本
RUBY 代码复制
  1. class Game_Battler < Game_BattlerBase
  2.   def item_apply(user, item)
  3.     @result.clear
  4.     @result.used = item_test(user, item)
  5.     @result.missed = (@result.used && rand >= item_hit(user, item))
  6.     @result.evaded = (!@result.missed && rand < item_eva(user, item))
  7.  
  8.     if @result.hit?
  9.       unless item.damage.none?
  10.         @result.critical = (rand < item_cri(user, item))
  11.         make_damage_value(user, item)
  12.         execute_damage(user)
  13.       end
  14.       if /<随机增加最大HP\s*(\d+)>/ =~ item.note
  15.         add_param(0,rand($1.to_i)+1)
  16.       end
  17.       item.effects.each {|effect| item_effect_apply(user, item, effect) }
  18.       item_user_effect(user, item)
  19.     end
  20.   end
  21. end


数据库物品备注
<随机增加最大HP 最大数值>
比如
<随机增加最大HP 100>
则随机范围为1~100
作者: shengfeng    时间: 2017-6-24 17:58
如果使用多个该怎么办(如mp上限 物攻上限 物防上限等等)
作者: shengfeng    时间: 2017-6-25 16:40
脚本有个bug必须在物品的能力提升(比如体力上限+1)否则出现物品使用无反应
作者: 魔法丶小肉包    时间: 2017-6-25 17:24
修复楼上说的bug
RUBY 代码复制
  1. class Game_Battler < Game_BattlerBase
  2.   def item_apply(user, item)
  3.     @result.clear
  4.     @result.used = item_test(user, item)
  5.     @result.missed = (@result.used && rand >= item_hit(user, item))
  6.     @result.evaded = (!@result.missed && rand < item_eva(user, item))
  7.     if /<随机增加最大HP\s*(\d+)>/ =~ item.note
  8.         add_param(0,rand($1.to_i)+1)
  9.     end
  10.     if @result.hit?
  11.       unless item.damage.none?
  12.         @result.critical = (rand < item_cri(user, item))
  13.         make_damage_value(user, item)
  14.         execute_damage(user)
  15.       end
  16.  
  17.       item.effects.each {|effect| item_effect_apply(user, item, effect) }
  18.       item_user_effect(user, item)
  19.     end
  20.   end
  21.   def item_test(user, item)
  22.     return false if item.for_dead_friend? != dead?
  23.     return true if $game_party.in_battle
  24.     return true if item.for_opponent?
  25.     return true if item.damage.recover? && item.damage.to_hp? && hp < mhp
  26.     return true if item.damage.recover? && item.damage.to_mp? && mp < mmp
  27.     return true if item_has_any_valid_effects?(user, item)
  28.     return true if /<随机增加最大HP\s*(\d+)>/ =~ item.note
  29.     return false
  30.   end
  31. end

作者: shengfeng    时间: 2017-6-25 22:14
非常感谢




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