diff --git a/addons/modChecker/modChecker.paa b/ExAdClient/XM8/Apps/modchecker/modChecker.paa similarity index 100% rename from addons/modChecker/modChecker.paa rename to ExAdClient/XM8/Apps/modchecker/modChecker.paa diff --git a/ExAdClient/XM8/Apps/modchecker/onClose.sqf b/ExAdClient/XM8/Apps/modchecker/onClose.sqf new file mode 100644 index 0000000..e69de29 diff --git a/ExAdClient/XM8/Apps/modchecker/onLoad.sqf b/ExAdClient/XM8/Apps/modchecker/onLoad.sqf new file mode 100644 index 0000000..a8213d0 --- /dev/null +++ b/ExAdClient/XM8/Apps/modchecker/onLoad.sqf @@ -0,0 +1,35 @@ +/* + onLoad.sqf + + Copyright 2016 Jan Babor + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +params["_display","_slide","_idc"]; + +_pW = 0.025; +_pH = 0.04; +_leftCol = 0; +_leftColW = 12.8; +_rightCol = _leftCol + _leftColW + 2; +_rightColW = _leftColW + 3; +_margin = 0.2; + +_slideClass = "ExAd_ModChecker"; + +[_display,_slide,([_slideClass,"backButton"] call ExAd_fnc_getNextIDC),[27 * _pW, 17 * _pH, 6 * _pW, 1 * _pH],'["extraApps", 1] call ExileClient_gui_xm8_slide;',"Go Back"] call ExAd_fnc_createButton; + +_newParent = [_display,_slide,([_slideClass,"ctrlGrp"] call ExAd_fnc_getNextIDC),[_leftCol * _pW, 1 * _pH, (_leftColW + _rightCol + 6) * _pW, 16 * _pH]] call ExAd_fnc_createCtrlGrp; +[_display,_newParent,([_slideClass,"strTxt"] call ExAd_fnc_getNextIDC),[_leftCol * _pW, 1.5 * _pH, (_leftColW + _rightCol + 5) * _pW, 15 * _pH],"","PuristaMedium",1,"#ffffff","right",1] call ExAd_fnc_createStructuredText; + +true \ No newline at end of file diff --git a/ExAdClient/XM8/Apps/modchecker/onOpen.sqf b/ExAdClient/XM8/Apps/modchecker/onOpen.sqf new file mode 100644 index 0000000..6a4a35e --- /dev/null +++ b/ExAdClient/XM8/Apps/modchecker/onOpen.sqf @@ -0,0 +1,54 @@ +// ********************************************************************************************************** +// * This project is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) +// * https://creativecommons.org/licenses/by-sa/4.0/ +// ********************************************************************************************************** +// @file Name: xm8modChecker.sqf +// @file Author: jmayr2000 (from exilemod.com) + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// DO NOT TOUCH UNDER THIS LINE IF DON'T KNOW WHAT ARE YOU DOING +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +private["_display","_message","_strTxt","_pos"]; + +try +{ + _message = preprocessFileLineNumbers "ExAdClient\XM8\Apps\ModChecker\xm8modChecker.sqf"; + _message = _message select [(_message find "ExAdClient") + (count "ExAdClient\XM8\Apps\ModChecker\xm8modChecker.sqf") + 1]; + + if(count _message == 0)exitWith{ + throw "No server info provided"; + }; + +disableSerialization; +[ + "", + 0, + 0.2, + 10, + 0, + 0, + 8 +] spawn BIS_fnc_dynamicText; + +#include "..\..\..\..\addons\modChecker\displayConfig.hpp" + + _display = uiNameSpace getVariable ["RscExileXM8", displayNull]; + if(isNull _display)exitWith{ + throw "XM8 not loaded!"; + }; + + _strTxt = [_display,"ExAd_ModChecker","strTxt"] call ExAd_fnc_getAppCtrl; + _strTxt ctrlSetStructuredText parseText format[_message]; + + _pos = ctrlPosition _strTxt; + _strTxt ctrlSetPosition [_pos select 0, _pos select 1, _pos select 2, ctrlTextHeight _strTxt]; + _strTxt ctrlcommit 0; + ([_display,"ExAd_ModChecker","strTxt"] call ExAd_fnc_getAppCtrl) ctrlEnable true; +} +catch +{ + ["ErrorTitleAndText", ["ExAd - Mod Checker", _exception]] call ExileClient_gui_toaster_addTemplateToast; + ["extraApps", 1] call ExileClient_gui_xm8_slide +} + diff --git a/ExAdClient/XM8/Apps/modchecker/xm8modChecker.sqf b/ExAdClient/XM8/Apps/modchecker/xm8modChecker.sqf new file mode 100644 index 0000000..f7813d7 --- /dev/null +++ b/ExAdClient/XM8/Apps/modchecker/xm8modChecker.sqf @@ -0,0 +1,20 @@ +// ********************************************************************************************************** +// * This project is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) +// * https://creativecommons.org/licenses/by-sa/4.0/ +// ********************************************************************************************************** +// @file Name: xm8modChecker.sqf +// @file Author: jmayr2000 and NRZ7 (www.standarol.com) + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// DO NOT TOUCH UNDER THIS LINE IF DON'T KNOW WHAT ARE YOU DOING +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +errorLevel = 0; // Do not touch. Set errors to 0 before run modChecker.sqf + +#include "..\..\..\..\addons\modChecker\modConfig.hpp" + +if (errorLevel > 0) then { + warnMessage = "Some is WRONG with your MODS
"; // General error message + } else { + warnMessage = "All MODS are FINE
"; // All mods are loaded message + }; diff --git a/addons/modChecker/displayConfig.hpp b/addons/modChecker/displayConfig.hpp new file mode 100644 index 0000000..b0c7893 --- /dev/null +++ b/addons/modChecker/displayConfig.hpp @@ -0,0 +1,47 @@ +// ********************************************************************************************************** +// * This project is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) +// * https://creativecommons.org/licenses/by-sa/4.0/ +// ********************************************************************************************************** +// @file Name: modmodCheckerDisplay.sqf +// @file Author: NRZ7 (www.standarol.com) and Repentz +// @description: This script is a UI launched by modmodChecker.sqf. If any mod is not loaded, pop's a screen with detailed information and clickable community links (modmodCheckerDisplay.sqf). +// You can configure custom messages and links to your community guides. + + +///////////////////////////////////////////////////////////////////////////////////////////// +// DISPLAY HEADER +///////////////////////////////////////////////////////////////////////////////////////////// + +_message = ""; +_message = _message + "
"; +_message = _message + "Welcome to Mod modChecker
"; +_message = _message + "______________________________________________________________________________________

"; +_message = _message + warnMessage; +_message = _message + "
"; + + +///////////////////////////////////////////////////////////////////////////////////////////// +// MOD CONFIG PART HERE +// Remember to add-delete-modify the same mod variable names used in modmodCheckerConfig.hpp +///////////////////////////////////////////////////////////////////////////////////////////// +_message = _message + modCheckExile; +_message = _message + modCheckEsseker; +_message = _message + modCheckRyan; +_message = _message + modCheckWeapons; +_message = _message + modCheckVehicles; +_message = _message + modCheckUnits; +_message = _message + modCheckTerrain; +_message = _message + modCheckCBA; +//_message = message + modCheckYOURMOD; + + +///////////////////////////////////////////////////////////////////////////////////////////// +// Custom message with community links - MODIFY HERE +///////////////////////////////////////////////////////////////////////////////////////////// + +_message = _message + "
"; +_message = _message + "If you get any error, please, read the following links

"; +_message = _message + "Download the mods from Steam Workshop Only click on Subscribe!
"; +_message = _message + "Guía de lanzamiento e instalación de mods [ESPAÑOL]


"; +// _message = message + "Easy add more lines like this"; +// _message = _message + "You can easy add ANY LINK! And unlimited number of lines.
"; \ No newline at end of file diff --git a/addons/modChecker/modCheckerDisplay.sqf b/addons/modChecker/init/modCheckerDisplay.sqf similarity index 57% rename from addons/modChecker/modCheckerDisplay.sqf rename to addons/modChecker/init/modCheckerDisplay.sqf index 322e309..365db4a 100644 --- a/addons/modChecker/modCheckerDisplay.sqf +++ b/addons/modChecker/init/modCheckerDisplay.sqf @@ -14,6 +14,10 @@ Link: http://www.exilemod.com/topic/10375-advanced-server-rules-for-xm8/ */ +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// DO NOT TOUCH UNDER THIS LINE IF DON'T KNOW WHAT ARE YOU DOING +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + if ((firstCheck == 0) && (errorLevel > 0)) then { player allowdamage false }; // God Mode ON to avoid die and close dialog only if ModCheckerDisplay is auto executed. disableSerialization; @@ -35,38 +39,7 @@ _buttonSpoiler = _display displayctrl 2400; _textSpoiler = _display displayctrl 1101; _text2 = _display displayCtrl 1102; -///////////////////////////////////////////////////////////////////////////////////////////// -// CUSTOMIZABLE PART HERE -// Remember to add-delete-modify the same mod variable names used in modChecker.sqf -///////////////////////////////////////////////////////////////////////////////////////////// - -// Display header -_message = ""; -_message = _message + "
"; //
is equal to line jump -_message = _message + "Welcome to Mod Checker
"; -_message = _message + "______________________________________________________________________________________

