Project1

标题: 请教一下,如何设置战斗后角色经验平分? [打印本页]

作者: chianti    时间: 2009-5-16 08:58
标题: 请教一下,如何设置战斗后角色经验平分?
RT,依照站上那个脚本改了,但是还是没有效果 [LINE]1,#dddddd[/LINE]版务信息:版主帮忙结贴~
作者: 后知后觉    时间: 2009-5-16 09:18
什么叫绝色经验平分?
默认情况下战斗结束时队伍里每个人(还活着的)得的经验都是一样的吧
作者: 紫苏    时间: 2009-5-16 12:21
不知道你是如何修改的,这个主要得在 Scene_Battle 2 中的 start_phase5,在战斗结束获得敌人的 exp 后修改 exp 的分配方式~找到 start_phase5 的定义处,按照下面红色部分修改,灰色部分是弃用的原脚本语句:
  #--------------------------------------------------------------------------
  # ● 开始结束战斗回合
  #--------------------------------------------------------------------------
  def start_phase5
    # 转移到回合 5
    @phase = 5
    # 演奏战斗结束 ME
    $game_system.me_play($game_system.battle_end_me)
    # 还原为战斗开始前的 BGM
    $game_system.bgm_play($game_temp.map_bgm)
    # 初始化 EXP、金钱、宝物
    exp = 0
    gold = 0
    treasures = []
    # 循环
    for enemy in $game_troop.enemies
      # 敌人不是隐藏状态的情况下
      unless enemy.hidden
        # 获得 EXP、增加金钱
        exp += enemy.exp
        gold += enemy.gold
        # 出现宝物判定
        if rand(100) < enemy.treasure_prob
          if enemy.item_id > 0
            treasures.push($data_items[enemy.item_id])
          end
          if enemy.weapon_id > 0
            treasures.push($data_weapons[enemy.weapon_id])
          end
          if enemy.armor_id > 0
            treasures.push($data_armors[enemy.armor_id])
          end
        end
      end
    end
    # 限制宝物数为 6 个
    treasures = treasures[0..5]
    # 获得 EXP
    available_actors = []
    # 计算可获得经验的队员集合
    for i in $game_party.actors
      available_actors.push(i) if !i.cant_get_exp?
    end
    # 获取可获得经验的队员数
    num = available_actors.size
    if num != 0
      # 获取整平均分配的经验
      even_exp = exp / num
      # 获取整平均分配之后的余数
      rest_exp = exp % num
      # 获得 EXP
      for i in available_actors
        i.exp += even_exp
      end
      # 随机分配余下的 n 点经验
      for i in 0...rest_exp
        r = rand(num)
        available_actors[r].exp += 1
        available_actors.delete_at(r)
        num = available_actors.size
      end
      # 显示升级标志

      for i in 0...$game_party.actors.size
        actor = $game_party.actors
        if actor.cant_get_exp? == false
          last_level = actor.level
          #actor.exp += exp
          if actor.level > last_level
            @status_window.level_up(i)
          end
        end
      end
    end
    # 获得金钱
    $game_party.gain_gold(gold)
    # 获得宝物
    for item in treasures
      case item
      when RPG::Item
        $game_party.gain_item(item.id, 1)
      when RPG::Weapon
        $game_party.gain_weapon(item.id, 1)
      when RPG::Armor
        $game_party.gain_armor(item.id, 1)
      end
    end
    # 生成战斗结果窗口
    @result_window = Window_BattleResult.new(exp, gold, treasures)
    # 设置等待计数
    @phase5_wait_count = 100
  end
[LINE]1,#dddddd[/LINE]系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~




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