Jump to content
Foxtrot32196

Regarding radio messages in editor missions

Recommended Posts

My query is based on the fact that i know how to use PAPA_BEAR and Airbase callsigns and that i read the fabled Toadlife tutorial (ALl hail Toadlife!) on customising callsigns in missions.

 

I was tralling through the American campaign missions in the editor to see what the developers used and came across a radio message from the officer on "01Flashpoint.eden", just as you got off the Chopper to move on Morton. The message read "1. Ok lets move out. Keep your heads down and get over to those trees, i'll brief you there." and the message didn't appear to use a callsign. I looked at the message content and only found an audio file. I am wondering how i would do a similar thing in my editor missions. All i really want to do is have the text to follow any in-game voice audio to display in the bottom left, not from PAPA_BEAR or anyone in particular.

 

Does anyone else feel me and/or know how to help me with this?

 

Thanks in advance to anyone who can!

Share this post


Link to post
Share on other sites

Hi,

 

This is a bit confusing for most people. There is no single tutorial that clearly explains how it works and what is required.

So that all will understand.

The basic radio:

There are two west (or east) calling stations:

[West, "HQ"]

[West, "AirBase"]

 

To give these a callsign in your mission you set them in the init.sqs file:

papabear = [West, "HQ"]

firefly = [West, "airbase"]

papabear and firefly can be substituted with any custom call sign you want.

 

Now there are several ways to send a radio message. Mainly with "sidechat" or "sideradio"

[west,"HQ"] sidechat "Hello!"

firefly sideradio "radiomessage"

This can be entered into the "Init Field" of a trigger or waypoint or called from a script file.

 

You should also give your player group an ID using this:

Syntax: setGroupId ["Alpha", "GroupColor4"]

Possible Group Names: "Alpha", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "Kilo", "Yankee", "Zulu", "Buffalo", "Convoy", "Guardian", "Two", "Three"
Possible Group Colors: " Values for Groupcolors: 0 (no color), 1 (black), 2 (red), 3 (green), 4 (blue), 5 (yellow), 6 (orange), 7 (pink)

This can be done in either the group leader "Init Field" or in the init.sqs file

Example:

Grp1=group this; Grp1 setGroupID ["Alpha", "GroupColor4"]

 

Here is s series of talk scripts from a mission I made

Talk.sqs


[west,"HQ"] sidechat "Alpha this is command, you need to begin your attack of the Russian camp."
~6
p1 sidechat "Papa Bear this is Alpha, copy that. We are Oscar Mike."
~6
p1 groupchat "Ok guys we had better load up the truck and get on our way."

Talk1.sqs

~2
[west,"HQ"] sidechat "Alpha there are enemy patrols in this area, proceed with caution."
~6
p1 sidechat "Roger that Papa Bear. Thanks for the headsup."
~6
p1 groupchat "Alright men you heard it. You all better keep on your toes. I'm not writting anymore letters home."
~2
savegame;

Talk2.sqs

[west,"HQ"] sidechat "Alpha we have a radar contact of an aircraft moving north to Le Moule."
~6
p1 sidechat "Copy Papa Bear. Do you have any ID on it ?"
~6
[west,"HQ"] sidechat "Alpha, possible MI 17. We're waiting for confirmation."
~6
p1 sidechat "Roger"
~20
[west,"HQ"] sidechat "Alpha, Mama Bear confirms it's an MI 17. There might be para troops on board."
~5
p1 sidechat "Copy that, Alpha out."

These are script files called from triggers at different parts of the mission.

"~6" are delays between papabear and alpha calls. You can change it for your preference.

 

Of course this is just a simple basic example. What you want can be done using the description.ext file, for custom sounds, radio messages, identities.

 

To get a voice message you need to define radio messages in the description.ext file.

 

// Radio chatter?
// Same structure as CfgSounds.
 
class CfgRadio
{

// Contains a list of all the .ogg files (without the .ogg extension) which are in all of // the CfgRadio class instances below.

