Page MenuHomeFeedback Tracker

ACCESS_VIOLATION on video widget, que screen
New, UrgentPublic

Description

{F4156399}Hello, we added video widget to loading que screen, but some guys have problem with joining via launcher ( game crashes everytime, Acces Violation error ), but when they load all mods first its ok, they can join que via game browser.

How video is played:
-Script is checking if there is map name in hostname (example "Dayz Super Hardcore Namalsk")
-If video exist for Namalsk, and video file do not exist (in $saves ), copy video file to $saves, next load background image and after that load video widget overlay ( to make it universal we are still loading background in case of server that doesnt have video )

  • If video exist, file will not be copied from pbo, but it will still be loaded on screen.

Details

Severity
None
Resolution
Open
Reproducibility
N/A
Operating System
Windows 10 x64
Category
General
Steps To Reproduce

Only few guys have that problem and game crashes everytime for them if they want to join via launcher (loading mods first and join via game browser works).

Additional Information

code used in LoginQueBase class (part when it crashes):

		m_DynamicLoadingScreens.Set( "Chernarus", "Loading_Generic/gui/data/video/Loadingscreen_Chernarus.mp4" );
		m_DynamicLoadingScreens.Set( "Livonia", "Loading_Generic/gui/data/video/Loadingscreen_Livonia.mp4" );
        m_DynamicLoadingScreens.Set( "Namalsk", "Loading_Generic/gui/data/video/Loadingscreen_Namalsk.mp4" );
		m_DynamicLoadingScreens.Set( "Alteria", "Loading_Generic/gui/data/video/Loadingscreen_Alteria.mp4" );
		m_DynamicLoadingScreens.Set( "DeerIsle", "Loading_Generic/gui/data/video/Loadingscreen_DeerIsle.mp4" );
		
		//-------------------------------------------------------------------------------------------//
		
		m_Video.Set( "Chernarus", "Loadingscreen_Chernarus.mp4" );
		m_Video.Set( "Livonia", "Loadingscreen_Livonia.mp4" );
        m_Video.Set( "Namalsk", "Loadingscreen_Namalsk.mp4" );
		m_Video.Set( "Alteria", "Loadingscreen_Alteria.mp4" );
		m_Video.Set( "DeerIsle", "Loadingscreen_DeerIsle.mp4" );
				
				//------------------------------------------------------//
									Widget Init
				//------------------------------------------------------//
				    override Widget Init()
    {
        layoutRoot = GetGame().GetWorkspace().CreateWidgets("Loading_Generic/gui/layouts/dialog_queue_positionVanillaChanged.layout");
		m_DayZGame = DayZGame.Cast(GetGame());
        Widget oldInput = layoutRoot.FindAnyWidget( "TextInputDialog" );
        oldInput.Unlink();
        layoutRoot.Update();

        Widget newInput = GetGame().GetWorkspace().CreateWidgets( "Loading_Generic/gui/layouts/queue_dialog_input.layout", layoutRoot );
        layoutRoot.Update();
		
        m_txtPosition = TextWidget.Cast( layoutRoot.FindAnyWidget( "txtPosition" ) );
        m_txtNote = TextWidget.Cast( layoutRoot.FindAnyWidget( "txtNote" ) );
        m_btnLeave = ButtonWidget.Cast( newInput.FindAnyWidget( "btnLeave" ) );
        m_Priority = ButtonWidget.Cast( newInput.FindAnyWidget( "prioritybtn" ) );
		m_Discord = ButtonWidget.Cast( newInput.FindAnyWidget( "discordbtn" ) );
		m_HintPanel	= new UiHintPanelLoading(layoutRoot.FindAnyWidget("hint_frame0"));
        m_txtNote.Show( true );
		layoutRoot.FindAnyWidget("notification_root").Show(false);
		

		string hostname = g_Game.GetHostName();
		if(m_DayZGame.GetCLSProfileVal( ECLSProfileOptions.SCREEN ) == 1) // <----- Checking if Custom Loading Option is Enabled
		{
			string lscreen = m_LoadingScreens.Get( "Default" );
			string dynamic_screen;
			string video_name;
			if ( hostname != "" )
			{
				array<string> keys = m_LoadingScreens.GetKeyArray();
				foreach ( string k : keys )
				{
					if ( hostname.Contains( k ) )
					{
							lscreen = m_LoadingScreens.Get( k );
							dynamic_screen = m_DynamicLoadingScreens.Get( k );
							video_name = m_Video.Get ( k );
							break;
					}
				}
			}
			if (FileExist("$profile:" + video_name))
            {
                Print("Video Check");
            }
            else
            {
                Print("File do not exist, copying file...");
              CopyFile(dynamic_screen, "$profile:" + video_name);
            }

		}
		else { 
		 lscreen = m_LoadingScreens.Get( "Vanilla" );
		}
		ImageWidget background = ImageWidget.Cast( layoutRoot.FindAnyWidget( "Background" ) );
        background.LoadImageFile( 0, lscreen );
        VideoWidget video = VideoWidget.Cast( layoutRoot.FindAnyWidget( "Video" ) );
        video.Load( "$mission:"+video_name, true ); // ("Path to video", bool loop)
		video.Play();
        return layoutRoot;
    }

Event Timeline

Sehel created this task.Fri, Jun 28, 8:46 PM
Sehel updated the task description. (Show Details)Fri, Jun 28, 8:48 PM
Sehel edited Additional Information. (Show Details)Fri, Jun 28, 8:55 PM
Sehel edited Additional Information. (Show Details)
Sehel removed a subscriber: Sehel.Fri, Jun 28, 9:04 PM
Sehel added a subscriber: Sehel.