Project1

标题: [已解决]如何队伍随机组合,统一管理战斗背景图。 [打印本页]

作者: miantouchi    时间: 2019-11-11 16:03
标题: [已解决]如何队伍随机组合,统一管理战斗背景图。
本帖最后由 miantouchi 于 2019-11-13 22:31 编辑

打个比方,1号区域有2种怪物,我想让怪物出现的队伍随机组合,并且组合数量不超过3个
如:
乌龙龟
乌龙龟、乌龙龟
乌龙龟、乌龙龟、乌龙龟
鞭形虫、
鞭形虫、鞭形虫
鞭形虫、鞭形虫、鞭形虫
乌龙龟、鞭形虫
鞭形虫、乌龙龟
乌龙龟、鞭形虫、鞭形虫
乌龙龟、乌龙龟、鞭形虫
鞭形虫、乌龙龟、乌龙龟
鞭形虫、鞭形虫、乌龙龟
大概就是这个意思吧,就是让出现的怪物随机组合,不至于单调。
我现在这么罗列出来太占用队伍的数量了。

第二个问题就是,战斗背景图,我现在是0回合里面直接设置的,
能不能用脚本统一整理下,我现在这么写不会有啥问题吧。

1.png (14.75 KB, 下载次数: 20)

1.png

作者: ppspssss    时间: 2019-11-11 17:35
排列組合我完全學不懂,以前高二數學課考了一次零分
作者: 灯笼菜刀王    时间: 2019-11-11 22:39
本帖最后由 灯笼菜刀王 于 2019-11-12 10:01 编辑
  1. #-------------------------------------------------
  2. #  随机安排敌人 19.11.11 by 灯笼菜刀君
  3. #  
  4. #    使用方法: 在 敌群事件第一页第一行用注释这样写就可以设置
  5. #
  6. #    [随机敌人]2
  7. #    [种类]1=>5,2=>3,3=>1
  8. #
  9. #-----设置内容解释------------------------
  10. #
  11. #-[随机敌人]2 ← 这个2表示最低数量,敌人数量会在这个数值到该敌群原本数量之间随机
  12. # [种类] 注意要和上面同一个注释框里,也就是写在注释第二行
  13. #  数值意思为 敌人ID=>随机权重  用半角逗号隔开每个ID
  14. #  如果没设置[种类], 则会在该敌群的原有敌人里随机抽
  15. #
  16. #  注意事项: 该注释设置里不能换行, 另外符号都要为半角符号(英文符号)
  17. #---------------------------------------------------------------------------
  18. class Game_Troop
  19.   alias xoxo_setup setup
  20.   def setup(troop_id)
  21.     page = $data_troops[troop_id].pages[0]
  22.     if page.list != nil and page.list[0].code == 108 and
  23.     page.list[0].parameters[0].include?("[随机敌人]")
  24.       n = page.list[0].parameters[0].gsub("[随机敌人]","").to_i
  25.       m = $data_troops[troop_id].members.size
  26.       if page.list[1] != nil and page.list[1].code == 408 and
  27.       page.list[1].parameters[0].include?("[种类]")
  28.         h = eval("{" + page.list[1].parameters[0].gsub("[种类]","") + "}")
  29.       else
  30.         h = {}
  31.         $data_troops[troop_id].members each {|i|
  32.         h[i.enemy_id].nil? ? h[i.enemy_id] = 1 : h[i.enemy_id] += 1}
  33.       end
  34.       @enemies = []
  35.       w = m - rand([m - n + 1,1].max)
  36.       g = []
  37.       h.keys.each {|i| h[i].times { g.push(i)}}
  38.       w.times {|i| @enemies.push(Game_Enemy.new(troop_id,i,g.抽奖))}
  39.     else
  40.       xoxo_setup(troop_id)
  41.     end
  42.   end
  43. end
  44. class Game_Enemy < Game_Battler
  45.   def initialize(troop_id, member_index,id=nil)
  46.     super()
  47.     @troop_id = troop_id
  48.     @member_index = member_index
  49.     troop = $data_troops[@troop_id]
  50.     @enemy_id = id.nil? ? troop.members[@member_index].enemy_id : id
  51.     enemy = $data_enemies[@enemy_id]
  52.     @battler_name = enemy.battler_name
  53.     @battler_hue = enemy.battler_hue
  54.     @hp = maxhp
  55.     @sp = maxsp
  56.     @hidden = troop.members[@member_index].hidden
  57.     @immortal = troop.members[@member_index].immortal
  58.   end
  59. end
  60. class Array
  61.   def 抽奖
  62.     f = self.dup
  63.     f.size.times do |i|
  64.       a = f[i]
  65.       b = rand(f.size)
  66.       f[i] = f[b]
  67.       f[b] = a
  68.     end
  69.     return f[rand(f.size)]
  70.   end
  71. end
复制代码


随手写的比较粗糙, 稍微测试了下没有问题, 拿去试试看
作者: 89444640    时间: 2019-11-12 07:13
我也用的上,拿走测试一下。
作者: miantouchi    时间: 2019-11-12 07:55
本帖最后由 miantouchi 于 2019-11-12 08:05 编辑
灯笼菜刀王 发表于 2019-11-11 22:39
随手写的比较粗糙, 稍微测试了下没有问题, 拿去试试看


挺好用的,不过我测了是了下
[随机敌人]1
[种类]1=>5,2=>3,3=>1
我把最低数设置为1,队伍敌人数数是3
貌似随机了很多次,每次出现怪物都是2个或者3个敌人队伍随机,并没有1/2/3号怪物单独出现的情况。
不知道什么原因。




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