Project1

标题: 做出蒼之濤的戰鬥方法(車芸的) [打印本页]

作者: WildDagger    时间: 2009-8-24 16:01
标题: 做出蒼之濤的戰鬥方法(車芸的)
有玩過軒轅劍外傳:蒼之濤的人,應該知道女主角車芸的戰鬥方法和別的角色不太一樣吧

嘛,由雲狐攻擊這個部份在RM應該可以算作戰鬥動畫的部份

部份大招前面有動畫也可以用RGSS+公共事件+AVI/SWF腳本達成

絕招部分也有網友做出了類似的功能



不過我想討論的地方是當車芸戰鬥不能的時候,如果沒同伴在場直接判定GAME OVER
但是有同伴在場且能繼續戰鬥的話,車芸不算戰鬥不能而無法行動,反倒是可以繼續行動但不能進行攻擊或者是偵測敵方木甲,而只能做使用物品/修復雲狐的動作

像是這樣萬一一人無法戰鬥但有同伴在場且能繼續戰鬥則可繼續行動的戰鬥方法要怎麼用RGSS做出來呢?
(直覺是這不能用公用事件或者是戰鬥事件做)

我雖然還沒想要不要把這功能做進來,但是好像可以討論一下w
作者: 霜冻之狼    时间: 2009-8-24 16:04
跟龙仔一样的繁体字.......

其实只要加个状态和判定就可以拉
作者: 风中承诺    时间: 2009-8-24 17:55
楼主最好给个截图……
作者: 嫁衣    时间: 2009-8-24 18:45
純事件的我又來亂入了……

為車芸添加一個戰鬥不能狀態。




每位隊員都要添加,比如還有桓遠之……
“附加”這個狀態可以用來限制攻擊/物品/逃跑等等。





木甲修复術,把Game_Battler 3中的if dead?改成if dead? and skill_id != 1(木甲修复ID)就可以用了。



有一個BUG(雲狐死後的第一回合不能行動),所以就不做範例了。
不過我覺得用事件模仿的效果不太好,希望有高手來指點一下……
作者: 后知后觉    时间: 2009-8-24 20:36
本帖最后由 后知后觉 于 2009-8-24 20:55 编辑

用脚本来做的话……我想想……

增加一个特定的状态 比如50号状态
然后全局搜索 def hp=(hp)
  def hp=(hp)
    @hp = [[hp, maxhp].min, 0].max
    if self.dead?
      # 如果对象的名字叫车云
      if self.name == "车云"
        # 增加50号状态
        add_state(50)
        return
      end
    end
    for i in 1...$data_states.size
      if $data_states[ i ].zero_hp
        if self.dead?
          add_state(i)
        end
        else
          remove_state(i)
        end
      end
    end
  end

这样的话,叫车云的角色就不会中 战斗不能状态
在死亡的时候中的是50号状态
这个50号状态的【限制】要设置为【无】

然后找到Scene_Battle 4 的 def start_phase4
下面写这样的一段
比如车云的ID号为5
# 如果id为5的角色中了50号状态
if $game_actors[5].state?(50)
  # 如果这个角色的命令为基本.特技就初始化命令
  if $game_actors[5].current_action.kind == 0 or $game_actors[5].current_action.kind == 1
    $game_actors[5].current_action.clear
  end
end
这样的话就是说车云在中了50号状态后只有使用物品或其他新增命令的种类
判断胜负应该不用改,因为判断胜负是根据的hp是否全为0来进行的判断而不是用的状态来判断
最后再说一下这个50号状态的设置
先去看看默认的1号状态【战斗不能】吧
这个状态在附加的时候要解除其他的所有状态,状态设置的右边那一竖行的[-]号
这个50号状态也要这样去设置,不然和其他状态并存的时候会出现灵异现象
给云狐复活的特殊物品什么的就专门解除这个50号状态就可以了

最后= =  我没有测试~~大概就是这样了吧,
作者: 后知后觉    时间: 2009-8-24 21:00
编辑不能= = 重新发一帖....
主要是那个代码.上面代码有个错误

  def hp=(hp)
    @hp = [[hp, maxhp].min, 0].max
    if self.dead?
      # 如果对象的名字叫车云
      if self.name == "车云"
        # 增加50号状态
        add_state(50)
        return
      end
    end

    for i in 1...$data_states.size
      if $data_states[ i ].zero_hp
        if self.dead?
          add_state(i)
        else
          remove_state(i)
        end
      end
    end
  end

比如车云的ID号为5
# 如果id为5的角色中了50号状态
if $game_actors[5].state?(50)
  # 如果这个角色的命令为基本.特技就初始化命令
  if $game_actors[5].current_action.kind == 0 or $game_actors[5].current_action.kind == 1
    $game_actors[5].current_action.clear
  end
end




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