Jump to content
LOzan

How To - Campaign Style Mission Intros

Recommended Posts

Hi there everybody,

I've done some Googling around but I haven't been able to find an answer to this question. I'm trying to create an intro to a mission in the style of the campaign, where the black bars come in and the player can look around, but can't control their unit's movement until the intro ends. It might be poor Google skills, but all I've found are solutions to creating cutscene-style intros using camera functions. Can anybody help me out here? Thanks!

Share this post


Link to post
Share on other sites

I don't know off hand, but I'd suggest simply unpacking the bsa files and taking a look at those missions to find out :)

If you don't know how to do that, grab the ARMA 3 Tools from steam (or use a 3rd party BSA manager). In the Arma 3 Tools folder there is a BankRev folder. In that folder is BankRev.exe, just drag a .bsa file onto it and it will be unpacked into a folder in the same directory. (I believe the campaign missions are under ARMA 3/Addons/missions_f.pbo)

Share this post


Link to post
Share on other sites

Bis_fnc_CinemaBorder,

In the mission editor, on the top bar are very icons. Click on the one that says Fx, that is the functions viewer. Scroll down to cinema border and the instructions should be included there. if you can't figure it out I'll show you how to do it. (Always better to try and figure it out for yourself first though).

  • Like 2

Share this post


Link to post
Share on other sites

Wow, thanks for the quick replies! Jona, I found the Cinema Border function and that is all incredibly helpful, but it has nothing about how to make the unit walk and such autonomously. Any idea how to take care of that part?

Share this post


Link to post
Share on other sites

You need the unit to play an animation, step 1 is to select what animation you want.

Load up any mission in the editor (just a blank one is fine), preview it and then press ESC, on the bottom right of the panel there is a button called ANIMATIONS. Clicking on it will bring up the Animation viewer, from there select CUTSCENES on the top dropdown, most of the animations that you'll want are at the bottom called stuff like ACTS_WelcomeOnHUB05_PlayerWalk_1. Click on each one to view it, when you find one you like double click on it, the animations viewer will close and a new panel will open, at the bottom of it is a box called path: From there select the last item which is the name of whatever animation you clicked on. Copy that and paste it somewhere (like a notepad file, just so you don't lose it).

Next step is for your unit to play an animation, if your unit is called Dude1 then you would write Dude1 switchMove "YourAnimationNameYouCopiedAndPastedEarlier". However animations can't be played from a units init, the simplest way would probably be a trigger with condition: true and Dude1 switchMove "YourAnimationNameYouCopiedAndPastedEarlier" in the OnAct: box.

  • Like 1

Share this post


Link to post
Share on other sites

Isn't there a unitPlay function for use in those situations? I'm not looking at ARMA right now, but I'm sure it's called unitPlay.

Share this post


Link to post
Share on other sites
Isn't there a unitPlay function for use in those situations? I'm not looking at ARMA right now, but I'm sure it's called unitPlay.

As far as I am aware unitPlay doesn't work on infantry, it might move them but it only records positions, not animations meaning infantry would float everywhere. I think that for the same reason when used on ground vehicles dust effects and what not won't work though that might be wrong. It's mostly useful for flying.

Share this post


Link to post
Share on other sites

Hey, since you already know about BIS_fnc_cinemaBorders I'll just throw in some animation snippets from my own 1stPerson cutscenes.

Make a player and a second guy walk a straight line (lasts as long as you don't call switchMove ""):

player switchMove "Acts_PercMwlkSlowWrflDf2";

IP_Buddy disableAI "MOVE";
IP_Buddy disableAI "ANIM";
IP_Buddy switchMove "Acts_PercMwlkSlowWrflDf2";

Make a player running (maybe as mission intro or so, sleep time seems not to be accurate anymore):

_timeout = time + 10; // Run for about 10 seconds
while {((time > 0) && (time < _timeout))} do {
player playMove "AmovPercMrunSrasWrflDf";        
sleep 1.3;
};

Make a "walk-into-hub"-scene with a guide who's showing the player around:

{IP_Guide disableAI _x} forEach ["AUTOTARGET", "MOVE", "TARGET"];
{IP_Guide enableAI _x} forEach ["ANIM","FSM"];
(group IP_Guide) setBehaviour "CARELESS";
(group IP_Guide) setCombatMode "BLUE";

IP_Guide switchMove "acts_welcomeonhub01_aiwalk";
player switchMove "Acts_welcomeOnHUB01_PlayerWalk";

Accurate positioning and adjustments are needed in any case. And note that some animations are divided into several parts in the functions viewer. But mostly, there's a similar named anim that covers the full scene (so you don't need to fiddle around with accurate timings and transitions between those separate parts).

