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

Project1

 找回密码
 注册会员
搜索
查看: 388|回复: 11

[已经解决] 怎样在选择攻击命令后再添加一个命令框来选择攻击部位?

[复制链接]

Lv2.观梦者

梦石
0
星屑
349
在线时间
34 小时
注册时间
2021-3-17
帖子
23
发表于 2021-3-17 14:59:01 | 显示全部楼层 |阅读模式

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

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

x
前辈朋友们,问个问题:现在我的脚本是这样的选择攻击命令后开始选择敌人,我想要在选择敌人前再添加一个命令选项用来选择攻击敌人的部位:比如头部、身体、手部、肩部等,该怎么操作?拜托~拜托~

Lv2.观梦者

梦石
0
星屑
349
在线时间
34 小时
注册时间
2021-3-17
帖子
23
 楼主| 发表于 2021-3-18 14:08:26 | 显示全部楼层
  1. if @active_battler.is_a?(Game_Actor) and @active_battler.element_rate(161) == 50
  2.     @command_window = Window_Command.new(160, ["射頭" ,"射手" ,"射甲" ,"射足"])
  3.     @command_window.back_opacity = 160
  4.     @command_window.x = 320 - @command_window.width/2
  5.     @command_window.y = 200
  6.   
  7.     if Input.trigger?(Input::B)
  8.       $game_system.se_play($data_system.cancel_se)
  9.       return
  10.     end
  11.     if Input.trigger?(Input::C)
  12.       $game_system.se_play($data_system.decision_se)
  13.       case @command_window.index
  14.       when 0
  15.       $game_variables[215] = 1
  16.       when 1
  17.       $game_variables[215] = 2
  18.       when 2
  19.       $game_variables[215] = 3
  20.       when 3
  21.       $game_variables[215] = 4
  22.       end

  23.     end
复制代码
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
349
在线时间
34 小时
注册时间
2021-3-17
帖子
23
 楼主| 发表于 2021-3-18 14:09:19 | 显示全部楼层
我代码十这么写的,进去没反应,搞不懂
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
349
在线时间
34 小时
注册时间
2021-3-17
帖子
23
 楼主| 发表于 2021-3-18 22:59:34 | 显示全部楼层
困扰好几天了,自己顶
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22649
在线时间
7779 小时
注册时间
2009-3-15
帖子
4017
发表于 2021-3-19 14:54:34 | 显示全部楼层
用多个敌人当做部位就行..一般也是这么做的..
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
349
在线时间
34 小时
注册时间
2021-3-17
帖子
23
 楼主| 发表于 2021-3-19 15:41:20 | 显示全部楼层
soulsaga 发表于 2021-3-19 14:54
用多个敌人当做部位就行..一般也是这么做的..

没听懂,我现在是队伍有5人,其中一人拿弓箭,它在攻击时要选择攻击部位,其他人攻击就直接选择敌人了,
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22649
在线时间
7779 小时
注册时间
2009-3-15
帖子
4017
发表于 2021-3-19 16:00:49 | 显示全部楼层
青梅不酸 发表于 2021-3-19 15:41
没听懂,我现在是队伍有5人,其中一人拿弓箭,它在攻击时要选择攻击部位,其他人攻击就直接选择敌人了, ...

要各自分开的的啊..那只有脚本了..
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
349
在线时间
34 小时
注册时间
2021-3-17
帖子
23
 楼主| 发表于 2021-3-19 17:53:55 | 显示全部楼层
soulsaga 发表于 2021-3-19 16:00
要各自分开的的啊..那只有脚本了..