   sounds[] = {S02r16, S02r17, S02r18, S02r19, S02r20, S02r21, S02r22, S02r23, S02r24};

// Class name is referenced in the mission.sqm file. (E.g. sideRadio ""S02r15"")

   class S02r15
      {
        name = ""; <<insert name between ""

 

You need to record sound files, place them in your mission folder and make an entry with each sound file name like above example.

 

They are called like above:  (E.g. sideRadio ""S02r15"")

 

If you open a standard mission you can see examples of this.

 

In the standard missions due to international languages all of the screen text is given a name and entered in the stringtable.csv file.

Example:

Trigger in editor: serg sideRadio "00r51"; Hint localize "STR_HINT_14"

Sound in Description.ext:

class CfgRadio
{
 sounds[] = { };

class 00r51
 {
  name = "00r51"; (name of sound file 00r51.ogg (without .ogg))
  sound[] = {"00r51.ogg", db-40, 1.0};
  title = $STRM_00r51; (or enter text here)
 };

};

Text from stringtable: STRM_00r51 "Hey! Where do you think you're going? Follow my orders, you imbecile!"

 

I guess If you want simple text in one language on the screen you can also enter it in a trigger by pressing the "Effects" button. At the bottom there is a text entry field and a screen location button.

 

If this seems complicated, it is.

  • Like 1

Share this post


Link to post
Share on other sites

Hi, wow!

 

I know it is complicated, but i am committing a lot of time to making this work!

 

My only questions from reading this are where is the text file that goes with the recorded audio, if they don't exist, does it just use recognition based on the audio, and where did "p1" come from?

I am assuming that p1 refers to the leaders of one of the squads and i feel that therein lies the secret to my success. I still don't really understand where the identity came from in any of your examples.

 

You answered my question very thoroughly and for that i wholeheartedly, thank you.

 

Share this post


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

Hi, wow!

 

I know it is complicated, but i am committing a lot of time to making this work!

 

My only questions from reading this are where is the text file that goes with the recorded audio, if they don't exist, does it just use recognition based on the audio, and where did "p1" come from?

I am assuming that p1 refers to the leaders of one of the squads and i feel that therein lies the secret to my success. I still don't really understand where the identity came from in any of your examples.

 

You answered my question very thoroughly and for that i wholeheartedly, thank you.

 

Hi,

 

Yes p1 is the squad leader (player in that case).  Besides the recorded audio files (ogg format) you need a description.ext and a stringtable.csv (comma separated value) files.

any where you see $STR this points to the stringtable file.

 

From the campaign mission "04MontignacMustFall.Eden"

Description.ext:

Spoiler

minScore=0
avgScore=700
maxScore=4000

onLoadMission=$STRM_04n01

class CfgSounds
{
    sounds[] =
              {
              
                  04v1, 04v2, 04v3, 04v4, 04v5,
             
              };


        class 04v1
 {
  name = "";
  sound[] = {"04v1.ogg", db-20, 1.0};
  titles[] =
  {
   0, $STRCAMP_04v1
  };
 };
        class 04v2
 {
  name = "";
  sound[] = {"04v2.ogg", db-40, 1.0};
  titles[] =
  {
   0, $STRCAMP_04v2
                    };
          };
        class 04v3
 {
  name = "";
  sound[] = {"04v3.ogg", db-20, 1.0};
  titles[] =
  {
   0, $STRCAMP_04v3
  };
 };
        class 04v4
 {
  name = "";
  sound[] = {"04v4.ogg", db-40, 1.0};
  titles[] =
  {
   0, $STRCAMP_04v4
                    };
          };
        class 04v5
 {
  name = "";
  sound[] = {"04v5.ogg", db-40, 1.0};
  titles[] =
  {
   0, $STRCAMP_04v5
                    };
          };
};


class CfgRadio
{
 sounds[] =
 {
  04r1, 04r2, 04r3,
  
  04r4, 04r5, 04r6, 04r7, 04r8, 04r9, 04r10,

  04r11, 04r12, 04r13, 04r14, 04r15, 04r16, 04r17, 04r18,
 };


