It is possible to an extent. There are two options.
The first option, which I assume is what the naruto map that gorillabull mentioned did, is to make a bunch of images and play audio over it. You would loop through the images and use them as fade filters--making it look sort of like a clip. See:
http://www.hiveworkshop.com/forums/spells-569/clip-maker-system-0-2-a-238689/
The second option is one I haven't fully explored yet. I did some experiments with it a while back though. The Warcraft III movies (HumanOp, HumanEd, etc.) are all in video formats (.AVI), as gorillabull mentioned. This is pretty neat--it means that you can use Warcraft III as your own AVI player. Plus, this method is a lot easier than making a stream of clips + audio, and in may have better results.
The means of playing a cinematic in game are through this function:
-
Game - Enable/Disable Cinematic
However, it only fires on "Quit Mission" (or at least the one I used did, I haven't checked them all). In JASS, it is:
JASS:
function SetCinematicAvailableBJ takes boolean available, integer cinematicIndex returns nothing
if ( cinematicIndex == bj_CINEMATICINDEX_TOP ) then
call SetOpCinematicAvailable( bj_CAMPAIGN_INDEX_T, available )
call PlayCinematic( "TutorialOp" )
elseif (cinematicIndex == bj_CINEMATICINDEX_HOP) then
call SetOpCinematicAvailable( bj_CAMPAIGN_INDEX_H, available )
call PlayCinematic( "HumanOp" )
elseif (cinematicIndex == bj_CINEMATICINDEX_HED) then
call SetEdCinematicAvailable( bj_CAMPAIGN_INDEX_H, available )
call PlayCinematic( "HumanEd" )
elseif (cinematicIndex == bj_CINEMATICINDEX_OOP) then
call SetOpCinematicAvailable( bj_CAMPAIGN_INDEX_O, available )
call PlayCinematic( "OrcOp" )
elseif (cinematicIndex == bj_CINEMATICINDEX_OED) then
call SetEdCinematicAvailable( bj_CAMPAIGN_INDEX_O, available )
call PlayCinematic( "OrcEd" )
elseif (cinematicIndex == bj_CINEMATICINDEX_UOP) then
call SetEdCinematicAvailable( bj_CAMPAIGN_INDEX_U, available )
call PlayCinematic( "UndeadOp" )
elseif (cinematicIndex == bj_CINEMATICINDEX_UED) then
call SetEdCinematicAvailable( bj_CAMPAIGN_INDEX_U, available )
call PlayCinematic( "UndeadEd" )
elseif (cinematicIndex == bj_CINEMATICINDEX_NOP) then
call SetEdCinematicAvailable( bj_CAMPAIGN_INDEX_N, available )
call PlayCinematic( "NightElfOp" )
elseif (cinematicIndex == bj_CINEMATICINDEX_NED) then
call SetEdCinematicAvailable( bj_CAMPAIGN_INDEX_N, available )
call PlayCinematic( "NightElfEd" )
elseif (cinematicIndex == bj_CINEMATICINDEX_XOP) then
call SetOpCinematicAvailable( bj_CAMPAIGN_OFFSET_XN, available )
call PlayCinematic( "IntroX" )
elseif (cinematicIndex == bj_CINEMATICINDEX_XED) then
call SetEdCinematicAvailable( bj_CAMPAIGN_OFFSET_XU, available )
call PlayCinematic( "OutroX" )
else
// Unrecognized cinematic - ignore the request.
endif
endfunction
As you can see, they check their boundaries. They don't want you to do something silly.
However, the functions "SetOp/EdCinematicAvailable()" and "PlayCinematic" are still available to us.
Anyway, there is still a way to play the cinematics in game through the above technique by adding it to your Movies folder.
- Get the AVI file.
- Rename your AVI file to have the extension .mpq. In my case, I made it WOTLK.mpq. Make sure you actually changed the extension. It should not be WOTLK.mpq.avi.
- Paste it into Warcraft III\Movies.
- Use:
JASS:
call PlayCinematic("WOTLK")
If done properly, when the player quits the mission they should see the AVI file under "Movies\<name>.mpq". In my case, "Movies\WOTLK.mpq".
Just note that there is quality loss when Warcraft III loads it. It'll use palette compression (because of this, you may want to pre-compress it since having it in "HD" won't really help since it is later compressed). However, it is certainly watchable quality and it does the job just fine. Obviously, this isn't very practical for the people playing your map to do, but it is at least good to know that it is possible.
EDIT: Also, if you want custom captions (subtitles) then check out war3.mpq\UI\Captions\. For example, HumanOp.txt will have a declaration like so:
Code:
00:00:38:13 00:00:42:13 We've received reports that the orcs are regrouping.
The code on the left (I assume) is the start time for that caption, and the code on the right is the end time (I assume, again) for that caption. I'm guessing time is measured in Hours:Minutes:Seconds:Milliseconds. The code on the right is the text to appear in the caption. You may be able to import a custom caption text file under the path "UI\Captions\HumanOp.txt" (depending on which cinematic you're overwriting). <p> breaks to a new line. The text will be centered on the screen.