Added Mod Checker

This commit is contained in:
Zepheris 2018-03-04 02:45:39 -07:00
parent f88b2f3e63
commit ee62922df0
13 changed files with 445 additions and 1 deletions

View File

@ -810,6 +810,7 @@ allowedIDDs[] =
5501,5502,5503,5504,5505,5506,5507, // BRAma Cookbook
-1339,-1340, // custom infiSTAR dialogs (some editor & a private chat menu)
86000, // xsSpawn above the last number 46
999999, //modChecker
/* main idd - never delete it */
46

Binary file not shown.

View File

@ -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

View File

@ -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
}

View File

@ -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 = "<t color='#ff0000' size='1.3' shadow='1' shadowColor='#000000' align='center'>Some is WRONG with your MODS</t><br/>"; // General error message
} else {
warnMessage = "<t color='#2fd402' size='1.3' shadow='1' shadowColor='#000000' align='center'>All MODS are FINE</t><br/>"; // All mods are loaded message
};

View File

@ -0,0 +1,53 @@
// **********************************************************************************************************
// * 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 + "<t align='center' size='2' shadow='0'></t><br />";
_message = _message + "<t align='center' size='2' shadow='0'>Welcome to Mod modChecker</t><br />";
_message = _message + "<t align='center'>______________________________________________________________________________________<br /><br />";
_message = _message + warnMessage;
_message = _message + "<t align='center'><br />";
/////////////////////////////////////////////////////////////////////////////////////////////
// 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 + modCheckEN;
_message = _message + modCheckAR;
_message = _message + modCheckAUR;
_message = _message + modCheckBVFL;
_message = _message + modCheckNVG;
_message = _message + modCheckAG;
//_message = message + modCheckYOURMOD;
/////////////////////////////////////////////////////////////////////////////////////////////
// Custom message with community links - MODIFY HERE
/////////////////////////////////////////////////////////////////////////////////////////////
_message = _message + "<br />";
_message = _message + "If you get any error, please, read the following links<br /><br />";
_message = _message + "Download the mods from <a href= 'http://steamcommunity.com/sharedfiles/filedetails/?id=1319978763' color='#ff9900'>Steam Workshop</a> Only click on Subscribe!<br />";
_message = _message + "The mod list is only viewable by friends. Make sure you've befriended <a href= 'http://steamcommunity.com/id/zepheris96/' color='#ff9900'>Zepheris96</a><br /><br />";
// _message = message + "Easy add more lines like this";
// _message = _message + "You can easy add <a href= 'http://www.example.com' color='#ff9900'>ANY LINK!</a> And unlimited number of lines.<br />";

View File

