Форум » Общие вопросы по WME » Проблема с Game.PlayVideo. » Ответить

Проблема с Game.PlayVideo.

GodFather: Нужна помощь в одной проблеме. Проблема такова, когда я проигрываю файл видео-avi через game.playvideo, после нажатия кнопки мыши видео заканчивается, как сделать так чтобы видео играла до конца, и не заканчивалось после нажатия клавиши мыши или клавы.

Ответов - 8

Dionysius: GodFather, приведи код скрипта полностью. Какая версия WME у тебя?

GodFather: Версия 1,8, код скрипта такой. #include "scripts\base.inc" global StateRoom2; global Stay; //////////////////////////////////////////////////////////////////////////////// on "LeftClick" { if (Stay.Gold2 == true) { actor.GoTo(540, 219); actor.TurnTo(DI_LEFT); Game.Interactive = false; //StateRoom2.TalkedToOldGuy = false; var Ent = Scene.GetNode("Smoke"); var Ent2 = Scene.GetNode("Background"); var Ent3 = Scene.GetNode("Security"); var Ent4 = Scene.GetNode("Rus"); var Ent5 = Scene.GetNode("Ogr"); var Ent6 = Scene.GetNode("Horse"); var Ent7 = Scene.GetNode("Posoh"); var Ent8 = Scene.GetNode("Arm"); var Ent9 = Scene.GetNode("Woman"); Ent2.Active = false; Ent3.Active = false; Ent4.Active = false; Ent5.Active = false; Ent6.Active = false; Ent7.Active = false; Ent8.Active = false; Ent9.Active = false; Ent.MakeStarfield(); Stay.Gold2 = false; StateRoom2.TalkedToOldGuy3 = false; StateRoom2.TalkedToOldGuy = true; StateRoom2.Keys = true; StateRoom2.TalkedToOldGuy = true; Sleep(5000); Ent.Active = false; Game.PlayVideo("video\1d.avi", 1, 0, 0, false); Game.Interactive = true; Ent2.Active = true; Ent3.Active = true; Ent4.Active = true; Ent5.Active = true; Ent6.Active = true; Ent7.Active = true; Ent8.Active = true; Ent9.Active = true; } if (Stay.Gold2 == false) { this.Active = true; actor.GoTo(540, 219); actor.TurnTo(DI_LEFT); actor.Talk("Мне нужно найти чашу"); } } //////////////////////////////////////////////////////////////////////////////// on "Chasha" { actor.GoTo(540, 219); actor.TurnTo(DI_LEFT); Game.Interactive = false; Game.DropItem("chasha"); actor.PlayAnim("actors\jess\ll\take1.sprite"); var Ent = Scene.GetNode("Smoke"); var Ent2 = Scene.GetNode("Background"); var Ent3 = Scene.GetNode("Security"); var Ent4 = Scene.GetNode("Rus"); var Ent5 = Scene.GetNode("Ogr"); var Ent6 = Scene.GetNode("Horse"); var Ent7 = Scene.GetNode("Posoh"); var Ent8 = Scene.GetNode("Arm"); var Ent9 = Scene.GetNode("Woman"); Ent.Active = true; Ent2.Active = false; Ent3.Active = false; Ent4.Active = false; Ent5.Active = false; Ent6.Active = false; Ent7.Active = false; Ent8.Active = false; Ent9.Active = false; Ent.MakeStarfield(); Sleep(5000); Ent.Active = false; Game.PlayVideo("video\1d.avi", 1, 0, 0, false); Ent2.Active = true; Ent3.Active = true; Ent4.Active = true; Ent5.Active = true; Ent6.Active = true; Ent7.Active = true; Ent8.Active = true; Ent9.Active = true; Game.TakeItem("Str"); //EntBook.Active = true; StateRoom2.Keys = false; StateRoom2.KeysB = true; Stay.Gold2 = false; actor.GoTo(395, 406); actor.TurnTo(DI_DOWN); global OldGuy2 = Scene.LoadEntity("entities\Tv\Tv.entity"); OldGuy2.SkipTo(10, 530); OldGuy2.Talk("","sounds\KartaZol.ogg"); Stay.B = true; Game.Interactive = true; }

Dionysius: Я прочитал, что тебе ответил Мнемоник на оф. форуме. То есть, нужно создать объект, в котором проигрывается видео. В твоём случае объект охватывает всю область экрана. Создай объект сцены (entity) - прямоугольник на весь экран и в нём воспроизводи видео Entity.PlayTheora(). Только в данном случае от avi придётся отказаться, т. к. у объекта Entity для воспроизведения видео есть только метод PlayTheora (см. документацию по объекту).


GodFather: А через че Теору то сделать? Я делал через ffmpeg2theora-0.19.exe, у меня качество мертвое получилось, а через VLC че-то не получается.

Dionysius: GodFather, поищи инфу какую-нибудь в сети по Теоре. Например, глянь здесь. Я, честно говоря, с Теорой не работал.

GodFather: Ну я так и делал, как там написано, один фиг че-то файл ogg не получается. Фигово, то что объекты только теору воспроизводят . Ладно спасибо.

Dionysius: А вообще, к чему эти заморочки? Ведь это же логично, что пользователь, если не хочет смотреть видео (например, он проходит это место второй раз и уже видел ролик), то может пропустить его нажатием кнопки. Зачем вынуждать юзера смотреть ролик во чтобы то ни стало?

GodFather: Ну здесь в принципе не важно. А вообще есть ролик компании, который необходимо смотреть всем без переключения в начале игры.



полная версия страницы