Project1

标题: (RMVX)请问如何设置一个技能可以选择对敌或对我使用 [打印本页]

作者: xpdkoei    时间: 2011-8-28 14:17
标题: (RMVX)请问如何设置一个技能可以选择对敌或对我使用
如同最终幻想里面的设定一样,回复技能对我使用是补血,对不死系敌人使用是去血。dsu_plus_rewardpost_czw
作者: 102045301    时间: 2011-8-28 18:05
威力100,恢复200,

这个还要使用者和敌人,那我不知道了。
作者: zphyp120    时间: 2011-8-28 19:24
本帖最后由 zphyp120 于 2011-8-28 19:26 编辑

这就类似死亡缠绕嘛。。。
建议你弄两个技能,在同一个等级学会
比如:治疗·死亡缠绕(治疗效果,对己方使用)
灭敌·死亡缠绕(伤害效果,对敌方方使用)

[line]2[/line]
如果觉得我的答案对您有帮助的话,请按下面的“认可答案”按钮!
作者: feizhaodan    时间: 2011-8-28 21:02
上脚本啦:
  1. #=begin
  2. #==============================================================================
  3. # ■ Change_Scope
  4. #------------------------------------------------------------------------------
  5. #   设置内容。
  6. #==============================================================================
  7. module Change_Scope
  8.   
  9.   BOTTON = Input::X
  10.   # 把X换成你喜欢的键。
  11.   # 详细请看帮助里的 RPG Maker VX -》 游戏操控 -》 基本操控 里的按键
  12. end

  13. #==============================================================================
  14. # ■ RPG::Skill
  15. #------------------------------------------------------------------------------
  16. #   技能类(新定义)
  17. #==============================================================================
  18. module RPG
  19.   class Skill < UsableItem
  20.     alias cs_initialize initialize
  21.     def initialize
  22.       cs_initialize
  23.       @last_scope = 0
  24.     end
  25.   #--------------------------------------------------------------------------
  26.   # ● 更改 目标
  27.   #--------------------------------------------------------------------------
  28.     def change_scope
  29.       if self.scope != self.last_scope
  30.         self.scope = self.last_scope
  31.       else
  32.         if self.for_opponent?
  33.           if self.for_all?
  34.             self.scope = 8
  35.           else
  36.             self.scope = 7
  37.           end
  38.         elsif self.for_friend? and not self.for_dead_friend?
  39.           if self.for_all?
  40.             self.scope = 2
  41.           else
  42.             self.scope = 1
  43.           end
  44.         end
  45.       end
  46.     end
  47.   #--------------------------------------------------------------------------
  48.   # ● 获取原目标
  49.   #--------------------------------------------------------------------------
  50.     def get_last_scope
  51.       @last_scope = @scope
  52.     end
  53.   attr_accessor :last_scope
  54.   end
  55. end
  56. #==============================================================================
  57. # ■ Scene_Battle
  58. #------------------------------------------------------------------------------
  59. #  处理战斗画面的类。
  60. #==============================================================================

  61. class Scene_Battle < Scene_Base
  62.   #--------------------------------------------------------------------------
  63.   # □ 更新同伴目标选择(再定义)
  64.   #--------------------------------------------------------------------------
  65.   def update_target_actor_selection
  66.     @target_actor_window.update
  67.     if Input.trigger?(Input::B)
  68.       Sound.play_cancel
  69.       end_target_actor_selection
  70.     elsif Input.trigger?(Input::C)
  71.       Sound.play_decision
  72.       @active_battler.action.target_index = @target_actor_window.index
  73.       end_target_actor_selection
  74.       end_skill_selection
  75.       end_item_selection
  76.       next_actor
  77.     elsif Input.trigger?(Change_Scope::BOTTON)
  78.       if @skill.for_dead_friend? or @skill.scope == 0
  79.         Sound.play_buzzer
  80.         return
  81.       else
  82.         @skill.change_scope
  83.         determine_skill(2)
  84.       end
  85.     end
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # □ 更新敌人目标选择(再定义)
  89.   #--------------------------------------------------------------------------
  90.   def update_target_enemy_selection
  91.     @target_enemy_window.update
  92.     if Input.trigger?(Input::B)
  93.       Sound.play_cancel
  94.       end_target_enemy_selection
  95.     elsif Input.trigger?(Input::C)
  96.       Sound.play_decision
  97.       @active_battler.action.target_index = @target_enemy_window.enemy.index
  98.       end_target_enemy_selection
  99.       end_skill_selection
  100.       end_item_selection
  101.       next_actor
  102.     elsif Input.trigger?(Change_Scope::BOTTON)
  103.       if @skill.scope == 0
  104.         Sound.play_buzzer
  105.         return
  106.       else
  107.         @skill.change_scope
  108.         determine_skill(1)
  109.       end
  110.     end
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # □ 确认技能(再定义)
  114.   #--------------------------------------------------------------------------
  115.   def determine_skill(before = 0)
  116.     @active_battler.action.set_skill(@skill.id)
  117.     if before == 0
  118.       @skill_window.active = false
  119.     end
  120.     if before != 0
  121.       $game_message.visible = false
  122.       @info_viewport.visible = true
  123.       if @skill.for_opponent?
  124.         start_target_enemy_selection(true)
  125.       else
  126.         start_target_actor_selection(true)
  127.       end
  128.     else
  129.       if @skill.need_selection?
  130.         if @skill.for_opponent?
  131.           start_target_enemy_selection
  132.         else
  133.           start_target_actor_selection
  134.         end
  135.       else
  136.         end_skill_selection
  137.         next_actor
  138.       end
  139.     end
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # □ 更新技能选择(再定义)
  143.   #--------------------------------------------------------------------------
  144.   def update_skill_selection
  145.     @skill_window.active = true
  146.     @skill_window.update
  147.     @help_window.update
  148.     if Input.trigger?(Input::B)
  149.       Sound.play_cancel
  150.       end_skill_selection
  151.     elsif Input.trigger?(Input::C)
  152.       @skill = @skill_window.skill
  153.       @skill.get_last_scope
  154.       if @skill != nil
  155.         @active_battler.last_skill_id = @skill.id
  156.       end
  157.       if @active_battler.skill_can_use?(@skill)
  158.         Sound.play_decision
  159.         determine_skill
  160.       else
  161.         Sound.play_buzzer
  162.       end
  163.     end
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # ● 开始敌人目标选择
  167.   #--------------------------------------------------------------------------
  168.   def start_target_enemy_selection(before = false)
  169.     @target_enemy_window = Window_TargetEnemy.new
  170.     if before
  171.     @info_viewport.rect.x -= @target_actor_window.width
  172.     @info_viewport.ox -= @target_actor_window.width
  173.     @target_actor_window.active = false
  174.     @target_actor_window.visible = false
  175.     @target_actor_window = nil
  176.     end
  177.     @target_enemy_window.y = @info_viewport.rect.y
  178.     @info_viewport.rect.x += @target_enemy_window.width
  179.     @info_viewport.ox += @target_enemy_window.width
  180.     @actor_command_window.active = false
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ● 开始同伴目标选择
  184.   #--------------------------------------------------------------------------
  185.   def start_target_actor_selection(before = false)
  186.     @target_actor_window = Window_BattleStatus.new
  187.     if before
  188.     @info_viewport.rect.x -= @target_enemy_window.width
  189.     @info_viewport.ox -= @target_enemy_window.width
  190.     @target_enemy_window.active = false
  191.     @target_enemy_window.visible = false
  192.     @target_enemy_window = nil
  193.     end
  194.     @target_actor_window.index = 0
  195.     @target_actor_window.active = true
  196.     @target_actor_window.y = @info_viewport.rect.y
  197.     @info_viewport.rect.x += @target_actor_window.width
  198.     @info_viewport.ox += @target_actor_window.width
  199.     @actor_command_window.active = false
  200.   end
  201. end
  202. #=end
复制代码
在战斗中按你设置的键(默认为X(键盘上的A))
技能只要不是全体或者复活类的话就可以变更目标类型。
之后只要在加血技能上加个单独的属性,把怕这个技能的怪对加血技能附带的属性的抵抗性改成F就行。




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