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

Project1

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

[已经解决] 【★】如何嘲讽单个怪物使它只攻击我方特定角色?

[复制链接]

Lv4.逐梦者 (管理员)

砂上描绘的愿想

梦石
15
星屑
4019
在线时间
5070 小时
注册时间
2012-1-15
帖子
4617

开拓者贵宾短篇七成年组亚军剧作品鉴家

跳转到指定楼层
1
发表于 2012-10-8 17:26:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 迷糊的安安 于 2012-10-25 10:57 编辑

本问题为【Ace推荐问答计划】活动问题。
详情请点击:http://rpg.blue/forum.php?mod=viewthread&tid=251118

实现要求:
“嘲讽”算是个rpg里的老牌技能了,一般都是让肉盾角色掌握此技能用来保护己方脆弱队员的。
而ace里自然是少不了这个技能,范例数据库里就有嘲讽这种状态,其效果为怪物攻击自己的频率上升。

那么问题就在这了。

怪物攻击自己的频率上升中的怪物指的是与主角队伍作战的全体怪物,那么一旦将几率调得过高,此技能一出所有的怪物都会集中火力攻击使用者,而脆弱的法师就可以放心的输出,使得战斗变得十分简单。而如果将几率设的过低,那么此技能的效果就不明显,从而成为一个残废技能。

所以我想能不能通过某种手段实现“单体嘲讽”,即“强迫对方某一敌手攻击我方使用者”,这样的话上述问题就解决了。

点评

我接触VA后才发现,原来VA的公式是个好东西啊,可以好好地利用它为我们服务。  发表于 2012-10-18 13:06
若后退就皆成谎言。

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

2
发表于 2012-10-8 18:15:33 | 只看该作者
使用http://rpg.blue/thread-236018-1-4.html的脚本,然后制作一个无伤害的技能,然后备注栏里输入
  1. <plus_aggro 99999>
复制代码
,目标单体即可。
范例交给别人了_(:3」∠)_

评分

参与人数 1梦石 +2 收起 理由
迷糊的安安 + 2 有教程出现的话会追加的 = =~

查看全部评分

回复

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4509
在线时间
5228 小时
注册时间
2009-4-29
帖子
14318

贵宾

3
发表于 2012-10-18 11:06:32 | 只看该作者
本帖最后由 protosssonny 于 2012-10-18 13:08 编辑

先给范例链接:http://pan.baidu.com/share/link?shareid=87287&uk=875076719

实现要求:强迫对方某一敌手攻击我方嘲讽技能使用者。范例中技能使用者是3号角色泰伦斯。
使用方法:
1、新状态设计。需要设计两个新状态,分别给技能被嘲讽的敌人和使用者附加。
(1)新状态1,给被嘲讽的敌人附加的状态,范例中默认是26号状态。敌人附加状态时的文字填上“被激怒了!”;敌人状态解除时的文字填上“不再愤怒!”。
(2)新状态2,给技能使用者附加的状态,范例中默认是27号状态。
(3)两个状态持续的回合数必须要保持一致,因为只有两个状态同事存在时,嘲讽才会有效。比如同时填1~1,持续1个回合。
有了这两个状态后,被附加“被嘲讽”状态的敌人就会强制攻击附加“嘲讽”状态的角色,也就是技能使用者。
2、新技能设计。比如范例中的第127号技能是嘲讽技能。新技能必须这样设计:
(1)速度修正为正,比如为300,这样本技能才能在回合以开始就释放出来,让指定敌人攻击自己。若不设定速度修正,有可能敌人已经攻击完毕才释放技能,达不到目的。
(2)“使用效果”栏中要设定附加状态,就是让敌人增加仇恨的状态。也是脚本设定中“BEICHAOFENG”定义的状态ID。范例中默认是26号“被嘲讽”状态。
(3)伤害计算公式的类型除了“无”以外随便填,属性随便填,但是计算公式必须填写a.add_state(P叔::CHAOFENG)。意思就是要让技能使用者(即a)附加脚本设定中“CHAOFENG”定义的状态ID。范例中默认是27号“嘲讽”状态。

按要求上图:
3号角色泰伦斯嘲讽了史莱姆B:

史莱姆B因被嘲讽而攻击3号角色泰伦斯:


按要求上脚本:
  1. #==============================================================================
  2. # ■ 系统设定
  3. #------------------------------------------------------------------------------
  4. module P叔
  5. # 请在下面设定敌人被嘲讽后附加的状态的ID,默认ID是26
  6.   BEICHAOFENG = 26
  7. # 请在下面设定角色释放嘲讽后自己附加的状态的ID,默认ID是27
  8.   CHAOFENG = 27
  9. end  
  10. #==============================================================================


  11. #==============================================================================
  12. # ■ Game_Action
  13. #------------------------------------------------------------------------------
  14. #  处理战斗中的行动的类。本类在 Game_Battler 类的内部使用。
  15. #==============================================================================

  16. class Game_Action
  17.   #--------------------------------------------------------------------------
  18.   # ● 目标为敌人  # 再定义
  19.   #--------------------------------------------------------------------------
  20.   def targets_for_opponents
  21.     if item.for_random?
  22.       Array.new(item.number_of_targets) { opponents_unit.random_target }
  23.     elsif item.for_one?
  24.       num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
  25.       if @target_index < 0
  26.         # 当攻击者处于被嘲讽状态并且攻击者是敌人时
  27.         if @subject.state?(P叔::BEICHAOFENG) and @subject.is_a?(Game_Enemy)
  28.         # 攻击目标为处于嘲讽状态的角色
  29.           $game_party.alive_members.each do |actor|
  30.             return [actor] * num if actor.state?(P叔::CHAOFENG) end
  31.         end  
  32.         return [opponents_unit.random_target] * num  
  33.       else
  34.         [opponents_unit.smooth_target(@target_index)] * num
  35.       end
  36.     else
  37.       opponents_unit.alive_members
  38.     end
  39.   end
  40. end  

  41. #==============================================================================
  42. # ■ Game_ActionResult
  43. #------------------------------------------------------------------------------
  44. #  战斗行动结果的管理类。本类在 Game_Battler 类的内部使用。
  45. #==============================================================================

  46. class Game_ActionResult
  47.   #--------------------------------------------------------------------------
  48.   # ● 获取 HP 伤害的文字  # 再定义
  49.   #--------------------------------------------------------------------------
  50.   def hp_damage_text
  51.     if @hp_drain > 0
  52.       fmt = @battler.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
  53.       sprintf(fmt, @battler.name, Vocab::hp, @hp_drain)
  54.     elsif @hp_damage > 0
  55.       fmt = @battler.actor? ? Vocab::ActorDamage : Vocab::EnemyDamage
  56.       sprintf(fmt, @battler.name, @hp_damage)
  57.     elsif @hp_damage < 0
  58.       fmt = @battler.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
  59.       sprintf(fmt, @battler.name, Vocab::hp, -hp_damage)
  60.     else
  61.       fmt = @battler.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
  62.       # 修改以下脚本,以消除附加被嘲讽状态时HP伤害为0而显示“毫发无伤”的文字。
  63.       sprintf(fmt, @battler.name) unless @battler.state?(P叔::BEICHAOFENG)
  64.     end
  65.   end
  66. end  

  67. #==============================================================================
  68. # ■ Game_Battler
  69. #------------------------------------------------------------------------------
  70. #  处理战斗者的类。Game_Actor 和 Game_Enemy 类的父类。
  71. #==============================================================================

  72. class Game_Battler < Game_BattlerBase
  73.   #--------------------------------------------------------------------------
  74.   # ● 判定状态是否可以附加  # 再定义
  75.   #--------------------------------------------------------------------------
  76.   def state_addable?(state_id)
  77.     # 取消了对!state_removed?(state_id)的判断。
  78.     # 如果执行该判断将导致状态附加失败。
  79.     alive? && $data_states[state_id] && !state_resist?(state_id) &&
  80.       !state_restrict?(state_id)
  81.   end
  82. end  
复制代码

点评

0 0 长见识了,原来附加状态可以写到公式里……同时给自己和敌人附加状态而不用非得使用公共事件……周末一定仔细测试!  发表于 2012-10-18 11:42

评分

参与人数 2星屑 +120 梦石 +6 收起 理由
迷糊的安安 + 6 最佳答案 好人卡+3
八宝粥先生 + 120 我还是很赞同

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复

使用道具 举报

Lv4.逐梦者 (管理员)

砂上描绘的愿想

梦石
15
星屑
4019
在线时间
5070 小时
注册时间
2012-1-15
帖子
4617

开拓者贵宾短篇七成年组亚军剧作品鉴家

4
 楼主| 发表于 2012-10-20 12:05:43 | 只看该作者
protosssonny 发表于 2012-10-18 11:06
先给范例链接:http://pan.baidu.com/share/link?shareid=87287&uk=875076719

实现要求:强迫对方某一敌手 ...

这样设计的结果是,【被嘲讽】状态的持有者攻击【嘲讽】状态的持有者。如果对于队伍里有两个嘲讽者,那就不会各自认定各自的目标了。
有的一点瑕疵是,被激怒的怪物上面会出现空行。

但是不管怎么说,完成了题目要求,最佳答案。
若后退就皆成谎言。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-7 11:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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