Project1

标题: 请问如何获取输入的战斗指令是什么? [打印本页]

作者: wan5337088    时间: 2019-1-9 19:24
标题: 请问如何获取输入的战斗指令是什么?
就是战斗输入指令时,回合开始前,如何获取给角色下达的什么指令呢?比如用的是几号技能或者物品。在哪里能P出来?
作者: KB.Driver    时间: 2019-1-9 23:10
RUBY 代码复制
  1. class Scene_Battle
  2.   alias cld99_use_item use_item
  3.   def use_item
  4.     p "@subject=#{@subject}"
  5.     p "use_item=#{@subject.current_action.item}"
  6.     cld99_use_item
  7.   end
  8. end




基本模式是这样。
不过这样子输出的是16进制object_id,建议换成你需要的参数,比如名字:

RUBY 代码复制
  1. class Scene_Battle
  2.   alias cld99_use_item use_item
  3.   def use_item
  4.     p "@subject=#{@subject.name}" #改为输出对象的名字
  5.     p "use_item=#{@subject.current_action.item.name}"
  6.     cld99_use_item
  7.   end
  8. end



作者: wan5337088    时间: 2019-1-10 10:35
KB.Driver 发表于 2019-1-9 23:10
class Scene_Battle
  alias cld99_use_item use_item
  def use_item

感谢大佬的 帮忙,可能我没表达清楚,我想的效果是:在输入指令的时候能够得到角色输入的是什么指令,你给的脚本是战斗过程中吧,比如1号角色输入的是普通攻击(技能ID1),那么执行下一个角色输入的时候可以得到上一个角色输入的是什么指令。
作者: KB.Driver    时间: 2019-1-10 14:52
本帖最后由 KB.Driver 于 2019-1-10 14:55 编辑
wan5337088 发表于 2019-1-10 10:35
感谢大佬的 帮忙,可能我没表达清楚,我想的效果是:在输入指令的时候能够得到角色输入的是什么指令,你 ...


经过测试,角色刚选择完的时候就显示要这样:
RUBY 代码复制
  1. class Scene_Battle
  2.   alias cld99_on_enemy_ok on_enemy_ok
  3.   def on_enemy_ok
  4.     p_input ##
  5.     cld99_on_enemy_ok   
  6.   end
  7.  
  8.   alias cld99_on_actor_ok on_actor_ok
  9.   def on_actor_ok
  10.     p_input ##
  11.     cld99_on_actor_ok   
  12.   end
  13.  
  14.   def command_guard
  15.     BattleManager.actor.input.set_guard
  16.     p_input ####
  17.     next_command
  18.   end
  19.  
  20.   def on_skill_ok
  21.     @skill = @skill_window.item
  22.     BattleManager.actor.input.set_skill(@skill.id)
  23.     BattleManager.actor.last_skill.object = @skill
  24.     if !@skill.need_selection?
  25.       p_input(@skill.id) ####
  26.       @skill_window.hide
  27.       next_command
  28.     elsif @skill.for_opponent?
  29.       select_enemy_selection
  30.     else
  31.       select_actor_selection
  32.     end
  33.   end
  34.  
  35.   def on_item_ok
  36.     @item = @item_window.item
  37.     BattleManager.actor.input.set_item(@item.id)
  38.     if !@item.need_selection?
  39.       p_input(@item.id) ####
  40.       @item_window.hide
  41.       next_command
  42.     elsif @item.for_opponent?
  43.       select_enemy_selection
  44.     else
  45.       select_actor_selection
  46.     end
  47.     $game_party.last_item.object = @item
  48.   end
  49.  
  50.   def p_input(id = nil)
  51.     actor = BattleManager.actor
  52.     input = actor.input
  53.     id ||= input.data_id
  54.     puts "#{actor.name}使用了#{id}号#{input.type}'#{input.item.name}'"
  55.   end
  56. end
  57.  
  58. class Game_Action
  59.   attr_reader :type, :data_id
  60.  
  61.   alias :cld99_set_skill :set_skill
  62.   def set_skill(id)
  63.     @type = "技能"
  64.     @data_id = id
  65.     cld99_set_skill(id)
  66.   end
  67.  
  68.   alias :cld99_set_item :set_item
  69.   def set_item(id)
  70.     @type = "物品"
  71.     @data_id = id
  72.     cld99_set_item(id)
  73.   end
  74. end

居然搞了一个小时……我好菜啊(

作者: wan5337088    时间: 2019-1-10 14:59
KB.Driver 发表于 2019-1-10 14:52
经过测试,角色刚选择完的时候就显示要这样:

class Scene_Battle

跪谢大佬,,,帮了大忙了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1