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

Project1

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

[已经解决] 新手请教

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2008-6-5
帖子
312
跳转到指定楼层
1
发表于 2009-7-27 17:20:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我使用了下面的脚本,打开“敌人随玩家等级变化”结果好难杀,使用请教一下,能不能修改成比玩家等级少5级的敌人??

  1. =begin

  2.   自制敌人数据库 + 敌人等级随我方变化

  3.   作者:秀秀

  4.   用法:1.数据库设置
  5.           见开始的几个常量
  6.           HP_RATE    表示敌人随等级HP(以下类推)增长倍率
  7.           SP_RATE    公式 maxhp * (HP_RATE) ** level
  8.           STR_RATE   可以自行找到脚本的地方修改公式
  9.           DEX_RATE
  10.           AGI_RATE
  11.           INT_RATE
  12.   
  13.         2.数据库制作:
  14.           (默认已经做好了,要自己做只需要在第一步设置好,
  15.            再制作一遍会覆盖掉,或者删除掉已经做好的文件)
  16.           使用函数 Enemy_data.create_data 来制作
  17.           会产生一个目录SELF_DATA
  18.           里面有个Enemy_data.rxdata文件
  19.           运行时候检测到这个文件会自动读取到
  20.           全局变量$enemy_data
  21.         
  22.         3.数据库使用
  23.           比如要设置1号敌人的等级为30
  24.           $game_system.enemies_level.levels[1] = 30
  25.          
  26.         4.赠送敌人随我方平均等级变化(默认为true)
  27.           等级浮动范围见脚本开始的常量 LEVEL_RANGE
  28.           开始的常量  Enemy_data.with_player_level(false) 则为变化
  29.                       Enemy_data.with_player_level(false) 则不变化
  30.           不随玩家等级变化的话 游戏中需完家自己改变敌人等级 来变化
  31.           改变方法见上 = =
  32. =end


  33.                         
  34. module Enemy_data
  35.   
  36.   # 等级变化范围 (-4..4)
  37.   LEVEL_RANGE = rand(5) - rand(5)
  38.   
  39.   # 敌人随等级能力增长倍率
  40.   HP_RATE = 1.1
  41.   SP_RATE = 1.1
  42.   STR_RATE = 1.1
  43.   DEX_RATE = 1.1
  44.   AGI_RATE = 1.1
  45.   INT_RATE = 1.1
  46.   
  47.   #最大等级
  48.   MAX_LEVEL = 99
  49.   
  50.   @@with_player_level = true
  51.   
  52.   def self.with_player_level(tf)
  53.     @@with_player_level = tf
  54.     return
  55.   end
  56.   
  57.   def self.return_wpl
  58.     return @@with_player_level
  59.   end  
  60.   
  61.   def self.create_data
  62.     Dir.mkdir("SELF_DATA") unless File.exists?("SELF_DATA")
  63.     File.open("SELF_DATA/Enemy_data.rxdata","wb")
  64.     datas = {}
  65.     for i in 1...$data_enemies.size
  66.       datas[i] = (Pm_Enemy.new)
  67.       for j in 1..(MAX_LEVEL)
  68.         datas[i].hp_list[j] = (
  69.         $data_enemies[i].maxhp * (HP_RATE) ** j).to_i
  70.       end
  71.       for j in 1..(MAX_LEVEL)
  72.         datas[i].sp_list[j] = (
  73.         $data_enemies[i].maxsp * (SP_RATE) ** j).to_i
  74.       end
  75.       for j in 1..(MAX_LEVEL)
  76.         datas[i].str_list[j] = (
  77.         $data_enemies[i].str * (STR_RATE) ** j).to_i
  78.       end
  79.       for j in 1..(MAX_LEVEL)
  80.         datas[i].dex_list[j] = (
  81.         $data_enemies[i].dex * (DEX_RATE) ** j).to_i
  82.       end
  83.       for j in 1..(MAX_LEVEL)
  84.         datas[i].agi_list[j] = (
  85.         $data_enemies[i].agi * (AGI_RATE) ** j).to_i
  86.       end
  87.       for j in 1..(MAX_LEVEL)
  88.         datas[i].int_list[j] = (
  89.         $data_enemies[i].int * (INT_RATE) ** j).to_i
  90.       end
  91.     end
  92.     save_data(datas,"SELF_DATA/Enemy_data.rxdata")
  93.     p "数据库制作成功"
  94.     exit
  95.   end  

  96.   
  97.   class Pm_Enemy
  98.     attr_accessor     :hp_list
  99.     attr_accessor     :sp_list
  100.     attr_accessor     :str_list
  101.     attr_accessor     :dex_list
  102.     attr_accessor     :agi_list
  103.     attr_accessor     :int_list
  104.     attr_accessor     :level
  105.     def initialize
  106.       @hp_list = {}
  107.       @sp_list = {}
  108.       @str_list = {}
  109.       @dex_list = {}
  110.       @agi_list = {}
  111.       @int_list = {}
  112.       @level = 1
  113.     end  
  114.   end  
  115. end  

  116. class Game_Party
  117.   #--------------------------------------------------------------------------
  118.   # ● 获取平均等级
  119.   #--------------------------------------------------------------------------
  120.   def avg_level
  121.     # 同伴人数为 0 的情况下
  122.     if @actors.size == 0
  123.       return 0
  124.     end
  125.     # 初始化本地变量 level
  126.     level = 0
  127.     # 求得同伴的最大等级
  128.     for actor in @actors
  129.       level += actor.level
  130.     end
  131.     return Integer(level/@actors.size)
  132.   end
  133. end


  134. class Enemies_Level
  135.   attr_accessor   :levels
  136.   def initialize
  137.     @levels = {}
  138.     create_enemy_level
  139.   end
  140.   def create_enemy_level
  141.      for i in 1...$data_enemies.size
  142.        @levels[i] = 1
  143.      end  
  144.   end  
  145. end  

  146.               
  147. class Game_System
  148.   attr_accessor     :enemies_level
  149.   alias oir_initialize initialize                     
  150.   def initialize                     
  151.     oir_initialize           
  152.     @enemies_level = Enemies_Level.new
  153.   end                     
  154. end

  155. class Game_Enemy < Game_Battler

  156.   def level=(level)
  157.     @level = [[level, Enemy_data::MAX_LEVEL].min, 1].max
  158.   end

  159.   def base_maxhp
  160.     return $enemy_data[@enemy_id].hp_list[
  161.           Enemy_data.return_wpl ? (Enemy_data::LEVEL_RANGE +
  162.           $game_party.avg_level) : (
  163.           $game_system.enemies_level.levels[@enemy_id])]
  164.   end

  165.   def base_maxsp
  166.     return $enemy_data[id].sp_list[
  167.            Enemy_data.return_wpl ? (Enemy_data::LEVEL_RANGE +
  168.            $game_party.avg_level) : (
  169.            $game_system.enemies_level.levels[@enemy_id])]
  170.   end

  171.   def base_str
  172.     return $enemy_data[id].str_list[
  173.            Enemy_data.return_wpl ? (Enemy_data::LEVEL_RANGE +
  174.            $game_party.avg_level) : (
  175.            $game_system.enemies_level.levels[@enemy_id])]
  176.   end

  177.   def base_dex
  178.     return $enemy_data[id].dex_list[
  179.            Enemy_data.return_wpl ? (Enemy_data::LEVEL_RANGE +
  180.            $game_party.avg_level) : (
  181.            $game_system.enemies_level.levels[@enemy_id])]
  182.   end

  183.   def base_agi
  184.     return $enemy_data[id].agi_list[
  185.            Enemy_data.return_wpl ? (Enemy_data::LEVEL_RANGE +
  186.            $game_party.avg_level) : (
  187.            $game_system.enemies_level.levels[@enemy_id])]
  188.   end

  189.   def base_int
  190.     return $enemy_data[id].int_list[
  191.            Enemy_data.return_wpl ? (Enemy_data::LEVEL_RANGE +
  192.            $game_party.avg_level) : (
  193.            $game_system.enemies_level.levels[@enemy_id])]
  194.   end
  195. end

  196. $enemy_data = load_data("SELF_DATA/Enemy_data.rxdata") if File.exists?(
  197.                         "SELF_DATA/Enemy_data.rxdata")
