赞 | 0 |
VIP | 25 |
好人卡 | 0 |
积分 | 1 |
经验 | 126953 |
最后登录 | 2020-5-5 |
在线时间 | 39 小时 |
Lv1.梦旅人 粉蜘蛛秀秀
- 梦石
- 0
- 星屑
- 76
- 在线时间
- 39 小时
- 注册时间
- 2007-6-4
- 帖子
- 384
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
自制敌人数据库文件 + 敌人等级随我方变化
作者:秀秀
由于原敌人数据库没有等级和等级能力变化曲线
所以自己制作了个敌人数据库
里面只定义了等级和能力变化曲线
如果不满足需求,比如还需要定义敌人经验啊 经验曲线 职业 等等
自行添加即可
由于公开了 数据库结构 制作 读取 全过程
是需要比较坚实的基础才能理解
所以小设了一点点vip{/wx}
也希望留给大家研究
最后说下。。。此脚本还赠送了 敌人等级随我方变化
ms 这个系统比较针对某口袋妖怪。。{/cy}
请别见怪...其实自己闲的无聊 才想写{/cy}
有bug请留言~
具体用法见脚本开始的说明
------------下载范例--------------------------------------------------------
http://rpg.blue/upload_program/f ... 变化_95652411.rar
----------------------------------------------------------------------------
脚本部分
=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
要获取10号敌人35级时候的str
$enemy_data[10].str_list[35]
以下数据使用方法相同 不说了
hp_list
sp_list
dex_list
agi_list
int_list
4.赠送敌人随我方平均等级变化(默认为true)
等级浮动范围见脚本开始的常量 LEVEL_RANGE
开始的常量 Enemy_data.with_player_level(true) 则为变化
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 = (Pm_Enemy.new)
for j in 1..(MAX_LEVEL)
datas.hp_list[j] = (
$data_enemies.maxhp * (HP_RATE) ** j).to_i
end
for j in 1..(MAX_LEVEL)
datas.sp_list[j] = (
$data_enemies.maxsp * (SP_RATE) ** j).to_i
end
for j in 1..(MAX_LEVEL)
datas.str_list[j] = (
$data_enemies.str * (STR_RATE) ** j).to_i
end
for j in 1..(MAX_LEVEL)
datas.dex_list[j] = (
$data_enemies.dex * (DEX_RATE) ** j).to_i
end
for j in 1..(MAX_LEVEL)
datas.agi_list[j] = (
$data_enemies.agi * (AGI_RATE) ** j).to_i
end
for j in 1..(MAX_LEVEL)
datas.int_list[j] = (
$data_enemies.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 = 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")
|
|