微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在脚本中固定暴徒?

如何解决如何在脚本中固定暴徒?

为了修复 Gruul 脚本,我需要在一个已经存在的事件中固定 Boss,并在另一个事件中移除该标志。 但是,我无法找到阻止格鲁尔追逐目标的方法。 我尝试将它与像拉格纳罗斯和克苏恩这样的永久诱捕 Boss 进行比较,但没有找到符合我意图的旗帜。 任何提示,如何暂时防止移动表示赞赏。

我正在处理 https://github.com/azerothcore/azerothcore-wotlk/blob/master/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp

我想添加代码,使格鲁尔在施放“大地猛击”时无法移动,直到他施放“粉碎”以使其像暴风雪一样。

详细 https://github.com/azerothcore/azerothcore-wotlk/blob/389227e4f7ea75292549a36d4f288cc2467d1078/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp#L119 这个事件需要让他和这个人无法动弹https://github.com/azerothcore/azerothcore-wotlk/blob/389227e4f7ea75292549a36d4f288cc2467d1078/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp#L126 应该让他重新动起来。

我一直在浏览 Wiki,尝试了各种标记都无济于事。谢天谢地,我收到了一些关于 discord 的回复,其中建议 UNIT_FLAG_PACIFIED(防止攻击但不会从我的测试中固定)和 UNIT_FLAG_STUNNED(防止“地面猛击”施法完成但不会阻止 Gruuls 移动

为了实现上述目的,我使用了这个语法,添加了 4 行设置/删除标志:

case EVENT_GROUND_SLAM:
  Talk(SAY_SLAM);
  me->CastSpell(me,SPELL_GROUND_SLAM,false);
  events.DelayEvents(8001);
  events.ScheduleEvent(EVENT_GROUND_SLAM,60000);
  events.ScheduleEvent(EVENT_SHATTER,8000);
  me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_PACIFIED);
  me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_STUNNED);
  break;
case EVENT_SHATTER:
  Talk(SAY_SHATTER);
  me->RemoveFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_PACIFIED);
  me->RemoveFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_STUNNED);
  me->CastSpell(me,SPELL_SHATTER,false);
  break;

解决方法

这个代码让boss(这里是Gruul)留在原地。

me->SetControlled(true,UNIT_STATE_ROOT);

将第一个参数设置为 false 会删除根。 感谢 Yehonal 在 discord 上指出这一点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。