Project1

标题: 指令窗口怎么搞 [打印本页]

作者: towmix    时间: 2008-4-2 08:29
标题: 指令窗口怎么搞
请问在战斗中 下达指令的窗口怎么改变 控制他的脚本是哪部分?谢谢 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: wy29    时间: 2008-4-2 13:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: 光郎    时间: 2008-4-2 15:39
对了,如果使用了战斗指令图标化等脚本则要在这种最下面的脚本中进行搜索,所以如果你修改保存后无效的话记得Window_Command.new看看是不是有没有改全的。
作者: towmix    时间: 2008-4-2 19:28
以下引用wy29于2008-4-2 5:27:10的发言:

请查看class Scene_Battle第25行:

   本帖相关代码如下:
# 生成角色命令窗口
   s1 = $data_system.words.attack
   s2 = $data_system.words.skill
   s3 = $data_system.words.guard
   s4 = $data_system.words.item
   @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
   @actor_command_window.y = 160
   @actor_command_window.back_opacity = 160
   @actor_command_window.active = false
   @actor_command_window.visible = false

角色的命令窗口就是class Window_Command

如果要战斗画面、选择战斗与逃跑的窗口,
可以看看class Window_PartyCommand

我想问下 如果要增加变量的话 比如把“逃跑”定义在指令里 而不是象范例那样在开头 那应该在哪里面定义逃跑这个变量?谢谢~

作者: towmix    时间: 2008-4-2 19:37
以下引用wy29于2008-4-2 5:27:10的发言:

请查看class Scene_Battle第25行:

   本帖相关代码如下:
# 生成角色命令窗口
   s1 = $data_system.words.attack
   s2 = $data_system.words.skill
   s3 = $data_system.words.guard
   s4 = $data_system.words.item
   @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
   @actor_command_window.y = 160
   @actor_command_window.back_opacity = 160
   @actor_command_window.active = false
   @actor_command_window.visible = false

角色的命令窗口就是class Window_Command

如果要战斗画面、选择战斗与逃跑的窗口,
可以看看class Window_PartyCommand

补充一下 刚才我试着在下面加了个s5="逃跑" 虽然显示了 但是点他没什么用 在哪定义他的功能?谢谢
作者: 幻の飞鱼    时间: 2008-4-2 19:38
如果只是逃跑的问题的话……

引用一下

首先按照取消战斗、逃跑的办法取消战斗、逃跑项
在Scene_Battle 2选项里面修改
  # 有效化同伴指令窗口
  @party_command_window.active = false
  @party_command_window.visible = false
然后再把第62行后面的
def update_phase 2
后面的东西全部注释掉,留下start_phase3一项,即改成这样:
#--------------------------------------------------------------------------
# ● 刷新画面 (同伴命令回合)
#--------------------------------------------------------------------------
def update_phase2
  # 按下 C 键的情况下
  #if Input.trigger?(Input::C)
    # 同伴指令窗口光标位置分支
    #case @party_command_window.index
   # when 0  # 战斗
      # 演奏确定 SE
      #$game_system.se_play($data_system.decision_se)
      # 开始角色的命令回合
      start_phase3
    #when 1  # 逃跑
      # 不能逃跑的情况下
      #if $game_temp.battle_can_escape == false
        # 演奏冻结 SE
        #$game_system.se_play($data_system.buzzer_se)
        #return
      #end
      # 演奏确定 SE
      #$game_system.se_play($data_system.decision_se)
      # 逃走处理
      #update_phase2_escape
    #end
    #return
  #end
end
留下带彩色的一项。
然后在Scene_battle 1 的第30行修改为……

@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4,"逃跑"])
  @actor_command_window.y = 128

