查看: 2234|回复: 4

[已经解决] 请问如何获取输入的战斗指令是什么?

[复制链接]
梦石
0
星屑
4627
在线时间
818 小时
注册时间
2017-7-14
回帖
116

开拓者

发表于 2019-1-9 19:24:01 | 显示全部楼层 |阅读模式

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

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

×
就是战斗输入指令时,回合开始前,如何获取给角色下达的什么指令呢?比如用的是几号技能或者物品。在哪里能P出来?
梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2019-1-9 23:10:28 | 显示全部楼层
[pre lang="ruby"]class Scene_Battle
  alias cld99_use_item use_item
  def use_item
    p "@subject=#{@subject}"
    p "use_item=#{@subject.current_action.item}"
    cld99_use_item
  end
end[/pre]

QQ截图20190109230921.png

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

[pre lang="ruby"]class Scene_Battle
  alias cld99_use_item use_item
  def use_item
    p "@subject=#{@subject.name}" #改为输出对象的名字
    p "use_item=#{@subject.current_action.item.name}"
    cld99_use_item
  end
end[/pre]

QQ截图20190109231035.png
用头画头像,用脚写脚本
回复

使用道具 举报

梦石
0
星屑
4627
在线时间
818 小时
注册时间
2017-7-14
回帖
116

开拓者

 楼主| 发表于 2019-1-10 10:35:31 | 显示全部楼层
KB.Driver 发表于 2019-1-9 23:10
class Scene_Battle
  alias cld99_use_item use_item
  def use_item

感谢大佬的 帮忙,可能我没表达清楚,我想的效果是:在输入指令的时候能够得到角色输入的是什么指令,你给的脚本是战斗过程中吧,比如1号角色输入的是普通攻击(技能ID1),那么执行下一个角色输入的时候可以得到上一个角色输入的是什么指令。
回复

使用道具 举报

梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2019-1-10 14:52:26 | 显示全部楼层
本帖最后由 KB.Driver 于 2019-1-10 14:55 编辑
wan5337088 发表于 2019-1-10 10:35
感谢大佬的 帮忙,可能我没表达清楚,我想的效果是:在输入指令的时候能够得到角色输入的是什么指令,你 ...


经过测试,角色刚选择完的时候就显示要这样:
[pre lang="ruby"]
class Scene_Battle
  alias cld99_on_enemy_ok on_enemy_ok
  def on_enemy_ok
    p_input ##
    cld99_on_enemy_ok   
  end
  
  alias cld99_on_actor_ok on_actor_ok
  def on_actor_ok
    p_input ##
    cld99_on_actor_ok   
  end
  
  def command_guard
    BattleManager.actor.input.set_guard
    p_input ####
    next_command
  end
  
  def on_skill_ok
    @skill = @skill_window.item
    BattleManager.actor.input.set_skill(@skill.id)
    BattleManager.actor.last_skill.object = @skill
    if !@skill.need_selection?
      p_input(@skill.id) ####
      @skill_window.hide
      next_command
    elsif @skill.for_opponent?
      select_enemy_selection
    else
      select_actor_selection
    end
  end
  
  def on_item_ok
    @item = @item_window.item
    BattleManager.actor.input.set_item(@item.id)
    if !@item.need_selection?
      p_input(@item.id) ####
      @item_window.hide
      next_command
    elsif @item.for_opponent?
      select_enemy_selection
    else
      select_actor_selection
    end
    $game_party.last_item.object = @item
  end
  
  def p_input(id = nil)
    actor = BattleManager.actor
    input = actor.input
    id ||= input.data_id
    puts "#{actor.name}使用了#{id}号#{input.type}'#{input.item.name}'"
  end
end

class Game_Action
  attr_reader :type, :data_id
  
  alias :cld99_set_skill :set_skill
  def set_skill(id)
    @type = "技能"
    @data_id = id
    cld99_set_skill(id)
  end
  
  alias :cld99_set_item :set_item
  def set_item(id)
    @type = "物品"
    @data_id = id
    cld99_set_item(id)
  end
end
[/pre]
居然搞了一个小时……我好菜啊(
1.gif

评分

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

查看全部评分

用头画头像,用脚写脚本
回复

使用道具 举报

梦石
0
星屑
4627
在线时间
818 小时
注册时间
2017-7-14
回帖
116

开拓者

 楼主| 发表于 2019-1-10 14:59:39 | 显示全部楼层
KB.Driver 发表于 2019-1-10 14:52
经过测试,角色刚选择完的时候就显示要这样:

class Scene_Battle

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

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部