查看: 1559|回复: 3

[已经解决] 如何添加遇敌之后增加自动作战和延续上一次动作的选项

[复制链接]
梦石
0
星屑
785
在线时间
8 小时
注册时间
2014-4-22
回帖
3
发表于 2014-4-23 22:51:38 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 露露咯 于 2014-4-23 22:52 编辑

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

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

评分

参与人数 1星屑 -20 收起 理由
怪蜀黍 -20 禁止一帖两问

查看全部评分

梦石
0
星屑
59
在线时间
84 小时
注册时间
2008-4-19
回帖
403
发表于 2014-4-24 17:47:19 | 显示全部楼层
本帖最后由 冰蓝的马甲 于 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这么改
[pre lang="ruby" line="1"]#--------------------------------------------------------------------------
  # ● 更新角色命令选择
  #--------------------------------------------------------------------------
  def update_actor_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      prior_actor
    elsif Input.trigger?(Input::C)
      case @actor_command_window.index
      when 0  # 攻击
        Sound.play_decision
        @active_battler.action.set_attack
        start_target_enemy_selection
      when 1  # 技能
        Sound.play_decision
        start_skill_selection
      when 2  # 防御
        Sound.play_decision
        @active_battler.action.set_guard
        next_actor
      when 3  # 物品
        Sound.play_decision
        start_item_selection
      end
    elsif Input.trigger?(Input::A)
      Sound.play_decision
      @active_battler.make_action
      next_actor
    end
  end[/pre]
好吧这是II让我贴的- -
回复

使用道具 举报

梦石
0
星屑
785
在线时间
8 小时
注册时间
2014-4-22
回帖
3
 楼主| 发表于 2014-4-25 16:35:20 | 显示全部楼层
冰蓝的马甲 发表于 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最后可以吗?还有继续问如何添加到菜单里面去,

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

踢出队友我自己虽然不懂脚本写一个公共事件然后编辑一个技能可以让主人公随时提出队友虽然麻烦点。
回复

使用道具 举报

梦石
0
星屑
59
在线时间
84 小时
注册时间
2008-4-19
回帖
403
发表于 2014-4-25 20:38:22 | 显示全部楼层
露露咯 发表于 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

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

评分

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

查看全部评分

好吧这是II让我贴的- -
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部