Project1

标题: 如何将“攻击”指令改成上一次选择的技能呢? [打印本页]

作者: 三途亚梦    时间: 2014-11-4 14:29
标题: 如何将“攻击”指令改成上一次选择的技能呢?
本帖最后由 三途亚梦 于 2014-11-4 15:15 编辑

基本问题就是如题所述。

将游戏中自带的“攻击”指令改成记录玩家上一次选择的技能。
因为设计中游戏风格较为写实,技能都是诸如: 击打、挥砍、投掷 这些,玩家在游戏中应该是反复使用同一个技能而不是“普通攻击”。
要说意义的话,就是为了让玩家玩的更舒适一点。

啊,对了!
在玩家还没有使用技能前,默认的还是普通攻击。

PS:因为考虑到强制战斗指令,不能以这个人物上一次使用的技能为准。
作者: cinderelmini    时间: 2014-11-4 16:54
【或许只是思路,但基本就这样了吧?】
因为以前做了一个气势满把普攻换成技能的东西,
所以改起来也蛮简单~总之基本就是这样了吧~
至于命令窗口的“攻击”字样是否要改成技能名字,
这应该是很简单的了吧~
作者: taroxd    时间: 2014-11-4 17:20
参考菜单窗口(Window_MenuCommand)是如何记住指令位置的
作者: tseyik    时间: 2014-11-4 18:15
參考
  1. #==============================================================================
  2. # ★ RGSS3_自動戦闘 Ver1.01
  3. #==============================================================================
  4. =begin

  5. 作者:tomoaky
  6. webサイト:ひきも記 (http://hikimoki.sakura.ne.jp/)

  7. パーティコマンドに『オート』と『リピート』、2種類のコマンドを追加します。
  8. オートは全アクターがそのターンだけ自動戦闘の状態となります、
  9. リピートは全アクターが前のターンにとった行動を自動選択します。

  10. おまけ機能の完全自動戦闘スイッチ(初期設定では7番)がオンになっている間は
  11. エンカウントからマップシーンへ戻るまでがすべて自動化されます。

  12. === 注意点 ===
  13.   ・前のターンと同じ行動がコスト不足などで実行できない場合は攻撃になります
  14.   ・1ターン目にリピートを選択した場合は全アクターの行動が攻撃になります
  15.   ・前ターン開始時に選択されている行動がリピート対象となります、
  16.     コスト不足でリピート内容が変化した場合、次ターン以降も変化したままです

  17. 使用するゲームスイッチ(初期設定)
  18.   0007, 0008

  19. 2012.01.17  Ver1.01
  20.   ・逃げるコマンド失敗後にリピートコマンドが正しく動作しない不具合を修正
  21.   
  22. 2011.12.15  Ver1.0
  23.   公開

  24. =end

  25. #==============================================================================
  26. # □ 設定項目
  27. #==============================================================================
  28. module TMATBTL
  29.   SW_FULLAUTO = 7     # 完全自動戦闘フラグとして扱うゲームスイッチ番号
  30.   SW_FULLFAST = 8     # 完全自動戦闘の早送りフラグとして扱うゲームスイッチ番号
  31. end

  32. #==============================================================================
  33. # ■ Vocab
  34. #==============================================================================
  35. module Vocab
  36.   AutoBattle    = "オート"         # 自動戦闘コマンド名
  37.   RepeatBattle  = "リピート"       # 繰り返し戦闘コマンド名
  38. end

  39. #==============================================================================
  40. # ■ Game_Temp
  41. #==============================================================================
  42. class Game_Temp
  43.   #--------------------------------------------------------------------------
  44.   # ● 公開インスタンス変数
  45.   #--------------------------------------------------------------------------
  46.   attr_accessor :repeat_commands          # 前ターンの行動内容
  47.   #--------------------------------------------------------------------------
  48.   # ● オブジェクト初期化
  49.   #--------------------------------------------------------------------------
  50.   alias tmatbtl_game_temp_initialize initialize
  51.   def initialize
  52.     tmatbtl_game_temp_initialize
  53.     @repeat_commands = []
  54.   end
  55. end

  56. #==============================================================================
  57. # ■ Window_Message
  58. #==============================================================================
  59. class Window_Message
  60.   #--------------------------------------------------------------------------
  61.   # ● 入力待ち処理
  62.   #--------------------------------------------------------------------------
  63.   alias tmatbtl_window_message_input_pause input_pause
  64.   def input_pause
  65.     if $game_party.in_battle && $game_switches[TMATBTL::SW_FULLAUTO]
  66.       wait($game_switches[TMATBTL::SW_FULLFAST] ? 30 : 60)
  67.     else
  68.       tmatbtl_window_message_input_pause
  69.     end
  70.   end
  71. end

  72. #==============================================================================
  73. # ■ Window_PartyCommand
  74. #==============================================================================
  75. class Window_PartyCommand
  76.   #--------------------------------------------------------------------------
  77.   # ● コマンドリストの作成
  78.   #--------------------------------------------------------------------------
  79.   alias tmatbtl_window_partycommand_make_command_list make_command_list
  80.   def make_command_list
  81.     tmatbtl_window_partycommand_make_command_list
  82.     add_command(Vocab::AutoBattle,   :auto)
  83.     add_command(Vocab::RepeatBattle, :repeat)
  84.   end
  85. end

  86. #==============================================================================
  87. # ■ Scene_Battle
  88. #==============================================================================
  89. class Scene_Battle
  90.   #--------------------------------------------------------------------------
  91.   # ● 早送り判定
  92.   #--------------------------------------------------------------------------
  93.   alias tmatbtl_scene_battle_show_fast? show_fast?
  94.   def show_fast?
  95.     tmatbtl_scene_battle_show_fast? || ($game_switches[TMATBTL::SW_FULLAUTO] &&
  96.       $game_switches[TMATBTL::SW_FULLFAST])
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● パーティコマンドウィンドウの作成
  100.   #--------------------------------------------------------------------------
  101.   alias tmatbtl_scene_battle_create_party_command_window create_party_command_window
  102.   def create_party_command_window
  103.     tmatbtl_scene_battle_create_party_command_window
  104.     @party_command_window.set_handler(:auto,   method(:command_auto))
  105.     @party_command_window.set_handler(:repeat, method(:command_repeat))
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● パーティコマンド選択の開始
  109.   #--------------------------------------------------------------------------
  110.   alias tmatbtl_scene_battle_start_party_command_selection start_party_command_selection
  111.   def start_party_command_selection
  112.     tmatbtl_scene_battle_start_party_command_selection
  113.     if $game_switches[TMATBTL::SW_FULLAUTO]
  114.       command_auto unless scene_changing?
  115.     end
  116.   end
  117.   #--------------------------------------------------------------------------
  118.   # ● 戦闘開始
  119.   #--------------------------------------------------------------------------
  120.   alias tmatbtl_scene_battle_battle_start battle_start
  121.   def battle_start
  122.     tmatbtl_scene_battle_battle_start
  123.     $game_temp.repeat_commands = []
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● ターン開始
  127.   #--------------------------------------------------------------------------
  128.   alias tmatbtl_scene_battle_turn_start turn_start
  129.   def turn_start
  130.     $game_party.members.each_with_index do |actor, i|
  131.       next unless actor.inputable?
  132.       $game_temp.repeat_commands[i] = []
  133.       actor.actions.each do |action|
  134.         $game_temp.repeat_commands[i].push(action.clone)
  135.       end
  136.     end
  137.     tmatbtl_scene_battle_turn_start
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ○ コマンド[オート]
  141.   #--------------------------------------------------------------------------
  142.   def command_auto
  143.     $game_party.members.each do |actor|
  144.       actor.make_auto_battle_actions if actor.inputable?
  145.     end
  146.     @party_command_window.deactivate
  147.     turn_start
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ○ コマンド[リピート]
  151.   #--------------------------------------------------------------------------
  152.   def command_repeat
  153.     $game_party.members.each_with_index do |actor, i|
  154.       next unless actor.inputable?
  155.       actor.actions.clear
  156.       if !$game_temp.repeat_commands[i] || $game_temp.repeat_commands[i].empty?
  157.         $game_temp.repeat_commands[i] =
  158.           [Game_Action.new(actor).set_attack.evaluate]
  159.       end
  160.       $game_temp.repeat_commands[i].each do |action|
  161.         actor.actions.push(action.clone)
  162.         actor.actions[actor.actions.size - 1].set_attack unless action.valid?
  163.       end
  164.     end
  165.     @party_command_window.deactivate
  166.     turn_start
  167.   end
  168. end


复制代码

作者: 三途亚梦    时间: 2014-11-6 22:17
已经完美解决~麻烦结贴~




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