Project1

标题: 敌人能否无限召唤小怪? [打印本页]

作者: 白鬼    时间: 2015-11-10 21:17
标题: 敌人能否无限召唤小怪?
默认的战斗系统是做不到了,不知道有没有可能通过脚本等方法实现呢?
这样做是不是要扩展敌人数量默认最多8个的设定?怎么改?
我想再加入一个小怪数量的统计(因为有可能小怪不是固定的某一个)
然后当小怪数量超过N的时候,战斗判定为失败。

请问各位大手有没有什么办法?谢谢!
@RyanBern @恐惧剑刃 @芯☆淡茹水  
作者: 枫の叶    时间: 2015-11-11 11:47
1,敌人队伍增加一个可以添加敌人的函数。
2,敌人战斗图画面坐标改成可外部变动。
3,增加一个计算方式来确定新增加的敌人图片的画面坐标。
4,敌人战斗精灵增加判断敌人队伍是否增加敌人,来刷新敌人战斗图。
5,增加一个函数来专门添加敌人,以及对增加的敌人计数。

作者: 汪汪    时间: 2015-11-11 23:38
……研究一下脚本然后模仿着写写就好(反正我不会)
作者: 虾米£浪子    时间: 2015-11-12 16:03
脚本是可以实现的
作者: RyanBern    时间: 2015-11-12 17:04
2楼给出的做法可行,我来补充一下细节。细节这里比较讨厌。

1. 敌人队伍增加一个可以添加敌人的函数。
参考Game_Troop#setup方法里添加敌人的部分,编写临时增加敌人的方法。在这里必须要参考Game_Enemy的initialize,在生成敌人的时候,指定的是敌人所在队伍和敌人的编号。一种可能的办法为
RUBY 代码复制
  1. class Game_Troop
  2.   def add_enemy(enemy_id)
  3.     # 稍后说明
  4.     enemy = Game_Enemy.new(队伍编号, 敌人索引, 敌人 ID)
  5.     @enemies << enemy
  6.   end
  7. end

在这里,敌人索引可以设置为@enemies.size,而队伍编号在这里暂时设置为 0。临时添加的敌人不能等同于数据库中的敌人,设置为别的有可能会出错,设置为 0 表示这是临时添加的敌人。
2. 敌人战斗图画面坐标改成可外部变动。
这点要修改Game_Enemy的若干部分,在下面给出提示。
Game_Enemy#initialize:这里看到敌人的若干属性,例如[中途出现(hidden)]和[不死之身(immortal)]等。只有设置正确队伍编号的敌人才能正常设置这个属性,对于临时添加的敌人,这样设置会有问题。可以通过队伍编号(troop_id)是否为 0,进行判断敌人是否是临时添加的。同时你要注意到,这里添加的敌人是什么要根据队伍而定,但是临时添加的敌人由于没有队伍,所以也不能这样指定。可以考虑将此initialize方法加一个参数上去,如果队伍编号为 0,则需要进一步提供敌人ID的信息。
Game_Enemy#screen_x:敌人战斗坐标信息,对于非临时生成的敌人,坐标信息在数据库-队伍中给出。但是对于临时添加的敌人,则不能这样设置。需要借助attr_writer :screen_x来提供设置@screen_x的方法。然后在本方法中判断,如果队伍 ID 为 0,则直接返回设置好的@screen_x即可。
Game_Enemy#screen_y:同理。
3. 敌人战斗精灵增加判断敌人队伍是否增加敌人,来刷新敌人战斗图。
这一块需要你修改Spriteset_Battle,在添加敌人的同时,将敌人的战斗精灵加入场景中。表示敌人战斗图精灵是@enemy_sprites数组,因此你需要想办法将其取出(例如利用attr_reader :enemy_sprites),然后在生成新敌人的同时将他的战斗图加入到场景中。

总之,改起来比较麻烦,范例我就不上了,自己好好研究一下。





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