查看: 2603|回复: 3

[已经过期] 再次求助脚本问题……

[复制链接]
梦石
0
星屑
2957
在线时间
942 小时
注册时间
2009-1-4
回帖
137
发表于 2016-1-18 20:13:16 | 显示全部楼层 |阅读模式

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

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

×
我找人帮我写了个经验惩罚脚本
具体效果为:当某个角色超过指定等级 就无法获得经验
[pre lang="ruby"]     # 获得 EXP
    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<=$game_variables[35]
        if actor.level > last_level
          @status_window.level_up(i)
        end
      end
    end
[/pre]
脚本如上 但是没有效果 求助原因

咩

梦石
0
星屑
1640
在线时间
381 小时
注册时间
2010-10-9
回帖
286

开拓者

发表于 2016-1-19 10:43:23 | 显示全部楼层
在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号表示限定等级

点评

还是无效,不过谢谢您提供的脚本  发表于 2016-1-19 15:21
回复

使用道具 举报

梦石
0
星屑
3293
在线时间
1463 小时
注册时间
2014-8-9
回帖
308
发表于 2016-1-19 15:45:06 | 显示全部楼层
我看你还是发工程吧
回复

使用道具 举报

梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-1-20 17:02:30 | 显示全部楼层
本帖最后由 夜狠简单 于 2016-1-21 00:37 编辑

应该是这个意思
1.png



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

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


[pre lang="ruby"]# 插在Main前面使用
class Scene_Battle
  #用数组给角色指定等级上限,只是一个预设定。
  if  $actorlevel ==nil
  $actorlevel=[]
  end

if $data_actors !=nil
  for i in 1...$data_actors.size
  #$actorlevel[1] = 10一号角色等级超过10不增加经验
  #$actorlevel[2] = 20二号角色等级超过20不增加经验
  #$actorlevel[7] = 30七号角色等级超过30不增加经验
  $actorlevel =99 #默认所有角色等级超过99级不增加经验
  end
end


#比如给五号角色增加等级限制50级 就写  $actorlevel[5]=50
#如果要更改二号角色等级超过30级就不增加经验,也可以直接通过
#事件指令-脚本 $actorlevel[2] = 30
  
   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
    for i in 0...$game_party.actors.size
      actor = $game_party.actors
      if actor.cant_get_exp? == false
         last_level = actor.level
         #先判断角色是否存在等级限定
      if $actorlevel[actor.id]!=nil
        #执行有等级限定的步骤,不超过限定等级则加经验,超过限定等级就不加
       actor.exp += exp   if actor.level<=$actorlevel[actor.id]  
     else #执行角色没有设置等级限定的步骤
          actor.exp += exp
       end
       if actor.level > last_level
          @status_window.level_up(i)
        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
end[/pre]

点评

(⊙o⊙)哦,那我一会回去弄一个范例你  发表于 2016-1-20 23:20
我想实现的是这个等级限制是可以变化的……用的就是你的第一个脚本 但是没用  发表于 2016-1-20 23:03
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部