NivZiv 7 Posted June 14, 2017 Hello everybody, First of all I want to thank you that you entered to help me :) So, I'm looking for a script that if someone is not in the Task Force Radio Room it's freezes his player and writes an error that he need to be in the Task Force Radio Room. Thanks very much for helping. Share this post Link to post Share on other sites
JSD 18 Posted June 14, 2017 This is something I made a while back to check TFAR stuff, I'm no that good at this scripting thing so there's probably a better way of doing it but this might help you out. // REMOVE DEFAULT A3 ADDONS from _addons _addons = []; //array to be filled up with all non-arma addons { if (!(["a3_", _x] call BIS_fnc_inString) && !(["curatoronly_", _x] call BIS_fnc_inString)) then {_addons pushBack _x;} } forEach activatedAddons; _otherAddons = ["map_vr","3den","core","a3data"]; { _addons deleteAt (_addons find _x); } forEach _otherAddons; // array with all addons in TFAR and CBA, copied from loading game with these two loaded and getting the _addons array from above code. _TFARaddons = ["task_force_radio_items","cba_common","cba_events","cba_hashes","cba_keybinding","cba_modules","cba_network","cba_settings","cba_statemachine","cba_strings","cba_ui_helper","cba_vectors","cba_ai","cba_arrays","cba_diagnostic","cba_help","cba_jr_prep","cba_ui","cba_versioning","cba_jr","asdg_jointrails","asdg_jointmuzzles","cba_main","cba_main_a3","cba_xeh","cba_xeh_a3","extended_eventhandlers","cba_extended_eventhandlers","cba_ee","task_force_radio","cba_accessory","mrt_accfncs"]; // check if all items in _TFARaddons is in _addons _addonCheck = true; { if !(_x in _addons) exitWith {_addonCheck = false}; } forEach _TFARaddons; // if player is missing some addons then display a warning, warning will stick forever cause player needs to restart Arma. if !(_addonCheck) exitWith { _warningtxt = format ["You need to have the 'Task Force Radio' and 'CBA' mod loaded to play this mission. Please join our TeamSpeak %1 if you need help.", GD_Set_TSIP]; [true, _warningtxt] call GD_Fnc_Warning; }; // check if player is on the right server if !((call TFAR_fnc_getTeamSpeakServerName) isEqualTo GD_Set_TSServer) then { _warningtxt = format ["You need to be on our teamspeak (%1) to play this mission.", GD_Set_TSIP]; [true, _warningtxt] call GD_Fnc_Warning; waitUntil {(call TFAR_fnc_getTeamSpeakServerName) isEqualTo GD_Set_TSServer}; [false] call GD_Fnc_Warning; }; // check if player is in the right channel _TSChannel = GD_Set_TSChannel; if (_TSChannel == "") then {_TSChannel = "TaskForceRadio"}; if !((call TFAR_fnc_getTeamSpeakChannelName) isEqualTo GD_Set_TSChannel) then { _warningtxt = format ["You need to be in the right channel (%1) to play this mission. You might need to relog or ask someone for the password.", GD_Set_TSChannel]; [true, _warningtxt] call GD_Fnc_Warning; waitUntil {(call TFAR_fnc_getTeamSpeakChannelName) isEqualTo GD_Set_TSChannel}; [false] call GD_Fnc_Warning; }; Share this post Link to post Share on other sites
NivZiv 7 Posted June 14, 2017 7 minutes ago, JSD said: This is something I made a while back to check TFAR stuff, I'm no that good at this scripting thing so there's probably a better way of doing it but this might help you out. // REMOVE DEFAULT A3 ADDONS from _addons _addons = []; //array to be filled up with all non-arma addons { if (!(["a3_", _x] call BIS_fnc_inString) && !(["curatoronly_", _x] call BIS_fnc_inString)) then {_addons pushBack _x;} } forEach activatedAddons; _otherAddons = ["map_vr","3den","core","a3data"]; { _addons deleteAt (_addons find _x); } forEach _otherAddons; // array with all addons in TFAR and CBA, copied from loading game with these two loaded and getting the _addons array from above code. _TFARaddons = ["task_force_radio_items","cba_common","cba_events","cba_hashes","cba_keybinding","cba_modules","cba_network","cba_settings","cba_statemachine","cba_strings","cba_ui_helper","cba_vectors","cba_ai","cba_arrays","cba_diagnostic","cba_help","cba_jr_prep","cba_ui","cba_versioning","cba_jr","asdg_jointrails","asdg_jointmuzzles","cba_main","cba_main_a3","cba_xeh","cba_xeh_a3","extended_eventhandlers","cba_extended_eventhandlers","cba_ee","task_force_radio","cba_accessory","mrt_accfncs"]; // check if all items in _TFARaddons is in _addons _addonCheck = true; { if !(_x in _addons) exitWith {_addonCheck = false}; } forEach _TFARaddons; // if player is missing some addons then display a warning, warning will stick forever cause player needs to restart Arma. if !(_addonCheck) exitWith { _warningtxt = format ["You need to have the 'Task Force Radio' and 'CBA' mod loaded to play this mission. Please join our TeamSpeak %1 if you need help.", GD_Set_TSIP]; [true, _warningtxt] call GD_Fnc_Warning; }; // check if player is on the right server if !((call TFAR_fnc_getTeamSpeakServerName) isEqualTo GD_Set_TSServer) then { _warningtxt = format ["You need to be on our teamspeak (%1) to play this mission.", GD_Set_TSIP]; [true, _warningtxt] call GD_Fnc_Warning; waitUntil {(call TFAR_fnc_getTeamSpeakServerName) isEqualTo GD_Set_TSServer}; [false] call GD_Fnc_Warning; }; // check if player is in the right channel _TSChannel = GD_Set_TSChannel; if (_TSChannel == "") then {_TSChannel = "TaskForceRadio"}; if !((call TFAR_fnc_getTeamSpeakChannelName) isEqualTo GD_Set_TSChannel) then { _warningtxt = format ["You need to be in the right channel (%1) to play this mission. You might need to relog or ask someone for the password.", GD_Set_TSChannel]; [true, _warningtxt] call GD_Fnc_Warning; waitUntil {(call TFAR_fnc_getTeamSpeakChannelName) isEqualTo GD_Set_TSChannel}; [false] call GD_Fnc_Warning; }; Hey mate, I need to put this code in the 'init'? Share this post Link to post Share on other sites
jshock 513 Posted June 14, 2017 27 minutes ago, NivZiv said: Hey mate, I need to put this code in the 'init'? You will need to put it in the initPlayerLocal.sqf, though I don't know if anything has changed but I seem to remember something about activatedAddons being deactivated in MP? I may be thinking of something else, but here is another alternative if that is the case (this is untested): 0 = [] spawn { waitUntil {time > 1 && !isNull player && !isNull (findDisplay 46)}; _teamspeakServer = "myTeamSpeakServer"; _teamspeakChannel = "myTeamSpeakChannel"; _timeout = 60; _timePassed = 0; _h = [_teamspeakServer,_teamspeakChannel] spawn { params ["_teamspeakServer","_teamspeakChannel"]; if (isClass (configFile >> "CfgPathces" >> "task_force_radio")) then { scopeName "serverCheckScope"; if !(call TFAR_fnc_getTeamSpeakServerName isEqualTo _teamspeakServer) then { systemChat format ["Please join the TeamSpeak (%1)!",_teamspeakServer]; sleep 4; breakTo "serverCheckScope"; } else { scopeName "channelCheckScope"; if !(call call TFAR_fnc_getTeamSpeakChannelName isEqualTo _teamspeakChannel) then { systemChat format["Please join the correct TeamSpeak channel (%1)",_teamspeakChannel]; sleep 4; breakTo "channelCheckScope"; }; }; } else { systemChat "You must have TFAR loaded to play this mission."; sleep 1; endMission "end2"; }; waitUntil {_timePassed = _timePassed + 1; sleep 1; scriptDone _h || _timePassed >= _timeout;}; if (_timePassed >= _timeout) then { systemChat "TFAR check has timed out please make sure to be in the TeamSpeak and the proper channel."; sleep 1; endMission "end2"; } else { systemChat "Welcome to the mission!"; }; }; }; Share this post Link to post Share on other sites
JSD 18 Posted June 14, 2017 @NivZiv What I put here earlier won't work for you because it uses some things from other scripts, you'd prolly be better off following what jshock said above :p Share this post Link to post Share on other sites
NivZiv 7 Posted June 16, 2017 On 6/15/2017 at 0:09 AM, JSD said: @NivZiv What I put here earlier won't work for you because it uses some things from other scripts, you'd prolly be better off following what jshock said above :p On 6/14/2017 at 10:11 PM, jshock said: You will need to put it in the initPlayerLocal.sqf, though I don't know if anything has changed but I seem to remember something about activatedAddons being deactivated in MP? I may be thinking of something else, but here is another alternative if that is the case (this is untested): 0 = [] spawn { waitUntil {time > 1 && !isNull player && !isNull (findDisplay 46)}; _teamspeakServer = "myTeamSpeakServer"; _teamspeakChannel = "myTeamSpeakChannel"; _timeout = 60; _timePassed = 0; _h = [_teamspeakServer,_teamspeakChannel] spawn { params ["_teamspeakServer","_teamspeakChannel"]; if (isClass (configFile >> "CfgPathces" >> "task_force_radio")) then { scopeName "serverCheckScope"; if !(call TFAR_fnc_getTeamSpeakServerName isEqualTo _teamspeakServer) then { systemChat format ["Please join the TeamSpeak (%1)!",_teamspeakServer]; sleep 4; breakTo "serverCheckScope"; } else { scopeName "channelCheckScope"; if !(call call TFAR_fnc_getTeamSpeakChannelName isEqualTo _teamspeakChannel) then { systemChat format["Please join the correct TeamSpeak channel (%1)",_teamspeakChannel]; sleep 4; breakTo "channelCheckScope"; }; }; } else { systemChat "You must have TFAR loaded to play this mission."; sleep 1; endMission "end2"; }; waitUntil {_timePassed = _timePassed + 1; sleep 1; scriptDone _h || _timePassed >= _timeout;}; if (_timePassed >= _timeout) then { systemChat "TFAR check has timed out please make sure to be in the TeamSpeak and the proper channel."; sleep 1; endMission "end2"; } else { systemChat "Welcome to the mission!"; }; }; }; Worked for me, thanks guys. Share this post Link to post Share on other sites
Ilgmaars 10 Posted February 14, 2023 Hello and Sorry to wake this post, When using this script, it is invoking the end2 without the timeout. Is there anything obvious that I am not doing? Share this post Link to post Share on other sites
ashtray 10 Posted January 31, 2024 On 2/14/2023 at 1:24 PM, Ilgmaars said: Hello and Sorry to wake this post, When using this script, it is invoking the end2 without the timeout. Is there anything obvious that I am not doing? change CfgPathces to CfgPatches Share this post Link to post Share on other sites