Jump to content
theduke

[RELEASE] Custom GUI / Menu UPDATED for 1061

Recommended Posts

@theduke Thanks for answering.

What I mean is, on one of the rules pages I want to list features. What I'm trying to do, as there's about 25 I want to list, is to use the title1 to have "Features" in it and then use text1 as one big list... But, I need to insert line breaks to do this so, they appear as a list. Then I will knock off the remaining title and text boxes in rules.hpp and increase the size of text1.

Hope that makes sense....?

Share this post


Link to post
Share on other sites
30 minutes ago, ReDBaroN said:

@theduke Thanks for answering.

What I mean is, on one of the rules pages I want to list features. What I'm trying to do, as there's about 25 I want to list, is to use the title1 to have "Features" in it and then use text1 as one big list... But, I need to insert line breaks to do this so, they appear as a list. Then I will knock off the remaining title and text boxes in rules.hpp and increase the size of text1.

Hope that makes sense....?

ok, in that case you were on the right track. Its <br/>   no spaces. tested and works

Share this post


Link to post
Share on other sites

@theduke I had tried that before and tried it again just now and it doesn't work for me... Below is one that I have done as an example:

_rule1title = "Owner and Admins"; //Text that will be the title of rule #1
_rule1text = "BaroN<br/><br/>Soren<br/>Logik<br/>raining thunder"; //Text that will go in rule # 1 Box, maximum of Approx 300 characters

But, this just shows "<br/>" on screen without starting a new line...

Sorry if I'm being dense and have missed something..?

Share this post


Link to post
Share on other sites
5 hours ago, ReDBaroN said:

@theduke I had tried that before and tried it again just now and it doesn't work for me... Below is one that I have done as an example:

_rule1title = "Owner and Admins"; //Text that will be the title of rule #1
_rule1text = "BaroN<br/><br/>Soren<br/>Logik<br/>raining thunder"; //Text that will go in rule # 1 Box, maximum of Approx 300 characters

But, this just shows "<br/>" on screen without starting a new line...

Sorry if I'm being dense and have missed something..?

ah yes sorry. thats the sqf. I thought you meant blocks of text in the HPP.

cant test this and just guessing really lol but i took this from the rules.sqf from the original epoch missions.

<br /></t>

also the bohemia forums are down for maintenance. so research is dead for now  lol

if that doesnt work. might want to look in there how they did it for the welcome messages/rules

Share this post


Link to post
Share on other sites
11 hours ago, theduke said:

ah yes sorry. thats the sqf. I thought you meant blocks of text in the HPP.

cant test this and just guessing really lol but i took this from the rules.sqf from the original epoch missions.

<br /></t>

also the bohemia forums are down for maintenance. so research is dead for now  lol

if that doesnt work. might want to look in there how they did it for the welcome messages/rules

@theduke Thanks. I have tried that as well and it's not working. Odd as it works fine with a simple <br /> in the epoch rules in the mission init....

Share this post


Link to post
Share on other sites
31 minutes ago, ReDBaroN said:

@theduke Jackpot! Nice one dude! 

Can't believe I didn't try that considering how many BE filter exceptions I have written over the years.... 

Many thanks

haha Salival was the one to tell me. credit goes to him

Share this post


Link to post
Share on other sites
6 hours ago, ReDBaroN said:

@theduke One, hopefully, last question... How do you increase the font size for the rule titles? So, _rule1title, _rule2title etc.?

I dont have a way to test it at the moment, but im sure if you look at the rules.sqf from the epoch mission it'll show you there.

or if you want to do them individually you can do this

_rule1title = format ["<t size='0.60' color='#DBA901' align='center'>RULE TITLE HERE<br /></t>"];

Note that the size, color and alignment is there also

Share this post


Link to post
Share on other sites

I got it working but I'd like to add atv and mozzie in the deployable. I tried a couple things but its not working. A mozzie would take  ItemToolbox, 2x PartGeneric,  PartEngine, ItemJerrycan but not too sure how to.

Also, our rules is in English and Portuguese but I'd like to have it in Russian too since we got plenty of these guy on our server but it doesn't work when you go in the game the character are replaced with exclamation, any way to change that?

Share this post


Link to post
Share on other sites

Hey duke,

I've installed your custom GUI menu and have edited it so it just has View Distance buttons and Suicide, Rules actions. The problem I'm having is in relation to the 2.8.2 Deploy Anything mod. When I have your menu installed without the 2.8.2 Deploy Anything Mod it works fine but as soon as I install the mod I can no longer open the menu. RPT isn't giving any errors and I don't know what to do.

Share this post


Link to post
Share on other sites
On 11/29/2017 at 11:33 PM, creation said:

Hey duke,

I've installed your custom GUI menu and have edited it so it just has View Distance buttons and Suicide, Rules actions. The problem I'm having is in relation to the 2.8.2 Deploy Anything mod. When I have your menu installed without the 2.8.2 Deploy Anything Mod it works fine but as soon as I install the mod I can no longer open the menu. RPT isn't giving any errors and I don't know what to do.

The only issue ive known that the deploy anything mod caused, was it would overwrite any "right click" mod you had.

how do you open the menu?

 

Share this post


Link to post
Share on other sites
14 hours ago, theduke said:

The only issue ive known that the deploy anything mod caused, was it would overwrite any "right click" mod you had.

how do you open the menu?

 

Hey man,

I've since figured out the problem, I had to call the keyboard sqf through my custom compiles rather than the init in order for it to work.

Share this post


Link to post
Share on other sites

This is a sexy mod. Cant wait to get balls deep into it.

Does anyone know if there is a way to integrate it with deploy anything? So I set the deployable's in the deployanything config, is there a way to call them through the menu buttons?

Share this post


Link to post
Share on other sites

I'm sure there's a way, but i never "figured it out". I myself would love this as you can deploy and drop where you want. But the menu buttons run  script, which the deploy anything is a bit more customized.

It's way above my head lol

Share this post


Link to post
Share on other sites

tested and functional.

menu_init.sqf :

Spoiler

disableSerialization;
///////////////////
//////Config//////
/////////////////

_serverName = "Your Gaming Community"; // the server name that will go accross the top of the menu

_ts3IP = "TS3 - TS3.yoursite.com"; // ts3 ip that will go at the bottom of the menu

_websiteUrl = "www.yoursite.com"; // website url that goes at the bottom of the menu 


////////////////////////////////////////////
////////////////////ACTIONS////////////////
//////////////////////////////////////////

_action1Text = "Suicide"; //Text that will go on action button 1
action1script = {((ctrlParent (_this select 0)) closeDisplay 7777); execvm 'custom\menu\scripts\suicide.sqf';}; //script that action button 1 will use

_action2Text = "Action 2"; //Text that will go on action button 2
action2script = {((ctrlParent (_this select 0)) closeDisplay 7777); execvm 'custom\menu\scripts\yourscript.sqf';}; //script that action button 2 will use

_info1Text = "Rules"; //Text that will go on info button 1
info1script = {((ctrlParent (_this select 0)) closeDisplay 7777); execvm 'custom\menu\rules_init.sqf';}; //script that info button 1 will use

_info2Text = "Info 2"; //Text that will go on info button 2
info2script = {((ctrlParent (_this select 0)) closeDisplay 7777); createDialog "info2";}; //script that info button 2 will use

_info3Text = "Info 3"; //Text that will go on info button 3
info3script = {((ctrlParent (_this select 0)) closeDisplay 7777); createDialog "info3";}; //script that action info 3 will use

_info4Text = "Info 4"; //Text that will go on info button 4
info4script = {((ctrlParent (_this select 0)) closeDisplay 7777); createDialog "info4";}; //script that action info 4 will use


///////////////////////////////////////////////
//////////////DEPLOYABLES/////////////////////
/////////////////////////////////////////////

_deployable1Text = "Bike"; //Text that will go on deployable button 1
_deploy1item1Text = "ToolBox"; //Text that will go in the number 1 item slot under the first deploy button 
_deploy1item2Text = ""; //Text that will go in the number 2 item slot under the first deploy button 
_deploy1item3Text = ""; //Text that will go in the number 3 item slot under the first deploy button 
_deploy1item4Text = ""; //Text that will go in the number 4 item slot under the first deploy button 
_deploy1item5Text = ""; //Text that will go in the number 5 item slot under the first deploy button 

deployableBike = {
    ((ctrlParent (_this select 0)) closeDisplay 7777),                           // this command close the dialog
    [0] execVM "scripts\deployAnything\deploy.sqf";                               // execute the scipt
};

_deployable2Text = "Mi171 Sh"; //Text that will go on deployable button 2
_deploy2item1Text = "Part Generic"; //Text that will go in the number 1 item slot under the Second deploy button 
_deploy2item2Text = "Part Generic"; //Text that will go in the number 2 item slot under the Second deploy button 
_deploy2item3Text = ""; //Text that will go in the number 3 item slot under the Second deploy button 
_deploy2item4Text = ""; //Text that will go in the number 4 item slot under the Second deploy button 
_deploy2item5Text = ""; //Text that will go in the number 5 item slot under the Second deploy button 

deployableChopper = {
    ((ctrlParent (_this select 0)) closeDisplay 7777),                           // this command close the dialog
    [2] execVM "scripts\deployAnything\deploy.sqf";                               // execute the scipt
};

_deployable3Text = "HMMWV"; //Text that will go on deployable button 3
_deploy3item1Text = "Part wheel"; //Text that will go in the number 1 item slot under the third deploy button 
_deploy3item2Text = "Part Wheel"; //Text that will go in the number 2 item slot under the third deploy button 
_deploy3item3Text = ""; //Text that will go in the number 3 item slot under the third deploy button 
_deploy3item4Text = ""; //Text that will go in the number 4 item slot under the third deploy button 
_deploy3item5Text = ""; //Text that will go in the number 5 item slot under the third deploy button 

deployableHmmvw = {
    ((ctrlParent (_this select 0)) closeDisplay 7777),                           // this command close the dialog
    [3] execVM "scripts\deployAnything\deploy.sqf";                               // execute the scipt
};


createDialog "menu";


////////////////////////////////
//DO NOT EDIT BELLOW THIS LINE//
////////////////////////////////
fnc_update_all_text = {
_finddialog = findDisplay 7777;
(_finddialog displayCtrl 1609) ctrlSetText format["%1",_action1Text];
(_finddialog displayCtrl 1610) ctrlSetText format["%1",_action2Text];
(_finddialog displayCtrl 1611) ctrlSetText format["%1",_info1Text];
(_finddialog displayCtrl 1612) ctrlSetText format["%1",_info2Text];
(_finddialog displayCtrl 1613) ctrlSetText format["%1",_info3Text];
(_finddialog displayCtrl 1618) ctrlSetText format["%1",_info4Text];
(_finddialog displayCtrl 1614) ctrlSetText format["%1",_deployable1Text];
(_finddialog displayCtrl 1615) ctrlSetText format["%1",_deployable2Text];
(_finddialog displayCtrl 1616) ctrlSetText format["%1",_deployable3Text];
(_finddialog displayCtrl 1007) ctrlSetText format["%1",_deploy1item1Text];
(_finddialog displayCtrl 1008) ctrlSetText format["%1",_deploy1item2Text];
(_finddialog displayCtrl 1009) ctrlSetText format["%1",_deploy1item3Text];
(_finddialog displayCtrl 1010) ctrlSetText format["%1",_deploy1item4Text];
(_finddialog displayCtrl 1011) ctrlSetText format["%1",_deploy1item5Text];
(_finddialog displayCtrl 1012) ctrlSetText format["%1",_deploy2item1Text];
(_finddialog displayCtrl 1013) ctrlSetText format["%1",_deploy2item2Text];
(_finddialog displayCtrl 1014) ctrlSetText format["%1",_deploy2item3Text];
(_finddialog displayCtrl 1015) ctrlSetText format["%1",_deploy2item4Text];
(_finddialog displayCtrl 1016) ctrlSetText format["%1",_deploy2item5Text];
(_finddialog displayCtrl 1017) ctrlSetText format["%1",_deploy3item1Text];
(_finddialog displayCtrl 1018) ctrlSetText format["%1",_deploy3item2Text];
(_finddialog displayCtrl 1019) ctrlSetText format["%1",_deploy3item3Text];
(_finddialog displayCtrl 1020) ctrlSetText format["%1",_deploy3item4Text];
(_finddialog displayCtrl 1021) ctrlSetText format["%1",_deploy3item5Text]; 
(_finddialog displayCtrl 1001) ctrlSetText format["%1",_websiteUrl];
(_finddialog displayCtrl 1002) ctrlSetText format["%1",_ts3IP];
(_finddialog displayCtrl 10003) ctrlSetText format["%1",_ts3IP];
(_finddialog displayCtrl 1000) ctrlSetText format["%1 Menu",_serverName];
};

call fnc_update_all_text;

 

 

Share this post


Link to post
Share on other sites
8 hours ago, Mig said:

tested and functional.

menu_init.sqf :

  Reveal hidden contents


disableSerialization;
///////////////////
//////Config//////
/////////////////

_serverName = "Your Gaming Community"; // the server name that will go accross the top of the menu

_ts3IP = "TS3 - TS3.yoursite.com"; // ts3 ip that will go at the bottom of the menu

_websiteUrl = "www.yoursite.com"; // website url that goes at the bottom of the menu 


////////////////////////////////////////////
////////////////////ACTIONS////////////////
//////////////////////////////////////////

_action1Text = "Suicide"; //Text that will go on action button 1
action1script = {((ctrlParent (_this select 0)) closeDisplay 7777); execvm 'custom\menu\scripts\suicide.sqf';}; //script that action button 1 will use

_action2Text = "Action 2"; //Text that will go on action button 2
action2script = {((ctrlParent (_this select 0)) closeDisplay 7777); execvm 'custom\menu\scripts\yourscript.sqf';}; //script that action button 2 will use

_info1Text = "Rules"; //Text that will go on info button 1
info1script = {((ctrlParent (_this select 0)) closeDisplay 7777); execvm 'custom\menu\rules_init.sqf';}; //script that info button 1 will use

_info2Text = "Info 2"; //Text that will go on info button 2
info2script = {((ctrlParent (_this select 0)) closeDisplay 7777); createDialog "info2";}; //script that info button 2 will use

_info3Text = "Info 3"; //Text that will go on info button 3
info3script = {((ctrlParent (_this select 0)) closeDisplay 7777); createDialog "info3";}; //script that action info 3 will use

_info4Text = "Info 4"; //Text that will go on info button 4
info4script = {((ctrlParent (_this select 0)) closeDisplay 7777); createDialog "info4";}; //script that action info 4 will use


///////////////////////////////////////////////
//////////////DEPLOYABLES/////////////////////
/////////////////////////////////////////////

_deployable1Text = "Bike"; //Text that will go on deployable button 1
_deploy1item1Text = "ToolBox"; //Text that will go in the number 1 item slot under the first deploy button 
_deploy1item2Text = ""; //Text that will go in the number 2 item slot under the first deploy button 
_deploy1item3Text = ""; //Text that will go in the number 3 item slot under the first deploy button 
_deploy1item4Text = ""; //Text that will go in the number 4 item slot under the first deploy button 
_deploy1item5Text = ""; //Text that will go in the number 5 item slot under the first deploy button 

