Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • 0
ishkur

Видео файлы в дэйз.

Здравствуйте многоуважаемые знатоки энскрипта и движка игры. Как вы наверное уже догадались, скриптер из меня не очень. Зато идеи умею подкидывать(ну а куда же их деть, с моей то больной фантазией?). Так вот, назрел вопрос-идея: а может ли движок дэйз внутри игры воспроизводить видео, хоть какого-либо формата? Мафон с кассетами уже имеется средь модов, и не один. А вот чтоб телек замутить?! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

  • 0

Тоже думал над этим вопросом, но что-то мне кажется маловароятно это провернуть, ну или очень не просто..если учесть что у них даже синхронизация звуков страдает..а что говорить о видео..

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
MagicByte MagicByte MagicByte
  • 0

....а движок игры сможет воспроизвести обычный ГИФ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

вы ваще видели как разрабы реализовали автомобили?

какое вам еще видео

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
2 часа назад, paranoyk сказал:

....а движок игры сможет воспроизвести обычный ГИФ?

Учитывая, что в воркбенче при настройке лейаутов есть .gif, то в теории возможно. На практике - хрен его знает.

Арма 3 в это могла, но там и не такой движок был, хотя уверен, что принцип загрузки/меню примерно тот же, ибо всё на .paa и .edds.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
3 часа назад, Yuki сказал:

Учитывая, что в воркбенче при настройке лейаутов есть .gif, то в теории возможно. На практике - хрен его знает.

Арма 3 в это могла, но там и не такой движок был, хотя уверен, что принцип загрузки/меню примерно тот же, ибо всё на .paa и .edds.

в а2 можно было в gps е проигрывать видео

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

edds может быть анимирован покадрово, но использование видел только в particles. Максимум сможете показывать простенькую гифку, как на телеке в баре 100 рентген.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Вот что нарыл:

\scripts\5_Mission\GUI\NewUI\MainMenu\MainMenuVideo.c

class MainMenuVideo extends UIScriptedMenu
{
	protected string 				m_BackButtonTextID;
	
	protected TextWidget			m_PlayPauseText;
	protected VideoWidget			m_Video;
	protected ref Timer				m_VideoPlayTimer;
	protected ref WidgetFadeTimer	m_VideoFadeTimer;
	bool							m_IsPaused;
	
	override Widget Init()
	{
		layoutRoot 				= GetGame().GetWorkspace().CreateWidgets( "gui/layouts/xbox/video_menu.layout" );
		m_Video					= VideoWidget.Cast( layoutRoot.FindAnyWidget( "video" ) );
		m_PlayPauseText			= TextWidget.Cast( layoutRoot.FindAnyWidget( "PauseVideoText" ) );
		
		m_VideoPlayTimer		= new Timer();
		m_VideoFadeTimer		= new WidgetFadeTimer();
		
		#ifdef PLATFORM_PS4
			m_Video.LoadVideo( "/app0/video/DayZ_onboarding_MASTER.mp4", 0 );
		#else
			m_Video.LoadVideo( "G:\\video\\DayZ_onboarding_MASTER.mp4", 0 );
		#endif
		m_Video.Play( VideoCommand.REWIND );
		m_Video.Play( VideoCommand.PLAY );
		m_VideoFadeTimer.FadeIn( m_Video, 1.5 );
		m_VideoPlayTimer.Run( 0.005, this, "PlayVideoLoop", null, true );
		
		return layoutRoot;
	}
	
	void ~MainMenuVideo()
	{
	}
	
	//after show
	override void OnShow()
	{
		super.OnShow();
		GetGame().GetUIManager().ShowUICursor(false);
	}

	//after hide
	override void OnHide()
	{
		super.OnHide();
		GetGame().GetUIManager().ShowUICursor(true);
	}
	
	void PlayVideoLoop()
	{
		if( m_Video && !m_IsPaused && !m_Video.Play( VideoCommand.ISPLAYING ) )
		{
			StopVideo();
		}
	}
	