@ -0,0 +1,71 @@
// **********************************************************************************************************
// * 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: modCheckerDisplay.sqf
// @file Author: NRZ7 (www.standarol.com)
// @description: This script is a UI launched by modchecker.sqf. If any mod is not loaded, pop's a screen with detailed information and clickable community links (modCheckerDisplay.sqf).
// You can configure custom messages and links to your community guides.
/*
Some code is from
File: rules.sqf
For exile edited by Repentz
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;
[
"",
0,
0.2,
10,
0,
0,
8
] spawn BIS_fnc_dynamicText;
createDialog "RscDisplayWelcome";
_display = findDisplay 999999; // 999999 needed to whitelist in infistar if you are using this.
_text1 = _display displayCtrl 1100;
_buttonSpoiler = _display displayctrl 2400;
_textSpoiler = _display displayctrl 1101;
_text2 = _display displayCtrl 1102;
#include "..\displayConfig.hpp"
//Fill only the first text
_text1 ctrlSetStructuredText (parseText _message);
//Resize StructuredText component to display the scrollbar if needed
_positionText1 = ctrlPosition _text1;
_yText1 = _positionText1 select 1;
_hText1 = ctrlTextHeight _text1;
_text1 ctrlSetPosition [_positionText1 select 0, _yText1, _positionText1 select 2, _hText1];
_text1 ctrlcommit 0;
//Hide second text, spoiler text and button
_buttonSpoiler ctrlSetFade 1;
_buttonSpoiler ctrlCommit 0;
_buttonSpoiler ctrlEnable false;
_textSpoiler ctrlSetFade 1;
_textSpoiler ctrlCommit 0;
_text2 ctrlSetFade 1;
_text2 ctrlCommit 0;
//Waith until dialog is closed and kick the player if a required mod is not loaded.
waitUntil {!dialog };
if (errorLevel > 90) then // non requiered addons have level 1. Requiered addons have error level 99.
{
endMission "LOSER"
}
else
{
firstCheck = 1; player allowDamage true // Disables God Mode protection and set mods as checked.
};

View File

@ -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 = "<t color='#ff0000' size='1.3' shadow='1' shadowColor='#000000' align='center'>Some is WRONG with your MODS</t><br/>";
} else {
warnMessage = "<t color='#2fd402' size='1.3' shadow='1' shadowColor='#000000' align='center'>All MODS are FINE</t><br/>";
};
if ((errorLevel == 0) && (firstCheck == 0)) then {
firstCheck = 1 // Do nothing
} else {
execVM "addons\modChecker\init\modCheckerDisplay.sqf"
};
// execVM "addons\modChecker\init\modCheckerDisplay.sqf"

View File

@ -0,0 +1,158 @@
// **********************************************************************************************************
// * 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 = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Exile Mod is</t><t color='#2fd402' size='0.9' shadow='1' shadowColor='#000000' align='center'> found!</t><br/>";
} else {
// Change "Exile Mod is" to your mod string
modCheckExile = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Exile Mod is</t><t color='#ff0000' size='0.9' shadow='1' shadowColor='#000000' align='center'> NOT FOUND!</t><br/>";
// 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 = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Esseker Map is</t><t color='#2fd402' size='0.9' shadow='1' shadowColor='#000000' align='center'> found!</t><br/>";
} else {
modCheckEsseker = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Esseker Map is</t><t color='#ff0000' size='0.9' shadow='1' shadowColor='#000000' align='center'> NOT FOUND!</t><br/>";
errorLevel = errorLevel + 99
};
// Zombis & Demonds Example - DELETE OR MODIFY
if (isClass(configFile >> "CfgPatches" >> "Ryanzombies")) then
{
modCheckRyan = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Zombies and Demonds is</t><t color='#2fd402' size='0.9' shadow='1' shadowColor='#000000' align='center'> found!</t><br/>";
} else {
modCheckRyan = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Zombies and Demonds is</t><t color='#ff0000' size='0.9' shadow='1' shadowColor='#000000' align='center'> NOT FOUND!</t><br/>";
errorLevel = errorLevel + 99
};
// CUP_Weapons Example - DELETE OR MODIFY
if (isClass(configFile >> "CfgPatches" >> "CUP_Weapons_WeaponsCore")) then
{
modCheckWeapons = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>CUP Weapons is</t><t color='#2fd402' size='0.9' shadow='1' shadowColor='#000000' align='center'> found!</t><br/>";
} else {
modCheckWeapons = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>CUP Weapons is</t><t color='#ff0000' size='0.9' shadow='1' shadowColor='#000000' align='center'> NOT FOUND!</t><br/>";
errorLevel = errorLevel + 99
};
// CUP_Vehicles Example - DELETE OR MODIFY
if (isClass(configFile >> "CfgPatches" >> "CUP_Vehicles_Core")) then
{
modCheckVehicles = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>CUP Vehicles is</t><t color='#2fd402' size='0.9' shadow='1' shadowColor='#000000' align='center'> found!</t><br/>";
} else {
modCheckVehicles = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>CUP Vehicles is</t><t color='#ff0000' size='0.9' shadow='1' shadowColor='#000000' align='center'> NOT FOUND!</t><br/>";
errorLevel = errorLevel + 99
};
// CUP_TerrainCore Example - DELETE OR MODIFY
if (isClass(configFile >> "CfgPatches" >> "CUP_Worlds")) then
{
modCheckTerrain = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>CUP Terrain Core is</t><t color='#2fd402' size='0.9' shadow='1' shadowColor='#000000' align='center'> found!</t><br/>";
} else {
modCheckTerrain = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>CUP Terrain Core is</t><t color='#ff0000' size='0.9' shadow='1' shadowColor='#000000' align='center'> NOT FOUND!</t><br/>";
errorLevel = errorLevel + 1
};
// CUP_Units Example - DELETE OR MODIFY
if (isClass(configFile >> "CfgPatches" >> "CUP_Creatures_People_Core")) then
{
modCheckUnits = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>CUP Units is</t><t color='#2fd402' size='0.9' shadow='1' shadowColor='#000000' align='center'> found!</t><br/>";
} else {
modCheckUnits = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>CUP Units is</t><t color='#ff0000' size='0.9' shadow='1' shadowColor='#000000' align='center'> NOT FOUND!</t><br/>";
errorLevel = errorLevel + 99
};
*/
// Community Base Addon Example - DELETE OR MODIFY
if (isClass(configFile >> "CfgPatches" >> "CBA_main")) then
{
modCheckCBA = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>CBA_A3 is</t><t color='#2fd402' size='0.9' shadow='1' shadowColor='#000000' align='center'> found!</t><br/>";
} else {
modCheckCBA = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>CBA_A3 is</t><t color='#ff0000' size='0.9' shadow='1' shadowColor='#000000' align='center'> NOT FOUND! (Required)</t><br/>";
errorLevel = errorLevel + 99
};
//Enhanced Movement
if (isClass(configFile >> "CfgPatches" >> "BaBe_core")) then
{
modCheckEN = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Enhanced Movement is</t><t color='#2fd402' size='0.9' shadow='1' shadowColor='#000000' align='center'> found!</t><br/>";
} else {
modCheckEN = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Enhanced Movement is</t><t color='#ff0000' size='0.9' shadow='1' shadowColor='#000000' align='center'> NOT FOUND! (Not required)</t><br/>";
errorLevel = errorLevel + 1
};
//Advanced Rappelling
if (isClass(configFile >> "CfgPatches" >> "AR_AdvancedRappelling")) then
{
modCheckAR = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Advanced Rappelling is</t><t color='#2fd402' size='0.9' shadow='1' shadowColor='#000000' align='center'> found!</t><br/>";
} else {
modCheckAR = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Advanced Rappelling is</t><t color='#ff0000' size='0.9' shadow='1' shadowColor='#000000' align='center'> NOT FOUND! (Not required)</t><br/>";
errorLevel = errorLevel + 1
};
//Advanced Urban Rappelling
if (isClass(configFile >> "CfgPatches" >> "AUR_AdvancedUrbanRappelling")) then
{
modCheckAUR = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Advanced Urban Rappelling is</t><t color='#2fd402' size='0.9' shadow='1' shadowColor='#000000' align='center'> found!</t><br/>";
} else {
modCheckAUR = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Advanced Urban Rappelling is</t><t color='#ff0000' size='0.9' shadow='1' shadowColor='#000000' align='center'> NOT FOUND! (Not required)</t><br/>";
errorLevel = errorLevel + 1
};
//bv_flashlight
if (isClass(configFile >> "CfgPatches" >> "bv_flashlight")) then
{
modCheckBVFL = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>bv_flashlight is</t><t color='#2fd402' size='0.9' shadow='1' shadowColor='#000000' align='center'> found!</t><br/>";
} else {
modCheckBVFL = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>bv_flashlight is</t><t color='#ff0000' size='0.9' shadow='1' shadowColor='#000000' align='center'> NOT FOUND! (Required)</t><br/>";
errorLevel = errorLevel + 99
};
//lsd_nvg
if (isClass(configFile >> "CfgPatches" >> "lsd_nvg")) then
{
modCheckNVG = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Full Screen NV is</t><t color='#2fd402' size='0.9' shadow='1' shadowColor='#000000' align='center'> found!</t><br/>";
} else {
modCheckNVG = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Full Screen NV is</t><t color='#ff0000' size='0.9' shadow='1' shadowColor='#000000' align='center'> NOT FOUND! (Not required)</t><br/>";
errorLevel = errorLevel + 1
};
//adjustable Grenades
if (isClass(configFile >> "CfgPatches" >> "vz_a3_adjustableGrenades")) then
{
modCheckAG = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Adjustable Grenades is</t><t color='#2fd402' size='0.9' shadow='1' shadowColor='#000000' align='center'> found!</t><br/>";
} else {
modCheckAG = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>Adjustable Grenades is</t><t color='#ff0000' size='0.9' shadow='1' shadowColor='#000000' align='center'> NOT FOUND! (Not required)</t><br/>";
errorLevel = errorLevel + 1
};
// YOU CAN ADD MORE MODS, ADD FOR EACH SOME CODE LIKE THIS
/*
if (isClass(configFile >> "CfgPatches" >> "YOUR_MOD_CLASSNAME")) then
{
modCheckYOURMOD = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>YOUR MOD is</t><t color='#2fd402' size='0.9' shadow='1' shadowColor='#000000' align='center'> found!</t><br/>";
} else {
modCheckYOURMOD = "<t size='0.9' shadow='1' shadowColor='#000000' align='center'>YOUR MOD is</t><t color='#ff0000' size='0.9' shadow='1' shadowColor='#000000' align='center'> NOT FOUND!</t><br/>";
errorLevel = errorLevel + 1
};
*/