deployableBike = {
    ((ctrlParent (_this select 0)) closeDisplay 7777),                           // this command close the dialog
    [0] execVM "scripts\deployAnything\deploy.sqf";                               // execute the scipt
};

_deployable2Text = "Mi171 Sh"; //Text that will go on deployable button 2
_deploy2item1Text = "Part Generic"; //Text that will go in the number 1 item slot under the Second deploy button 
_deploy2item2Text = "Part Generic"; //Text that will go in the number 2 item slot under the Second deploy button 
_deploy2item3Text = ""; //Text that will go in the number 3 item slot under the Second deploy button 
_deploy2item4Text = ""; //Text that will go in the number 4 item slot under the Second deploy button 
_deploy2item5Text = ""; //Text that will go in the number 5 item slot under the Second deploy button 

deployableChopper = {
    ((ctrlParent (_this select 0)) closeDisplay 7777),                           // this command close the dialog
    [2] execVM "scripts\deployAnything\deploy.sqf";                               // execute the scipt
};

_deployable3Text = "HMMWV"; //Text that will go on deployable button 3
_deploy3item1Text = "Part wheel"; //Text that will go in the number 1 item slot under the third deploy button 
_deploy3item2Text = "Part Wheel"; //Text that will go in the number 2 item slot under the third deploy button 
_deploy3item3Text = ""; //Text that will go in the number 3 item slot under the third deploy button 
_deploy3item4Text = ""; //Text that will go in the number 4 item slot under the third deploy button 
_deploy3item5Text = ""; //Text that will go in the number 5 item slot under the third deploy button 

deployableHmmvw = {
    ((ctrlParent (_this select 0)) closeDisplay 7777),                           // this command close the dialog
    [3] execVM "scripts\deployAnything\deploy.sqf";                               // execute the scipt
};


createDialog "menu";


////////////////////////////////
//DO NOT EDIT BELLOW THIS LINE//
////////////////////////////////
fnc_update_all_text = {
_finddialog = findDisplay 7777;
(_finddialog displayCtrl 1609) ctrlSetText format["%1",_action1Text];
(_finddialog displayCtrl 1610) ctrlSetText format["%1",_action2Text];
(_finddialog displayCtrl 1611) ctrlSetText format["%1",_info1Text];
(_finddialog displayCtrl 1612) ctrlSetText format["%1",_info2Text];
(_finddialog displayCtrl 1613) ctrlSetText format["%1",_info3Text];
(_finddialog displayCtrl 1618) ctrlSetText format["%1",_info4Text];
(_finddialog displayCtrl 1614) ctrlSetText format["%1",_deployable1Text];
(_finddialog displayCtrl 1615) ctrlSetText format["%1",_deployable2Text];
(_finddialog displayCtrl 1616) ctrlSetText format["%1",_deployable3Text];
(_finddialog displayCtrl 1007) ctrlSetText format["%1",_deploy1item1Text];
(_finddialog displayCtrl 1008) ctrlSetText format["%1",_deploy1item2Text];
(_finddialog displayCtrl 1009) ctrlSetText format["%1",_deploy1item3Text];
(_finddialog displayCtrl 1010) ctrlSetText format["%1",_deploy1item4Text];
(_finddialog displayCtrl 1011) ctrlSetText format["%1",_deploy1item5Text];
(_finddialog displayCtrl 1012) ctrlSetText format["%1",_deploy2item1Text];
(_finddialog displayCtrl 1013) ctrlSetText format["%1",_deploy2item2Text];
(_finddialog displayCtrl 1014) ctrlSetText format["%1",_deploy2item3Text];
(_finddialog displayCtrl 1015) ctrlSetText format["%1",_deploy2item4Text];
(_finddialog displayCtrl 1016) ctrlSetText format["%1",_deploy2item5Text];
(_finddialog displayCtrl 1017) ctrlSetText format["%1",_deploy3item1Text];
(_finddialog displayCtrl 1018) ctrlSetText format["%1",_deploy3item2Text];
(_finddialog displayCtrl 1019) ctrlSetText format["%1",_deploy3item3Text];
(_finddialog displayCtrl 1020) ctrlSetText format["%1",_deploy3item4Text];
(_finddialog displayCtrl 1021) ctrlSetText format["%1",_deploy3item5Text]; 
(_finddialog displayCtrl 1001) ctrlSetText format["%1",_websiteUrl];
(_finddialog displayCtrl 1002) ctrlSetText format["%1",_ts3IP];
(_finddialog displayCtrl 10003) ctrlSetText format["%1",_ts3IP];
(_finddialog displayCtrl 1000) ctrlSetText format["%1 Menu",_serverName];
};

call fnc_update_all_text;

 

 

very nice! good work.

Share this post


Link to post
Share on other sites
On 9/3/2018 at 6:32 AM, Mig said:

tested and functional.

menu_init.sqf :

  Reveal hidden contents


disableSerialization;
///////////////////
//////Config//////
/////////////////

_serverName = "Your Gaming Community"; // the server name that will go accross the top of the menu

_ts3IP = "TS3 - TS3.yoursite.com"; // ts3 ip that will go at the bottom of the menu

_websiteUrl = "www.yoursite.com"; // website url that goes at the bottom of the menu 


////////////////////////////////////////////
////////////////////ACTIONS////////////////
//////////////////////////////////////////

_action1Text = "Suicide"; //Text that will go on action button 1
action1script = {((ctrlParent (_this select 0)) closeDisplay 7777); execvm 'custom\menu\scripts\suicide.sqf';}; //script that action button 1 will use

_action2Text = "Action 2"; //Text that will go on action button 2
action2script = {((ctrlParent (_this select 0)) closeDisplay 7777); execvm 'custom\menu\scripts\yourscript.sqf';}; //script that action button 2 will use

_info1Text = "Rules"; //Text that will go on info button 1
info1script = {((ctrlParent (_this select 0)) closeDisplay 7777); execvm 'custom\menu\rules_init.sqf';}; //script that info button 1 will use

_info2Text = "Info 2"; //Text that will go on info button 2
info2script = {((ctrlParent (_this select 0)) closeDisplay 7777); createDialog "info2";}; //script that info button 2 will use

_info3Text = "Info 3"; //Text that will go on info button 3
info3script = {((ctrlParent (_this select 0)) closeDisplay 7777); createDialog "info3";}; //script that action info 3 will use

_info4Text = "Info 4"; //Text that will go on info button 4
info4script = {((ctrlParent (_this select 0)) closeDisplay 7777); createDialog "info4";}; //script that action info 4 will use


///////////////////////////////////////////////
//////////////DEPLOYABLES/////////////////////
/////////////////////////////////////////////

_deployable1Text = "Bike"; //Text that will go on deployable button 1
_deploy1item1Text = "ToolBox"; //Text that will go in the number 1 item slot under the first deploy button 
_deploy1item2Text = ""; //Text that will go in the number 2 item slot under the first deploy button 
_deploy1item3Text = ""; //Text that will go in the number 3 item slot under the first deploy button 
_deploy1item4Text = ""; //Text that will go in the number 4 item slot under the first deploy button 
_deploy1item5Text = ""; //Text that will go in the number 5 item slot under the first deploy button 

deployableBike = {
    ((ctrlParent (_this select 0)) closeDisplay 7777),                           // this command close the dialog
    [0] execVM "scripts\deployAnything\deploy.sqf";                               // execute the scipt
};

_deployable2Text = "Mi171 Sh"; //Text that will go on deployable button 2
_deploy2item1Text = "Part Generic"; //Text that will go in the number 1 item slot under the Second deploy button 
_deploy2item2Text = "Part Generic"; //Text that will go in the number 2 item slot under the Second deploy button 
_deploy2item3Text = ""; //Text that will go in the number 3 item slot under the Second deploy button 
_deploy2item4Text = ""; //Text that will go in the number 4 item slot under the Second deploy button 
_deploy2item5Text = ""; //Text that will go in the number 5 item slot under the Second deploy button 

deployableChopper = {
    ((ctrlParent (_this select 0)) closeDisplay 7777),                           // this command close the dialog
    [2] execVM "scripts\deployAnything\deploy.sqf";                               // execute the scipt
};

_deployable3Text = "HMMWV"; //Text that will go on deployable button 3
_deploy3item1Text = "Part wheel"; //Text that will go in the number 1 item slot under the third deploy button 
_deploy3item2Text = "Part Wheel"; //Text that will go in the number 2 item slot under the third deploy button 
_deploy3item3Text = ""; //Text that will go in the number 3 item slot under the third deploy button 
_deploy3item4Text = ""; //Text that will go in the number 4 item slot under the third deploy button 
_deploy3item5Text = ""; //Text that will go in the number 5 item slot under the third deploy button 

deployableHmmvw = {
    ((ctrlParent (_this select 0)) closeDisplay 7777),                           // this command close the dialog
    [3] execVM "scripts\deployAnything\deploy.sqf";                               // execute the scipt
};


createDialog "menu";


////////////////////////////////
//DO NOT EDIT BELLOW THIS LINE//
////////////////////////////////
fnc_update_all_text = {
_finddialog = findDisplay 7777;
(_finddialog displayCtrl 1609) ctrlSetText format["%1",_action1Text];
(_finddialog displayCtrl 1610) ctrlSetText format["%1",_action2Text];
(_finddialog displayCtrl 1611) ctrlSetText format["%1",_info1Text];
(_finddialog displayCtrl 1612) ctrlSetText format["%1",_info2Text];
(_finddialog displayCtrl 1613) ctrlSetText format["%1",_info3Text];
(_finddialog displayCtrl 1618) ctrlSetText format["%1",_info4Text];
(_finddialog displayCtrl 1614) ctrlSetText format["%1",_deployable1Text];
(_finddialog displayCtrl 1615) ctrlSetText format["%1",_deployable2Text];
(_finddialog displayCtrl 1616) ctrlSetText format["%1",_deployable3Text];
(_finddialog displayCtrl 1007) ctrlSetText format["%1",_deploy1item1Text];
(_finddialog displayCtrl 1008) ctrlSetText format["%1",_deploy1item2Text];
(_finddialog displayCtrl 1009) ctrlSetText format["%1",_deploy1item3Text];
(_finddialog displayCtrl 1010) ctrlSetText format["%1",_deploy1item4Text];
(_finddialog displayCtrl 1011) ctrlSetText format["%1",_deploy1item5Text];
(_finddialog displayCtrl 1012) ctrlSetText format["%1",_deploy2item1Text];
(_finddialog displayCtrl 1013) ctrlSetText format["%1",_deploy2item2Text];
(_finddialog displayCtrl 1014) ctrlSetText format["%1",_deploy2item3Text];
(_finddialog displayCtrl 1015) ctrlSetText format["%1",_deploy2item4Text];
(_finddialog displayCtrl 1016) ctrlSetText format["%1",_deploy2item5Text];
(_finddialog displayCtrl 1017) ctrlSetText format["%1",_deploy3item1Text];
(_finddialog displayCtrl 1018) ctrlSetText format["%1",_deploy3item2Text];
(_finddialog displayCtrl 1019) ctrlSetText format["%1",_deploy3item3Text];
(_finddialog displayCtrl 1020) ctrlSetText format["%1",_deploy3item4Text];
(_finddialog displayCtrl 1021) ctrlSetText format["%1",_deploy3item5Text]; 
(_finddialog displayCtrl 1001) ctrlSetText format["%1",_websiteUrl];
(_finddialog displayCtrl 1002) ctrlSetText format["%1",_ts3IP];
(_finddialog displayCtrl 10003) ctrlSetText format["%1",_ts3IP];
(_finddialog displayCtrl 1000) ctrlSetText format["%1 Menu",_serverName];
};

call fnc_update_all_text;

 

 

Hi,

this doesn't work for me.

It closes the Dialog but it does not execute the deploy anything correctly.

Furthermore I think there is a typo in your code: 

((ctrlParent (_this select 0)) closeDisplay 7777);                           // this command close the dialog
[0] execVM "scripts\deployAnything\deploy.sqf";                            // execute the scipt

instead of

((ctrlParent (_this select 0)) closeDisplay 7777),                           // this command close the dialog
[0] execVM "scripts\deployAnything\deploy.sqf";                          // execute the scipt

This is my customs/menu/menu_init.sqf:

deployable1script = {((ctrlParent (_this select 0)) closeDisplay 7777); [0] execVM 'scripts\deployAnything\deploy.sqf';};

This is a excerpt from my scripts/deployAnything/config.sqf:

DZE_DEPLOYABLES_CONFIG = [
	["ItemToolbox",[0,6,1],5,0.1,false,false,false,false,false,true,true,["MMT_Civ"],[],["ItemToolbox"],"true"],
	["ItemToolbox",[0,6,1],5,0.1,false,false,false,false,false,true,true,["CSJ_GyroC"],[],["ItemToolbox", "PartEngine", "ItemJerrycan", "PartVRotor", "PartGeneric"],"true"],
	["ItemToolbox",[0,9,2],5,0.9,true,true,false,true,true,false,true,["HeliHCivil"],[],["ItemRuby", "ItemSapphire"],"true"]
];

Does anybody know where the fault could be? I think it is the parameter for the execVM :/

Share this post


Link to post
Share on other sites

Hi, thanks for your reply.

I get with exactly your code this error

Error in expression <getDeployableClass = {
(DZE_DEPLOYABLES select _this) select 11
};

getDeployabl>
  Error position: <select _this) select 11
};

getDeployabl>
  Error select: Typ Array, erwartet Zahl,Bool
File mpmissions\__CUR_MP.Chernarus\scripts\deployAnything\wrapper.sqf, line 60

 

Moreover what is the parameter for in:

[0] execVM "scripts\deployAnything\deploy.sqf";

I assumed it is the row of the DZE_DEPLOYABLES_CONFIG-Array. Is this correct?

Share this post


Link to post
Share on other sites

Hi, thank you for your help :)

scripts\deployAnything

scripts\deployAnything\config.sqf:

Spoiler
//  **FORMAT** -- (note no comma after last array entry)
//
//  DZE_DEPLOYABLES_CONFIG = [
//      [_clickItem,_deployOffset,_packDistance,_damageLimit,_packAny,_cargo,_ammo,_hive,_plot,_simulation,_road,_deployables,_near,_parts,_condition],
//      [_clickItem,_deployOffset,_packDistance,_damageLimit,_packAny,_cargo,_ammo,_hive,_plot,_simulation,_road,_deployables,_near,_parts,_condition],
//      [...more stuff here...]
//  ];
//    
//  parameter    | description                                                         |  type  | example
// --------------|---------------------------------------------------------------------|--------|--------
// _clickItem    | class name of the item to click on                                  | string | "ItemToolbox"
// _deployOffset | [_side,_front,_up] array to offset the deployable when buiding      | array  | [0,2,1]
// _packDistance | how close does the packer need to be to pack the object?            | number | 5
// _damageLimit  | item can't be repacked if damage is > this. (-1 = no re-packing)    | number | 0.1
// _packAny      | can anyone repack the deployable?                                   | bool   | false
// _cargo        | clear the cargo of the deployable?                                  | bool   | false
// _ammo         | should vehicle ammo be cleared? (does not persist through restart)  | bool   | true
// _hive         | write deployable to database?                                       | bool   | false
// _plot         | require a plot from the owner to build the deployable?              | bool   | false
// _simulation   | enable simulation (movement/damage) for the object? (true for cars) | bool   | true
// _road         | enable road building for this object?                               | bool   | true
// _deployables  | array of class names that can be deployed with this method          | array  | ["MMT_Civ"]
// _near         | array of items required nearby to build (workshop/fire/fueltank)    | array  | []
// _parts        | array of parts required to build (will be taken from player)        | array  | ["ItemToolbox"]
// _condition    | string of code to evaluate to determine whether action is shown     | string | "!(isNull player) && {(getPlayerUID player) in DZE_DEPLOYABLE_ADMINS}"

