Ok so few days ago i have made this to work and available and now i will share with you.The complete process is easy and it shouldn't take you too much time, well it will take you if you have slow pc like mine
for rendering videos.
Ok so lets start.The things we will need to edit to make this custom cinematics to work are following dbc files and yes core :
FileData.dbc ,Movie.dbc, MovieFileData.dbc MovieVariations.dbc and CharacterHandler.cpp (on some cores ) + Extended Script or just change packet
Now i keep using Taliis for this kind of job so i would suggestion you too to use it.Open all dbc into it and have targeted FileData.dbc
As you can see there are 3 columns
0: Id -> which point to third column in MovieVariation.dbc
1: Name of the avi
2: Expansion flags if we can say like that
Now edit it and insert your own .avi informations
Like me
id for 1 higher
name as you can see it is Preview.avi
and in third column leave it as 14.
Now open Movie.dbc
first column is id of your movie, pick any number i have 20 and 21
second column is full path to your movie *Notice you can store it anywhere as long you include it into patch*
third column volume of the movie i guess? for each record is 100 so i have left that at 100
Now open MovieVariation.dbc
As you can see there are 3 columns but what do they mean? o.O
first is random number pic any number that you want
second column is ID-(First Column of Movie.dbc)
and last says if movieid for moviefiledata-> which points to resolutions and location of the movie.Put here 1 higher number or two.
Now last Open MovieFileData.dbc
Here we have 2 columns
First Represent ID ->(MovieVariation.dbc column 3)
second resolution of the movie it self 800 or 1024 so if your video is rendered in 800x600 then put it 800 if it is 1024x720 then put 1024.
Now we have finished editing of dbc files, but how we are going to see that movie in game? For that we need first to remove Cinematic Sequence check in core.For this most cores have this implemented in CharaterHandler.cpp
so go there and search for something like this
if(plr->m_FirstLogin or search for SMSG_TRIGGER_CINEMATIC
For TrinityCore replace this in CharacterHandler.cpp
//Show cinematic at the first time that player login
if (!pCurrChar->getCinematic())
{
pCurrChar->setCinematic(1);
if (ChrClassesEntry const* cEntry = sChrClassesStore.LookupEntry(pCurrChar->getClass()))
{
if (cEntry->CinematicSequence)
pCurrChar->SendCinematicStart(cEntry->CinematicSequence);
else if (ChrRacesEntry const* rEntry = sChrRacesStore.LookupEntry(pCurrChar->getRace()))
pCurrChar->SendCinematicStart(rEntry->CinematicSequence);
// send new char string if not empty
if (!sWorld.GetNewCharString().empty())
chH.PSendSysMessage(sWorld.GetNewCharString().c_str());
}
}
with this
if (!pCurrChar->getCinematic())
pCurrChar->setCinematic(1);
Then search for
if (pCurrChar->HasAtLoginFlag(AT_LOGIN_FIRST))
pCurrChar->RemoveAtLoginFlag(AT_LOGIN_FIRST);
and replace it with this
if (pCurrChar->HasAtLoginFlag(AT_LOGIN_FIRST))
{
pCurrChar->SendMovieStart(put here id of your movie or any other movie in wow :D);
pCurrChar->RemoveAtLoginFlag(AT_LOGIN_FIRST);
}
And Also for Trinity and MaNGOS you will need to remove cinematic.cpp from project and from scriptloader
Now for Arcemu and ascent based emulators you will only need to do one thing
go to CharacterHandler.cpp and search for
if(plr->m_FirstLogin)
{
uint32 introid = plr->info->introid;
OutPacket(SMSG_TRIGGER_CINEMATIC, 4, &introid);
and replace it with this
if(plr->m_FirstLogin)
{
/*uint32 introid = plr->info->introid;
OutPacket(SMSG_TRIGGER_CINEMATIC, 4, &introid);*/
Now we will create a one easy script just to send a SMSG_TRIGGER_MOVIE packet and using hook it will trigger it on character creation
Dont forget also to put all cinematic sequences in db as 1
so here is a little command for that too
Update playercreateinfo set introid =1;
Now for Script you can use this
#include "StdAfx.h"
#include "Setup.h"
void OnEnterWorld(Player* pPlayer) //when player enters zone
{
uint32 movieid = 20;
pPlayer->GetSession()->OutPacket(SMSG_TRIGGER_MOVIE, 4, &movieid);
}
void SetupOnEnter(ScriptMgr * mgr)
{
mgr->register_hook(SERVER_HOOK_EVENT_ON_FIRST_ENTER_WORLD, OnEnterWorld);
}
Add it and compile it inside the core
And after all of this you should have something like this just your video playing in game
[youtube:3s7i3krv]http://www.youtube.com/watch?v=93lolWafx6g[/youtube:3s7i3krv]
Some people are having troubles getting right codec for video.In that case i will add additional information how to convert it.
First download newest ffddshow and xvid codec pack.Then download total video converter.I can not post here a tpb link but i am sure you can find it
Then start it and drag your video on it, or press on new task.
Then once you have selected it select a format you want to convert in.In our case avi, using XVID AVI.
Then press on advanced and go to profile ->settings
Then go to Video Option and make sure xvid is selected for codec
And after that press ok, apply all settings and press convert Now. Wait until it is finished and you are done
Make sure it is in right location
Interface/Cinematics/yourvideoname.avi
Oh
Dont worry i havent forgot about rendering and using proper codec for this video. For your video to be played in wow you will need to convert it using xvid codec.Now idk too much what program to use but i have used Total Video Converted and it worked fine as you can see.Dont forget to install lastest codec packs from ffddshow and just in case install xvid codec too
-Eatos-