Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
matiqof

Создание меняющихся экранов загрузки

Помогите пожалуйста, у меня есть несколько .paa фотокарточек, мне нужно, чтобы они менялись. То есть ты загружаешься на сервер, у тебя одна картника, вышел, снова зашел - другая картинка. У меня получилось только в каждой из функций Show(), сделать свой загрузочный экран, но он должен быть рандомным только один раз и во всех функциях Show() одинаковым. Есть вот такой код:

modded class LoadingScreen
{
	ref TStringArray ScreenMass = {
		"MOD\\data\\DayZ_BackGround.paa",
        "MOD\\data\\DayZ_BackGround_v2.paa",
        "MOD\\data\\DayZ_BackGround_v3.paa"
    };

	override void Show()
	{		
		string preel = "MOD\\data\\DayZ_BackGround_v3.paa"; //Тут должен быть один из экранов из ScreenMass выше
		m_ImageWidgetBackground.LoadMaskTexture("MOD/data/ls_mask.paa");
		m_ImageWidgetBackground.LoadImageFile(0, preel);
        m_ImageLogoMid.Show(false);
		m_ImageLogoCorner.Show(false);	    	
		m_ModdedWarning.Show(false);
		super.Show();
	}
}


modded class LoginTimeBase extends UIScriptedMenu
{
    override void Show()
    {
        super.Show();
        if (layoutRoot)
        {
            string preel = screen; //Тут должен быть один из экранов из ScreenMass выше
            ImageWidget background = ImageWidget.Cast( layoutRoot.FindAnyWidget("Background"));
            background.LoadImageFile(0, preel);  
        }
    }
}


modded class LoginQueueBase extends UIScriptedMenu
{
    override void Show()
    {
        super.Show();
        if (layoutRoot)
        {
            string preel = screen; //Тут должен быть один из экранов из ScreenMass выше
            ImageWidget background = ImageWidget.Cast( layoutRoot.FindAnyWidget("Background"));
            background.LoadImageFile(0, preel);  
        }
    }
}

 

Edited by matiqof (see edit history)

Share this post


Link to post
Share on other sites

12 answers to this question

Recommended Posts

  • 0

есть такая штука сделанная уже на карте Припять, есть в мастерской. я когда то там подглядывал и делал свое, но делал и не доделал... мб ты доделаешь..)

Share this post


Link to post
Share on other sites



  • 1
class LS
{
    private    static    string    m_ScreenPath    =    "MOD\\data\\DayZ_BackGround_v";    //    Путь к изображениям.( Имена одинаковые, кроме цифры в конце )
    private    static    int        m_ScreenCount    =    5;                                //    Кол-во изображений.
    private    static    string    m_OldScreen        =    "";
    
    static string GetRandomScreen()
    {
        m_OldScreen    =    string.Format( "%1%2.paa",m_ScreenPath,Math.RandomInt( 0, m_ScreenCount ) );
        return GetOldScreen();
    }
    
    static string GetOldScreen()
    {
        return m_OldScreen;
    }
}

modded class LoadingScreen
{
    override void Show()
    {        
        m_ImageWidgetBackground.LoadMaskTexture( "MOD/data/ls_mask.paa" );
        m_ImageWidgetBackground.LoadImageFile(0, LS.GetRandomScreen() );
        m_ImageLogoMid.Show( false );
        m_ImageLogoCorner.Show( false );            
        m_ModdedWarning.Show( false );
        super.Show();
    }
}

modded class LoginTimeBase extends UIScriptedMenu
{
    override void Show()
    {
        super.Show();
        
        if (layoutRoot )
        {
            ImageWidget background    =    ImageWidget.Cast( layoutRoot.FindAnyWidget( "Background" ) );
            background.LoadImageFile( 0, LS.GetOldScreen() );  
        }
    }
}


modded class LoginQueueBase extends UIScriptedMenu
{
    override void Show()
    {
        super.Show();
        
        if ( layoutRoot )
        {
            ImageWidget background = ImageWidget.Cast( layoutRoot.FindAnyWidget( "Background" ) );
            background.LoadImageFile( 0, LS.GetOldScreen() );  
        }
    }
}

 

Edited by NoNameUltima (see edit history)

Share this post


Link to post
Share on other sites
  • 1

или так
 

