设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 7374|回复: 23
打印 上一主题 下一主题

自制敌人数据库文件+敌人等级随我方变化 [发布预备]

 关闭 [复制链接]

Lv1.梦旅人

粉蜘蛛秀秀

梦石
0
星屑
76
在线时间
39 小时
注册时间
2007-6-4
帖子
384

贵宾第1届Title华丽大赛新人奖

跳转到指定楼层
1
发表于 2008-7-5 09:56:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

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")
http://rpg.blue/upload_program/files/hide_xiu_96911465.png

Lv1.梦旅人

梦石
0
星屑
62
在线时间
1 小时
注册时间
2008-1-4
帖子
260
2
发表于 2008-7-5 10:34:48 | 只看该作者
脚本...学习中啊./..
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

喵,小柯的宠物

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-4-6
帖子
1277
3
发表于 2008-7-5 17:05:13 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

小真の猫耳娘

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-1-27
帖子
440
4
发表于 2008-7-5 17:35:50 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

5
发表于 2008-7-5 19:12:21 | 只看该作者
其实这和口袋没多大关系{/gg}
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

6
发表于 2008-7-5 20:16:09 | 只看该作者
话说有个类似的……?
http://rpg.blue/viewthread.php?tid=75134&ntime=2008%2D7%2D5+12%3A15%3A33
MS也是敌人的等级和质量设置。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

粉蜘蛛秀秀

梦石
0
星屑
76
在线时间
39 小时
注册时间
2007-6-4
帖子
384

贵宾第1届Title华丽大赛新人奖

7
 楼主| 发表于 2008-7-5 21:15:53 | 只看该作者
话说有个类似的……?
http://rpg.blue/viewthread.php?tid=75134&ntime=2008%2D7%2D5+12%3A15%3A33
MS也是敌人的等级和质量设置


不一样的~呵呵 这个着重是教你如和制作数据库文件
读取部分可能有相似 不过是从自己做作的数据库中文件读取
那个是直接在默认类里面定义变量的
用这个可以做出扩展{/wx}
http://rpg.blue/upload_program/files/hide_xiu_96911465.png
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

8
发表于 2008-7-5 21:38:54 | 只看该作者
口袋妖怪的等级不会随我方变。
还有,自制数据库可不是这样的哦 {/hx}
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

粉蜘蛛秀秀

梦石
0
星屑
76
在线时间
39 小时
注册时间
2007-6-4
帖子
384

贵宾第1届Title华丽大赛新人奖

9
 楼主| 发表于 2008-7-6 00:11:29 | 只看该作者
口袋妖怪的等级不会随我方变。
还有,自制数据库可不是这样的哦

自制数据库啊。。。没有啥规定的吧
只要写入就可以了
RM默认有编辑器保存功能 不过写入的是hash
结构 ID=>对象 的集合
我这个也是hash
除了没有Zlib压缩(默认好象有压缩,8记得了{/cy})。。。和默认没啥区别
8过觉得没啥必要压缩。。。{/cy}
还是解除限制吧~{/cy}个人也觉得没啥必要了{/cy}

口袋妖怪虽然不是跟我方等级变化 但至少也是有等级的
也能用这个来方便地控制地敌人等级

yangff大人觉得哪里不对 或者有更好的思路 不妨提示下
我一定学习{/cy}
http://rpg.blue/upload_program/files/hide_xiu_96911465.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

WG后援团
此人已死 有事烧纸

梦石
0
星屑
69
在线时间
12 小时
注册时间
2008-1-12
帖子
1829

贵宾

10
发表于 2008-7-6 01:24:19 | 只看该作者
写出来拉?但是还是不是我想要的东西。话说明天我就回家了,后天休息一天,大后天就开始实践了。没时间的说,再说这个波动不是我要的那种波动,去仔细的玩通任何版本的口袋妖怪你就懂了
郑重声明:
1.本人是文盲,以上内容文字均不认识,也看不懂是什么意思。
2.此事与本人一点关系都没有,只是本着“看贴(虽然看不懂)回贴,利人利己的中华民族优秀传统美德”,顺便赚1个RP。
3. 本人在此留言均为网络上复制,并不代表本人同意、支持或者反对楼主观点。  
4. 如本人留言违反国家有关法律,请网络管理员及时删除本人跟贴。  
5. 因删贴不及时所产生的任何法律(包括宪法,民法,刑法,书法,公检法,基本法,劳动法,婚姻法,输入法,没办法,国际法,今日说法,吸星大-法,与台湾关系法及文中涉及或可能涉及以及未涉及之法,各地治安管理条例)纠纷或责任本人概不负责。
6. 本人谢绝任何跨省追捕行为,如有需要请直接联系楼主、原作者以及网络管理员或法人代表。  
7. 此声明最终解释权归本人所有。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 14:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表