 class 04r1
 {
  name = "";
  sound[] = {"04r1.ogg", db-40, 1.0};
  title = $STRCAMP_04r1;  
 };
 
 class 04r2
 {
  name = "";
  sound[] = {"04r2.ogg", db-40, 1.0};
  title = $STRCAMP_04r2;  
 };
 class 04r3
 {
  name = "";
  sound[] = {"04r3.ogg", db-40, 1.0};
  title = $STRCAMP_04r3;  
 };


 class 04r4
 {
  name = "";
  sound[] = {"04r4.ogg", db-40, 1.0};
  title = $STRCAMP_04r4;  
 };
 class 04r5
 {
  name = "";
  sound[] = {"04r5.ogg", db-40, 1.0};
  title = $STRCAMP_04r5;  
 };
 class 04r6
 {
  name = "";
  sound[] = {"04r6.ogg", db-40, 1.0};
  title = $STRCAMP_04r6;  
 };

 class 04r7
 {
  name = "";
  sound[] = {"04r7.ogg", db-40, 1.0};
  title = $STRCAMP_04r7;  
 };
 class 04r8 
  {
  
   name = "";
  sound[] = {"04r8.ogg", db-40, 1.0};
  title = $STRCAMP_04r8;  
 };
 class 04r9
 {
  name = "";
  sound[] = {"04r9.ogg", db-40, 1.0};
  title = $STRCAMP_04r9;  
 };
 class 04r10
 {
  name = "";
  sound[] = {"04r10.ogg", db-40, 1.0};
  title = $STRCAMP_04r10;  
 };

