Jump to content
diwako

[Release] ACRE2 Custom Signal Calculation | Jam or boost your radios signals!

Recommended Posts

This script adds an additional layer to ACRE2's signal calculation which allows to modify the output power and receive power of radios on the fly.

With this script it is possible to either boost or jam a signal from any specific unit. The script will allow setting custom modifiers to units to modify the unit’s radios receiving and sending power.

Just copy the script folder into your mission folder and edit your description.ext's CfgFunctions class like in the example.
With this the custom signal calculation is active!

You will not be able to boost your radio signal across the whole map with this! ACRE2's algorithm has some hard limits for radios!

 

Dependencies

  • ACRE2
  • CBA

 

Media:

 

 

Examples: 
Boost sending and receiving power

player setVariable ["acre_send_power", 1000, true];
player setVariable ["acre_receive_power", 1000, true];

 

Make it impossible for the unit to receive any radio comms while still able to talk over comms

player setVariable ["acre_send_power", 1, true];
player setVariable ["acre_receive_power", 0, true];

 

Make it impossible to talk over radio but still be able to hear radio comms

player setVariable ["acre_send_power", 0, true];
player setVariable ["acre_receive_power", 1, true];

 

Degrade signal so badly that being 200 meters away is already completely garbled on the 343

player setVariable ["acre_send_power", 0.00001, true];
player setVariable ["acre_receive_power", 0.00001, true];

Using the signal jammer script designed to be used on radio tower objects, more information here:

/*
// example for setting up a radio jammer zone
// Params:
// 1: object which is jamming
// 2: Jamming strength in mW
// 3: Array of frequencies jammed, Array in array possible, notation is [start frequency, end frequency]
// 4: Effective zone, distance to jammer which fully applies the full jamming strength
// 5: Falloff zone, zone in which units are still affected, but the strengths gets linear worse of the jammer
*/
private _trigger = [antenna, 5000, [[0,9000],9002], 50, 10] call diw_acre_fnc_createRadioJammer;

 

Download:

https://github.com/diwako/ACRE2-Custom-Signal-Calculation

  • Like 7
  • Thanks 2

Share this post


Link to post
Share on other sites

Seems it was too tired yesterday and actually forgot to include the link to the github page. Woops, it is added now.

Share this post


Link to post
Share on other sites

Hi @diwako - noob here, will it be posible to activate the script(s) by trigger when a player enters an area/trigger - please to hear - thanks

Share this post


Link to post
Share on other sites
7 minutes ago, Spoor said:

Hi @diwako - noob here, will it be posible to activate the script(s) by trigger when a player enters an area/trigger - please to hear - thanks

Yep, the mission included has two examples. One for jamming the other for boosting signals. You do not really need to "activate" the script besides running it from the initPlayerLocal.sqf, you are just setting a variable to a unit and it will work.

 

You just need to keep in mind that the variable has to be set globally, that is why the "true" is at the end of every setVariable.

  • Thanks 1

Share this post


Link to post
Share on other sites

Here a video of it in action

 

 

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Pushed an update to version 1.1

-Moved script compilation from initPlayerLocal.sqf to init.sqf
-Added signal jamming script (see init.sqf for example and "radio frequencies and power.txt" for defaul radio information)
-added a txt file for default radio frequency and power information

 

I noticed, especially in the group I am playing with, that people people are excited for radio jamming in missions, but either lack skill or motivation to write their own jamming towers, so I am going to introduce a way to add jammers and still have signal boosting available.

 

New script: Radio jammer

Attaches a zone which jams comms to an object. Script has to be called from server! The jammer can be disabled by either killing/destroying the object that is supposed to jam radios or by setting the variable "jammer_active" at the trigger to false.

The the jammer will have an effective area and a falloff area. Everyone inside the effective area is under full effect of the radio jamming. Everyone in the falloff area is affected to some extend.

Here some illustration to make it hopefully clearer

gv3xHgn.png

 

The jammer will have a set sending power and a set of given frequencies which will be affected. Which means it will be possible to block certain channels for certain radios if the mission maker desires. E.g.mission maker can set it up that only LRR channels are affected and others not. This also means it is possible to just block channel 1 for the PRC-343, but channel 2 is completely fine.

The next thing is sending power. If a radio has more power then the tower, the radio will get a hit in sending range, but will still transmit and people will be able to hear it. Setting the jamming power way higher then any radio can send just means the falloff area will be way harsher!

