设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 901|回复: 2
打印 上一主题 下一主题

请教一下,如何设置战斗后角色经验平分?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
48 小时
注册时间
2009-5-16
帖子
16
跳转到指定楼层
1
发表于 2009-5-16 08:58:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
RT,依照站上那个脚本改了,但是还是没有效果
版务信息:版主帮忙结贴~

Lv4.逐梦者

梦石
0
星屑
6875
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

2
发表于 2009-5-16 09:18:40 | 只看该作者
什么叫绝色经验平分?
默认情况下战斗结束时队伍里每个人(还活着的)得的经验都是一样的吧











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
3
发表于 2009-5-16 12:21:41 | 只看该作者
不知道你是如何修改的,这个主要得在 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

系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-15 20:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表