Project1

标题: 如何添加遇敌之后增加自动作战和延续上一次动作的选项 [打印本页]

作者: 露露咯    时间: 2014-4-23 22:51
标题: 如何添加遇敌之后增加自动作战和延续上一次动作的选项
本帖最后由 露露咯 于 2014-4-23 22:52 编辑

{:7_289:}某些RPG有这些功能某些没有我想自行添加不知道如何添加。

还有在菜单里面添加队形排列的选择和可以踢出队友的选择项目。


作者: 冰蓝的马甲    时间: 2014-4-24 17:47
本帖最后由 冰蓝的马甲 于 2014-4-24 17:50 编辑

一回来就碰见这么高难度的问题~
延续上一次动作应该是一个简单的小脚本,在Game_Actor里记录一下上次的action然后在菜单里新加入一个选项,选这个选项的话代入上次action,next_actor。
自动战斗同理,写法和update_actor_command_selection里防御是一样的格式,只不过内容是@active_battler.make_action然后next_actor
队形排列的话,Game_Actor里增加一个@battle_position初始值是self.class.position然后在菜单里加选项(类似于技能和物品窗),对应Scene_Battle里的比如update_position_change,然后就是写窗口调试了。

比如你想按Shift自动战斗,在Scene_Battle里就可以把def update_actor_command_selection这么改
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 更新角色命令选择
  3.   #--------------------------------------------------------------------------
  4.   def update_actor_command_selection
  5.     if Input.trigger?(Input::B)
  6.       Sound.play_cancel
  7.       prior_actor
  8.     elsif Input.trigger?(Input::C)
  9.       case @actor_command_window.index
  10.       when 0  # 攻击
  11.         Sound.play_decision
  12.         @active_battler.action.set_attack
  13.         start_target_enemy_selection
  14.       when 1  # 技能
  15.         Sound.play_decision
  16.         start_skill_selection
  17.       when 2  # 防御
  18.         Sound.play_decision
  19.         @active_battler.action.set_guard
  20.         next_actor
  21.       when 3  # 物品
  22.         Sound.play_decision
  23.         start_item_selection
  24.       end
  25.     elsif Input.trigger?(Input::A)
  26.       Sound.play_decision
  27.       @active_battler.make_action
  28.       next_actor
  29.     end
  30.   end

作者: 露露咯    时间: 2014-4-25 16:35
冰蓝的马甲 发表于 2014-4-24 17:47
一回来就碰见这么高难度的问题~
延续上一次动作应该是一个简单的小脚本,在Game_Actor里记录一下上次的acti ...

{:7_299:}那个完全没哟看懂,能稍微简单的说明吗?

比如在Game_Actor里记录一下上次的action 在那个位置写神马?
然后再菜单里新加入一个选项 如何添加
选这个选项的话代入上次action,next_actor。 继续上面同样的问题。

@active_battler.make_action 是添加在Game_Actor最后面吗?貌似脚本里面自动作战
  #--------------------------------------------------------------------------
  # ● 戦闘行動の作成 (自動戦闘用)
  #--------------------------------------------------------------------------
  def make_action
    @action.clear
    return unless movable?
    action_list = []
    action = Game_BattleAction.new(self)
    action.set_attack
    action.evaluate
    action_list.push(action)
    for skill in skills
      action = Game_BattleAction.new(self)
      action.set_skill(skill.id)
      action.evaluate
      action_list.push(action)
    end
    max_value = 0
    for action in action_list
      if action.value > max_value
        @action = action
        max_value = action.value
      end
    end
如何将添加到菜单里面去



还有队列的问题是同样

Game_Actor里增加一个@battle_position初始值是self.class.position
  #--------------------------------------------------------------------------
  # ● 队列排列
  #--------------------------------------------------------------------------
    @battle_position
    self.class.position
      end
    end
就这样添加到Game_Actor最后可以吗?还有继续问如何添加到菜单里面去,

我不懂脚本,请用⑨也能懂的方式教教我。

踢出队友我自己虽然不懂脚本写一个公共事件然后编辑一个技能可以让主人公随时提出队友虽然麻烦点。
作者: 冰蓝的马甲    时间: 2014-4-25 20:38
露露咯 发表于 2014-4-25 16:35
那个完全没哟看懂,能稍微简单的说明吗?

比如在Game_Actor里记录一下上次的action 在那个位置 ...

如何添加延续上一次动作说起来就长了,大概数据方面在Game_Actor里新增加一个@last_action然后设定成可读写,窗口方面是在Window_BattleAction(是叫这个吧)里更改@item_max和draw方法,Scene方面就是在角色选择好动作next_actor之前指定一下@action_battler.last_action=@action_battler.current_action啥的。

增加@battle_position先在所有def的前面
attr_accessor :battle_position(把@battle_position设定成可读写就是指这个)
然后是添加到def initialize里end前面的
@battle_position = self.class.position
然后把Game_Unit里所有关于.class.position的改成.battle_position

最后吐槽一句,我最近略忙,再详细的就等待大大们的解答吧,抱歉啦




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