查看: 1894|回复: 3

[已经过期] 队伍里同时有两个特定角色时才能使用或效果增强的技能

[复制链接]
梦石
0
星屑
2338
在线时间
275 小时
注册时间
2017-7-25
回帖
128
发表于 2018-8-3 01:00:05 | 显示全部楼层 |阅读模式

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

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

×
比如A和B同时出战时某技能才能被使用或者使用时威力增强,物品也可以,以及希望这个组合可以被玩家控制,比如可以选择AB或AC或BD
梦石
0
星屑
6375
在线时间
1473 小时
注册时间
2015-7-25
回帖
609

极短25参与开拓者

发表于 2018-8-4 18:43:12 | 显示全部楼层
好久不写脚本了,趁这个机会正好练练手

使用方法:
1.主脚本放在main上方
2.在需要组合的技能备注里写上<组合>

玩家自由选择组合玩法:
菜单-技能-选择一个技能-组合-然后选择2名成员

玩家重置组合方法:
重新选择即可,不选择或是只选一个也视为重置组合(组合无效)

注意事项:
只经过简单的测试,并不保证没有其他bug

脚本:
[pre lang="ruby"]class Game_BattlerBase
  def skill_conditions_met?(skill)
    usable_item_conditions_met?(skill) &&
    skill_wtype_ok?(skill) && skill_cost_payable?(skill) &&
    !skill_sealed?(skill.id) && !skill_type_sealed?(skill.stype_id) && skill_zh?(skill.id)
  end
  def skill_zh?(id)
    if $data_skills[id].note.include?("<组合>")
      return false unless ($zuhe && $zuhe[id])
      if $game_party.battle_members.include?($zuhe[id][0]) && $game_party.battle_members.include?($zuhe[id][1])
        return true
      else
        return false
      end
    end
    return true
  end
end
class Window_SkillList < Window_Selectable
  def enable?(item)
    true
  end
end
class Window_BattleSkill < Window_SkillList
  def enable?(item)
    @actor && @actor.usable?(item)
  end
end
class Window_SC < Window_Command
  def initialize
    super(0, 0)
    select(0)
  end
  def window_width
    return 160
  end
  def visible_line_number
    2
  end
  def make_command_list
    add_command("使用",   :iuse,iuse_en?)
    add_command("组合",  :zuhe)
  end
  def set_item(item)
    @item = item
  end
  def iuse_en?
    $game_party.usable?(@item)
  end
end
class Window_SCA < Window_MenuStatus
  def window_width
    100
  end
  def draw_item(index)
    actor = $game_party.all_members[index]
    enabled = $game_party.members.include?(actor)
    rect = item_rect(index)
    draw_item_background(index)
    draw_actor_graphic(actor, rect.x+50, rect.y+50)
  end
  def process_ok
    $zuhe[$id] << $game_party.all_members[index]
    $game_party.remove_actor($game_party.all_members[index].id)
    refresh
    if (@cy.size - 2) >= $game_party.all_members.size
      hide
    end
    call_ok_handler
  end
  def hide
    super
    return unless @cy
    loop do
      break if @cy == []
    $game_party.add_actor(@cy[0].id)
    @cy.delete_at(0)
    end
    if $zuhe[$id] && $zuhe[$id].size < 2
      $zuhe[$id] = []
    end
  end
  def show
    super
    $zuhe[$id] = []
    @cy = $game_party.all_members
    refresh
  end
  def process_cancel
    super
    hide
  end
end
class Scene_Title < Scene_Base
  def command_new_game
    DataManager.setup_new_game
    close_command_window
    fadeout_all
    $game_map.autoplay
    $zuhe = {}
    SceneManager.goto(Scene_Map)
  end
end
class Scene_Skill
  def start
    super
    create_help_window
    create_command_window
    create_status_window
    create_item_window
    c_cw
    c_sca
  end
  def c_cw
    @choicew = Window_SC.new
    @choicew.set_item(@item_window.index)
    @choicew.set_handler(:iuse,      method(:command_iuse))
    @choicew.set_handler(:zuhe,      method(:command_zuhe))
    @choicew.set_handler(:cancel,      method(:c_c))
    @choicew.z = 999
    @choicew.hide
  end
  def c_sca
    @sca = Window_SCA.new(@item_window.index%2==0 ? 0 : 400,0)
    @sca.set_handler(:ok,     method(:scaok))
    @sca.set_handler(:cancel, method(:scacancel))
    @sca.hide
    @sca.z = 999
  end
  def scaok
    @sca.activate
    @item_window.activate if @sca.visible == false
    @choicew.hide if @sca.visible == false
  end
  def scacancel
    @sca.hide
    @choicew.activate
  end
  def on_item_ok
    @choicew.show
    @choicew.activate
  end
  def command_iuse
    @actor.last_skill.object = item
    determine_item
  end
  def c_c
    @choicew.hide
    @item_window.activate
  end
  def command_zuhe
    @actor.last_skill.object = item
    $id = item.id
    @sca.show
    @sca.activate
    @sca.select(0)
  end
end[/pre]

点评

报错的原因应该是你用了旧存档进行测试的,我忘记写兼容旧存档的脚本了emmm...你要是要用的话我周六可以改一下,其他时间都要上班所以没时间  发表于 2018-8-5 20:57
emmmm,跟我希望的效果有点微量的出入,毕竟太随意选择的话就没什么意义了,另外点组合的时候85行NoMethodError,可能跟其他脚本冲突,先谢过大佬了  发表于 2018-8-4 20:54
笨肉包的游戏讨论群932812135 (实时更新) 喜欢的话欢迎加入~
目前的坑
??? #像素风OC游戏 准备中 短篇-约5小时
花城梦之心 #像素风OC游戏 系统开发+素材绘制中
【不可思议的迷宫】幽灵契约外传:歌莉娅 v0.4 游戏文件已更新
同时更新中~ (沉迷摸鱼中~更新速度较慢请见谅w)
这是属于笨肉包一个人的旅行~(这只肉包又在摸鱼!
旅途的最终目标~ ???(保密~
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部