"; -_message = _message + warnMessage; -_message = _message + "
"; - -//Mod variable names - MODIFY HERE -_message = _message + checkExile; -_message = _message + checkEsseker; -_message = _message + checkRyan; -_message = _message + checkWeapons; -_message = _message + checkVehicles; -_message = _message + checkUnits; -_message = _message + checkTerrain; -_message = _message + checkCBA; - -// Custom message with community links - MODIFY HERE -_message = _message + "
"; //
is equal to line jump -_message = _message + "If you get any error, please, read the following links

"; -_message = _message + "Download the mods from Steam Workshop Only click on Subscribe!
"; -_message = _message + "Guía de lanzamiento e instalación de mods [ESPAÑOL]


"; - -///////////////////////////////////////////////////////////////////////////////////////////////////// -// END OF CUSTOMIZABLE TEXT, DO NOT TOUCH UNDER THIS LINE IF YOU DON'T KWOW WHAT ARE YOU DOING -//////////////////////////////////////////////////////////////////////////////////////////////////// +#include "..\displayConfig.hpp" //Fill only the first text _text1 ctrlSetStructuredText (parseText _message); diff --git a/addons/modChecker/init/modCheckerInit.sqf b/addons/modChecker/init/modCheckerInit.sqf new file mode 100644 index 0000000..3204e71 --- /dev/null +++ b/addons/modChecker/init/modCheckerInit.sqf @@ -0,0 +1,33 @@ +// ********************************************************************************************************** +// * This project is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) +// * https://creativecommons.org/licenses/by-sa/4.0/ +// ********************************************************************************************************** +// @file Name: modChecker.sqf +// @file Author: NRZ7 (www.standarol.com) +// @description: This script check the mods loaded by the client. If any mod is not loaded, pop's a screen with detailed information and clickable community links (modCheckerDisplay.sqf). +// You can configure requiered addons (error 99) or optional addons (error 1). If any required mod fails, the client load "You Loose" screen after close the dialog. +// + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// DO NOT TOUCH UNDER THIS LINE IF DON'T KNOW WHAT ARE YOU DOING +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +errorLevel = 0; + +#include "..\modConfig.hpp" + +if (errorLevel > 0) then { + warnMessage = "Some is WRONG with your MODS
"; + } else { + warnMessage = "All MODS are FINE
"; + }; + +if ((errorLevel == 0) && (firstCheck == 0)) then { + firstCheck = 1 // Do nothing + } else { + execVM "addons\modChecker\init\modCheckerDisplay.sqf" + }; + +// execVM "addons\modChecker\modCheckerDisplay.sqf" + + diff --git a/addons/modChecker/modChecker.sqf b/addons/modChecker/modChecker.sqf deleted file mode 100644 index bf9297a..0000000 --- a/addons/modChecker/modChecker.sqf +++ /dev/null @@ -1,122 +0,0 @@ -// ********************************************************************************************************** -// * This project is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) -// * https://creativecommons.org/licenses/by-sa/4.0/ -// ********************************************************************************************************** -// @file Name: modChecker.sqf -// @file Author: NRZ7 (www.standarol.com) -// @description: This script check the mods loaded by the client. If any mod is not loaded, pop's a screen with detailed information and clickable community links (modCheckerDisplay.sqf). -// You can configure requiered addons (errorLevel 99) or optional addons (errorLevel 1). If any mod fails or this script is manually executed, launch modCheckerDisplay.sqf -// You can execute this script running this code in local // [] execVM "addons\scripts\modChecker.sqf" - - -errorLevel = 0; // Do not touch. Set errors to 0 before run modChecker.sqf - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Exile_Client Example - READ TO UNDERSTAND - DO NOT TOUCH - READ - DO NOT TOUCH - READ - DO NOT TOUCH -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -// Change "Exile_Client" to name of the CfgPatches from desired mod. -// You can find under editor. ("Tools" - "Config Viewer" - "Configfile" - "CfgPatches") -if (isClass(configFile >> "CfgPatches" >> "Exile_Client")) then { -// Change checkExile to your desired and unique mod variable name -// Change "Exile Mod is" to your mod string. For advanced users, can change size, color, allign, etc. - checkExile = "Exile Mod is found!
"; - } else { -// Change "Exile Mod is" to your mod string - checkExile = "Exile Mod is NOT FOUND!
"; -// Set 99 to Required, Set 1 to optional - errorLevel = errorLevel + 99 - }; - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// START OF MODS CONFIG - EDIT OR DELETE UNDER THIS LINE -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -// Esseker Example - DELETE OR MODIFY -if (isClass(configFile >> "CfgPatches" >> "Esseker")) then { - checkEsseker = "Esseker Map is found!
"; - } else { - checkEsseker = "Esseker Map is NOT FOUND!
"; - errorLevel = errorLevel + 99 - }; - -// Zombis & Demonds Example - DELETE OR MODIFY -if (isClass(configFile >> "CfgPatches" >> "Ryanzombies")) then { - checkRyan = "Zombies and Demonds is found!
"; - } else { - checkRyan = "Zombies and Demonds is NOT FOUND!
"; - errorLevel = errorLevel + 99 - }; - -// CUP_Weapons Example - DELETE OR MODIFY -if (isClass(configFile >> "CfgPatches" >> "CUP_Weapons_WeaponsCore")) then { - checkWeapons = "CUP Weapons is found!
"; - } else { - checkWeapons = "CUP Weapons is NOT FOUND!
"; - errorLevel = errorLevel + 99 - }; - -// CUP_Vehicles Example - DELETE OR MODIFY -if (isClass(configFile >> "CfgPatches" >> "CUP_Vehicles_Core")) then { - checkVehicles = "CUP Vehicles is found!
"; - } else { - checkVehicles = "CUP Vehicles is NOT FOUND!
"; - errorLevel = errorLevel + 99 - }; - -// CUP_TerrainCore Example - DELETE OR MODIFY -if (isClass(configFile >> "CfgPatches" >> "CUP_Worlds")) then { - checkTerrain = "CUP Terrain Core is found!
"; - } else { - checkTerrain = "CUP Terrain Core is NOT FOUND!
"; - errorLevel = errorLevel + 1 - }; - -// CUP_Units Example - DELETE OR MODIFY -if (isClass(configFile >> "CfgPatches" >> "CUP_Creatures_People_Core")) then { - checkUnits = "CUP Units is found!
"; - } else { - checkUnits = "CUP Units is NOT FOUND!
"; - errorLevel = errorLevel + 99 - }; - -// Community Base Addon Example - DELETE OR MODIFY -if (isClass(configFile >> "CfgPatches" >> "CBA_main")) then { - checkCBA = "CBA_A3 is found!
"; - } else { - checkCBA = "CBA_A3 is NOT FOUND!
"; - errorLevel = errorLevel + 1 - }; - - -// YOU CAN ADD MORE MODS, ADD FOR EACH SOME CODE LIKE THIS - -/* -if (isClass(configFile >> "CfgPatches" >> "YOUR_MOD_CLASSNAME")) then { - checkYOURMOD = "YOUR MOD is found!
"; - } else { - checkYOURMOD = "YOUR MOD is NOT FOUND!
"; - errorLevel = errorLevel + 1 - }; -*/ - - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// DO NOT TOUCH UNDER THIS LINE IF DON'T KNOW WHAT ARE YOU DOING -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -if (errorLevel > 0) then { - warnMessage = "Some is WRONG with your MODS
"; // General error message - } else { - warnMessage = "All MODS are FINE
"; // All mods are loaded message - }; - -if ((errorLevel == 0) && (firstCheck == 0)) then { - firstCheck = 1 - } else { - execVM "addons\modChecker\modCheckerDisplay.sqf" - }; - -// execVM "addons\modChecker\modCheckerDisplay.sqf" - - diff --git a/addons/modChecker/modConfig.hpp b/addons/modChecker/modConfig.hpp new file mode 100644 index 0000000..5ea169d --- /dev/null +++ b/addons/modChecker/modConfig.hpp @@ -0,0 +1,106 @@ +// ********************************************************************************************************** +// * This project is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) +// * https://creativecommons.org/licenses/by-sa/4.0/ +// ********************************************************************************************************** +// @file Name: modmodChecker.sqf +// @file Author: NRZ7 (www.standarol.com) +// @description: This script modCheck the mods loaded by the client. If any mod is not loaded, pop's a screen with detailed information and clickable community links (modmodCheckerDisplay.sqf). +// You can configure requiered addons (error 99) or optional addons (error 1). If any required mod fails, the client load "You Loose" screen after close the dialog. + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Exile_Client Example - READ TO UNDERSTAND - DO NOT TOUCH - READ - DO NOT TOUCH - READ - DO NOT TOUCH +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +// Change "Exile_Client" to name of the CfgPatches from desired mod. +// You can find under editor. ("Tools" - "Config Viewer" - "Configfile" - "CfgPatches") +if (isClass(configFile >> "CfgPatches" >> "Exile_Client")) then + { +// Change modCheckExile to your desired and unique mod variable name +// Change "Exile Mod is" to your mod string. For advanced users, can change size, color, allign, etc. + modCheckExile = "Exile Mod is found!
"; + } else { +// Change "Exile Mod is" to your mod string + modCheckExile = "Exile Mod is NOT FOUND!
"; +// Set 99 to Required, Set 1 to optional + errorLevel = errorLevel + 99 + }; + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// START OF MODS CONFIG - EDIT OR DELETE UNDER THIS LINE +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +// Esseker Example - DELETE OR MODIFY +if (isClass(configFile >> "CfgPatches" >> "Esseker")) then + { + modCheckEsseker = "Esseker Map is found!
"; + } else { + modCheckEsseker = "Esseker Map is NOT FOUND!
"; + errorLevel = errorLevel + 99 + }; + +// Zombis & Demonds Example - DELETE OR MODIFY +if (isClass(configFile >> "CfgPatches" >> "Ryanzombies")) then + { + modCheckRyan = "Zombies and Demonds is found!
"; + } else { + modCheckRyan = "Zombies and Demonds is NOT FOUND!
"; + errorLevel = errorLevel + 99 + }; + +// CUP_Weapons Example - DELETE OR MODIFY +if (isClass(configFile >> "CfgPatches" >> "CUP_Weapons_WeaponsCore")) then + { + modCheckWeapons = "CUP Weapons is found!
"; + } else { + modCheckWeapons = "CUP Weapons is NOT FOUND!
"; + errorLevel = errorLevel + 99 + }; + +// CUP_Vehicles Example - DELETE OR MODIFY +if (isClass(configFile >> "CfgPatches" >> "CUP_Vehicles_Core")) then + { + modCheckVehicles = "CUP Vehicles is found!
"; + } else { + modCheckVehicles = "CUP Vehicles is NOT FOUND!
"; + errorLevel = errorLevel + 99 + }; + +// CUP_TerrainCore Example - DELETE OR MODIFY +if (isClass(configFile >> "CfgPatches" >> "CUP_Worlds")) then + { + modCheckTerrain = "CUP Terrain Core is found!
"; + } else { + modCheckTerrain = "CUP Terrain Core is NOT FOUND!
"; + errorLevel = errorLevel + 1 + }; + +// CUP_Units Example - DELETE OR MODIFY +if (isClass(configFile >> "CfgPatches" >> "CUP_Creatures_People_Core")) then + { + modCheckUnits = "CUP Units is found!
"; + } else { + modCheckUnits = "CUP Units is NOT FOUND!
"; + errorLevel = errorLevel + 99 + }; + +// Community Base Addon Example - DELETE OR MODIFY +if (isClass(configFile >> "CfgPatches" >> "CBA_main")) then + { + modCheckCBA = "CBA_A3 is found!
"; + } else { + modCheckCBA = "CBA_A3 is NOT FOUND!
"; + errorLevel = errorLevel + 1 + }; + + +// YOU CAN ADD MORE MODS, ADD FOR EACH SOME CODE LIKE THIS + +/* +if (isClass(configFile >> "CfgPatches" >> "YOUR_MOD_CLASSNAME")) then + { + modCheckYOURMOD = "YOUR MOD is found!
"; + } else { + modCheckYOURMOD = "YOUR MOD is NOT FOUND!
"; + errorLevel = errorLevel + 1 + }; +*/ diff --git a/config.cpp b/config.cpp index 761f633..8d5c0fa 100644 --- a/config.cpp +++ b/config.cpp @@ -1,12 +1,14 @@ class CfgXM8 { - extraApps[] = {"modChecker"}; + extraApps[] = {"ExAd_modChecker"}; - class modChecker + class ExAd_modChecker { title = "Mod Checker"; - logo = "addons\modChecker\modChecker.paa"; - quickFunction = "[] execVM 'addons\modChecker\modChecker.sqf'"; - + controlID = 99999; + logo = "ExadClient\XM8\Apps\modChecker\modChecker.paa"; + onLoad = "ExAdClient\XM8\Apps\modChecker\onLoad.sqf"; + onOpen = "ExAdClient\XM8\Apps\modChecker\onOpen.sqf"; + onClose = "ExAdClient\XM8\Apps\modChecker\onClose.sqf"; }; }; \ No newline at end of file diff --git a/initPlayerLocal.sqf b/initPlayerLocal.sqf index 7e0659c..ea3f783 100644 --- a/initPlayerLocal.sqf +++ b/initPlayerLocal.sqf @@ -8,7 +8,7 @@ waitUntil {!isNull findDisplay 46 && !isNil 'ExileClientLoadedIn' && getPlayerUI uiSleep 3; firstCheck = 0; -execVM "addons\modChecker\modChecker.sqf"; +execVM "addons\modChecker\init\modCheckerInit.sqf"; /*Note, if you have Exile ProtectionRemember.sqf, use this