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

Project1

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

[RMVX发布] 在战斗中切换对敌人使用或对队友使用

[复制链接]

Lv1.梦旅人

Mr.Gandum

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

贵宾

跳转到指定楼层
1
发表于 2011-9-2 23:21:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
还是先上脚本:
  1. #==============================================================================
  2. # 囧 切换攻击目标
  3. #------------------------------------------------------------------------------
  4. #   制作者:feizhaodan
  5. #   版本号:1.0.0(话说这个需要么?)
  6. #==============================================================================
  7. #=begin
  8. #==============================================================================
  9. # ■ Change_Scope
  10. #------------------------------------------------------------------------------
  11. #   设置内容。
  12. #==============================================================================
  13. module Change_Scope
  14.   
  15.   BOTTON = Input::X
  16.   # 把X换成你喜欢的键。
  17.   # 详细请看帮助里的 RPG Maker VX -》 游戏操控 -》 基本操控 里的按键
  18. end

  19. #==============================================================================
  20. # ■ RPG::Skill
  21. #------------------------------------------------------------------------------
  22. #   技能类(新定义)
  23. #==============================================================================
  24. module RPG
  25.   class Skill < UsableItem
  26.     alias cs_initialize initialize
  27.     def initialize
  28.       cs_initialize
  29.       @last_scope = 0
  30.       @originila_scope = 0
  31.     end
  32.   #--------------------------------------------------------------------------
  33.   # ● 更改 目标
  34.   #--------------------------------------------------------------------------
  35.     def change_scope
  36.       if self.scope != self.last_scope
  37.         self.scope = self.last_scope
  38.       else
  39.         if self.for_opponent?
  40.           if self.for_all?
  41.             self.scope = 8
  42.           else
  43.             self.scope = 7
  44.           end
  45.         elsif self.for_friend? and not self.for_dead_friend?
  46.           if self.for_all?
  47.             self.scope = 2
  48.           else
  49.             self.scope = 1
  50.           end
  51.         end
  52.       end
  53.     end
  54.   #--------------------------------------------------------------------------
  55.   # ● 获取原目标
  56.   #--------------------------------------------------------------------------
  57.     def get_last_scope
  58.       @last_scope = @scope
  59.     end
  60.   #--------------------------------------------------------------------------
  61.   # ● 储存原目标
  62.   #--------------------------------------------------------------------------
  63.     def set_original_scope
  64.       @original_scope = @scope
  65.     end
  66.   #--------------------------------------------------------------------------
  67.   # ● 储存原目标
  68.   #--------------------------------------------------------------------------
  69.     def reset_scope
  70.       @scope = @original_scope
  71.     end
  72.   attr_accessor :last_scope
  73.   end
  74. end
  75. #==============================================================================
  76. # ■ Scene_Battle
  77. #------------------------------------------------------------------------------
  78. #  处理战斗画面的类。
  79. #==============================================================================

  80. class Scene_Battle < Scene_Base
  81.   #--------------------------------------------------------------------------
  82.   # □ 更新同伴目标选择(再定义)
  83.   #--------------------------------------------------------------------------
  84.   def update_target_actor_selection
  85.     @target_actor_window.update
  86.     if Input.trigger?(Input::B)
  87.       Sound.play_cancel
  88.       end_target_actor_selection
  89.     elsif Input.trigger?(Input::C)
  90.       Sound.play_decision
  91.       @active_battler.action.target_index = @target_actor_window.index
  92.       end_target_actor_selection
  93.       end_skill_selection
  94.       end_item_selection
  95.       next_actor
  96.     elsif Input.trigger?(Change_Scope::BOTTON)
  97.       if @selected_skill == false
  98.         Sound.play_decision
  99.         @active_battler.action.changed = false
  100.         start_target_enemy_selection(false, true)
  101.       else
  102.         if @skill.for_dead_friend? or @skill.scope == 0
  103.           Sound.play_buzzer
  104.           return
  105.         else
  106.           Sound.play_decision
  107.           @skill.change_scope
  108.           determine_skill(2)
  109.         end
  110.       end
  111.     end
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # □ 更新敌人目标选择(再定义)
  115.   #--------------------------------------------------------------------------
  116.   def update_target_enemy_selection
  117.     @target_enemy_window.update
  118.     if Input.trigger?(Input::B)
  119.       Sound.play_cancel
  120.       end_target_enemy_selection
  121.     elsif Input.trigger?(Input::C)
  122.       Sound.play_decision
  123.       @active_battler.action.target_index = @target_enemy_window.enemy.index
  124.       end_target_enemy_selection
  125.       end_skill_selection
  126.       end_item_selection
  127.       next_actor
  128.     elsif Input.trigger?(Change_Scope::BOTTON)
  129.       if @selected_skill == false
  130.         Sound.play_decision
  131.         @active_battler.action.changed = true
  132.         start_target_actor_selection(false, true)
  133.       else
  134.         if @skill.scope == 0
  135.           Sound.play_buzzer
  136.           return
  137.         else
  138.           Sound.play_decision
  139.           @skill.change_scope
  140.           determine_skill(1)
  141.         end
  142.       end
  143.     end
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # □ 确认技能(再定义)
  147.   #--------------------------------------------------------------------------
  148.   def determine_skill(before = 0)
  149.     @active_battler.action.set_skill(@skill.id)
  150.     if before == 0
  151.       @skill_window.active = false
  152.     end
  153.     if before != 0
  154.       $game_message.visible = false
  155.       @info_viewport.visible = true
  156.       if @skill.for_opponent?
  157.         start_target_enemy_selection(true, true)
  158.       else
  159.         start_target_actor_selection(true, true)
  160.       end
  161.     else
  162.       if @skill.need_selection?
  163.         if @skill.for_opponent?
  164.           start_target_enemy_selection(true)
  165.         else
  166.           start_target_actor_selection(true)
  167.         end
  168.       else
  169.         end_skill_selection
  170.         next_actor
  171.       end
  172.     end
  173.   end
  174. #==============================================================================
  175. # 囧 切换攻击目标
  176. #------------------------------------------------------------------------------
  177. #   制作者:feizhaodan
  178. #   版本号:1.0.0(话说这个需要么?)
  179. #==============================================================================
  180.   #--------------------------------------------------------------------------
  181.   # □ 更新技能选择(再定义)
  182.   #--------------------------------------------------------------------------
  183.   def update_skill_selection
  184.     @skill_window.active = true
  185.     @skill_window.update
  186.     @help_window.update
  187.     if Input.trigger?(Input::B)
  188.       Sound.play_cancel
  189.       end_skill_selection
  190.     elsif Input.trigger?(Input::C)
  191.       @skill = @skill_window.skill
  192.       @skill.get_last_scope
  193.       if @skill != nil
  194.         @active_battler.last_skill_id = @skill.id
  195.       end
  196.       if @active_battler.skill_can_use?(@skill)
  197.         Sound.play_decision
  198.         determine_skill
  199.       else
  200.         Sound.play_buzzer
  201.       end
  202.     end
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 开始敌人目标选择
  206.   #--------------------------------------------------------------------------
  207.   def start_target_enemy_selection(from_skill = false, before = false)
  208.     @target_enemy_window = Window_TargetEnemy.new
  209.     @selected_skill = from_skill
  210.     if before
  211.     @info_viewport.rect.x -= @target_actor_window.width
  212.     @info_viewport.ox -= @target_actor_window.width
  213.     @target_actor_window.active = false
  214.     @target_actor_window.visible = false
  215.     @target_actor_window = nil
  216.     end
  217.     @target_enemy_window.y = @info_viewport.rect.y
  218.     @info_viewport.rect.x += @target_enemy_window.width
  219.     @info_viewport.ox += @target_enemy_window.width
  220.     @actor_command_window.active = false
  221.   end
  222.   #--------------------------------------------------------------------------
  223.   # ● 开始同伴目标选择
  224.   #--------------------------------------------------------------------------
  225.   def start_target_actor_selection( from_skill = false, before = false)
  226.     @target_actor_window = Window_BattleStatus.new
  227.     @selected_skill = from_skill
  228.     if before
  229.     @info_viewport.rect.x -= @target_enemy_window.width
  230.     @info_viewport.ox -= @target_enemy_window.width
  231.     @target_enemy_window.active = false
  232.     @target_enemy_window.visible = false
  233.     @target_enemy_window = nil
  234.     end
  235.     @target_actor_window.index = 0
  236.     @target_actor_window.active = true
  237.     @target_actor_window.y = @info_viewport.rect.y
  238.     @info_viewport.rect.x += @target_actor_window.width
  239.     @info_viewport.ox += @target_actor_window.width
  240.     @actor_command_window.active = false
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ● 胜利处理
  244.   #--------------------------------------------------------------------------
  245.   def process_victory
  246.     @info_viewport.visible = false
  247.     @message_window.visible = true
  248.     RPG::BGM.stop
  249.     $game_system.battle_end_me.play
  250.     unless $BTEST
  251.       $game_temp.map_bgm.play
  252.       $game_temp.map_bgs.play
  253.     end
  254.     display_exp_and_gold
  255.     display_drop_items
  256.     display_level_up
  257.     $game_party.reset_skill_scope
  258.     battle_end(0)
  259.   end
  260. end
  261. #==============================================================================
  262. # ■ Game_Actor
  263. #------------------------------------------------------------------------------
  264. #  处理角色的类。本类在 Game_Actors 类 ($game_actors) 的内部使用、
  265. # Game_Party 类请参考 ($game_party) 。
  266. #==============================================================================

  267. class Game_Actor < Game_Battler
  268.   #--------------------------------------------------------------------------
  269.   # ● 学会技能(增加储存元目标处理)
  270.   #     skill_id : 技能 ID
  271.   #--------------------------------------------------------------------------
  272.   alias set_ori_scope_learn_skill learn_skill
  273.   def learn_skill(skill_id)
  274.     unless skill_learn?($data_skills[skill_id])
  275.       skill = $data_skills[skill_id]
  276.       skill.set_original_scope
  277.       set_ori_scope_learn_skill(skill_id)
  278.     end
  279.   end
  280. end
  281. #==============================================================================
  282. # ■ Game_Party
  283. #------------------------------------------------------------------------------
  284. #  处理同伴的类。包含金钱以及物品的信息。本类的实例请参考 $game_party。
  285. #==============================================================================

  286. class Game_Party < Game_Unit
  287.   def reset_skill_scope
  288.     for member in members
  289.       for skill in member.skills
  290.         skill.reset_scope
  291.       end
  292.     end
  293.   end
  294. end
  295. #==============================================================================
  296. # ■ Game_BattleAction
  297. #------------------------------------------------------------------------------
  298. #  处理战斗中的行动的类。这个类在 Game_Battler 类 的内部使用。
  299. #==============================================================================

  300. class Game_BattleAction
  301.   #--------------------------------------------------------------------------
  302.   # ● 定义实例变量
  303.   #--------------------------------------------------------------------------
  304.   attr_accessor :changed                   # 是否切换过
  305.   #--------------------------------------------------------------------------
  306.   # ● 清除
  307.   #--------------------------------------------------------------------------
  308.   alias change_scope_clear clear
  309.   def clear
  310.     change_scope_clear
  311.     @changed = false
  312.   end
  313.   #--------------------------------------------------------------------------
  314.   # ● 获取敌人同伴
  315.   #--------------------------------------------------------------------------
  316.   alias change_scope_opponents_unit opponents_unit
  317.   def opponents_unit
  318.     if @changed == false
  319.       change_scope_opponents_unit
  320.     else
  321.       if battler.actor?
  322.         return $game_party
  323.       else
  324.         return $game_troop
  325.       end
  326.     end
  327.   end
  328. end
  329. #==============================================================================
  330. # 囧 切换攻击目标
  331. #------------------------------------------------------------------------------
  332. #   制作者:feizhaodan
  333. #   版本号:1.0.0(话说这个需要么?)
  334. #==============================================================================
  335. #=end