class LS
{
    private    static    string    m_ScreenPath    =    "MOD\\data\\DayZ_BackGround_v";    //    Путь к изображениям.( Имена одинаковые, кроме цифры в конце )
    private    static    int        m_ScreenCount    =    5;                                //    Кол-во изображений.
    private    static    string    m_OldScreen        =    "";
    
    static string GetRandomScreen()
    {
        m_OldScreen    =    string.Format( "%1%2.paa",m_ScreenPath,Math.RandomInt( 0, m_ScreenCount ) );
        return m_OldScreen;
    }
    
    static void SetBackground( Widget v_Widget )
    {
        ImageWidget v_ImageWidget;
        
        if ( !v_Widget )
        {
            return;
        }
        v_ImageWidget    =    ImageWidget.Cast( v_Widget.FindAnyWidget( "Background" ) );
        if ( !v_ImageWidget )
        {
            return;
        }
        v_ImageWidget.LoadImageFile( 0, m_OldScreen );          
    }
}

modded class LoadingScreen
{
    override void Show()
    {        
        m_ImageWidgetBackground.LoadMaskTexture( "MOD/data/ls_mask.paa" );
        m_ImageWidgetBackground.LoadImageFile( 0, LS.GetRandomScreen() );
        m_ImageLogoMid.Show( false );
        m_ImageLogoCorner.Show( false );            
        m_ModdedWarning.Show( false );
        super.Show();
    }
}

modded class LoginTimeBase extends UIScriptedMenu
{
    override void Show()
    {
        super.Show();
        
        LS.SetBackground( layoutRoot );
    }
}


modded class LoginQueueBase extends UIScriptedMenu
{
    override void Show()
    {
        super.Show();
        
        LS.SetBackground( layoutRoot );
    }
}

 

Share this post


Link to post
Share on other sites
  • 0
background.LoadImageFile(0, preel); 

номер картинки здесь вроде менять можно, но для этого надо их сформировать заранее как-то

Share this post


Link to post
Share on other sites
  • 0
1 час назад, 123new сказал:

background.LoadImageFile(0, preel);


background.LoadImageFile(0, preel); 

номер картинки здесь вроде менять можно, но для этого надо их сформировать заранее как-то

Это понятно, я и спрашиваю, как их возможно сформировать

Share this post


Link to post
Share on other sites
  • 0
36 минут назад, matiqof сказал:

Это понятно, я и спрашиваю, как их возможно сформировать

dayz tools, workbench, все что могу сказать. ПОмнится делать надо Imageset. Как - я пожалуй тоже посижу на лавочке, ответа послушаю более грамматного, чем сам когда-то накликал случайно)

Share this post


Link to post
Share on other sites
  • 0
5 часов назад, Elk сказал:

есть такая штука сделанная уже на карте Припять, есть в мастерской. я когда то там подглядывал и делал свое, но делал и не доделал... мб ты доделаешь..)

Там немногно не то, что мне надо, там меняется экран на разных стадиях загрузки, когда идет полоска загрузки - один экран, когда идет время загрузки - другой экран, мне надо, чтобы на этих стадиях он был одинаков, но был разный при перезаходе в игру

Share this post


Link to post
Share on other sites
  • 0

    static int TotalBackgroundsNumber;
    static int RandomBackgroundNumber;
    ImageWidget m_Loading_aod;

////////////////////////////////////////////

m_Loading_aod = ImageWidget.Cast( m_WidgetRoot.FindAnyWidgetById(2729) );
        m_Loading_aod.LoadImageFile( 0, GetRandomLoadingBackground() );
///////////////////////////////////////////

static string GetRandomLoadingBackground()
    {
        TStringArray backgrounds = new TStringArray;
        backgrounds.Insert("MainMenu/data/Loadingscreen.edds");
        backgrounds.Insert("MainMenu/data/Loadingscreen2.edds");
        backgrounds.Insert("MainMenu/data/Loadingscreen3.edds");
        //backgrounds.Insert("LoadingScreen/data/2.edds");
        
        
        TotalBackgroundsNumber = backgrounds.Count();
        RandomBackgroundNumber = Randomer(0, (TotalBackgroundsNumber - 1));
            
         return backgrounds[RandomBackgroundNumber];
    }



Если сам не додумаешься сам то отпиши мне в дискорд.
Skar713#5961

Share this post