DZE_DEPLOYABLES_CONFIG = [
	["ItemToolbox",[0,6,1],5,0.1,false,false,false,false,false,true,true,["MMT_Civ"],[],["ItemToolbox"],"true"],
	["ItemToolbox",[0,6,1],5,0.1,false,false,false,false,false,true,true,["CSJ_GyroC"],[],["ItemToolbox", "PartEngine", "ItemJerrycan", "PartVRotor", "PartGeneric"],"true"],
	["ItemToolbox",[0,9,2],5,0.9,true,true,false,true,true,false,true,["HeliHCivil"],[],["ItemRuby", "ItemSapphire"],"true"]
];

DZE_DEPLOYABLE_NAME_MAP = [
    ["Notebook","Macbook Pro"]
];

DZE_DEPLOYABLE_ADMINS = [];

 

scripts\deployAnything\deploy.sqf:

Spoiler
private["_exitWith","_position","_display","_object","_handle"];

_exitWith = "nil";

// close the gear display when player starts to deploy
disableSerialization;
_display = findDisplay 106;
if(!(isNull _display)) then {
    _display closeDisplay 0;
};

// check these conditions to make sure it's okay to start deploying, if it's not, we'll get a message back
{
    if(_x select 0) exitWith {
        _exitWith = (_x select 1);
    };
} forEach [
    [(getPlayerUID player) in DZE_DEPLOYABLE_ADMINS,          "admin"],
    [!([player,_this] call getHasDeployableParts),     format["You need %1 to build %2",str (_this call getDeployableParts),(_this call getDeployableDisplay)]],
    [!(call fnc_can_do),                               format["You can't build a %1 right now.",(_this call getDeployableDisplay)]],
    [(player getVariable["inCombat",false]), format["Can't build a %1 while in combat!",(_this call getDeployableDisplay)]],
    [DZE_DEPLOYING,                                           "You are already building something!"],
    [DZE_PACKING,                                             "You are already packing something!"]
];

// if we got an error message, show it and leave the script
if(_exitWith != "nil" && _exitWith != "admin") exitWith {
    taskHint [_exitWith, DZE_COLOR_DANGER, "taskFailed"];
};

// now we're deploying!
DZE_DEPLOYING = true;
DZE_DEPLOYING_SUCCESSFUL = false;
_handle = (_this call getDeployableClass) spawn player_deploy;
waitUntil{scriptDone _handle;};

DZE_DEPLOYING = false;
// if we got an error message, show it and leave the script
if(!DZE_DEPLOYING_SUCCESSFUL) then {
    taskHint ["Deploying Failed!", DZE_COLOR_DANGER, "taskFailed"];
} else {
    // congrats!
    taskHint [format["You've built a %1!",(_this call getDeployableDisplay)], DZE_COLOR_PRIMARY, "taskDone"];

    sleep 10;

    // notify of despawn if it's not a permanent vehicle
    if (!(_this call getPermanent)) then { 
        cutText ["Warning: Deployed vehicles DO NOT SAVE after server restart!", "PLAIN DOWN"]; 
    } else {
        cutText ["This vehicle is permanent and will persist through server restarts!", "PLAIN DOWN"]; 
    };
};

 

scripts\deployAnything\functions.sqf:

Spoiler
// this function checks if play is on ladder/passed out/being drug
fnc_can_do = {
    private["_onLadder"];
    _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
    (!r_drag_sqf and !r_player_unconscious and !_onLadder)
};

// this goes through a crafting animation until the loop is interrupted until interrupted by a set of conditions fed to the function
// it then returns the result of what broke the loop, or "nil" -- yes, string of "nil" -- if not broken
fnc_bike_crafting_animation = {
    private["_dis","_sfx","_isLoopDone","_isAnimationStarted","_isAnimationCompleted","_animationState","_isAnimationActive","_exitWith"];

    _dis=10;
    _sfx = "repair";
    [player,_sfx,0,false,_dis] call dayz_zombieSpeak;
    [player,_dis,true,(getPosATL player)] spawn player_alertZombies;

    player playActionNow "Medic";
    r_interrupt = false;
    _isLoopDone = false;
    _isAnimationStarted = false;
    _isAnimationCompleted = false;
    _animationState = animationState player;
    _isAnimationActive = false;
    _exitWith = "nil";

    while {!_isLoopDone} do {
        _animationState = animationState player;
        _isAnimationActive = ["medic",_animationState] call fnc_inString;
        if (_isAnimationActive) then {
            _isAnimationStarted = true;
        };
        if (_isAnimationStarted and !_isAnimationActive) then {
            _isLoopDone = true;
            _isAnimationCompleted = true;
        };
        {
            if(call compile (_x select 0)) exitWith {
                _exitWith = _x select 1;
            };
        } forEach _this;
        if (_exitWith != "nil") then {
            _isLoopDone = true;
            player switchMove "";
            player playActionNow "stop";
        };
        sleep 0.3;
    };
    _exitWith
};

fnc_set_temp_deployable_id = {
    _this setVariable ["DeployedBy",call fnc_temp_deployable_id, true]; 
};

fnc_set_perm_deployable_id = {
    _this setVariable ["CharacterID",call fnc_perm_deployable_id, true]; 
};

fnc_get_perm_deployable_id = {
    private["_return","_parse"];
    _return = _this getVariable ["CharacterID","0"];
    _parse = parseNumber _return;
    if(_parse < 500000) then {
        _return = "nil";
    };
    _return
};

fnc_get_temp_deployable_id = {
    _this getVariable ["DeployedBy","nil"]
};

fnc_perm_deployable_id = {
    private["_calc","_return"];
    _calc = 999999 - (parseNumber dayz_characterID);
    if(_calc < 500000) then {
        _return = "nil";
    } else {
        _return = (str _calc);
    };
   _return
};

fnc_temp_deployable_id = {
    getPlayerUID player  
};

 

scripts\deployAnything\init.sqf:

Spoiler
// included compiles
call compile preprocessFileLineNumbers "scripts\deployAnything\config.sqf";
call compile preprocessFileLineNumbers "scripts\deployAnything\wrapper.sqf";
call compile preprocessFileLineNumbers "scripts\deployAnything\functions.sqf";

DZE_DEPLOYABLE_VERSION = "2.8.2";
DZE_CRV_DEPLOYABLE = 3;

diag_log text format["BIKE: loading version %1 ...",DZE_DEPLOYABLE_VERSION];

player_deploy = compile preprocessFileLineNumbers "addons\bike\player_deploy.sqf";

// inflate deployables
DZE_DEPLOYABLES = [];
{
    private["_class","_distance","_deployables","_packDist","_packOthers","_clearCargo","_clearAmmo","_permanent","_damage","_needNear","_parts","_requirePlot","_enableSim","_road","_condition"];
    _class       = _x select 0;
    _distance    = _x select 1;
    _packDist    = _x select 2;
    _damage      = _x select 3;
    _packOthers  = _x select 4;
    _clearCargo  = _x select 5;
    _clearAmmo   = _x select 6;
    _permanent   = _x select 7;
    _requirePlot = _x select 8;
    _enableSim   = _x select 9;
    _road        = _x select 10;
    _deployables = _x select 11;
    _needNear    = _x select 12;
    _parts       = _x select 13;
    _condition   = _x select 14;
    {
        DZE_DEPLOYABLES set [count DZE_DEPLOYABLES,[_class,_distance,_packDist,_damage,_packOthers,_clearAmmo,_permanent,_x,_needNear,_parts,_requirePlot,_enableSim,_road,_condition,_clearCargo]];
    } forEach _deployables;
} forEach DZE_DEPLOYABLES_CONFIG;

// if server then we only need to define the safe vehicles for each deployable
if (isServer) exitWith {
    diag_log text "BIKE: adding bike to safe vehicle list...";
    {
        DZE_safeVehicle = DZE_safeVehicle + [(_forEachIndex call getDeployableClass)];
        if(!(_forEachIndex call getDeployableSimulation)) then {
            DayZ_SafeObjects set [count DayZ_SafeObjects,(_forEachIndex call getDeployableClass)];
        };
    } forEach DZE_DEPLOYABLES;
    //diag_log text format["BIKE: done patching DZE_safeVehicle: %1",str DZE_safeVehicle];
    //diag_log text format["BIKE: done patching DayZ_SafeObjects: %1",str DayZ_SafeObjects];
};

[] spawn {

    // call dependency
    call compile preprocessFileLineNumbers "scripts\clickActions\init.sqf";
    if (!(isServer) && {isNil "DZE_CLICK_ACTIONS_BUILD"}) exitWith {
        diag_log text "BIKE: ERROR -- Click Actions Handler missing!";
    };
    if (!(isServer) && {DZE_CLICK_ACTIONS_BUILD != DZE_CRV_DEPLOYABLE}) exitWith {
        diag_log text format["BIKE: ERROR -- Click Actions Handler loaded build #%1! Required build #%2!",DZE_CLICK_ACTIONS_BUILD,DZE_CRV_DEPLOYABLE];
    };

    // register actions with the click actions handler
    {DZE_CLICK_ACTIONS = DZE_CLICK_ACTIONS + [[(_forEachIndex call getDeployableKitClass),format["Deploy %1",(_forEachIndex call getDeployableDisplay)],format["%1 execVM 'addons\bike\deploy.sqf';",_forEachIndex],(_forEachIndex call getDeployableCondition)]];} forEach DZE_DEPLOYABLES;
    DZE_DEPLOYING      = false;
    DZE_PACKING        = false;
    
    // colors for formatting messages
    DZE_COLOR_PRIMARY = [(51/255),(181/255),(229/255),1];
    DZE_COLOR_SUCCESS = [(153/255),(204/255),0,1];
    DZE_COLOR_DANGER  = [1,(68/255),(68/255),1];
    

    // wait for login before we start checking actions
    diag_log text "BIKE: waiting for login...";
    waitUntil{!isNil "Dayz_loginCompleted"};

    // unlock locked deployable vehicles
    [] spawn {
        waitUntil {sm_done;};
        {
            if (parseNumber(_x getVariable["CharacterID","0"]) > 500000) then {
				[_x,false] call local_lockUnlock;
            };
        } forEach vehicles;
    };

    while {true} do {
        if(!isNull player) then {
            {   
                private ["_cursorTarget"];
                _cursorTarget = cursorTarget;
                //make sure all of these conditions pass before adding any actions -- shouldn't be too laggy since it's called every 2s rather than every frame like normal actions
                if(!(isNull _cursorTarget)
                        && {_forEachIndex call getDeployablePackAny} 
                        && {typeOf _cursorTarget == (_forEachIndex call getDeployableClass)} 
                        && {call fnc_can_do} 
                        && {(((_cursorTarget call fnc_get_temp_deployable_id) != "nil") || ((_cursorTarget call fnc_get_perm_deployable_id) != "nil"))}
                        && {(
                            ((_cursorTarget call fnc_get_perm_deployable_id) == (call fnc_perm_deployable_id))
                            || ((_cursorTarget call fnc_get_temp_deployable_id) == (call fnc_temp_deployable_id))
                            || (_forEachIndex call getDeployablePackOthers)
                            || ((getPlayerUID player) in DZE_DEPLOYABLE_ADMINS)
                        )} 
                        && {(player distance _cursorTarget) < (_forEachIndex call getDeployablePackDistance)}) then {
                    if ((_forEachIndex call getActionId) < 0) then {
                        [_forEachIndex,player addaction["<t color='#33b5e5'>" + format["Pack %1",(_forEachIndex call getDeployableDisplay)] + "</t>","addons\bike\pack.sqf",[_forEachIndex,_cursorTarget],0,false,true,"", ""]] call setActionId;
                    };
                } else {
                    player removeAction (_forEachIndex call getActionId);
                    [_forEachIndex,-1] call setActionId;
                };
                //if((_forEachIndex call getActionId) > -1) exitWith {};
            } forEach DZE_DEPLOYABLES;
        };
        sleep 2.5;
    };

};

 

scripts\deployAnything\pack.sqf:

Spoiler
private["_isPackingLocked","_lastPackTime","_exitWith","_deployable","_cursorTarget"];

// set up all these variables
_exitWith = "nil";
_deployable = (_this select 3) select 0;
_cursorTarget = (_this select 3) select 1;
_lastPackTime = _cursorTarget getVariable["lastPackTime",diag_tickTime - 11];
_isPackingLocked = diag_tickTime - _lastPackTime < 10;

// check these conditions to make sure it's okay to start packing, if it's not, we'll get a message back
{
    if(_x select 0) exitWith {
        _exitWith = (_x select 1);
    };
} forEach [
    [(getPlayerUID player) in DZE_DEPLOYABLE_ADMINS,                   "admin"],
    [!(call fnc_can_do),                                        format["You can't pack your %1 right now.",(_deployable call getDeployableDisplay)]],
    [(player getVariable["inCombat",false]),          format["Can't pack a %1 while in combat!",(_deployable call getDeployableDisplay)]],
    [(damage cursorTarget > (_deployable call getDamageLimit)), format["The %1 must be under %2 percent damaged to pack!",(_deployable call getDeployableDisplay),(_deployable call getDamageLimit) * 100]],      
    [_isPackingLocked,                                          format["Someone just tried to pack that %1! Try again in a few seconds.",(_deployable call getDeployableDisplay)]],
    [DZE_PACKING,                                                      "You are already packing something!"],
    [DZE_DEPLOYING,                                                    "You are already building something!"]
];

// if we got an error message, show it and leave the script
if(_exitWith != "nil" && _exitWith != "admin") exitWith {
    taskHint [_exitWith, DZE_COLOR_DANGER, "taskFailed"];
};

// now we're packing it, also make the whole server knows we're packing it, so nobody else can
_cursorTarget setVariable["lastPackTime",diag_tickTime,true];
DZE_PACKING = true;

// do the crafting animation until we either finish it or one of these conditions is broken
_exitWith = [
    ["(getPlayerUID player) in DZE_DEPLOYABLE_ADMINS",          "admin"],
    ["r_interrupt",                                      format["Packing %1 interrupted!",(_deployable call getDeployableDisplay)]],
    ["(player getVariable['inCombat',false])", format["Can't pack a %1 while in combat!",(_deployable call getDeployableDisplay)]]
] call fnc_bike_crafting_animation;

// if we got an error message, show it and leave the script
if(_exitWith != "nil" && _exitWith != "admin") exitWith {
    DZE_PACKING = false;
    taskHint [_exitWith, DZE_COLOR_DANGER, "taskFailed"];
};

// give the stuff back and delete the vehicle
{
    if(isClass(configFile >> "CfgWeapons" >> _x)) then {
        player addWeapon _x;
    };
    if(isClass(configFile >> "CfgMagazines" >> _x)) then {
        player addMagazine _x;
    };
} forEach (_deployable call getDeployableParts);

if(_deployable call getPermanent) then {
    PVDZ_obj_Destroy = [_cursorTarget getVariable["ObjectID","0"],_cursorTarget getVariable["ObjectUID","0"],player];
    publicVariableServer "PVDZ_obj_Destroy";
};

