Jump to content
chicago

Satellite view (SATCOM) for ARMA 3

Recommended Posts

Satellite view (SATCOM) for ARMA 3

by Pixel Art Studio

I'd like to announce the first release of SATCOM system (satellite view) for ARMA 3. Because this is already third version of SATCOM in the community and I have experienced with its creation, for now, I tried to make it to look more realistic, although there’s no possibility to implement all parts of satellite systems as it is in real life or military services. Because of it, all coordinates and the others output values in SATCOM have real based format and values. But of course, there was a space for an imagination as well.

Script variant available only

For now, there’s available only script variant of SATCOM system because the unknown issue has appeared with packing and binarizing of the add-on file. Soon as I will solve this problem, I will release the add-on version.

Manual:

In this version you can find the User manual inside of the release packing

Screenshots:

http://www.pxs.armaholic.eu/pictures/satcom3new.png (3477 kB)

License agreement

This work was created by members of Pixel Art Studio (PXS) with the help of people noted in credits. It is permitted to use, modify or implement any piece of this work unless you will note the name of Pixel Art Studio in the credits of your own project. The using the name of the author in your credits file is taken as a permission and agreement by the Pixel Art Studio.

This work is released under Creative Commons Attribution Non-Commercial No-Derivs license.

Downloads:

Satellite view (SATCOM) for ARMA 3, v1.0 *the manual has been updated

Satellite view (SATCOM) for ARMA 3 - Example mission

Edited by chicago
  • Like 3

Share this post


Link to post
Share on other sites

Release frontpaged on the Armaholic homepage.

================================================

We have also "connected" these pages to your account (chicago) on Armaholic.

This means in the future you will be able to maintain these pages yourself if you wish to do so. Once this new feature is ready we will contact you about it and explain how things work and what options you have.

When you have any questions already feel free to PM or email me!

** Note:

since this is a project on which more people are working we will contact you in the future to discuss how you want this to be setup on Armaholic.

Share this post


Link to post
Share on other sites

Hi, thanks for releasing this. One problem though, I can't get it to work. I put the respective lines in both the init.sqf and the description.ext, then run the mission in the editor and an error about the description pops up. What am I missing? Where do I put the PXS_switcher?

Share this post


Link to post
Share on other sites
Hi, thanks for releasing this. One problem though, I can't get it to work. I put the respective lines in both the init.sqf and the description.ext, then run the mission in the editor and an error about the description pops up. What am I missing? Where do I put the PXS_switcher?

Hey, you can use PXS_switcher in any script you want but it has to be after that all functions and varibles in init_satellite.sqf are loaded. One expamle of init.sqf:

_a1 = [] execVM "pxs_satcom_a3\init_satellite.sqf";
sleep 0.2;
//action
[player, true] call PXS_switcher;

Share this post


Link to post
Share on other sites

On loading it says "Include file pxs_satcom_a3\init_interference.hpp not found" inside the folder it only has "init_interface.hpp", hope this helps to fix it Chicago. Thank you for doing an A3 version by the way.

Share this post


Link to post
Share on other sites

@Nemiuk: Thank you for reporting the bug.

There was a mistake in User Manual, in description.ext file has to be writen this:

#include "pxs_satcom_a3\init_interface.hpp"

I fixed the manual and updated the download file.

Share this post


Link to post
Share on other sites
Hey, you can use PXS_switcher in any script you want but it has to be after that all functions and varibles in init_satellite.sqf are loaded. One expamle of init.sqf:

_a1 = [] execVM "pxs_satcom_a3\init_satellite.sqf";
sleep 0.2;
//action
[player, true] call PXS_switcher;

So I'm not exactly sure how to get this to work either. I put the switcher line in the missions init.sqf but it doesn't seem to change anything. I figured I needed to do something with the start_satellite.sqf, but what I have tried hasn't worked so I'm clue less.

Share this post


Link to post
Share on other sites

Can i ask you make an mission example?

I can't get it work on 'start_satellite' func

I'm newbie,so,i'm sorry :/

Share this post


Link to post
Share on other sites

Thanks,that's was my mistake(first off was check 'waitUntil { isServer || !isNull player };' -> No any reaction from hook)...

Share this post


Link to post
Share on other sites

I'm trying to integrate that to DUWS, with includes get this:

File pxs_satcom_a3/init_interface.hpp, line 64: .RscText: member already defined.

Share this post


Link to post
Share on other sites

Nevermind, solved. Was problem in my mission, seems like font data was already defined...

Looks like bug: you get sound when looking at satellite image. What kind of technology this is? :D

Share this post


Link to post
Share on other sites

Also, is there any function to directly access satellite feed? I want to attach SATCOM support to some object.

Share this post


Link to post
Share on other sites

Ditto to rlex's post. I would like to have a static object at base or perhaps a vehicle that has the functionality rather than running around with an eye in the sky, as it were.

