Jump to content
Sign in to follow this  
Abima

Scripting Radio Channel for arma 3...

Recommended Posts

Guys, good morning! Good afternoon! good night!

I wonder what the best way to remove the channels of communication such as: Global Channel, channel command group and other ...

I'm doing a mission on the complement ACRE and something that would be like this:

Team Leader = Side Channel and Direct Channel

Subordinates (rifleman, grenadier, medic ... and others) = Direct Channel ...

Can not create a script for it ... If anyone knows, I would be very happy!! Thanks to all. :(

Share this post


Link to post
Share on other sites

look into the description.ext description

search for this one:

disableChannels[]={0,1,2,3,4,6};

Share this post


Link to post
Share on other sites
look into the description.ext description

search for this one:

disableChannels[]={0,1,2,3,4,6};

Yes, this I know ... The problem of quoting him in "description.ext" is that there is a separation between team leader and subordinates ... They are all the same ... I would like to customize and separate communication ...

To be well team leader speaks with a team leader ...

Do you know if something is possible at this level?

Share this post


Link to post
Share on other sites

Why can't you tell your team leaders to "use channel X in ACRE" and your teams to "use channel Y in ACRE"? I don't understand why you'd need to disable default channels for this.

If someone's on the wrong chat channel just tell them to switch. Why is this something you need to script around?

Share this post


Link to post
Share on other sites

I think he probably wants to avoid players typing in side/global chat and limiting them to just direct. FTLs, etc would have access to sidechat. I don't know if you can do this as disableChannels affects everyone.

Share this post


Link to post
Share on other sites

All the unit's I've been in have handled that with a quick "hey you, stfu and get off this channel". :) Or by squad leaders keeping their squads in line. There are probably some scripts that use those channels for information or in a TvT you might have referees that need to talk to everyone so disabling them might interfere more than some guy using the wrong channel sometime.

If you're having this happen often it's a problem with the people you're playing with rather than the channels people have access too. :p

Share this post


Link to post
Share on other sites

Oh I agree but perhaps he's creating a public mission or something and wants to lock 'er down... there's always one idiot who gets shot and types it out in chat since he can't say anything in Teamspeak :p

Share this post


Link to post
Share on other sites
All the unit's I've been in have handled that with a quick "hey you, stfu and get off this channel". :) Or by squad leaders keeping their squads in line. There are probably some scripts that use those channels for information or in a TvT you might have referees that need to talk to everyone so disabling them might interfere more than some guy using the wrong channel sometime.

If you're having this happen often it's a problem with the people you're playing with rather than the channels people have access too. :p

Yes, my biggest problem is people ... For this reason I want to disable chat, having to stop the game every time someone is in the wrong channel this on my nerves!! I want a game with more realistic ... Leaders with side channel and soldiers below with only direct ...