_cursorTarget setPos [0,0,0];
deleteVehicle _cursorTarget;
player removeAction (_deployable call getActionId);
[_deployable,-1] call setActionId;
DZE_PACKING = false;

// congrats!
taskHint [format["You packed %1 back into your %2.",(_deployable call getDeployableDisplay),(_deployable call getDeployableKitDisplay)], DZE_COLOR_PRIMARY, "taskDone"];

 

scripts\deployAnything\player_deploy.sqf:

Spoiler
/*
    DayZ Base Building
    Made for DayZ Epoch please ask permission to use/edit/distrubute email [email protected]
*/
private ["_location","_dir","_classname","_item","_hasrequireditem","_missing","_hastoolweapon","_cancel","_reason","_started","_finished","_animState","_isMedic","_dis","_sfx","_hasbuilditem","_tmpbuilt","_onLadder","_require","_text","_offset","_IsNearPlot","_isOk","_location1","_location2","_counter","_limit","_proceed","_num_removed","_position","_object","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_findNearestPoles","_findNearestPole","_distance","_classnametmp","_ghost","_isPole","_needText","_lockable","_zheightchanged","_rotate","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display","_combinationDisplay","_zheightdirection","_abort","_isNear","_need","_needNear","_vehicle","_inVehicle","_requireplot","_objHDiff","_isLandFireDZ","_isTankTrap"];

if(dayz_actionInProgress) exitWith { localize "str_epoch_player_40" call dayz_rollingMessages; };
dayz_actionInProgress = true;

// disallow building if too many objects are found within 30m
_buildables = DZE_maintainClasses + DZE_LockableStorage + ["DZ_buildables","DZ_storage_base"];
if (count (nearestObjects [getPosATL player,_buildables,30]) >= DZE_BuildingLimit) exitWith {dayz_actionInProgress = false; format[localize "str_epoch_player_41",30] call dayz_rollingMessages;};

_onLadder =     (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_cancel = false;
_reason = "";
_canBuildOnPlot = false;

_vehicle = vehicle player;
_inVehicle = (_vehicle != player);

DZE_Q = false;
DZE_Z = false;

DZE_Q_alt = false;
DZE_Z_alt = false;

DZE_Q_ctrl = false;
DZE_Z_ctrl = false;

DZE_5 = false;
DZE_4 = false;
DZE_6 = false;

DZE_cancelBuilding = false;

call gear_ui_init;
closeDialog 1;

if (dayz_isSwimming) exitWith {dayz_actionInProgress = false; localize "str_player_26" call dayz_rollingMessages;};
if (_inVehicle) exitWith {dayz_actionInProgress = false; localize "str_epoch_player_42" call dayz_rollingMessages;};
if (_onLadder) exitWith {dayz_actionInProgress = false; localize "str_player_21" call dayz_rollingMessages;};
if (player getVariable["combattimeout",0] >= diag_tickTime) exitWith {dayz_actionInProgress = false; localize "str_epoch_player_43" call dayz_rollingMessages;};

_item = _this;

// Need Near Requirements
_abort = false;
_reason = "";

//### BEGIN MODIFIED CODE: player_deploy
//_needNear =     getArray (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "neednearby");
private["_index"];
_index = _this call getDeployableIndex;
_needNear = _index call getDeployableNeedNearBy;
//### END MODIFIED CODE: player_deploy

{
    switch(_x) do{
        case "fire":
        {
            _distance = 3;
            _isNear = {inflamed _x} count (getPosATL player nearObjects _distance);
            if(_isNear == 0) then {
                _abort = true;
                _reason = "fire";
            };
        };
        case "workshop":
        {
            _distance = 3;
            _isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]);
            if(_isNear == 0) then {
                _abort = true;
                _reason = "workshop";
            };
        };
        case "fueltank":
        {
            _distance = 30;
            _isNear = count (nearestObjects [player, dayz_fuelsources, _distance]);
            if(_isNear == 0) then {
                _abort = true;
                _reason = "fuel tank";
            };
        };
    };
} forEach _needNear;


if(_abort) exitWith {
    cutText [format[(localize "str_epoch_player_135"),_reason,_distance], "PLAIN DOWN"];
    dayz_actionInProgress = false;
};

//### BEGIN MODIFIED CODE: player_deploy
//_classname =    getText (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "create");
//_classnametmp = _classname;
//_require =  getArray (configFile >> "cfgMagazines" >> _this >> "ItemActions" >> "Build" >> "require");
//_text =         getText (configFile >> "CfgVehicles" >> _classname >> "displayName");
//_ghost = getText (configFile >> "CfgVehicles" >> _classname >> "ghostpreview");
_classname      = _index call getDeployableClass;
_classnametmp   = _classname;
_require        = [];
_text           = _index call getDeployableDisplay;
_ghost          = "";
//### END MODIFIED CODE: player_deploy

_lockable = 0;
if(isNumber (configFile >> "CfgVehicles" >> _classname >> "lockable")) then {
    _lockable = getNumber(configFile >> "CfgVehicles" >> _classname >> "lockable");
};

_requireplot = 1;
if(isNumber (configFile >> "CfgVehicles" >> _classname >> "requireplot")) then {
    _requireplot = getNumber(configFile >> "CfgVehicles" >> _classname >> "requireplot");
};
//### BEGIN MODIFIED CODE: player_deploy
if(_index call getDeployableRequirePlot) then {_requireplot = 1;} else {_requireplot = 0;};
//### END MODIFIED CODE: player_deploy

_isAllowedUnderGround = 1;
if(isNumber (configFile >> "CfgVehicles" >> _classname >> "nounderground")) then {
    _isAllowedUnderGround = getNumber(configFile >> "CfgVehicles" >> _classname >> "nounderground");
};

_offset =   getArray (configFile >> "CfgVehicles" >> _classname >> "offset");
if((count _offset) <= 0) then {
    _offset = [0,1.5,0];
};
//### BEGIN MODIFIED CODE: player_deploy
_offset = _index call getDeployableDistanceOffset;
//### END MODIFIED CODE: player_deploy

_isPole = (_classname == "Plastic_Pole_EP1_DZ");
_isLandFireDZ = (_classname == "Land_Fire_DZ");

_distance = DZE_PlotPole select 0;
_needText = localize "str_epoch_player_246";

if(_isPole) then {
    _distance = DZE_PlotPole select 1;
};

// check for near plot
_findNearestPoles = nearestObjects [(vehicle player), ["Plastic_Pole_EP1_DZ"], _distance];
_findNearestPole = [];

{
    if (alive _x) then {
        _findNearestPole set [(count _findNearestPole),_x];
    };
} count _findNearestPoles;

_IsNearPlot = count (_findNearestPole);

// If item is plot pole && another one exists within 45m
if(_isPole && _IsNearPlot > 0) exitWith {  dayz_actionInProgress = false; cutText [(localize "str_epoch_player_44") , "PLAIN DOWN"]; };

private["_exitWith"];
if(_IsNearPlot == 0) then {

    // Allow building of plot
    if(_requireplot == 0 || _isLandFireDZ) then {
        _canBuildOnPlot = true;
    } else {
        _exitWith = (localize "STR_EPOCH_PLAYER_135");
    };

} else {
    // Since there are plots nearby we check for ownership && then for friend status

    // check nearby plots ownership && then for friend status
    _nearestPole = _findNearestPole select 0;

    // Find owner
    _ownerID = _nearestPole getVariable ["CharacterID","0"];

    // diag_log format["DEBUG BUILDING: %1 = %2", dayz_characterID, _ownerID];

    // check if friendly to owner
    if(dayz_characterID == _ownerID) then {  //Keep ownership
        // owner can build anything within his plot except other plots
        if(!_isPole) then {
            _canBuildOnPlot = true;
        } else {
            _exitWith = "You can't build a plot within your plot!";
        };

    } else {
        // disallow building plot
        if(!_isPole) then {
            _friendlies     = player getVariable ["friendlyTo",[]];
            // check if friendly to owner
            if(_ownerID in _friendlies) then {
                _canBuildOnPlot = true;
            } else {
                _exitWith = "You can't build on someone else's plot!";
            };
        };
    };
};

// _message
if(!_canBuildOnPlot) exitWith {  dayz_actionInProgress = false; cutText [format[_exitWith,_needText,_distance] , "PLAIN DOWN"]; };

_missing = "";
_hasrequireditem = true;
{
    _hastoolweapon = _x in weapons player;
    if(!_hastoolweapon) exitWith { _hasrequireditem = false; _missing = getText (configFile >> "cfgWeapons" >> _x >> "displayName"); };
} count _require;
//### BEGIN MODIFIED CODE player_deploy
    _hastoolweapon = (_index call getDeployableKitClass) in ((weapons player) + (magazines player));
    if(!_hastoolweapon) then { _hasrequireditem = false; _missing = (_index call getDeployableKitDisplay); };
//### END MODIFIED CODE: player_deploy

//### BEGIN MODIFIED CODE player_deploy
//_hasbuilditem = _this in magazines player;
//if (!_hasbuilditem) exitWith {dayz_actionInProgress = false; cutText [format[(localize "str_player_31"),_text,"build"] , "PLAIN DOWN"]; };
_hasbuilditem = [player,_index] call getHasDeployableParts;
if (!_hasbuilditem) exitWith {dayz_actionInProgress = false; cutText [format[(localize "str_player_31"),str (_index call getDeployableParts),"build"] , "PLAIN DOWN"]; };
//### END MODIFIED CODE: player_deploy

