Project1

标题: 请教XP战斗结束后自动清除敌人身上所有状态的脚本代码 [打印本页]

作者: taeckle    时间: 2019-4-30 10:27
标题: 请教XP战斗结束后自动清除敌人身上所有状态的脚本代码
本帖最后由 taeckle 于 2019-4-30 10:31 编辑

在数据库里当然可以设置具体某个状态战斗结束后会被清除,可咱在XP默认脚本scene_battle 1里看到了这段(只要建一个project1就能看到):


  # ● 战斗结束
  #     result : 結果 (0:胜利 1:失败 2:逃跑)
  #--------------------------------------------------------------------------
  def battle_end(result)
    # 清除战斗中标志
    $game_temp.in_battle = false
    # 清除全体同伴的行动
    $game_party.clear_actions
    # 解除战斗用状态
    for actor in $game_party.actors
      actor.remove_states_battle
    end
    # 清除敌人
    $game_troop.enemies.clear
    # 调用战斗返回
    if $game_temp.battle_proc != nil
      $game_temp.battle_proc.call(result)
      $game_temp.battle_proc = nil
    end
    # 切换到地图画面
    $scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------


于是咱这瓜脑子又蹦出来一个问题,这个def只写了清除actors身上的状态咋没写清除enemies身上的状态啊?可事实上enemies身上的状态战斗结束后也是会被全部清楚的!
又是哪段代码让enemies身上的所有状态在战斗后自动清除了?还是说enemies进入战斗前会默认清除所有状态吗?
作者: soulsaga    时间: 2019-4-30 10:37
$game_troop.enemies.clear
敌人都被清了..你还指望它有状态?
作者: taeckle    时间: 2019-4-30 10:47
soulsaga 发表于 2019-4-30 10:37
$game_troop.enemies.clear
敌人都被清了..你还指望它有状态?


好吧。。。我想设置一个debuff状态内伤,能让中内伤的enemies带到下一场战斗都有效果,一直持续到游戏结束,这么说只能用开关一个一个手动设置所有enemies的战斗队伍了?
作者: soulsaga    时间: 2019-4-30 10:58
本帖最后由 soulsaga 于 2019-4-30 11:01 编辑
taeckle 发表于 2019-4-30 10:47
好吧。。。我想设置一个debuff状态内伤,能让中内伤的enemies带到下一场战斗都有效果,一直持续到游戏结 ...


下一场敌人应该不是同一组吧..有何用..
怪死都死了..还內伤..
作者: taeckle    时间: 2019-4-30 11:08
soulsaga 发表于 2019-4-30 10:58
下一场敌人应该不是同一组吧..有何用..
怪死都死了..还內伤..

那要怎么保证下一场中debuff内伤的同一个怪还是带着内伤开始战斗啊,咱能想到的就是给游戏里每个怪都赋予一个开关然后在战斗队伍里设置,但觉得这种方法太笨了!
作者: soulsaga    时间: 2019-4-30 12:28
本帖最后由 soulsaga 于 2019-4-30 13:32 编辑

可以用公共事件
一个变量里塞999个开关..
首先把变量初始化..找个最初只运行一次的事件..
事件脚本输入
$game_variables[80] = []
for i in 1..999
$game_variables[80].push(false)
end

然后写两个並行公共事件

第一个图看不到的是$game_variables[80][$game_troop.enemies[0].id] == true




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