Is there any way to make such a change? If not there will even pushing his belly ... : (

Share this post


Link to post
Share on other sites

If you want only specific units / slots to have specific channels then you need to still use the disableChannels and with that you would use the command radioChannelCreate and assign specific units to that custom channel.

west_channel = radioChannelCreate [[0, 0.95, 1, 0.8], "Side Channel", "%UNIT_NAME", [p1,p2,p3,p4,p10]];

that's just a rough example but look into the A3 Scripting commands wiki on the radioChannel commands. There are some bugs that should be noted with custom radio channels, one being when a unit dies and respawns they are removed from that channel so therefor on respawn you need to have the server detect that and re-add them. Another issue is voice communication on it isn't reliable but if you're using it for text then it works just fine.

Share this post


Link to post
Share on other sites
If you want only specific units / slots to have specific channels then you need to still use the disableChannels and with that you would use the command radioChannelCreate and assign specific units to that custom channel.

west_channel = radioChannelCreate [[0, 0.95, 1, 0.8], "Side Channel", "%UNIT_NAME", [p1,p2,p3,p4,p10]];

where can I assign this command? In init.sqf? In the unit? or description.ext?

Share this post


Link to post
Share on other sites
init.sqf

Thank you all. I'll try and come back with answers!!!

Share this post


Link to post
Share on other sites
If you want only specific units / slots to have specific channels then you need to still use the disableChannels and with that you would use the command radioChannelCreate and assign specific units to that custom channel.

west_channel = radioChannelCreate [[0, 0.95, 1, 0.8], "Side Channel", "%UNIT_NAME", [p1,p2,p3,p4,p10]];

where can I assign this command? In init.sqf? In the unit? or description.ext?

Tonic...

Everything worked ... Is there any way to repeat the initial config init. For with reappearance of the soldier, the custom channel not appear. How can I solve this?

Share this post


Link to post
Share on other sites

Well as I said when a unit dies / becomes null he no longer exists in the radio channel. A work around is something like this, this is only an example but should give you an example.

First initialize these functions for the server:

if(isServer) then
{
radio_channel_1 = radioChannelCreate [[0, 0.95, 1, 0.8], "Radio One", "%UNIT_NAME", []];
radio_channel_2 = radioChannelCreate [[0, 0.95, 1, 0.8], "Radio Two", "%UNIT_NAME", []];
radio_channel_3 = radioChannelCreate [[0, 0.95, 1, 0.8], "Radio Three", "%UNIT_NAME", []];

RADIO_fnc_manage =
{
	private["_unit","_channel","_bool"];
	_unit = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param;
	_bool = [_this,1,false,[false]] call BIS_fnc_param;
	_channel = [_this,2,0,[0]] call BIS_fnc_param;

	//Series of checks?
	if(isNull _unit) exitWith {}; //Null unit
	if(_channel < 1) exitWith {}; //No channels below 1 should be passed.

	switch (_channel) do
	{
		case 1: { if(_bool) then {radio_channel_1 radioChannelAdd [_unit];} else {radio_channel_1 radioChannelRemove [_unit];};};
		case 2: { if(_bool) then {radio_channel_2 radioChannelAdd [_unit];} else {radio_channel_2 radioChannelRemove [_unit];};};
		case 3: { if(_bool) then {radio_channel_3 radioChannelAdd [_unit];} else {radio_channel_3 radioChannelRemove [_unit];};};
	};
};
};

Now lets say you want the client to be added to channel 1, then the client needs to execute:

[[player,true,1],"RADIO_fnc_manage",false,false] spawn BIS_fnc_MP;

And if you wanted him into 2 then you would change the 1 to a 2 and so fourth. Basically every time your client is initializing / joining you would do your checks and add him to a channel if he is allowed to be in it, repeat for death if you are running respawns.

Also if you wanted to remove them from it at any time then you would have them execute:

[[player,false,1],"RADIO_fnc_manage",false,false] spawn BIS_fnc_MP;

The code usage examples are meant for the client to execute to tell the server, tracking client events on the actual client is much easier but obviously if you had the server tracking the players status then you'd just do [unit,true,1] call RADIO_fnc_manage;

It's all just code examples so you know how to do the work around. Although we shouldn't have to jump through hoops like this if BIS would fix the radioChannel commands..

Obviously to track if a player has respawned you would use either the eventHandler or the Respawn template system (google is your friend).

Share this post


Link to post
Share on other sites
Well as I said when a unit dies / becomes null he no longer exists in the radio channel. A work around is something like this, this is only an example but should give you an example.

First initialize these functions for the server:

if(isServer) then
{
radio_channel_1 = radioChannelCreate [[0, 0.95, 1, 0.8], "Radio One", "%UNIT_NAME", []];
radio_channel_2 = radioChannelCreate [[0, 0.95, 1, 0.8], "Radio Two", "%UNIT_NAME", []];
radio_channel_3 = radioChannelCreate [[0, 0.95, 1, 0.8], "Radio Three", "%UNIT_NAME", []];

RADIO_fnc_manage =
{
	private["_unit","_channel","_bool"];
	_unit = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param;
	_bool = [_this,1,false,[false]] call BIS_fnc_param;
	_channel = [_this,2,0,[0]] call BIS_fnc_param;

	//Series of checks?
	if(isNull _unit) exitWith {}; //Null unit
	if(_channel < 1) exitWith {}; //No channels below 1 should be passed.

	switch (_channel) do
	{
		case 1: { if(_bool) then {radio_channel_1 radioChannelAdd [_unit];} else {radio_channel_1 radioChannelRemove [_unit];};};
		case 2: { if(_bool) then {radio_channel_2 radioChannelAdd [_unit];} else {radio_channel_2 radioChannelRemove [_unit];};};
		case 3: { if(_bool) then {radio_channel_3 radioChannelAdd [_unit];} else {radio_channel_3 radioChannelRemove [_unit];};};
	};
};
};

Now lets say you want the client to be added to channel 1, then the client needs to execute:

[[player,true,1],"RADIO_fnc_manage",false,false] spawn BIS_fnc_MP;

And if you wanted him into 2 then you would change the 1 to a 2 and so fourth. Basically every time your client is initializing / joining you would do your checks and add him to a channel if he is allowed to be in it, repeat for death if you are running respawns.

Also if you wanted to remove them from it at any time then you would have them execute:

[[player,false,1],"RADIO_fnc_manage",false,false] spawn BIS_fnc_MP;

The code usage examples are meant for the client to execute to tell the server, tracking client events on the actual client is much easier but obviously if you had the server tracking the players status then you'd just do [unit,true,1] call RADIO_fnc_manage;

It's all just code examples so you know how to do the work around. Although we shouldn't have to jump through hoops like this if BIS would fix the radioChannel commands..

Obviously to track if a player has respawned you would use either the eventHandler or the Respawn template system (google is your friend).

Thanks Tonic!!!! I think is answered. Can close!!

Share this post


Link to post
Share on other sites

This will work however coustom channels are probably still buged! Im working on a script for adding coustom channels look here for more information also on the bugs . Unfortunately my script doesnt support class only channels yet and is still in testing but you are able to select and deselect any coustom channels.

Edited by Kumeda

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
Sign in to follow this  

×