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

Project1

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

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2333
在线时间
275 小时
注册时间
2017-7-25
帖子
163
跳转到指定楼层
1
发表于 2018-8-3 01:00:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
比如A和B同时出战时某技能才能被使用或者使用时威力增强,物品也可以,以及希望这个组合可以被玩家控制,比如可以选择AB或AC或BD

Lv4.逐梦者

梦石
0
星屑
6260
在线时间
1481 小时
注册时间
2015-7-25
帖子
652

开拓者

2
发表于 2018-8-4 18:43:12 | 只看该作者
好久不写脚本了,趁这个机会正好练练手

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

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

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

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

脚本:
RUBY 代码复制
  1. class Game_BattlerBase
  2.   def skill_conditions_met?(skill)
  3.     usable_item_conditions_met?(skill) &&
  4.     skill_wtype_ok?(skill) && skill_cost_payable?(skill) &&
  5.     !skill_sealed?(skill.id) && !skill_type_sealed?(skill.stype_id) && skill_zh?(skill.id)
  6.   end
  7.   def skill_zh?(id)
  8.     if $data_skills[id].note.include?("<组合>")
  9.       return false unless ($zuhe && $zuhe[id])
  10.       if $game_party.battle_members.include?($zuhe[id][0]) && $game_party.battle_members.include?($zuhe[id][1])
  11.         return true
  12.       else
  13.         return false
  14.       end
  15.     end
  16.     return true
  17.   end
  18. end
  19. class Window_SkillList < Window_Selectable
  20.   def enable?(item)
  21.     true
  22.   end
  23. end
  24. class Window_BattleSkill < Window_SkillList
  25.   def enable?(item)
  26.     @actor && @actor.usable?(item)
  27.   end
  28. end
  29. class Window_SC < Window_Command
  30.   def initialize
  31.     super(0, 0)
  32.     select(0)
  33.   end
  34.   def window_width
  35.     return 160
  36.   end
  37.   def visible_line_number
  38.     2
  39.   end
  40.   def make_command_list
  41.     add_command("使用",   :iuse,iuse_en?)
  42.     add_command("组合",  :zuhe)
  43.   end
  44.   def set_item(item)
  45.     @item = item
  46.   end
  47.   def iuse_en?
  48.     $game_party.usable?(@item)
  49.   end
  50. end
  51. class Window_SCA < Window_MenuStatus
  52.   def window_width
  53.     100
  54.   end
  55.   def draw_item(index)
  56.     actor = $game_party.all_members[index]
  57.     enabled = $game_party.members.include?(actor)
  58.     rect = item_rect(index)
  59.     draw_item_background(index)
  60.     draw_actor_graphic(actor, rect.x+50, rect.y+50)
  61.   end
  62.   def process_ok
  63.     $zuhe[$id] << $game_party.all_members[index]
  64.     $game_party.remove_actor($game_party.all_members[index].id)
  65.     refresh
  66.     if (@cy.size - 2) >= $game_party.all_members.size
  67.       hide
  68.     end
  69.     call_ok_handler
  70.   end
  71.   def hide
  72.     super
  73.     return unless @cy
  74.     loop do
  75.       break if @cy == []
  76.     $game_party.add_actor(@cy[0].id)
  77.     @cy.delete_at(0)
  78.     end
  79.     if $zuhe[$id] && $zuhe[$id].size < 2
  80.       $zuhe[$id] = []
  81.     end
  82.   end
  83.   def show
  84.     super
  85.     $zuhe[$id] = []
  86.     @cy = $game_party.all_members
  87.     refresh
  88.   end
  89.   def process_cancel
  90.     super
  91.     hide
  92.   end
  93. end
  94. class Scene_Title < Scene_Base
  95.   def command_new_game
  96.     DataManager.setup_new_game
  97.     close_command_window
  98.     fadeout_all
  99.     $game_map.autoplay
  100.     $zuhe = {}
  101.     SceneManager.goto(Scene_Map)
  102.   end
  103. end
  104. class Scene_Skill
  105.   def start
  106.     super
  107.     create_help_window
  108.     create_command_window
  109.     create_status_window
  110.     create_item_window
  111.     c_cw
  112.     c_sca
  113.   end
  114.   def c_cw
  115.     @choicew = Window_SC.new
  116.     @choicew.set_item(@item_window.index)
  117.     @choicew.set_handler(:iuse,      method(:command_iuse))
  118.     @choicew.set_handler(:zuhe,      method(:command_zuhe))
  119.     @choicew.set_handler(:cancel,      method(:c_c))
  120.     @choicew.z = 999
  121.     @choicew.hide
  122.   end
  123.   def c_sca
  124.     @sca = Window_SCA.new(@item_window.index%2==0 ? 0 : 400,0)
  125.     @sca.set_handler(:ok,     method(:scaok))
  126.     @sca.set_handler(:cancel, method(:scacancel))
  127.     @sca.hide
  128.     @sca.z = 999
  129.   end
  130.   def scaok
  131.     @sca.activate
  132.     @item_window.activate if @sca.visible == false
  133.     @choicew.hide if @sca.visible == false
  134.   end
  135.   def scacancel
  136.     @sca.hide
  137.     @choicew.activate
  138.   end
  139.   def on_item_ok
  140.     @choicew.show
  141.     @choicew.activate
  142.   end
  143.   def command_iuse
  144.     @actor.last_skill.object = item
  145.     determine_item
  146.   end
  147.   def c_c
  148.     @choicew.hide
  149.     @item_window.activate
  150.   end
  151.   def command_zuhe
  152.     @actor.last_skill.object = item
  153.     $id = item.id
  154.     @sca.show
  155.     @sca.activate
  156.     @sca.select(0)
  157.   end
  158. end

点评

报错的原因应该是你用了旧存档进行测试的,我忘记写兼容旧存档的脚本了emmm...你要是要用的话我周六可以改一下,其他时间都要上班所以没时间  发表于 2018-8-5 20:57
emmmm,跟我希望的效果有点微量的出入,毕竟太随意选择的话就没什么意义了,另外点组合的时候85行NoMethodError,可能跟其他脚本冲突,先谢过大佬了  发表于 2018-8-4 20:54
笨肉包的首款像素OC游戏《花城梦之心》尝试制作中~
目前的坑 【不可思议的迷宫】幽灵契约外传:歌莉娅
持续更新中~ 当前进度 v0.28
大版本更新时才会更新网盘文件,预计下次大版本更新:v0.30
完成度:
主线 15% 支线 0% 数据库 6% 系统 86% 美术 6%
两边同时填坑~
( 这里是笨肉包~专修魔法!目标是大魔法师!
( 坑太大啦,一个人填不完啦hhh 一定会填完的嗯...
( 每天都和bug们比试魔力~吾之魔法将扫平一切!
( 弱点是美术,魔法修行之余再补补课吧~
( 哼哼哼~这便是魔法的力量!
大家都离开啦,笨肉包也不知道还能坚持多久呀...
这是属于笨肉包一个人的旅行(再见了...蚊子湯,七重酱,笨肉包永远想你们!TwT
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 02:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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