Signals sent from within a jamming area are already weakened, so if you are standing inside the same or another jamming area the signals will be weakened even further! That means people standing outside the jamming area will have an easier time hearing someone else then people standing inside the area.

 

Script example

/*
// example for setting up a radio jammer zone
// Params:
// 1: object which is jamming
// 2: Jamming strength in mW
// 3: Array of frequencies jammed, Array in array possible, notation is [start frequency, end frequency]
// 4: Effective zone, distance to jammer which fully applies the full jamming strength
// 5: Falloff zone, zone in which units are still affected, but the strengths gets linear worse of the jammer
*/
private _trigger = [antenna, 5000, [[0,9000],9002], 50, 10] call diw_acre_fnc_createRadioJammer;

Download:

https://github.com/diwako/ACRE2-Custom-Signal-Calculation

  • Thanks 2

Share this post


Link to post
Share on other sites

@diwako - thanks update :don8: could the tickers be replaced by vehicles for examble and be separated for Blu and Opfor ?? working on a large scale TvT (60/60) which should be in the air after the summer. On both sides players could place the vehicles (or antenna) somewhere on the map and jam the opposite party in a certain area but it shouldnt work for the faction that place the jamming vehicle in that particulair area - please to hear - thanks again. Testing yr new script now - thanks

Share this post


Link to post
Share on other sites
28 minutes ago, Spoor said:

@diwako - thanks update :don8: could the tickers be replaced by vehicles for examble and be separated for Blu and Opfor ?? working on a large scale TvT (60/60) which should be in the air after the summer. On both sides players could place the vehicles (or antenna) somewhere on the map and jam the opposite party in a certain area but it shouldnt work for the faction that place the jamming vehicle in that particulair area - please to hear - thanks again. Testing yr new script now - thanks

 

You can make any object as a jammer, they however will stay stationary. So moving objects are not supported.

For the Blufor or Opfor range separation, the only way is pretty much splitting their comms to different radio channels or blocks for the 343. The Signal jamming towers are made to block frequencies and they do not really care who they are jamming.

 

My recommendation is setting the players radios to the right frequencies/channels/blocks on mission start (acre offers such a function, somewhere) and note down which range is considered friendly. So players who are setting up towers know which frequencies they better not jam. Best also randomize the frequencies for each round and set up different default frequencies for the radios.

 

For the default frequencies you can take a look inside the txt file. It has all default frequencies added.

 

Edit:

 

Taking a quick look at the code, the create jammer script returns the created trigger. You could just attach that to a vehicle and then it should work as mobile jammer.

  • Thanks 1

Share this post


Link to post
Share on other sites

Hey, its been a while. Just wanted to say I updated the custom signal calculation function to work with the current acre version. It is not a large change by itself but a small fix 🙂

 

Script version is now: 1.1.1

Share this post


Link to post
Share on other sites
7 minutes ago, NightIntruder said:

Hey, diwako, perhaps you know the thing that bothers me - is it possible to get frequencies used by radios racked in a vehicle? I couldn't find information about that in the official ACRE documentation. I need to intercept the frequencies and show them on COMM displays in an aircraft via script.

 

Cannot really test it myself, but i think it was like this
 

private _txData = [_txRadioId, "getCurrentChannelData"] call ace_sys_data_fnc_dataEvent;
private _txFreq = _txData getVariable "frequencyTX";

_txRadioId is the radio class with id. _txFreq is resulting frequency, but not channel.

  • Like 1

Share this post


Link to post
Share on other sites
7 minutes ago, diwako said:

Cannot really test it myself, but i think it was like this
 

private _txData = [_txRadioId, "getCurrentChannelData"] call ace_sys_data_fnc_dataEvent; private _txFreq = _txData getVariable "frequencyTX";

_txRadioId is the radio class with id. _txFreq is resulting frequency, but not channel.

 

Thanks, it's gonna make my life much easier 🙂
So, I guess the function

[cursorTarget] call acre_api_fnc_getVehicleRacks

will give me the radios in racks and their IDs, right?

Share this post


Link to post
Share on other sites
14 minutes ago, NightIntruder said:

 

Thanks, it's gonna make my life much easier 🙂
So, I guess the function


[cursorTarget] call acre_api_fnc_getVehicleRacks

will give me the radios in racks and their IDs, right?

More of a question to the acre devs 😉
A short look into the function and its documentation, seems it is returning a list of racks. Not sure what exactly is returned, but I can imagine it is a like of strings, each string being a rack class + id.

  • Thanks 1

Share this post


Link to post
Share on other sites