Share this post


Link to post
Share on other sites

Could I use a script activated by the init.sqf to run the animations or do they have to be from a trigger?

Share this post


Link to post
Share on other sites
Could I use a script activated by the init.sqf to run the animations or do they have to be from a trigger?

I think that will work fine.

Share this post


Link to post
Share on other sites

Done! Thank all of you for the help, I'd still be lost otherwise.

Share this post


Link to post
Share on other sites
3 hours ago, zagor64bz said:

..never too old...lol...

 

Lol, dude, this is brilliant!!! 🙂 Absolutely amazing and astonishing with Top Gun soundtrack, the Arma 3 effects etc. 😄 I am impressed. Would you help me with the black screen quotes and send me a code so I'd achieve it as well? 🙂 Thanks in advance and cheers! 🙂

P.S. Does anyone knows how to open a strategic map with tasks in order to start different missions from there? I mean with addAction or better with holdAction? I know how to do it with a trigger, but I need a white board and a script to open the map itself. 🙂 Imagine this Pilot going for a briefing on the carrier's deck? 😉

P.S.S. This is the topic btw. 🙂

 

  • Thanks 1

Share this post


Link to post
Share on other sites
4 hours ago, black_hawk_mw2_87 said:

Would you help me with the black screen quotes and send me a code so I'd achieve it as well? 🙂 Thanks in advance and cheers! 🙂

Sure...I can tell how I did it:

 

In the init.sqf I have this:

null = [] execVM "Scripts\StoryBoard.sqf";///this will start the "movie-like" sequence..

StoryBoard .sqf

enableRadio false;
enableEnvironment false;
playMusic "intro";
titleText ["","BLACK",0.01];

waitUntil {!isNull player && player == player};

sleep 3;

2 cutRsc ["RscLogoA","BLACK",0.01];///this is the first image you see..the story-telling one...
titleText ["","BLACK IN",2];
sleep 13;
titleText ["","BLACK OUT",2];
sleep 3;
2 cutRsc ["RscLogoB","BLACK",0.01];////...this is the second...
titleText ["","BLACK IN",2];
sleep 13;
titleText ["","BLACK OUT",2];
sleep 5;
2 cutFadeOut 0;
titleText ["","BLACK IN",2];
[0, 0] spawn BIS_fnc_cinemaBorder;///this gives you the black top and bottom...
enableEnvironment true;
enableRadio true;
player switchMove "Acts_PercMwlkSlowWrflDf2";// player walking
													i						
TitleText ["","BLACK FADED"];														
																			
TitleText ["","BLACK IN",5];																																
"dynamicBlur" ppEffectEnable true;// Screen Effects
"dynamicBlur" ppEffectAdjust [6];   
"dynamicBlur" ppEffectCommit 0;     
"dynamicBlur" ppEffectAdjust [0.0];  
"dynamicBlur" ppEffectCommit 5; 
sleep 5;// delay finish screen intro
[] execVM "Scripts\takeoff.sqf";///this is for the F18 taking off animation
sleep 1;
0= ["<t font='PuristaBold' size='2.5'>" + localize "STR_Intro" + "</t>",0,0,6,-1,0,3011] spawn bis_fnc_dynamicText;	// display name of mission
sleep 6;

null=[[localize "STR_DynaTitle",localize "STR_DynaDate",localize "STR_DynaLoc",localize "STR_DynaPos"],   0.85,   0.75  ] spawn BIS_fnc_typeText;// display name of mission
sleep 12;
[1, 1] spawn BIS_fnc_cinemaBorder;	// cinema border off
player playMove "AmovPercMstpSlowWrflDnon";	// player walking stop

