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

Project1

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

[RMVA发布] 双向技能

[复制链接]

Lv2.观梦者

天仙

梦石
0
星屑
610
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

跳转到指定楼层
1
发表于 2012-2-26 02:10:58 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
效果:
让技能或物品可以作用在敌人与我方队员身上
可以让同样的技能,使用在敌方身上与我方身上不同(也可以相同)
这样就可以只做出攻击队友来除去睡眠状态这一类的效果

使用方法:
在技能/物品备注里面填写 [for_both]
则可以指定为双向技能/物品

在技能/物品备注里面填写 [twin_item ID]
则可以指定双向技能/物品所使用的第二项技能/物品
没有填写时,默认为原技能ID+1

设定方法

下面的说明,技能与物品通用
要设定为双向技能的技能(假设为18号技能)备注中填写 [for_both]
效果范围设定为“敌方单体”

将第19号技能的效果范围设定为“我方单体”
其他的设定可以自由修改,我方的效果可以与敌方的不同。

如此选择目标时,则会先出现敌方目标窗口,
按 B 键再出现我方目标窗口。


如果第一个技能的效果范围设定为“我方单体”
那第二个技能必须设定为“敌方单体”
如此选择目标时,则会先出现我方目标窗口,
按 B 键再出现敌方目标窗口。

注意:
如果是1号技能(即普通攻击),在不修改脚本的情况下,2号技能就是防御
那这时候就可以使用 [twin_item ID] 来指定对我方使用技能的效果是几号技能
例如用 [twin_item 30],那在对我方使用攻击时,实际产生效用的是30号技能

RUBY 代码复制
  1. class RPG::UsableItem < RPG::BaseItem
  2.   #--------------------------------------------------------------------------
  3.   # ● 判断是否为双向技能
  4.   #--------------------------------------------------------------------------
  5.   def for_both?
  6.     return @for_both unless @for_both.nil?
  7.     self.note.split(/[\r\n]+/).each{ |line|
  8.       if line =~ /\[for_both\]/
  9.         return @for_both = true
  10.       end}
  11.     return @for_both = false
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 指定双向技能/物品的第二个技能/物品
  15.   #--------------------------------------------------------------------------
  16.   def twin_item
  17.     return self.id unless for_both?
  18.     return @twin_item_id unless @twin_item_id.nil?
  19.     @twin_item_id = self.id + 1
  20.     self.note.split(/[\r\n]+/).each{ |line|
  21.       if line =~ /\[twin_item (\d+)\]/
  22.         @twin_item_id = $1.to_i
  23.       end}
  24.     return @twin_item_id
  25.   end
  26. end
  27. class Scene_Battle < Scene_Base
  28.   #--------------------------------------------------------------------------
  29.   # ● 回合开始
  30.   #--------------------------------------------------------------------------
  31.   alias skill_for_both_turn_start turn_start
  32.   def turn_start
  33.     selection_reset
  34.     skill_for_both_turn_start
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 目标选择初始化
  38.   #--------------------------------------------------------------------------
  39.   def selection_reset
  40.     @from_enemy_selection = false
  41.     @from_actor_selection = false
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # ● 取消选择敌人目标时
  45.   #--------------------------------------------------------------------------
  46.   alias skill_for_both_on_enemy_cancel on_enemy_cancel
  47.   def on_enemy_cancel
  48.     item = current_used_item
  49.     if item.for_both? && !@from_actor_selection  # 判断是否为双向技能
  50.       change_current_item_selection(item)
  51.       @from_enemy_selection = true
  52.       select_actor_selection # 开启我方队员选择窗口
  53.       @enemy_window.hide
  54.     else
  55.       selection_reset
  56.       skill_for_both_on_enemy_cancel # 呼叫原有方法
  57.     end
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # ● 取消选择同伴目标时
  61.   #--------------------------------------------------------------------------
  62.   alias skill_for_both_on_actor_cancel on_actor_cancel
  63.   def on_actor_cancel
  64.     item = current_used_item
  65.     if item.for_both? && !@from_enemy_selection  # 判断是否为双向技能
  66.       change_current_item_selection(item)
  67.       @from_actor_selection = true
  68.       select_enemy_selection # 开启我方队员选择窗口
  69.       @actor_window.hide
  70.     else
  71.       if @actor_command_window.current_symbol == :attack
  72.         @actor_command_window.activate
  73.       end
  74.       selection_reset
  75.       skill_for_both_on_actor_cancel # 呼叫原有方法
  76.     end
  77.   end
  78.   #--------------------------------------------------------------------------
  79.   # ● 获取当前技能/物品
  80.   #--------------------------------------------------------------------------
  81.   def current_used_item
  82.     case @actor_command_window.current_symbol
  83.     when :attack
  84.       return $data_skills[1]
  85.     when :skill
  86.       return @skill
  87.     when :item
  88.       return @item
  89.     end
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 当前技能/物品替换
  93.   #--------------------------------------------------------------------------
  94.   def change_current_item_selection(item)
  95.     case @actor_command_window.current_symbol
  96.     when :attack, :skill
  97.       BattleManager.actor.input.set_skill(item.twin_item)
  98.     when :item
  99.       BattleManager.actor.input.set_item(item.twin_item)
  100.     end
  101.   end
  102. end
  103. class Game_BattlerBase
  104.   #--------------------------------------------------------------------------
  105.   # ● 判断物品是否能使用
  106.   #--------------------------------------------------------------------------
  107.   alias skill_for_both_item_conditions_met? item_conditions_met?
  108.   def item_conditions_met?(item)
  109.     r_item_id = has_twin_item?(item)
  110.     if r_item_id
  111.       real_item = $data_items[r_item_id]
  112.       return skill_for_both_item_conditions_met?(real_item)
  113.     else
  114.       skill_for_both_item_conditions_met?(item)
  115.     end
  116.   end
  117.   #--------------------------------------------------------------------------
  118.   # ● 判断物品是否双向物品的第二个物品
  119.   #--------------------------------------------------------------------------
  120.   def has_twin_item?(item)
  121.     $data_items.each{ |i|
  122.       next unless i
  123.       next unless i.for_both?
  124.       t_id = i.twin_item
  125.       return i.id if t_id == item.id
  126.     }
  127.     return false
  128.   end
  129. end
VA脚本开工中...
偷窃脚本1.0 - 已完成

Lv2.观梦者

天仙

梦石
0
星屑
610
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

2
 楼主| 发表于 2012-2-26 12:24:18 | 显示全部楼层
本帖最后由 雪流星 于 2012-2-25 22:25 编辑
杂兵天下的马甲 发表于 2012-2-25 21:33
6R总是比WP慢不只一两步。


嗯,他的脚本默认所有技能都能双向选择
而且是直接修改 Game_Action 中的目标
这样的话就没办法我方跟敌方效果不同了{:1_3:}@

点评

不过国外的那个系统配合YEA-AceBattleEngine可以翻转全体技能。  发表于 2012-2-26 17:35
的确。  发表于 2012-2-26 17:06
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-4 18:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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