| 赞 | 40  | 
 
| VIP | 559 | 
 
| 好人卡 | 234 | 
 
| 积分 | 47 | 
 
| 经验 | 251834 | 
 
| 最后登录 | 2025-10-7 | 
 
| 在线时间 | 5233 小时 | 
 
 
 
 
 
Lv3.寻梦者 (版主) 八宝粥的基叔 
	- 梦石
 - 0 
 
        - 星屑
 - 4687 
 
        - 在线时间
 - 5233 小时
 
        - 注册时间
 - 2009-4-29
 
        - 帖子
 - 14320
 
 
  
 
 | 
	
 本帖最后由 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号角色泰伦斯: 
 
 
 
按要求上脚本:- #==============================================================================
 
 - # ■ 系统设定
 
 - #------------------------------------------------------------------------------
 
 - module P叔
 
 - # 请在下面设定敌人被嘲讽后附加的状态的ID,默认ID是26
 
 -   BEICHAOFENG = 26
 
 - # 请在下面设定角色释放嘲讽后自己附加的状态的ID,默认ID是27
 
 -   CHAOFENG = 27
 
 - end  
 
 - #==============================================================================
 
  
 
- #==============================================================================
 
 - # ■ Game_Action
 
 - #------------------------------------------------------------------------------
 
 - #  处理战斗中的行动的类。本类在 Game_Battler 类的内部使用。
 
 - #==============================================================================
 
  
- class Game_Action
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 目标为敌人  # 再定义
 
 -   #--------------------------------------------------------------------------
 
 -   def targets_for_opponents
 
 -     if item.for_random?
 
 -       Array.new(item.number_of_targets) { opponents_unit.random_target }
 
 -     elsif item.for_one?
 
 -       num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
 
 -       if @target_index < 0
 
 -         # 当攻击者处于被嘲讽状态并且攻击者是敌人时
 
 -         if @subject.state?(P叔::BEICHAOFENG) and @subject.is_a?(Game_Enemy)
 
 -         # 攻击目标为处于嘲讽状态的角色
 
 -           $game_party.alive_members.each do |actor|
 
 -             return [actor] * num if actor.state?(P叔::CHAOFENG) end
 
 -         end  
 
 -         return [opponents_unit.random_target] * num  
 
 -       else
 
 -         [opponents_unit.smooth_target(@target_index)] * num
 
 -       end
 
 -     else
 
 -       opponents_unit.alive_members
 
 -     end
 
 -   end
 
 - end  
 
  
- #==============================================================================
 
 - # ■ Game_ActionResult
 
 - #------------------------------------------------------------------------------
 
 - #  战斗行动结果的管理类。本类在 Game_Battler 类的内部使用。
 
 - #==============================================================================
 
  
- class Game_ActionResult
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 获取 HP 伤害的文字  # 再定义
 
 -   #--------------------------------------------------------------------------
 
 -   def hp_damage_text
 
 -     if @hp_drain > 0
 
 -       fmt = @battler.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
 
 -       sprintf(fmt, @battler.name, Vocab::hp, @hp_drain)
 
 -     elsif @hp_damage > 0
 
 -       fmt = @battler.actor? ? Vocab::ActorDamage : Vocab::EnemyDamage
 
 -       sprintf(fmt, @battler.name, @hp_damage)
 
 -     elsif @hp_damage < 0
 
 -       fmt = @battler.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
 
 -       sprintf(fmt, @battler.name, Vocab::hp, -hp_damage)
 
 -     else
 
 -       fmt = @battler.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
 
 -       # 修改以下脚本,以消除附加被嘲讽状态时HP伤害为0而显示“毫发无伤”的文字。
 
 -       sprintf(fmt, @battler.name) unless @battler.state?(P叔::BEICHAOFENG) 
 
 -     end
 
 -   end
 
 - end  
 
  
- #==============================================================================
 
 - # ■ Game_Battler
 
 - #------------------------------------------------------------------------------
 
 - #  处理战斗者的类。Game_Actor 和 Game_Enemy 类的父类。
 
 - #==============================================================================
 
  
- class Game_Battler < Game_BattlerBase
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 判定状态是否可以附加  # 再定义
 
 -   #--------------------------------------------------------------------------
 
 -   def state_addable?(state_id)
 
 -     # 取消了对!state_removed?(state_id)的判断。
 
 -     # 如果执行该判断将导致状态附加失败。
 
 -     alive? && $data_states[state_id] && !state_resist?(state_id) &&
 
 -       !state_restrict?(state_id)
 
 -   end
 
 - end  
 
 
  复制代码 |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |