Project1

标题: 帮修改下获得经验脚本 [打印本页]

作者: 大放异彩    时间: 2016-7-22 23:56
标题: 帮修改下获得经验脚本
帮我修改下Scene_Battle 2 148行,和Interpreter 6 182行
我想要的效果是:队伍中角色等级达到20级就无法获得经验值,当达到20级的角色战斗后无法获得经验,事件也增加不了经验,这是我想要的效果

我不知道怎么写判断

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 增减 EXP
  3.   #--------------------------------------------------------------------------
  4.   def command_315
  5.     # 获取操作值
  6.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  7.     # 处理重复
  8.     iterate_actor(@parameters[0]) do |actor|
  9.       # 更改角色 EXP
  10.       actor.exp += value
  11.     end
  12.     # 继续
  13.     return true
  14.   end


RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 开始结束战斗回合
  3.   #--------------------------------------------------------------------------
  4.   def start_phase5
  5.     # 转移到回合 5
  6.     @phase = 5
  7.     # 演奏战斗结束 ME
  8.     $game_system.me_play($game_system.battle_end_me)
  9.     # 还原为战斗开始前的 BGM
  10.     $game_system.bgm_play($game_temp.map_bgm)
  11.     # 初始化 EXP、金钱、宝物
  12.     exp = 0
  13.     gold = 0
  14.     treasures = []
  15.     # 循环
  16.     for enemy in $game_troop.enemies
  17.       # 敌人不是隐藏状态的情况下
  18.       unless enemy.hidden
  19.         # 获得 EXP、增加金钱
  20.         exp += enemy.exp
  21.         gold += enemy.gold
  22.         # 出现宝物判定
  23.         if rand(100) < enemy.treasure_prob
  24.           if enemy.item_id > 0
  25.             treasures.push($data_items[enemy.item_id])
  26.           end
  27.           if enemy.weapon_id > 0
  28.             treasures.push($data_weapons[enemy.weapon_id])
  29.           end
  30.           if enemy.armor_id > 0
  31.             treasures.push($data_armors[enemy.armor_id])
  32.           end
  33.         end
  34.       end
  35.     end


只要在着两段里增加判断应该就可以了,试了很多次都失败了,所以请求各位帮忙了
作者: 英顺的马甲    时间: 2016-7-23 00:05
数据库里设置角色的最大等级不就行了么?==
作者: 英顺的马甲    时间: 2016-7-23 01:44
本帖最后由 英顺的马甲 于 2016-7-23 02:41 编辑

一不小心就连贴了==
其实等级上线是能改的,不过不会被保存罢了,与其想着怎么限制经验倒不如把更改后的等级限制保存下来==
RUBY 代码复制
  1. $_flexible_final_lvl_actor = RPG::Actor unless $_flexible_final_lvl_actor
  2. class RPG::Actor < $_flexible_final_lvl_actor
  3.   def final_level=(lvl)
  4.     super(lvl)
  5.     if $game_actors
  6.       $game_actors.final_levels[self.id] = lvl
  7.       $game_actors[self.id].make_exp_list
  8.     end
  9.     return lvl
  10.   end
  11. end
  12. class Game_Actors
  13.   def final_levels
  14.     return (@final_levels||={})
  15.   end
  16. end
  17. trace_var :$game_actors do
  18.   if $game_actors
  19.     $game_actors.final_levels.each do |i, v|
  20.       $data_actors[i].final_level = v
  21.     end
  22.   end
  23. end

RUBY 代码复制
  1. $data_actors[角色ID].final_level = 等级上限 # 这只是普通的改等级上限的方法





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