	void StopVideo()
	{
		if( m_Video )
		{
			m_VideoPlayTimer.Stop();
			m_Video.Play( VideoCommand.KILL );
			GetGame().GetUIManager().Back();
		}
	}
	
	void PlayPauseVideo()
	{
		if( m_Video )
		{
			if( m_Video.Play( VideoCommand.ISPLAYING ) )
			{
				m_Video.Play( VideoCommand.STOP );
				//m_PlayPauseText.SetText( "Play" );
				m_IsPaused = true;
			}
			else
			{
				m_Video.Play( VideoCommand.PLAY );
				//m_PlayPauseText.SetText( "Pause" );
				m_IsPaused = false;
			}
		}
	}
	
	override void Update(float timeslice)
	{
		if( GetGame().GetInput().LocalPress("UAUICtrlX",false) )
		{
			//PlayPauseVideo();
		}
		if( GetGame().GetInput().LocalPress("UAUIBack",false) )
		{
			StopVideo();
		}
	}
	
	override void OnVisibilityChanged(bool isVisible)
	{
		if ( !isVisible )
		{
			m_Video.Play( VideoCommand.KILL );
		}
	}
	
	/// Initial texts load for the footer buttons
	protected void LoadFooterButtonTexts()
	{
		TextWidget uiBackText 	= TextWidget.Cast(layoutRoot.FindAnyWidget( "BackText" ));		
		
		if (uiBackText)
		{
			uiBackText.SetText(m_BackButtonTextID);
		}
	}
	/// Set correct bottom button texts based on platform (ps4 vs xbox texts)
	protected void LoadTextStrings()
	{
		#ifdef PLATFORM_PS4
			m_BackButtonTextID = "ps4_ingame_menu_back";
		#else 
			m_BackButtonTextID = "STR_rootFrame_toolbar_bg_ConsoleToolbar_Back_BackText0";	
		#endif
	}
	
}

Так что, походу оно таки может.

подробнее тут:

\1_Core\proto\EnWidgets.c

//VideoWidget
enum VideoCommand
{
	PLAY,
	STOP,
	REWIND,
	POSITION,
	REPEAT,
	ISPLAYING,
	KILL
};

class VideoWidget extends Widget
{
	proto native int Play(VideoCommand cmd);
	proto native bool LoadVideo(string name, int soundScene);
	proto native void DisableSubtitles(bool disable);
};

 