I am gonna test it on my own, thanks a lot!
PS.
The function above returns the array of mounted radios, like ["acre_vrc103_id_1","acre_vrc103_id_1"] from which I can pick one and apply your code. It, however, returns: "any" instead of a frequency. The code I used in debug console was like this:

while {alive (vehicle player)} do   
{  
  private _txRadioId = [(vehicle player)] call acre_api_fnc_getVehicleRacks; 
  private _txDataPri = [(_txRadioId select 0), "getCurrentChannelData"] call ace_sys_data_fnc_dataEvent; 
  private _txFreqPri = _txDataPri getVariable "frequencyTX";
  hint format ["Freq:,%1",_txFreqPri]; 
};

Because of this, I guess, the rest of my code doesn't show any numbers on comm displays, but no errors are returned either, tho. Not sure what I am doing wrong.
Obviously player was inside the plane otherwise, an empty array of mounted radios is returned.

Share this post


Link to post
Share on other sites

@diwako

How to stop jamming without destroying an object?

I would like to add your jamming feature as a switch: jam on/off.

Share this post


Link to post
Share on other sites
10 hours ago, kromka said:

@diwako

How to stop jamming without destroying an object?

I would like to add your jamming feature as a switch: jam on/off.

 

When creating the jammer on server with function  "diw_acre_fnc_createRadioJammer" it returns the trigger of it. That is the first way of getting the trigger. Second one is, the object the trigger is attached to has a reference to it as well.

 

if you do

_obj getVariable ["jammer_zone", objNull];

that is the second way to get the trigger. Then it is fairly easy. You do this and the jamming zone is deactivated.

_trg setVariable ["jammer_active", false, true];

 

  • Like 1

Share this post


Link to post
Share on other sites

Hey, I know this topic is pretty old, but I have a question. 
Is it possible to jam only certain radios instead of frequencies?

 

Just a quick explanation:
We are currently building an AltisLife server (obviously modded), and would like to implement a 2-radio system for our state factions "authorities" (police / emergency services).
We will distinguish between the (at least in Germany they are called that, in the rest of the world, no idea xD) "BOS digital radio" and the "2-meter-band analog radio".


Like the cell phone network, BOS digital radio only works via radio/repeater stations. However, we simply want to represent this with the classic long-range radio and a range of 25 km.
The "2-meter-band analog radio" should then be implemented with the short-range radios and a range of only 1.5km (we know how we do this in ACRE).

 

However, the rebels will now have the opportunity to paralyze digital radio by hacking radio masts. We have already written a working script for this. In every ArmA3 1x1km mapgrid there is a radio mast which can be hacked. If the hack is successful, a script is to be executed which deactivates all radios from a certain array (our "BOS Digitalfunk" long range radios). And that in this specific affected map grid.

 

This is where we came across your script. Unfortunately, we currently only see the possibility of a jammer for a certain radius and certain frequencies, OR to completely remove the player from hearing / speaking on the radio in general.


Now, however, he should only be unable to hear/talk in long range radio, but be able to continue chatting unhindered and undisturbed in short range.

 

How can we implement this with your script?

 

Sorry for the long text, but I thought it would be easier to understand what we want if you can see what it's for.

 

This is the code snippet we use to check if a player is in the affected map square:

params ["_repeater"];

/* As long as the repeater is hacked (var GG_repeater_0501_hacked == true), the system checks every 5 seconds whether the player is in the map grid of the hacked repeater. If he is, his send- and recivepower is set to 0. 
This means he can neither hear nor speak on the radio.
*/
while { GG_repeater_0501_hacked } do {
    private _repeaterPosition = (_repeater splitString "_")#1;
    private _gridPosArrayPlayer = ((mapGridPosition player) splitString "");
    private _1by1GridPlayer = _gridPosArrayPlayer#0 + _gridPosArrayPlayer#1 + _gridPosArrayPlayer#3 + _gridPosArrayPlayer#4;

    if(_1by1GridPlayer isEqualTo _repeaterPosition) then {
        player setVariable ["acre_send_power", 0, true];
        player setVariable ["acre_receive_power", 0, true];
    } else {
        player setVariable ["acre_send_power", 1, true];
        player setVariable ["acre_receive_power", 1, true];
    }
    sleep 5;
}

// Repeater back in function - therefore the While loop ends and everyone can transmit again.
player setVariable ["acre_send_power", 1, true];
player setVariable ["acre_receive_power", 1, true];

This code snippet works very well. But it disables receiving and transmitting on ALL radios. But we want the script to block sending and receiving only on specific radios defined in an array.

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

×