Then you need a stringtable.XML, where you define the title of the mission....

This is mine:

<?xml version="1.0" encoding="utf-8"?>
<Project name="AVIATORS">
  <Container name="Mission_Dialogue_Container_01">
  
// For briefing and screen title
  
	<Key ID="STR_Intro">
      <English>U.S. AVIATORS:                   AIR WARRIORS</English>
    </Key>
// Dynamic texts
  
	<Key ID="STR_DynaTitle"> /// this is needed if you want the location,date and whatnot in the lower right of screen.
      <English></English>
    </Key>
	<Key ID="STR_DynaDate">/// this is needed if you want the location,date and whatnot in the lower right of screen.
      <English></English>
    </Key>
	<Key ID="STR_DynaLoc">/// this is needed if you want the location,date and whatnot in the lower right of screen.
      <English></English>
    </Key>
	<Key ID="STR_DynaPos">/// this is needed if you want the location,date and whatnot in the lower right of screen.
      <English></English>
	</Key>
  </Container>
</Project>

Also, you have to put this in the description.ext

class CfgMusic
{
	tracks[]={};

	
	class intro
	{
        name = "";
        sound[] = {"Sound\topgun.OGG", db+25, 1.0};///music in storyboard.sqf
    };
};

class RscTitles 
{
    class RscLogoA
    {
	    idd = -1;
	    duration = 3;
	    fadeIn = 0;
	    fadeOut = 0;
	    controls[] = {RsclogoPicture};
        class RsclogoPicture
        {
	        idc = -1;
	        type = 0;
	        style = 0x30;
	        x = SafeZoneX + SafeZoneW/2 - 1.0/2;
	        y = SafeZoneY + SafeZoneH/2 - 1.2/2;
	        w = 1.0; 
            h = 1.2;
	        font = "PuristaMedium";
	        sizeEx = 0;
	        colorBackground[] = {0,0,0,0};
	        colorText[] = {1,1,1,1};
	        text = "images\intro01.jpg";
	    };
    };
	
	class RscLogoB
    {
	    idd = -1;
	    duration = 3;
	    fadeIn = 0;
	    fadeOut = 0;
	    controls[] = {RsclogoPicture};
        class RsclogoPicture
        {
	        idc = -1;
	        type = 0;
	        style = 0x30;
	        x = SafeZoneX + SafeZoneW/2 - 1.0/2;
	        y = SafeZoneY + SafeZoneH/2 - 1.2/2;
	        w = 1.0; 
            h = 1.2;
	        font = "PuristaMedium";
	        sizeEx = 0;
	        colorBackground[] = {0,0,0,0};
	        colorText[] = {1,1,1,1};
	        text = "images\intro03.jpg";
	    };
    };
};

I hope it helps...cheers mate!!

  • Like 3

Share this post


Link to post
Share on other sites

Hello, mate.

I finally tried to create a mission with a cinematic intro, but it didn't work well. There's some strange error when I start it. I removed almost everything from my .sqf file and simply added the exec code and I changed the description.ext file, which also gave me an error that a symbol is mistaken. The arma logo is also missing, the ogg file, too... So there's no music, simply the screen goes black for a second 2 times and then comes the cinematic frame... which wouldn't disappear at all and the player keeps walking. I also didn't understand that XML file. Where should I put that code? I think it's all too complicated for me, so, PLEASE, help me, step by step, like I am a beginner. Or you could also send me an example or a test mission where I can see how it works... something like copy/paste/edit according to mission's needs... Please, help me and thank you in advance! Cheers!

Share this post


Link to post
Share on other sites

The XML file is it's own document, and is only required based on your needs. 

 

I used some of the same info above to reference mine during the creation, as well as this Video on youtube by Alias.I went with something much more basic, as I didn't want video in a MP mission. I am not the greatest at stuff like this, so I was in the same boat as you seem to be in currently. What I ended up with was this:

Spoiler

waitUntil {time > 0};

_jip_enable    = _this select 0;

[[_jip_enable],"AL_intro\time_srv.sqf"] remoteExec ["execVM"];
waitUntil {!isNil "curr_time"};

if (!hasInterface) exitWith {};

disableSerialization;

