设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2105|回复: 11
打印 上一主题 下一主题

[已经解决] 请教XP战斗结束后自动清除敌人身上所有状态的脚本代码

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
跳转到指定楼层
1
发表于 2019-4-30 10:27:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 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进入战斗前会默认清除所有状态吗?

Lv5.捕梦者

梦石
0
星屑
33143
在线时间
10485 小时
注册时间
2009-3-15
帖子
4756
2
发表于 2019-4-30 10:37:59 | 只看该作者
$game_troop.enemies.clear
敌人都被清了..你还指望它有状态?
回复 支持 1 反对 0

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
3
 楼主| 发表于 2019-4-30 10:47:51 | 只看该作者
soulsaga 发表于 2019-4-30 10:37
$game_troop.enemies.clear
敌人都被清了..你还指望它有状态?


好吧。。。我想设置一个debuff状态内伤,能让中内伤的enemies带到下一场战斗都有效果,一直持续到游戏结束,这么说只能用开关一个一个手动设置所有enemies的战斗队伍了?
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33143
在线时间
10485 小时
注册时间
2009-3-15
帖子
4756
4
发表于 2019-4-30 10:58:22 | 只看该作者
本帖最后由 soulsaga 于 2019-4-30 11:01 编辑
taeckle 发表于 2019-4-30 10:47
好吧。。。我想设置一个debuff状态内伤,能让中内伤的enemies带到下一场战斗都有效果,一直持续到游戏结 ...


下一场敌人应该不是同一组吧..有何用..
怪死都死了..还內伤..
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
5
 楼主| 发表于 2019-4-30 11:08:18 | 只看该作者
soulsaga 发表于 2019-4-30 10:58
下一场敌人应该不是同一组吧..有何用..
怪死都死了..还內伤..

那要怎么保证下一场中debuff内伤的同一个怪还是带着内伤开始战斗啊,咱能想到的就是给游戏里每个怪都赋予一个开关然后在战斗队伍里设置,但觉得这种方法太笨了!

点评

你战斗队伍里设置也很烦吧..  发表于 2019-4-30 12:20
假如游戏里总共有1000个怪岂不是要弄1000个开关了。。  发表于 2019-4-30 11:09
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33143
在线时间
10485 小时
注册时间
2009-3-15
帖子
4756
6
发表于 2019-4-30 12:28:57 | 只看该作者
本帖最后由 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

点评

那咋办啊? 用 $game_system.battle_interpreter.setup($data_common_events[XXX].list, 0) 命令可以吗?  发表于 2019-4-30 16:50
大神说了战斗中不能用並行..  发表于 2019-4-30 16:27
这样一来用1个变量就可以省去999个开关啦!  发表于 2019-4-30 16:22
大王威武!请受小弟一拜!  发表于 2019-4-30 16:17

评分

参与人数 2星屑 +50 +1 收起 理由
RyanBern + 50 认可答案
taeckle + 1 我很赞同

查看全部评分

回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-19 11:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表