66RPG
本站首页
制作教程
文章作品
制作素材
原创游戏区
周边下载
本站论坛
 ※ 站内搜索
栏 目:
方 式:
关键词:
  
 ※ 教程分类
 RMXP 图文教学
 初级教学
 中级教学
 高级教学
 个人创意与研究
 RMXP 录像教学
 新人入门录像
 零散录像教学
 商业素材使用录像 ★
 周边教学
 美工 与 音乐
 RMXP 脚本发布
 游戏系统修改
 地图效果类
 战斗系统相关
 全新系统类
 API与高难度类
 RMVX 制作教学
 RMVX 初级教学
 RMVX 中级教程
 RMVX 高级教程
 RMVX 综合制作展
 ※ 无图目录 (按点击量横排序)


-- 66RPG全内容文字目录 --


 ※ 近期特色教学
自制敌人数据库文件 + 敌人等级随我方变化 ( 66RPG, RPG MAKER XP教程 )
 本站首页→制作教程→游戏系统修改

自制敌人数据库文件 + 敌人等级随我方变化


教程作者:秀秀
首发网址:点此进入本教学的原始帖
适宜用户:RMXP用户
技术通用度:★★★★★
技术应用复杂度:50 (满分150分)
学习的理解难度:70 (满分150分)

 作者的话:

由于原敌人数据库没有等级和等级能力变化曲线
所以自己制作了个敌人数据库
里面只定义了等级和能力变化曲线
如果不满足需求,比如还需要定义敌人经验啊 经验曲线 职业 等等
自行添加即可

 教学正文:

------------下载范例---------------------------------------------------------------------------------------------------
http://bbs.66rpg.com/upload_program/files/自制敌人数据库 + 敌人等级随我方变化_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[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")



 



关键字:

发布日期:2008-8-6 23:12:06 点击量:1


 上一篇:单人负重系统V1.16
 下一篇:没有下一条记录
关于我们
支援本站
友情连接
站点目录
站内搜索



WWW.66RPG.COM,2005-2013 ^o^

备案序号:京ICP备05035415号



 
Web www.66rpg.com bbs.66rpg.com