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

Project1

 找回密码
 注册会员
搜索

【已经解决】怎么设置指定敌群为精英怪

查看数: 1906 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-1-1 12:43

正文摘要:

本帖最后由 devil033 于 2017-1-1 14:31 编辑 以下脚本是精英怪脚本,也就是随机把野怪或BOSS生成精英怪(提升属性) 但我想指定只有BOSS是精英怪(BOSS是指定的敌群) 野怪和BOSS是同一种怪,只是BOSS是指定的敌 ...

回复

devil033 发表于 2017-1-1 14:30:06
@RaidenInfinity
好了,完美解决,谢谢版主
RaidenInfinity 发表于 2017-1-1 14:17:03
enemy.init_by_enemy if Tan_by_enemy_set::ELITE_TROOPS.include?(troop_id)

一时忘了常量要用冒号来解析orz
devil033 发表于 2017-1-1 13:50:43
@RaidenInfinity
好像并没有用,设置精英怪机率为100,仍然出的是普通的怪

点评

请确保脚本安装正确(新插件必须装在下面),还有要改的数值都需要设置正确。  发表于 2017-1-1 13:56
RaidenInfinity 发表于 2017-1-1 13:19:28
本帖最后由 RaidenInfinity 于 2017-1-1 14:39 编辑

首先把
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 初始化对象
  3.   #--------------------------------------------------------------------------
  4.   alias tan_by_enemy_initialize initialize
  5.   def initialize(index, enemy_id)
  6.     tan_by_enemy_initialize(index, enemy_id)
  7.     init_by_enemy
  8.   end

删掉
这是因为要把精英怪生成的判定从敌人的初始化转移到由敌群生成机制控制

然后贴上这个插件脚本:
RUBY 代码复制
  1. #常量定义
  2. module Tan_by_enemy_set
  3.         ELITE_TROOPS = [1,2,3,4,5] #设置生成精英怪的敌群ID
  4. end
  5.  
  6. class Game_Troop < Game_Unit
  7.  
  8. #敌群生成机制
  9.   def setup(troop_id)
  10.     clear
  11.     @troop_id = troop_id
  12.     @enemies = []
  13.     troop.members.each do |member|
  14.       next unless $data_enemies[member.enemy_id]
  15.       enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
  16.       enemy.init_by_enemy if Tan_by_enemy_set::ELITE_TROOPS.include?(troop_id) #判定是否BOSS敌群,然后尝试生成精英怪
  17.       enemy.hide if member.hidden
  18.       enemy.screen_x = member.x
  19.       enemy.screen_y = member.y
  20.       @enemies.push(enemy)
  21.     end
  22.     init_screen_tone
  23.     make_unique_names
  24.   end
  25.  
  26. end

基本上绿字注释已经说明了一切。

点评

当然你需要判定的是:角色装备的武器ID (!user.weapons.select{|w| [装有武器ID的数组].include?(w.id)}.empty?) 还有 敌人是否精英 self.is_by?  发表于 2017-1-4 21:50
不过建议在Game_Enemy里面增加make_damage_value来覆盖父类Game_Battler的同名方法。这样可以省去攻击者是否玩家角色/被攻击者是否敌人的判定,少很多乱子。  发表于 2017-1-4 21:49
如果你用楼主的这个脚本的话,使用敌人的is_by属性来判定是否精英。至于额外伤害的方法,请在Game_Battler的make_damage_value里面作判定。  发表于 2017-1-4 21:44
是不是也可以加入对精英额外伤害的武器?  发表于 2017-1-4 19:02

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

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

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

GMT+8, 2024-11-17 03:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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