 class 04r11
 {
  name = "";
  sound[] = {"04r11.ogg", db-40, 1.0};
  title = $STRCAMP_04r11;  
 };
 class 04r12
 {
  name = "";
  sound[] = {"04r12.ogg", db-40, 1.0};
  title = $STRCAMP_04r12;  
 };
 class 04r13
 {
  name = "";
  sound[] = {"04r13.ogg", db-40, 1.0};
  title = $STRCAMP_04r13;  
 };
 class 04r14
 {
  name = "";
  sound[] = {"04r14.ogg", db-40, 1.0};
  title = $STRCAMP_04r14;  
 };
 class 04r15
 {
  name = "";
  sound[] = {"04r15.ogg", db-40, 1.0};
  title = $STRCAMP_04r15;  
 };
 class 04r16
 {
  name = "";
  sound[] = {"04r16.ogg", db-40, 1.0};
  title = $STRCAMP_04r16;  
 };
 class 04r17
 {
  name = "";
  sound[] = {"04r17.ogg", db-40, 1.0};
  title = $STRCAMP_04r17;  
 };
 class 04r18
 {
  name = "";
  sound[] = {"04r18.ogg", db-40, 1.0};
  title = $STRCAMP_04r18;  
 };
};

class CfgSFX
{
 sounds[] = {};
};
class CfgEnvSounds
{
 sounds[] = {};
};

In the first radio message entry is "title = $STRCAMP_04r1; " this corresponds to a line in the stringtable file (only using English column) This file can be opened with Excel where you have columns, in a text file you need commas used as separators.

STRCAMP_04r1,BLACK TO PAPA BEAR. DF25 UNDER HEAVY ATTACK FROM THE SEA. SEND BACKUP. WE CAN'T HOLD OUT MUCH LONGER. OVER.,BLACK A PAPA OURS.

Stringtable.csv:

Spoiler
LANGUAGE English
   
STRCAMP_04v1 OK. Let's go. We'll rendezvous with Bravo and Charlie squads after seizing the village on the main crossroads.
   
STRCAMP_04v2 We're still alive... but, Jesus, for how long?
STRCAMP_04v3 Thank Christ, we've made it...
   
STRCAMP_04v4 Jesus... They're all dead. Gotta find Bravo squad in the center of town.
   
STRCAMP_04v5 Gunship! Hit the dirt! It's a Hind. Take cover!
   
   
STRCAMP_04r1 BLACK TO PAPA BEAR. DF25 UNDER HEAVY ATTACK FROM THE SEA. SEND BACKUP. WE CAN'T HOLD OUT MUCH LONGER. OVER.
STRCAMP_04r2 PAPA BEAR TO BLACK. KEEP IT UP, BACK UP ON THE WAY. OVER.
STRCAMP_04r3 YES, SIR. WE'LL DO OUR BEST. OUT.
   
   
STRCAMP_04r4 THE VILLAGE IS OURS. GET OVER HERE WITH THE TRUCK! OVER
STRCAMP_04r5 PAPA BEAR TO BLACK, BACK OFF! WE HAVE NEW ORDERS. ALL US ARMY PERSONNEL MUST WITHDRAW FROM EVERON! BACKUP NO LONGER ASSIGNED, THEY'VE BEEN CALLED AWAY. OUT.
STRCAMP_04r6 PAPA BEAR TO ALL US UNITS, CODE FOXTROT! CODE FOXTROT! NEW ORDERS, ALL US PERSONNEL MUST WITHDRAW FROM EVERON. OUT.
STRCAMP_04r7 PAPA BEAR TO ALL UNITS, FOLLOW INSTRUCTIONS FOR THE EVACUATION. OUT.
   
STRCAMP_04r8 PAPA BEAR, THIS IS ALPHA. WE'RE STILL IN MONTIGNAC. WHAT SHALL WE DO? OVER.
STRCAMP_04r9 ALPHA, GO STRAIGHT THROUGH PROVINS TO MORTON. MOVE QUICKLY. OUT.
   
STRCAMP_04r10 PAPA BEAR, ALPHA HERE. WE'RE ENGAGING RUSSIAN FORCES NEAR PROVINS. OVER
STRCAMP_04r11 ALPHA, ELIMINATE THEM QUICKLY, TIME IS RUNNING OUT! OUT
   
STRCAMP_04r12 PAPA BEAR, THIS IS ALPHA. THEY DESTROYED OUR TRUCK, WE NEED ALTERNATE TRANSPORT! OVER.
STRCAMP_04r13 PAPA BEAR TO ALPHA, UNDERSTOOD. WE'RE SENDING A BLACKHAWK TO PICK YOU UP. OUT.
   
STRCAMP_04r14 ALPHA, BLACKHAWK IS ON WAY. HOLD ON! OUT.
   
STRCAMP_04r15 PAPA BEAR, ALPHA HERE. THE BLACKHAWK WAS DESTROYED. WE'RE RUNNING OUT OF OPTIONS.
STRCAMP_04r16 ALPHA SQUAD, TRY TO GET TO MORTON BY FOOT. WE CAN'T HELP YOU NOW. OUT.
   
STRCAMP_04r17 DAMN! THE TRUCK IS DAMAGED.
   
STRCAMP_04r18 BRAVO AND CHARLIE TEAMS ARE DOWN. WE'RE GETTING OUR ASSES KICKED HERE. HOLD FIRE AND RETREAT.
   
   
STRCAMP_FAILED YOUR SQUAD HAD TO RETREAT
   
STRM_04n01 Moving towards the town of Montignac in central Everon

 

 

Here is a link to the un-pbo'd mission file. https://drive.google.com/open?id=0ByvuJ-pCUiUIQ3prSVRDbXFpaFE

 

All of the sound files are in a separate sound folder.

 

If you use Firefox or Google Chrome the sounds can be played directly with browser.

Share this post


Link to post
Share on other sites

Ok, i have made an example out of the word "Hello".

 

The link to my images of all the editing and code involved is here:- https://drive.google.com/open?id=0B0jCm7X6na3ib2RubjZZS1BMNnc

 

I am sure there are other things wrong with this and i just don't know what they are. My main issue is with the message i get when i try to play the mission through. I get greeted with "radio message not found".

 

Do you know what i might have done wrong and help me to the resolution that my message words :)

 

Further question, How did you define "p1" from your example radio sequences?

 

Share this post


Link to post
Share on other sites

Hi,

 

Sorry you're having so much trouble with this. Here are a few things:

#1 Sound MUST be .ogg format

#2 Sounds must be in a folder within the mission, called sound (not sounds).

#3 With using stringtable file I have always seen $STRxxx and STRxxx as prefixes.

"title = $STRCAMP_04r1" is used in the description file (must have $ in front)

STRCAMP_04r1 is used in the Stringtable file.

It may work without it, just never seen it done.

 

Now unit naming is done in the editor/unit window, there is a name field you use to assign names to units, vehicles, objects, game logics, etc. This is a must for serious mission making. Some names are reserved by the game, can refer to the WIKI for more info.

 

I made two demo missions for you to check out. I ran into a similar error that you got. This brings up an important fact.

Some things done in the editor will not work until you first save your editor work as a mission (SP or MP) and play (start) it once.

Then when you go back to the editor it should now work. Don't ask me why, it's just one of those OFP bugs we all love. :icon18:

There is another little buggy thing that can drive you nuts.

When you play a (non-editor) mission that file is locked and can not be overwritten, deleted or otherwise changed.

You must first open (start to play) another (non-editor) mission to unlock the mission file that you had already played to be able update, delete, etc.

Again don't ask me why.  :sarcasm:

 

Ok now the good news. I uploaded the two demos I did that should clear up this whole matter for you. Download from here: My Link

 

A big part of getting a good effect from this is timing. You'll need to experiment with delays, countdowns and time outs to get the desired effect.

 

Have fun now.

 

edit: Here is a demo using lip synchronization. You see it in a lot of the campaign and side missions. It's done using a utility called wav2lip.

Download demo from here: My Link

 

Like I mentioned above, the editor mission might not work unless you play/start the single player mission first.

Edited by zulu1
added another demo

Share this post


Link to post
Share on other sites

Thanks for bringing the good news my way. I'll be effecting it into my missions in no time :) 

 

My first immediate question on seeing these missions is where did you define the callsigns? I see no init and it isn't in the description either. 

 

I'll keep working and buzz again with any more questions.

Share this post


Link to post
Share on other sites
8 hours ago, Foxtrot32196 said:

Thanks for bringing the good news my way. I'll be effecting it into my missions in no time :) 

 

My first immediate question on seeing these missions is where did you define the callsigns? I see no init and it isn't in the description either. 

 

I'll keep working and buzz again with any more questions.

I did not assign anything, just used the game default.

A distinction needs to be made between callsign and groupID. It's not a big difference, just termanology.

Only two callsigns:

[west, HQ] (Default Papa_Bear)

[west, "Airbase"] (Default Base Firefly)

GroupIDs:

Aplha Black, Charlie Blue etc.

I never really looked into it, but a small test I ran seems to show that the game goes through Alpha, Bravo, Charlie etc, to the end all black then starts again with Aplha and the next color in line.

Refer to my earlier post LINK it has all you need to know about callsigns and group ID's.

One of the most important things is any unit, vehicle, object etc, that has a purpose needs to have a name entered in the editor. This is the only way you can refer to it in a waypoint, trigger or a script .

 

Also you should know the differences between:

Say

Sidechat

GroupChat

GlobalChat

VehicleChat

SideRadio

GroupRadio

GlobalRadio

VehicleRadio

PlayMusic

PlaySound

You can research these in the BI Wiki in the scripting section:

https://community.bistudio.com/wiki/Category:Scripting_Commands_OFP_1.96

 

A lot of Arma and TOH and other game scripting has been blended in with OFP. If you don't see the OFP game logo at the top of the section don't try to use it as it won't work. OFP commands are pretty much common to all BIS games, but it does not go backwards, like Arma3 to OFP.

 

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

×