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

Project1

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

[已经解决] 战斗复活的问题

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2180
在线时间
1011 小时
注册时间
2015-10-17
帖子
1285
跳转到指定楼层
1
发表于 2017-1-23 13:32:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 fjm 于 2017-1-24 11:30 编辑

我方角色挂了,拉起来后,当前回合不会战斗,怎样才能使其当前回合也能战斗

点评

fjm
我发sidew代码老是提示内部错误,就发了下面这个链接,我就用了这个战斗脚本,没其他的了  发表于 2017-1-24 11:51
关于这个,我需要看你的战斗系统脚本(因为关系到追加角色回合)。最好是附上Scripts.rvdata2(如果不想公开可以私讯)。  发表于 2017-1-24 11:34
fjm
记得以前玩梦幻西游,人物拉起来当前回合就能打  发表于 2017-1-23 16:11
fjm
是回合制  发表于 2017-1-23 16:07
另外根据版规A-10-d,你这帖明显严重资讯不足。战斗系统用啥,回合机制是怎样的,插件脚本呢?啥都没提供。我们这儿可没通灵师。  发表于 2017-1-23 14:32

Lv3.寻梦者

梦石
0
星屑
2180
在线时间
1011 小时
注册时间
2015-10-17
帖子
1285
2
 楼主| 发表于 2017-1-24 11:48:53 | 只看该作者
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
6901
在线时间
7028 小时
注册时间
2013-11-2
帖子
1344

开拓者剧作品鉴家

3
发表于 2017-1-24 13:27:07 | 只看该作者
根据提供的范例大致弄出了效果:

RUBY 代码复制
  1. module BattleManager
  2.   class << self
  3.  
  4.     def revive_input_set(actor)
  5.       @revive_input = true
  6.       $game_party.members.each_with_index do |v,i|
  7.         if v.id == actor.id
  8.           @revive_actor_index = i
  9.           break
  10.         end  
  11.       end  
  12.     end
  13.  
  14.     def revive_input
  15.       @revive_input
  16.     end
  17.  
  18.     def revive_input_start
  19.       @revive_input_start
  20.     end
  21.  
  22.     def setup_revive_input
  23.       @revive_input_start = true
  24.       @actor_index = @revive_actor_index
  25.       actor.make_actions
  26.       @revive_input = false
  27.     end
  28.  
  29.     def inject_revive_actor
  30.       @action_battlers.insert(0,actor)
  31.     end
  32.  
  33.     alias :rev_next_command :next_command
  34.     def next_command
  35.       if @revive_input_start
  36.         inject_revive_actor
  37.         @revive_input_start = false
  38.         return false
  39.       end  
  40.       rev_next_command
  41.     end
  42.  
  43.     alias :rev_prior_command :prior_command
  44.     def prior_command
  45.       return false if @revive_input_start
  46.       rev_prior_command
  47.     end
  48.  
  49.     def in_turn?
  50.       return false if @revive_input_start
  51.       @phase == :turn
  52.     end
  53.  
  54.   end
  55. end
  56.  
  57. class Scene_Battle < Scene_Base
  58.  
  59.   def process_action
  60.     return if scene_changing?
  61.     if !@subject || !@subject.current_action
  62.       if BattleManager.revive_input
  63.           BattleManager.setup_revive_input
  64.           start_actor_command_selection
  65.           return
  66.       end  
  67.       @subject = BattleManager.next_subject  
  68.     end
  69.     return turn_end unless @subject
  70.     if @subject.current_action
  71.       @subject.current_action.prepare
  72.       if @subject.current_action.valid?
  73.         @status_window.open
  74.         execute_action
  75.       end
  76.       @subject.remove_current_action
  77.     end
  78.     process_action_end unless @subject.current_action
  79.   end
  80.  
  81.   def prior_command
  82.     if BattleManager.prior_command
  83.       start_actor_command_selection
  84.     elsif BattleManager.revive_input_start
  85.         @actor_command_window.activate
  86.     else  
  87.         start_party_command_selection
  88.     end
  89.   end  
  90.  
  91. end  
  92.  
  93. class Game_Actor
  94.  
  95.   def revive
  96.                 @hp = 1 if @hp == 0
  97.     return if !$game_party.in_battle
  98.     BattleManager.revive_input_set(self)
  99.         end
  100.  
  101. end


在范例内测试没问题,复活的角色会立刻获得行动机会。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2180
在线时间
1011 小时
注册时间
2015-10-17
帖子
1285
4
 楼主| 发表于 2017-1-24 16:25:40 | 只看该作者
RaidenInfinity 发表于 2017-1-24 13:27
根据提供的范例大致弄出了效果:

非常感谢,测试了下,效果出来了,可是复活的队友一旦战斗就出错,还有就是原本设置了自动战斗的队员拉起来后,
就会变回手动的了,这两个问题能解决吗

6111.jpg (26.6 KB, 下载次数: 28)

6111.jpg

点评

