Project1
标题:
"敌人等级随我方变化"怎样使获得经验也跟着变化?
[打印本页]
作者:
zhli667
时间:
2009-7-21 13:47
标题:
"敌人等级随我方变化"怎样使获得经验也跟着变化?
本帖最后由 zhli667 于 2009-7-21 13:48 编辑
柳柳的脚本"自制敌人数据库 + 敌人等级随我方变化"脚本非常好用,可是敌人等级高了;也更难打了.经验确一点也没多......还是1级怪的3~5个经验.......:funk:
多郁闷吖~~~~ 谁帮帮忙,让获得的经验也随等级变化.......
"自制敌人数据库 + 敌人等级随我方变化"脚本============
=begin
自制敌人数据库 + 敌人等级随我方变化
作者:秀秀
用法:1.数据库设置
见开始的几个常量
HP_RATE 表示敌人随等级HP(以下类推)增长倍率
SP_RATE 公式 maxhp * (HP_RATE) ** level
STR_RATE 可以自行找到脚本的地方修改公式
DEX_RATE
AGI_RATE
INT_RATE
2.数据库制作:
(默认已经做好了,要自己做只需要在第一步设置好,
再制作一遍会覆盖掉,或者删除掉已经做好的文件)
使用函数 Enemy_data.create_data 来制作
会产生一个目录SELF_DATA
里面有个Enemy_data.rxdata文件
运行时候检测到这个文件会自动读取到
全局变量$enemy_data
3.数据库使用
比如要设置1号敌人的等级为30
$game_system.enemies_level.levels[1] = 30
4.赠送敌人随我方平均等级变化(默认为true)
等级浮动范围见脚本开始的常量 LEVEL_RANGE
开始的常量 Enemy_data.with_player_level(false) 则为变化
Enemy_data.with_player_level(false) 则不变化
不随玩家等级变化的话 游戏中需完家自己改变敌人等级 来变化
改变方法见上 = =
=end
module Enemy_data
# 等级变化范围 (-4..4)
LEVEL_RANGE = rand(5) - rand(5)
# 敌人随等级能力增长倍率
HP_RATE = 1.1
SP_RATE = 1.1
STR_RATE = 1.1
DEX_RATE = 1.1
AGI_RATE = 1.1
INT_RATE = 1.1
#最大等级
MAX_LEVEL = 99
@@with_player_level = true
def self.with_player_level(tf)
@@with_player_level = tf
return
end
def self.return_wpl
return @@with_player_level
end
def self.create_data
Dir.mkdir("SELF_DATA") unless File.exists?("SELF_DATA")
File.open("SELF_DATA/Enemy_data.rxdata","wb")
datas = {}
for i in 1...$data_enemies.size
datas[i] = (Pm_Enemy.new)
for j in 1..(MAX_LEVEL)
datas[i].hp_list[j] = (
$data_enemies[i].maxhp * (HP_RATE) ** j).to_i
end
for j in 1..(MAX_LEVEL)
datas[i].sp_list[j] = (
$data_enemies[i].maxsp * (SP_RATE) ** j).to_i
end
for j in 1..(MAX_LEVEL)
datas[i].str_list[j] = (
$data_enemies[i].str * (STR_RATE) ** j).to_i
end
for j in 1..(MAX_LEVEL)
datas[i].dex_list[j] = (
$data_enemies[i].dex * (DEX_RATE) ** j).to_i
end
for j in 1..(MAX_LEVEL)
datas[i].agi_list[j] = (
$data_enemies[i].agi * (AGI_RATE) ** j).to_i
end
for j in 1..(MAX_LEVEL)
datas[i].int_list[j] = (
$data_enemies[i].int * (INT_RATE) ** j).to_i
end
end
save_data(datas,"SELF_DATA/Enemy_data.rxdata")
p "数据库制作成功"
exit
end
class Pm_Enemy
attr_accessor :hp_list
attr_accessor :sp_list
attr_accessor :str_list
attr_accessor :dex_list
attr_accessor :agi_list
attr_accessor :int_list
attr_accessor :level
def initialize
@hp_list = {}
@sp_list = {}
@str_list = {}
@dex_list = {}
@agi_list = {}
@int_list = {}
@level = 1
end
end
end
class Game_Party
#--------------------------------------------------------------------------
# ● 获取平均等级
#--------------------------------------------------------------------------
def avg_level
# 同伴人数为 0 的情况下
if @actors.size == 0
return 0
end
# 初始化本地变量 level
level = 0
# 求得同伴的最大等级
for actor in @actors
level += actor.level
end
return Integer(level/@actors.size)
end
end
class Enemies_Level
attr_accessor :levels
def initialize
@levels = {}
create_enemy_level
end
def create_enemy_level
for i in 1...$data_enemies.size
@levels[i] = 1
end
end
end
class Game_System
attr_accessor :enemies_level
alias oir_initialize initialize
def initialize
oir_initialize
@enemies_level = Enemies_Level.new
end
end
class Game_Enemy < Game_Battler
def level=(level)
@level = [[level, Enemy_data::MAX_LEVEL].min, 1].max
end
def base_maxhp
return $enemy_data[@enemy_id].hp_list[
Enemy_data.return_wpl ? (Enemy_data::LEVEL_RANGE +
$game_party.avg_level) : (
$game_system.enemies_level.levels[@enemy_id])]
end
def base_maxsp
return $enemy_data[id].sp_list[
Enemy_data.return_wpl ? (Enemy_data::LEVEL_RANGE +
$game_party.avg_level) : (
$game_system.enemies_level.levels[@enemy_id])]
end
def base_str
return $enemy_data[id].str_list[
Enemy_data.return_wpl ? (Enemy_data::LEVEL_RANGE +
$game_party.avg_level) : (
$game_system.enemies_level.levels[@enemy_id])]
end
def base_dex
return $enemy_data[id].dex_list[
Enemy_data.return_wpl ? (Enemy_data::LEVEL_RANGE +
$game_party.avg_level) : (
$game_system.enemies_level.levels[@enemy_id])]
end
def base_agi
return $enemy_data[id].agi_list[
Enemy_data.return_wpl ? (Enemy_data::LEVEL_RANGE +
$game_party.avg_level) : (
$game_system.enemies_level.levels[@enemy_id])]
end
def base_int
return $enemy_data[id].int_list[
Enemy_data.return_wpl ? (Enemy_data::LEVEL_RANGE +
$game_party.avg_level) : (
$game_system.enemies_level.levels[@enemy_id])]
end
end
$enemy_data = load_data("SELF_DATA/Enemy_data.rxdata") if File.exists?(
"SELF_DATA/Enemy_data.rxdata")
复制代码
作者:
zhli667
时间:
2009-7-21 18:05
:sleepy::sleepy::sleepy::sleepy::sleepy::sleepy:
作者:
632808263
时间:
2009-10-26 02:03
不懂
作者:
shange
时间:
2009-10-26 05:47
提示:
作者被禁止或删除 内容自动屏蔽
作者:
a827594998
时间:
2010-7-9 10:16
你去请教柳柳不就好了吗
作者:
x2288809
时间:
2010-7-11 17:39
同样的困扰,帮你顶一个!
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1