if ((!curr_time) or (_jip_enable<0)) then {


private ["_name"];


enableRadio false;
enableEnvironment false;
sleep 1;

hintSilent "Please Wait, Loading";

["newSkulls.jpg", [-0.1,-0.2,1.2,1.2], [7,7], 6, 16, [2,2], 1] spawn BIS_fnc_textTiles;

sleep 20;


[parseText "<t color='#FF0000' font='PuristaBold' size='13' align='center'>Warlords</t><br /><t color='#FFA500' font='PuristaSemibold' size='11' align='center'>Modified</t><br />by the Antiprotestant", [-0.1,-0.2,1.2,1.2],[7,7], 8, 2, 0.6] spawn BIS_fnc_textTiles;

sleep 12;


waitUntil {alive player};

_name=name player;


[0, 0] spawn BIS_fnc_cinemaBorder; ///this gives you the black top and bottom...

sleep 2;

1 cutRsc ["nggHUD","PLAIN"];

waitUntil {!isNull (uiNameSpace getVariable "nggHUD")};
    _display = uiNameSpace getVariable "nggHUD";
        _setText = _display displayCtrl 1001;
            
            if (playerSide == WEST) then {
            _setText ctrlSetStructuredText (parseText format ["Welcome %1!",_name]);
            _setText ctrlSetBackgroundColor [0,0,1,0.5];
            };
            if (playerSide == EAST) then {
            _setText ctrlSetStructuredText (parseText format ["Welcome %1!",_name]);
            _setText ctrlSetBackgroundColor [1,0,0,0.5];
            };
sleep 5;

            _setText ctrlSetStructuredText (parseText format ["%1: Please equip yourself at the nearest Equipment Crate.",_name]);
            _setText ctrlSetBackgroundColor [0,0,0,0.5];
sleep 5;

            _setText ctrlSetStructuredText (parseText format ["Role based loadouts are available during the respawn screen."]);
            _setText ctrlSetBackgroundColor [0,0,0,0.5];
sleep 5;

            _setText ctrlSetStructuredText (parseText format ["Equipment Crates can be relocated and used as F.O.B.s"]);
            _setText ctrlSetBackgroundColor [0,0,0,0.5];
sleep 5;

            _setText ctrlSetStructuredText (parseText format ["WARNING: Equipment Crates can also be stolen and / or destroyed!"]);
            _setText ctrlSetBackgroundColor [1,0,0,0.5];
        
sleep 3;
        
1 cutFadeOut 2;
        
sleep 1;
        
1 cutRsc ["default","PLAIN"];

enableEnvironment true;
enableRadio true;

sleep 2;

[1, 1] spawn BIS_fnc_cinemaBorder;    // cinema border off

};    


nggPreview=[
        [
            ["Necessary Genocide Presents:","<t shadow='1' align='center' valign='top' size='2'>%1</t><br/>", 9],
            ["An adaptation of Warlords by Bohemia Interactive®","<t align = 'center' shadow = '1' size = '0.8'>%1</t><br/>", 9],
            ["Edited by the Antiprotestant","<t align = 'center' shadow = '1' size = '0.7'>%1</t><br/>", 6]
        ]
    ] spawn BIS_fnc_typeText;

 

Hopefully it helps you out. It took a ton of testing and changes to get it to fit my needs, so you need to use patience. 

 