Share this post


Link to post
Share on other sites

Actually i found way to use it with object, ie my code:

_object addAction ["<t color=#ff0066'>SATCOM</t>", {call PXS_startSatellite;}, "", 0, true, true, "", "_this == player];

Share this post


Link to post
Share on other sites

Thank you rlex, I have it all sorted now... mostly.

MY remaining question is related to the camera direction. It seems that things are off by about 45°. I've gone in and fiddled with camSetDir (bugged as far as I can tell from reading) and setDir (no effect that I can see). How does one get thing oriented with the cam so that north is up?

Share this post


Link to post
Share on other sites

Hey there, great work and looks really good so far, it almost seems to be working great except for when loading a mission I get the error for the switcher.sqf script line 8 which is

private ["_unit","_status"];

_unit = [_x, 0, player] call BIS_fnc_param;

_status = [_x, 1, true] call BIS_fnc_param;

I have been trying to rectify with no luck?? Any ideas?

Share this post


Link to post
Share on other sites

Please can we get a way to have the camera aligned to North, so that the top of the screen is pointing North when in satellite view. It would be so much better.

Share this post


Link to post
Share on other sites
Please can we get a way to have the camera aligned to North, so that the top of the screen is pointing North when in satellite view. It would be so much better.

key_function.sqf (also makes movement a bit faster):

private["_event","_keyCode","_return"];

_event = _this;
_keyCode = _event select 1;
_return = true;

#define FACTOR 50

switch (_keyCode) do
{
case 1://ESC
{
	call PXS_closeCamera;
};
case 2://1 normal view
{
	[2] call PXS_adjustCamera;
};
case 3://2 thermograph
{
	[3] call PXS_adjustCamera;
};
case 4://3 white is hot
{
	[4] call PXS_adjustCamera;
};
case 5://4 black is hot
{
	[5] call PXS_adjustCamera;
};
case 50://M redefine default satellite position
{
	call PXS_redefineDefaultPos;
};
default
{
	_return = false;
};
};
// key combo handling
if (!(_return)) then
{
private["_pressedButtonArray"];
_pressedButtonArray = [_keyCode];
_return = true;

// check for key actions
switch (true) do
{
	//case 17://W
	case (({_x in _pressedButtonArray} count (actionKeys "MoveForward")) > 0):
	{
		PXS_SatelliteNorthMovementDelta = 8;
		PXS_SatelliteTarget setPos [((getPos PXS_SatelliteTarget) select 0),((getPos PXS_SatelliteTarget) select 1) + PXS_SatelliteNorthMovementDelta,(getPos PXS_SatelliteTarget) select 2];
		call PXS_updateCamera;
	};
	//case 31://S
	case (({_x in _pressedButtonArray} count (actionKeys "MoveBack")) > 0):
	{
		PXS_SatelliteSouthMovementDelta = 8;
		PXS_SatelliteTarget setPos [((getPos PXS_SatelliteTarget) select 0),((getPos PXS_SatelliteTarget) select 1) - PXS_SatelliteSouthMovementDelta,(getPos PXS_SatelliteTarget) select 2];
		call PXS_updateCamera;
	};
	//case 30://A
	case (({_x in _pressedButtonArray} count (actionKeys "TurnLeft")) > 0):
	{
		PXS_SatelliteWestMovementDelta = 8;
		PXS_SatelliteTarget setPos [((getPos PXS_SatelliteTarget) select 0) - PXS_SatelliteWestMovementDelta,((getPos PXS_SatelliteTarget) select 1),(getPos PXS_SatelliteTarget) select 2];
		call PXS_updateCamera;
	};
	//case 32://D
	case (({_x in _pressedButtonArray} count (actionKeys "TurnRight")) > 0):
	{
		PXS_SatelliteEastMovementDelta = 8;
		PXS_SatelliteTarget setPos [((getPos PXS_SatelliteTarget) select 0) + PXS_SatelliteEastMovementDelta,((getPos PXS_SatelliteTarget) select 1),(getPos PXS_SatelliteTarget) select 2];
		call PXS_updateCamera;
	};
	//case 78://Num +
	case ((({_x in _pressedButtonArray} count (actionKeys "ZoomIn")) > 0) || (({_x in _pressedButtonArray} count (actionKeys "MoveDown")) > 0)):
	{
		if ((PXS_SatelliteFOV) >= 0.011) then
		{
			PXS_SatelliteFOV = PXS_SatelliteFOV * (0.8);
			//PXS_SatelliteFOV = PXS_SatelliteFOV - (0.0005 * FACTOR);
			//PXS_SatelliteZoom = PXS_SatelliteZoom + (0.02 * FACTOR);
			call PXS_updateCamera;
		};
	};
	//case 74://Num -
	case ((({_x in _pressedButtonArray} count (actionKeys "ZoomOut")) > 0) || (({_x in _pressedButtonArray} count (actionKeys "MoveUp")) > 0)):
	{
		if ((PXS_SatelliteFOV) < 8) then
		{
			PXS_SatelliteFOV = PXS_SatelliteFOV * (1.0/0.8);
			//PXS_SatelliteFOV = PXS_SatelliteFOV + (0.0005 * FACTOR);
			//PXS_SatelliteZoom = PXS_SatelliteZoom - (0.02 * FACTOR);
			call PXS_updateCamera;
		};
	};
	default
	{
		_return = false;
	};
};
};
_return;

updateCamera.sqf:

PXS_SatelliteCamera camPrepareTarget
[
((getPos PXS_SatelliteTarget) select 0) - 0,
((getPos PXS_SatelliteTarget) select 1) + 1,
(getPos PXS_SatelliteTarget) select 2
];
PXS_SatelliteCamera camSetPos
[
(getPos PXS_SatelliteTarget) select 0,
(getPos PXS_SatelliteTarget) select 1,
((getPos PXS_SatelliteTarget) select 2) + PXS_SatelliteInitialHeight
];
PXS_SatelliteCamera camPrepareFov PXS_SatelliteFOV;
PXS_SatelliteCamera camCommitPrepared 0;

switcher.sqf (fix script errors)

//the function to switch on/off of SATCOM system
//[unitName, activeStatus] call PXS_switcher
//unitName - the unit for SATCOM action
//activeStatus - true or false
//v1.0 A3

private ["_unit","_status"];
_unit = [_this, 0, player] call BIS_fnc_param;
_status = [_this, 1, true] call BIS_fnc_param;

if (_status) then {
_unit removeAction PXS_action;
PXS_action = _unit addAction ["Switch on satellite view","pxs_satcom_a3\start_satellite.sqf"];
//hint "SATCOM system is connected.";
} else {
if (!isNil "PXS_action") then
{
	_unit removeAction PXS_action;
};
if (!isNil "PXS_SatelliteActive") then
{
	if (PXS_SatelliteActive) then
	{
		call PXS_closeCamera;
	};
};
//hint localize "SATCOM system is disconnected.";
};

  • Like 1

Share this post


Link to post
Share on other sites

BEAUTIFUL THANKS Coding that's PERFECT. Also if you want to have faster mouse zoom speed I did these changes in mouseZChanged file, not sure if this is the best way but it worked for me:

private["_mouseWheelTurns","_return","_z"];

// ------------------ Parse Arguments -----------------

_mouseWheelTurns = _this select 1;

_return = false;

#define FACTOR 25

// ----------------------- Main Function ---------------------

_z = (_mouseWheelTurns * (-64));
if ((_z / (abs _z)) < 0) then
{
if ((PXS_SatelliteZoom + (0.08 * FACTOR)) <= 47) then
{
	PXS_SatelliteFOV = PXS_SatelliteFOV - (0.0020 * FACTOR);
	PXS_SatelliteZoom = PXS_SatelliteZoom + (0.08 * FACTOR);
	call PXS_updateCamera;
};
}
else
{
if ((PXS_SatelliteZoom - (0.08 * FACTOR)) >= 0.1) then
{
	PXS_SatelliteFOV = PXS_SatelliteFOV + (0.0020 * FACTOR);
	PXS_SatelliteZoom = PXS_SatelliteZoom - (0.08 * FACTOR);
	call PXS_updateCamera;
};
};
_return;

Also I'm using the SATCOM in my version of DUWS https://github.com/Emton/DUWS-Longbow/ where I also made some style changes to the camera (removed the lines and colors)

EDIT: Ah I don't know if these changes are good for the mouse zooming I keep running into a bug where if I use combinations of zooming with the the keys and zooming with mouse then I end up not being able to zoom at all.

Also if you get this, I kinda wish the #2 camera view could have it's spectrum shifted so that there is less green, more yellow and red, so that you can see more detail in terrain and stuff, think that is possible?

Edited by Emton

Share this post


Link to post
Share on other sites
Actually i found way to use it with object, ie my code:

_object addAction ["<t color=#ff0066'>SATCOM</t>", {call PXS_startSatellite;}, "", 0, true, true, "", "_this == player];

Sorry but how exactly would you do this to add it to a laptop in game?

Share this post


Link to post
Share on other sites

Is there any way to assign the satcom to a particular NAMED player slot?  having 8 guys running around with a sattelite feed is kinda wierd.

 

Thank you to Coding for the north fix!

_a1 = [] execVM "pxs_satcom_a3\init_satellite.sqf";
sleep 0.2;
//action
[player, true] call PXS_switcher;

EDIT... OK... maybe I was over thinking this.  Apparently the word player needs to be just whatever the name is, no fancy crap Necessary.  Will report back when its working completely.  I have a weird lockup for some reason when I look at sat map.  Can hit the ESC key to exit game but other than that it's not working.

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

×