if (!_hasrequireditem) exitWith {dayz_actionInProgress = false; cutText [format[(localize "str_epoch_player_137"),_missing] , "PLAIN DOWN"]; };
if (_hasrequireditem) then {

    _dir = getdir player;
    _location = getPos player;
    _location = [(_location select 0)+8*sin(_dir),(_location select 1)+8*cos(_dir),0]; 
    //maybe adjust the hight? [x,y,z(0)]
    
    _isOk = true;

    // get inital players position
    _location1 = getPosATL player;
    //_dir = getDir player;

    // if ghost preview available use that instead
    if (_ghost != "") then {
        _classname = _ghost;
    };

    _object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];
    //### BEGIN MODIFIED CODE player_deploy
    _object setVariable["ObjectUID","1",true];

    _object attachTo [player,_offset];

	_position = getPosATL _object;
	
	//_dir = 0;
    _object setDir _dir;
    //### END MODIFIED CODE: player_deploy

    cutText [(localize "str_epoch_player_45"), "PLAIN DOWN"];

    _objHDiff = 0;

    while {_isOk} do {

        _zheightchanged = false;
        _zheightdirection = "";
        _rotate = false;

        if (DZE_Q) then {
            DZE_Q = false;
            _zheightdirection = "up";
            _zheightchanged = true;
        };
        if (DZE_Z) then {
            DZE_Z = false;
            _zheightdirection = "down";
            _zheightchanged = true;
        };
        if (DZE_Q_alt) then {
            DZE_Q_alt = false;
            _zheightdirection = "up_alt";
            _zheightchanged = true;
        };
        if (DZE_Z_alt) then {
            DZE_Z_alt = false;
            _zheightdirection = "down_alt";
            _zheightchanged = true;
        };
        if (DZE_Q_ctrl) then {
            DZE_Q_ctrl = false;
            _zheightdirection = "up_ctrl";
            _zheightchanged = true;
        };
        if (DZE_Z_ctrl) then {
            DZE_Z_ctrl = false;
            _zheightdirection = "down_ctrl";
            _zheightchanged = true;
        };
        if (DZE_4) then {
            _rotate = true;
            DZE_4 = false;
            //###BEGIN MODIFIED CODE: player deploy
            //_dir = 0;
            _dir = _dir + 30;
            //###END MODIFIED CODE: player deploy
        };
        if (DZE_6) then {
            _rotate = true;
            DZE_6 = false;
            //###BEGIN MODIFIED CODE: player deploy
            //_dir = 180;
            _dir = _dir - 30;
            //###END MODIFIED CODE: player deploy
        };

        if(_rotate) then {
            _object setDir _dir;
            _object setPosATL _position;
            //diag_log format["DEBUG Rotate BUILDING POS: %1", _position];
        };

        if(_zheightchanged) then {
            detach _object;

            _position = getPosATL _object;

            if(_zheightdirection == "up") then {
                _position set [2,((_position select 2)+0.1)];
                _objHDiff = _objHDiff + 0.1;
            };
            if(_zheightdirection == "down") then {
                _position set [2,((_position select 2)-0.1)];
                _objHDiff = _objHDiff - 0.1;
            };

            if(_zheightdirection == "up_alt") then {
                _position set [2,((_position select 2)+1)];
                _objHDiff = _objHDiff + 1;
            };
            if(_zheightdirection == "down_alt") then {
                _position set [2,((_position select 2)-1)];
                _objHDiff = _objHDiff - 1;
            };

            if(_zheightdirection == "up_ctrl") then {
                _position set [2,((_position select 2)+0.01)];
                _objHDiff = _objHDiff + 0.01;
            };
            if(_zheightdirection == "down_ctrl") then {
                _position set [2,((_position select 2)-0.01)];
                _objHDiff = _objHDiff - 0.01;
            };

            //###BEGIN MODIFIED CODE: player deploy
            //_object setDir (getDir _object);
            //###END MODIFIED CODE: player deploy

            if((_isAllowedUnderGround == 0) && ((_position select 2) < 0)) then {
                _position set [2,0];
            };

            _object setPosATL _position;

            //diag_log format["DEBUG Change BUILDING POS: %1", _position];

            _object attachTo [player];

            //### BEGIN MODIFIED CODE player_deploy
            _object setDir _dir;
            //### END MODIFIED CODE: player_deploy

        };

        sleep 0.5;

        _location2 = getPosATL player;

        if(DZE_5) exitWith {
            _isOk = false;
            detach _object;
            _dir = getDir _object;
            _position = getPosATL _object;
            //diag_log format["DEBUG BUILDING POS: %1", _position];
            _object setPos[0,0,0];
            deleteVehicle _object;
        };

        if(_location1 distance _location2 > 5) exitWith {
            _isOk = false;
            _cancel = true;
            _reason = "You've moved to far away from where you started building (within 5 meters)";
            detach _object;
            _object setPos[0,0,0];
            deleteVehicle _object;
        };

        if(abs(_objHDiff) > 5) exitWith {
            _isOk = false;
            _cancel = true;
            _reason = "Cannot move up || down more than 5 meters";
            detach _object;
            _object setPos[0,0,0];
            deleteVehicle _object;
        };

        if (player getVariable["inCombat",false]) exitWith {
            _isOk = false;
            _cancel = true;
            _reason = (localize "str_epoch_player_43");
            detach _object;
            _object setPos[0,0,0];
            deleteVehicle _object;
        };

        if (DZE_cancelBuilding) exitWith {
            _isOk = false;
            _cancel = true;
            _reason = "Cancelled building.";
            detach _object;
            _object setPos[0,0,0];
            deleteVehicle _object;
        };
    };

    //### END MODIFIED CODE: road building
    //No building on roads unless toggled
    //if (!DZE_BuildOnRoads) then {
    if (!(_index call getDeployableBuildOnRoad)) then {
    //### END MODIFIED CODE: road building
        if (isOnRoad [_position select 0, _position select 1, 0]) then { _cancel = true; _reason = "Cannot build on a road."; };
    };

    // No building in trader zones
    if(!canbuild) then { _cancel = true; _reason = "Cannot build in a city."; };

    if(!_cancel) then {

        _classname = _classnametmp;

        // Start Build
        _tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];

        //### BEGIN MODIFIED CODE: player deploy
        if (!(_index call getDeployableSimulation)) then {
            _tmpbuilt enableSimulation false;
        };
        _tmpbuilt setVariable ["ObjectUID", "1", true];
        //### END MODIFIED CODE: player deploy

        _tmpbuilt setdir _dir;

        // Get position based on object
        _location = _position;

        if((_isAllowedUnderGround == 0) && ((_location select 2) < 0)) then {
            _location set [2,0];
        };

        _tmpbuilt setPosATL _location;


        cutText [format[(localize "str_epoch_player_138"),_text], "PLAIN DOWN"];

        _limit = 3;

        if (DZE_StaticConstructionCount > 0) then {
            _limit = DZE_StaticConstructionCount;
        }
        else {
            if (isNumber (configFile >> "CfgVehicles" >> _classname >> "constructioncount")) then {
                _limit = getNumber(configFile >> "CfgVehicles" >> _classname >> "constructioncount");
            };
        };

        _isOk = true;
        _proceed = false;
        _counter = 0;

        while {_isOk} do {

            ["Working",0,[100,15,10,0]] call dayz_NutritionSystem;
            player playActionNow "Medic";

            _dis=20;
            _sfx = "repair";
            [player,_sfx,0,false,_dis] call dayz_zombieSpeak;
            [player,_dis,true,(getPosATL player)] spawn player_alertZombies;

            r_interrupt = false;
            r_doLoop = true;
            _started = false;
            _finished = false;

            while {r_doLoop} do {
                _animState = animationState player;
                _isMedic = ["medic",_animState] call fnc_inString;
                if (_isMedic) then {
                    _started = true;
                };
                if (_started && !_isMedic) then {
                    r_doLoop = false;
                    _finished = true;
                };
                if (r_interrupt || (player getVariable["inCombat",false])) then {
                    r_doLoop = false;
                };
                if (DZE_cancelBuilding) exitWith {
                    r_doLoop = false;
                };
                sleep 0.1;
            };
            r_doLoop = false;


            if(!_finished) exitWith {
                _isOk = false;
                _proceed = false;
            };

            if(_finished) then {
                _counter = _counter + 1;
            };

            cutText [format[(localize "str_epoch_player_139"),_text, _counter,_limit], "PLAIN DOWN"];

            if(_counter == _limit) exitWith {
                _isOk = false;
                _proceed = true;
            };

        };

        if (_proceed) then {

            //###BEGIN MODIFIED CODE
            //_num_removed = ([player,_item] call BIS_fnc_invRemove);
            //if(_num_removed == 1) then {
            if([player,_index] call getHasDeployableParts) then {
                [player,_index] call removeDeployableParts;
            //###BEGIN MODIFIED CODE

                cutText [format[localize "str_build_01",_text], "PLAIN DOWN"];

                if (_isPole) then {
                    [] spawn player_plotPreview;
                };

                _tmpbuilt setVariable ["OEMPos",_location,true];

                if(_lockable > 1) then {

                    _combinationDisplay = "";

                    switch (_lockable) do {

                        case 2: { // 2 lockbox
                            _combination_1 = (floor(random 3)) + 100; // 100=red,101=green,102=blue
                            _combination_2 = floor(random 10);
                            _combination_3 = floor(random 10);
                            _combination = format["%1%2%3",_combination_1,_combination_2,_combination_3];
                            dayz_combination = _combination;
                            if (_combination_1 == 100) then {
                                _combination_1_Display = "Red";
                            };
                            if (_combination_1 == 101) then {
                                _combination_1_Display = "Green";
                            };
                            if (_combination_1 == 102) then {
                                _combination_1_Display = "Blue";
                            };
                            _combinationDisplay = format["%1%2%3",_combination_1_Display,_combination_2,_combination_3];
                        };

                        case 3: { // 3 combolock
                            _combination_1 = floor(random 10);
                            _combination_2 = floor(random 10);
                            _combination_3 = floor(random 10);
                            _combination = format["%1%2%3",_combination_1,_combination_2,_combination_3];
                            dayz_combination = _combination;
                            _combinationDisplay = _combination;
                        };

                        case 4: { // 4 safe
                            _combination_1 = floor(random 10);
                            _combination_2 = floor(random 10);
                            _combination_3 = floor(random 10);
                            _combination_4 = floor(random 10);
                            _combination = format["%1%2%3%4",_combination_1,_combination_2,_combination_3,_combination_4];
                            dayz_combination = _combination;
                            _combinationDisplay = _combination;
                        };
                    };

                    _tmpbuilt setVariable ["CharacterID",_combination,true];


                    PVDZ_obj_Publish = [_combination,_tmpbuilt,[_dir,_location],_classname];
                    publicVariableServer "PVDZ_obj_Publish";

                    cutText [format[(localize "str_epoch_player_140"),_combinationDisplay,_text], "PLAIN DOWN", 5];


                } else {
                    //_tmpbuilt setVariable ["CharacterID",dayz_characterID,true];
                    //### BEGIN MODIFIED CODE: player deploy
                    // fire?
                    //if(_tmpbuilt isKindOf "Land_Fire_DZ") then {
                    //    _tmpbuilt spawn player_fireMonitor;
                    //} else {
                    //    PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location],_classname];
                    //    publicVariableServer "PVDZ_obj_Publish";
                    //};
                    if (_index call getPermanent) then {
                        _tmpbuilt call fnc_set_temp_deployable_id;
                        if(_index call getDeployableSimulation) then {
                            PVDZE_veh_Publish2 = [_tmpbuilt,[_dir,_position],(_index call getDeployableClass),true,call fnc_perm_deployable_id];
                            publicVariableServer "PVDZE_veh_Publish2";
                        } else {
                            PVDZ_obj_Publish = [call fnc_perm_deployable_id,_tmpbuilt,[_dir,_position],(_index call getDeployableClass)];
                            publicVariableServer "PVDZ_obj_Publish";
                        };
                    } else {
                        _tmpbuilt call fnc_set_temp_deployable_id;
                    };
                    if(_index call getClearCargo) then {
                        clearWeaponCargoGlobal _tmpbuilt;
                        clearMagazineCargoGlobal _tmpbuilt;
                    };
                    if(_index call getDeployableClearAmmo) then {
                        _tmpbuilt setVehicleAmmo 0;
                    };
                    player reveal _tmpbuilt;
                    DZE_DEPLOYING_SUCCESSFUL = true;
                    //### END MODIFIED CODE: player deploy
                };
            } else {
                _tmpbuilt setPos[0,0,0];
                deleteVehicle _tmpbuilt;
                cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"];
            };

        } else {
            r_interrupt = false;
            if (vehicle player == player) then {
                [objNull, player, rSwitchMove,""] call RE;
                player playActionNow "stop";
            };

            _tmpbuilt setPos[0,0,0];
            deleteVehicle _tmpbuilt;

            cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"];
        };

    } else {
        cutText [format[(localize "str_epoch_player_47"),_text,_reason], "PLAIN DOWN"];
    };
};

dayz_actionInProgress = false;
'_this setVehicleInit "this setVectorUp [0,0,1];";';

 

scripts\deployAnything\wrapper.sqf:

Spoiler
/* this sqf file is used to manipulate the deployable array to work more like a class than an array */

/* this gets the item that makes the deployable */
getDeployableKitClass = {
    (DZE_DEPLOYABLES select _this) select 0
};


/* this gets the distance of the deployable */
getDeployableDistanceOffset = {
    (DZE_DEPLOYABLES select _this) select 1
};

/* this gets the distance a player must be to pack the deployable back up */
getDeployablePackDistance = {
    (DZE_DEPLOYABLES select _this) select 2
};

/* if the damage is higher than this, it can't be packed again */
getDamageLimit = {
    (DZE_DEPLOYABLES select _this) select 3
};

/* should players be allowed to pack deployables placed by others? */
getDeployablePackOthers = {
    (DZE_DEPLOYABLES select _this) select 4
};

/* checks if cargo should be cleared for this item */
getClearCargo = {
    (DZE_DEPLOYABLES select _this) select 5
};

/* should the vehicle be saved permanently to the database */
getPermanent = {
    (DZE_DEPLOYABLES select _this) select 6
};

/* this gets the class of the deployable */
getDeployableClass = {
    (DZE_DEPLOYABLES select _this) select 7
};

getDeployableNeedNearBy = {
    (DZE_DEPLOYABLES select _this) select 8
};

/* the parts required to make this item */
getDeployableParts = {
    (DZE_DEPLOYABLES select _this) select 9
};

/* does the deployable require a plot to build ? */
getDeployableRequirePlot = {
    (DZE_DEPLOYABLES select _this) select 10
};

/* does the object have simulation enabled? */
getDeployableSimulation = {
    (DZE_DEPLOYABLES select _this) select 11
};

/* can the object be built on a road? */
getDeployableBuildOnRoad = {
    (DZE_DEPLOYABLES select _this) select 12
};

/* what condition is used to determine whether or not the player sees the option? */
getDeployableCondition = {
    (DZE_DEPLOYABLES select _this) select 13
};

/* should vehicle ammo be cleared when spawned? */
getDeployableClearAmmo = {
    (DZE_DEPLOYABLES select _this) select 14
};

/* should players be allowed to pack deployables at all? */
getDeployablePackAny = {
    ((_this call getDamageLimit) >= 0) || (!(isNull player) && {(getPlayerUID player) in DZE_DEPLOYABLE_ADMINS});   
};

/* this gets what type of item the kit is*/
getDeployableKitType = {
    private["_return"];
    if(isClass(configFile >> "CfgWeapons" >> (_this call getDeployableKitClass))) then {
        _return = "CfgWeapons";
    } else {
        _return = "CfgMagazines";
    };
    _return
};

/* this is a wrapper function for getting the value of the scroll action */
getActionId = {
  call compile format["
    if (isNil 'DZE_ACTION_DEPLOYABLE_PACK_%1') then {
        DZE_ACTION_DEPLOYABLE_PACK_%1 = -1;
    };
    DZE_ACTION_DEPLOYABLE_PACK_%1
  ",_this];  
};

/* this is a wrapper function for setting the value of the scroll action */
setActionId = {
  call compile format["DZE_ACTION_DEPLOYABLE_PACK_%1 = %2;",_this select 0,_this select 1];  
};

/* this gets the display name of the kit or falls back to class name if unsuccessful */
getDeployableKitDisplay = {
    private["_display"];
    //diag_log text format["BIKE: trying to get display of %1",_this call getDeployableKitClass];
    _display = getText (configFile >> (_this call getDeployableKitType) >> (_this call getDeployableKitClass) >> "displayName");
    //diag_log text format["BIKE: post config lookup: display = %1",_display];
    if((isNil "_display")||_display == "") then {
        _display = (_this call getDeployableKitClass);
    };
    //diag_log text format["BIKE: post patch check: display = %1",_display];
    _display
};

/* this gets the display name of the deployable or falls back to class name if unsuccessful */
getDeployableDisplay = {
    private["_display","_class"];
    _class = (_this call getDeployableClass);
    //diag_log text format["BIKE: trying to get display of %1",_this call getDeployableClass];
    _display = getText (configFile >> "CfgVehicles" >> _class >> "displayName");
    //diag_log text format["BIKE: post config lookup: display = %1",_display];
    if((isNil "_display")||_display == "") then {
        _display = _class;
    };
    {
        if(_class == (_x select 0)) then {
            _display = (_x select 1);
        };
    } forEach DZE_DEPLOYABLE_NAME_MAP;
    //diag_log text format["BIKE: post patch check: display = %1",_display];
    _display
};

/* looks up the index of a deployable based on the class */
getDeployableIndex = {
    private["_return"];
    _return = -1;
    {
        if(_this == (_forEachIndex call getDeployableClass)) then {
            _return = _forEachIndex;
        }
    } forEach DZE_DEPLOYABLES;
    _return
};

/* check if player has required parts to build the item */
/* [player,_partIndex] call getHasDeployableParts; */
getHasDeployableParts = {
    private["_player","_weapons","_parts","_item","_params","_index","_part","_return","_inventory"];
    _params    = _this;
    _player    = _params select 0;
    _index     = _params select 1;
    _parts     = _index call getDeployableParts;
    _inventory = (weapons _player) + (magazines _player);
    _return    = true;
    {
        _part = _x;
        if(!(_part in _inventory)) exitWith {_return = false;};
        {
            _item = _x;
            if(_item == _part) exitWith {_inventory set [_forEachIndex,"nil"];};
        } forEach _inventory;
    } forEach _parts;
    _return
};

/* remove this item's parts from the players inventory */
/* [player,_partIndex] call removeDeployableParts; */
removeDeployableParts = {
    private["_player","_params","_index","_parts","_part"];
    _params = _this;
    _player = _params select 0;
    _index  = _params select 1;
    _parts  = _index call getDeployableParts;
    {
        _part = _x;
        _player removeWeapon _part;
        _player removeMagazine _part;
    } forEach _parts;
};

 

custom\menu

custom\menu\defines.hpp:

Spoiler
#define CT_STATIC           0
#define CT_BUTTON           1
#define CT_EDIT             2
#define CT_SLIDER           3
#define CT_COMBO            4
#define CT_LISTBOX          5
#define CT_TOOLBOX          6
#define CT_CHECKBOXES       7
#define CT_PROGRESS         8
#define CT_HTML             9
#define CT_STATIC_SKEW      10
#define CT_ACTIVETEXT       11
#define CT_TREE             12
#define CT_STRUCTURED_TEXT  13
#define CT_CONTEXT_MENU     14
#define CT_CONTROLS_GROUP   15
#define CT_SHORTCUTBUTTON   16
#define CT_XKEYDESC         40
#define CT_XBUTTON          41
#define CT_XLISTBOX         42
#define CT_XSLIDER          43
#define CT_XCOMBO           44
#define CT_ANIMATED_TEXTURE 45
#define CT_OBJECT           80
#define CT_OBJECT_ZOOM      81
#define CT_OBJECT_CONTAINER 82
#define CT_OBJECT_CONT_ANIM 83
#define CT_LINEBREAK        98
#define CT_USER             99
#define CT_MAP              100
#define CT_MAP_MAIN         101
#define CT_LISTNBOX         102

// Static styles
#define ST_POS            0x0F
#define ST_HPOS           0x03
#define ST_VPOS           0x0C
#define ST_LEFT           0x00
#define ST_RIGHT          0x01
#define ST_CENTER         0x02
#define ST_DOWN           0x04
#define ST_UP             0x08
#define ST_VCENTER        0x0C
#define ST_GROUP_BOX       96
#define ST_GROUP_BOX2      112
#define ST_ROUNDED_CORNER  ST_GROUP_BOX + ST_CENTER
#define ST_ROUNDED_CORNER2 ST_GROUP_BOX2 + ST_CENTER

#define ST_TYPE           0xF0
#define ST_SINGLE         0x00
#define ST_MULTI          0x10
#define ST_TITLE_BAR      0x20
#define ST_PICTURE        0x30
#define ST_FRAME          0x40
#define ST_BACKGROUND     0x50
#define ST_GROUP_BOX      0x60
#define ST_GROUP_BOX2     0x70
#define ST_HUD_BACKGROUND 0x80
#define ST_TILE_PICTURE   0x90
#define ST_WITH_RECT      0xA0
#define ST_LINE           0xB0

#define ST_SHADOW         0x100
#define ST_NO_RECT        0x200
#define ST_KEEP_ASPECT_RATIO  0x800

#define ST_TITLE          ST_TITLE_BAR + ST_CENTER

// Slider styles
#define SL_DIR            0x400
#define SL_VERT           0
#define SL_HORZ           0x400

#define SL_TEXTURES       0x10

// progress bar 
#define ST_VERTICAL       0x01
#define ST_HORIZONTAL     0

// Listbox styles
#define LB_TEXTURES       0x10
#define LB_MULTI          0x20

// Tree styles
#define TR_SHOWROOT       1
#define TR_AUTOCOLLAPSE   2

// MessageBox styles
#define MB_BUTTON_OK      1
#define MB_BUTTON_CANCEL  2
#define MB_BUTTON_USER    4


////////////////
//Base Classes//
////////////////

class slkIGUIBack
{
	type = 0;
	idc = 124;
	style = 128;
	text = "";
	colorText[] = 
	{
		0,
		0,
		0,
		0
	};
	font = "Zeppelin32";
	sizeEx = 0;
	shadow = 0;
	x = 0.1;
	y = 0.1;
	w = 0.1;
	h = 0.1;
	colorbackground[] = 
	{
		-1,-1,-1,-1
		//"(profilenamespace getvariable ['IGUI_BCG_RGB_R',0])",
		//"(profilenamespace getvariable ['IGUI_BCG_RGB_G',1])",
		//"(profilenamespace getvariable ['IGUI_BCG_RGB_B',1])",
		//"(profilenamespace getvariable ['IGUI_BCG_RGB_A',0.8])"
	};
};

class slkRscText {
	x = 0;
	y = 0;
	h = 0.037;
	w = 0.3;
	type = 0;
	style = 0;
	shadow = 1;
	colorShadow[] = {0, 0, 0, 0.5};
	font = "Zeppelin32";
	SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
	text = "";
	colorText[] = {1, 1, 1, 1.0};
	colorBackground[] = {0, 0, 0, 0};
	linespacing = 1;
	tooltipColorText[] = {1,1,1,1};
	tooltipColorBox[] = {1,1,1,1};
	tooltipColorShade[] = {0,0,0,0.65};
};

class slkRscListBox
{
	access = 0;
	type = 5;
	w = 0.4;
	h = 0.4;
	rowHeight = 0;
	colorText[] = {1,1,1,1};
	colorDisabled[] = {1,1,1,0.25};
	colorScrollbar[] = {1,0,0,0};
	colorSelect[] = {0,0,0,1};
	colorSelect2[] = {0,0,0,1};
	colorSelectBackground[] = {0.95,0.95,0.95,1};
	colorSelectBackground2[] = {0.95,0.95,0.95,1};
	colorBackground[] = {0,0,0,0.3};
	soundSelect[] = {"",0.1,1};
	arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)";
	arrowFull = "#(argb,8,8,3)color(1,1,1,1)";
	class ScrollBar
	{
		color[] = {1,1,1,0.6};
		colorActive[] = {1,1,1,1};
		colorDisabled[] = {1,1,1,0.3};
		shadow = 0;
		thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa";
		arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa";
		arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa";
		border = "\ca\ui\data\ui_border_scroll_ca.paa";
	};
	style = 16;
	font = "Zeppelin32";
	shadow = 2;
	sizeEx = 0.03921;
	color[] = {1,1,1,1};
	period = 1.2;
	maxHistoryDelay = 1;
	autoScrollSpeed = -1;
	autoScrollDelay = 5;
	autoScrollRewind = 0;
};
class slkRscCombo {
	idc = -1;
	type = 4;
	style = 1;
	x = 0;
	y = 0;
	w = 0.3;
	h = 0.035;
	colorSelect[] = {0.023529, 0, 0.0313725, 1};
	colorText[] = {0.023529, 0, 0.0313725, 1};
	colorBackground[] = {0.95, 0.95, 0.95, 1};
	colorSelectBackground[] = {0.543, 0.5742, 0.4102, 1.0};
	colorScrollbar[] = {0.023529, 0, 0.0313725, 1};
	arrowEmpty = "\ca\ui\data\ui_arrow_combo_ca.paa";
	arrowFull = "\ca\ui\data\ui_arrow_combo_active_ca.paa";
	wholeHeight = 0.45;
	color[] = {0, 0, 0, 0.6};
	colorActive[] = {0, 0, 0, 1};
	colorDisabled[] = {0, 0, 0, 0.3};
	font = "Zeppelin32";
	sizeEx = 0.031;
	soundSelect[] = {"\ca\ui\data\sound\new1", 0.09, 1};
	soundExpand[] = {"\ca\ui\data\sound\new1", 0.09, 1};
	soundCollapse[] = {"\ca\ui\data\sound\new1", 0.09, 1};
	maxHistoryDelay = 1.0;
	
