Project1
标题:
如何根据等级判定打怪获得的经验
[打印本页]
作者:
qq595006041
时间:
2020-8-26 11:33
标题:
如何根据等级判定打怪获得的经验
请问一下,怎么样才能做出根据等级判定获得的经验,比如如果高出怪物10级,就不能打这个怪获得经验了。就是高级打低级怪获得不了经验
作者:
23n1nbb
时间:
2020-8-26 11:33
本帖最后由 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就是你的“敌人等级”。
中间你要的等级差可以自己改。前面的正则如果你懂也可以改。
如果代码你也懂——
作者:
alexncf125
时间:
2020-8-26 11:53
预设怪物是没有等级的说
作者:
23n1nbb
时间:
2021-1-29 09:55
草,这里居然还有回答按钮的吗
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1