Ry4nD 84 Posted April 21, 2017 I have made several multi player missions that I host on my servers, I have done endless searching with no success. Currently I have support for JTAC slots and Team Leaders that works great, Artillery, Helicopter CAS, A-10 CAS, Helicopter Transport and Ammo box drops. My problem is that it only works for the first player connecting and if that player disconnects and reconnects the support option is gone, the support will only work again upon mission restart, or if a group of players are all connected at once and then the mission is restarted. I am completely baffled as to why this occurs. So basically for a large group to enjoy the support system, the only way is if I restart the mission while everyone is connected, if everyone disconnects and re-connects I would have to repeat the process. For another example, lets say I start the server fresh, I join as the first player, I will indeed have the support working correctly as it is intended, however if I disconnect, or even go to the lobby to change a slot say from medic to engineer, the support is lost, even while still connected to the server. Now if I fully disconnect and then rejoin the server following a restart, the support is lost again. The supports are placed in the mission file with the vanilla Arma support modules and setup as instructed in the wiki, and do in fact function correctly. Please can someone provide a remedy for this? As I desire to keep the server running for a longer period to save progress on the mission, without have to restart all the time for players to enjoy the supports. Also as my mission is multi faction, Opfor as well as AAF have support requester and playable slots as well, the same occurrence regardless of faction or side. Thank you for your time reading my requested help, Good day. Share this post Link to post Share on other sites
kauppapekka 27 Posted April 21, 2017 (edited) https://community.bistudio.com/wiki/BIS_fnc_addSupportLink Using that function in initPlayerServer.sqf (or possibly initPlayerLocal.sqf) should do the job. https://community.bistudio.com/wiki/Event_Scripts Edited April 23, 2017 by kauppapekka Share this post Link to post Share on other sites
Ry4nD 84 Posted April 22, 2017 On 4/21/2017 at 4:48 AM, kauppapekka said: https://community.bistudio.com/wiki/BIS_fnc_addSupportLink Using that function in initPlayerServer.sqf (or possibly initPlayerLocal.sqf) should do the job. https://community.bistudio.com/wiki/Event_Scripts I could try to add this code to a initPlayerLocal.sqf, I have initPlayerServer.sqf contains for zeus { if (!isnull (getassignedcuratorunit _x)) then { _unit = getassignedcuratorunit _x; if (isnull (getassignedcuratorlogic _unit)) then { unassignCurator _x; sleep 1; _unit assignCurator _x; }; }; } foreach allcurators; noob question do I just create a initPlayerLocal.sqf and include /* Description: Adds support types during a mission. Parameter(s): _this select 0: OBJECT - Requester unit _this select 1: OBJECT - Requester module _this select 2: OBJECT - Provider module Returns: nothing */ Or does it need to be linked to the support modules somehow? Share this post Link to post Share on other sites
kauppapekka 27 Posted April 22, 2017 You name/define the modules and then just put this into one of the initPlayer: [_this select 0, yourRequesterModule, yourProviderModule] call BIS_fnc_addSupportLink; Of course if you don't want everyone to have supports you need to make some conditions. Share this post Link to post Share on other sites
JD Wang 352 Posted April 23, 2017 Is there a way to connect/disconnect a player from the support requestor based on gear? Eg I would like my JTAC to only be able to request support if he's wearing a specific backpack, but then if he takes off the pack and gives it to someone else, he loses the ability to call support, but the person he gave the pack to can now call it Share this post Link to post Share on other sites
pierremgi 4893 Posted April 23, 2017 Yep, I did that for radio backpack : 1 Share this post Link to post Share on other sites
Ry4nD 84 Posted April 23, 2017 13 hours ago, kauppapekka said: You name/define the modules and then just put this into one of the initPlayer: [_this select 0, yourRequesterModule, yourProviderModule] call BIS_fnc_addSupportLink; Of course if you don't want everyone to have supports you need to make some conditions. I will give it a go! Thank you for your reply Share this post Link to post Share on other sites
Ry4nD 84 Posted April 23, 2017 13 hours ago, kauppapekka said: You name/define the modules and then just put this into one of the initPlayer: [_this select 0, yourRequesterModule, yourProviderModule] call BIS_fnc_addSupportLink; Of course if you don't want everyone to have supports you need to make some conditions. I get an error can't figure it out init local variable in global space. Share this post Link to post Share on other sites
JD Wang 352 Posted April 23, 2017 6 hours ago, pierremgi said: Yep, I did that for radio backpack : Wow that works perfectly, thank you! Share this post Link to post Share on other sites
kauppapekka 27 Posted April 23, 2017 5 hours ago, Ryan.szx said: I get an error can't figure it out init local variable in global space. Hard to tell from that what went wrong but: I placed down a Support Requester module variable named ArtilleryRequester and a Support Provider: Artillery (Virtual) module variable named ArtilleryProvider. Created initPlayerLocal.sqf file and placed this: [_this select 0, ArtilleryRequester, ArtilleryProvider] call BIS_fnc_addSupportLink; And it works. Also the correct place for the function is initPlayerLocal.sqf if one wants that its synchronization checks work properly. 1 Share this post Link to post Share on other sites
Ry4nD 84 Posted April 26, 2017 On 4/23/2017 at 6:41 AM, kauppapekka said: Hard to tell from that what went wrong but: I placed down a Support Requester module variable named ArtilleryRequester and a Support Provider: Artillery (Virtual) module variable named ArtilleryProvider. Created initPlayerLocal.sqf file and placed this: [_this select 0, ArtilleryRequester, ArtilleryProvider] call BIS_fnc_addSupportLink; And it works. Also the correct place for the function is initPlayerLocal.sqf if one wants that its synchronization checks work properly. Copy that, I am just doing some research on the ~initPlayerLocal.sqf~ I will do my best to describe my current layout and idea. Agaiin thank you for your reply. I am slowly and surely learning the support system! Share this post Link to post Share on other sites
Ry4nD 84 Posted May 1, 2017 On 4/23/2017 at 6:41 AM, kauppapekka said: Hard to tell from that what went wrong but: I placed down a Support Requester module variable named ArtilleryRequester and a Support Provider: Artillery (Virtual) module variable named ArtilleryProvider. Created initPlayerLocal.sqf file and placed this: [_this select 0, ArtilleryRequester, ArtilleryProvider] call BIS_fnc_addSupportLink; And it works. Also the correct place for the function is initPlayerLocal.sqf if one wants that its synchronization checks work properly. Hey mate, I got it working! Thank you so much, created a file containing [_this select 0, ArtilleryRequester, ArtilleryProvider] call BIS_fnc_addSupportLink; [_this select 0, CasRequester, CasProvider] call BIS_fnc_addSupportLink; [_this select 0, TransportRequester, TransportProvider] call BIS_fnc_addSupportLink; [_this select 0, AmmoRequester, AmmoProvider] call BIS_fnc_addSupportLink; [_this select 0, HelicasRequester, HelicasProvider] call BIS_fnc_addSupportLink; added modules and it's flawless. Now I just have to figure out how to make it available only to Team-leaders, and JTAC! Again thank you so much! Share this post Link to post Share on other sites
kauppapekka 27 Posted May 2, 2017 I'd say the easiest way would be to just check the units class name and give the supports based on that. if (typeOf (_this select 0) isEqualTo "B_Soldier_TL_F") then { ... ... ... }; if (typeOf (_this select 0) isEqualTo "B_recon_JTAC_F") then { ... ... ... }; You can get the class names from https://community.bistudio.com/wiki/Arma_3_Assets Or in Eden editor by: • Hovering mouse over the object • Right clicking the object > Log > Log Classes to Clipboard 1 Share this post Link to post Share on other sites
Ry4nD 84 Posted May 2, 2017 9 hours ago, kauppapekka said: I'd say the easiest way would be to just check the units class name and give the supports based on that. if (typeOf (_this select 0) isEqualTo "B_Soldier_TL_F") then { ... ... ... }; if (typeOf (_this select 0) isEqualTo "B_recon_JTAC_F") then { ... ... ... }; You can get the class names from https://community.bistudio.com/wiki/Arma_3_Assets Or in Eden editor by: • Hovering mouse over the object • Right clicking the object > Log > Log Classes to Clipboard Ok, so if you link traditionally from the requester to the unit, that won't work right? The only issue I had last night was once me and another player used a support, the support was gone, also once I spawned a few times I lost all support until I went back to the lobby and came back. Any idea? I will try your class method on my next mission update and see how it goes! Again thank you so much Cheers Share this post Link to post Share on other sites
Izhevsk 11 Posted May 2, 2017 I've never been able to get the support requester module to work. It worked great in A2 you just put it down and synced it to someone. In A3 it doesn't work. I've completely given up on using artillery in this game. No way to call it in and the AI aren't smart enough to use it against you sooo... Share this post Link to post Share on other sites
Ry4nD 84 Posted May 3, 2017 21 hours ago, kauppapekka said: I'd say the easiest way would be to just check the units class name and give the supports based on that. if (typeOf (_this select 0) isEqualTo "B_Soldier_TL_F") then { ... ... ... }; if (typeOf (_this select 0) isEqualTo "B_recon_JTAC_F") then { ... ... ... }; You can get the class names from https://community.bistudio.com/wiki/Arma_3_Assets Or in Eden editor by: • Hovering mouse over the object • Right clicking the object > Log > Log Classes to Clipboard Yes brilliant, works like a charm ~ if (typeOf (_this select 0) isEqualTo "rhsusf_usmc_marpat_d_squadleader") then { [_this select 0, ArtilleryRequester, ArtilleryProvider] call BIS_fnc_addSupportLink; [_this select 0, CasRequester, CasProvider] call BIS_fnc_addSupportLink; [_this select 0, TransportRequester, TransportProvider] call BIS_fnc_addSupportLink; [_this select 0, AmmoRequester, AmmoProvider] call BIS_fnc_addSupportLink; [_this select 0, HelicasRequester, HelicasProvider] call BIS_fnc_addSupportLink; }; if (typeOf (_this select 0) isEqualTo "rhsusf_socom_marsoc_teamleader") then { [_this select 0, ArtilleryRequester, ArtilleryProvider] call BIS_fnc_addSupportLink; [_this select 0, CasRequester, CasProvider] call BIS_fnc_addSupportLink; [_this select 0, TransportRequester, TransportProvider] call BIS_fnc_addSupportLink; [_this select 0, AmmoRequester, AmmoProvider] call BIS_fnc_addSupportLink; [_this select 0, HelicasRequester, HelicasProvider] call BIS_fnc_addSupportLink; }; if (typeOf (_this select 0) isEqualTo "rhsusf_usmc_marpat_d_sniper") then { [_this select 0, ArtilleryRequester, ArtilleryProvider] call BIS_fnc_addSupportLink; [_this select 0, CasRequester, CasProvider] call BIS_fnc_addSupportLink; [_this select 0, TransportRequester, TransportProvider] call BIS_fnc_addSupportLink; [_this select 0, AmmoRequester, AmmoProvider] call BIS_fnc_addSupportLink; [_this select 0, HelicasRequester, HelicasProvider] call BIS_fnc_addSupportLink; }; Thank you so much mate. Share this post Link to post Share on other sites
kauppapekka 27 Posted May 3, 2017 (edited) On 02/05/2017 at 11:22 PM, Ryan.szx said: Ok, so if you link traditionally from the requester to the unit, that won't work right? Well it works for the first one but as the first player of the slot disconnects that unit is also deleted and when the slot is used the second time it's a copy of the unit and the copy isn't perfect, or that's how I reason it. On 02/05/2017 at 11:22 PM, Ryan.szx said: The only issue I had last night was once me and another player used a support, the support was gone... Tweaking the module settings? Otherwise I got two ideas: 1. Use the code you have and put for example ArtilleryRequester on every addSuportLink so there won't be multiple requesters linked to a unit. Spoiler Or in the editor synchronize the providers to a single requester and then synchronize the requester to the units in initPlayerLocal.sqf with: _this select 0 synchronizeObjectsAdd [YourRequester]; YourRequester synchronizeObjectsAdd [_this select 0]; BIS_supp_refresh = TRUE; publicVariable "BIS_supp_refresh"; 2. You need to create an individual requester for each unit that wants to call supports. On 02/05/2017 at 11:22 PM, Ryan.szx said: ...also once I spawned a few times I lost all support until I went back to the lobby and came back. Any idea? It's either related to the first part or you should lose support everytime you respawn, then you'd need to run the code also in onPlayerRespawn.sqf. Edited May 4, 2017 by kauppapekka Alternative way fix Share this post Link to post Share on other sites
Ry4nD 84 Posted May 3, 2017 10 hours ago, kauppapekka said: Well it works for the first one but as the first player of the slot disconnects that unit is also deleted and when the slot is used the second time it's a copy of the unit and the copy isn't perfect, or that's how I reason it. Tweaking the module settings? Otherwise I got two ideas: 1. Use the code you have and put for example ArtilleryRequester on every addSuportLink so there won't be multiple requesters linked to a unit. Hide contents Or in the editor synchronize the providers to a single requester and then synchronize the requester to the units in initPlayerLocal.sqf with: _this select 0 synchronizeObjectsAdd [YourRequester]; YourRequester synchronizeObjectsAdd [_this select 0]; 2. You need to create an individual requester for each unit that wants to call supports. It's either related to the first part or you should lose support everytime you respawn, then you'd need to run the code also in onPlayerRespawn.sqf. Ok, so I guess it would be something like _this select 0 synchronizeObjectsAdd [Requester1]; Requester1 synchronizeObjectsAdd [_this select 0]; if (typeOf (_this select 0) isEqualTo "rhsusf_usmc_marpat_d_squadleader") then { [_this select 0, Requester1, ArtilleryProvider] call BIS_fnc_addSupportLink; [_this select 0, Requester1, CasProvider] call BIS_fnc_addSupportLink; [_this select 0, Requester1, TransportProvider] call BIS_fnc_addSupportLink; [_this select 0, Requester1, AmmoProvider] call BIS_fnc_addSupportLink; [_this select 0, Requester1, HelicasProvider] call BIS_fnc_addSupportLink; }; ? not sure, feel lost now Share this post Link to post Share on other sites
kauppapekka 27 Posted May 4, 2017 The spoiler part was just an alternative way of doing 1. part. As the function only does this: Spoiler /* Author: Josef Zemanek Description: Adds support types during a mission. Parameter(s): _this select 0: OBJECT - Requester unit _this select 1: OBJECT - Requester module _this select 2: OBJECT - Provider module Returns: nothing */ _reqUnit = _this param [0, objNull, [objNull]]; _requester = _this param [1, objNull, [objNull]]; _provider = _this param [2, objNull, [objNull]]; if (!((_reqUnit in synchronizedObjects _requester) && (_requester in synchronizedObjects _reqUnit))) then { _requester synchronizeObjectsAdd [_reqUnit]; _reqUnit synchronizeObjectsAdd [_requester]; }; if (!((_provider in synchronizedObjects _requester) && (_requester in synchronizedObjects _provider))) then { _provider synchronizeObjectsAdd [_requester]; _requester synchronizeObjectsAdd [_provider]; }; BIS_supp_refresh = TRUE; publicVariable "BIS_supp_refresh"; TRUE; Share this post Link to post Share on other sites
Ry4nD 84 Posted May 7, 2017 On 5/4/2017 at 4:11 AM, kauppapekka said: The spoiler part was just an alternative way of doing 1. part. As the function only does this: Hide contents /* Author: Josef Zemanek Description: Adds support types during a mission. Parameter(s): _this select 0: OBJECT - Requester unit _this select 1: OBJECT - Requester module _this select 2: OBJECT - Provider module Returns: nothing */ _reqUnit = _this param [0, objNull, [objNull]]; _requester = _this param [1, objNull, [objNull]]; _provider = _this param [2, objNull, [objNull]]; if (!((_reqUnit in synchronizedObjects _requester) && (_requester in synchronizedObjects _reqUnit))) then { _requester synchronizeObjectsAdd [_reqUnit]; _reqUnit synchronizeObjectsAdd [_requester]; }; if (!((_provider in synchronizedObjects _requester) && (_requester in synchronizedObjects _provider))) then { _provider synchronizeObjectsAdd [_requester]; _requester synchronizeObjectsAdd [_provider]; }; BIS_supp_refresh = TRUE; publicVariable "BIS_supp_refresh"; TRUE; Ok, after some dicking around I got it to work correctly, here is what I came up with _this select 0 synchronizeObjectsAdd [SupportRequester]; SupportRequester synchronizeObjectsAdd [_this select 0]; BIS_supp_refresh = TRUE; publicVariable "BIS_supp_refresh"; if (typeOf (_this select 0) isEqualTo "B_recon_M_F") then { [_this select 0, ArtilleryRequester, ArtilleryProvider] call BIS_fnc_addSupportLink; [_this select 0, CasRequester, CasProvider] call BIS_fnc_addSupportLink; [_this select 0, TransportRequester, TransportProvider] call BIS_fnc_addSupportLink; [_this select 0, AmmoRequester, AmmoProvider] call BIS_fnc_addSupportLink; [_this select 0, HelicasRequester, HelicasProvider] call BIS_fnc_addSupportLink; }; So I placed 1 support requester module named SupportRequester Then I place a support requester module named ArtilleryRequester and linked it to a Virtual Artillery Requester and named it ArtilleryProvider, then placed and actual M109 and synced the m109 to the module named ArtilleryProvider, then syned that to the module named ArtilleryRequester and then synced that to the support module named Support Requester and it works, don't ask me how and now I feel dirty ;-) SupportRequester -> ArtilleryRequester -> ArtilleryProvider -> M109 unit Basically for it to work correctly there are 3 modules required for each support. I will assume that now I can replicate the process for each unit that will have access to support and it should work, or I can just duplicate the process for each unit group that will have support abilities. Thank you again. Share this post Link to post Share on other sites
pierremgi 4893 Posted May 7, 2017 Why so much support requesters?? Usually 1 requester suffices (for the all units who have access to the same possible providers for any kind of supports). 1 Share this post Link to post Share on other sites
Ry4nD 84 Posted May 8, 2017 23 hours ago, pierremgi said: Why so much support requesters?? Usually 1 requester suffices (for the all units who have access to the same possible providers for any kind of supports). Provide a script example? What layout you use that works correctly? Share this post Link to post Share on other sites
Ry4nD 84 Posted May 8, 2017 23 hours ago, pierremgi said: Why so much support requesters?? Usually 1 requester suffices (for the all units who have access to the same possible providers for any kind of supports). I tried using just 1 requester linked to 1 artillery provider, and it didn't work correctly. Share this post Link to post Share on other sites