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

Project1

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

[已经过期] 自动设置敌人队伍

[复制链接]

Lv1.梦旅人

梦石
0
星屑
77
在线时间
692 小时
注册时间
2011-10-20
帖子
907
跳转到指定楼层
1
 楼主| 发表于 2013-2-2 12:56:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
记得以前翻出过VX的自动设置敌人队伍的脚本
把队伍命名为“X~X类,X~X只”的
现在想用突然发现找不到了
求脚本地址……

Lv1.梦旅人

梦石
0
星屑
38
在线时间
1165 小时
注册时间
2012-3-16
帖子
5336
2
发表于 2013-2-3 20:48:24 | 只看该作者

抓住云雀~




【随机遇敌系统】
  1. #==============================================================================
  2. # vx新遇敌系统 by 沉影不器
  3. # protosssonny修改版
  4. # -----------------------------------------------------------------------------
  5. # 功能描述:
  6. #   根据角色队伍人数决定敌人数
  7. #   在[数据库-敌人队伍]中增加多个不同的敌人;遇敌中,敌人将随机抽取,并自动排列
  8. #   明雷指定敌人ID: 明雷遇敌时,允许指定某个敌人必出现
  9. # -----------------------------------------------------------------------------
  10. # 目前大概是这样,不同敌人有不同出现率(这点还没写 - -!).
  11. # 周末之前没时间,先放出这个粗糙工程,欢迎找bug,礼拜天早上查收意见
  12. #==============================================================================
  13. # ■ Game_Temp
  14. #==============================================================================
  15. class Game_Temp
  16.   #--------------------------------------------------------------------------
  17.   # ● 定义实例变量
  18.   #--------------------------------------------------------------------------
  19.   attr_accessor :enemy_id                 # 指定敌人 ID
  20.   #--------------------------------------------------------------------------
  21.   # ● 初始化对象
  22.   #--------------------------------------------------------------------------
  23.   alias ini initialize
  24.   def initialize
  25.     ini
  26.     # 初始化指定敌人 ID
  27.     @enemy_id = 0
  28.   end
  29. end

  30. #==============================================================================
  31. # ■ Game_Interpreter
  32. #==============================================================================
  33. class Game_Interpreter
  34.   #--------------------------------------------------------------------------
  35.   # ● 战斗处理
  36.   #--------------------------------------------------------------------------
  37.   def command_301
  38.     return true if $game_temp.in_battle
  39.     if @params[0] == 0                      # 直接指定
  40.       troop_id = @params[1]
  41.     else                                    # 使用变量指定
  42.       troop_id = $game_variables[@params[1]]
  43.     end
  44.     if $data_troops[troop_id] != nil
  45.       # 代入指定敌人 ID
  46.       $game_troop.setup(troop_id, $game_temp.enemy_id)
  47.       $game_troop.can_escape = @params[2]
  48.       $game_troop.can_lose = @params[3]
  49.       $game_temp.battle_proc = Proc.new { |n| @branch[@indent] = n }
  50.       $game_temp.next_scene = "battle"
  51.     end
  52.     @index += 1
  53.     return false
  54.   end
  55. end

  56. #==============================================================================
  57. # ■ Scene_Battle
  58. #==============================================================================
  59. class Scene_Battle < Scene_Base
  60.   #--------------------------------------------------------------------------
  61.   # ● 结束处理
  62.   #--------------------------------------------------------------------------
  63.   def terminate
  64.     super
  65.     # 还原指定敌人 ID
  66.     $game_temp.enemy_id = 0
  67.     dispose_info_viewport
  68.     @message_window.dispose
  69.     @spriteset.dispose
  70.     unless $scene.is_a?(Scene_Gameover)
  71.       $scene = nil if $BTEST
  72.     end
  73.   end
  74. end

  75. #==============================================================================
  76. # ■ Game_Troop
  77. #==============================================================================
  78. class Game_Troop < Game_Unit
  79.   #--------------------------------------------------------------------------
  80.   # ● 敌人角色名称后的文字表
  81.   #--------------------------------------------------------------------------
  82.   LETTER_TABLE = [ 'A','B','C','D','E','F','G','H','I','J',
  83.                    'K','L','M','N','O','P','Q','R','S','T',
  84.                    'U','V','W','X','Y','Z']
  85.   SPACE = 32
  86.   #--------------------------------------------------------------------------
  87.   # ● 清除
  88.   #--------------------------------------------------------------------------
  89.   def clear
  90.     @screen.clear
  91.     @interpreter.clear
  92.     @event_flags.clear
  93.     @enemies = []
  94.     @turn_count = 0
  95.     @names_count = {}
  96.     @can_escape = false
  97.     @can_lose = false
  98.     @preemptive = false
  99.     @surprise = false
  100.     @turn_ending = false
  101.     @forcing_battler = nil
  102.     # 新坐标数组
  103.     @coordinate_x = []
  104.     # 敌方新队伍对象
  105.     @troop = nil
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ○ 获取成员
  109.   #--------------------------------------------------------------------------
  110.   def members
  111.     return @enemies
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ○ 获取敌方组对象
  115.   #--------------------------------------------------------------------------
  116.   def troop
  117.     return @troop
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ○ 获取敌方组对象
  121.   #     enemy_id : 敌人 ID
  122.   #--------------------------------------------------------------------------
  123.   def setup_troop(enemy_id)
  124.     # 角色数
  125.     party_size = $game_party.members.size
  126.     # 指定敌人数
  127.     if $game_variables[PA::V_E_N] > 0
  128.       enemies_size = $game_variables[PA::V_E_N]
  129.     else
  130.       case party_size
  131.       when 1
  132.         enemies_size = 1+rand(2)
  133.       when 2
  134.         enemies_size = 1+rand(4)
  135.       when 3
  136.         enemies_size = 1+rand(6)
  137.       when 4
  138.         enemies_size = 1+rand(8)
  139.       end
  140.     end  
  141.     troop_members = []
  142.     # 没注意这是实例,晕! @_@
  143.     troop_all = $data_troops[@troop_id].clone
  144.     # 使敌人组按指定顺序排列,比如在战斗前调用脚本 $special_array =[0,1,1,2,2]
  145.     if $special_array != nil      
  146.       for i in 0...$special_array.size
  147.         troop_members.push troop_all.members[$special_array[i]]
  148.       end
  149.     # 普通遇敌
  150.     else  
  151.       if $game_switches[PA::S_E_O] == false
  152.         # 1号ID敌人必须出现在1号位
  153.         if $game_switches[PA::S_E_M] == true
  154.           enemy_index = 0
  155.           for i in 0...enemies_size
  156.             troop_members.push troop_all.members[enemy_index]
  157.             enemy_index = 1 + rand(troop_all.members.size - 1)
  158.           end  
  159.         else  
  160.           for i in 0...enemies_size
  161.             enemy_index = rand(troop_all.members.size)
  162.             troop_members.push troop_all.members[enemy_index]
  163.           end  
  164.         end
  165.       end  
  166.     end  
  167.     troop_all.members = troop_members
  168.     return troop_all
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ○ 设定敌人坐标
  172.   #--------------------------------------------------------------------------
  173.   def setup_coordinate_x
  174.     # 获取宽度数组
  175.     width = []
  176.     # 获取宽度和
  177.     width_all = 0
  178.     for i in 0...troop.members.size
  179.       width.push battle_graphic_width(i)
  180.       width_all += width[i]
  181.     end
  182.     # 计算间距
  183.     space = [(Graphics.width-width_all)/(troop.members.size), SPACE].min
  184.     space = [(Graphics.width-width_all)/(troop.members.size-1), SPACE].min if troop.members.size > 1
  185.     # 预算外
  186.     width_all += space * (troop.members.size-1)
  187.     # 计算首敌横坐标
  188.     x = (Graphics.width - width_all) / 2
  189.     x += width[0]/2
  190.     x = width[0]/2 if x < width[0]/2
  191.     # 循环返回值数组
  192.     @coordinate_x.push(x)
  193.     for i in 1...troop.members.size
  194.       x += width[i-1]/2 + width[i]/2 + space
  195.       @coordinate_x.push x
  196.     end
  197.   end
  198.   #--------------------------------------------------------------------------
  199.   # ○ 获取敌人战斗图宽度
  200.   #     index    : 敌人队内序号
  201.   #--------------------------------------------------------------------------
  202.   def battle_graphic_width(index)
  203.     id = troop.members[index].enemy_id
  204.     battler_name = $data_enemies[id].battler_name
  205.     battler_hue = $data_enemies[id].battler_hue
  206.     bitmap = Cache.battler(battler_name, battler_hue)
  207.     return bitmap.width
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   # ● 设置
  211.   #     troop_id : 敌方队伍 ID
  212.   #     enemy_id : 敌人 ID
  213.   #--------------------------------------------------------------------------
  214.   def setup(troop_id, enemy_id = 0)
  215.     clear
  216.     @troop_id = troop_id
  217.     # 生成敌方队伍
  218.     @troop = setup_troop(enemy_id)
  219.     # 新坐标重排
  220.     setup_coordinate_x
  221.     @enemies = []
  222.     a = 1
  223.     for member in troop.members
  224.       next if $data_enemies[member.enemy_id] == nil
  225.       enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
  226.       enemy.hidden = member.hidden
  227.       enemy.immortal = member.immortal
  228.       case a
  229.       when 1
  230.         enemy.screen_x = 200 + rand(250)
  231.         enemy.screen_y = 120 + rand(80)
  232.       when 2
  233.         enemy.screen_x = 200 + rand(250)
  234.         enemy.screen_y = 120 + rand(80)
  235.         when 3
  236.         enemy.screen_x = 200 + rand(250)
  237.         enemy.screen_y = 120 + rand(80)
  238.       when 4
  239.         enemy.screen_x = 200 + rand(250)
  240.         enemy.screen_y = 120 + rand(80)
  241.       when 5
  242.         enemy.screen_x = 200 + rand(250)
  243.         enemy.screen_y = 120 + rand(80)
  244.       when 6
  245.         enemy.screen_x = 200 + rand(250)
  246.         enemy.screen_y = 120 + rand(80)
  247.       when 7
  248.         enemy.screen_x = 200 + rand(250)
  249.         enemy.screen_y = 120 + rand(80)   
  250.       when 8
  251.         enemy.screen_x = 200 + rand(250)
  252.         enemy.screen_y = 120 + rand(80)
  253.       end
  254.       a += 1
  255.       @enemies.push(enemy)
  256.     end
  257.     make_unique_names
  258.   end  
  259. end
