查看: 1823|回复: 1

[已经过期] 发现个随机生成敌群的脚本,但是不太会用

[复制链接]
梦石
0
星屑
2338
在线时间
275 小时
注册时间
2017-7-25
回帖
128
发表于 2017-9-25 22:15:33 | 显示全部楼层 |阅读模式

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

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

×
[pre lang="ruby"]#==============================================================================
# ★ RGSS3_ランダムトループ Ver1.1
#==============================================================================
=begin

这个是从某大大哪里拿来的随机遇敌脚本,不过我是横板战斗的,所以小改了敌人出现的位置,
作者:tomoaky
webサイト:ひきも記 (http://hikimoki.sakura.ne.jp/)

指定したトループの中身(出現エネミー)をランダムに変更します、
どんな敵が出現するか分からないおまけイベントバトルなどにどうぞ。

候補の設定が空の配列だった場合はすべてのエネミーが候補になります、
名前が空のエネミーは自動的に除外されます。

2012.01.07  Ver1.1
 ・複数のトループをランダム化できるようになりました
 ・最低出現数の設定を追加
 ・座標の計算式を変更

2011.12.15 Ver1.0
  公開

=end

#==============================================================================
# □ 設定項目
#==============================================================================
module TMRDTRP
  ENEMIES = {}      # この行はいじらない
  EXCLUDE = {}      # この行はいじらない
  MIN_ENEMY = {}    # この行はいじらない
  MAX_ENEMY = {}    # この行はいじらない
  
  # トループID31番の設定
  ENEMIES[31] = [2, 31, 32]     # 出現するエネミーの候補
  EXCLUDE[31] = []                                  # 除外するエネミー
  MIN_ENEMY[31] = 8                                 # 最低出現数
  MAX_ENEMY[31] = 8                                 # 最高出現数

  # トループID32番の設定
  ENEMIES[35] = []          # 出現するエネミーの候補(空なら全エネミーを候補に)
  EXCLUDE[35] = [29, 30]    # 除外するエネミー
  MIN_ENEMY[35] = 3         # 最低出現数
  MAX_ENEMY[35] = 6         # 最高出現数
  
end

#==============================================================================
# ■ Game_Troop
#==============================================================================
class Game_Troop < Game_Unit
  #--------------------------------------------------------------------------
  # ● セットアップ
  #     troop_id : 敵グループ ID
  #--------------------------------------------------------------------------
  alias tmrdtrp_game_troop_setup setup
  def setup(troop_id)
    if TMRDTRP::ENEMIES[troop_id]
      $data_troops[troop_id].members = []
      if TMRDTRP::ENEMIES[troop_id].empty?
        list = []
        (1...$data_enemies.size).each do |id|
          list[id - 1] = id unless $data_enemies[id].name == ""
        end
      else
        list = TMRDTRP::ENEMIES[troop_id].clone
      end
      list -= TMRDTRP::EXCLUDE[troop_id] if TMRDTRP::EXCLUDE[troop_id]
      max = TMRDTRP::MAX_ENEMY[troop_id]
      max = max ? [[max, 1].max, 8].min : 6
      min = TMRDTRP::MIN_ENEMY[troop_id]
      min = min ? [[min, 1].max, max].min : 1
      n = rand(rand(max - min + 1) + 1) + min
      (0...n).each do |i|
        member = RPG::Troop::Member.new
        member.enemy_id = list[rand(list.size)]
        space = [rand(480 / n), 64].max
        member.x = ( i * space + 272 - (n - 1) * space / 2 + rand(32) - 16 ) / 3 +50
        member.y = 120 + ( rand(64) + (i % 2 * 24) ) * 1.8
        $data_troops[troop_id].members = member
      end
    end
    tmrdtrp_game_troop_setup(troop_id)
  end
end[/pre]


功能看起来很不错,但是没看懂该怎么设置数据库(还是根本不用),总之用起来一个劲报错
梦石
0
星屑
34460
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2017-9-27 09:40:16 | 显示全部楼层
  1. =begin
  2. #==============================================================================
  3.   ★ 敌人队伍随机组合 ★  <VA>                       Author:芯☆淡茹水
  4. #==============================================================================
  5. ★ 说明:

  6. 1,随机的设置:数据库 -> 敌人队伍 ,敌群名字后面加上星号(★),接着写上该队伍
  7.               可随机的最大敌人数量。
  8.                            
  9.               未写最大数量的敌人队伍,默认为不随机(比如BOSS战)。

  10. 2,敌人随机概要:随机 最大敌人数量 以内的数。敌人队伍里添加的第一个敌人必然出现在
  11.                 队伍里,但数量随机(方便明雷怪的设置)。往后添加的怪会随机出现
  12.                 在队伍,数量也随机。
  13.                
  14.                 一个敌人队伍想要出现什么样的怪,只需要在设置敌人队伍时想出现的怪每个
  15.                 添加一个进去即可,数量会随机(想要某个怪的出现几率高一点,也可以
  16.                 多添加几个进去)。
  17.                            
  18.                 设置敌人队伍时,怪的位置也不需要拖到指定位置,脚本会随机定位置。
  19. =end
  20. #==============================================================================
  21. #★ 设置:
  22. module X☆R
  23.   #敌人队伍整体画面X坐标。
  24.   Start_point_x = 120
  25.   #敌人队伍整体画面Y坐标。
  26.   Start_point_y = 160
  27.   #敌人之间的X方向间距。
  28.   GAP_x = 110
  29.   #敌人之间的Y方向间距。
  30.   GAP_y = 68
  31.   #敌人排列时的左右偏差(正数:往右偏;负数:往左偏;0:垂直)。
  32.   Cos_add = -30
  33. end
  34. #==============================================================================
  35. class Game_Enemy < Game_Battler
  36.   #--------------------------------------------------------------------------
  37.   # ● 获取战斗画面 Z 坐标
  38.   #--------------------------------------------------------------------------
  39.   def screen_z
  40.     return @screen_y
  41.   end
  42. end
  43. #==============================================================================
  44. class Game_Troop < Game_Unit
  45.   #--------------------------------------------------------------------------
  46.   def need_random
  47.     return (troop.name.split(/★/)[1] != nil)
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   def max_member
  51.     return [[troop.name.split(/★/)[1].to_i,1].max,8].min
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   def rand_num
  55.     return rand(max_member)+1
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   def set_index
  59.     index = @place_data[rand(@place_data.size)]
  60.     @place_data.delete(index)
  61.     return index
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   def set_coordinate(enemy, index)
  65.     enemy.screen_x = index % 2 * X☆R::GAP_x + X☆R::Start_point_x
  66.     enemy.screen_x += index / 2 * X☆R::Cos_add
  67.     enemy.screen_y = index / 2 * X☆R::GAP_y + X☆R::Start_point_y
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   alias xr_rt_old_setup setup
  71.   def setup(troop_id)
  72.     @troop_id = troop_id
  73.     need_random ? random_troop(troop_id) : xr_rt_old_setup(troop_id)
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   def random_troop(troop_id)
  77.     clear
  78.     @troop_id = troop_id
  79.     @enemies = []
  80.     @place_data = [0,1,2,3,4,5,6,7]
  81.     rand_num.times do |i|
  82.       num = i == 0 ? 0 : rand(troop.members.size)
  83.       enemy = Game_Enemy.new(@enemies.size, troop.members[num].enemy_id)
  84.       enemy.hide if troop.members[num].hidden
  85.       set_coordinate(enemy, set_index)
  86.       @enemies << enemy
  87.     end
  88.     init_screen_tone
  89.     make_unique_names
  90.   end
  91. end
  92. #==============================================================================
复制代码
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部