然后在Scene_battle 3里面修改这项
#--------------------------------------------------------------------------
# ● 刷新画面 (角色命令回合 : 基本命令)
#--------------------------------------------------------------------------
def update_phase3_basic_command
  # 按下 B 键的情况下
  if Input.trigger?(Input::B)
    # 演奏取消 SE
    $game_system.se_play($data_system.cancel_se)
    # 转向前一个角色的指令输入
    phase3_prior_actor
    return
  end
  # 按下 C 键的情况下
  if Input.trigger?(Input::C)
    # 角色指令窗口光标位置分之
    case @actor_command_window.index
    when 0  # 攻击
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 设置行动
      @active_battler.current_action.kind = 0
      @active_battler.current_action.basic = 0
      # 开始选择敌人
      start_enemy_select
    when 1  # 特技
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 设置行动
      @active_battler.current_action.kind = 1
      # 开始选择特技
      start_skill_select
    when 2  # 防御
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 设置行动
      @active_battler.current_action.kind = 0
      @active_battler.current_action.basic = 1
      # 转向下一位角色的指令输入
      phase3_next_actor
    when 3  # 物品
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 设置行动
      @active_battler.current_action.kind = 2
      # 开始选择物品
      start_item_select
###########################################################################
    when 4  # 逃跑
      if $game_temp.battle_can_escape == false
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 逃走处理
      update_phase2_escape
###########################################################################
     end
     return
  end
end


作者: wy29    时间: 2008-4-2 19:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: towmix    时间: 2008-4-2 20:31
以下引用wy29于2008-4-2 11:55:35的发言:

请看Scene_Battle3,def update_phase3_basic_command


   本帖相关代码如下:
#--------------------------------------------------------------------------
# ● 刷新画面 (角色命令回合 : 基本命令)
#--------------------------------------------------------------------------
def update_phase3_basic_command
   # 按下 B 键的情况下
   if Input.trigger?(Input::B)
     # 演奏取消 SE
     $game_system.se_play($data_system.cancel_se)
     # 转向前一个角色的指令输入
     phase3_prior_actor
     return
   end
   # 按下 C 键的情况下
   if Input.trigger?(Input::C)
     # 角色指令窗口光标位置分之
     case @actor_command_window.index
     when 0  # 攻击
       # 演奏确定 SE
       $game_system.se_play($data_system.decision_se)
       # 设置行动
       @active_battler.current_action.kind = 0
       @active_battler.current_action.basic = 0
       # 开始选择敌人
       start_enemy_select
     when 1  # 特技
       # 演奏确定 SE
       $game_system.se_play($data_system.decision_se)
       # 设置行动
       @active_battler.current_action.kind = 1
       # 开始选择特技
       start_skill_select
     when 2  # 防御
       # 演奏确定 SE
       $game_system.se_play($data_system.decision_se)
       # 设置行动
       @active_battler.current_action.kind = 0
       @active_battler.current_action.basic = 1
       # 转向下一位角色的指令输入
       phase3_next_actor
     when 3  # 物品
       # 演奏确定 SE
       $game_system.se_play($data_system.decision_se)
       # 设置行动
       @active_battler.current_action.kind = 2
       # 开始选择物品
       start_item_select
     end
     return

还有个问题就是怎么设置指令窗口的坐标 原本的算法是@actor_command_window.x = @actor_index * 160   @actor_command_window.y = 160
我想手动设置每个人的坐标 因为是两排人物 所以递增这方法不适用 我应该怎么编写呢?我写好了每个人的坐标了 用的是 when 0 return *** 这个方法 这个该怎么些?能不能写一个出来示范一下?谢谢了~

作者: 幻の飞鱼    时间: 2008-4-2 21:02
写成一个方法好了

比如

@actor_command_window.x = s_x(@actor_index)
@actor_command_window.x = s_y(@actor_index)

然后另外写两个方法


def s_x(index)
case index
when 0
  return
when 1
  ……
end
end

def s_y(index)
case index
when 0
……
end
end [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: wy29    时间: 2008-4-2 21:04
提示: 作者被禁止或删除 内容自动屏蔽
作者: towmix    时间: 2008-4-3 03:45
以下引用wy29于2008-4-2 13:04:15的发言:

case @actor_index
when 0
@actor_command_window.x = 数字1
@actor_command_window.y = 数字2
when 1
@actor_command_window.x = 数字3
@actor_command_window.y = 数字4
when 2...等等

谢谢你了 终于搞定了~




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