复制代码

点评

作者怎么召唤得到,是沉影大大  发表于 2013-2-4 21:18

评分

参与人数 1星屑 +100 收起 理由
怪蜀黍 + 100 借花献佛糖

查看全部评分

我想要到的是保护同伴的力量,能与同伴一起欢笑的未来的力量,如果无法做到的话,那就无需继承,如果是这样的彭格列的话,那我亲手毁掉它!
  
                       欢迎加入我们的家族~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
77
在线时间
692 小时
注册时间
2011-10-20
帖子
907
3
 楼主| 发表于 2013-2-3 21:36:16 | 只看该作者
彭格列第XI代 发表于 2013-2-3 20:48
抓住云雀~

不是云雀……因为没云豆~
是土方啦土方~
可以贴出原地址吗?

点评

仔细研究了下不是这个……总之阿里嘎都  发表于 2013-2-3 21:54
找不到原帖= =这是在我的某游戏里面弄出来的...你召唤作者试试= =  发表于 2013-2-3 21:46
回复 支持 反对

使用道具 举报

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
4
发表于 2013-5-25 02:16:54 | 只看该作者
彭格列第XI代 发表于 2013-2-3 20:48
抓住云雀~

这个只是随机改变一个队伍里相同人数的脚本,有能随机组合不同敌人的脚本吗?

点评

挖坟了=-=  发表于 2013-5-25 10:40

评分

参与人数 1星屑 -20 收起 理由
怪蜀黍 -20 不要挖坟

查看全部评分

长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 12:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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