Also, the RSC titles may be placed outside your description.ext, using a .hpp file. As long as you include it (#include "file.hpp") in the description you should be able to cut down on clutter in the description.

 

My dialogs.hpp: 

Spoiler


class RscTitles 
{
    class Default
    {
        idd = -1;
        fadein = 0;
        fadeout = 0
        duration = 0
    };
    
    class nggSkulls
    {
        idd = 200;
        duration = 3;
        fadeIn = 0;
        fadeOut = 0;
        controls[] = {ngglogoPicture};
        class ngglogoPicture
        {
            idc = 1002;
            type = 0;
            style = 0x30;
            x = SafeZoneX + SafeZoneW/2 - 1.0/2;
            y = SafeZoneY + SafeZoneH/2 - 1.2/2;
            w = 1.0; 
            h = 1.2;
            font = "PuristaMedium";
            sizeEx = 0;
            colorBackground[] = {0,0,0,0};
            colorText[] = {1,1,1,1};
            text = "newSkulls.jpg";
        };
    };
    class nggHUD
    {
        idd = 3000000;
        movingEnable = 0;
        enableSimulation = 1;
        enableDisplay = 1;
        duration = 99999;
        fadein = 0.1;
        fadeout =  2;
        name = "nggHUD";
        onLoad = "with uiNameSpace do { nggHUD = _this select 0 } ";
    class controls
        {
            class structuredText
            {
                access = 0;
                type = 13;
                idc = 1001;
                style = 0x00;
                lineSpacing = 1;
                x = 0.103165 * safezoneW + safezoneX;
                y = 0.757996 * safezoneH + safezoneY;
                w = 0.778208 * safezoneW;
                h = 0.0660106 * safezoneH;
                size = 0.020;
                colorBackground[] = {0,0,0,0};
                colorText[] = {1,1,1,1};
                text = "";
                font = "PuristaSemiBold";
                    class Attributes{
                        font = "PuristaSemiBold";
                        color = "#FFFFFF";
                        align = "CENTER";
                        valign = "top";
                        shadow = false;
                        shadowColor = "#000000";
                        underline = false;
                        size = "4";
                    };
            };
        };
        
    };
    
};

 

Good Luck, and Happy Editing!

Edited by Trenchcoat
forgot an end quotation mark in .hpp example.
  • Like 2

Share this post


Link to post
Share on other sites

Thank you very much for the help and your efforts. I really appreciate all of this, so thanks for the patience with me. But I think I am a not going to be able to achieve the results I was seeking. I would be VERY THANKFUL if you put a simple example mission with a player walking, some sort of text on the screen and some kind of intro music. These are things that can be later changed - the whole duration of the intro, the music and the text. I will be very happy to try it out. I also think it is going to be very important and helpful to the community. Thank you in advance!!! Cheers!

Share this post


Link to post
Share on other sites

Well, challenge is accepted. LOL! 

 

Here is a sample mission!

 

I found out that compiling your own music into the correct format is a cruel mistress, and was unable to get the music to operate as planned; so I decided it was easier to use the built in music instead. You can access the list through the debug screen after loading the mission through the editor. Put in the code "utils 4" and execute Local, and it will bring up a window containing the Vanilla music files that you can sample. The box at the top contains the name, class name, and path to the file. By using the command "playMusic" followed by the classname "BackgroundTrack03_F" (formatted like: playMusic "BackgroundTrack03_F";) you can play the track when you want it. By using the code to terminate the music you can end it when you want (formatted like: playMusic "";). you could also start the music at a certain point by making the begin play music an array (E.G. playMusic ["BackgroundTrack03_F", 3] would start the track at 3 seconds in). Also, just a note; custom music would need configured in cfgMusic, but attempting to configure a file that is already configured with Vanilla music breaks the music function.

Spoiler

//from ngg_intro.sqf


playMusic "BackgroundTrack03_F";

enableRadio false; // this and next line removes ambient noises
enableEnvironment false;

 

As for the text, in this there is 3 different kinds of examples. The textTiles is for the image display with skulls, and the 2nd being the large Intro Text immediately following. This needs to be set in the RscTitles to provide the path to the image. Sleep commands will take some finesse to set properly (ahh, the loading and watching may get to you after about 15 load ins), but will be how you set the timing. on a very hefty mission, they may react differently, so further adjustment may be required later as well.  

 

Spoiler

//from ngg_dialogs.hpp

 

class RscTitles 
{
    class Default
    {
        idd = -1;
        fadein = 0;
        fadeout = 0
        duration = 0
    };
    
    class nggSkulls
    {
        idd = 200;
        duration = 3;
        fadeIn = 0;
        fadeOut = 0;
        controls[] = {ngglogoPicture};
        class ngglogoPicture
        {
            idc = 1002;
            type = 0;
            style = 0x30;
            x = SafeZoneX + SafeZoneW/2 - 1.0/2;
            y = SafeZoneY + SafeZoneH/2 - 1.2/2;
            w = 1.0; 
            h = 1.2;
            font = "PuristaMedium";
            sizeEx = 0;
            colorBackground[] = {0,0,0,0};
            colorText[] = {1,1,1,1};
            text = "newSkulls.jpg";
        };
    };

 

Spoiler

//from ngg_intro.sqf

["newSkulls.jpg", [-0.1,-0.2,1.2,1.2], [7,7], 6, 16, [2,2], 1] spawn BIS_fnc_textTiles;

sleep 8;

[parseText "<t color='#FF0000' font='PuristaBold' size='12' align='center'>Intro Test</t><br /><t color='#FFA500' font='PuristaSemibold' size='11' align='center'>EXAMPLE</t><br />from Trenchcoat to the Arma 3 Community", [-0.1,-0.2,1.2,1.2],[7,7], 8, 2, 0.6] spawn BIS_fnc_textTiles;
 

 

The next is Structured text which is displayed during the Cinema border display. This needs to be set in the RscTitles to tell the system that there is a hud overlay to be shown, and control some options; but I found the option such as disableUserInput are easier to control from the intro.sqf. I also break the text into colors based on team Side (blue and red) for Welcome, and add a variable to fetch the player name to display as well. This makes for a wonderful way to give tips to players joining the server, but the cinema border interrupts some actions as well. For Example, if you have the cinema border and a player joins combat in progress, they may not be able to escape combat or have a clear visual of the enemy. you can disable movement completely, but for this reason in my own missions I leave disableUserInput alone so at least they can go prone under fire.

 

Spoiler

//from ngg_dialogs.hpp

 

class nggHUD
    {
        idd = 3000000;
        movingEnable = 0;
        enableSimulation = 1;
        enableDisplay = 1;
        duration = 99999;
        fadein = 0.1;
        fadeout =  2;
        name = "nggHUD";
        onLoad = "with uiNameSpace do { nggHUD = _this select 0 } ";
    class controls
        {
            class structuredText
            {
                access = 0;
                type = 13;
                idc = 1001;
                style = 0x00;
                lineSpacing = 1;
                x = 0.103165 * safezoneW + safezoneX;
                y = 0.757996 * safezoneH + safezoneY;
                w = 0.778208 * safezoneW;
                h = 0.0660106 * safezoneH;
                size = 0.020;
                colorBackground[] = {0,0,0,0};
                colorText[] = {1,1,1,1};
                text = "";
                font = "PuristaSemiBold";
                    class Attributes{
                        font = "PuristaSemiBold";
                        color = "#FFFFFF";
                        align = "CENTER";
                        valign = "top";
                        shadow = false;
                        shadowColor = "#000000";
                        underline = false;
                        size = "4";
                    };
            };
        };
        
    };
    
};

 

Spoiler

//from ngg_intro.sqf


[0, 0] spawn BIS_fnc_cinemaBorder; ///this gives you the black top and bottom...

player switchMove "Acts_PercMwlkSlowWrflDf2";// player walking

sleep 2;

1 cutRsc ["nggHUD","PLAIN"];

waitUntil {!isNull (uiNameSpace getVariable "nggHUD")};
    _display = uiNameSpace getVariable "nggHUD";
        _setText = _display displayCtrl 1001;
            
            ///display only to blufor
            if (playerSide == WEST) then {
            _setText ctrlSetStructuredText (parseText format ["Welcome %1!",_name]);
            _setText ctrlSetBackgroundColor [0,0,1,0.5];
            };
            ///display only to opfor
            if (playerSide == EAST) then {
            _setText ctrlSetStructuredText (parseText format ["Welcome %1!",_name]);
            _setText ctrlSetBackgroundColor [1,0,0,0.5];
            };
sleep 5;

            _setText ctrlSetStructuredText (parseText format ["%1: I hope this helps you in your intro endeavors!",_name]);
            _setText ctrlSetBackgroundColor [0,0,0,0.5];
sleep 5;

            _setText ctrlSetStructuredText (parseText format ["You can put any text you want here."]);
            _setText ctrlSetBackgroundColor [0,0,0,0.5];
sleep 5;

    
1 cutFadeOut 2;
        
sleep 1;
        
1 cutRsc ["default","PLAIN"];

enableEnvironment true;  //re-enables ambient noises
enableRadio true;

sleep 2;

player playMove "AmovPercMstpSlowWrflDnon";    // player walking stop

[1, 1] spawn BIS_fnc_cinemaBorder;    // cinema border off

 

 

Finally there is the typeText that I use to display Necessary Genocide and a few tidbits like my name. You can configure with color and such as well, but due to the intrusiveness of the prior texts, I tend to go for a minimally distracting print. I have tried to place some extra space between the first and second lines before, but did not achieve the result I was looking for. I am not sure if the spacing is actually configurable per line, or if they are all attached together as a block that cannot be split (it overlaps the Warlords OSD popups). 

Spoiler

//from ngg_intro.sqf

 

nggPreview=[
        [
            ["Necessary Genocide Presents:","<t shadow='1' align='center' valign='top' size='2'>%1</t><br/>", 9],
            ["A Display of Intro texts and Music","<t align = 'center' shadow = '1' size = '0.8'>%1</t><br/>", 9],
            ["Created by Contrathiest Aka.Trenchcoat","<t align = 'center' shadow = '1' size = '0.7'>%1</t><br/>", 6]
        ]
    ] spawn BIS_fnc_typeText;

 

The text type I have used previously, but not in this example was titleText and infoText. The infoText displays at the lower right side of the screen like in the actual game (Island, time, and date). The titleText function displays across the center of the screen similar to my typeText.

 

Hopefully this gives you something to help you out. I will update this if I can get my own music going and put in for a more elaborate example. Good Luck with the scripting!
 

Edited by Trenchcoat
Updated to add custom music like wanted previously
  • Like 2
  • Thanks 3

Share this post


Link to post
Share on other sites
3 hours ago, Trenchcoat said:

Well, challenge is accepted. LOL! 

 

Here is a sample mission!

Welcome to the forums Trenchcoat, and thanks much for this great contribution to the community.  Since you hail from Wichita, here's a link to my favorite cowboy tune "Jack Straw" that contains the line "Jack Straw from Wichita cut his buddy down".  🙂 

 

https://www.youtube.com/watch?v=lCdXyj57HO0

 

  • Like 3

Share this post


Link to post
Share on other sites

So I was able to get the custom track working. it has to be set at a 128 Kbps constant bitrate before conversion to .ogg, then set at a frequency of 44.100khz. I did all of it by installing Audacity, importing my file then exporting and overwriting the old mp3 as another mp3 with the bitrate changed to 128Kbps Constant. then Re-Importing the mp3 and exporting as .ogg set to 44100khz. Placed that file into a folder in mission folder named "sound". 

 

I then created the cfgMusic lines in a file named "ngg_cfgSounds.hpp" this is how it looks:

Spoiler


class CfgMusic
{
    tracks[]={};

    
    class hyde
    {
        name = "hyde";
        sound[] = {"Sound\hyde-rock-pendulum.ogg", db+0, 1.0};
    };
};
 

 

I set the class name the same as the name for simplicity, but it is the class name that you call from your playMusic command. Then is the path to the .ogg file itself so the system can locate it.

 

Per the music creator's wishes I also added his licencing information to the top of the file. THIS IS VERY IMPORTANT!! Always watch the licencing of what you may be using, you don"t want to have to pay for something you used and don't get anything from! Without following the creator's instructions, you can be held liable for Monetary damages without making a profit!

 

Finally, since I added the cfgsounds to an external file instead of directly to the description.ext, I add the line #include "ngg_cfgSounds.hpp" to the description file. This allows the information in the file to be used in the same manner as directly printing to the description.ext, but without the clutter. 

 

 

  • Like 2

Share this post


Link to post
Share on other sites
On 1/24/2020 at 9:53 PM, Stormmy1950 said:

Hi, @LOzan

I dont know how good you are with the scripting but i would recommend the Alias Script for Intros its easy to use and its grate tool in overall.

Here is a Link:

 

 

And here is Link for Download:

http://www.armaholic.com/page.php?id=30731

Thank you for the advice. I use Alias' Intro scripts for a very long time now. I really enjoy his way of making intros easier and that's why I use it. But I needed the cinematographic intro style with borders. 

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×