Project1

标题: RMXP自动升级修改 [打印本页]

作者: 夕仔    时间: 2014-11-18 23:35
标题: RMXP自动升级修改
RMXP脚本中的自动升级在哪里?
怎么取消自动升级,我重写了个变量,代替了经验,但要防止原来的经验增加(修改器)影响等级,怎么取消?
作者: H·H·Y    时间: 2014-11-19 12:12
本帖最后由 H·H·Y 于 2014-11-19 13:42 编辑

刚刚弄错了。
Game_Actor的458行更改exp的方法改为
RUBY 代码复制
  1. def exp=(exp)
  2.     @exp = [[exp, 9999999].min, 0].max
  3.     @level_remember = @level
  4.     # 升级
  5.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  6.       @level += 1
  7.       # 学会特技
  8.       for j in $data_classes[@class_id].learnings
  9.         if j.level == @level
  10.           learn_skill(j.skill_id)
  11.         end
  12.       end
  13.     end
  14.     # 降级
  15.     while @exp < @exp_list[@level]
  16.       @level -= 1
  17.     end
  18.     # 修正当前的 HP 与 SP 超过最大值
  19.     @hp = [@hp, self.maxhp].min
  20.     @sp = [@sp, self.maxsp].min
  21.     if $level_switch != true
  22.       @level = @level_remember
  23.     else
  24.       $level_switch = false
  25.     end
  26.   end


Interpreter 6的198行增减等级方法改为
RUBY 代码复制
  1. def command_316
  2.     $level_switch = true
  3.     # 获取操作值
  4.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  5.     # 处理重复
  6.     iterate_actor(@parameters[0]) do |actor|
  7.       # 更改角色的等级
  8.       actor.level += value
  9.     end
  10.     # 继续
  11.     return true
  12.   end


这样可以做到即便经验值已经到达升级需求也不会升级的效果。


不过我这改的有点问题,使用事件增减等级需要分开增加,不能“全体成员”,否则只会给第一位角色加等级,暂时不知道解决方法。
还有要做到完全剃掉默认的exp要搞很多工作呢。

@夕仔  








作者: 夕仔    时间: 2014-11-19 12:48
  1.   def level=(level)
  2.     # 检查上下限
  3.     level = [[level, new_final_level].min, 1].max
  4.     if level > @level
  5.       for i in @level...level
  6.         self.exp += @exp_list[i+1]
  7.       end
  8.     else
  9.       @level = level
  10.     end
  11.   end
复制代码
@H·H·Y 这个要怎么改  
作者: 恐惧剑刃    时间: 2014-11-19 13:21
本帖最后由 恐惧剑刃 于 2014-11-19 13:33 编辑

范例
手动升级.zip (228.35 KB, 下载次数: 63)

修正个小问题
  1. class Game_Actor < Game_Battler
  2.   def zan_exp_up_level#升级方法
  3.     return if @exp_list[@level + 1] < 0 or @exp < @exp_list[@level + 1]
  4.     @exp -= @exp_list[@level + 1]
  5.     @level += 1
  6.     @hp = self.maxhp
  7.     @sp = self.maxsp
  8.     # 学会特技
  9.     for j in $data_classes[@class_id].learnings
  10.       if j.level == @level
  11.         learn_skill(j.skill_id)
  12.       end
  13.     end
  14.   end
  15.   def exp=(exp)
  16.     @exp = [[exp, 9999999].min, 0].max
  17.     # 降级
  18.     while @exp < @exp_list[@level]
  19.       @level -= 1
  20.       # 修正当前的 HP 与 SP 超过最大值
  21.       @hp = [@hp, self.maxhp].min
  22.       @sp = [@sp, self.maxsp].min
  23.     end
  24.   end
  25. end
复制代码





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