Project1

标题: 再次求助脚本问题…… [打印本页]

作者: MLRPG    时间: 2016-1-18 20:13
标题: 再次求助脚本问题……
我找人帮我写了个经验惩罚脚本
具体效果为:当某个角色超过指定等级 就无法获得经验
RUBY 代码复制
  1. # 获得 EXP
  2.     for i in 0...$game_party.actors.size
  3.       actor = $game_party.actors[i]
  4.       if actor.cant_get_exp? == false
  5.         last_level = actor.level
  6.         actor.exp += exp if actor.level<=$game_variables[35]
  7.         if actor.level > last_level
  8.           @status_window.level_up(i)
  9.         end
  10.       end
  11.     end

脚本如上 但是没有效果 求助原因
作者: piaoy    时间: 2016-1-19 10:43
在Game_Actor 类的458行下面插入下面的脚本试试看
  1.     if exp > @exp
  2.       if @actor_id ==  $game_variables[34]  and @level >= $game_variables[35]
  3.         return
  4.       end
  5.     end
复制代码
34号变量表示某位角色的ID 35号表示限定等级

作者: huajinyu123    时间: 2016-1-19 15:45
我看你还是发工程吧
作者: 夜狠简单    时间: 2016-1-20 17:02
本帖最后由 夜狠简单 于 2016-1-21 00:37 编辑

应该是这个意思




Project1.rar (193.13 KB, 下载次数: 46)

没有特意设置角色等级限制后,就只能升级到限制的等级,允许本次获得经验后可以超过限制的等级,但下次就不在获取经验。
如二号角色 击败敌人后可以 从 5级升到20级,但是他等级限制是 15级
。 那么这次战斗后,其他伙伴和二号角色一同升级到20级左右。下次战斗胜利后,其他伙伴可以继续升级,但他不能升级。
如果需要他可以再次升级,则修改限制的等级就行


RUBY 代码复制
  1. # 插在Main前面使用
  2. class Scene_Battle
  3.   #用数组给角色指定等级上限,只是一个预设定。
  4.   if  $actorlevel ==nil
  5.   $actorlevel=[]
  6.   end
  7.  
  8. if $data_actors !=nil
  9.   for i in 1...$data_actors.size
  10.   #$actorlevel[1] = 10一号角色等级超过10不增加经验
  11.   #$actorlevel[2] = 20二号角色等级超过20不增加经验
  12.   #$actorlevel[7] = 30七号角色等级超过30不增加经验
  13.   $actorlevel[i] =99 #默认所有角色等级超过99级不增加经验
  14.   end
  15. end
  16.  
  17.  
  18. #比如给五号角色增加等级限制50级 就写  $actorlevel[5]=50
  19. #如果要更改二号角色等级超过30级就不增加经验,也可以直接通过
  20. #事件指令-脚本 $actorlevel[2] = 30
  21.  
  22.    def start_phase5
  23.     # 转移到回合 5
  24.     @phase = 5
  25.     # 演奏战斗结束 ME
  26.     $game_system.me_play($game_system.battle_end_me)
  27.     # 还原为战斗开始前的 BGM
  28.     $game_system.bgm_play($game_temp.map_bgm)
  29.     # 初始化 EXP、金钱、宝物
  30.     exp = 0
  31.     gold = 0
  32.     treasures = []
  33.     # 循环
  34.     for enemy in $game_troop.enemies
  35.       # 敌人不是隐藏状态的情况下
  36.       unless enemy.hidden
  37.         # 获得 EXP、增加金钱
  38.         exp += enemy.exp
  39.         gold += enemy.gold
  40.         # 出现宝物判定
  41.         if rand(100) < enemy.treasure_prob
  42.           if enemy.item_id > 0
  43.             treasures.push($data_items[enemy.item_id])
  44.           end
  45.           if enemy.weapon_id > 0
  46.             treasures.push($data_weapons[enemy.weapon_id])
  47.           end
  48.           if enemy.armor_id > 0
  49.             treasures.push($data_armors[enemy.armor_id])
  50.           end
  51.         end
  52.       end
  53.     end
  54.     # 限制宝物数为 6 个
  55.     treasures = treasures[0..5]
  56.     # 获得 EXP
  57.     for i in 0...$game_party.actors.size
  58.       actor = $game_party.actors[i]
  59.       if actor.cant_get_exp? == false
  60.          last_level = actor.level
  61.          #先判断角色是否存在等级限定
  62.       if $actorlevel[actor.id]!=nil
  63.         #执行有等级限定的步骤,不超过限定等级则加经验,超过限定等级就不加
  64.        actor.exp += exp   if actor.level<=$actorlevel[actor.id]  
  65.      else #执行角色没有设置等级限定的步骤
  66.           actor.exp += exp
  67.        end
  68.        if actor.level > last_level
  69.           @status_window.level_up(i)
  70.         end
  71.       end
  72.     end
  73.     # 获得金钱
  74.     $game_party.gain_gold(gold)
  75.     # 获得宝物
  76.     for item in treasures
  77.       case item
  78.       when RPG::Item
  79.         $game_party.gain_item(item.id, 1)
  80.       when RPG::Weapon
  81.         $game_party.gain_weapon(item.id, 1)
  82.       when RPG::Armor
  83.         $game_party.gain_armor(item.id, 1)
  84.       end
  85.     end
  86.     # 生成战斗结果窗口
  87.     @result_window = Window_BattleResult.new(exp, gold, treasures)
  88.     # 设置等待计数
  89.     @phase5_wait_count = 100
  90.   end
  91. end







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