	class ScrollBar {
		color[] = {1, 1, 1, 0.6};
		colorActive[] = {1, 1, 1, 1};
		colorDisabled[] = {1, 1, 1, 0.3};
		thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa";
		arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa";
		arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa";
		border = "\ca\ui\data\ui_border_scroll_ca.paa";
	};
};

class slkRscBackground
{
	type = 0;
	style = ST_BACKGROUND;
	shadow = 2;
	colorBackground[] = {0,0,0,1};
	colorText[] = {1,1,1,1};
	font = "Zeppelin32";
	sizeEx = 0.02;
	text = "";
};

class slkRscButton
{
    
   access = 0;
    type = CT_BUTTON;
    text = "";
    colorText[] = {1,1,1,.9};
	colorBackgroundDisabled[] = {0,0.0,0};
	colorBackgroundActive[] = {0.2,0.38,0.647,0.8};
    colorFocused[] = {0.2,0.38,0.647,0.8};
	colorDisabled[] = {0.2,0.38,0.647,0.8};
    colorBackground[] = {0.2,0.38,0.647,0.8};
	colorShadow[] = {0.023529,0,0.0313725,1};
    colorBorder[] = {0.023529,0,0.0313725,1};
    soundEnter[] = {"\ca\ui\data\sound\onover",0.09,1};
    soundPush[] = {"\ca\ui\data\sound\new1",0,0};
    soundClick[] = {"\ca\ui\data\sound\onclick",0.07,1};
    soundEscape[] = {"\ca\ui\data\sound\onescape",0.09,1};
    style = 2;
    x = 0;
    y = 0;
    w = 0.055589;
    h = 0.039216;
    shadow = 2;
    font = "Bitstream";
    sizeEx = 0.03921;
    offsetX = 0.003;
    offsetY = 0.003;
    offsetPressedX = 0.002;
    offsetPressedY = 0.002;
    borderSize = 0;
};
class slkRscStructuredText
{
	access = 0;
	type = 13;
	idc = -1;
	style = 0;
	colorText[] = {0.8784,0.8471,0.651,1};
	class Attributes
	{
		font = "Zeppelin32";
		color = "#FFFFFF";
		align = "left";
		shadow = 1;
	};
	x = 0;
	y = 0;
	h = 0.035;
	w = 0.1;
	text = "";
	size = 0.03921;
	shadow = 2;
};
class slkRscFrame
{
    type = CT_STATIC;
    idc = -1;
    style = ST_FRAME;
    shadow = 2;
    colorBackground[] = {1,1,1,1};
    colorText[] = {1,1,1,0.9};
    font = "Bitstream";
    sizeEx = 0.03;
    text = "";
};

class slkBOX
{ 
    type = CT_STATIC;
    idc = -1;
    style = ST_CENTER;
    shadow = 2;
    colorText[] = {1,1,1,1};
    font = "Bitstream";
    sizeEx = 0.02;
    colorBackground[] = { 0.33,0.33,0, 0.8 }; 
    text = ""; 

};
class slkW_RscText {
	idc = -1;
	type = 0;
	style = 0x00;
	colorBackground[] = { 1 , 1 , 1 , 0 };
	colorText[] = { 1 , 1 , 1 , 1 };
	font = "Zeppelin32";
	sizeEx = .025;
	h = .25;
	text = "";
};

class slk {
	access = 0;
	type = 13;
	idc = -1;
	style = 0;
	colorText[] = {.8784,.8471,.651,1};
	class Attributes
	{
		font = "Zeppelin32";
		color = "#e0d8a6";
		align = "center";
		shadow = 1;
	};
	x = 0;
	y = 0;
	h = .035;
	w = .1;
	text = "";
	size = .03921;
	shadow = 2;
};
class slkRscList
{
	type = 5;
	style = 69;
	idc = -1;
	text = "";
	w = .275;
	h = .04;
	colorSelect[] = {1, 1, 1, 1};
	colorText[] = {1, 1, 1, 1};
	colorBackground[] = {1,1,1,1};
	colorSelectBackground[] = {.40, .43, .28, .5};
	colorScrollbar[] = {.2, .2, .2, 1};
	arrowEmpty = "\ca\ui\data\ui_arrow_combo_ca.paa";
	arrowFull = "\ca\ui\data\ui_arrow_combo_active_ca.paa";
	wholeHeight = .45;
	rowHeight = .04;
	color[] = {.7, .7, .7, 1};
	colorActive[] = {0,0,0,1};
	colorDisabled[] = {0,0,0,.3};
	font = "Zeppelin32";
	sizeEx = .023;
	soundSelect[] = {"",.1,1};
	soundExpand[] = {"",.1,1};
	soundCollapse[] = {"",.1,1};
	maxHistoryDelay = 1;
	autoScrollSpeed = -1;
	autoScrollDelay = 5;
	autoScrollRewind = 0;
	class ScrollBar
	{
		color[] = {1, 1, 1, 1};
		colorActive[] = {1, 1, 1, 1};
		colorDisabled[] = {1, 1, 1, 1};
		thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa";
		arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa";
		arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa";
		border = "\ca\ui\data\ui_border_scroll_ca.paa";
	};
};

class slkRscPicture 
{
	idc = -1; 
	type = 0;
	style = 48;
	font = "Zeppelin32";
	sizeEx = .023;	
	colorBackground[] = {};
	colorText[] = {};	
	x = .0; y = .2;
	w = .2; h = .2;	
	text = "";	
}; 

class slkRscButtonBase {
	idc = -1;
	type = 16;
	style = 0;	
	w = .183825;
	h = .104575;	
	color[] = {.95, .95, .95, 1};
	color2[] = {1, 1, 1, .4};
	colorBackground[] = {1, 1, 1, 1};
	colorbackground2[] = {1, 1, 1, .4};
	colorDisabled[] = {1, 1, 1, .25};	
	periodFocus = 1.2;
	periodOver = .8;	
	class HitZone {
		left = .004;
		top = .029;
		right = .004;
		bottom = .029;		
	};
	class ShortcutPos {
		left = .004;
		top = .026;
		w = .0392157;
		h = .0522876;		
	};
	class TextPos {	
		left = .05;
		top = .025;
		right = .005;
		bottom = .025;	
	};
	animTextureNormal = "\ca\ui\data\ui_button_normal_ca.paa";
	animTextureDisabled = "\ca\ui\data\ui_button_disabled_ca.paa";
	animTextureOver = "\ca\ui\data\ui_button_over_ca.paa";
	animTextureFocused = "\ca\ui\data\ui_button_focus_ca.01.paa";
	animTexturePressed = "\ca\ui\data\ui_button_down_ca.paa";
	animTextureDefault = "\ca\ui\data\ui_button_default_ca.paa";
	textureNoShortcut = "";
	period = .4;
	font = "Zeppelin32";
	size = .023;
	sizeEx = .023;
	text = "";
	
	soundEnter[] = {"\ca\ui\data\sound\mouse2", .09, 1};
	soundPush[] = {"\ca\ui\data\sound\new1", .09, 1};
	soundClick[] = {"\ca\ui\data\sound\mouse3", .07, 1};
	soundEscape[] = {"\ca\ui\data\sound\mouse1", .09, 1};
	
	action = "";
	
	class Attributes {
		font = "Zeppelin32";
		color = "#E5E5E5";
		align = "left";
		shadow = "1";	
	};
	
