查看: 3244|回复: 9

[已经解决] 帮修改下获得经验脚本

[复制链接]
梦石
0
星屑
3030
在线时间
655 小时
注册时间
2012-2-13
回帖
151
发表于 2016-7-22 23:56:08 | 显示全部楼层 |阅读模式

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

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

×
帮我修改下Scene_Battle 2 148行,和Interpreter 6 182行
我想要的效果是:队伍中角色等级达到20级就无法获得经验值,当达到20级的角色战斗后无法获得经验,事件也增加不了经验,这是我想要的效果

我不知道怎么写判断

[pre lang="ruby"]#--------------------------------------------------------------------------
  # ● 增减 EXP
  #--------------------------------------------------------------------------
  def command_315
    # 获取操作值
    value = operate_value(@parameters[1], @parameters[2], @parameters[3])
    # 处理重复
    iterate_actor(@parameters[0]) do |actor|
      # 更改角色 EXP
      actor.exp += value
    end
    # 继续
    return true
  end[/pre]

[pre lang="ruby"]#--------------------------------------------------------------------------
  # ● 开始结束战斗回合
  #--------------------------------------------------------------------------
  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[/pre]

只要在着两段里增加判断应该就可以了,试了很多次都失败了,所以请求各位帮忙了

评分

参与人数 2星屑 +75 收起 理由
RyanBern + 35 手动认可奖励
英顺的马甲 + 40 虽然有些迷糊,但手动写脚本值得鼓励.

查看全部评分

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
回帖
3011
发表于 2016-7-23 01:44:58 | 显示全部楼层
本帖最后由 英顺的马甲 于 2016-7-23 02:41 编辑

一不小心就连贴了==
其实等级上线是能改的,不过不会被保存罢了,与其想着怎么限制经验倒不如把更改后的等级限制保存下来==
[pre lang="ruby"]$_flexible_final_lvl_actor = RPG::Actor unless $_flexible_final_lvl_actor
class RPG::Actor < $_flexible_final_lvl_actor
  def final_level=(lvl)
    super(lvl)
    if $game_actors
      $game_actors.final_levels[self.id] = lvl
      $game_actors[self.id].make_exp_list
    end
    return lvl
  end
end
class Game_Actors
  def final_levels
    return (@final_levels||={})
  end
end
trace_var :$game_actors do
  if $game_actors
    $game_actors.final_levels.each do |i, v|
      $data_actors.final_level = v
    end
  end
end[/pre]
[pre lang="ruby"]$data_actors[角色ID].final_level = 等级上限 # 这只是普通的改等级上限的方法[/pre]

点评

太谢谢你了~一直看着电影在等答案~t t  发表于 2016-7-23 02:51
好吧,是我疏忽了,Game_Actor会生成经验表==  发表于 2016-7-23 02:42
先存一个10级满级的存档,然后修改数据库20级,再读档进去再用脚本改上限还是没变....  发表于 2016-7-23 02:28
数据库等级10上限,进入游戏让角色满级,然后保存游戏,再进游戏用这个改上限,似乎还是改不了  发表于 2016-7-23 02:22
不好意思,不小心打成了缩写,应该是 $data_actors[角色编号].final_level = 等级上限  发表于 2016-7-23 02:19

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 触瞎

查看全部评分

本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到engshun@1ppl.me咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复

使用道具 举报

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
回帖
3011
发表于 2016-7-23 00:05:53 | 显示全部楼层
数据库里设置角色的最大等级不就行了么?==

点评

数据库里的等级上限是固定的,没办法游戏中途修改,所以我才用这个方法  发表于 2016-7-23 00:51
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到engshun@1ppl.me咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部