Изменено пользователем ishkur (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
20 минут назад, ishkur сказал:

Вот что нарыл:

\scripts\5_Mission\GUI\NewUI\MainMenu\MainMenuVideo.c

class MainMenuVideo extends UIScriptedMenu { protected string m_BackButtonTextID; protected TextWidget m_PlayPauseText; protected VideoWidget m_Video; protected ref Timer m_VideoPlayTimer; protected ref WidgetFadeTimer m_VideoFadeTimer; bool m_IsPaused; override Widget Init() { layoutRoot = GetGame().GetWorkspace().CreateWidgets( "gui/layouts/xbox/video_menu.layout" ); m_Video = VideoWidget.Cast( layoutRoot.FindAnyWidget( "video" ) ); m_PlayPauseText = TextWidget.Cast( layoutRoot.FindAnyWidget( "PauseVideoText" ) ); m_VideoPlayTimer = new Timer(); m_VideoFadeTimer = new WidgetFadeTimer(); #ifdef PLATFORM_PS4 m_Video.LoadVideo( "/app0/video/DayZ_onboarding_MASTER.mp4", 0 ); #else m_Video.LoadVideo( "G:\\video\\DayZ_onboarding_MASTER.mp4", 0 ); #endif m_Video.Play( VideoCommand.REWIND ); m_Video.Play( VideoCommand.PLAY ); m_VideoFadeTimer.FadeIn( m_Video, 1.5 ); m_VideoPlayTimer.Run( 0.005, this, "PlayVideoLoop", null, true ); return layoutRoot; } void ~MainMenuVideo() { } //after show override void OnShow() { super.OnShow(); GetGame().GetUIManager().ShowUICursor(false); } //after hide override void OnHide() { super.OnHide(); GetGame().GetUIManager().ShowUICursor(true); } void PlayVideoLoop() { if( m_Video && !m_IsPaused && !m_Video.Play( VideoCommand.ISPLAYING ) ) { StopVideo(); } } void StopVideo() { if( m_Video ) { m_VideoPlayTimer.Stop(); m_Video.Play( VideoCommand.KILL ); GetGame().GetUIManager().Back(); } } void PlayPauseVideo() { if( m_Video ) { if( m_Video.Play( VideoCommand.ISPLAYING ) ) { m_Video.Play( VideoCommand.STOP ); //m_PlayPauseText.SetText( "Play" ); m_IsPaused = true; } else { m_Video.Play( VideoCommand.PLAY ); //m_PlayPauseText.SetText( "Pause" ); m_IsPaused = false; } } } override void Update(float timeslice) { if( GetGame().GetInput().LocalPress("UAUICtrlX",false) ) { //PlayPauseVideo(); } if( GetGame().GetInput().LocalPress("UAUIBack",false) ) { StopVideo(); } } override void OnVisibilityChanged(bool isVisible) { if ( !isVisible ) { m_Video.Play( VideoCommand.KILL ); } } /// Initial texts load for the footer buttons protected void LoadFooterButtonTexts() { TextWidget uiBackText = TextWidget.Cast(layoutRoot.FindAnyWidget( "BackText" )); if (uiBackText) { uiBackText.SetText(m_BackButtonTextID); } } /// Set correct bottom button texts based on platform (ps4 vs xbox texts) protected void LoadTextStrings() { #ifdef PLATFORM_PS4 m_BackButtonTextID = "ps4_ingame_menu_back"; #else m_BackButtonTextID = "STR_rootFrame_toolbar_bg_ConsoleToolbar_Back_BackText0"; #endif } }


class MainMenuVideo extends UIScriptedMenu
{
	protected string 				m_BackButtonTextID;
	
	protected TextWidget			m_PlayPauseText;
	protected VideoWidget			m_Video;
	protected ref Timer				m_VideoPlayTimer;
	protected ref WidgetFadeTimer	m_VideoFadeTimer;
	bool							m_IsPaused;
	
	override Widget Init()
	{
		layoutRoot 				= GetGame().GetWorkspace().CreateWidgets( "gui/layouts/xbox/video_menu.layout" );
		m_Video					= VideoWidget.Cast( layoutRoot.FindAnyWidget( "video" ) );
		m_PlayPauseText			= TextWidget.Cast( layoutRoot.FindAnyWidget( "PauseVideoText" ) );
		
		m_VideoPlayTimer		= new Timer();
		m_VideoFadeTimer		= new WidgetFadeTimer();
		
		#ifdef PLATFORM_PS4
			m_Video.LoadVideo( "/app0/video/DayZ_onboarding_MASTER.mp4", 0 );
		#else
			m_Video.LoadVideo( "G:\\video\\DayZ_onboarding_MASTER.mp4", 0 );
		#endif
		m_Video.Play( VideoCommand.REWIND );
		m_Video.Play( VideoCommand.PLAY );
		m_VideoFadeTimer.FadeIn( m_Video, 1.5 );
		m_VideoPlayTimer.Run( 0.005, this, "PlayVideoLoop", null, true );
		
		return layoutRoot;
	}
	
	void ~MainMenuVideo()
	{
	}
	
	//after show
	override void OnShow()
	{
		super.OnShow();
		GetGame().GetUIManager().ShowUICursor(false);
	}

	//after hide
	override void OnHide()
	{
		super.OnHide();
		GetGame().GetUIManager().ShowUICursor(true);
	}
	
	void PlayVideoLoop()
	{
		if( m_Video && !m_IsPaused && !m_Video.Play( VideoCommand.ISPLAYING ) )
		{
			StopVideo();
		}
	}
	
	void StopVideo()
	{
		if( m_Video )
		{
			m_VideoPlayTimer.Stop();
			m_Video.Play( VideoCommand.KILL );
			GetGame().GetUIManager().Back();
		}
	}
	
	void PlayPauseVideo()
	{
		if( m_Video )
		{
			if( m_Video.Play( VideoCommand.ISPLAYING ) )
			{
				m_Video.Play( VideoCommand.STOP );
				//m_PlayPauseText.SetText( "Play" );
				m_IsPaused = true;
			}
			else
			{
				m_Video.Play( VideoCommand.PLAY );
				//m_PlayPauseText.SetText( "Pause" );
				m_IsPaused = false;
			}
		}
	}
	
	override void Update(float timeslice)
	{
		if( GetGame().GetInput().LocalPress("UAUICtrlX",false) )
		{
			//PlayPauseVideo();
		}
		if( GetGame().GetInput().LocalPress("UAUIBack",false) )
		{
			StopVideo();
		}
	}
	
	override void OnVisibilityChanged(bool isVisible)
	{
		if ( !isVisible )
		{
			m_Video.Play( VideoCommand.KILL );
		}
	}
	
	/// Initial texts load for the footer buttons
	protected void LoadFooterButtonTexts()
	{
		TextWidget uiBackText 	= TextWidget.Cast(layoutRoot.FindAnyWidget( "BackText" ));		
		
		if (uiBackText)
		{
			uiBackText.SetText(m_BackButtonTextID);
		}
	}
	/// Set correct bottom button texts based on platform (ps4 vs xbox texts)
	protected void LoadTextStrings()
	{
		#ifdef PLATFORM_PS4
			m_BackButtonTextID = "ps4_ingame_menu_back";
		#else 
			m_BackButtonTextID = "STR_rootFrame_toolbar_bg_ConsoleToolbar_Back_BackText0";	
		#endif
	}
	
}

Так что, походу оно таки может.

подробнее тут:

\1_Core\proto\EnWidgets.c

//VideoWidget enum VideoCommand { PLAY, STOP, REWIND, POSITION, REPEAT, ISPLAYING, KILL }; class VideoWidget extends Widget { proto native int Play(VideoCommand cmd); proto native bool LoadVideo(string name, int soundScene); proto native void DisableSubtitles(bool disable); };


//VideoWidget
enum VideoCommand
{
	PLAY,
	STOP,
	REWIND,
	POSITION,
	REPEAT,
	ISPLAYING,
	KILL
};

class VideoWidget extends Widget
{
	proto native int Play(VideoCommand cmd);
	proto native bool LoadVideo(string name, int soundScene);
	proto native void DisableSubtitles(bool disable);
};

 

ну молодец, сам ответил)) далее остается научиться работать с объектом класса VideoWidget, благо пример ты буквально выше и скинул, который проигрывает видео на экране. Остается тока разобраться в коммандах и видео-формате. Проще говоря, пол дела сделано)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Нужно понимать, что видео будет проигрываться в виде виджета на экране, а не на объектах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Да это понятно, что в виджете. Надо ещё покопаться в потрохах игры, вдруг можно как-то натянуть на объект...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
19 часов назад, ishkur сказал:

Да это понятно, что в виджете. Надо ещё покопаться в потрохах игры, вдруг можно как-то натянуть на объект...

На такое движок игры не способен. Максимум - анимация в edds, которую можно создать в виде партикла без прозрачности и поместить в нужном месте, но это совершенный геморрой. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

https://www.youtube.com/watch?v=v45uiTZxxRI&ab_channel=BoiseCowboy

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
24.08.2020 в 19:29, ishkur сказал:

Да это понятно, что в виджете. Надо ещё покопаться в потрохах игры, вдруг можно как-то натянуть на объект...

Помещаем это чудо во фрейм и поверх готового фрейма с видео накидываем кнопки, все готово можно играть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
22 часа назад, tokarboss сказал:

Помещаем это чудо во фрейм и поверх готового фрейма с видео накидываем кнопки, все готово можно играть.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
10.12.2023 в 11:31, Rig4Night сказал:

Здравствуй, товарищ! Как у тебя получилось сделать такую видео-заставку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.

Поддержка