赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 4 |
经验 | 0 |
最后登录 | 2024-3-23 |
在线时间 | 25 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 359
- 在线时间
- 25 小时
- 注册时间
- 2019-6-8
- 帖子
- 5
|
本帖最后由 23n1nbb 于 2021-1-29 09:54 编辑
我这里有一个方案。
- #获取“敌人等级”的正则,格式为[ELV lv],写在敌人备注里
- class Game_Enemy
- def enemy_level(id)
- $data_enemies[id].note.split(/[\r\n]+/).each { |line|
- if line =~ /\[ELV (\w+)\]/
- return ($1.nil?) ? nil : $1.to_i
- end}
- end
-
- end
- class Game_Actor
- LEVEL_DIF_NO_EXP_GAIN = 10 #与敌人的等级差大于这个数字时不能获得经验
- def gain_exp(exp)
- exptot = 0
- if exp
- if exp[1]
- exp.each {|exps| (@level >= exps[1] + LEVEL_DIF_NO_EXP_GAIN)? nil : exptot += exps[0]}
- else
- exptot = exp
- end
- end
- change_exp(self.exp + (exptot * final_exp_rate).to_i, true)
- end
- end
- class Game_Troop
-
- def exp_total
- r = []
- dead_members.each {|enemy|
- r.push([enemy.exp, enemy.enemy_level(enemy.enemy_id)])}
- end
- end
- module BattleManager
-
- def self.gain_exp
- $game_party.all_members.each do |actor|
- actor.gain_exp($game_troop.exp_total)
- end
- wait_for_message
- end
- def self.display_exp
- sum = 0
- $game_troop.exp_total.each {|obd| sum += obd[0]}
- if sum > 0
- text = sprintf(Vocab::ObtainExp, sum)
- $game_message.add('\.' + text)
- end
- end
- end
复制代码
学艺不精,写的代码兼容性较差。
格式是在敌人的备注栏里写[ELV xxx]。xxx就是你的“敌人等级”。
中间你要的等级差可以自己改。前面的正则如果你懂也可以改。
如果代码你也懂—— |
|