Cime du Vortex : crash serveur a la mort dAltairus
Signale par un joueur, reproduit 2 fois (SIGSEGV 17/08 22:09 et 22:15). JustDied() invoque le Slipstream 45457 pour ouvrir la voie vers la 2e plateforme, puis pose son drapeau de dialogue sans verifier le retour. Lentree 45457 nexiste dans aucune base (ni la notre, ni TDB 7.3.5) : SummonCreature renvoie nullptr et le dereferencement tue le worldserver dans Unit::Kill a chaque mort du boss. - SQL : creation de lentree 45457 par clonage de 45455, avec le script npc_slipstream_two deja present et enregistre dans le core. - C++ : controle du nullptr sur les deux occurrences du motif (Altairus et Grand Vizir Ertan) pour quune donnee manquante ne puisse plus faire tomber le serveur. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -164,8 +164,10 @@ public:
|
||||
summons.DespawnAll();
|
||||
me->SetHover(false);
|
||||
|
||||
Creature * Slipstream = me->SummonCreature(NPC_SLIPSTREAM_TWO, -1198.95f, 106.13f, 743.16f, 1.2f, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||
Slipstream->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
// Le template peut manquer en base : sans ce controle, un summon rate
|
||||
// faisait tomber le serveur a chaque mort du boss (SIGSEGV dans Unit::Kill).
|
||||
if (Creature* slipstream = me->SummonCreature(NPC_SLIPSTREAM_TWO, -1198.95f, 106.13f, 743.16f, 1.2f, TEMPSUMMON_CORPSE_DESPAWN, 0))
|
||||
slipstream->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
|
||||
@@ -149,8 +149,8 @@ public:
|
||||
me->DespawnCreaturesInArea(NPC_LURKING_TEMPEST, 120.0f);
|
||||
me->DespawnCreaturesInArea(NPC_CYCLONE_SHIELD, 120.0f);
|
||||
|
||||
Creature * Slipstream = me->SummonCreature(45455, -765.79f, -44.01f, 641.91f, 4.0f, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||
Slipstream->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
if (Creature* slipstream = me->SummonCreature(45455, -765.79f, -44.01f, 641.91f, 4.0f, TEMPSUMMON_CORPSE_DESPAWN, 0))
|
||||
slipstream->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
|
||||
Reference in New Issue
Block a user