复制代码


功能:在游戏中按你指定的键,可以切换目标类型。就是敌人《------》队友 的切换。
目前敌单体多次和敌数体随机只能切换成队友单体,而对死去的队友的技能也没法切换。

这个是我第三个脚本了。希望大家支持支持。

评分

参与人数 1星屑 +24 收起 理由
MSQ + 24

查看全部评分

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
2
发表于 2011-9-2 23:25:27 | 只看该作者
DQ某些版本里面有这种系统,这种玩意会用的人不多。不过有用是真的。
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

神仙

梦石
0
星屑
69
在线时间
596 小时
注册时间
2007-5-14
帖子
1289
3
发表于 2011-9-2 23:28:15 | 只看该作者
正好有用,抱走 ~
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
354
在线时间
1036 小时
注册时间
2011-5-19
帖子
2098
4
发表于 2011-9-3 19:02:34 | 只看该作者
会脚本真是好,来小小的支持一下~~
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1342
在线时间
675 小时
注册时间
2009-11-11
帖子
2790
5
发表于 2011-9-5 22:55:06 | 只看该作者
我还以为是 VX 战斗中换人。。。。要不要来一个。。。。

点评

这个已经有外站的完善版本了,所以就不做了(真心:做不出来啊...)  发表于 2011-9-8 20:38

嘿。嘿。嘿
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 22:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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