Link to post
Share on other sites
  • 0

Всем привет. Подскажите пожалуйста, у кого то есть готовое решение?

 

Share this post


Link to post
Share on other sites
  • 0
7 часов назад, NoNameUltima сказал:

class LS { private static string m_ScreenPath = "MOD\\data\\DayZ_BackGround_v"; // Путь к изображениям.( Имена одинаковые, кроме цифры в конце ) private static int m_ScreenCount = 5; // Кол-во изображений. private static string m_OldScreen = ""; static string GetRandomScreen() { m_OldScreen = string.Format( "%1%2.paa",m_ScreenPath,Math.RandomInt( 0, m_ScreenCount ) ); return GetOldScreen(); } static string GetOldScreen() { return m_OldScreen; } } modded class LoadingScreen { override void Show() { m_ImageWidgetBackground.LoadMaskTexture( "MOD/data/ls_mask.paa" ); m_ImageWidgetBackground.LoadImageFile(0, LS.GetRandomScreen() ); m_ImageLogoMid.Show( false ); m_ImageLogoCorner.Show( false ); m_ModdedWarning.Show( false ); super.Show(); } } modded class LoginTimeBase extends UIScriptedMenu { override void Show() { super.Show(); if (layoutRoot ) { ImageWidget background = ImageWidget.Cast( layoutRoot.FindAnyWidget( "Background" ) ); background.LoadImageFile( 0, LS.GetOldScreen() ); } } } modded class LoginQueueBase extends UIScriptedMenu { override void Show() { super.Show(); if ( layoutRoot ) { ImageWidget background = ImageWidget.Cast( layoutRoot.FindAnyWidget( "Background" ) ); background.LoadImageFile( 0, LS.GetOldScreen() ); } } }


class LS
{
    private    static    string    m_ScreenPath    =    "MOD\\data\\DayZ_BackGround_v";    //    Путь к изображениям.( Имена одинаковые, кроме цифры в конце )
    private    static    int        m_ScreenCount    =    5;                                //    Кол-во изображений.
    private    static    string    m_OldScreen        =    "";
    
    static string GetRandomScreen()
    {
        m_OldScreen    =    string.Format( "%1%2.paa",m_ScreenPath,Math.RandomInt( 0, m_ScreenCount ) );
        return GetOldScreen();
    }
    
    static string GetOldScreen()
    {
        return m_OldScreen;
    }
}

modded class LoadingScreen
{
    override void Show()
    {        
        m_ImageWidgetBackground.LoadMaskTexture( "MOD/data/ls_mask.paa" );
        m_ImageWidgetBackground.LoadImageFile(0, LS.GetRandomScreen() );
        m_ImageLogoMid.Show( false );
        m_ImageLogoCorner.Show( false );            
        m_ModdedWarning.Show( false );
        super.Show();
    }
}

modded class LoginTimeBase extends UIScriptedMenu
{
    override void Show()
    {
        super.Show();
        
        if (layoutRoot )
        {
            ImageWidget background    =    ImageWidget.Cast( layoutRoot.FindAnyWidget( "Background" ) );
            background.LoadImageFile( 0, LS.GetOldScreen() );  
        }
    }
}


modded class LoginQueueBase extends UIScriptedMenu
{
    override void Show()
    {
        super.Show();
        
        if ( layoutRoot )
        {
            ImageWidget background = ImageWidget.Cast( layoutRoot.FindAnyWidget( "Background" ) );
            background.LoadImageFile( 0, LS.GetOldScreen() );  
        }
    }
}

 

Если я все правильно понял, из мода пустышки (шаблона) мы редактируем фаил Loadingscreen.pbo в нем Loadingscreen.с . В нем 500 строк. Эти записи мы добавляем или заменяем какую то часть? Заранее прошу прощения, только учусь. Просидел 4 часа и так не вдуплил как привязать эти записи. Пересмотрел 1000 гайдов как меняют фаил картинки. С этим как раз вопросов нет. Картинки уже подготовлены и переконвертированы. Вопрос. Эти записи это к добавлению в фаил, частичной замене или полной замене. Я вообще тот фаил ковыряю?)))) Если не сложно объясните для деревянных как я. Возможно многим полезно будет. Так вроде все понятно с записями, но куда их внедрить?

Edited by Sklif1985 (see edit history)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.