Project1

标题: 有没有角色等级改变获得的经验的脚本? [打印本页]

作者: 普通的呆毛狼    时间: 2014-7-5 20:53
标题: 有没有角色等级改变获得的经验的脚本?
比如队伍里有一个10级的角色,另一个角色1级,消灭一个经验为40的怪,10级的角色获得的经验是40,1级的角色获得的经验是40的几倍。等级越高打怪得的经验越少,等级越低打怪得的经验越多这样的脚本。
作者: 恐惧剑刃    时间: 2014-7-5 23:46
本帖最后由 恐惧剑刃 于 2014-7-5 23:55 编辑

必须设置“敌人等级”否则很难判断角色能力与敌人能力的相对强弱!

所以
在Game_Temp 按下 insert 添加以下脚本

Level = {}   # 初始化敌人等级 可以改名字 需注意 下方脚本需对应改并且首字母为大写!
Level[1] = 1.0 # 1号敌人 默认即幽灵 的等级为1.0 请自行添加!

如果只是为了测试本脚本 请使用以下脚本
Level = Hash.new {|hash,key| hash[key] = key * 1.0} # 敌人的id就是敌人等级!!

浮点数用处不解释 避免0经验

Scene_Battle 2  172行

actor.exp += exp 改为
  1. for enemy in $game_troop.enemies
  2.   id = enemy.id
  3.   unless enemy.hidden
  4.     actor.exp += (enemy.exp * (Level[id] / $game_party.actors[i].level)).to_i
  5.   end
  6. end
复制代码
获得的经验为 敌人等级除以角色等级这个值再乘以“经验”
就是说 如果角色等级相对敌人等级过高 这个值(敌人等级除以角色等级)就越小 所以得到的经验就越少
不过这只是个示例方法,具体还请自改!



作者: 普通的呆毛狼    时间: 2014-7-6 10:49
恐惧剑刃 发表于 2014-7-5 23:46
必须设置“敌人等级”否则很难判断角色能力与敌人能力的相对强弱!

所以

好像没效果啊
作者: 恐惧剑刃    时间: 2014-7-6 13:23
本帖最后由 恐惧剑刃 于 2014-7-6 13:24 编辑
普通的呆毛狼 发表于 2014-7-6 10:49
好像没效果啊


1.请把敌人经验值调大一些 比如 40
2.确认你没有使用其他战斗类脚本(比如多格掉宝等)?如果有请自行搜索start_phase5方法自行整合,或者把次脚本放在main前
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 2)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================
  6. Level = Hash.new {|hash,key| hash[key] = key * 1.0} # 敌人的id就是敌人等级!!
  7. class Scene_Battle
  8.   #--------------------------------------------------------------------------
  9.   # ● 开始结束战斗回合
  10.   #--------------------------------------------------------------------------
  11.   def start_phase5
  12.     # 转移到回合 5
  13.     @phase = 5
  14.     # 演奏战斗结束 ME
  15.     $game_system.me_play($game_system.battle_end_me)
  16.     # 还原为战斗开始前的 BGM
  17.     $game_system.bgm_play($game_temp.map_bgm)
  18.     # 初始化 EXP、金钱、宝物
  19.     exp = 0
  20.     gold = 0
  21.     treasures = []
  22.     # 循环
  23.     for enemy in $game_troop.enemies
  24.       # 敌人不是隐藏状态的情况下
  25.       unless enemy.hidden
  26.         # 获得 EXP、增加金钱
  27.         exp += enemy.exp
  28.         gold += enemy.gold
  29.         # 出现宝物判定
  30.         if rand(100) < enemy.treasure_prob
  31.           if enemy.item_id > 0
  32.             treasures.push($data_items[enemy.item_id])
  33.           end
  34.           if enemy.weapon_id > 0
  35.             treasures.push($data_weapons[enemy.weapon_id])
  36.           end
  37.           if enemy.armor_id > 0
  38.             treasures.push($data_armors[enemy.armor_id])
  39.           end
  40.         end
  41.       end
  42.     end
  43.     # 限制宝物数为 6 个
  44.     treasures = treasures[0..5]
  45.     # 获得 EXP
  46.     for i in 0...$game_party.actors.size
  47.       actor = $game_party.actors[i]
  48.       if actor.cant_get_exp? == false
  49.         last_level = actor.level
  50.         for enemy in $game_troop.enemies
  51.           id = enemy.id
  52.           unless enemy.hidden
  53.             actor.exp += (enemy.exp * (Level[id] / $game_party.actors[i].level)).to_i
  54.           end
  55.         end
  56.         if actor.level > last_level
  57.           @status_window.level_up(i)
  58.         end
  59.       end
  60.     end
  61.     # 获得金钱
  62.     $game_party.gain_gold(gold)
  63.     # 获得宝物
  64.     for item in treasures
  65.       case item
  66.       when RPG::Item
  67.         $game_party.gain_item(item.id, 1)
  68.       when RPG::Weapon
  69.         $game_party.gain_weapon(item.id, 1)
  70.       when RPG::Armor
  71.         $game_party.gain_armor(item.id, 1)
  72.       end
  73.     end
  74.     # 生成战斗结果窗口
  75.     @result_window = Window_BattleResult.new(exp, gold, treasures)
  76.     # 设置等待计数
  77.     @phase5_wait_count = 100
  78.   end
  79. end
复制代码

作者: 普通的呆毛狼    时间: 2014-7-6 20:19
恐惧剑刃 发表于 2014-7-6 13:23
1.请把敌人经验值调大一些 比如 40
2.确认你没有使用其他战斗类脚本(比如多格掉宝等)?如果有请自行搜 ...

插入次脚本后虽然战斗经验发生变动了,不过获得经验金钱、还有道具的框框不见了,还有升级提示的脚本也不起效果了……怎样才可以保证让经验发生变动,同时战斗获得经验之类的框框也显示出来升级提示的脚本起效果啊
作者: 普通的呆毛狼    时间: 2014-7-6 20:57
恐惧剑刃 发表于 2014-7-6 13:23
1.请把敌人经验值调大一些 比如 40
2.确认你没有使用其他战斗类脚本(比如多格掉宝等)?如果有请自行搜 ...

额……搜索了“start_phase5”,结果完全看不懂……其它战斗类脚本是指“菜鸟横版”之类的么?




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