复制代码

Lv1.梦旅人

梦石
0
星屑
54
在线时间
36 小时
注册时间
2006-6-13
帖子
237
2
发表于 2009-7-27 18:42:04 | 只看该作者
话说~~~你违反了版规~~~~
目前任务:学习
目前进度:没有
最新说明:MUD嘛~~自由度~

原来泥巴更容易挖坑
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
54
在线时间
36 小时
注册时间
2006-6-13
帖子
237
3
发表于 2009-7-27 18:51:14 | 只看该作者
改一下
# 等级变化范围 (-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

试试看


等级减小5级的话
# 等级变化范围 (-9..-1)

  LEVEL_RANGE = 0 - rand(9)



试试看行不行?
目前任务:学习
目前进度:没有
最新说明:MUD嘛~~自由度~

原来泥巴更容易挖坑
回复 支持 反对

使用道具 举报

Lv1.梦旅人

~琉璃の雪~<

梦石
0
星屑
49
在线时间
36 小时
注册时间
2008-11-6
帖子
3678
4
发表于 2009-7-27 18:51:16 | 只看该作者
# 敌人随等级能力增长倍率
  HP_RATE = 1.1
  SP_RATE = 1.1
  STR_RATE = 1.1
  DEX_RATE = 1.1
  AGI_RATE = 1.1
  INT_RATE = 1.1
也未必需要改等级,只要降低上面的倍率就行了.
~现在开始自绘头像~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-14 16:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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