View File

@ -2246,7 +2246,7 @@ class CfgVehicleTransport
class CfgXM8
{
extraApps[] = {"ExAd_VG","ExAd_CHVD","ExAd_Bike","ExAd_SB","BRAmaRecipes"};
extraApps[] = {"ExAd_Bike","ExAd_VG","ExAd_CHVD","BRAmaRecipes","ExAd_Bike","ExAd_modChecker"};
class ExAd_VG
{
@ -2324,6 +2324,15 @@ class CfgXM8
onLoad = "ExAdClient\XM8\Apps\BRAmaRecipes\onLoad.sqf";
onOpen = "ExAdClient\XM8\Apps\BRAmaRecipes\onOpen.sqf";
};
class ExAd_modChecker
{
title = "Mod Checker";
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";
};
};
class SpawnVehicleItems{

View File

@ -506,3 +506,13 @@ call ExileClient_object_trader_create;
187.428
]
call ExileClient_object_trader_create;
///////////////////////////////////////////////////////////////////////////
// MOD CHECKER
///////////////////////////////////////////////////////////////////////////
waitUntil {!isNull findDisplay 46 && !isNil 'ExileClientLoadedIn' && getPlayerUID player != ''}; // wait until player is in spawned
uiSleep 3;
firstCheck = 0;
execVM "addons\modChecker\init\modCheckerInit.sqf";