Description: Scenes which use Cinematics / Camera cause a black screen after Scene Complete. This can only be solved by closing the client with Alt+F4.
Current behaviour: Scenes which use Cinematics / Camera cause a black screen after Scene Complete.
Probably because of some playback flags (8 or 2)
Expected behaviour: Sniffs show that for scenes with flag 2 or 8, CMSG_SCENE_PLAYBACK_COMPLETE is followed by SMSG_CANCEL_SCENE.
Steps to reproduce the problem:
Branch(es): master
TC rev. hash/commit: 166709058efd6aa861fade2edf4642bbe9d9cfa0
TDB version: 703.00
Operating system: Win 10
At the moment a "hack" fix is to assign every single Cinematic Scene this part of code:
void OnSceneComplete(Player* player, uint32 sceneInstanceID, SceneTemplate const* sceneTemplate)
{
// Cinematic Scenes will cause Black Screen if not canceled
OnSceneCancel(player, sceneInstanceID, sceneTemplate);
}
@Traesh might be interesting for you
How is this cosmetic if you have to ALT+F4 out of it?
How is this cosmetic if you have to ALT+F4 out of it?
maybe it's not a black screen, it's just very very dark xD
@funjoker I don't know if this helps any but for giggles i set scene 1061's flag to 20 and 1116's to 20 and the black screen is not happening and it seems to be no issue.
I hope this helps point where to start looking for issue
here's a copy of my sql
UPDATE `scene_template` SET `Flags`= 20 WHERE `SceneId` IN (1061, 1116);
20 = 16 | 4, your "test" is pointless
Maybe blizzard make those flags "break things" at some patch and remove them from their db?
Btw. Shauren i don't quite understand what u wrote.
Playback flags is clientside thing(w/o db2 data) so it is hard to guess how they work. But scenes which have removed flags |2|8 don't have blackscreen effect.
It is strange because some of those flags was from sniffs, and scenes are handled clientside.
I suppose flag 8 or 2 mean something like "CANCEL_AT_END", and wait for SMSG_SCENE_CANCEL when scene complete
Will look at this in a few days
Few days later, I looked at it and it seem "normal" to have a black screen at the end, it's blizzlike.
It's done to give time to server to handle phase switch and other things between the moment scene end and camera back to player. Blizz send SMSG_SCENE_CANCEL when ready to remove black screen.
I feel like sending the packet for every scene with flag 2 would be a bit hacky. I prefer to let the scripter decide. It will be possible to do it from DB with https://github.com/TrinityCore/TrinityCore/pull/19194
I'm pretty sure that flag 2 causes the blackscreen.
Most helpful comment
maybe it's not a black screen, it's just very very dark xD