Project1

标题: 请问如何设定两个角色之间的等级差距限制? [打印本页]

作者: kapoleo    时间: 2011-11-24 16:47
标题: 请问如何设定两个角色之间的等级差距限制?
本帖最后由 kapoleo 于 2011-11-24 16:49 编辑

大家好,我是新手
我想请问一下
假设我有甲,乙两个人物
我想设定甲与乙之间的等级差距不能超过10
例如甲的等级是10时
乙无论如何练到死都不能超过20
直到甲的等级有所提升
乙才能升级
请问该如何设定呢?
谢谢dsu_plus_rewardpost_czw
作者: 灼眼的夏娜    时间: 2011-11-27 21:48
对于默认脚本
1、在Game_Actor中添加如下脚本:
  #--------------------------------------------------------------------------
  # ● 等级限制表
  #     第一层hash:要限制的角色ID号=>限制列表hash
  #     第二层hash:比较角色ID号=>相差等级
  #
  #       * 要限制的角色ID的最大等级=比较角色的等级+相差等级
  #--------------------------------------------------------------------------  
  LEVEL_LIMIT =
  {
    1=>{2=>10, 3=>15},
    2=>{1=>8, 3=>7}
  }
  
  #--------------------------------------------------------------------------
  # ● 计算限制模式下可升级的最大等级
  #--------------------------------------------------------------------------  
  def calc_max_level_limit
    limit = LEVEL_LIMIT[@actor_id]
    return $data_actors[@actor_id].final_level if limit.nil?
    level_ary = []
    limit.each do |actorid, limit_level|
      actor = $game_party.actors.find{|actor| actor.id == actorid}
      next if actor.nil?
      level_ary << actor.level + limit_level
    end
    return $data_actors[@actor_id].final_level if level_ary.empty?
    return level_ary.sort.first
  end

2、修改Game_Actor中以下函数
  #--------------------------------------------------------------------------
  # ● 更改 EXP
  #     exp : 新的 EXP
  #--------------------------------------------------------------------------
  def exp=(exp)
    @exp = [[exp, 9999999].min, 0].max
   
    max_level = calc_max_level_limit
   
    # 升级
    while @level < max_level and @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
      @level += 1
      # 学会特技
      for j in $data_classes[@class_id].learnings
        if j.level == @level
          learn_skill(j.skill_id)
        end
      end
    end
   
    # 降级
    while @exp < @exp_list[@level]
      @level -= 1
    end
    # 修正当前的 HP 与 SP 超过最大值
    @hp = [@hp, self.maxhp].min
    @sp = [@sp, self.maxsp].min
  end
  #--------------------------------------------------------------------------
  # ● 更改水品
  #     level : 新的等级
  #--------------------------------------------------------------------------
  def level=(level)
    # 检查上下限
    level = [[level, calc_max_level_limit].min, 1].max
    # 更改 EXP
    self.exp = @exp_list[level]
  end

红色的是修改过的(:

其他脚本默认的兼容请参考以上(:未测试 仅供参考:
作者: qq343286489    时间: 2011-11-28 11:00
这不只用脚本 事件也是可以的 !
作者: kapoleo    时间: 2011-12-3 12:13
本帖最后由 kapoleo 于 2011-12-3 12:17 编辑
灼眼的夏娜 发表于 2011-11-27 21:48
对于默认脚本
1、在Game_Actor中添加如下脚本:
  #---------------------------------------------------- ...


谢谢大大的答覆
不过我在脚本输入后
还需要做什么步骤才能具体设置限制?
抱歉,我是个新手
谢谢



kapoleo于2011-12-3 12:17补充以下内容:
啊....对我来说事件应该比较简单
那么请问应该在事件中怎么设置?
变数吗?还是强制乙无法获得exp?
作者: 574656549    时间: 2011-12-3 12:47
提示: 作者被禁止或删除 内容自动屏蔽




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