不懂脚本,但是突发奇想之后就想实现它
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2197
在线时间
50 小时
注册时间
2020-1-8
帖子
87
发表于 2021-3-20 16:01:14 | 显示全部楼层
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 3)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================

  6. class Scene_Battle
  7.   #--------------------------------------------------------------------------
  8.   # ● 刷新画面 (角色命令回合)
  9.   #--------------------------------------------------------------------------
  10.   def update_phase3
  11.     # 敌人光标有效的情况下
  12.     if @enemy_arrow != nil
  13.       update_phase3_enemy_select
  14.     # 角色光标有效的情况下
  15.     elsif @actor_arrow != nil
  16.       update_phase3_actor_select
  17.     # 特技窗口有效的情况下
  18.     elsif @skill_window != nil
  19.       update_phase3_skill_select
  20.     # 物品窗口有效的情况下
  21.     elsif @item_window != nil
  22.       update_phase3_item_select
  23.     #--------------------------------------------------------------------------  
  24.     elsif @archery_window != nil
  25.       update_phase3_archery_select
  26.     #--------------------------------------------------------------------------
  27.     # 角色指令窗口有效的情况下
  28.     elsif @actor_command_window.active
  29.       update_phase3_basic_command
  30.     end
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 刷新画面 (角色命令回合 : 基本命令)
  34.   #--------------------------------------------------------------------------
  35.   def update_phase3_basic_command
  36.     # 按下 B 键的情况下
  37.     if Input.trigger?(Input::B)
  38.       # 演奏取消 SE
  39.       $game_system.se_play($data_system.cancel_se)
  40.       # 转向前一个角色的指令输入
  41.       phase3_prior_actor
  42.       return
  43.     end
  44.     # 按下 C 键的情况下
  45.     if Input.trigger?(Input::C)
  46.       # 角色指令窗口光标位置分之
  47.       case @actor_command_window.index
  48.       when 0  # 攻击
  49.         # 演奏确定 SE
  50.         $game_system.se_play($data_system.decision_se)
  51.         # 设置行动
  52.         @active_battler.current_action.kind = 0
  53.         @active_battler.current_action.basic = 0
  54.         #----------------------------------------------------------------------
  55.         return start_archery_select if call_archery_window?
  56.         #----------------------------------------------------------------------
  57.         # 开始选择敌人
  58.         start_enemy_select
  59.       when 1  # 特技
  60.         # 演奏确定 SE
  61.         $game_system.se_play($data_system.decision_se)
  62.         # 设置行动
  63.         @active_battler.current_action.kind = 1
  64.         # 开始选择特技
  65.         start_skill_select
  66.       when 2  # 防御
  67.         # 演奏确定 SE
  68.         $game_system.se_play($data_system.decision_se)
  69.         # 设置行动
  70.         @active_battler.current_action.kind = 0
  71.         @active_battler.current_action.basic = 1
  72.         # 转向下一位角色的指令输入
  73.         phase3_next_actor
  74.       when 3  # 物品
  75.         # 演奏确定 SE
  76.         $game_system.se_play($data_system.decision_se)
  77.         # 设置行动
  78.         @active_battler.current_action.kind = 2
  79.         # 开始选择物品
  80.         start_item_select
  81.       end
  82.       return
  83.     end
  84.   end
  85. #--------------------------------------------------------------------------  
  86.   def call_archery_window?
  87.     return false unless @active_battler.is_a?(Game_Actor)
  88.     # 这里根据职业判断,其他判断自行修改
  89.     return false unless @active_battler.class_id == 5
  90.     return true
  91.   end
  92.   
  93.   def start_archery_select
  94.     @archery_window = Window_Command.new(160, ["射頭" ,"射手" ,"射甲" ,"射足"])
  95.     @archery_window.y = 160
  96.     @archery_window.back_opacity = 160
  97.     @archery_window.index = 0
  98.     @archery_window.x = @actor_index * 160   
  99.     @actor_command_window.active = false
  100.     @actor_command_window.visible = false
  101.     @help_window.visible = false
  102.   end
  103.   
  104.   def end_archery_select
  105.     @archery_window.dispose
  106.     @archery_window = nil
  107.   end
  108.   
  109.   def update_phase3_archery_select
  110.     @archery_window.visible = true
  111.     @archery_window.update
  112.     if Input.trigger?(Input::B)
  113.       $game_system.se_play($data_system.cancel_se)
  114.       end_archery_select
  115.       @actor_command_window.active = true
  116.       @actor_command_window.visible = true
  117.       @actor_command_window.index = 0
  118.       return
  119.     end
  120.     if Input.trigger?(Input::C)
  121.       $game_system.se_play($data_system.decision_se)      
  122.       $game_variables[215] = @archery_window.index + 1      
  123.       end_archery_select
  124.       start_enemy_select
  125.       return
  126.     end
  127.   end
  128. #--------------------------------------------------------------------------
  129. end
复制代码

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
349
在线时间
34 小时
注册时间
2021-3-17
帖子
23
 楼主| 发表于 2021-3-22 22:10:29 | 显示全部楼层

非常感谢码那么长的代码,今天回去试了下,窗口出来了,但无法上下选择,确定、取消都无效,我再试试,搞不定再请教哈
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2021-6-23 14:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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