	class AttributesImage {
		font = "Zeppelin32";
		color = "#E5E5E5";
		align = "left";	
	};
};
class slkMap {
			moveOnEdges = 0;
			shadow = 0;
			maxSatelliteAlpha = .85;
			alphaFadeStartScale = .35;
			alphaFadeEndScale = .4;
			colorOutside[] = {0,0,0,1};			
			style = 48;
			font = "EtelkaNarrowMediumPro";
			sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * .6)";
			type = 101;
			colorBackground[] = {.8,.8,.8,1};
			colorText[] = {0,0,0,1};
			colorRailway[] = {.5,.5,.5,.5};
			colorSea[] = {.56,.8,.98,.5};
			colorForest[] = {.6,.8,.2,.5};
			colorRocks[] = {.5,.5,.5,.5};
			colorCountlines[] = {.65,.45,.27,.5};
			colorMainCountlines[] = {.65,.45,.27,1};
			colorCountlinesWater[] = {0,.53,1,.5};
			colorMainCountlinesWater[] = {0,.53,1,1};
			colorForestBorder[] = {.4,.8,0,1};
			colorRocksBorder[] = {.5,.5,.5,1};
			colorPowerLines[] = {0,0,0,1};
			colorNames[] = {0,0,0,1};
			colorInactive[] = {1,1,1,.5};
			colorLevels[] = {.286,.177,.094,.5};
			fontLabel = "TahomaB";
			sizeExLabel = .04;
			fontGrid = "TahomaB";
			sizeExGrid = .04;
			fontUnits = "TahomaB";
			sizeExUnits = .04;
			fontNames = "TahomaB";
			sizeExNames = .04;
			fontInfo = "TahomaB";
			sizeExInfo = .04;
			fontLevel = "TahomaB";
			sizeExLevel = .04;
			text = "#(argb,8,8,3)color(1,1,1,1)";
			stickX[] = {.2,{"Gamma",1,1.5}};
			stickY[] = {.2,{"Gamma",1,1.5}};
			ptsPerSquareSea = 6;
			ptsPerSquareTxt = 8;
			ptsPerSquareCLn = 8;
			ptsPerSquareExp = 8;
			ptsPerSquareCost = 8;
			ptsPerSquareFor = "4.0f";
			ptsPerSquareForEdge = "10.0f";
			ptsPerSquareRoad = 2;
			ptsPerSquareObj = 10;
			showCountourInterval = 0;
			onMouseMoving = "mouseX = (_this Select 1);mouseY = (_this Select 2)";
			onMouseButtonDown = "mouseButtonDown = _this Select 1";
			onMouseButtonUp = "mouseButtonUp = _this Select 1";				
			class CustomMark {
				icon = "\ca\ui\data\map_waypoint_ca.paa";
				color[] = {0,0,1,1};
				size = 18;
				importance = 1;
				coefMin = 1;
				coefMax = 1;
			};
			class Bunker {
				icon = "\ca\ui\data\map_bunker_ca.paa";
				color[] = {0,0,1,1};
				size = 14;
				importance = 1.5 * 14 * .05;
				coefMin = .25;
				coefMax = 4;
			};
			class Bush {
				icon = "\ca\ui\data\map_bush_ca.paa";
				color[] = {.55,.64,.43,1};
				size = 14;
				importance = .2 * 14 * .05;
				coefMin = .25;
				coefMax = 4;
			};
			class BusStop {
				icon = "\ca\ui\data\map_busstop_ca.paa";
				color[] = {0,0,1,1};
				size = 10;
				importance = 1 * 10 * .05;
				coefMin = .25;
				coefMax = 4;
			};
			class Command {
				icon = "#(argb,8,8,3)color(1,1,1,1)";
				color[] = {0,.9,0,1};
				size = 18;
				importance = 1;
				coefMin = 1;
				coefMax = 1;
			};
			class Cross {
				icon = "\ca\ui\data\map_cross_ca.paa";
				color[] = {0,0,1,1};
				size = 16;
				importance = .7 * 16 * .05;
				coefMin = .25;
				coefMax = 4;
			};
			class Fortress {
				icon = "\ca\ui\data\map_bunker_ca.paa";
				color[] = {0,0,1,1};
				size = 16;
				importance = 2 * 16 * .05;
				coefMin = .25;
				coefMax = 4;
			};
			class Fuelstation {
				icon = "#(argb,8,8,3)color(0,0,0,1)";
				color[] = {0,0,0,1};
				size = 16;
				importance = 2 * 16 * .05;
				coefMin = .75;
				coefMax = 4;
			};
			class Fountain {
				icon = "\ca\ui\data\map_fountain_ca.paa";
				color[] = {0,.35,.7,1};
				size = 12;
				importance = 1 * 12 * .05;
				coefMin = .25;
				coefMax = 4;
			};
			class Hospital {
				icon = "\ca\ui\data\map_hospital_ca.paa";
				color[] = {.78,0,.05,1};
				size = 16;
				importance = 2 * 16 * .05;
				coefMin = .5;
				coefMax = 4;
			};
			class Chapel {
				icon = "\ca\ui\data\map_chapel_ca.paa";
				color[] = {0,0,1,1};
				size = 16;
				importance = 1 * 16 * .05;
				coefMin = .9;
				coefMax = 4;
			};
			class Church {
				icon = "\ca\ui\data\map_church_ca.paa";
				color[] = {0,0,1,1};
				size = 16;
				importance = 2 * 16 * .05;
				coefMin = .9;
				coefMax = 4;
			};
			class Legend {
				x = "SafeZoneX";
				y = "SafeZoneY";
				w = .34;
				h = .152;
				font = "Zeppelin32";
				sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * .6)";
				colorBackground[] = {0,0,0,1};
				color[] = {0,0,0,1};
			};
			class Lighthouse {
				icon = "\ca\ui\data\map_lighthouse_ca.paa";
				color[] = {.78,0,.05,1};
				size = 20;
				importance = 3 * 16 * .05;
				coefMin = .9;
				coefMax = 4;
			};
			class Quay {
				icon = "\ca\ui\data\map_quay_ca.paa";
				color[] = {0,0,1,1};
				size = 16;
				importance = 2 * 16 * .05;
				coefMin = .5;
				coefMax = 4;
			};
			class Rock {
				icon = "\ca\ui\data\map_rock_ca.paa";
				color[] = {0,0,1,1};
				size = 12;
				importance = .5 * 12 * .05;
				coefMin = .25;
				coefMax = 4;
			};
			class Ruin {
				icon = "\ca\ui\data\map_ruin_ca.paa";
				color[] = {.78,0,.05,1};
				size = 16;
				importance = 1.2 * 16 * .05;
				coefMin = 1;
				coefMax = 4;
			};
			class SmallTree {
				icon = "\ca\ui\data\map_smalltree_ca.paa";
				color[] = {.55,.64,.43,1};
				size = 12;
				importance = .6 * 12 * .05;
				coefMin = .25;
				coefMax = 4;
			};
			class Stack {
				icon = "\ca\ui\data\map_stack_ca.paa";
				color[] = {0,0,1,1};
				size = 20;
				importance = 2 * 16 * .05;
				coefMin = .9;
				coefMax = 4;
			};
			class Task {
				icon = "\ca\ui\data\ui_taskstate_current_CA.paa";
				iconCreated = "\ca\ui\data\ui_taskstate_new_CA.paa";
				iconCanceled = "#(argb,8,8,3)color(0,0,0,0)";
				iconDone = "\ca\ui\data\ui_taskstate_done_CA.paa";
				iconFailed = "\ca\ui\data\ui_taskstate_failed_CA.paa";
				color[] = {.863,.584,.0,1};
				colorCreated[] = {.95,.95,.95,1};
				colorCanceled[] = {.606,.606,.606,1};
				colorDone[] = {.424,.651,.247,1};
				colorFailed[] = {.706,.0745,.0196,1};
				size = 10;
				coefMin = 1;
				coefMax = 4;
				importance = 1;
			};
			class Tree {
				icon = "\ca\ui\data\map_tree_ca.paa";
				color[] = {.55,.64,.43,1};
				size = 12;
				importance = .9 * 16 * .05;
				coefMin = .25;
				coefMax = 4;
			};
			class Tourism {
				icon = "\ca\ui\data\map_tourism_ca.paa";
				color[] = {.78,0,.05,1};
				size = 16;
				importance = 1 * 16 * .05;
				coefMin = .7;
				coefMax = 4;
			};
			class Transmitter {
				icon = "\ca\ui\data\map_transmitter_ca.paa";
				color[] = {0,0,1,1};
				size = 20;
				importance = 2 * 16 * .05;
				coefMin = .9;
				coefMax = 4;
			};
			class ViewTower {
				icon = "\ca\ui\data\map_viewtower_ca.paa";
				color[] = {0,0,1,1};
				size = 16;
				importance = 2.5 * 16 * .05;
				coefMin = .5;
				coefMax = 4;
			};
			class Watertower {
				icon = "\ca\ui\data\map_watertower_ca.paa";
				color[] = {0,.35,.7,1};
				size = 32;
				importance = 1.2 * 16 * .05;
				coefMin = .9;
				coefMax = 4;
			};
			class Waypoint {
				icon = "\ca\ui\data\map_waypoint_ca.paa";
				color[] = {0,0,1,1};
				size = 14;
				importance = 2.5 * 16 * .05;
				coefMin = .5;
				coefMax = 4;
			};
			class WaypointCompleted {
				icon = "\ca\ui\data\map_waypoint_completed_ca.paa";
				color[] = {0,0,1,1};
				size = 14;
				importance = 2.5 * 16 * .05;
				coefMin = .5;
				coefMax = 4;
			};
			class ActiveMarker {
				icon = "";
				color[] = {0,0,1,1};
				size = 14;
				importance = 2.5 * 16 * .05;
				coefMin = .5;
				coefMax = 4;
			};

		};

 

custom\menu\menu.hpp:

Spoiler
class menu
{
    idd = 7777;
    movingenable=false;
	class Controls
	{ 
class slk_frame: slkRscFrame
{
	idc = 1801;
	text = ""; //--- ToDo: Localize;
	x = 0.216406 * safezoneW + safezoneX;
	y = 0.1304 * safezoneH + safezoneY;
	w = 0.567187 * safezoneW;
	h = 0.748 * safezoneH;
};
class slk_bg: slkIGUIBack
{
	idc = 2200;
	text = ""; //--- ToDo: Localize;
	x = 0.212281 * safezoneW + safezoneX;
	y = 0.1194 * safezoneH + safezoneY;
	w = 0.5775 * safezoneW;
	h = 0.77 * safezoneH;
	colorBackground[] = {0,0,0,0.8};
};
class slk_bgl1: slkIGUIBack
{
	idc = 2201;

	x = 0.212281 * safezoneW + safezoneX;
	y = 0.1106 * safezoneH + safezoneY;
	w = 0.5775 * safezoneW;
	h = 0.132 * safezoneH;
	colorBackground[] = {0,0,0,1};
};
class slk_title: slkRscText
{
	idc = 1000;
	text = "Server Name"; //--- ToDo: Localize;
	x = 0.37522 * safezoneW + safezoneX;
	y = 0.126 * safezoneH + safezoneY;
	w = 0.2475 * safezoneW;
	h = 0.033 * safezoneH;
	sizeEx = 0.050;
	style = 2;
};
class slk_web: slkRscText
{
	idc = 1001;
	text = "Website"; //--- ToDo: Localize;
	x = 0.377281 * safezoneW + safezoneX;
	y = 0.1766 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.022 * safezoneH;
	sizeEx = 0.040;
	style = 2;
};
class slk_ts3: slkRscText
{
	idc = 1002;
	text = "Teamspeak"; //--- ToDo: Localize;
	x = 0.535349 * safezoneW + safezoneX;
	y = 0.176733 * safezoneH + safezoneY;
	w = 0.0876563 * safezoneW;
	h = 0.022 * safezoneH;
	sizeEx = 0.040;
	style = 2;
};
class slk_view_title: slkRscText
{
	idc = 1003;
	text = "View Distance"; //--- ToDo: Localize;
	x = 0.449466 * safezoneW + safezoneX;
	y = 0.2382 * safezoneH + safezoneY;
	w = 0.103125 * safezoneW;
	h = 0.033 * safezoneH;
	sizeEx = 0.050;
	style = 2;
};
class slk_picl: slkRscPicture
{
	idc = 1200;
	text = "custom\menu\logo.paa";
	x = 0.221562 * safezoneW + safezoneX;
	y = 0.137 * safezoneH + safezoneY;
	w = 0.128906 * safezoneW;
	h = 0.077 * safezoneH;
};
class slk_action_title: slkRscText
{
	idc = 1004;
	text = "Actions"; //--- ToDo: Localize;
	x = 0.29684 * safezoneW + safezoneX;
	y = 0.247 * safezoneH + safezoneY;
	w = 0.0464063 * safezoneW;
	h = 0.022 * safezoneH;
	sizeEx = 0.050;
	style = 2;
};
class slk_view1: slkRscButton
{
	idc = 1600;
	text = "1000"; //--- ToDo: Localize;
	x = 0.443281 * safezoneW + safezoneX;
	y = 0.291 * safezoneH + safezoneY;
	w = 0.113437 * safezoneW;
	h = 0.022 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "setViewDistance 1000; systemChat('ViewDistance: 1000');";
};
class slk_view2: slkRscButton
{
	idc = 1601;
	text = "1500"; //--- ToDo: Localize;
	x = 0.443281 * safezoneW + safezoneX;
	y = 0.335 * safezoneH + safezoneY;
	w = 0.113437 * safezoneW;
	h = 0.022 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "setViewDistance 1500; systemChat('ViewDistance: 1500');";
};
class slk_view3: slkRscButton
{
	idc = 1602;
	text = "2000"; //--- ToDo: Localize;
	x = 0.443281 * safezoneW + safezoneX;
	y = 0.379 * safezoneH + safezoneY;
	w = 0.113437 * safezoneW;
	h = 0.022 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "setViewDistance 2000; systemChat('ViewDistance: 2000');";
};
class slk_view4: slkRscButton
{
	idc = 1603;
	text = "2500"; //--- ToDo: Localize;
	x = 0.443281 * safezoneW + safezoneX;
	y = 0.423 * safezoneH + safezoneY;
	w = 0.113437 * safezoneW;
	h = 0.022 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "setViewDistance 2500; systemChat('ViewDistance: 2500');";
};
class slk_view5: slkRscButton
{
	idc = 1604;
	text = "3000"; //--- ToDo: Localize;
	x = 0.443281 * safezoneW + safezoneX;
	y = 0.467 * safezoneH + safezoneY;
	w = 0.113437 * safezoneW;
	h = 0.022 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "setViewDistance 3000; systemChat('ViewDistance: 3000');";
};
class slk_view6: slkRscButton
{
	idc = 1605;
	text = "3500"; //--- ToDo: Localize;
	x = 0.443281 * safezoneW + safezoneX;
	y = 0.511 * safezoneH + safezoneY;
	w = 0.113437 * safezoneW;
	h = 0.022 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "setViewDistance 3500; systemChat('ViewDistance: 3500');";
};
class slk_view7: slkRscButton
{
	idc = 1606;
	text = "4000"; //--- ToDo: Localize;
	x = 0.443281 * safezoneW + safezoneX;
	y = 0.555 * safezoneH + safezoneY;
	w = 0.113437 * safezoneW;
	h = 0.022 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "setViewDistance 4000; systemChat('ViewDistance: 4000');";
};
class slk_view8: slkRscButton
{
	idc = 1607;
	text = "4500"; //--- ToDo: Localize;
	x = 0.443281 * safezoneW + safezoneX;
	y = 0.599 * safezoneH + safezoneY;
	w = 0.113437 * safezoneW;
	h = 0.022 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "setViewDistance 4500; systemChat('ViewDistance: 4500');";
};
class slk_view9: slkRscButton
{
	idc = 1608;
	text = "5000"; //--- ToDo: Localize;
	x = 0.443281 * safezoneW + safezoneX;
	y = 0.643 * safezoneH + safezoneY;
	w = 0.113437 * safezoneW;
	h = 0.022 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "setViewDistance 5000; systemChat('ViewDistance: 5000');";
};
class slk_act: slkRscButton
{
	idc = 1609;
	text = "Action 1"; //--- ToDo: Localize;
	x = 0.268997 * safezoneW + safezoneX;
	y = 0.28 * safezoneH + safezoneY;
	w = 0.103125 * safezoneW;
	h = 0.033 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "call action1script;";
};
//class slk_act2: slkRscButton
//{
//	idc = 1610;
//	text = "Action 2"; //--- ToDo: Localize;
//	x = 0.268997 * safezoneW + safezoneX;
//	y = 0.357 * safezoneH + safezoneY;
//	w = 0.103125 * safezoneW;
//	h = 0.033 * safezoneH;
//	colorBackground[] = {0.047,0.376,0.776,1};
//	onButtonClick = "call action2script;";
//};
class slk_info: slkRscText
{
	idc = 1005;
	text = "Information"; //--- ToDo: Localize;
	x = 0.289622 * safezoneW + safezoneX;
	y = 0.4428 * safezoneH + safezoneY;
	w = 0.0670312 * safezoneW;
	h = 0.033 * safezoneH;
	sizeEx = 0.050;
	style = 2;
};
class slk_info1: slkRscButton
{
	idc = 1611;
	text = "Rules"; //--- ToDo: Localize;
	x = 0.268997 * safezoneW + safezoneX;
	y = 0.5022 * safezoneH + safezoneY;
	w = 0.103125 * safezoneW;
	h = 0.033 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "call info1script;";
};
class slk_info2: slkRscButton
{
	idc = 1612;
	text = "Features and Tips"; //--- ToDo: Localize;
	x = 0.268997 * safezoneW + safezoneX;
	y = 0.5792 * safezoneH + safezoneY;
	w = 0.103125 * safezoneW;
	h = 0.033 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "call info2script;";
};
class slk_info3: slkRscButton
{
	idc = 1613;
	text = "Latest Updates"; //--- ToDo: Localize;
	x = 0.268997 * safezoneW + safezoneX;
	y = 0.6606 * safezoneH + safezoneY;
	w = 0.103125 * safezoneW;
	h = 0.033 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "call info3script;";
};

//class slk_info4: slkRscButton
//{
//	idc = 1618;
//	text = "Info 4"; //--- ToDo: Localize;
//	x = 0.268997 * safezoneW + safezoneX;
//	y = 0.742 * safezoneH + safezoneY;
//	w = 0.103125 * safezoneW;
//	h = 0.033 * safezoneH;
//	colorBackground[] = {0.047,0.376,0.776,1};
//	onButtonClick = "call info4script;";
//};

class slk_deployables: slkRscText
{
	idc = 1006;
	text = "Deployables"; //--- ToDo: Localize;
	x = 0.644385 * safezoneW + safezoneX;
	y = 0.247 * safezoneH + safezoneY;
	w = 0.0670312 * safezoneW;
	h = 0.022 * safezoneH;
	sizeEx = 0.050;
	style = 2;
};
class slk_dep_1: slkRscButton
{
	idc = 1614;
	text = "Deploy 1"; //--- ToDo: Localize;
	x = 0.626853 * safezoneW + safezoneX;
	y = 0.28 * safezoneH + safezoneY;
	w = 0.103125 * safezoneW;
	h = 0.033 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "call deployable1script;";
};
class slk_dep_item1: slkRscText
{
	idc = 1007;
	text = "Item 1"; //--- ToDo: Localize;
	x = 0.628916 * safezoneW + safezoneX;
	y = 0.324 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.011 * safezoneH;
};
class slk_dep_item2: slkRscText
{
	idc = 1008;
	text = "Item 2"; //--- ToDo: Localize;
	x = 0.628916 * safezoneW + safezoneX;
	y = 0.346 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.011 * safezoneH;
};
class slk_dep_item3: slkRscText
{
	idc = 1009;
	text = "Item 3"; //--- ToDo: Localize;
	x = 0.628916 * safezoneW + safezoneX;
	y = 0.3658 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.011 * safezoneH;
};
class slk_dep_item4: slkRscText
{
	idc = 1010;
	text = "Item 4"; //--- ToDo: Localize;
	x = 0.629179 * safezoneW + safezoneX;
	y = 0.389474 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.011 * safezoneH;
};
class esk_dep_2: slkRscButton
{
	idc = 1615;
	text = "Deploy 2"; //--- ToDo: Localize;
	x = 0.626853 * safezoneW + safezoneX;
	y = 0.456 * safezoneH + safezoneY;
	w = 0.103125 * safezoneW;
	h = 0.033 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "call deployable2script;";
};
class slk_dep_item5: slkRscText
{
	idc = 1011;
	text = "Item 5"; //--- ToDo: Localize;
	x = 0.629947 * safezoneW + safezoneX;
	y = 0.4098 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.011 * safezoneH;
};
class slk_dep2_item1: slkRscText
{
	idc = 1012;
	text = "Item 1"; //--- ToDo: Localize;
	x = 0.628916 * safezoneW + safezoneX;
	y = 0.5 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.011 * safezoneH;
};
class slk_dep2_item2: slkRscText
{
	idc = 1013;
	text = "Item 2"; //--- ToDo: Localize;
	x = 0.629946 * safezoneW + safezoneX;
	y = 0.522 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.011 * safezoneH;
};
class slk_dep2_item3: slkRscText
{
	idc = 1014;
	text = "Item 3"; //--- ToDo: Localize;
	x = 0.629947 * safezoneW + safezoneX;
	y = 0.544 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.011 * safezoneH;
};
class slk_dep2_item4: slkRscText
{
	idc = 1015;
	text = "Item 4"; //--- ToDo: Localize;
	x = 0.629947 * safezoneW + safezoneX;
	y = 0.566 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.011 * safezoneH;
};
class slk_dep2_item5: slkRscText
{
	idc = 1016;
	text = "Item 5"; //--- ToDo: Localize;
	x = 0.629947 * safezoneW + safezoneX;
	y = 0.588 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.011 * safezoneH;
};
class slk_dep_3: slkRscButton
{
	idc = 1616;
	text = "Deploy 3"; //--- ToDo: Localize;
	x = 0.626853 * safezoneW + safezoneX;
	y = 0.632 * safezoneH + safezoneY;
	w = 0.103125 * safezoneW;
	h = 0.033 * safezoneH;
	colorBackground[] = {0.047,0.376,0.776,1};
	onButtonClick = "call deployable3script;";
};
class slk_dep3_item1: slkRscText
{
	idc = 1017;
	text = "Item 1"; //--- ToDo: Localize;
	x = 0.628915 * safezoneW + safezoneX;
	y = 0.676 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.011 * safezoneH;
};
class slk_dep3_item2: slkRscText
{
	idc = 1018;
	text = "Item 2"; //--- ToDo: Localize;
	x = 0.628916 * safezoneW + safezoneX;
	y = 0.698 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.011 * safezoneH;
};
class slk_dep3_item3: slkRscText
{
	idc = 1019;
	text = "Item 3"; //--- ToDo: Localize;
	x = 0.628916 * safezoneW + safezoneX;
	y = 0.7178 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.011 * safezoneH;
};
class slk_dep3_item4: slkRscText
{
	idc = 1020;
	text = "Item 4"; //--- ToDo: Localize;
	x = 0.628916 * safezoneW + safezoneX;
	y = 0.7398 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.011 * safezoneH;
};
class slk_dep3_item5: slkRscText
{
	idc = 1021;
	text = "Item 5"; //--- ToDo: Localize;
	x = 0.628916 * safezoneW + safezoneX;
	y = 0.7618 * safezoneH + safezoneY;
	w = 0.0979687 * safezoneW;
	h = 0.011 * safezoneH;
};
class slk_close: slkRscButton
{
	idc = 1617;
	text = "Close Menu"; //--- ToDo: Localize;
	x = 0.443281 * safezoneW + safezoneX;
	y = 0.8124 * safezoneH + safezoneY;
	w = 0.113437 * safezoneW;
	h = 0.044 * safezoneH;
	sizeEx = 0.050;
	style = 2;
	colorBackground[] = {0.047,0.376,0.776,1};
	OnButtonClick = "((ctrlParent (_this select 0)) closeDisplay 7777)";
};
class eslk_bgl2: slkIGUIBack
{
	idc = 2202;