收到了,下载中  发表于 2017-1-24 17:23
fjm
打错字,是消息收到没  发表于 2017-1-24 17:22
fjm
已经发消息了,有受到没  发表于 2017-1-24 17:22
因为我用默认的工程测试是没问题的。自动战斗的话,这个是真的没考虑到。  发表于 2017-1-24 16:59
复活的队友战斗出错可能是真的有脚本撞到的问题(也许别的脚本出事)。建议提供Scripts.rvdata2(压缩了放度盘,要公开还是私讯可以选择)  发表于 2017-1-24 16:58
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
6901
在线时间
7028 小时
注册时间
2013-11-2
帖子
1344

开拓者剧作品鉴家

5
发表于 2017-1-24 18:01:17 | 只看该作者
本帖最后由 RaidenInfinity 于 2017-1-25 20:39 编辑

自动战斗已经修正,单人多次行动复活已修正

RUBY 代码复制
  1. module BattleManager
  2.   class << self
  3.  
  4.     alias :rev_init_members :init_members
  5.     def init_members
  6.       @revive_input = []
  7.       @revive_input_start = []
  8.       @revive_actor_index = []
  9.     end
  10.  
  11.     def revive_input_set(actor)
  12.       @revive_input.push(true)
  13.       $game_party.members.each_with_index do |v,i|
  14.         if v.id == actor.id
  15.           @revive_actor_index.push(i)
  16.           break
  17.         end  
  18.       end  
  19.     end
  20.  
  21.     def revive_input
  22.       @revive_input[0]
  23.     end
  24.  
  25.     def revive_input_start
  26.       @revive_input_start[0]
  27.     end
  28.  
  29.     def setup_revive_input
  30.       @revive_input.shift
  31.       @actor_index = @revive_actor_index.shift
  32.       actor.make_actions
  33.       if actor.auto_battle?
  34.         actor.make_auto_battle_actions
  35.         inject_revive_actor
  36.       else
  37.         @revive_input_start.push(true)
  38.         SceneManager.scene.start_actor_command_selection
  39.       end
  40.     end
  41.  
  42.     def inject_revive_actor
  43.       actor.make_speed
  44.       @action_battlers.push(actor)
  45.       @action_battlers.sort! {|a,b| b.speed - a.speed }
  46.     end
  47.  
  48.     alias :rev_next_command :next_command
  49.     def next_command
  50.       if revive_input_start
  51.         inject_revive_actor
  52.         @revive_input_start.shift
  53.         return false
  54.       end  
  55.       rev_next_command
  56.     end
  57.  
  58.     alias :rev_prior_command :prior_command
  59.     def prior_command
  60.       return false if revive_input_start
  61.       rev_prior_command
  62.     end
  63.  
  64.     def in_turn?
  65.       return false if revive_input_start
  66.       @phase == :turn
  67.     end
  68.  
  69.   end
  70. end
  71.  
  72. class Scene_Battle < Scene_Base
  73.  
  74.   def process_action
  75.     return if scene_changing?
  76.     if !@subject || !@subject.current_action
  77.       if BattleManager.revive_input
  78.           BattleManager.setup_revive_input
  79.           return
  80.       end  
  81.       @subject = BattleManager.next_subject  
  82.     end
  83.     return turn_end unless @subject
  84.     if @subject.current_action
  85.       @subject.current_action.prepare
  86.       if @subject.current_action.valid?
  87.         @status_window.open
  88.         execute_action
  89.       end
  90.       @subject.remove_current_action
  91.     end
  92.     process_action_end unless @subject.current_action
  93.   end
  94.  
  95.   def prior_command
  96.     if BattleManager.prior_command
  97.       start_actor_command_selection
  98.     elsif BattleManager.revive_input_start
  99.         @actor_command_window.activate
  100.     else  
  101.         start_party_command_selection
  102.     end
  103.   end  
  104.  
  105. end  
  106.  
  107. class Game_Actor
  108.  
  109.   def revive
  110.                 @hp = 1 if @hp == 0
  111.     return if !$game_party.in_battle
  112.     BattleManager.revive_input_set(self)
  113.         end
  114.  
  115. end


必须把它放在所有插件脚本的最后面(你的工程的情况是自动战斗脚本后面)。
此外,报错用了提供的工程但还是没遇到过,所以无法确认有这个状况/顺利排除。

点评

fjm
多谢分享,像我现在不懂脚本,所以都不知道那些脚本的功能,想自己改都感觉无从下手  发表于 2017-1-25 21:22
只要透彻地理解RMVA默认脚本各部分的运作原理,就能在不引起效率问题(如绘制太多东西)的前提下呼风唤雨。这些原理/感想我会在脚本教程里分享。  发表于 2017-1-25 21:17
fjm
非常感谢,问题解决了,感觉版主真是无所不能啊.  发表于 2017-1-25 21:08
目前是可以单个角色单回合多次使用复活了。(一次过复活全队的技能/物品理论上也可以用了)  发表于 2017-1-25 20:40
fjm
就是打BOSS的时候,有时候运气不好,一下子挂了好几个,只能全部拉起来,要不然没法打了,一个角色负责复活,一个奶妈负责回复,其余角色图省力都设置自动  发表于 2017-1-25 20:11

评分

参与人数 1星屑 +20 收起 理由
fjm + 20 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 03:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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