Project1

标题: 自动生成敌人队伍的问题 [打印本页]

作者: 海盗晴    时间: 2012-11-29 21:21
标题: 自动生成敌人队伍的问题
我用了这个自动敌人队伍的脚本  可是只有第一次遇敌是随机出现我设置的敌人队伍
然后再遇敌就一直是我第一次遇到的敌人队伍了  除非退出游戏再进来才会重新随机出现敌人队伍
高手帮我看一下 究竟是什么问题?是不是每次战斗都要重置脚本?怎么重置?
  1. #==============================================================================
  2. # ■ Game_Troop
  3. #------------------------------------------------------------------------------
  4. #  处理敌人队伍和战斗相关资料的类,也可执行如战斗事件管理之类的功能。
  5. # 本类的实例请参考 $game_troop。
  6. #==============================================================================

  7. class Game_Troop < Game_Unit
  8.   
  9.   
  10.   #--------------------------------------------------------------------------
  11.   # ● 获取队伍队员
  12.   #--------------------------------------------------------------------------
  13.   def troop
  14.     return @group if @group != nil
  15.     @group = $data_troops[@troop_id]  #组
  16.     name = @group.name
  17.     unless name.include?("类") & name.include?("个")
  18.       return @group  #如果不是自动生成,则返回。
  19.     end
  20.    
  21.     kinds = name.split("类")[0].split("-")
  22.     kinds = kinds[0].to_i + rand(kinds[1].to_i-kinds[0].to_i) #计算出最大种类数量。
  23.     quan = name.split("类")[1].split("-")
  24.     quan = quan[0].to_i+rand(quan[1].to_i-quan[0].to_i) #计算怪物总数
  25.     kind = bleed(kinds)
  26.     @group.members = army(kind,quan)
  27.     return @group
  28.   end
  29.    
  30.   #--------------------------------------------------------------------------
  31.   # ● 抽取怪物
  32.   #--------------------------------------------------------------------------
  33.   def bleed(num)
  34.     n = []
  35.     for i in [email protected]
  36.       n.push i
  37.     end
  38.     result = []
  39.     for i in 0..num-1
  40.       r = rand(n.size)
  41.       result.push n[r]
  42.       n.delete_at r
  43.     end
  44.     return result
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● 生成队伍
  48.   #--------------------------------------------------------------------------
  49.   def army(bleed,max)
  50.     result = []
  51.     group = @group.members
  52.     for i in 0..max-1
  53.       result.push group[bleed[rand(bleed.size)]]
  54.     end
  55.     return result
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   # ● 设置
  59.   #     troop_id : 队伍 ID
  60.   #--------------------------------------------------------------------------
  61.   def setup(troop_id)
  62.     clear
  63.     @troop_id = troop_id
  64.     @enemies = []
  65.     scr = screens
  66.     if troop.members.size <= 8
  67.       
  68.       for i in 0..troop.members.size-1
  69.         member = troop.members[i]
  70.         enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
  71.         enemy.hidden = member.hidden
  72.         enemy.immortal = member.immortal
  73.         enemy.screen_x = scr[i].x
  74.         enemy.screen_y = scr[i].y
  75.         @enemies.push(enemy)
  76.       end
  77.     else
  78.       for i in 0..7
  79.         member = troop.members[i]
  80.         enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
  81.         enemy.hidden = member.hidden
  82.         enemy.immortal = member.immortal
  83.         enemy.screen_x = scr[i].x
  84.         enemy.screen_y = scr[i].y
  85.         @enemies.push(enemy)
  86.       end
  87.       for i in 8..troop.members.size-1
  88.         member = troop.members[i]
  89.         enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
  90.         enemy.hidden = member.hidden
  91.         enemy.immortal = member.immortal
  92.         rsc = rscr
  93.         enemy.screen_x = rsc[0]
  94.         enemy.screen_y = rsc[1]
  95.         @enemies.push(enemy)
  96.       end
  97.       
  98.     end
  99.    
  100.     make_unique_names
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 获取位置组
  104.   #--------------------------------------------------------------------------
  105.   def screens
  106.     for i in 1..$data_troops.size-1
  107.       if $data_troops[i].name == "排位组"
  108.         group = $data_troops[i] #获得排位组
  109.         break
  110.       end
  111.     end
  112.     return group.members
  113.   end
  114.   #--------------------------------------------------------------------------
  115.   # ● 获取随机位置
  116.   #--------------------------------------------------------------------------
  117.   def rscr
  118.     scr = screens
  119.     r = rand 8
  120.     s = rand 8
  121.     minx,maxx = [scr[r].x,scr[s].x].min,[scr[r].x,scr[s].x].max
  122.     miny,maxy = [scr[r].y,scr[s].y].min,[scr[r].y,scr[s].y].max
  123.     x = minx + rand(maxx-minx)
  124.     y = miny + rand(maxy-miny)
  125.     return [x,y]
  126.   end
  127.   
  128.   
  129.   
  130.   
  131.   
  132.   
  133.   
  134. end
复制代码

作者: 海盗晴    时间: 2012-11-29 21:22
补充一下 是明雷 设置的事件遇敌
作者: 怪蜀黍    时间: 2012-12-4 20:56
脚本报错,而且不会脚本的用法。
LZ你需要先教我们怎么使用本脚本。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1