	x = 0.213312 * safezoneW + safezoneX;
	y = 0.434 * safezoneH + safezoneY;
	w = 0.190781 * safezoneW;
	h = 0.011 * safezoneH;
	colorBackground[] = {0,0,0,1};
};
class eslk_bgl3: slkIGUIBack
{
	idc = 2203;

	x = 0.399969 * safezoneW + safezoneX;
	y = 0.2294 * safezoneH + safezoneY;
	w = 0.0103125 * safezoneW;
	h = 0.66 * safezoneH;
	colorBackground[] = {0,0,0,1};
};
class eslk_bgl5: slkIGUIBack
{
	idc = 2204;

	x = 0.593844 * safezoneW + safezoneX;
	y = 0.4318 * safezoneH + safezoneY;
	w = 0.195937 * safezoneW;
	h = 0.011 * safezoneH;
	colorBackground[] = {0,0,0,1};
};
class eslk_bgl4: slkIGUIBack
{
	idc = 2205;

	x = 0.589719 * safezoneW + safezoneX;
	y = 0.2294 * safezoneH + safezoneY;
	w = 0.0103125 * safezoneW;
	h = 0.66 * safezoneH;
	colorBackground[] = {0,0,0,1};
};
class eslk_bgl6: slkIGUIBack
{
	idc = 2206;

	x = 0.593844 * safezoneW + safezoneX;
	y = 0.61 * safezoneH + safezoneY;
	w = 0.195937 * safezoneW;
	h = 0.011 * safezoneH;
	colorBackground[] = {0,0,0,1};
};
class eslk_bgl7: slkIGUIBack
{
	idc = 2203;

	x = 0.212281 * safezoneW + safezoneX;
	y = 0.225 * safezoneH + safezoneY;
	w = 0.0103125 * safezoneW;
	h = 0.66 * safezoneH;
	colorBackground[] = {0,0,0,1};
};
class eslk_bgl8: slkIGUIBack
{
	idc = 2205;

	x = 0.778437 * safezoneW + safezoneX;
	y = 0.225 * safezoneH + safezoneY;
	w = 0.0103125 * safezoneW;
	h = 0.66 * safezoneH;
	colorBackground[] = {0,0,0,1};
};
class eslk_bgl9: slkIGUIBack
{
	idc = 2206;

	x = 0.212281 * safezoneW + safezoneX;
	y = 0.8674 * safezoneH + safezoneY;
	w = 0.5775 * safezoneW;
	h = 0.022 * safezoneH;
	colorBackground[] = {0,0,0,1};
};
	};
};

 

custom\menu\menu_init.sqf:

Spoiler
disableSerialization;
///////////////////
//////Config//////
/////////////////

_serverName = "Name"; // the server name that will go accross the top of the menu

_ts3IP = "TS3"; // ts3 ip that will go at the bottom of the menu

_websiteUrl = "Web"; // website url that goes at the bottom of the menu 


////////////////////////////////////////////
////////////////////ACTIONS////////////////
//////////////////////////////////////////

_action1Text = "Suicide"; //Text that will go on action button 1
action1script = {((ctrlParent (_this select 0)) closeDisplay 7777); execvm 'custom\menu\scripts\suicide.sqf';}; //script that action button 1 will use

_action2Text = ""; //Text that will go on action button 2
action2script = {}; //script that action button 2 will use

_info1Text = "Rules"; //Text that will go on info button 1
info1script = {((ctrlParent (_this select 0)) closeDisplay 7777); execvm 'custom\menu\rules_init.sqf';}; //script that info button 1 will use

_info2Text = "Features and Tips"; //Text that will go on info button 2
info2script = {((ctrlParent (_this select 0)) closeDisplay 7777); createDialog "info2";}; //script that info button 2 will use

_info3Text = "Latest Updates"; //Text that will go on info button 3
info3script = {((ctrlParent (_this select 0)) closeDisplay 7777); createDialog "info3";}; //script that action info 3 will use

_info4Text = ""; //Text that will go on info button 4
info4script = {}; //script that action info 4 will use


///////////////////////////////////////////////
//////////////DEPLOYABLES/////////////////////
/////////////////////////////////////////////


_deployable1Text = "Bike"; //Text that will go on deployable button 1
_deploy1item1Text = "ToolBox"; //Text that will go in the number 1 item slot under the first deploy button 
_deploy1item2Text = ""; //Text that will go in the number 2 item slot under the first deploy button 
_deploy1item3Text = ""; //Text that will go in the number 3 item slot under the first deploy button 
_deploy1item4Text = ""; //Text that will go in the number 4 item slot under the first deploy button 
_deploy1item5Text = ""; //Text that will go in the number 5 item slot under the first deploy button 
deployable1script = {((ctrlParent (_this select 0)) closeDisplay 7777), [0] execVM 'scripts\deployAnything\deploy.sqf';};

_deployable2Text = "Mozzie"; //Text that will go on deployable button 2
_deploy2item1Text = "ToolBox"; //Text that will go in the number 1 item slot under the Second deploy button 
_deploy2item2Text = "Engine"; //Text that will go in the number 2 item slot under the Second deploy button 
_deploy2item3Text = "Main Rotor"; //Text that will go in the number 3 item slot under the Second deploy button 
_deploy2item4Text = "Scrap Metal"; //Text that will go in the number 4 item slot under the Second deploy button 
_deploy2item5Text = "Jerry Can (filled)"; //Text that will go in the number 5 item slot under the Second deploy button 
deployable2script = {((ctrlParent (_this select 0)) closeDisplay 7777), [1] execVM 'scripts\deployAnything\deploy.sqf';};

_deployable3Text = "Virtual Garage"; //Text that will go on deployable button 3
_deploy3item1Text = "ToolBox"; //Text that will go in the number 1 item slot under the third deploy button 
_deploy3item2Text = "Sapphire"; //Text that will go in the number 2 item slot under the third deploy button 
_deploy3item3Text = "Ruby"; //Text that will go in the number 3 item slot under the third deploy button 
_deploy3item4Text = ""; //Text that will go in the number 4 item slot under the third deploy button 
_deploy3item5Text = ""; //Text that will go in the number 5 item slot under the third deploy button 
deployable3script = {((ctrlParent (_this select 0)) closeDisplay 7777), [2] execVM 'scripts\deployAnything\deploy.sqf';};



createDialog "menu";


////////////////////////////////
//DO NOT EDIT BELLOW THIS LINE//
////////////////////////////////
fnc_update_all_text = {
_finddialog = findDisplay 7777;
(_finddialog displayCtrl 1609) ctrlSetText format["%1",_action1Text];
(_finddialog displayCtrl 1611) ctrlSetText format["%1",_info1Text];
(_finddialog displayCtrl 1612) ctrlSetText format["%1",_info2Text];
(_finddialog displayCtrl 1613) ctrlSetText format["%1",_info3Text];
(_finddialog displayCtrl 1614) ctrlSetText format["%1",_deployable1Text];
(_finddialog displayCtrl 1615) ctrlSetText format["%1",_deployable2Text];
(_finddialog displayCtrl 1616) ctrlSetText format["%1",_deployable3Text];
(_finddialog displayCtrl 1007) ctrlSetText format["%1",_deploy1item1Text];
(_finddialog displayCtrl 1008) ctrlSetText format["%1",_deploy1item2Text];
(_finddialog displayCtrl 1009) ctrlSetText format["%1",_deploy1item3Text];
(_finddialog displayCtrl 1010) ctrlSetText format["%1",_deploy1item4Text];
(_finddialog displayCtrl 1011) ctrlSetText format["%1",_deploy1item5Text];
(_finddialog displayCtrl 1012) ctrlSetText format["%1",_deploy2item1Text];
(_finddialog displayCtrl 1013) ctrlSetText format["%1",_deploy2item2Text];
(_finddialog displayCtrl 1014) ctrlSetText format["%1",_deploy2item3Text];
(_finddialog displayCtrl 1015) ctrlSetText format["%1",_deploy2item4Text];
(_finddialog displayCtrl 1016) ctrlSetText format["%1",_deploy2item5Text];
(_finddialog displayCtrl 1017) ctrlSetText format["%1",_deploy3item1Text];
(_finddialog displayCtrl 1018) ctrlSetText format["%1",_deploy3item2Text];
(_finddialog displayCtrl 1019) ctrlSetText format["%1",_deploy3item3Text];
(_finddialog displayCtrl 1020) ctrlSetText format["%1",_deploy3item4Text];
(_finddialog displayCtrl 1021) ctrlSetText format["%1",_deploy3item5Text]; 
(_finddialog displayCtrl 1001) ctrlSetText format["%1",_websiteUrl];
(_finddialog displayCtrl 1002) ctrlSetText format["%1",_ts3IP];
(_finddialog displayCtrl 10003) ctrlSetText format["%1",_ts3IP];
(_finddialog displayCtrl 1000) ctrlSetText format["%1 Menu",_serverName];
};

call fnc_update_all_text;

//(_finddialog displayCtrl 1610) ctrlSetText format["%1",_action2Text];
//(_finddialog displayCtrl 1618) ctrlSetText format["%1",_info4Text];


 

The rest should be fine (info2.hpp, info3.hpp, logo.paa, rules.hpp, rules_init.sqf, rules2.hpp, rules2_init.sqf and the clickActions folder).

Didn't find any way to upload it as a zip archive, so here is the raw code.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Advertisement
  • Supporters
  • Discord

×
×
  • Create New...