diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..f2e2c29ac --- /dev/null +++ b/.gitattributes @@ -0,0 +1,6 @@ +* text=auto + +*.png binary +*.jpg binary +*.paa binary +*.7z binary diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/.editorconfig b/=BTC=co@30_Hearts_and_Minds.Altis/.editorconfig new file mode 100644 index 000000000..701e3ec6f --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/.editorconfig @@ -0,0 +1,14 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + + +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/def/dlg_def.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/def/dlg_def.hpp index 49095a182..9a11c25ad 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/def/dlg_def.hpp +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/def/dlg_def.hpp @@ -1,267 +1,237 @@ -class btc_dlg_RscText +class btc_dlg_RscText { - x = 0; - y = 0; - h = 0.037; - w = 0.3; - type = 0; - style = 0; - shadow = 1; - colorShadow[] = {0, 0, 0, 0.5}; - font = "PuristaMedium"; - SizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - text = ""; - colorText[] = {1, 1, 1, 1.0}; - colorBackground[] = {0, 0, 0, 0}; - linespacing = 1; + x = 0; + y = 0; + h = 0.037; + w = 0.3; + type = 0; + style = 0; + shadow = 1; + colorShadow[] = {0, 0, 0, 0.5}; + font = "PuristaMedium"; + SizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + text = ""; + colorText[] = {1, 1, 1, 1.0}; + colorBackground[] = {0, 0, 0, 0}; + linespacing = 1; }; -class btc_dlg_RscStructuredText -{ - type = 13; - style = 0; - x = 0; - y = 0; - h = 0.035; - w = 0.1; - text = ""; - size = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - colorText[] = {1, 1, 1, 1.0}; - shadow = 1; - - class Attributes - { - font = "PuristaMedium"; - color = "#ffffff"; - align = "left"; - shadow = 1; - }; -}; -class btc_dlg_shortcutButton + +class btc_dlg_shortcutButton { - idc = -1; - style = 0; - default = 0; - shadow = 1; - w = 0.183825; - h = "( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20)"; - color[] = {1, 1, 1, 1.0}; - color2[] = {0.95, 0.95, 0.95, 1}; - colorDisabled[] = {1, 1, 1, 0.25}; - colorFocused[] = {0.95, 0.95, 0.95, 1};//{1, 1, 1, 1.0}; - colorBackgroundFocused[] = {0.95, 0.95, 0.95, 1};//{"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 1}; - colorBackground[] = {0.95, 0.95, 0.95, 1};//{"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 1}; - colorBackground2[] = {1, 1, 1, 1}; - animTextureDefault = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; - animTextureNormal = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; - animTextureDisabled = "\A3\ui_f\data\GUI\scCommon\RscShortcutButton\normal_ca.paa"; - animTextureOver = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\over_ca.paa"; - animTextureFocused = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\focus_ca.paa"; - animTexturePressed = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\down_ca.paa"; - textureNoShortcut = "#(argb,8,8,3)color(0,0,0,0)"; - periodFocus = 1.2; - periodOver = 0.8; - - class HitZone { - left = 0.0; - top = 0.0; - right = 0.0; - bottom = 0.0; - }; - - class ShortcutPos { - left = 0; - top = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; - w = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; - h = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - }; - - class TextPos { - left = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; - top = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; - right = 0.005; - bottom = 0.0; - }; - period = 0.4; - font = "PuristaMedium"; - size = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - text = ""; - soundEnter[] = {"\A3\ui_f\data\sound\onover", 0.09, 1}; - soundPush[] = {"\A3\ui_f\data\sound\new1", 0.0, 0}; - soundClick[] = {"\A3\ui_f\data\sound\onclick", 0.07, 1}; - soundEscape[] = {"\A3\ui_f\data\sound\onescape", 0.09, 1}; - action = ""; - - class Attributes { - font = "PuristaMedium"; - color = "#E5E5E5"; - align = "left"; - shadow = "true"; - }; - - class AttributesImage { - font = "PuristaMedium"; - color = "#E5E5E5"; - align = "left"; - }; + idc = -1; + style = 0; + default = 0; + shadow = 1; + w = 0.183825; + h = "( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20)"; + color[] = {1, 1, 1, 1.0}; + color2[] = {0.95, 0.95, 0.95, 1}; + colorDisabled[] = {1, 1, 1, 0.25}; + colorFocused[] = {0.95, 0.95, 0.95, 1};//{1, 1, 1, 1.0}; + colorBackgroundFocused[] = {0.95, 0.95, 0.95, 1};//{"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 1}; + colorBackground[] = {0.95, 0.95, 0.95, 1};//{"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 1}; + colorBackground2[] = {1, 1, 1, 1}; + animTextureDefault = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; + animTextureNormal = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; + animTextureDisabled = "\A3\ui_f\data\GUI\scCommon\RscShortcutButton\normal_ca.paa"; + animTextureOver = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\over_ca.paa"; + animTextureFocused = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\focus_ca.paa"; + animTexturePressed = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\down_ca.paa"; + textureNoShortcut = "#(argb,8,8,3)color(0,0,0,0)"; + periodFocus = 1.2; + periodOver = 0.8; + + class HitZone { + left = 0.0; + top = 0.0; + right = 0.0; + bottom = 0.0; + }; + + class ShortcutPos { + left = 0; + top = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + w = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; + h = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + }; + + class TextPos { + left = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; + top = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + right = 0.005; + bottom = 0.0; + }; + period = 0.4; + font = "PuristaMedium"; + size = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + text = ""; + soundEnter[] = {"\A3\ui_f\data\sound\onover", 0.09, 1}; + soundPush[] = {"\A3\ui_f\data\sound\new1", 0.0, 0}; + soundClick[] = {"\A3\ui_f\data\sound\onclick", 0.07, 1}; + soundEscape[] = {"\A3\ui_f\data\sound\onescape", 0.09, 1}; + action = ""; + + class Attributes { + font = "PuristaMedium"; + color = "#E5E5E5"; + align = "left"; + shadow = "true"; + }; + + class AttributesImage { + font = "PuristaMedium"; + color = "#E5E5E5"; + align = "left"; + }; }; -class btc_dlg_button : btc_dlg_shortcutButton +class btc_dlg_button : btc_dlg_shortcutButton { - idc = -1; - type = 16; - style = "0x02 + 0xC0"; - default = 0; - shadow = 0; - x = 0; - y = 0; - w = 0.15;//0.095589; - h = 0.039216; - animTextureNormal = "#(argb,8,8,3)color(1,1,1,1)"; - animTextureDisabled = "#(argb,8,8,3)color(1,1,1,1)"; - animTextureOver = "#(argb,8,8,3)color(1,1,1,0.5)"; - animTextureFocused = "#(argb,8,8,3)color(0,0,0,1)";//"#(argb,8,8,3)color(1,1,1,1)"; - animTexturePressed = "#(argb,8,8,3)color(0,0,0,1)";//"#(argb,8,8,3)color(1,1,1,1)"; - animTextureDefault = "#(argb,8,8,3)color(0,0,0,1)";//"#(argb,8,8,3)color(1,1,1,1)"; - colorBackground[] = {0, 0, 0, 0.8}; - colorBackground2[] = {1, 1, 1, 0.5}; - color[] = {1, 1, 1, 1}; - color2[] = {1, 1, 1, 1}; - colorText[] = {1, 1, 1, 1}; - colorDisabled[] = {1, 1, 1, 0.25}; - period = 1.2; - periodFocus = 1.2; - periodOver = 1.2; - size = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - - class TextPos { - left = "0.25 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - top = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; - right = 0.005; - bottom = 0.0; - }; - - class Attributes { - font = "PuristaLight"; - color = "#E5E5E5"; - align = "left"; - shadow = "false"; - }; - - class ShortcutPos { - left = "(6.25 * ( ((safezoneW / safezoneH) min 1.2) / 40)) - 0.0225 - 0.005"; - top = 0.005; - w = 0.0225; - h = 0.03; - }; + idc = -1; + type = 16; + style = "0x02 + 0xC0"; + default = 0; + shadow = 0; + x = 0; + y = 0; + w = 0.15;//0.095589; + h = 0.039216; + animTextureNormal = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureDisabled = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureOver = "#(argb,8,8,3)color(1,1,1,0.5)"; + animTextureFocused = "#(argb,8,8,3)color(0,0,0,1)";//"#(argb,8,8,3)color(1,1,1,1)"; + animTexturePressed = "#(argb,8,8,3)color(0,0,0,1)";//"#(argb,8,8,3)color(1,1,1,1)"; + animTextureDefault = "#(argb,8,8,3)color(0,0,0,1)";//"#(argb,8,8,3)color(1,1,1,1)"; + colorBackground[] = {0, 0, 0, 0.8}; + colorBackground2[] = {1, 1, 1, 0.5}; + color[] = {1, 1, 1, 1}; + color2[] = {1, 1, 1, 1}; + colorText[] = {1, 1, 1, 1}; + colorDisabled[] = {1, 1, 1, 0.25}; + period = 1.2; + periodFocus = 1.2; + periodOver = 1.2; + size = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + + class TextPos { + left = "0.25 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + top = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + right = 0.005; + bottom = 0.0; + }; + + class Attributes { + font = "PuristaLight"; + color = "#E5E5E5"; + align = "left"; + shadow = "false"; + }; + + class ShortcutPos { + left = "(6.25 * ( ((safezoneW / safezoneH) min 1.2) / 40)) - 0.0225 - 0.005"; + top = 0.005; + w = 0.0225; + h = 0.03; + }; }; class btc_dlg_RscListBox -{ - type = 5; - style = "0x10"; - idc=-1; - font = "puristaMedium"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)";//"(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.75)"; - rowHeight=0.025; - lineSpacing = 1; - idcRight = -1; - idcLeft = -1; - drawSideArrows = 1; - columns[] = {0.937500,0.968750,1.000000,0.7}; - colorText[] = {1,1,1,0.7}; - colorDisabled[] = {1, 1, 1, 0.6}; - colorScrollBar[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",0.85}; - colorSelect[] = {0.937500,0.968750,1.000000,0.7}; - colorSelect2[] = {0.937500,0.968750,1.000000,0.7}; - colorSelectBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",0.85}; - colorSelectBackground2[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",0.85}; - colorBackground[] = {1,1,1,0.05}; - maxHistoryDelay = 1.0; - soundSelect[] = {"",0.1,1}; - period = 1; - autoScrollSpeed = -1; - autoScrollDelay = 5; - autoScrollRewind = 0; - arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; - arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; - shadow = 0; +{ + type = 5; + style = "0x10"; + idc=-1; + font = "puristaMedium"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)";//"(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.75)"; + rowHeight=0.025; + lineSpacing = 1; + idcRight = -1; + idcLeft = -1; + drawSideArrows = 1; + columns[] = {0.937500,0.968750,1.000000,0.7}; + colorText[] = {1,1,1,0.7}; + colorDisabled[] = {1, 1, 1, 0.6}; + colorScrollBar[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",0.85}; + colorSelect[] = {0.937500,0.968750,1.000000,0.7}; + colorSelect2[] = {0.937500,0.968750,1.000000,0.7}; + colorSelectBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",0.85}; + colorSelectBackground2[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",0.85}; + colorBackground[] = {1,1,1,0.05}; + maxHistoryDelay = 1.0; + soundSelect[] = {"",0.1,1}; + period = 1; + autoScrollSpeed = -1; + autoScrollDelay = 5; + autoScrollRewind = 0; + arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; + arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; + shadow = 0; class listScrollBar - { - color[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",0.85}; - colorActive[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",0.85}; - colorDisabled[] = {1, 1, 1, 1}; - arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + { + color[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",0.85}; + colorActive[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",0.85}; + colorDisabled[] = {1, 1, 1, 1}; + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; soundSelect[] = {"\A3\ui_f\data\sound\RscListbox\soundSelect",0.09,1}; - shadow = 1; - width = 0.2; - }; + shadow = 1; + width = 0.2; + }; }; -class btc_dlg_comboBox +class btc_dlg_comboBox { - style = 16; - type = 4; - x = 0; - y = 0; - w = 0.12; - h = 0.035; - shadow = 0; - colorSelect[] = {0,0,0,1}; - colorText[] = {0.95,0.95,0.95,1}; - colorBackground[] = {0,0,0,1}; - colorSelectBackground[] = {1,1,1,0.7}; - colorScrollBar[] = {1,0,0,1}; - arrowEmpty = "\A3\ui_f\data\GUI\RscCommon\rsccombo\arrow_combo_ca.paa"; - arrowFull = "\A3\ui_f\data\GUI\RscCommon\rsccombo\arrow_combo_active_ca.paa"; - wholeHeight = 0.45; - color[] = {1,1,1,1}; - colorActive[] = {1,0,0,1}; - colorDisabled[] = {1,1,1,0.25}; - font = "PuristaMedium"; - sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - class ComboScrollBar - { - color[] = {1,1,1,0.6}; - colorActive[] = {1,1,1,1}; - colorDisabled[] = {1,1,1,0.3}; - thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; - arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; - arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; - border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; - }; - soundSelect[] = { "", 0, 1 }; - soundExpand[] = { "", 0, 1 }; - soundCollapse[] = { "", 0, 1 }; - maxHistoryDelay = 0; -}; -class btc_dlg_RscProgress -{ - type = 8; - style = 0; - colorFrame[] = {0,0,0,1}; - colorBar[] = {1,1,1,1}; - texture = "#(argb,8,8,3)color(1,1,1,1)"; - w = 1; - h = 0.03; + style = 16; + type = 4; + x = 0; + y = 0; + w = 0.12; + h = 0.035; + shadow = 0; + colorSelect[] = {0,0,0,1}; + colorText[] = {0.95,0.95,0.95,1}; + colorBackground[] = {0,0,0,1}; + colorSelectBackground[] = {1,1,1,0.7}; + colorScrollBar[] = {1,0,0,1}; + arrowEmpty = "\A3\ui_f\data\GUI\RscCommon\rsccombo\arrow_combo_ca.paa"; + arrowFull = "\A3\ui_f\data\GUI\RscCommon\rsccombo\arrow_combo_active_ca.paa"; + wholeHeight = 0.45; + color[] = {1,1,1,1}; + colorActive[] = {1,0,0,1}; + colorDisabled[] = {1,1,1,0.25}; + font = "PuristaMedium"; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + class ComboScrollBar + { + color[] = {1,1,1,0.6}; + colorActive[] = {1,1,1,1}; + colorDisabled[] = {1,1,1,0.3}; + thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; + }; + soundSelect[] = { "", 0, 1 }; + soundExpand[] = { "", 0, 1 }; + soundCollapse[] = { "", 0, 1 }; + maxHistoryDelay = 0; }; class btc_dlg_RscEdit { - type = 2; - style = 16; - font = "PuristaMedium"; - shadow = 2; - sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - autocomplete = ""; - htmlControl = true; - lineSpacing = 1; - colorBackground[] = {0, 0, 0, 0.65}; - colorText[] = {0.95, 0.95, 0.95, 1}; - colorDisabled[] = {1, 1, 1, 0.25}; - colorFocused[] = {1, 1, 1, 1.0}; - colorBackgroundFocused[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 1}; - colorSelection[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 1}; - canModify = 1; -}; \ No newline at end of file + type = 2; + style = 16; + font = "PuristaMedium"; + shadow = 2; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + autocomplete = ""; + htmlControl = true; + lineSpacing = 1; + colorBackground[] = {0, 0, 0, 0.65}; + colorText[] = {0.95, 0.95, 0.95, 1}; + colorDisabled[] = {1, 1, 1, 0.25}; + colorFocused[] = {1, 1, 1, 1.0}; + colorBackgroundFocused[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 1}; + colorSelection[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 1}; + canModify = 1; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/def/functions.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/def/functions.hpp index e3660e223..d95847e51 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/def/functions.hpp +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/def/functions.hpp @@ -1,9 +1,7 @@ -class CfgFunctions { - class btc { - class misc { - class eh_veh_init { - file = "core\fnc\eh\veh_init.sqf";//preInit = 1; - }; +class btc { + class misc { + class eh_veh_init { + file = "core\fnc\eh\veh_init.sqf";//preInit = 1; }; }; -}; \ No newline at end of file +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/def/mission.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/def/mission.sqf index c97042601..04a14e3e5 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/def/mission.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/def/mission.sqf @@ -1,10 +1,10 @@ -private ["_p_civ_veh","_p_db","_p_en","_hideout_n","_cache_info_def","_cache_info_ratio","_info_chance","_p_rep","_p_skill","_c_array","_tower","_array","_chopper","_p_civ","_btc_rearming_vehicles","_vehicles","_magazines","_p_city_radius","_magazines_static","_static","_btc_rearming_static","_magazines_clean","_weapons_usefull","_magazines_static_clean","_p_en_AA"]; +private ["_p_civ_veh","_p_db","_p_en","_hideout_n","_cache_info_def","_cache_info_ratio","_info_chance","_p_rep","_p_skill","_c_array","_tower","_p_civ","_rearming_vehicles","_vehicles","_magazines","_p_city_radius","_magazines_static","_static","_rearming_static","_magazines_clean","_weapons_usefull","_magazines_static_clean","_p_en_AA","_p_ied_spot"]; -btc_version = 1.17; diag_log format ["=BTC= HEARTS AND MINDS VERSION %1",(str(btc_version) + ".8")]; +btc_version = 1.18; +diag_log format ["=BTC= HEARTS AND MINDS VERSION %1.0", btc_version]; //Param - //<< Time options >> btc_p_time = "btc_p_time" call BIS_fnc_getParamValue; btc_p_acctime = "btc_p_acctime" call BIS_fnc_getParamValue; @@ -20,6 +20,8 @@ _p_civ_veh = "btc_p_civ_veh" call BIS_fnc_getParamValue; //<< IED options >> btc_p_ied = ("btc_p_ied" call BIS_fnc_getParamValue)/2; +_p_ied_spot = "btc_p_ied_spot" call BIS_fnc_getParamValue; +btc_p_ied_drone = ("btc_p_ied_drone" call BIS_fnc_getParamValue) isEqualTo 1; //<< Hideout/Cache options >> _hideout_n = "btc_p_hideout_n" call BIS_fnc_getParamValue; @@ -33,8 +35,8 @@ btc_p_redeploy = ("btc_p_redeploy" call BIS_fnc_getParamValue) isEqualTo 1; //<< Skill options >> btc_p_set_skill = ("btc_p_set_skill" call BIS_fnc_getParamValue) isEqualTo 1; _p_skill = [ - ("btc_p_set_skill_general" call BIS_fnc_getParamValue)/10,//general - ("btc_p_set_skill_aimingAccuracy" call BIS_fnc_getParamValue)/10,//aimingAccuracy + ("btc_p_set_skill_general" call BIS_fnc_getParamValue)/10,//general + ("btc_p_set_skill_aimingAccuracy" call BIS_fnc_getParamValue)/10,//aimingAccuracy ("btc_p_set_skill_aimingShake" call BIS_fnc_getParamValue)/10,//aimingShake ("btc_p_set_skill_aimingSpeed" call BIS_fnc_getParamValue)/10,//aimingSpeed ("btc_p_set_skill_endurance" call BIS_fnc_getParamValue)/10,//endurance @@ -52,143 +54,157 @@ btc_p_veh_armed_spawn_more = ("btc_p_veh_armed_spawn_more" call BIS_fnc_getParam btc_p_side_mission_cycle = ("btc_p_side_mission_cycle" call BIS_fnc_getParamValue) isEqualTo 1; //<< Other options >> +btc_p_arsenalType = "btc_p_arsenalType" call BIS_fnc_getParamValue; _p_rep = "btc_p_rep" call BIS_fnc_getParamValue; btc_p_garage = ("btc_p_garage" call BIS_fnc_getParamValue) isEqualTo 1; _p_city_radius = ("btc_p_city_radius" call BIS_fnc_getParamValue) * 100; btc_p_trigger = if (("btc_p_trigger" call BIS_fnc_getParamValue) isEqualTo 1) then {"this && !btc_db_is_saving && (false in (thisList apply {_x isKindOf 'Plane'})) && (false in (thisList apply {(_x isKindOf 'Helicopter') && (speed _x > 190)}))"} else {"this && !btc_db_is_saving"}; btc_p_debug = "btc_p_debug" call BIS_fnc_getParamValue; -//btc_acre_mod = isClass(configFile >> "cfgPatches" >> "acre_main"); -//btc_tfr_mod = isClass(configFile >> "cfgPatches" >> "task_force_radio"); - switch (btc_p_debug) do { - case 0 : {btc_debug_log = false;btc_debug = false;}; - case 1 : {btc_debug_log = true;btc_debug = true;}; - case 2 : {btc_debug_log = true;btc_debug = false;}; + case 0 : {btc_debug_log = false;btc_debug = false;}; + case 1 : {btc_debug_log = true;btc_debug = true;}; + case 2 : {btc_debug_log = true;btc_debug = false;}; }; if (!isMultiplayer) then {btc_debug_log = true;btc_debug = true;}; if (isServer) then { - btc_final_phase = false; - - //City - btc_city_radius = _p_city_radius; - btc_city_blacklist = [];//NAME FROM CFG - - //Civ - btc_civ_veh_active = []; - - //Database - btc_db_is_saving = false; - btc_db_load = _p_db; - - //Hideout - btc_hideouts = []; - btc_hideouts_id = 0; - btc_hideouts_radius = 400; - btc_hideout_n = _hideout_n; - if (btc_hideout_n == 99) then { - btc_hideout_n = (round random 5); - }; - btc_hideout_safezone = 4000; - btc_hideout_range = 3500; - btc_hideout_rinf_time = 600; - btc_hideout_cap_time = 1800; - btc_hideout_cap_checking = false; - - //IED - btc_ied_suic_time = 900; - btc_ied_suic_spawned = - btc_ied_suic_time; - - //FOB - btc_fobs = [[],[]]; - - - //Log - btc_log_id_repo = 10; - btc_log_cargo_repo = "Land_HBarrierBig_F" createVehicle [- 5000,- 5000,0]; - - //Patrol - btc_patrol_max = 8; - btc_patrol_active = []; - btc_patrol_area = 2500; - - //Rep - btc_global_reputation = _p_rep; - btc_rep_militia_call_time = 600; - btc_rep_militia_called = - btc_rep_militia_call_time; - - //Hideout classname - btc_type_campfire = ["MetalBarrel_burning_F","Campfire_burning_F","Land_Campfire_F","FirePlace_burning_F"]; - btc_type_bigbox = ["Box_FIA_Ammo_F","Box_East_AmmoVeh_F","CargoNet_01_box_F","O_CargoNet_01_ammo_F","Land_Pallet_MilBoxes_F","Land_PaperBox_open_full_F"]; - btc_type_seat = ["Land_WoodenLog_F","Land_CampingChair_V2_F","Land_CampingChair_V1_folded_F","Land_CampingChair_V1_F"]; - btc_type_sleepingbag = ["Land_Sleeping_bag_F","Land_Sleeping_bag_blue_F","Land_Sleeping_bag_brown_F"]; - btc_type_tent = ["Land_TentA_F","Land_TentDome_F"]; - btc_type_camonet = ["CamoNet_ghex_big_F","CamoNet_OPFOR_big_F","CamoNet_INDP_big_F","CamoNet_BLUFOR_big_F","CamoNet_OPFOR_open_F","CamoNet_ghex_open_F","CamoNet_BLUFOR_open_F","Land_IRMaskingCover_02_F","CamoNet_BLUFOR_F","CamoNet_ghex_F","CamoNet_OPFOR_F","CamoNet_INDP_F"]; - - //Side - btc_side_aborted = false; - btc_side_assigned = false; - btc_side_done = false; - btc_side_failed = false; - //Side 9 and 11 are not think for map with different islands. Start and end city can be on different islands. - btc_side_list = if (btc_p_sea) then {[0,1,2,3,4,5,6,7,8,9,10,11,12,13]} else {[0,1,2,3,4,5,6,9,10,11,12,13]}; - btc_side_list_use = + btc_side_list; - btc_side_jip_data = []; - btc_type_tower = ["Land_Communication_F","Land_TTowerBig_1_F","Land_TTowerBig_2_F"]; - btc_type_phone = ["Land_PortableLongRangeRadio_F","Land_MobilePhone_smart_F","Land_MobilePhone_old_F"]; - btc_type_barrel = ["Land_GarbageBarrel_01_F","Land_BarrelSand_grey_F","MetalBarrel_burning_F","Land_BarrelWater_F","Land_MetalBarrel_F","Land_MetalBarrel_empty_F"]; - btc_type_canister = ["Land_CanisterPlastic_F"]; - btc_type_pallet = ["Land_Pallets_stack_F","Land_Pallets_F","Land_Pallet_F"]; - btc_type_box = ["Box_East_Wps_F","Box_East_WpsSpecial_F","Box_East_Ammo_F"]; - btc_type_generator = ["Land_Device_assembled_F","Land_Device_disassembled_F"]; - btc_type_storagebladder = ["StorageBladder_02_water_forest_F","StorageBladder_02_water_sand_F"]; - btc_type_mines = ["APERSMine","APERSBoundingMine","APERSTripMine"]; - btc_type_power = ["WaterPump_01_sand_F","WaterPump_01_forest_F","Land_PressureWasher_01_F","Land_DieselGroundPowerUnit_01_F","Land_JetEngineStarter_01_F","Land_PowerGenerator_F","Land_PortableGenerator_01_F"]; - btc_type_cord = ["Land_ExtensionCord_F"]; - - //Vehs - btc_vehicles = [btc_veh_1,btc_veh_2,btc_veh_3,btc_veh_4,btc_veh_5,btc_veh_6,btc_veh_7,btc_veh_8,btc_veh_9,btc_veh_10,btc_veh_11,btc_veh_12,btc_veh_13,btc_veh_14,btc_veh_15]; - btc_helo = [btc_helo_1]; - - // The two arrays below are prefixes of buildings and their multiplier. - // They will multiply the values of btc_rep_malus_building_destroyed and btc_rep_malus_building_damaged, - // if a building is not present here it will be multiplied by 1.0. - // Use 0.0 to disable reputation hit on a specific's building destruction. - // You can modify this for any other terrain, clearing the table will also make all buildings just have a 1.0 multiplier. - // If there's a hit in btc_buildings_multiplier, btc_buildings_categories_multipliers will NOT be run - btc_buildings_multipliers = [ - // Specific buildings that need to have a custom modifier. - ["Land_BellTower", 0.2 ], ["Land_WIP", 1.5], ["Land_u_Addon_01", 0.2], - ["Land_Airport_Tower", 10.0], ["Land_Mil_ControlTower", 10.0], - ["Land_TentHangar", 7.0], ["Land_i_Shed_Ind", 1.5], ["Land_u_Shed_Ind", 1.5], - ["Land_TTowerBig", 6.0], ["Land_TTowerSmall", 4.5], ["Land_cmp_Tower", 4.0] - ]; - - // The multipliers are applied on top of each other, so "Chapel" and "Small" will both multiply the malus value - btc_buildings_categories_multipliers = [ - ["Shed", 0.75], ["Slum", 0.8], ["Small", 0.8], ["Big", 1.5], ["Villa", 2.0], ["Main", 3.0], ["Tower", 2.0], - ["HouseBlock", 2.0], ["Panelak", 2.0], ["Tenement", 7.0], - ["Barn", 1.5], ["School", 3.0], ["Office", 2.0], ["Shop", 1.5], ["Store", 1.5], ["Hospital", 12.0], - ["Castle", 2.5], ["Chapel", 3.0], ["Minaret", 3.0], ["Mosque", 4.0], ["Church", 4.0], ["Kostel", 4.0], - ["Lighthouse", 4.0], - ["Airport", 4.0], ["Hangar", 1.75], ["ControlTower", 2.25], ["Terminal", 3.0], - ["Hopper", 2.0], ["Tank", 4.0], ["Factory", 2.0], ["Transformer", 1.1], - ["FuelStation", 5.0], - ["Barracks", 1.75], - ["spp", 3.0], ["Powerstation", 3.0], - ["Pump", 2.5] - ]; - btc_buildings_changed = []; + btc_final_phase = false; + + private _allclass = ("true" configClasses (configFile >> "CfgVehicles")) apply {configName _x}; + _allclass = _allclass select {getNumber(configfile >> "CfgVehicles" >> _x >> "scope") isEqualTo 2}; + + //City + btc_city_radius = _p_city_radius; + btc_city_blacklist = [];//NAME FROM CFG + + //Civ + btc_civ_veh_active = []; + + //Database + btc_db_is_saving = false; + btc_db_load = _p_db; + + //Hideout + btc_hideouts = []; + btc_hideouts_id = 0; + btc_hideouts_radius = 400; + btc_hideout_n = _hideout_n; + if (btc_hideout_n == 99) then { + btc_hideout_n = round random 5; + }; + btc_hideout_safezone = 4000; + btc_hideout_range = 3500; + btc_hideout_rinf_time = 600; + btc_hideout_cap_time = 1800; + btc_hideout_cap_checking = false; + + //IED + btc_ied_suic_time = 900; + btc_ied_suic_spawned = - btc_ied_suic_time; + btc_ied_offset = [0, -0.03, -0.07] select _p_ied_spot; + + //FOB + btc_fobs = [[], []]; + + + //Log + btc_log_id_repo = 10; + btc_log_cargo_repo = "Land_HBarrierBig_F" createVehicle [- 5000, - 5000, 0]; + + //Patrol + btc_patrol_max = 8; + btc_patrol_active = []; + btc_patrol_area = 2500; + + //Rep + btc_global_reputation = _p_rep; + btc_rep_militia_call_time = 600; + btc_rep_militia_called = - btc_rep_militia_call_time; + + //Hideout classname + btc_type_campfire = ["MetalBarrel_burning_F","Campfire_burning_F","Land_Campfire_F","FirePlace_burning_F"]; + btc_type_bigbox = ["Box_FIA_Ammo_F","Box_East_AmmoVeh_F","CargoNet_01_box_F","O_CargoNet_01_ammo_F","Land_Pallet_MilBoxes_F","Land_PaperBox_open_full_F"]; + btc_type_seat = ["Land_WoodenLog_F","Land_CampingChair_V2_F","Land_CampingChair_V1_folded_F","Land_CampingChair_V1_F"]; + btc_type_sleepingbag = ["Land_Sleeping_bag_F","Land_Sleeping_bag_blue_F","Land_Sleeping_bag_brown_F"]; + btc_type_tent = ["Land_TentA_F","Land_TentDome_F"]; + btc_type_camonet = ["CamoNet_ghex_big_F","CamoNet_OPFOR_big_F","CamoNet_INDP_big_F","CamoNet_BLUFOR_big_F","CamoNet_OPFOR_open_F","CamoNet_ghex_open_F","CamoNet_BLUFOR_open_F","Land_IRMaskingCover_02_F","CamoNet_BLUFOR_F","CamoNet_ghex_F","CamoNet_OPFOR_F","CamoNet_INDP_F"]; + + //Side + btc_side_aborted = false; + btc_side_assigned = false; + btc_side_done = false; + btc_side_failed = false; + btc_side_list = [0, 1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 13]; // On ground (Side 9 and 11 are not think for map with different islands. Start and end city can be on different islands.) + if (btc_p_sea) then {btc_side_list append [7, 8]}; // On sea + btc_side_list_use = + btc_side_list; + btc_side_jip_data = []; + btc_type_tower = ["Land_Communication_F","Land_TTowerBig_1_F","Land_TTowerBig_2_F"]; + btc_type_phone = ["Land_PortableLongRangeRadio_F","Land_MobilePhone_smart_F","Land_MobilePhone_old_F"]; + btc_type_barrel = ["Land_GarbageBarrel_01_F","Land_BarrelSand_grey_F","MetalBarrel_burning_F","Land_BarrelWater_F","Land_MetalBarrel_F","Land_MetalBarrel_empty_F"]; + btc_type_canister = ["Land_CanisterPlastic_F"]; + btc_type_pallet = ["Land_Pallets_stack_F","Land_Pallets_F","Land_Pallet_F"]; + btc_type_box = ["Box_East_Wps_F","Box_East_WpsSpecial_F","Box_East_Ammo_F"]; + btc_type_generator = ["Land_Device_assembled_F","Land_Device_disassembled_F"]; + btc_type_storagebladder = ["StorageBladder_02_water_forest_F","StorageBladder_02_water_sand_F"]; + btc_type_mines = ["APERSMine","APERSBoundingMine","APERSTripMine"]; + btc_type_power = ["WaterPump_01_sand_F","WaterPump_01_forest_F","Land_PressureWasher_01_F","Land_DieselGroundPowerUnit_01_F","Land_JetEngineStarter_01_F","Land_PowerGenerator_F","Land_PortableGenerator_01_F"]; + btc_type_cord = ["Land_ExtensionCord_F"]; + btc_type_cones = ["Land_RoadCone_01_F", "RoadCone_F"]; + btc_type_fences = ["Land_PlasticNetFence_01_long_F", "Land_PlasticNetFence_01_long_d_F", "RoadBarrier_F", "TapeSign_F"]; + btc_type_portable_light = ["Land_PortableLight_double_F", "Land_PortableLight_single_F"]; + btc_type_first_aid_kits = ["Land_FirstAidKit_01_open_F", "Land_FirstAidKit_01_closed_F"]; + btc_type_body_bags = _allclass select { + (_x isKindOf "Land_Bodybag_01_base_F") || + (_x isKindOf "Land_Bodybag_01_empty_base_F") || + (_x isKindOf "Land_Bodybag_01_folded_base_F") + }; + btc_type_signs = _allclass select {_x isKindOf "Land_Sign_Mines_F"}; + btc_type_bloods = _allclass select {_x isKindOf "Blood_01_Base_F"}; + btc_type_medicals = _allclass select {_x isKindOf "MedicalGarbage_01_Base_F"}; + + //BTC Vehicles in missions.sqm + btc_vehicles = [btc_veh_1,btc_veh_2,btc_veh_3,btc_veh_4,btc_veh_5,btc_veh_6,btc_veh_7,btc_veh_8,btc_veh_9,btc_veh_10,btc_veh_11,btc_veh_12,btc_veh_13,btc_veh_14,btc_veh_15]; + btc_helo = [btc_helo_1]; + + // The two arrays below are prefixes of buildings and their multiplier. + // They will multiply the values of btc_rep_malus_building_destroyed and btc_rep_malus_building_damaged, + // if a building is not present here it will be multiplied by 1.0. + // Use 0.0 to disable reputation hit on a specific's building destruction. + // You can modify this for any other terrain, clearing the table will also make all buildings just have a 1.0 multiplier. + // If there's a hit in btc_buildings_multiplier, btc_buildings_categories_multipliers will NOT be run + btc_buildings_multipliers = [ + // Specific buildings that need to have a custom modifier. + ["Land_BellTower", 0.2 ], ["Land_WIP", 1.5], ["Land_u_Addon_01", 0.2], + ["Land_Airport_Tower", 10.0], ["Land_Mil_ControlTower", 10.0], + ["Land_TentHangar", 7.0], ["Land_i_Shed_Ind", 1.5], ["Land_u_Shed_Ind", 1.5], + ["Land_TTowerBig", 6.0], ["Land_TTowerSmall", 4.5], ["Land_cmp_Tower", 4.0] + ]; + + // The multipliers are applied on top of each other, so "Chapel" and "Small" will both multiply the malus value + btc_buildings_categories_multipliers = [ + ["Shed", 0.75], ["Slum", 0.8], ["Small", 0.8], ["Big", 1.5], ["Villa", 2.0], ["Main", 3.0], ["Tower", 2.0], + ["HouseBlock", 2.0], ["Panelak", 2.0], ["Tenement", 7.0], + ["Barn", 1.5], ["School", 3.0], ["Office", 2.0], ["Shop", 1.5], ["Store", 1.5], ["Hospital", 12.0], + ["Castle", 2.5], ["Chapel", 3.0], ["Minaret", 3.0], ["Mosque", 4.0], ["Church", 4.0], ["Kostel", 4.0], + ["Lighthouse", 4.0], + ["Airport", 4.0], ["Hangar", 1.75], ["ControlTower", 2.25], ["Terminal", 3.0], + ["Hopper", 2.0], ["Tank", 4.0], ["Factory", 2.0], ["Transformer", 1.1], + ["FuelStation", 5.0], + ["Barracks", 1.75], + ["spp", 3.0], ["Powerstation", 3.0], + ["Pump", 2.5] + ]; + btc_buildings_changed = []; }; //Civ // Get all faction from mod there are currently running //copyToClipboard str (["CIV"] call btc_fnc_get_class); private _allfaction = ["AFGCIV","CIV_F","BTC_AC","CAF_AG_AFR_CIV","CAF_AG_ME_CIV","COREV_AFCIV","COREV_ASCIV","COREV_CDFCIV","COREV_TKCIV","CUP_C_RU","CUP_C_CHERNARUS","CUP_C_SAHRANI","CUP_C_TK","LIB_CIV","LOP_AFR_CIV","LOP_CHR_CIV","LOP_TAK_CIV","OPTRE_UEG_CIV","CIV_IDAP_F","RDS_RUS_CIV","UNSUNG_C"]; //All factions -_p_civ = _allfaction select _p_civ; //Select faction selected from mission parameter -_p_civ_veh = _allfaction select _p_civ_veh; //Select faction selected from mission parameter +_p_civ = _allfaction select _p_civ; //Select faction selected from mission parameter +_p_civ_veh = _allfaction select _p_civ_veh; //Select faction selected from mission parameter private _allclasse = [[_p_civ]] call btc_fnc_civ_class; //Create classes from factions, you can combine factions from the SAME side : [[_p_civ , "btc_ac","LOP_TAK_CIV"]] call btc_fnc_civ_class. //Save class name to global variable @@ -224,118 +240,119 @@ btc_int_search_intel_time = 4; //Info btc_info_intel_chance = _info_chance; -btc_info_intel_type = [80,95];//cache - hd - both +btc_info_intel_type = [80, 95];//cache - hd - both btc_info_cache_def = _cache_info_def; btc_info_cache_ratio = _cache_info_ratio; btc_info_hideout_radius = 4000; //Supplies -btc_supplies_mat = "Land_Cargo20_red_F"; +btc_supplies_mat = "Land_Cargo20_IDAP_F"; + +//Containers +btc_containers_mat = ["Land_Cargo20_military_green_F", "Land_Cargo40_military_green_F"]; //Player -btc_player_side = west; -btc_respawn_marker = "respawn_west"; +btc_player_side = west; +btc_respawn_marker = "respawn_west"; //Log if (isServer) then { - #define REARM_TURRET_PATHS [[-1], [0], [0,0], [0,1], [1], [2], [0,2]] - - _btc_rearming_vehicles = [btc_vehicles + btc_helo,[]] call btc_fnc_find_veh_with_turret; - private _btc_rearming_magazines = []; - { - private _vehicle_type = _x; - private _vehicle = ((btc_vehicles + btc_helo) select {typeOf _x isEqualTo _vehicle_type}) select 0; - private _magazines = [_vehicle] call btc_fnc_log_getRearmMagazines; - _btc_rearming_magazines pushBack _magazines; - } forEach _btc_rearming_vehicles; - - - private _allclass = ("true" configClasses (configFile >> "CfgVehicles")) apply {configName _x}; - _allclass = _allclass select {(getNumber(configfile >> "CfgVehicles" >> _x >> "scope") isEqualTo 2)}; - - _btc_rearming_static = - [ - //"Static" - "B_Mortar_01_F" - ] + (_allclass select {((_x isKindOf "StaticGrenadeLauncher") || (_x isKindOf "StaticMGWeapon")) && (getNumber(configfile >> "CfgVehicles" >> _x >> "side") isEqualTo ([east,west,independent,civilian] find btc_player_side))}); - - _magazines_static = []; - { - _static = _x; - { - _magazines_static append (([_static,_x] call btc_fnc_log_getconfigmagazines)); - } forEach REARM_TURRET_PATHS; - } forEach _btc_rearming_static; - _magazines_static = _magazines_static - ["FakeWeapon"]; - _magazines_static_clean = []; - { - _magazines_static_clean pushBackUnique _x; - } forEach _magazines_static; - - btc_construction_array = - [ - [ - "Fortifications", - "Static", - "Ammobox", - "Containers", - "Supplies", - "FOB", - "Vehicle Logistic" - ] + (_btc_rearming_vehicles apply {getText (configFile >> "cfgVehicles" >> _x >> "displayName")}), - [ - [ - //"Fortifications" - "Land_BagBunker_Small_F", - "Land_BagFence_Corner_F", - "Land_BagFence_End_F", - "Land_BagFence_Long_F", - "Land_BagFence_Round_F", - "Land_BagFence_Short_F", - "Land_HBarrier_1_F", - "Land_HBarrier_3_F", - "Land_HBarrier_5_F", - "Land_HBarrierBig_F", - "Land_Razorwire_F", - "Land_CncBarrier_F", - "Land_CncBarrierMedium_F", - "Land_CncBarrierMedium4_F", - "Land_CncWall1_F", - "Land_CncWall4_F", - "Land_Mil_ConcreteWall_F", - "Land_Mil_WallBig_4m_F", - "Land_Mil_WallBig_Corner_F", - "Land_PortableLight_double_F", - "Land_Pod_Heli_Transport_04_medevac_black_F", - "B_Slingload_01_Fuel_F" - ], - _btc_rearming_static + _magazines_static_clean, - [ - //"Ammobox" - "Land_WoodenBox_F" - - ] + (_allclass select {_x isKindOf "ReammoBox_F" && !(_x isKindOf "Slingload_01_Base_F") && !(_x isKindOf "Pod_Heli_Transport_04_base_F")}), - [ - //"Containers" - "Land_Cargo20_military_green_F", - "Land_Cargo40_military_green_F" - ], - [ - //"Supplies" - btc_supplies_mat - ], - [ - //"FOB" - btc_fob_mat - ], - [ - //"Vehicle logistic" - "ACE_Wheel", - "ACE_Track" - ] - ] + _btc_rearming_magazines - ]; - publicVariable "btc_construction_array"; + #define REARM_TURRET_PATHS [[-1], [0], [0,0], [0,1], [1], [2], [0,2]] + + private _allclass = ("true" configClasses (configFile >> "CfgVehicles")) apply {configName _x}; + _allclass = _allclass select {getNumber(configfile >> "CfgVehicles" >> _x >> "scope") isEqualTo 2}; + + _rearming_vehicles = [btc_vehicles + btc_helo,[]] call btc_fnc_find_veh_with_turret; + private _rearming_magazines = []; + { + private _vehicle_type = _x; + private _vehicle = ((btc_vehicles + btc_helo) select {typeOf _x isEqualTo _vehicle_type}) select 0; + private _magazines = [_vehicle] call btc_fnc_log_getRearmMagazines; + _rearming_magazines pushBack _magazines; + } forEach _rearming_vehicles; + + _rearming_static = + [ + //"Static" + "B_Mortar_01_F" + ] + (_allclass select {((_x isKindOf "StaticGrenadeLauncher") || (_x isKindOf "StaticMGWeapon")) && (getNumber(configfile >> "CfgVehicles" >> _x >> "side") isEqualTo ([east,west,independent,civilian] find btc_player_side))}); + + _magazines_static = []; + { + _static = _x; + { + _magazines_static append (([_static,_x] call btc_fnc_log_getconfigmagazines)); + } forEach REARM_TURRET_PATHS; + } forEach _rearming_static; + _magazines_static = _magazines_static - ["FakeWeapon"]; + _magazines_static_clean = []; + { + _magazines_static_clean pushBackUnique _x; + } forEach _magazines_static; + + btc_construction_array = + [ + [ + "Fortifications", + "Static", + "Ammobox", + "Containers", + "Supplies", + "FOB", + "Vehicle Logistic" + ] + (_rearming_vehicles apply {getText (configFile >> "cfgVehicles" >> _x >> "displayName")}), + [ + [ + //"Fortifications" + "Land_BagBunker_Small_F", + "Land_BagFence_Corner_F", + "Land_BagFence_End_F", + "Land_BagFence_Long_F", + "Land_BagFence_Round_F", + "Land_BagFence_Short_F", + "Land_HBarrier_1_F", + "Land_HBarrier_3_F", + "Land_HBarrier_5_F", + "Land_HBarrierBig_F", + "Land_Razorwire_F", + "Land_CncBarrier_F", + "Land_CncBarrierMedium_F", + "Land_CncBarrierMedium4_F", + "Land_CncWall1_F", + "Land_CncWall4_F", + "Land_Mil_ConcreteWall_F", + "Land_Mil_WallBig_4m_F", + "Land_Mil_WallBig_Corner_F", + "Land_PortableLight_double_F", + "Land_Pod_Heli_Transport_04_medevac_black_F", + "B_Slingload_01_Fuel_F" + ], + _rearming_static + _magazines_static_clean, + [ + //"Ammobox" + "Land_WoodenBox_F" + + ] + (_allclass select {_x isKindOf "ReammoBox_F" && !(_x isKindOf "Slingload_01_Base_F") && !(_x isKindOf "Pod_Heli_Transport_04_base_F")}), + [ + //"Containers" + + ] + btc_containers_mat, + [ + //"Supplies" + btc_supplies_mat + ], + [ + //"FOB" + btc_fob_mat + ], + [ + //"Vehicle logistic" + "ACE_Wheel", + "ACE_Track" + ] + ] + _rearming_magazines + ]; + publicVariable "btc_construction_array"; }; _c_array = btc_construction_array select 1; @@ -352,117 +369,112 @@ btc_log_obj_created = []; btc_log_main_cc = [ - "Helicopter",6, - "Ship",3, - "Tank",5, - "Wheeled_APC",5, - "Truck",10, - "Truck_F",10, - "Motorcycle",1, - "Car",3 + "Helicopter",6, + "Ship",3, + "Tank",5, + "Wheeled_APC",5, + "Truck",10, + "Truck_F",10, + "Motorcycle",1, + "Car",3 ]; btc_log_main_rc = [ - "ReammoBox_F",2, - "thingX",3, - "StaticWeapon",3, - "Strategic",2, - "Motorcycle",3, - "Land_BarGate_F",3, - "HBarrier_base_F",5, - "Land_BagFence_Long_F",3, - "Wall_F",5, - "BagBunker_base_F",5, - "Wheeled_APC",50, - "Tank",75, - "Truck",50, - "Truck_F",50, - "Ship",50, - "Helicopter",9999, - "Car",35 + "ReammoBox_F",2, + "thingX",3, + "StaticWeapon",3, + "Strategic",2, + "Motorcycle",3, + "Land_BarGate_F",3, + "HBarrier_base_F",5, + "Land_BagFence_Long_F",3, + "Wall_F",5, + "BagBunker_base_F",5, + "Wheeled_APC",50, + "Tank",75, + "Truck",50, + "Truck_F",50, + "Ship",50, + "Helicopter",9999, + "Car",35 ]; btc_log_def_cc = [ - "B_Quadbike_01_F",2, - "B_UGV_01_rcws_F",4, - "B_UGV_01_F",4, - "Land_CargoBox_V1_F",0, - btc_supplies_mat,0, - btc_fob_mat,0, - "Land_Cargo20_military_green_F",20, - "Land_Cargo40_military_green_F",40, - "B_Slingload_01_Fuel_F",0, - "Land_Pod_Heli_Transport_04_medevac_black_F",0, - //Trucks - "B_Truck_01_transport_F",10, - "B_Truck_01_covered_F",10, - "I_Truck_02_covered_F",10, - "O_Truck_02_covered_F",10, - "I_Truck_02_transport_F",10, - "O_Truck_02_transport_F",10, - "O_Truck_02_transport_F",10 + "B_Quadbike_01_F",2, + "B_UGV_01_rcws_F",4, + "B_UGV_01_F",4, + "Land_CargoBox_V1_F",0, + btc_supplies_mat,0, + btc_fob_mat,0, + "Land_Cargo20_military_green_F",20, + "Land_Cargo40_military_green_F",40, + "B_Slingload_01_Fuel_F",0, + "Land_Pod_Heli_Transport_04_medevac_black_F",0, + //Trucks + "B_Truck_01_transport_F",10, + "B_Truck_01_covered_F",10, + "I_Truck_02_covered_F",10, + "O_Truck_02_covered_F",10, + "I_Truck_02_transport_F",10, + "O_Truck_02_transport_F",10, + "O_Truck_02_transport_F",10 ]; btc_log_def_rc = [ - "Land_BagBunker_Small_F",5, - "Land_CargoBox_V1_F",9999, - btc_supplies_mat,10, - btc_fob_mat,10, - "Land_Cargo20_military_green_F",20, - "Land_Cargo40_military_green_F",40, - "B_Slingload_01_Fuel_F",20, - "Land_Pod_Heli_Transport_04_medevac_black_F",20 + "Land_BagBunker_Small_F",5, + "Land_CargoBox_V1_F",9999, + btc_supplies_mat,10, + btc_fob_mat,10, + "Land_Cargo20_military_green_F",20, + "Land_Cargo40_military_green_F",40, + "B_Slingload_01_Fuel_F",20, + "Land_Pod_Heli_Transport_04_medevac_black_F",20 ]; btc_fnc_log_get_nottowable = { - private _tower = _this select 0; - switch (true) do { - //The tower is a tank so it can't tow: plane and helicopter - case (_tower isKindOf "Tank") : {["Plane","Helicopter"];}; - case (_tower isKindOf "Truck_F") : {["Plane","Helicopter"];}; - case (_tower isKindOf "Truck") : {["Plane","Helicopter"];}; - case (_tower isKindOf "Ship") : {["Car","Truck","Truck_F","Tank","Plane","Helicopter"];}; - //The tower is a car so it can't tow: truck, tank, plane and helicopter - case (_tower isKindOf "Car") : {["Truck","Truck_F","Tank","Plane","Helicopter"];}; - default {["Car","Truck","Truck_F","Tank","Plane","Helicopter","Ship"];}; - }; + private _tower = _this select 0; + switch (true) do { + //The tower is a tank so it can't tow: plane and helicopter + case (_tower isKindOf "Tank") : {["Plane","Helicopter"];}; + case (_tower isKindOf "Truck_F") : {["Plane","Helicopter"];}; + case (_tower isKindOf "Truck") : {["Plane","Helicopter"];}; + case (_tower isKindOf "Ship") : {["Car","Truck","Truck_F","Tank","Plane","Helicopter"];}; + //The tower is a car so it can't tow: truck, tank, plane and helicopter + case (_tower isKindOf "Car") : {["Truck","Truck_F","Tank","Plane","Helicopter"];}; + default {["Car","Truck","Truck_F","Tank","Plane","Helicopter","Ship"];}; + }; }; //Lift btc_fnc_log_get_liftable = { - _chopper = _this select 0; - _array = []; - switch (typeOf _chopper) do { - //MH9 - case "B_Heli_Light_01_F" : {_array = ["Motorcycle","ReammoBox","ReammoBox_F","Quadbike_01_base_F","Strategic"];}; - //PO-30 - case "O_Heli_Light_02_F" : {_array = ["Motorcycle","ReammoBox","ReammoBox_F","StaticWeapon","Car"];}; - - case "RHS_UH1Y_d" : {_array = (["Motorcycle","ReammoBox","ReammoBox_F","StaticWeapon","Car","Truck","Wheeled_APC_F","Air","Ship"]) + ((btc_construction_array select 1) select 3) + ((btc_construction_array select 1) select 4) + ((btc_construction_array select 1) select 5);}; - - //UH80 - case "B_Heli_Transport_01_F" : {_array = (["Motorcycle","ReammoBox","ReammoBox_F","StaticWeapon","Car","Truck","Wheeled_APC_F","Air","Ship"]) + ((btc_construction_array select 1) select 3) + ((btc_construction_array select 1) select 4) + ((btc_construction_array select 1) select 5);}; - //UH80 - CAMO - case "B_Heli_Transport_01_camo_F" : {_array = (["Motorcycle","ReammoBox","ReammoBox_F","StaticWeapon","Car","Truck","Wheeled_APC_F","Air","Ship"]) + ((btc_construction_array select 1) select 3) + ((btc_construction_array select 1) select 4) + ((btc_construction_array select 1) select 5);}; - //CH49 - case "I_Heli_Transport_02_F" : {_array = (["Motorcycle","ReammoBox","ReammoBox_F","StaticWeapon","Car","Truck","Wheeled_APC_F","Tracked_APC","APC_Tracked_01_base_F","APC_Tracked_02_base_F","Air","Ship","Tank"]) + ((btc_construction_array select 1) select 3) + ((btc_construction_array select 1) select 4) + ((btc_construction_array select 1) select 5);}; - - case "RHS_CH_47F_10" : {_array = (["Motorcycle","ReammoBox","ReammoBox_F","StaticWeapon","Car","Truck","Wheeled_APC_F","Tracked_APC","APC_Tracked_01_base_F","APC_Tracked_02_base_F","Air","Ship","Tank"]) + ((btc_construction_array select 1) select 3) + ((btc_construction_array select 1) select 4) + ((btc_construction_array select 1) select 5);}; - - case "B_SDV_01_F" : {_array = (["Motorcycle","ReammoBox","ReammoBox_F","StaticWeapon","Car","Truck","Wheeled_APC_F","Tracked_APC","APC_Tracked_01_base_F","APC_Tracked_02_base_F","Air","Ship","Tank"]) + ((btc_construction_array select 1) select 3) + ((btc_construction_array select 1) select 4) + ((btc_construction_array select 1) select 5);}; - - default { - private ["_MaxCargoMass"]; - _MaxCargoMass = getNumber (configFile >> "CfgVehicles" >> typeOf _chopper >> "slingLoadMaxCargoMass"); - switch (true) do { - case (_MaxCargoMass <= 500) : {_array = ["Motorcycle","ReammoBox","ReammoBox_F","Quadbike_01_base_F","Strategic"];}; - case (_MaxCargoMass <= 4100) : {_array = (["Motorcycle","ReammoBox","ReammoBox_F","StaticWeapon","Car","Truck_F","Truck","Wheeled_APC_F","Air","Ship"]) + ((btc_construction_array select 1) select 3) + ((btc_construction_array select 1) select 4) + ((btc_construction_array select 1) select 5);}; - case (_MaxCargoMass <= 14000) : {_array = (["Motorcycle","ReammoBox","ReammoBox_F","StaticWeapon","Car","Truck_F","Truck","Wheeled_APC_F","Tracked_APC","APC_Tracked_01_base_F","APC_Tracked_02_base_F","Air","Ship","Tank"]) + ((btc_construction_array select 1) select 3) + ((btc_construction_array select 1) select 4) + ((btc_construction_array select 1) select 5);}; - default {_array = (["Motorcycle","ReammoBox","ReammoBox_F","StaticWeapon","Car","Truck","Truck_F","Wheeled_APC","Tracked_APC","APC_Tracked_01_base_F","APC_Tracked_02_base_F","Air","Ship","Tank"]) + ((btc_construction_array select 1) select 3) + ((btc_construction_array select 1) select 4) + ((btc_construction_array select 1) select 5);}; - }; - }; - }; - _array + params ["_chopper"]; + private _array = []; + switch (typeOf _chopper) do { + case "B_SDV_01_F" : { + _array = ["Motorcycle","ReammoBox","ReammoBox_F","StaticWeapon","Car","Truck","Wheeled_APC_F","Tracked_APC","APC_Tracked_01_base_F","APC_Tracked_02_base_F","Air","Ship","Tank"] + ((btc_construction_array select 1) select 3) + ((btc_construction_array select 1) select 4) + ((btc_construction_array select 1) select 5); + }; + default { + private _MaxCargoMass = getNumber (configFile >> "CfgVehicles" >> typeOf _chopper >> "slingLoadMaxCargoMass"); + switch (true) do { + case (_MaxCargoMass <= 510) : { + _array = ["Motorcycle","ReammoBox","ReammoBox_F","Quadbike_01_base_F","Strategic"]; + }; + case (_MaxCargoMass <= 2100) : { + _array = ["Motorcycle","ReammoBox","ReammoBox_F","StaticWeapon","Car"]; + }; + case (_MaxCargoMass <= 4100) : { + _array = ["Motorcycle","ReammoBox","ReammoBox_F","StaticWeapon","Car","Truck_F","Truck","Wheeled_APC_F","Air","Ship"] + ((btc_construction_array select 1) select 3) + ((btc_construction_array select 1) select 4) + ((btc_construction_array select 1) select 5); + }; + case (_MaxCargoMass <= 14000) : { + _array = ["Motorcycle","ReammoBox","ReammoBox_F","StaticWeapon","Car","Truck_F","Truck","Wheeled_APC_F","Tracked_APC","APC_Tracked_01_base_F","APC_Tracked_02_base_F","Air","Ship","Tank"] + ((btc_construction_array select 1) select 3) + ((btc_construction_array select 1) select 4) + ((btc_construction_array select 1) select 5); + }; + default { + _array = ["Motorcycle","ReammoBox","ReammoBox_F","StaticWeapon","Car","Truck_F","Truck","Wheeled_APC_F","Tracked_APC","APC_Tracked_01_base_F","APC_Tracked_02_base_F","Air","Ship","Tank"] + ((btc_construction_array select 1) select 3) + ((btc_construction_array select 1) select 4) + ((btc_construction_array select 1) select 5); + }; + }; + }; + }; + _array }; btc_ropes_deployed = false; @@ -477,8 +489,8 @@ btc_hq = objNull; // Get all faction from mod there are currently running //copyToClipboard str (["EN"] call btc_fnc_get_class); private _allfaction = ["BLU_F","BLU_G_F","CAR","EMPIRE","GEONOSIANS","IND_F","IND_G_F","OPF_F","OPF_G_F","REBELLION","TBAN","UNSUNG","AFR_ARMY","ARA_ARMY","ARL_ARMY","BTC_AM","C_I_S","CAF_AG_AFR_P","CAF_AG_EEUR_R","CAF_AG_ME_T","CEC_ARMY","COREV_AFARMY","COREV_AFARMY_GREEN","COREV_AFG","COREV_AFG_GREEN","COREV_CARTELA","COREV_CARTELA_GREEN","COREV_CDF","COREV_CDF_GREEN","COREV_CDFLOCAL","COREV_CDFLOCAL_GREEN","COREV_PIRATEAF","COREV_PIRATEAF_GREEN","COREV_POLICE","COREV_POLICE_GREEN","COREV_TAF","COREV_TAF_GREEN","COREV_THAICLASSIC","COREV_THAICSAT","COREV_THAIFREE","COREV_THAIFREE_GREEN","COREV_THUG","COREV_THUG_GREEN","COREV_TKARMY","COREV_TKARMYF","COREV_TKLOCAL","COREV_TKLOCAL_GREEN","COREV_TME","COREV_TME_GREEN","CUP_B_CZ","CUP_B_GER","CUP_B_US_ARMY","CUP_I_NAPA","CUP_I_PMC_ION","CUP_I_RACS","CUP_O_TK","CUP_B_GB","CUP_I_TK_GUE","CUP_I_UN","CUP_O_CHDKZ","CUP_O_TK_MILITIA","CUP_B_CDF","CUP_B_RNZN","CUP_B_USMC","CUP_O_RU","CUP_O_SLA","BLU_CTRG_F","BLU_GEN_F","BLU_T_F","IND_C_F","OPF_T_F","OPTRE_OPCAN_CPD","OPTRE_OPCAN_CSD","FOW_AUS","FOW_HEER","FOW_IT","FOW_LUFTWAFFE","FOW_UK","FOW_WAFFENSS","FOW_IJA","FOW_USA","FOW_USA_P","FOW_USMC","GAL_ARMY","GALACTIC_REPUBLIC","GANGBLUE_ARMY","GANGRED_ARMY","IBR_ZETABORN_FACTION","ISC_IP_B","ISC_YPG_B","LIB_ACI","LIB_ARR","LIB_DAK","LIB_FFI","LIB_GUER","LIB_LUFTWAFFE","LIB_LUFTWAFFE_W","LIB_MKHL","LIB_NAC","LIB_NKVD","LIB_PANZERWAFFE","LIB_PANZERWAFFE_W","LIB_RAAF","LIB_RAF","LIB_RBAF","LIB_RKKA","LIB_RKKA_W","LIB_US_101AB","LIB_US_82AB","LIB_US_AIRFORCE","LIB_US_AIRFORCE_W","LIB_US_ARMY","LIB_US_ARMY_W","LIB_US_RANGERS","LIB_US_TANK_TROOPS","LIB_US_TANK_TROOPS_W","LIB_USSR_AIRFORCE","LIB_USSR_AIRFORCE_W","LIB_USSR_TANK_TROOPS","LIB_USSR_TANK_TROOPS_W","LIB_WEHRMACHT","LIB_WEHRMACHT_W","LM_H3","LM_H3_D","LM_H3_O","LM_H3_S","LM_H3_W","LM_OPCANTEST","LOP_BH","LOP_IRA","LOP_UVF","LOP_AA","LOP_AFR","LOP_AFR_OPF","LOP_AM","LOP_AM_OPF","LOP_CDF","LOP_CHDKZ","LOP_IA","LOP_IRAN","LOP_ISTS","LOP_ISTS_OPF","LOP_NAPA","LOP_PESH","LOP_PESH_IND","LOP_PMC","LOP_RACS","LOP_SLA","LOP_TKA","LOP_UA","LOP_UKR","LOP_UN","LOP_US","COREV_AAF_RED","MOL_ARMY","OPTRE_INS","OPTRE_OPCAN","OPTRE_OPCAN_GUARD","OPTRE_OPCAN_MILITIA","OPTRE_OPCAN_PMC","OPTRE_OPCAN_REB","OPTRE_OPCAN_THUGS","OPTRE_OPCAN_UNSCARMY","OPTRE_OPCAN_URA_AIR","OPTRE_OPCAN_URA_DES","OPTRE_OPCAN_URA_SF","OPTRE_OPCAN_URA_TRO","OPTRE_OPCAN_URA_VEH","OPTRE_OPCAN_URA_WDL","OPTRE_OPCAN_WZB","OPTRE_OPCAN_WZR","OPTRE_PD","OPTRE_UNSC","ISC_ALNUSRA_I","ISC_IA_B","ISC_IS_I","ISC_IS_O","ISC_PESH_B","ISC_SAA_O","RHS_FACTION_INSURGENTS","RHS_FACTION_MSV","RHS_FACTION_RVA","RHS_FACTION_TV","RHS_FACTION_VDV","RHS_FACTION_VMF","RHS_FACTION_VPVO","RHS_FACTION_VV","RHS_FACTION_VVS","RHS_FACTION_VVS_C","RHSGREF_FACTION_CDF_AIR","RHSGREF_FACTION_CDF_AIR_B","RHSGREF_FACTION_CDF_GROUND","RHSGREF_FACTION_CDF_GROUND_B","RHSGREF_FACTION_CDF_NG","RHSGREF_FACTION_CDF_NG_B","RHSGREF_FACTION_CHDKZ","RHSGREF_FACTION_CHDKZ_G","RHSGREF_FACTION_UN","RHSSAF_FACTION_AIRFORCE","RHSSAF_FACTION_ARMY","RHSSAF_FACTION_UN","RHS_FACTION_SOCOM","RHS_FACTION_USAF","RHS_FACTION_USARMY_D","RHS_FACTION_USARMY_WD","RHS_FACTION_USMC_D","RHS_FACTION_USMC_WD","RHS_FACTION_USN","RHSGREF_FACTION_HIDF","RHSGREF_FACTION_NATIONALIST","SG_STURM","SG_STURM_W","SG_STURMPANZER","BANDITS","DEATHWATCH","FIRSTORDER","JEDIORDER","MANDALORIANS","SWRESISTANCE","TUSKENRAIDERS","UNSC_2531","UNSUNG_AUS","UNSUNG_E","UNSUNG_EV","UNSUNG_G","UNSUNG_NZ","UNSUNG_W","USML_AIF"]; //All factions -_p_en = _allfaction select _p_en; //Select faction selected from mission parameter -_allclasse = [[_p_en], _p_en_AA, _p_en_tank] call btc_fnc_mil_class; //Create classes from factions, you can combine factions like that: [[_p_en , "IND_F"], _p_en_AA, _p_en_tank] call btc_fnc_mil_class; +_p_en = _allfaction select _p_en; //Select faction selected from mission parameter +_allclasse = [[_p_en], _p_en_AA, _p_en_tank] call btc_fnc_mil_class; //Create classes from factions, you can combine factions like that: [[_p_en , "IND_F"], _p_en_AA, _p_en_tank] call btc_fnc_mil_class; //Save class name to global variable btc_enemy_side = _allclasse select 0; @@ -494,33 +506,24 @@ btc_type_gl = _allclasse select 8; //Sometimes you need to remove units: - ["Blabla","moreBlabla"]; //Sometimes you need to add units: + ["Blabla","moreBlabla"]; switch (_p_en) do { - /*case "Myfactionexemple" : { - btc_type_units = btc_type_units - ["Blabla","moreBlabla"]; - btc_type_divers = btc_type_divers + ["Blabla","moreBlabla"]; - btc_type_crewmen = btc_type_crewmen + ["Blabla","moreBlabla"] - ["Blabla","moreBlabla"]; - btc_type_boats = btc_type_boats; - btc_type_motorized = btc_type_motorized; - btc_type_mg = btc_type_mg; - btc_type_g = btc_type_g; - };*/ - case "IND_G_F" : { - btc_type_motorized = btc_type_motorized + ["I_Truck_02_transport_F","I_Truck_02_covered_F"]; - btc_type_motorized_armed= btc_type_motorized_armed + ["I_Heli_light_03_F"]; - }; - case "IND_C_F" : { - btc_type_motorized = btc_type_motorized + ["I_G_Offroad_01_repair_F","I_G_Offroad_01_F","I_G_Quadbike_01_F","I_G_Van_01_fuel_F","I_Truck_02_transport_F","I_Truck_02_covered_F"]; - btc_type_motorized_armed= btc_type_motorized_armed + ["I_Heli_light_03_F","I_G_Offroad_01_F"]; - btc_type_units = btc_type_units - ["I_C_Soldier_Camo_F"]; - }; - case "FOW_USMC" : { - btc_type_units = btc_type_units - ["fow_s_usmc_01_private"]; - }; - case "FOW_USA" : { - btc_type_units = btc_type_units - ["fow_s_usa_01_private"]; - }; - case "FOW_UK" : { - btc_type_units = btc_type_units - ["fow_s_uk_01_private"]; - }; + /*case "Myfactionexemple" : { + btc_type_units = btc_type_units - ["Blabla","moreBlabla"]; + btc_type_divers = btc_type_divers + ["Blabla","moreBlabla"]; + btc_type_crewmen = btc_type_crewmen + ["Blabla","moreBlabla"] - ["Blabla","moreBlabla"]; + btc_type_boats = btc_type_boats; + btc_type_motorized = btc_type_motorized; + btc_type_mg = btc_type_mg; + btc_type_g = btc_type_g; + };*/ + case "IND_G_F" : { + btc_type_motorized = btc_type_motorized + ["I_Truck_02_transport_F","I_Truck_02_covered_F"]; + btc_type_motorized_armed= btc_type_motorized_armed + ["I_Heli_light_03_F"]; + }; + case "IND_C_F" : { + btc_type_motorized = btc_type_motorized + ["I_G_Offroad_01_repair_F","I_G_Offroad_01_F","I_G_Quadbike_01_F","I_G_Van_01_fuel_F","I_Truck_02_transport_F","I_Truck_02_covered_F"]; + btc_type_motorized_armed= btc_type_motorized_armed + ["I_Heli_light_03_F","I_G_Offroad_01_F"]; + btc_type_units = btc_type_units - ["I_C_Soldier_Camo_F"]; + }; }; //Rep @@ -545,4 +548,4 @@ if (isNil "btc_side_assigned") then {btc_side_assigned = false;}; btc_AI_skill = _p_skill; //Headless -btc_units_owners = []; \ No newline at end of file +btc_units_owners = []; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/def/param.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/def/param.hpp index 55ad65de7..702b81442 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/def/param.hpp +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/def/param.hpp @@ -1,260 +1,278 @@ class Params { - class btc_p_time_title { - title = "<< Time options >>"; - values[]={0}; - texts[]={""}; - default = 0; - }; - class btc_p_time { - title = " Set the start time:"; - values[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24}; - texts[]={"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24"}; - default = 12; - }; - class btc_p_acctime { - title = " Acceleration time multiplier:"; - values[]={1,2,3,4,5,6,7,8,9,10,11,12}; - texts[]={"1","2","3","4","5","6","7","8","9","10","11","12"}; - default = 5; - }; - class btc_p_load { - title = " Load the savegame (if available)"; - values[]={0,1}; - texts[]={"Off","On"}; - default = 1; - }; - class btc_p_auto_db { - title = " Auto savegame (can break player immersion)"; - values[]={0,1,2,3,4,5,6,7,8,9,10,11,12,24,48,72}; - texts[]={"Off","1h","2h","3h","4h","5h","6h","7h","8h","9h","10h","11h","12h","24h","48h","72h"}; - default = 0; - }; - class btc_p_type_title { - title = "<< Faction options >>"; - values[]={0}; - texts[]={""}; - default = 0; - }; - class btc_p_en { - title = " Enemy type:"; - values[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227}; - texts[]={"0 - Bohemia Interactive: OTAN (Side: WEST)","1 - Bohemia Interactive: FIA (Side: WEST)","2 - jarrad96: Central African Militia (Side: EAST)","3 - Scar and Jmax: Galactic Empire (Side: EAST)","4 - SWOP: Geonosians (Side: EAST)","5 - Bohemia Interactive: AAF (Side: GUER)","6 - Bohemia Interactive: FIA (Side: GUER)","7 - Bohemia Interactive: CSAT (Side: EAST)","8 - Bohemia Interactive: FIA (Side: EAST)","9 - Bohemia Interactive: Rebel Alliance (Side: WEST)","10 - EricJ: Taliban (Side: EAST)","11 - Bohemia Interactive: (Side: WEST)","12 -AFR BIS/IceBreakr: Afrenian Army (Side: WEST)","13 -ARA Bohemia Interactive: Abramian Rebel Alliance (Side: WEST)","14 -ARL BIS/IceBreakr: ARL Lingor Rebels (Side: EAST)","15 -btc_militia_mod Giallustio: Afghan Militia (Side: EAST)","16 -C SWOP: Confederacy of Independent Systems (Side: EAST)","17 -CAF CAF MOD TEAM: Africa - Pirates (Side: EAST)","18 -CAF CAF MOD TEAM: East Europe - Rebels (Side: EAST)","19 -CAF CAF MOD TEAM: Middle East - Tribal (Side: EAST)","20 -CEC HcPookie: Cecanian Army (Side: EAST)","21 -COREVMod WarfareThai: African State Defense Force (Side: EAST)","22 -COREVMod WarfareThai: African State Defense Force INDEP (Side: GUER)","23 -COREVMod WarfareThai: Insurgents (Africans) (Side: EAST)","24 -COREVMod WarfareThai: Insurgents (Africans) INDEP (Side: GUER)","25 -COREVMod WarfareThai: Drug Cartel (Asians) (Side: EAST)","26 -COREVMod WarfareThai: Drug Cartel (Asians) INDEP (Side: GUER)","27 -COREVMod WarfareThai: Eastern European Armed Force (Side: EAST)","28 -COREVMod WarfareThai: Eastern European Armed Force INDEP (Side: GUER)","29 -COREVMod WarfareThai: Insurgents (Eastern Europeons) (Side: EAST)","30 -COREVMod WarfareThai: Insurgents (Eastern Europeons) INDEP (Side: GUER)","31 -COREVMod WarfareThai: Pirates (Africans) (Side: EAST)","32 -COREVMod WarfareThai: Pirates (Africans) INDEP (Side: GUER)","33 -COREVMod WarfareThai: Cops (Side: WEST)","34 -COREVMod WarfareThai: Cops INDEP (Side: GUER)","35 -COREVMod WarfareThai: Terrorists (Africans) (Side: EAST)","36 -COREVMod WarfareThai: Terrorists (Africans) INDEP (Side: GUER)","37 -COREVMod WarfareThai: TAF (Modern) (Side: WEST)","38 -COREVMod WarfareThai: TAF (2035) (Side: EAST)","39 -COREVMod WarfareThai: Free Thai (Side: WEST)","40 -COREVMod WarfareThai: Free Thai (Side: GUER)","41 -COREVMod WarfareThai: Gangsters (Side: EAST)","42 -COREVMod WarfareThai: Gangsters INDEP (Side: GUER)","43 -COREVMod WarfareThai: Middle-East Armed Force (Side: EAST)","44 -COREVMod WarfareThai: Middle-East Armed Force (Woodland) (Side: EAST)","45 -COREVMod WarfareThai: Insurgents (Middle-Easterns) (Side: EAST)","46 -COREVMod WarfareThai: Insurgents (Middle-Easterns) INDEP (Side: GUER)","47 -COREVMod WarfareThai: Terrorists (Middle-Easterns) (Side: EAST)","48 -COREVMod WarfareThai: Terrorists (Middle-Easterns) INDEP (Side: GUER)","49 -CUP Community Upgrade Project: Army of the Czech Republic (Side: WEST)","50 -CUP Bohemia Interactive: Bundeswehr (Side: WEST)","51 -CUP Bohemia Interactive: United States Army (Side: WEST)","52 -CUP Bohemia Interactive: National Party of Chernarus (Side: GUER)","53 -CUP Bohemia Interactive: ION PMC (Side: GUER)","54 -CUP Bohemia Interactive: Royal Army Corps of Sahrani (Side: GUER)","55 -CUP Bohemia Interactive: Takistani Army (Side: EAST)","56 -CUP_Units Community Upgrade Project: British Armed Forces (Side: WEST)","57 -CUP_Units Bohemia Interactive: Takistani Locals (Side: GUER)","58 -CUP_Units Community Upgrade Project: United Nations (Side: GUER)","59 -CUP_Units Community Upgrade Project: Chernarussian Movement of the Red Star (Side: EAST)","60 -CUP_Units Bohemia Interactive: Takistani Militia (Side: EAST)","61 -CUP_Vehicles Community Upgrade Project: Chernarus Defense Forces (Side: WEST)","62 -CUP_Vehicles Community Upgrade Project: Royal New Zealand Navy (Side: WEST)","63 -CUP_Vehicles Community Upgrade Project: United States Marine Corps (Side: WEST)","64 -CUP_Vehicles Community Upgrade Project: Armed Forces of the Russian Federation (Side: EAST)","65 -CUP_Vehicles Community Upgrade Project: Sahrani Liberation Army (Side: EAST)","66 -Expansion Bohemia Interactive: CTRG (Side: WEST)","67 -Expansion Bohemia Interactive: Gendarmerie (Side: WEST)","68 -Expansion Bohemia Interactive: OTAN (Pacifique) (Side: WEST)","69 -Expansion Bohemia Interactive: Syndikat (Side: GUER)","70 -Expansion Bohemia Interactive: CSAT (Pacifique) (Side: EAST)","71 -Expansion Burgess: OPCAN (Colonial Police) (Side: WEST)","72 -Expansion Burgess: OPCAN (Colonial Sheriff) (Side: WEST)","73 -FOW Bohemia Interactive: [AUS] Australian Army (Side: GUER)","74 -FOW Bohemia Interactive: [DE] Heer (Side: WEST)","75 -FOW Bohemia Interactive: [IT] Regio Esercito (Side: WEST)","76 -FOW Bohemia Interactive: [DE] Luftwaffe (Side: WEST)","77 -FOW Bohemia Interactive: [UK] Army (Side: GUER)","78 -FOW FOW Team: [DE] Waffen-SS (Side: WEST)","79 -fow_mod FOW team: [JP] Imperial Army (Side: WEST)","80 -fow_mod FOW team: [US] Army (Europe) (Side: GUER)","81 -fow_mod Bohemia Interactive: [US] Army (Pacific) (Side: GUER)","82 -fow_mod FOW team: [US] Marines Corps (Side: GUER)","83 -GAL HcPookie: GAL (Government Army of Lingor) (Side: WEST)","84 -GALACTIC SWOP: Galactic Republic (Side: WEST)","85 -GANGBLUE BIS/IceBreakr: Blue Gang (Side: WEST)","86 -GANGRED BIS/IceBreakr: Red Gang (Side: EAST)","87 -IBR Bohemia Interactive: Alienz (Side: GUER)","88 -ISC Bohemia Interactive: [ISC] Iraqi Police (Side: WEST)","89 -ISC Bohemia Interactive: [ISC] YPG (Side: WEST)","90 -LIB AWAR: ACI (Side: GUER)","91 -LIB AWAR & Lennard: ARR (Side: WEST)","92 -LIB Lennard: Deutsches Afrikakorps (Side: WEST)","93 -LIB AWAR & Joarius: FFI (Side: GUER)","94 -LIB AWAR: Armia Krajowa (Polonais) (Side: GUER)","95 -LIB AWAR: Luftwaffe (Side: WEST)","96 -LIB AWAR & Lennard: [Winter] Luftwaffe (Side: WEST)","97 -LIB AWAR & Lennard: MKHL (Side: WEST)","98 -LIB Lennard: US North African Corps (Side: GUER)","99 -LIB Lennard: NKVD (Side: EAST)","100 -LIB IFA3 Team: Panzerwaffe (Side: WEST)","101 -LIB AWAR & Lennard: [Winter] Panzerwaffe (Side: WEST)","102 -LIB AWAR: RAAF (Side: GUER)","103 -LIB IFA3 Team: RAF (Side: GUER)","104 -LIB AWAR & Lennard: RBAF (Side: WEST)","105 -LIB AWAR: Red Army (Side: EAST)","106 -LIB AWAR & Lennard: [Winter] Red Army (Side: EAST)","107 -LIB El Tyranos & Jove Chiere: 101st Airborne Division (Side: GUER)","108 -LIB El Tyranos: 82nd Airborne Division (Side: GUER)","109 -LIB AWAR: US Army Air Forces (Side: GUER)","110 -LIB AWAR: [Winter] US Airforce (Side: GUER)","111 -LIB IFA3 Team: US Army (Side: GUER)","112 -LIB XXX: [Winter] US Army (Side: GUER)","113 -LIB Lennard: US 2nd Ranger Battalion (Side: GUER)","114 -LIB I44: US Tank Troops (Side: GUER)","115 -LIB AWAR & Lennard: [Winter] US Tank Troops (Side: GUER)","116 -LIB AWAR: USSR Airforce (Side: EAST)","117 -LIB AWAR & Lennard: [Winter] USSR Airforce (Side: EAST)","118 -LIB AWAR: Tank troops of USSR (Side: EAST)","119 -LIB AWAR & Lennard: [Winter] Tank troops of USSR (Side: EAST)","120 -LIB AWAR: Wehrmacht (Side: WEST)","121 -LIB AWAR & Lennard: [Winter] Wehrmacht (Side: WEST)","122 -LM Burgess: UNSCMC (Urban) (Side: WEST)","123 -LM Burgess: UNSCMC (Desert) (Side: WEST)","124 -LM Burgess: ONI Security (Side: WEST)","125 -LM Burgess: UNSCMC (Snow) (Side: WEST)","126 -LM Burgess: UNSCMC (Wood) (Side: WEST)","127 -LM Burgess: OPCANTest (Side: WEST)","128 -LOP Project OPFOR: Boko Haram (Side: EAST)","129 -LOP Project OPFOR: Irish Republican Army (Side: EAST)","130 -LOP Project OPFOR: Ulster Volunteer Force (Side: GUER)","131 -LOP_LeightsOPFOR Project OPFOR: Afghan National Army and Police (Side: WEST)","132 -LOP_LeightsOPFOR Project OPFOR: African Militia (Side: GUER)","133 -LOP_LeightsOPFOR Project OPFOR: African Militia (Side: EAST)","134 -LOP_LeightsOPFOR Project OPFOR: Middle Eastern Militia (Side: GUER)","135 -LOP_LeightsOPFOR Project OPFOR: Middle Eastern Militia (Side: EAST)","136 -LOP_LeightsOPFOR Project OPFOR: Chernarussian Defence Forces (Side: WEST)","137 -LOP_LeightsOPFOR Project OPFOR: ChDKZ (Side: EAST)","138 -LOP_LeightsOPFOR Project OPFOR: Iraqi Armed Forces (Side: WEST)","139 -LOP_LeightsOPFOR Project OPFOR: Iranian Armed Forces (Side: GUER)","140 -LOP_LeightsOPFOR Project OPFOR: Islamic State (Side: GUER)","141 -LOP_LeightsOPFOR Project OPFOR: Islamic State (Side: EAST)","142 -LOP_LeightsOPFOR Project OPFOR: Chernarussian National Insurgents (Side: GUER)","143 -LOP_LeightsOPFOR Project OPFOR: Kurdish Peshmerga Forces (Side: WEST)","144 -LOP_LeightsOPFOR Project OPFOR: Kurdish Peshmerga Forces (Side: GUER)","145 -LOP_LeightsOPFOR Project OPFOR: Private Military Company (Side: GUER)","146 -LOP_LeightsOPFOR Project OPFOR: Royal Army Corps of Sahrani (Side: GUER)","147 -LOP_LeightsOPFOR Project OPFOR: Sahrani Liberation Army (Side: EAST)","148 -LOP_LeightsOPFOR Project OPFOR: Takistani Armed Forces (Side: EAST)","149 -LOP_LeightsOPFOR Project OPFOR: Ultranationalists (Side: GUER)","150 -LOP_LeightsOPFOR Project OPFOR: Ukrainian Armed Forces (Side: WEST)","151 -LOP_LeightsOPFOR Project OPFOR: United Nations (Side: GUER)","152 -LOP_LeightsOPFOR Project OPFOR: United Armed Forces of Novorossiya (Side: EAST)","153 -Mark Bohemia Interactive: AAF (Side: EAST)","154 -MOL HcPookie: Molatian Army (Side: EAST)","155 -OPTRE Article 2 Studios: Insurrectionists (Side: EAST)","156 -OPTRE Burgess: OPCAN (Side: WEST)","157 -OPTRE Burgess: OPCAN (UEG Colonial Guard) (Side: WEST)","158 -OPTRE Burgess: Colonial Militia (OPCAN) (Side: GUER)","159 -OPTRE Burgess: OPCAN (PMC) (Side: GUER)","160 -OPTRE Burgess: Halo Wars Rebels (OPCAN) (Side: EAST)","161 -OPTRE Burgess: Common Criminals (OPCAN) (Side: EAST)","162 -OPTRE Burgess: OPCAN (UNSC Army) (Side: WEST)","163 -OPTRE Burgess: United Rebel Air Force(OPCAN) (Side: EAST)","164 -OPTRE Burgess: United Rebel Army Desert(OPCAN) (Side: EAST)","165 -OPTRE Burgess: United Rebel Army BattleJumpers (OPCAN) (Side: EAST)","166 -OPTRE Burgess: United Rebel Army Tropic(OPCAN) (Side: EAST)","167 -OPTRE Bohemia Interactive: United Rebel Army Ground Vehicles (OPCAN) (Side: EAST)","168 -OPTRE Burgess: United Rebel Army Wood(OPCAN) (Side: EAST)","169 -OPTRE Burgess: OPCAN (WARZONE BLUE) (Side: WEST)","170 -OPTRE Burgess: OPCAN (WARZONE RED) (Side: EAST)","171 -OPTRE Article 2 Studios: Colonial Police (Side: GUER)","172 -OPTRE Article 2 Studios: UNSCDF (Side: WEST)","173 -RHS_AFRF Bohemia Interactive: [ISC] al-Nusra Front (Side: GUER)","174 -RHS_AFRF Bohemia Interactive: [ISC] Iraqi Army (Side: WEST)","175 -RHS_AFRF Bohemia Interactive: [ISC] Islamic State (Side: GUER)","176 -RHS_AFRF Bohemia Interactive: [ISC] Islamic State (Side: EAST)","177 -RHS_AFRF Bohemia Interactive: [ISC] Peshmerga (Side: WEST)","178 -RHS_AFRF Bohemia Interactive: [ISC] Syrian Arab Army (Side: EAST)","179 -RHS_AFRF Red Hammer Studios: Eastern Militia (Side: GUER)","180 -RHS_AFRF Red Hammer Studios: Russia (MSV) (Side: EAST)","181 -RHS_AFRF Red Hammer Studios: Russia (RVA) (Side: EAST)","182 -RHS_AFRF Red Hammer Studios: Russia (TV) (Side: EAST)","183 -RHS_AFRF Red Hammer Studios: Russia (VDV) (Side: EAST)","184 -RHS_AFRF Red Hammer Studios: Russia (VMF) (Side: EAST)","185 -RHS_AFRF RHS: Russia (VPVO) (Side: EAST)","186 -RHS_AFRF Red Hammer Studios: Russia (VV) (Side: EAST)","187 -RHS_AFRF Bohemia Interactive: Russia (VVS - Grey) (Side: EAST)","188 -RHS_AFRF Red Hammer Studios: Russia (VVS - Camo) (Side: EAST)","189 -RHS_GREF Red Hammer Studios: Chernarus (Air Force) (Side: GUER)","190 -RHS_GREF Red Hammer Studios: Chernarus (Air Force) (Side: WEST)","191 -RHS_GREF RHS (A2 port): Chernarus (Ground Forces) (Side: GUER)","192 -RHS_GREF Red Hammer Studios: Chernarus (Ground Forces) (Side: WEST)","193 -RHS_GREF Red Hammer Studios: Chernarus (National Guard) (Side: GUER)","194 -RHS_GREF Red Hammer Studios: Chernarus (National Guard) (Side: WEST)","195 -RHS_GREF Red Hammer Studios: ChDKZ Insurgents (Side: EAST)","196 -RHS_GREF Red Hammer Studios: ChDKZ Insurgents (Side: GUER)","197 -RHS_GREF Red Hammer Studios: Chernarus (U.N. Peacekeepers) (Side: GUER)","198 -RHS_SAF Red Hammer Studios: SAF (RVIPVO) (Side: GUER)","199 -RHS_SAF Bohemia Interactive: SAF (KOV) (Side: GUER)","200 -RHS_SAF Red Hammer Studios: SAF (Casques Bleus) (Side: GUER)","201 -RHS_USAF Red Hammer Studios: USA (SOCOM) (Side: WEST)","202 -RHS_USAF Red Hammer Studios: USA (USAF) (Side: WEST)","203 -RHS_USAF Red Hammer Studios: USA (Army - D) (Side: WEST)","204 -RHS_USAF Red Hammer Studios: USA (Army - W) (Side: WEST)","205 -RHS_USAF Red Hammer Studios: USA (USMC - D) (Side: WEST)","206 -RHS_USAF Red Hammer Studios: USA (USMC - W) (Side: WEST)","207 -RHS_USAF Red Hammer Studios: USA (Navy) (Side: WEST)","208 -RHSGREF Red Hammer Studios: Horizon Islands Defence Force (Side: WEST)","209 -RHSGREF Red Hammer Studios: Nationalist Troops (Side: GUER)","210 -SG Stagler: Sturmtroopers (Side: WEST)","211 -SG Stagler: [Winter] Sturmtroopers (Side: WEST)","212 -SG Stagler: Tank Sturmtroopers (Side: WEST)","213 -SWOP_MODs SWOP: Bandits (Side: GUER)","214 -SWOP_MODs SWOP: DeathWatch (Side: GUER)","215 -SWOP_MODs SWOP: First Order (Side: EAST)","216 -SWOP_MODs SWOP: Jedi Order (Side: WEST)","217 -SWOP_MODs SWOP: Mandalorians (Side: GUER)","218 -SWOP_MODs SWOP: Resistance (Side: WEST)","219 -SWOP_MODs SWOP: Tusken Raiders (Side: GUER)","220 -UNSC Morthon: UNSCMC (Side: WEST)","221 -UNSUNG Bohemia Interactive: Australia (UNSUNG) (Side: WEST)","222 -UNSUNG HCPOOKIE - SAM pack: N.V.A. (UNSUNG) (Side: EAST)","223 -UNSUNG Bohemia Interactive: V.C. (UNSUNG) (Side: EAST)","224 -UNSUNG Bohemia Interactive: A.R.V.N. (UNSUNG) (Side: GUER)","225 -UNSUNG Bohemia Interactive: New Zealand (UNSUNG) (Side: WEST)","226 -UNSUNG Bohemia Interactive: U.S. (UNSUNG) (Side: WEST)","227 -USML segen: Armed Islamic Front (Side: GUER)"}; - default = 8; - }; - class btc_p_AA { - title = " Anti-Air infantry:"; - values[]={0,1}; - texts[]={"Off","On"}; - default = 0; - }; - class btc_p_tank { - title = " Enemy uses Tank:"; - values[]={0,1}; - texts[]={"Off","On"}; - default = 0; - }; - class btc_p_civ { - title = " Civil type:"; - values[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; - texts[]={"0 - EricJ: Afghan Civilians (Side: CIV)","1 - Bohemia Interactive: Civils (Side: CIV)","2 -btc_militia_mod Giallustio: Afghan Civilians (Side: CIV)","3 -CAF CAF MOD TEAM: African (Side: CIV)","4 -CAF CAF MOD TEAM: Middle Eastern (Side: CIV)","5 -COREVMod WarfareThai: Civilians (Africans) (Side: CIV)","6 -COREVMod WarfareThai: Civilians (Asians) (Side: CIV)","7 -COREVMod WarfareThai: Civilians (Eastern Europeons) (Side: CIV)","8 -COREVMod WarfareThai: Civilians (Middle-Easterns) (Side: CIV)","9 -CUP_Units Community Upgrade Project: Civilians (Russian) (Side: CIV)","10 -CUP_Vehicles Community Upgrade Project: Civilians (Chernarus) (Side: CIV)","11 -CUP_Vehicles Bohemia Interactive: Civilians (Sahrani) (Side: CIV)","12 -CUP_Vehicles Community Upgrade Project: Civilians (Takistan) (Side: CIV)","13 -LIB Reyhard & Joarius: 40s Civilians (Side: CIV)","14 -LOP_LeightsOPFOR Project OPFOR: Civilians (African) (Side: CIV)","15 -LOP_LeightsOPFOR Project OPFOR: Civilians (Eastern European) (Side: CIV)","16 -LOP_LeightsOPFOR Project OPFOR: Civilians (Middle Eastern) (Side: CIV)","17 -OPTRE Article 2 Studios: Civilians (UEG) (Side: CIV)","18 -ORANGE Bohemia Interactive: IDAP (Side: CIV)","19 -RDS_CIV_PACK reyhard: Russians (Side: CIV)","20 -UNSUNG Bohemia Interactive: Vietnamese (UNSUNG) (Side: CIV)"}; - default = 1; - }; - class btc_p_civ_veh { - title = " Civil vehicle type:"; - values[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; - texts[]={"0 - EricJ: Afghan Civilians (Side: CIV)","1 - Bohemia Interactive: Civils (Side: CIV)","2 -btc_militia_mod Giallustio: Afghan Civilians (Side: CIV)","3 -CAF CAF MOD TEAM: African (Side: CIV)","4 -CAF CAF MOD TEAM: Middle Eastern (Side: CIV)","5 -COREVMod WarfareThai: Civilians (Africans) (Side: CIV)","6 -COREVMod WarfareThai: Civilians (Asians) (Side: CIV)","7 -COREVMod WarfareThai: Civilians (Eastern Europeons) (Side: CIV)","8 -COREVMod WarfareThai: Civilians (Middle-Easterns) (Side: CIV)","9 -CUP_Units Community Upgrade Project: Civilians (Russian) (Side: CIV)","10 -CUP_Vehicles Community Upgrade Project: Civilians (Chernarus) (Side: CIV)","11 -CUP_Vehicles Bohemia Interactive: Civilians (Sahrani) (Side: CIV)","12 -CUP_Vehicles Community Upgrade Project: Civilians (Takistan) (Side: CIV)","13 -LIB Reyhard & Joarius: 40s Civilians (Side: CIV)","14 -LOP_LeightsOPFOR Project OPFOR: Civilians (African) (Side: CIV)","15 -LOP_LeightsOPFOR Project OPFOR: Civilians (Eastern European) (Side: CIV)","16 -LOP_LeightsOPFOR Project OPFOR: Civilians (Middle Eastern) (Side: CIV)","17 -OPTRE Article 2 Studios: Civilians (UEG) (Side: CIV)","18 -ORANGE Bohemia Interactive: IDAP (Side: CIV)","19 -RDS_CIV_PACK reyhard: Russians (Side: CIV)","20 -UNSUNG Bohemia Interactive: Vietnamese (UNSUNG) (Side: CIV)"}; - default = 1; - }; - class btc_p_IED_title { - title = "<< IED options >>"; - values[]={0}; - texts[]={""}; - default = 0; - }; - class btc_p_ied { - title = " IEDs ratio:"; - values[]={0, 1, 2, 3}; - texts[]={"Off","Low","Normal","High"}; - default = 2; - }; - class btc_p_hideout_cache_title { - title = "<< Hideout/Cache options >>"; - values[]={0}; - texts[]={""}; - default = 0; - }; - class btc_p_hideout_n { - title = " Hideout numbers:"; - values[]={99,1,2,3,4,5}; - texts[]={"Random","1","2","3","4","5"}; - default = 5; - }; - class btc_p_cache_info_def { - title = " Info cache distance:"; - values[]={500,1000,1500,2000,2500,3000,3500,4000,5000}; - texts[]={"500 m","1000 m","1500 m","2000 m","2500 m","3000 m","3500 m","4000 m","5000 m"}; - default = 1000; - }; - class btc_p_cache_info_ratio { - title = " Cache info ratio:"; - values[]={50,100}; - texts[]={"50 m","100 m"}; - default = 100; - }; - class btc_p_info_chance { - title = " Intel from dead bodies chance:"; - values[]={0,10,20,30,40,50,60,70,80,90,100}; - texts[]={"100 %","90 %","80 %","70 %","60 %","50 %","40 %","30 %","20 %","10 %","0 %"}; - default = 70; - }; - class btc_p_medical_title { - title = "<< Medical options >>"; - values[]={0}; - texts[]={""}; - default = 0; - }; - class btc_p_redeploy { - title = " Allow re-deploy?"; - values[]={0,1}; - texts[]={"Off","On"}; - default = 1; - }; - class btc_p_skill_title { - title = "<< A3 Skill options >>"; - values[]={0}; - texts[]={""}; - default = 0; - }; - class btc_p_set_skill { - title = " Set skill?"; - values[]={0,1}; - texts[]={"Off","On"}; - default = 1; - }; - class btc_p_set_skill_general { - title = " Set skill, general"; - values[]={0,1,2,3,4,5,6,7,8,9,10}; - texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; - default = 0; - }; - class btc_p_set_skill_aimingAccuracy { - title = " Set skill, aimingAccuracy"; - values[]={0,1,2,3,4,5,6,7,8,9,10}; - texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; - default = 1; - }; - class btc_p_set_skill_aimingShake { - title = " Set skill, aimingShake"; - values[]={0,1,2,3,4,5,6,7,8,9,10}; - texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; - default = 4; - }; - class btc_p_set_skill_aimingSpeed { - title = " Set skill, aimingSpeed"; - values[]={0,1,2,3,4,5,6,7,8,9,10}; - texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; - default = 3; - }; - class btc_p_set_skill_endurance { - title = " Set skill, endurance"; - values[]={0,1,2,3,4,5,6,7,8,9,10}; - texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; - default = 5; - }; - class btc_p_set_skill_spotDistance { - title = " Set skill, spotDistance"; - values[]={0,1,2,3,4,5,6,7,8,9,10}; - texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; - default = 9; - }; - class btc_p_set_skill_spotTime { - title = " Set skill, spotTime"; - values[]={0,1,2,3,4,5,6,7,8,9,10}; - texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; - default = 7; - }; - class btc_p_set_skill_courage { - title = " Set skill, courage"; - values[]={0,1,2,3,4,5,6,7,8,9,10}; - texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; - default = 2; - }; - class btc_p_set_skill_reloadSpeed { - title = " Set skill, reloadSpeed"; - values[]={0,1,2,3,4,5,6,7,8,9,10}; - texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; - default = 10; - }; - class btc_p_set_skill_commanding { - title = " Set skill, commanding"; - values[]={0,1,2,3,4,5,6,7,8,9,10}; - texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; - default = 7; - }; - class btc_p_gameplay_title { - title = "<< Gameplay options >>"; - values[]={0}; - texts[]={""}; - default = 0; - }; - class btc_p_sea { - title = " Extend battlefield to sea:"; - values[] = {0,1}; - texts[] = {"Off","On"}; - default = 1; - }; - class btc_p_veh_armed_ho { - title = " Add armed vehicles in Hideout:"; - values[] = {0,1}; - texts[] = {"Off","On"}; - default = 0; - }; - class btc_p_veh_armed_spawn_more { - title = " Add armed vehicles in Side mission/Cache:"; - values[] = {0,1}; - texts[] = {"Off","On"}; - default = 0; - }; - class btc_p_side_mission_cycle { - title = " Side mission cycle:"; - values[] = {0,1}; - texts[] = {"Off","On"}; - default = 0; - }; - class btc_p_main_title { - title = "<< Other options >>"; - values[]={0}; - texts[]={""}; - default = 0; - }; - class btc_p_rep { - title = " Reputation at start:"; - values[]={0, 200, 500, 750}; - texts[]={"Very Low","Low","Normal","High"}; - default = 200; - }; - class btc_p_garage { - title = " Activate garage for admin:"; - values[]={0,1}; - texts[]={"Off","On"}; - default = 0; - }; - class btc_p_city_radius { - title = " Spawn city radius offset:"; - values[]={0,1,2,3,4,5,6,7,8}; - texts[]={"0 m","100 m","200 m","300 m (Default: Altis, Tanoa)","400 m","500 m (Takistan)","600 m","700 m","800 m"}; - default = 3; - }; - class btc_p_trigger { - title = " Disable city activation when a plane or helicopter (>190Km/h) is flying above:"; - values[]={0,1}; - texts[]={"Off","On"}; - default = 0; - }; - class btc_p_debug { - title = " Debug:"; - values[]={0,1,2}; - texts[]={"Off","On", "Log only"}; - default = 0; - }; -}; \ No newline at end of file + class btc_p_time_title { // << Time options >> + title = $STR_BTC_HAM_PARAM_TIME_TITLE; + values[]={0}; + texts[]={""}; + default = 0; + }; + class btc_p_time { // Set the start time: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_TIME_START"]); + values[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24}; + texts[]={"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24"}; + default = 12; + }; + class btc_p_acctime { // Acceleration time multiplier: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_TIME_MULTIP"]); + values[]={1,2,3,4,5,6,7,8,9,10,11,12}; + texts[]={"1","2","3","4","5","6","7","8","9","10","11","12"}; + default = 5; + }; + class btc_p_load { // Load the savegame (if available) + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_DB_LOAD"]); + values[]={0,1}; + texts[]={$STR_DISABLED,$STR_ENABLED}; + default = 1; + }; + class btc_p_auto_db { // Auto savegame (can break player immersion) + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_DB_ASAVE"]); + values[]={0,1,2,3,4,5,6,7,8,9,10,11,12,24,48,72}; + texts[]={$STR_DISABLED,"1h","2h","3h","4h","5h","6h","7h","8h","9h","10h","11h","12h","24h","48h","72h"}; // texts[]={"Off","1h","2h","3h","4h","5h","6h","7h","8h","9h","10h","11h","12h","24h","48h","72h"}; + default = 0; + }; + class btc_p_type_title { // << Faction options >> + title = $STR_BTC_HAM_PARAM_FAC_TITLE; + values[]={0}; + texts[]={""}; + default = 0; + }; + class btc_p_en { // Enemy type: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_FAC_ETYPE"]); + values[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227}; + texts[]={"0 - Bohemia Interactive: OTAN (Side: WEST)","1 - Bohemia Interactive: FIA (Side: WEST)","2 - jarrad96: Central African Militia (Side: EAST)","3 - Scar and Jmax: Galactic Empire (Side: EAST)","4 - SWOP: Geonosians (Side: EAST)","5 - Bohemia Interactive: AAF (Side: GUER)","6 - Bohemia Interactive: FIA (Side: GUER)","7 - Bohemia Interactive: CSAT (Side: EAST)","8 - Bohemia Interactive: FIA (Side: EAST)","9 - Bohemia Interactive: Rebel Alliance (Side: WEST)","10 - EricJ: Taliban (Side: EAST)","11 - Bohemia Interactive: (Side: WEST)","12 -AFR BIS/IceBreakr: Afrenian Army (Side: WEST)","13 -ARA Bohemia Interactive: Abramian Rebel Alliance (Side: WEST)","14 -ARL BIS/IceBreakr: ARL Lingor Rebels (Side: EAST)","15 -btc_militia_mod Giallustio: Afghan Militia (Side: EAST)","16 -C SWOP: Confederacy of Independent Systems (Side: EAST)","17 -CAF CAF MOD TEAM: Africa - Pirates (Side: EAST)","18 -CAF CAF MOD TEAM: East Europe - Rebels (Side: EAST)","19 -CAF CAF MOD TEAM: Middle East - Tribal (Side: EAST)","20 -CEC HcPookie: Cecanian Army (Side: EAST)","21 -COREVMod WarfareThai: African State Defense Force (Side: EAST)","22 -COREVMod WarfareThai: African State Defense Force INDEP (Side: GUER)","23 -COREVMod WarfareThai: Insurgents (Africans) (Side: EAST)","24 -COREVMod WarfareThai: Insurgents (Africans) INDEP (Side: GUER)","25 -COREVMod WarfareThai: Drug Cartel (Asians) (Side: EAST)","26 -COREVMod WarfareThai: Drug Cartel (Asians) INDEP (Side: GUER)","27 -COREVMod WarfareThai: Eastern European Armed Force (Side: EAST)","28 -COREVMod WarfareThai: Eastern European Armed Force INDEP (Side: GUER)","29 -COREVMod WarfareThai: Insurgents (Eastern Europeons) (Side: EAST)","30 -COREVMod WarfareThai: Insurgents (Eastern Europeons) INDEP (Side: GUER)","31 -COREVMod WarfareThai: Pirates (Africans) (Side: EAST)","32 -COREVMod WarfareThai: Pirates (Africans) INDEP (Side: GUER)","33 -COREVMod WarfareThai: Cops (Side: WEST)","34 -COREVMod WarfareThai: Cops INDEP (Side: GUER)","35 -COREVMod WarfareThai: Terrorists (Africans) (Side: EAST)","36 -COREVMod WarfareThai: Terrorists (Africans) INDEP (Side: GUER)","37 -COREVMod WarfareThai: TAF (Modern) (Side: WEST)","38 -COREVMod WarfareThai: TAF (2035) (Side: EAST)","39 -COREVMod WarfareThai: Free Thai (Side: WEST)","40 -COREVMod WarfareThai: Free Thai (Side: GUER)","41 -COREVMod WarfareThai: Gangsters (Side: EAST)","42 -COREVMod WarfareThai: Gangsters INDEP (Side: GUER)","43 -COREVMod WarfareThai: Middle-East Armed Force (Side: EAST)","44 -COREVMod WarfareThai: Middle-East Armed Force (Woodland) (Side: EAST)","45 -COREVMod WarfareThai: Insurgents (Middle-Easterns) (Side: EAST)","46 -COREVMod WarfareThai: Insurgents (Middle-Easterns) INDEP (Side: GUER)","47 -COREVMod WarfareThai: Terrorists (Middle-Easterns) (Side: EAST)","48 -COREVMod WarfareThai: Terrorists (Middle-Easterns) INDEP (Side: GUER)","49 -CUP Community Upgrade Project: Army of the Czech Republic (Side: WEST)","50 -CUP Bohemia Interactive: Bundeswehr (Side: WEST)","51 -CUP Bohemia Interactive: United States Army (Side: WEST)","52 -CUP Bohemia Interactive: National Party of Chernarus (Side: GUER)","53 -CUP Bohemia Interactive: ION PMC (Side: GUER)","54 -CUP Bohemia Interactive: Royal Army Corps of Sahrani (Side: GUER)","55 -CUP Bohemia Interactive: Takistani Army (Side: EAST)","56 -CUP_Units Community Upgrade Project: British Armed Forces (Side: WEST)","57 -CUP_Units Bohemia Interactive: Takistani Locals (Side: GUER)","58 -CUP_Units Community Upgrade Project: United Nations (Side: GUER)","59 -CUP_Units Community Upgrade Project: Chernarussian Movement of the Red Star (Side: EAST)","60 -CUP_Units Bohemia Interactive: Takistani Militia (Side: EAST)","61 -CUP_Vehicles Community Upgrade Project: Chernarus Defense Forces (Side: WEST)","62 -CUP_Vehicles Community Upgrade Project: Royal New Zealand Navy (Side: WEST)","63 -CUP_Vehicles Community Upgrade Project: United States Marine Corps (Side: WEST)","64 -CUP_Vehicles Community Upgrade Project: Armed Forces of the Russian Federation (Side: EAST)","65 -CUP_Vehicles Community Upgrade Project: Sahrani Liberation Army (Side: EAST)","66 -Expansion Bohemia Interactive: CTRG (Side: WEST)","67 -Expansion Bohemia Interactive: Gendarmerie (Side: WEST)","68 -Expansion Bohemia Interactive: OTAN (Pacifique) (Side: WEST)","69 -Expansion Bohemia Interactive: Syndikat (Side: GUER)","70 -Expansion Bohemia Interactive: CSAT (Pacifique) (Side: EAST)","71 -Expansion Burgess: OPCAN (Colonial Police) (Side: WEST)","72 -Expansion Burgess: OPCAN (Colonial Sheriff) (Side: WEST)","73 -FOW Bohemia Interactive: [AUS] Australian Army (Side: GUER)","74 -FOW Bohemia Interactive: [DE] Heer (Side: WEST)","75 -FOW Bohemia Interactive: [IT] Regio Esercito (Side: WEST)","76 -FOW Bohemia Interactive: [DE] Luftwaffe (Side: WEST)","77 -FOW Bohemia Interactive: [UK] Army (Side: GUER)","78 -FOW FOW Team: [DE] Waffen-SS (Side: WEST)","79 -fow_mod FOW team: [JP] Imperial Army (Side: WEST)","80 -fow_mod FOW team: [US] Army (Europe) (Side: GUER)","81 -fow_mod Bohemia Interactive: [US] Army (Pacific) (Side: GUER)","82 -fow_mod FOW team: [US] Marines Corps (Side: GUER)","83 -GAL HcPookie: GAL (Government Army of Lingor) (Side: WEST)","84 -GALACTIC SWOP: Galactic Republic (Side: WEST)","85 -GANGBLUE BIS/IceBreakr: Blue Gang (Side: WEST)","86 -GANGRED BIS/IceBreakr: Red Gang (Side: EAST)","87 -IBR Bohemia Interactive: Alienz (Side: GUER)","88 -ISC Bohemia Interactive: [ISC] Iraqi Police (Side: WEST)","89 -ISC Bohemia Interactive: [ISC] YPG (Side: WEST)","90 -LIB AWAR: ACI (Side: GUER)","91 -LIB AWAR & Lennard: ARR (Side: WEST)","92 -LIB Lennard: Deutsches Afrikakorps (Side: WEST)","93 -LIB AWAR & Joarius: FFI (Side: GUER)","94 -LIB AWAR: Armia Krajowa (Polonais) (Side: GUER)","95 -LIB AWAR: Luftwaffe (Side: WEST)","96 -LIB AWAR & Lennard: [Winter] Luftwaffe (Side: WEST)","97 -LIB AWAR & Lennard: MKHL (Side: WEST)","98 -LIB Lennard: US North African Corps (Side: GUER)","99 -LIB Lennard: NKVD (Side: EAST)","100 -LIB IFA3 Team: Panzerwaffe (Side: WEST)","101 -LIB AWAR & Lennard: [Winter] Panzerwaffe (Side: WEST)","102 -LIB AWAR: RAAF (Side: GUER)","103 -LIB IFA3 Team: RAF (Side: GUER)","104 -LIB AWAR & Lennard: RBAF (Side: WEST)","105 -LIB AWAR: Red Army (Side: EAST)","106 -LIB AWAR & Lennard: [Winter] Red Army (Side: EAST)","107 -LIB El Tyranos & Jove Chiere: 101st Airborne Division (Side: GUER)","108 -LIB El Tyranos: 82nd Airborne Division (Side: GUER)","109 -LIB AWAR: US Army Air Forces (Side: GUER)","110 -LIB AWAR: [Winter] US Airforce (Side: GUER)","111 -LIB IFA3 Team: US Army (Side: GUER)","112 -LIB XXX: [Winter] US Army (Side: GUER)","113 -LIB Lennard: US 2nd Ranger Battalion (Side: GUER)","114 -LIB I44: US Tank Troops (Side: GUER)","115 -LIB AWAR & Lennard: [Winter] US Tank Troops (Side: GUER)","116 -LIB AWAR: USSR Airforce (Side: EAST)","117 -LIB AWAR & Lennard: [Winter] USSR Airforce (Side: EAST)","118 -LIB AWAR: Tank troops of USSR (Side: EAST)","119 -LIB AWAR & Lennard: [Winter] Tank troops of USSR (Side: EAST)","120 -LIB AWAR: Wehrmacht (Side: WEST)","121 -LIB AWAR & Lennard: [Winter] Wehrmacht (Side: WEST)","122 -LM Burgess: UNSCMC (Urban) (Side: WEST)","123 -LM Burgess: UNSCMC (Desert) (Side: WEST)","124 -LM Burgess: ONI Security (Side: WEST)","125 -LM Burgess: UNSCMC (Snow) (Side: WEST)","126 -LM Burgess: UNSCMC (Wood) (Side: WEST)","127 -LM Burgess: OPCANTest (Side: WEST)","128 -LOP Project OPFOR: Boko Haram (Side: EAST)","129 -LOP Project OPFOR: Irish Republican Army (Side: EAST)","130 -LOP Project OPFOR: Ulster Volunteer Force (Side: GUER)","131 -LOP_LeightsOPFOR Project OPFOR: Afghan National Army and Police (Side: WEST)","132 -LOP_LeightsOPFOR Project OPFOR: African Militia (Side: GUER)","133 -LOP_LeightsOPFOR Project OPFOR: African Militia (Side: EAST)","134 -LOP_LeightsOPFOR Project OPFOR: Middle Eastern Militia (Side: GUER)","135 -LOP_LeightsOPFOR Project OPFOR: Middle Eastern Militia (Side: EAST)","136 -LOP_LeightsOPFOR Project OPFOR: Chernarussian Defence Forces (Side: WEST)","137 -LOP_LeightsOPFOR Project OPFOR: ChDKZ (Side: EAST)","138 -LOP_LeightsOPFOR Project OPFOR: Iraqi Armed Forces (Side: WEST)","139 -LOP_LeightsOPFOR Project OPFOR: Iranian Armed Forces (Side: GUER)","140 -LOP_LeightsOPFOR Project OPFOR: Islamic State (Side: GUER)","141 -LOP_LeightsOPFOR Project OPFOR: Islamic State (Side: EAST)","142 -LOP_LeightsOPFOR Project OPFOR: Chernarussian National Insurgents (Side: GUER)","143 -LOP_LeightsOPFOR Project OPFOR: Kurdish Peshmerga Forces (Side: WEST)","144 -LOP_LeightsOPFOR Project OPFOR: Kurdish Peshmerga Forces (Side: GUER)","145 -LOP_LeightsOPFOR Project OPFOR: Private Military Company (Side: GUER)","146 -LOP_LeightsOPFOR Project OPFOR: Royal Army Corps of Sahrani (Side: GUER)","147 -LOP_LeightsOPFOR Project OPFOR: Sahrani Liberation Army (Side: EAST)","148 -LOP_LeightsOPFOR Project OPFOR: Takistani Armed Forces (Side: EAST)","149 -LOP_LeightsOPFOR Project OPFOR: Ultranationalists (Side: GUER)","150 -LOP_LeightsOPFOR Project OPFOR: Ukrainian Armed Forces (Side: WEST)","151 -LOP_LeightsOPFOR Project OPFOR: United Nations (Side: GUER)","152 -LOP_LeightsOPFOR Project OPFOR: United Armed Forces of Novorossiya (Side: EAST)","153 -Mark Bohemia Interactive: AAF (Side: EAST)","154 -MOL HcPookie: Molatian Army (Side: EAST)","155 -OPTRE Article 2 Studios: Insurrectionists (Side: EAST)","156 -OPTRE Burgess: OPCAN (Side: WEST)","157 -OPTRE Burgess: OPCAN (UEG Colonial Guard) (Side: WEST)","158 -OPTRE Burgess: Colonial Militia (OPCAN) (Side: GUER)","159 -OPTRE Burgess: OPCAN (PMC) (Side: GUER)","160 -OPTRE Burgess: Halo Wars Rebels (OPCAN) (Side: EAST)","161 -OPTRE Burgess: Common Criminals (OPCAN) (Side: EAST)","162 -OPTRE Burgess: OPCAN (UNSC Army) (Side: WEST)","163 -OPTRE Burgess: United Rebel Air Force(OPCAN) (Side: EAST)","164 -OPTRE Burgess: United Rebel Army Desert(OPCAN) (Side: EAST)","165 -OPTRE Burgess: United Rebel Army BattleJumpers (OPCAN) (Side: EAST)","166 -OPTRE Burgess: United Rebel Army Tropic(OPCAN) (Side: EAST)","167 -OPTRE Bohemia Interactive: United Rebel Army Ground Vehicles (OPCAN) (Side: EAST)","168 -OPTRE Burgess: United Rebel Army Wood(OPCAN) (Side: EAST)","169 -OPTRE Burgess: OPCAN (WARZONE BLUE) (Side: WEST)","170 -OPTRE Burgess: OPCAN (WARZONE RED) (Side: EAST)","171 -OPTRE Article 2 Studios: Colonial Police (Side: GUER)","172 -OPTRE Article 2 Studios: UNSCDF (Side: WEST)","173 -RHS_AFRF Bohemia Interactive: [ISC] al-Nusra Front (Side: GUER)","174 -RHS_AFRF Bohemia Interactive: [ISC] Iraqi Army (Side: WEST)","175 -RHS_AFRF Bohemia Interactive: [ISC] Islamic State (Side: GUER)","176 -RHS_AFRF Bohemia Interactive: [ISC] Islamic State (Side: EAST)","177 -RHS_AFRF Bohemia Interactive: [ISC] Peshmerga (Side: WEST)","178 -RHS_AFRF Bohemia Interactive: [ISC] Syrian Arab Army (Side: EAST)","179 -RHS_AFRF Red Hammer Studios: Eastern Militia (Side: GUER)","180 -RHS_AFRF Red Hammer Studios: Russia (MSV) (Side: EAST)","181 -RHS_AFRF Red Hammer Studios: Russia (RVA) (Side: EAST)","182 -RHS_AFRF Red Hammer Studios: Russia (TV) (Side: EAST)","183 -RHS_AFRF Red Hammer Studios: Russia (VDV) (Side: EAST)","184 -RHS_AFRF Red Hammer Studios: Russia (VMF) (Side: EAST)","185 -RHS_AFRF RHS: Russia (VPVO) (Side: EAST)","186 -RHS_AFRF Red Hammer Studios: Russia (VV) (Side: EAST)","187 -RHS_AFRF Bohemia Interactive: Russia (VVS - Grey) (Side: EAST)","188 -RHS_AFRF Red Hammer Studios: Russia (VVS - Camo) (Side: EAST)","189 -RHS_GREF Red Hammer Studios: Chernarus (Air Force) (Side: GUER)","190 -RHS_GREF Red Hammer Studios: Chernarus (Air Force) (Side: WEST)","191 -RHS_GREF RHS (A2 port): Chernarus (Ground Forces) (Side: GUER)","192 -RHS_GREF Red Hammer Studios: Chernarus (Ground Forces) (Side: WEST)","193 -RHS_GREF Red Hammer Studios: Chernarus (National Guard) (Side: GUER)","194 -RHS_GREF Red Hammer Studios: Chernarus (National Guard) (Side: WEST)","195 -RHS_GREF Red Hammer Studios: ChDKZ Insurgents (Side: EAST)","196 -RHS_GREF Red Hammer Studios: ChDKZ Insurgents (Side: GUER)","197 -RHS_GREF Red Hammer Studios: Chernarus (U.N. Peacekeepers) (Side: GUER)","198 -RHS_SAF Red Hammer Studios: SAF (RVIPVO) (Side: GUER)","199 -RHS_SAF Bohemia Interactive: SAF (KOV) (Side: GUER)","200 -RHS_SAF Red Hammer Studios: SAF (Casques Bleus) (Side: GUER)","201 -RHS_USAF Red Hammer Studios: USA (SOCOM) (Side: WEST)","202 -RHS_USAF Red Hammer Studios: USA (USAF) (Side: WEST)","203 -RHS_USAF Red Hammer Studios: USA (Army - D) (Side: WEST)","204 -RHS_USAF Red Hammer Studios: USA (Army - W) (Side: WEST)","205 -RHS_USAF Red Hammer Studios: USA (USMC - D) (Side: WEST)","206 -RHS_USAF Red Hammer Studios: USA (USMC - W) (Side: WEST)","207 -RHS_USAF Red Hammer Studios: USA (Navy) (Side: WEST)","208 -RHSGREF Red Hammer Studios: Horizon Islands Defence Force (Side: WEST)","209 -RHSGREF Red Hammer Studios: Nationalist Troops (Side: GUER)","210 -SG Stagler: Sturmtroopers (Side: WEST)","211 -SG Stagler: [Winter] Sturmtroopers (Side: WEST)","212 -SG Stagler: Tank Sturmtroopers (Side: WEST)","213 -SWOP_MODs SWOP: Bandits (Side: GUER)","214 -SWOP_MODs SWOP: DeathWatch (Side: GUER)","215 -SWOP_MODs SWOP: First Order (Side: EAST)","216 -SWOP_MODs SWOP: Jedi Order (Side: WEST)","217 -SWOP_MODs SWOP: Mandalorians (Side: GUER)","218 -SWOP_MODs SWOP: Resistance (Side: WEST)","219 -SWOP_MODs SWOP: Tusken Raiders (Side: GUER)","220 -UNSC Morthon: UNSCMC (Side: WEST)","221 -UNSUNG Bohemia Interactive: Australia (UNSUNG) (Side: WEST)","222 -UNSUNG HCPOOKIE - SAM pack: N.V.A. (UNSUNG) (Side: EAST)","223 -UNSUNG Bohemia Interactive: V.C. (UNSUNG) (Side: EAST)","224 -UNSUNG Bohemia Interactive: A.R.V.N. (UNSUNG) (Side: GUER)","225 -UNSUNG Bohemia Interactive: New Zealand (UNSUNG) (Side: WEST)","226 -UNSUNG Bohemia Interactive: U.S. (UNSUNG) (Side: WEST)","227 -USML segen: Armed Islamic Front (Side: GUER)"}; + default = 8; + }; + class btc_p_AA { // Anti-Air infantry: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_FAC_EAA"]); + values[]={0,1}; + texts[]={$STR_DISABLED,$STR_ENABLED}; + default = 0; + }; + class btc_p_tank { // Enemy uses Tank: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_FAC_ETANK"]); + values[]={0,1}; + texts[]={$STR_DISABLED,$STR_ENABLED}; + default = 0; + }; + class btc_p_civ { // Civil type: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_FAC_CTYPE"]); + values[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; + texts[]={"0 - EricJ: Afghan Civilians (Side: CIV)","1 - Bohemia Interactive: Civils (Side: CIV)","2 -btc_militia_mod Giallustio: Afghan Civilians (Side: CIV)","3 -CAF CAF MOD TEAM: African (Side: CIV)","4 -CAF CAF MOD TEAM: Middle Eastern (Side: CIV)","5 -COREVMod WarfareThai: Civilians (Africans) (Side: CIV)","6 -COREVMod WarfareThai: Civilians (Asians) (Side: CIV)","7 -COREVMod WarfareThai: Civilians (Eastern Europeons) (Side: CIV)","8 -COREVMod WarfareThai: Civilians (Middle-Easterns) (Side: CIV)","9 -CUP_Units Community Upgrade Project: Civilians (Russian) (Side: CIV)","10 -CUP_Vehicles Community Upgrade Project: Civilians (Chernarus) (Side: CIV)","11 -CUP_Vehicles Bohemia Interactive: Civilians (Sahrani) (Side: CIV)","12 -CUP_Vehicles Community Upgrade Project: Civilians (Takistan) (Side: CIV)","13 -LIB Reyhard & Joarius: 40s Civilians (Side: CIV)","14 -LOP_LeightsOPFOR Project OPFOR: Civilians (African) (Side: CIV)","15 -LOP_LeightsOPFOR Project OPFOR: Civilians (Eastern European) (Side: CIV)","16 -LOP_LeightsOPFOR Project OPFOR: Civilians (Middle Eastern) (Side: CIV)","17 -OPTRE Article 2 Studios: Civilians (UEG) (Side: CIV)","18 -ORANGE Bohemia Interactive: IDAP (Side: CIV)","19 -RDS_CIV_PACK reyhard: Russians (Side: CIV)","20 -UNSUNG Bohemia Interactive: Vietnamese (UNSUNG) (Side: CIV)"}; + default = 1; + }; + class btc_p_civ_veh { // Civil vehicle type: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_FAC_CTYPEVEH"]); + values[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; + texts[]={"0 - EricJ: Afghan Civilians (Side: CIV)","1 - Bohemia Interactive: Civils (Side: CIV)","2 -btc_militia_mod Giallustio: Afghan Civilians (Side: CIV)","3 -CAF CAF MOD TEAM: African (Side: CIV)","4 -CAF CAF MOD TEAM: Middle Eastern (Side: CIV)","5 -COREVMod WarfareThai: Civilians (Africans) (Side: CIV)","6 -COREVMod WarfareThai: Civilians (Asians) (Side: CIV)","7 -COREVMod WarfareThai: Civilians (Eastern Europeons) (Side: CIV)","8 -COREVMod WarfareThai: Civilians (Middle-Easterns) (Side: CIV)","9 -CUP_Units Community Upgrade Project: Civilians (Russian) (Side: CIV)","10 -CUP_Vehicles Community Upgrade Project: Civilians (Chernarus) (Side: CIV)","11 -CUP_Vehicles Bohemia Interactive: Civilians (Sahrani) (Side: CIV)","12 -CUP_Vehicles Community Upgrade Project: Civilians (Takistan) (Side: CIV)","13 -LIB Reyhard & Joarius: 40s Civilians (Side: CIV)","14 -LOP_LeightsOPFOR Project OPFOR: Civilians (African) (Side: CIV)","15 -LOP_LeightsOPFOR Project OPFOR: Civilians (Eastern European) (Side: CIV)","16 -LOP_LeightsOPFOR Project OPFOR: Civilians (Middle Eastern) (Side: CIV)","17 -OPTRE Article 2 Studios: Civilians (UEG) (Side: CIV)","18 -ORANGE Bohemia Interactive: IDAP (Side: CIV)","19 -RDS_CIV_PACK reyhard: Russians (Side: CIV)","20 -UNSUNG Bohemia Interactive: Vietnamese (UNSUNG) (Side: CIV)"}; + default = 1; + }; + class btc_p_IED_title { // << IED options >> + title = $STR_BTC_HAM_PARAM_IED_TITLE; + values[]={0}; + texts[]={""}; + default = 0; + }; + class btc_p_ied { // IEDs ratio: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_IED_RATIO"]); + values[]={0, 1, 2, 3}; + texts[]={$STR_DISABLED,$STR_BTC_HAM_PARAM_IED_RATIO_LOW,$STR_BTC_HAM_PARAM_IED_RATIO_NORMAL,$STR_BTC_HAM_PARAM_IED_RATIO_HIGH}; //texts[]={"Off","Low","Normal","High"}; + default = 2; + }; + class btc_p_ied_spot { // IEDs spotting difficulty: + title = __EVAL(format [" %1",(localize "STR_BTC_HAM_PARAM_IED_SPOT")]); + values[]={0, 1, 2}; + texts[]={$STR_BTC_HAM_PARAM_IED_SPOT_VERYEASY,$STR_BTC_HAM_PARAM_IED_SPOT_EASY,$STR_BTC_HAM_PARAM_IED_RATIO_NORMAL}; //texts[]={"Very easy","Easy","Normal"}; + default = 2; + }; + class btc_p_ied_drone { // Drone bomber: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_IED_DRONE"]); + values[]={0, 1}; + texts[]={$STR_DISABLED,$STR_ENABLED}; + default = 1; + }; + class btc_p_hideout_cache_title { // << Hideout/Cache options >> + title = $STR_BTC_HAM_PARAM_HIDE_TITLE; + values[]={0}; + texts[]={""}; + default = 0; + }; + class btc_p_hideout_n { // Hideout numbers: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_HIDE_NUMBERS"]); + values[]={99,1,2,3,4,5}; + texts[]={$STR_BTC_HAM_PARAM_HIDE_NUMBERS_RND,"1","2","3","4","5"}; //texts[]={"Random","1","2","3","4","5"}; + default = 5; + }; + class btc_p_cache_info_def { // Info cache distance: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_CACHE_DISTANCE"]); + values[]={500,1000,1500,2000,2500,3000,3500,4000,5000}; + texts[]={"500 m","1000 m","1500 m","2000 m","2500 m","3000 m","3500 m","4000 m","5000 m"}; + default = 1000; + }; + class btc_p_cache_info_ratio { //Cache info ratio: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_CACHE_RATIO"]); + values[]={50,100}; + texts[]={"50 m","100 m"}; + default = 100; + }; + class btc_p_info_chance { // Intel from dead bodies chance: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_CACHE_DEADINFO"]); + values[]={0,10,20,30,40,50,60,70,80,90,100}; + texts[]={"100 %","90 %","80 %","70 %","60 %","50 %","40 %","30 %","20 %","10 %","0 %"}; + default = 70; + }; + class btc_p_medical_title { // << Medical options >> + title = $STR_BTC_HAM_MEDI_TITLE; + values[]={0}; + texts[]={""}; + default = 0; + }; + class btc_p_redeploy { // Allow re-deploy? + title = __EVAL(format [" %1", localize "STR_BTC_HAM_MEDI_REDEPLOY"]); + values[]={0,1}; + texts[]={$STR_DISABLED,$STR_ENABLED}; + default = 1; + }; + class btc_p_skill_title { // << A3 Skill options >> + title = $STR_BTC_HAM_PARAM_SKILL_TITLE; + values[]={0}; + texts[]={""}; + default = 0; + }; + class btc_p_set_skill { // Set skill? + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_SKILL_ONOFF"]); + values[]={0,1}; + texts[]={$STR_DISABLED,$STR_ENABLED}; + default = 1; + }; + class btc_p_set_skill_general { // Set skill, general + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_SKILL_GEN"]); + values[]={0,1,2,3,4,5,6,7,8,9,10}; + texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; + default = 0; + }; + class btc_p_set_skill_aimingAccuracy { // Set skill, aimingAccuracy + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_SKILL_AIMACC"]); + values[]={0,1,2,3,4,5,6,7,8,9,10}; + texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; + default = 1; + }; + class btc_p_set_skill_aimingShake { // Set skill, aimingShake + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_SKILL_AIMSKILL"]); + values[]={0,1,2,3,4,5,6,7,8,9,10}; + texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; + default = 4; + }; + class btc_p_set_skill_aimingSpeed { // Set skill, aimingSpeed + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_SKILL_AIMSPEED"]); + values[]={0,1,2,3,4,5,6,7,8,9,10}; + texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; + default = 3; + }; + class btc_p_set_skill_endurance { // Set skill, endurance + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_SKILL_ENDURANCE"]); + values[]={0,1,2,3,4,5,6,7,8,9,10}; + texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; + default = 5; + }; + class btc_p_set_skill_spotDistance { // Set skill, spotDistance + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_SKILL_SPOTDIST"]); + values[]={0,1,2,3,4,5,6,7,8,9,10}; + texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; + default = 9; + }; + class btc_p_set_skill_spotTime { // Set skill, spotTime + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_SKILL_SPOTTIME"]); + values[]={0,1,2,3,4,5,6,7,8,9,10}; + texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; + default = 7; + }; + class btc_p_set_skill_courage { // Set skill, courage + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_SKILL_COURAGE"]); + values[]={0,1,2,3,4,5,6,7,8,9,10}; + texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; + default = 2; + }; + class btc_p_set_skill_reloadSpeed { // Set skill, reloadSpeed + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_SKILL_RELOAD"]); + values[]={0,1,2,3,4,5,6,7,8,9,10}; + texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; + default = 10; + }; + class btc_p_set_skill_commanding { // Set skill, commanding + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_SKILL_COMMANDING"]); + values[]={0,1,2,3,4,5,6,7,8,9,10}; + texts[]={"0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"}; + default = 7; + }; + class btc_p_gameplay_title { // << Gameplay options >> + title = $STR_BTC_HAM_PARAM_GAMEPLAY_TITLE; + values[]={0}; + texts[]={""}; + default = 0; + }; + class btc_p_sea { // Extend battlefield to sea: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_GAMEPLAY_SEA"]); + values[] = {0,1}; + texts[] = {$STR_DISABLED,$STR_ENABLED}; + default = 1; + }; + class btc_p_veh_armed_ho { // Add armed vehicles in Hideout: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_GAMEPLAY_ARMEDHIDEOUT"]); + values[] = {0,1}; + texts[] = {$STR_DISABLED,$STR_ENABLED}; + default = 0; + }; + class btc_p_veh_armed_spawn_more { // Add armed vehicles in Side mission/Cache: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_GAMEPLAY_ARMEDOTHER"]); + values[] = {0,1}; + texts[] = {$STR_DISABLED,$STR_ENABLED}; + default = 0; + }; + class btc_p_side_mission_cycle { // Side mission cycle: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_GAMEPLAY_SIDEM"]); + values[] = {0,1}; + texts[] = {$STR_DISABLED,$STR_ENABLED}; + default = 0; + }; + class btc_p_main_title { // << Other options >> + title = $STR_BTC_HAM_PARAM_OTHER_TITLE; + values[]={0}; + texts[]={""}; + default = 0; + }; + class btc_p_arsenalType { // Type of the arsenal: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_OTHER_ARSENALTYPE"]); + values[]={0,1,2,3,4}; + texts[]={$STR_BTC_HAM_PARAM_OTHER_ARSENALTYPE_BIS,$STR_BTC_HAM_PARAM_OTHER_ARSENALTYPE_BA,$STR_BTC_HAM_PARAM_OTHER_ARSENALTYPE_BA_PLUS,$STR_BTC_HAM_PARAM_OTHER_ARSENALTYPE_ACE,$STR_BTC_HAM_PARAM_OTHER_ARSENALTYPE_ACE_PLUS}; //texts[]={"BIS - Vanilla","BIS - Vanilla and ACE 3","BIS - Vanilla and ACE 3 (scroll wheel action)","ACE 3","ACE 3 (scroll wheel action)"}; + default = 2; + }; + class btc_p_rep { // Reputation at start: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_OTHER_REPSTART"]); + values[]={0, 200, 500, 750}; + texts[]={$STR_BTC_HAM_PARAM_OTHER_REPSTART_VLOW,$STR_BTC_HAM_PARAM_IED_RATIO_LOW,$STR_BTC_HAM_PARAM_IED_RATIO_NORMAL,$STR_BTC_HAM_PARAM_IED_RATIO_HIGH}; //texts[]={"Very Low","Low","Normal","High"}; + default = 200; + }; + class btc_p_garage { // Activate garage for admin: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_OTHER_GARAGEADMIN"]); + values[]={0,1}; + texts[]={$STR_DISABLED,$STR_ENABLED}; + default = 0; + }; + class btc_p_city_radius { // Spawn city radius offset: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_OTHER_SPAWNRAD"]); + values[]={0,1,2,3,4,5,6,7,8}; + texts[]={"0 m","100 m","200 m",$STR_BTC_HAM_PARAM_OTHER_SPAWNRAD_DEF,"400 m","500 m (Takistan)","600 m","700 m","800 m"}; // texts[]={"0 m","100 m","200 m","300 m","400 m","500 m (Takistan)","600 m","700 m","800 m"}; + default = 3; + }; + class btc_p_trigger { // Disable city activation when a plane or helicopter (>190Km/h) is flying above: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_OTHER_DISABLESPAWN"]); + values[]={0,1}; + texts[]={$STR_DISABLED,$STR_ENABLED}; + default = 0; + }; + class btc_p_debug { // Debug: + title = __EVAL(format [" %1", localize "STR_BTC_HAM_PARAM_OTHER_DEBUG"]); + values[]={0,1,2}; + texts[]={$STR_DISABLED,$STR_ENABLED, $STR_BTC_HAM_PARAM_OTHER_DEBUG_LOGONLY}; // texts[]={"Off","On","Log only"}; + default = 0; + }; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/doc.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/doc.sqf index dfbdd1a76..5383ff643 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/doc.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/doc.sqf @@ -1,154 +1,59 @@ -player createDiarySubject ["Documentation","Documentation"]; +private _MainCategory = (localize "STR_BTC_HAM_DOC_TITLE"); +player createDiarySubject [_MainCategory, _MainCategory]; -player createDiaryRecord ["Documentation", ["Headless & Database", " - This mission automatically uses one Headless client when available.

- This mission has a database system. Enemy units, towns, hideouts, cache, objects created by players or Zeus, vehicles, players markers (not lines) on global/camp channel are saved. All admin can save mission progress at any time with his self interaction key. - "] -]; +//Headless and Data base +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_HEADLESS_TITLE"),(localize "STR_BTC_HAM_DOC_HEADLESS_TEXT")]]; -player createDiaryRecord ["Documentation", ["Wounds", " - Use the interaction menu to treat your wounds.
-Keep in mind that all the actions will be available, even if you do not need them. It is always recommended examine first. - "] -]; +//Wounds +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_WOUNDS_TITLE"),(localize "STR_BTC_HAM_DOC_WOUNDS_TEXT")]]; -player createDiaryRecord ["Documentation", ["Deafness", " - Use the earplugs to protect your ears to avoid combat deafness.
-You can put them on with your self interaction key.

- "] -]; +//Deafness +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_DEAFNESS_TITLE"),(localize "STR_BTC_HAM_DOC_DEAFNESS_TEXT")]]; -player createDiaryRecord ["Documentation", ["Vehicles", " - Respawn:
- When a vehicle is destroyed it will not respawn in base, you need to tow or lift it back to base and repair it near the logistic point (Interact with the red box). Helicopter wrecks can only be lifted.
-The Chinook is the only exception, it will respawn after 30 seconds.

- Rearm:
-You can also rearm them by spawning the corresponding caliber at logistic point (Interact with the red box, select the vehicle type and caliber). Carry the ammo created and interact with the vehicle to rearm. This only works if rearming is setting on entire magazine or amount based on caliber (not for entire vehicle setting). - "] -]; +//Vehicles +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_VEHICLES_TITLE"),(localize "STR_BTC_HAM_DOC_VEHICLES_TEXT")]]; -player createDiaryRecord ["Documentation", ["Side Mission", " - Side missions are really useful to raise your reputation level.
-A side mission can be requested by the officer with his self interaction menu.
-If you don't want to complete a task, you can always abort it with the self interaction menu. - "] -]; +//Side Mission +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_SIDEMISSION_TITLE"),(localize "STR_BTC_HAM_DOC_SIDEMISSION_TEXT")]]; -player createDiaryRecord ["Documentation", ["FOB", " - FOB:
- In this mission a FOB is a forward spawn point, to create a FOB approach the red box at the logistic point and require a blue container.
-- Deploy:
-Move it where you want to deploy a new FOB and interact with it to set it up. Keep in mind that you can not deploy a FOB close to the main base (2.500m) and the terrain needs to be flat.

-- Dismantle:
-You can dismantle a FOB by interacting with the flag on the HQ roof. - "] -]; - -player createDiaryRecord ["Documentation", ["Sling loading", " -=BTC= Lift will not replace the A3 sling loading, you can use both.

- Lifting an object is pretty simple. Get in a chopper as pilot, hover above the object and interact with the chopper to deploy ropes.
-When you are in the right position a new scroll wheel action will appear ('HOOK'). If you want you can open the HUD to facilitate the operation.
- To release an object open you self interaction menu and select 'CUT ROPES'. - "] -]; +//FOB +player createDiaryRecord [_MainCategory, ["FOB", (localize "STR_BTC_HAM_DOC_FOB_TEXT")]]; -player createDiaryRecord ["Documentation", ["Logistic point", " - At the logistic point you can require new objects (like ammo, fortifications, supplies for the side missions...) and repair destroyed vehicles. - "] -]; +//Sling loading +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_SLING_TITLE"),(localize "STR_BTC_HAM_DOC_SLING_TEXT")]]; -player createDiaryRecord ["Documentation", ["Logistic", " -Cargo System:
-- Load: You can load objects inside vehicles. Approach the object you want to load and interact with it.
-Select 'LOAD IN' option.
-After that interact with the vehicle and select 'LOAD object selected' option.
-The object has to be close to the vehicle.

-- Unload: You can unload an object from a vehicle interacting with it. You can be inside the vehicle (personal interaction) or outside (object interaction).
-Select the option 'CHECK CARGO', then choose the object you want to unload from the list, and click 'UNLOAD'.
-If you are inside a chopper the object will be paradropped with a chute. If your height is too low, the object will crash down.
-Every vehicle has a 'CARGO CAPACITY' (CC in game), and every object has a 'REQUIRED CAPACITY' value (RC in game.)
-You can check those values in game with 'LOAD IN' and 'CHECK CARGO' options.


-Towing system:
-To tow a vehicle interact with it and select the option 'HOOK'.
After that place the tow vehicle in front of it and select 'TOW' in the interaction menu.
-If the two vehicles are too far away or the vehicle can't tow that load (Car can't tow truck or tank), the option will be disabled.
-To unhook interact with one of the two vehicles and select the option 'UNHOOK'.

- -Place option:
-With this option you can move heavy objects to build small outpost or base.
-When you select the option an hint will show all the keys required to move the object. - "] -]; +//Logistic point +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_LOGISTICP_TITLE"),(localize "STR_BTC_HAM_DOC_LOGISTICP_TEXT")]]; -player createDiaryRecord ["Documentation", ["Hideout", " -The hideouts are a place where the Oplitas organize their movements.
-They send reinforcements from here and can attack the closest city.
-If you notice a lot of activity in an area, probably there is an hideout closeby.
-If you want to defeat the Oplitas, you need to destroy all their hideouts.
-Here an example of an hideout:

-

-To destroy an hideout just place a satchel near the ammo box, it's close to the flag, and blow it off! - "] -]; +//Logistic +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_LOGISTIC_TITLE"),(localize "STR_BTC_HAM_DOC_LOGISTIC_TEXT")]]; -player createDiaryRecord ["Documentation", ["IED", " - Any object could be an IED, approach it carefully (DO NOT rotate while you are walking: prefer walk, stop, rotate, walk again etc). Turn On your mine detector (VMH3 or VMMH3) and search for a charge in a circle of 2 meter around.
- -If you are an engineer and have a defusal kit, you can disarm it.
-You can also blow them off with high caliber and explosive satchels. - "] -]; +//Hideout +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_HIDEOUT_TITLE"),(localize "STR_BTC_HAM_DOC_HIDEOUT_TEXT")]]; -player createDiaryRecord ["Documentation", ["Intel", " - Intel can be retrieved in the following ways:
-- Searching dead bodies
-- Interrogate prisoner
-- Talking to civilians

- Keep in mind that only the interpreter can talk to civilians and they can lie if your reputation level is low.

-When you find an intel from a dead body or interrogate a prisoner, a marker will appear in the map. Remember, prisoner have a random number of intel more or less interesting.
-There are two types of marker:
-- Red question mark (): ammo cache intel
-- Red exclamation mark (): hideout intel


-When you destroy an hideout or an ammo cache, all the markers related to it will be deleted. - "] -]; +//IED +player createDiaryRecord [_MainCategory, ["IED", (localize "STR_BTC_HAM_DOC_IED_TEXT")]]; -player createDiaryRecord ["Documentation", ["Reputation", " - Reputation can be ask to civilian
-Bad actions cause bad effects.
- Helping the local population by fighting the Oplitas and disarming IEDs will rise your reputation; killing civilians, mutilating alive/dead civilians, firing near civilians for no reason, damaging/destroying buildings, losing vehicles, player respawns will decrease your reputation. At the beginning you have a very low reputation level, so civilians won't help you in revealing important information about the Oplitas, they will likely lie instead.
-Aborting a side mission does not affect reputation. - "] -]; +//Intel +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_INTEL_TITLE"),(localize "STR_BTC_HAM_DOC_INTEL_TEXT")]]; -player createDiaryRecord ["Documentation", ["Orders", " -Any player can give orders to civilians.
- Open your self interaction menu and select 'ORDERS'.
-Your options are:
-- STOP
-- GET DOWN
-- GO AWAY

+//Reputation +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_REPUTATION_TITLE"),(localize "STR_BTC_HAM_DOC_REPUTATION_TEXT")]]; -If you want to give an order to just one unit, interact with it (object interaction). - "] -]; +//Orders +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_ORDERS_TITLE"),(localize "STR_BTC_HAM_DOC_ORDERS_TEXT")]]; -player createDiaryRecord ["Documentation", ["Traffic", " - Civilians are travelling by vehicle across cities. If your reputation is higher than normal, you can ask for a lift to a location chosen on the map. If you bump into a Oplitas patrol, don't worry, the civilian driver will do their best to hide you in the car.
- "] -]; +//Traffic +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_TRAFFIC_TITLE"),(localize "STR_BTC_HAM_DOC_TRAFFIC_TEXT")]]; -player createDiaryRecord ["Documentation", ["Gear", " - You can choose your gear at the red box inside the base. Located at the spawn point.
- "] -]; +//Gear +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_GEAR_TITLE"),(localize "STR_BTC_HAM_DOC_GEAR_TEXT")]]; -player createDiaryRecord ["Documentation", ["Interaction", " - Use ACE 3 interactions system. - "] -]; +//Interaction +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_INTERACTION_TITLE"),(localize "STR_BTC_HAM_DOC_INTERACTION_TEXT")]]; -player createDiaryRecord ["Documentation", [ - "Version", - format [" Version %1 ",(str(btc_version) + ".8")] - ] +//Version +player createDiaryRecord [_MainCategory, [(localize "STR_BTC_HAM_DOC_VERSION_TITLE"), + format [" Version %1.0 ", btc_version] + ] ]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/create.sqf index 64c2d595f..f70d767ba 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/create.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/create.sqf @@ -10,22 +10,22 @@ btc_cache_obj addEventHandler ["HandleDamage", btc_fnc_cache_hd_cache]; _pos_type_array = ["TOP","FRONT","CORNER_L","CORNER_R"]; for "_i" from 1 to (1 + round random 3) do { - _holder = createVehicle ["groundWeaponHolder", btc_cache_pos, [], 0, "can_collide"]; - _holder addWeaponCargoGlobal [selectRandom btc_cache_weapons_type, 1]; - _holder setVariable ["no_cache",true]; + _holder = createVehicle ["groundWeaponHolder", btc_cache_pos, [], 0, "can_collide"]; + _holder addWeaponCargoGlobal [selectRandom btc_cache_weapons_type, 1]; + _holder setVariable ["no_cache",true]; - _pos_type = selectRandom _pos_type_array; - _pos_type_array = _pos_type_array - [_pos_type]; - [btc_cache_obj,_holder, _pos_type] call btc_fnc_create_attachto; + _pos_type = selectRandom _pos_type_array; + _pos_type_array = _pos_type_array - [_pos_type]; + [btc_cache_obj,_holder, _pos_type] call btc_fnc_create_attachto; }; if (btc_debug_log) then {diag_log format ["CACHE SPAWNED: ID %1 POS %2",btc_cache_n,btc_cache_pos];}; if (btc_debug) then { - systemChat format ["Cache spawned in %1",btc_cache_pos]; - //Marker - createmarker [format ["%1", btc_cache_pos], btc_cache_pos]; - format ["%1", btc_cache_pos] setmarkertype "mil_unknown"; - format ["%1", btc_cache_pos] setMarkerText format ["Cache %1", btc_cache_n]; - format ["%1", btc_cache_pos] setMarkerSize [0.8, 0.8]; + systemChat format ["Cache spawned in %1",btc_cache_pos]; + //Marker + createmarker [format ["%1", btc_cache_pos], btc_cache_pos]; + format ["%1", btc_cache_pos] setmarkertype "mil_unknown"; + format ["%1", btc_cache_pos] setMarkerText format ["Cache %1", btc_cache_n]; + format ["%1", btc_cache_pos] setMarkerSize [0.8, 0.8]; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/find_pos.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/find_pos.sqf index a5bb35c2f..46564ec2e 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/find_pos.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/find_pos.sqf @@ -23,9 +23,9 @@ _pos = [getPos _city, (_xx + _y)] call btc_fnc_randomize_pos; _houses = [_pos,50] call btc_fnc_getHouses; if (count _houses == 0) then { - [] call btc_fnc_cache_find_pos; + [] call btc_fnc_cache_find_pos; } else { - //private ["_isAct","_cache"]; - _house = selectRandom _houses; - _house spawn btc_fnc_cache_spawn; + //private ["_isAct","_cache"]; + _house = selectRandom _houses; + _house spawn btc_fnc_cache_spawn; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/hd_cache.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/hd_cache.sqf index 61e2f4e98..18533d26c 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/hd_cache.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/cache/hd_cache.sqf @@ -8,34 +8,35 @@ _ammo = _this select 4; _explosive = (getNumber(configFile >> "cfgAmmo" >> _ammo >> "explosive") > 0); if (isNil {_cache getVariable "btc_hd_cache"} && {_explosive} && {_damage > 0.6}) then { - _cache setVariable ["btc_hd_cache",true]; - {detach _x; deleteVehicle _x;} forEach attachedObjects _cache; - //Effects - private ["_pos","_marker"]; - _pos = getposATL btc_cache_obj; - "Bo_GBU12_LGB_MI10" createVehicle _pos; - _pos spawn {sleep 2;"M_PG_AT" createVehicle _this;sleep 2;"M_Titan_AT" createVehicle _this;}; - [_pos] call btc_fnc_deaf_earringing; - deleteVehicle btc_cache_obj; - _marker = createmarker [format ["btc_cache_%1", btc_cache_n], btc_cache_pos]; - _marker setmarkertype "hd_destroy"; - _marker setMarkerText format ["Cached %1 destroyed", btc_cache_n]; - _marker setMarkerSize [1, 1]; - _marker setMarkerColor "ColorRed"; - if (btc_debug_log) then { - diag_log format ["CACHE DESTROYED: ID %1 POS %2",btc_cache_n,btc_cache_pos]; - }; - btc_rep_bonus_cache spawn btc_fnc_rep_change; + _cache setVariable ["btc_hd_cache",true]; + {detach _x; deleteVehicle _x;} forEach attachedObjects _cache; + //Effects + private ["_pos","_marker"]; + _pos = getposATL btc_cache_obj; + "Bo_GBU12_LGB_MI10" createVehicle _pos; + _pos spawn {sleep 2;"M_PG_AT" createVehicle _this;sleep 2;"M_Titan_AT" createVehicle _this;}; + [_pos] call btc_fnc_deaf_earringing; + deleteVehicle btc_cache_obj; + _marker = createmarker [format ["btc_cache_%1", btc_cache_n], btc_cache_pos]; + _marker setmarkertype "hd_destroy"; + [_marker,"STR_BTC_HAM_O_EH_HDCACHE_MRK",btc_cache_n] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker]; //Cached %1 destroyed + // Vehicle needs assistance + _marker setMarkerSize [1, 1]; + _marker setMarkerColor "ColorRed"; + if (btc_debug_log) then { + diag_log format ["CACHE DESTROYED: ID %1 POS %2",btc_cache_n,btc_cache_pos]; + }; + btc_rep_bonus_cache spawn btc_fnc_rep_change; - btc_cache_pos = []; - btc_cache_n = btc_cache_n + 1; - btc_cache_obj = objNull; - btc_cache_info = btc_info_cache_def; - {deleteMarker _x} foreach btc_cache_markers; - btc_cache_markers = []; + btc_cache_pos = []; + btc_cache_n = btc_cache_n + 1; + btc_cache_obj = objNull; + btc_cache_info = btc_info_cache_def; + {deleteMarker _x} foreach btc_cache_markers; + btc_cache_markers = []; - //Notification - [0] remoteExec ["btc_fnc_show_hint", 0]; + //Notification + [0] remoteExec ["btc_fnc_show_hint", 0]; - [] spawn {[] call btc_fnc_cache_find_pos;}; -} else {0}; \ No newline at end of file + [] spawn {[] call btc_fnc_cache_find_pos;}; +} else {0}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/activate.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/activate.sqf index e4d93cfa3..d5953e7e7 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/activate.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/activate.sqf @@ -1,208 +1,205 @@ -private ["_city","_is_init","_data_units","_type","_radius_x","_radius_y","_has_en","_has_ho","_ieds","_radius","_number_patrol_active","_number_civ_veh_active"]; +params ["_id"]; -hint ("Activate " + str(_this)); +if (btc_debug) then { + hint ("Activate " + str(_id)); +}; -_city = btc_city_all select (_this select 0); +private _city = btc_city_all select _id; if (_city getVariable "activating") exitWith {}; -_city setVariable ["activating",true]; +_city setVariable ["activating", true]; -_is_init = _city getVariable ["initialized",false]; -_data_units = _city getVariable ["data_units",[]]; -_type = _city getVariable ["type",""]; -_radius_x = _city getVariable ["RadiusX",0]; -_radius_y = _city getVariable ["RadiusY",0]; -_has_en = _city getVariable ["occupied",false]; -_has_ho = _city getVariable ["has_ho",false]; -_ieds = _city getVariable ["ieds",[]]; -_radius = (_radius_x+_radius_y)/2; +private _is_init = _city getVariable ["initialized", false]; +private _data_units = _city getVariable ["data_units", []]; +private _type = _city getVariable ["type", ""]; +private _radius_x = _city getVariable ["RadiusX", 0]; +private _radius_y = _city getVariable ["RadiusY", 0]; +private _has_en = _city getVariable ["occupied", false]; +private _has_ho = _city getVariable ["has_ho", false]; +private _ieds = _city getVariable ["ieds", []]; +private _radius = (_radius_x + _radius_y)/2; if (!_is_init) then { - private ["_ratio_ied","_ratio"]; - _ratio = (switch _type do { - case "Hill" : {random 1}; - case "NameLocal" : {random 2.5}; - case "NameVillage" : {random 3.5}; - case "NameCity" : {random 5}; - case "NameCityCapital" : {random 6}; - case "Airport" : {0}; - case "NameMarine" : {0}; - }); - _ratio_ied = _ratio; - if (_has_en) then {_ratio_ied = _ratio_ied * 1.5;} else {_ratio_ied = _ratio_ied * 0.75;}; - if (_has_ho) then {_ratio_ied = _ratio_ied * 2;}; - //if (_has_en == 0 && {!_has_ho}) then {_ratio_ied = 0;}; - diag_log format ["_ratio_ied %1 - p %2",_ratio_ied,_ratio_ied * btc_p_ied]; - _ratio_ied = _ratio_ied * btc_p_ied; - if (_ratio_ied > 0) then {[_city,_radius,((_ratio_ied/ 2) + (random _ratio_ied))] call btc_fnc_ied_init_area}; - - _ieds = _city getVariable ["ieds",[]]; - - _city setVariable ["initialized",true]; + private _ratio = (switch _type do { + case "Hill" : {random 1}; + case "NameLocal" : {random 2.5}; + case "NameVillage" : {random 3.5}; + case "NameCity" : {random 5}; + case "NameCityCapital" : {random 6}; + case "Airport" : {0}; + case "NameMarine" : {0}; + }); + private _ratio_ied = _ratio; + if (_has_en) then {_ratio_ied = _ratio_ied * 1.5;} else {_ratio_ied = _ratio_ied * 0.75;}; + if (_has_ho) then {_ratio_ied = _ratio_ied * 2;}; + if (btc_debug_log) then { + diag_log format ["_ratio_ied %1 - p %2", _ratio_ied, _ratio_ied * btc_p_ied]; + }; + _ratio_ied = _ratio_ied * btc_p_ied; + if (_ratio_ied > 0) then {[_city, _radius, (_ratio_ied / 2) + (random _ratio_ied)] call btc_fnc_ied_init_area}; + + _ieds = _city getVariable ["ieds", []]; + + _city setVariable ["initialized", true]; }; - -_city setVariable ["active",true]; +_city setVariable ["active", true]; if (count _ieds > 0) then { - private _ieds_data = _ieds apply {_x call btc_fnc_ied_create}; - _city = btc_city_all select (_this select 0); - [_city,_ieds_data] call btc_fnc_ied_check; + private _ieds_data = _ieds apply {_x call btc_fnc_ied_create}; + _city = btc_city_all select _id; + [_city, _ieds_data] call btc_fnc_ied_check; }; if (count _data_units > 0) then { - //{_x spawn btc_fnc_data_spawn_group;sleep 0.5;} foreach _data_units; - {_x call btc_fnc_data_spawn_group;sleep 0.01;} foreach _data_units; + { + (_x call btc_fnc_data_spawn_group) params ["_leader", "_type"]; + if (_type in [5, 7]) then { + _leader addEventHandler ["killed", format ["[%1] call btc_fnc_eh_suicider", _id]]; + }; + sleep 0.01; + } foreach _data_units; } else { - private ["_ratio"]; - //spawn bad guys "NameVillage","NameCity","NameCityCapital","NameLocal" - _ratio = (switch _type do { - case "Hill" : {0.6}; - case "NameLocal" : {0.75}; - case "NameVillage" : {1}; - case "NameCity" : {2}; - case "NameCityCapital" : {4}; - case "Airport" : {4}; - case "NameMarine" : {0.6}; - default {0.1}; - }); - if (_has_en) then { - private ["_groups","_n","_trigger"]; - //Find a better way to randomize city occupation - _n = random 3; - _groups = ceil ((1 + _n) * _ratio); - //hint ("SPAWNING" + str(_groups) + " ---- " + str(_n)); - //for "_i" from 1 to (_groups) do {[_city,_radius,(random _ratio),(random 1)] spawn btc_fnc_mil_create_group;sleep 0.5;}; - for "_i" from 1 to (_groups) do {[_city,_radius,(random _ratio),(random 1)] call btc_fnc_mil_create_group;}; - }; - //spawn mini task (ammo cache, ieds, injured civ) - - //spawn civilians - if (_type != "Hill") then { - private ["_factor","_n"]; - _factor = (switch _type do { - case "NameLocal" : {0.5}; - case "NameVillage" : {1.5}; - case "NameCity" : {3}; - case "NameCityCapital" : {6}; - case "Airport" : {1.5}; - default {1}; - }); - _n = 3 * _factor; - [_city,(_radius/3),_n] call btc_fnc_civ_populate; - }; + //Spawn bad guys "NameVillage","NameCity","NameCityCapital","NameLocal" + private _ratio = (switch _type do { + case "Hill" : {0.6}; + case "NameLocal" : {0.75}; + case "NameVillage" : {1}; + case "NameCity" : {2}; + case "NameCityCapital" : {4}; + case "Airport" : {4}; + case "NameMarine" : {0.6}; + default {0.1}; + }); + if (_has_en) then { + //Find a better way to randomize city occupation + private _n = random 3; + private _groups = ceil ((1 + _n) * _ratio); + for "_i" from 1 to (_groups) do {[_city, _radius, random _ratio, random 1] call btc_fnc_mil_create_group;}; + }; + //Spawn civilians + if (_type != "Hill") then { + private _factor = (switch _type do { + case "NameLocal" : {0.5}; + case "NameVillage" : {1.5}; + case "NameCity" : {3}; + case "NameCityCapital" : {6}; + case "Airport" : {1.5}; + default {1}; + }); + private _n = 3 * _factor; + [_city, _radius/3, _n] call btc_fnc_civ_populate; + }; }; if (_has_en) then { - _trigger = createTrigger["EmptyDetector",getPos _city]; - _trigger setTriggerArea[(_radius_x+_radius_y),(_radius_x+_radius_y),0,false]; - _trigger setTriggerActivation[str(btc_enemy_side),"NOT PRESENT",false]; - _trigger setTriggerStatements ["this", format ["[%1] spawn btc_fnc_city_set_clear",(_this select 0)], ""]; - _city setVariable ["trigger",_trigger]; + private _trigger = createTrigger["EmptyDetector", getPos _city]; + _trigger setTriggerArea[_radius_x+_radius_y, _radius_x+_radius_y, 0, false]; + _trigger setTriggerActivation[str(btc_enemy_side), "NOT PRESENT", false]; + _trigger setTriggerStatements ["this", format ["[%1] spawn btc_fnc_city_set_clear", _id], ""]; + _city setVariable ["trigger", _trigger]; }; -if (_city getVariable ["spawn_more",false]) then { - _city setVariable ["spawn_more",false]; - for "_i" from 1 to (2 + round random 3) do { - [_city,_radius,(4 + random 3),(random 1)] call btc_fnc_mil_create_group; - }; - if (btc_p_veh_armed_spawn_more) then { - private _closest = [_city,btc_city_all select {!(_x getVariable ["active",false])},false] call btc_fnc_find_closecity; - for "_i" from 1 to (1 + round random 2) do { - [{_this call btc_fnc_mil_send}, [_closest,getpos _city,1,selectRandom btc_type_motorized_armed], _i * 2] call CBA_fnc_waitAndExecute; - }; - }; +if (_city getVariable ["spawn_more", false]) then { + _city setVariable ["spawn_more", false]; + for "_i" from 1 to (2 + round random 3) do { + [_city, _radius, 4 + random 3, random 1] call btc_fnc_mil_create_group; + }; + if (btc_p_veh_armed_spawn_more) then { + private _closest = [_city, btc_city_all select {!(_x getVariable ["active", false])}, false] call btc_fnc_find_closecity; + for "_i" from 1 to (1 + round random 2) do { + [{_this call btc_fnc_mil_send}, [_closest, getpos _city,1, selectRandom btc_type_motorized_armed], _i * 2] call CBA_fnc_waitAndExecute; + }; + }; }; if !(btc_cache_pos isEqualTo []) then { - if (btc_cache_pos distance _city < (_radius_x+_radius_y)) then { - if (count (btc_cache_pos nearEntities ["Man", 30]) > 3) exitWith {}; - [btc_cache_pos,8,3,0.2] call btc_fnc_mil_create_group; - [btc_cache_pos,60,4,0.5] call btc_fnc_mil_create_group; - if (btc_p_veh_armed_spawn_more) then { - private _closest = [_city,btc_city_all select {!(_x getVariable ["active",false])},false] call btc_fnc_find_closecity; - for "_i" from 1 to (1 + round random 3) do { - [{_this call btc_fnc_mil_send}, [_closest,getpos _city,1,selectRandom btc_type_motorized_armed], _i * 2] call CBA_fnc_waitAndExecute; - }; - }; - }; + if (btc_cache_pos distance _city < (_radius_x+_radius_y)) then { + if (count (btc_cache_pos nearEntities ["Man", 30]) > 3) exitWith {}; + [btc_cache_pos, 8, 3, 0.2] call btc_fnc_mil_create_group; + [btc_cache_pos, 60, 4, 0.5] call btc_fnc_mil_create_group; + if (btc_p_veh_armed_spawn_more) then { + private _closest = [_city,btc_city_all select {!(_x getVariable ["active", false])}, false] call btc_fnc_find_closecity; + for "_i" from 1 to (1 + round random 3) do { + [{_this call btc_fnc_mil_send}, [_closest, getpos _city, 1, selectRandom btc_type_motorized_armed], _i * 2] call CBA_fnc_waitAndExecute; + }; + }; + }; }; -if (_has_ho && {!(_city getVariable ["ho_units_spawned",false])}) then { - private ["_pos","_random"]; - _city setVariable ["ho_units_spawned",true]; - //_pos = _city getVariable ["ho_pos",getPos _city];ho - _pos = _city getVariable ["ho_pos", getpos _city]; - [_pos,20,(10 + random 6),0.8] call btc_fnc_mil_create_group; - [_pos,120,(1 + random 2),0.5] call btc_fnc_mil_create_group; - [_pos,120,(1 + random 2),0.5] call btc_fnc_mil_create_group; - _random = (random 1); - switch (true) do { - case (_random < 0.3) : {}; - case (_random > 0.3) : { - private ["_statics"]; - _statics = btc_type_gl + btc_type_mg; - //format position - [[(_pos select 0) + 7,(_pos select 1) + 7,0],_statics,45] call btc_fnc_mil_create_static; - }; - case (_random > 0.75) : { - private ["_statics"]; - _statics = btc_type_gl + btc_type_mg; - [[(_pos select 0) + 7,(_pos select 1) + 7,0],_statics,45] call btc_fnc_mil_create_static; - [[(_pos select 0) - 7,(_pos select 1) - 7,0],_statics,225] call btc_fnc_mil_create_static; - }; - }; - if (btc_p_veh_armed_ho) then { - _closest = [_city,btc_city_all select {!(_x getVariable ["active",false])},false] call btc_fnc_find_closecity; - for "_i" from 1 to (2 + round random 3) do { - [{_this call btc_fnc_mil_send}, [_closest,_pos,1,selectRandom btc_type_motorized_armed], _i * 2] call CBA_fnc_waitAndExecute; - }; - }; +if (_has_ho && {!(_city getVariable ["ho_units_spawned", false])}) then { + _city setVariable ["ho_units_spawned", true]; + private _pos = _city getVariable ["ho_pos", getpos _city]; + [_pos, 20, 10 + random 6, 0.8] call btc_fnc_mil_create_group; + [_pos, 120, 1 + random 2, 0.5] call btc_fnc_mil_create_group; + [_pos, 120, 1 + random 2, 0.5] call btc_fnc_mil_create_group; + private _random = random 1; + switch (true) do { + case (_random < 0.3) : {}; + case (_random > 0.3) : { + private _statics = btc_type_gl + btc_type_mg; + [[(_pos select 0) + 7, (_pos select 1) + 7, 0], _statics, 45] call btc_fnc_mil_create_static; + }; + case (_random > 0.75) : { + private _statics = btc_type_gl + btc_type_mg; + [[(_pos select 0) + 7, (_pos select 1) + 7, 0], _statics, 45] call btc_fnc_mil_create_static; + [[(_pos select 0) - 7, (_pos select 1) - 7, 0], _statics, 225] call btc_fnc_mil_create_static; + }; + }; + if (btc_p_veh_armed_ho) then { + _closest = [_city, btc_city_all select {!(_x getVariable ["active", false])}, false] call btc_fnc_find_closecity; + for "_i" from 1 to (2 + round random 3) do { + [{_this call btc_fnc_mil_send}, [_closest, _pos, 1, selectRandom btc_type_motorized_armed], _i * 2] call CBA_fnc_waitAndExecute; + }; + }; }; //Suicider -_city = btc_city_all select (_this select 0); -if !(_city getVariable ["has_suicider",false]) then { - if ((time - btc_ied_suic_spawned) > btc_ied_suic_time && {random 1000 > btc_global_reputation}) then { - btc_ied_suic_spawned = time; - _city setVariable ["has_suicider",true]; - [_city,_radius] call btc_fnc_ied_suicider_create; - }; +if !(_city getVariable ["has_suicider", false]) then { + if ((time - btc_ied_suic_spawned) > btc_ied_suic_time && {random 1000 > btc_global_reputation}) then { + btc_ied_suic_spawned = time; + _city setVariable ["has_suicider", true]; + private _suicider = if (selectRandom [false, false, btc_p_ied_drone]) then { + [_city, _radius] call btc_fnc_ied_drone_create; + } else { + [_city, _radius] call btc_fnc_ied_suicider_create; + }; + _suicider addEventHandler ["killed", format ["[%1] call btc_fnc_eh_suicider", _id]]; + }; }; -_city setVariable ["activating",false]; +_city setVariable ["activating", false]; //Patrol btc_patrol_active = btc_patrol_active - [grpNull]; -_number_patrol_active = count btc_patrol_active; +private _number_patrol_active = count btc_patrol_active; if (_number_patrol_active < btc_patrol_max) then { - private ["_n","_av","_d","_r"]; - _n = 0;_r = 0; - if (_has_en) then {_n = round (random 3 + (3/2));} else {_n = round random 2;}; - _av = btc_patrol_max - _number_patrol_active; - _d = _n - _av; - if (_d > 0) then {_r = _n - _d;} else {_r = _n;}; - for "_i" from 1 to _r do - { - [(1 + round random 1),_city,((_radius_x+_radius_y) + btc_patrol_area)] spawn btc_fnc_mil_patrol_create; - }; - if (btc_debug_log) then {diag_log format ["btc_fnc_city_activate: (patrol) _n = %1 _av %2 _d %3 _r %4",_n,_av,_d,_r];}; + private _n = 0; + private _r = 0; + if (_has_en) then {_n = round (random 3 + (3/2));} else {_n = round random 2;}; + private _av = btc_patrol_max - _number_patrol_active; + private _d = _n - _av; + _r = if (_d > 0) then {_n - _d;} else {_n;}; + for "_i" from 1 to _r do { + [1 + round random 1, _city, (_radius_x+_radius_y) + btc_patrol_area] spawn btc_fnc_mil_patrol_create; + }; + if (btc_debug_log) then {diag_log format ["btc_fnc_city_activate: (patrol) _n = %1 _av %2 _d %3 _r %4", _n, _av, _d, _r];}; }; //Traffic btc_civ_veh_active = btc_civ_veh_active - [grpNull]; -_number_civ_veh_active = count btc_civ_veh_active; +private _number_civ_veh_active = count btc_civ_veh_active; if (_number_civ_veh_active < btc_civ_max_veh) then { - private ["_n","_av","_d","_r"]; - _n = 0;_r = 0; - _n = round (random 3 + (3/2)); - _av = btc_civ_max_veh - _number_civ_veh_active; - _d = _n - _av; - if (_d > 0) then {_r = _n - _d;} else {_r = _n;}; - for "_i" from 1 to _r do { - [_city,((_radius_x+_radius_y) + btc_patrol_area)] spawn btc_fnc_civ_traffic_create; - }; - if (btc_debug_log) then {diag_log format ["btc_fnc_city_activate: (traffic) _n = %1 _av %2 _d %3 _r %4",_n,_av,_d,_r];}; + private _n = 0; + private _r = 0; + _n = round (random 3 + (3/2)); + private _av = btc_civ_max_veh - _number_civ_veh_active; + private _d = _n - _av; + _r = if (_d > 0) then {_n - _d;} else {_n;}; + for "_i" from 1 to _r do { + [_city, (_radius_x+_radius_y) + btc_patrol_area] spawn btc_fnc_civ_traffic_create; + }; + if (btc_debug_log) then {diag_log format ["btc_fnc_city_activate: (traffic) _n = %1 _av %2 _d %3 _r %4", _n, _av, _d, _r];}; }; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/create.sqf index 4e0f0f8b3..e0ce31609 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/create.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/create.sqf @@ -1,34 +1,26 @@ -private ["_position","_type","_name","_radius_x","_radius_y","_has_en","_id","_city"]; +params ["_position","_type","_name","_radius_x","_radius_y","_has_en"]; -_position = _this select 0; -_type = _this select 1; -_name = _this select 2; -_radius_x = _this select 3; -_radius_y = _this select 4; -_has_en = _this select 5;//BOOL -_id = count btc_city_all; +private _id = count btc_city_all; -_city = "Land_Ammobox_rounds_F" createVehicle _position; -_city hideObjectGlobal true; -_city allowDamage false; -_city enableSimulation false; -_city setVariable ["activating",false]; -_city setVariable ["initialized",false]; -_city setVariable ["id",_id]; -_city setVariable ["name",_name]; -_city setVariable ["RadiusX",_radius_x]; -_city setVariable ["RadiusY",_radius_y]; -_city setVariable ["active",false]; -_city setVariable ["type",_type]; -_city setVariable ["spawn_more",false]; -_city setVariable ["data_units",[]]; -_city setVariable ["occupied",_has_en]; +private _city = createSimpleObject ["a3\structures_f_epb\items\military\ammobox_rounds_f.p3d", [_position select 0, _position select 1, getTerrainHeightASL _position]]; +hideObjectGlobal _city; +_city setVariable ["activating", false]; +_city setVariable ["initialized", false]; +_city setVariable ["id", _id]; +_city setVariable ["name", _name]; +_city setVariable ["RadiusX", _radius_x]; +_city setVariable ["RadiusY", _radius_y]; +_city setVariable ["active", false]; +_city setVariable ["type", _type]; +_city setVariable ["spawn_more", false]; +_city setVariable ["data_units", []]; +_city setVariable ["occupied", _has_en]; if (btc_p_sea) then { - _city setVariable ["hasbeach", (((selectBestPlaces [_position,0.8*(_radius_x+_radius_y), "sea",10,1]) select 0 select 1) isEqualTo 1)]; + _city setVariable ["hasbeach", ((selectBestPlaces [_position, 0.8*(_radius_x+_radius_y), "sea", 10, 1]) select 0 select 1) isEqualTo 1]; }; btc_city_all set [_id,_city]; [_position,_radius_x,_radius_y,_city,_has_en,_name,_type,_id] call btc_fnc_city_trigger_player_side; -_city \ No newline at end of file +_city diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/de_activate.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/de_activate.sqf index cd1abe250..1cb4d2660 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/de_activate.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/de_activate.sqf @@ -17,19 +17,19 @@ _radius = (_radius_x+_radius_y); _has_en = _city getVariable ["occupied",false]; if (_has_en) then { - _trigger = _city getVariable ["trigger",objNull]; - deleteVehicle _trigger; - _city setVariable ["trigger",objNull]; + _trigger = _city getVariable ["trigger",objNull]; + deleteVehicle _trigger; + _city setVariable ["trigger",objNull]; }; _data_units = []; { - if (((leader _x) distance _city) < _radius && {side _x != btc_player_side} && !(_x getVariable ["no_cache", false])) then { - private ["_data_group"]; - _data_group = _x call btc_fnc_data_get_group; - _data_units set [count _data_units, _data_group]; - if (btc_debug_log) then {diag_log format ["data_units = %1",_data_units];}; - }; + if (((leader _x) distance _city) < _radius && {side _x != btc_player_side} && !(_x getVariable ["no_cache", false])) then { + private ["_data_group"]; + _data_group = _x call btc_fnc_data_get_group; + _data_units set [count _data_units, _data_group]; + if (btc_debug_log) then {diag_log format ["data_units = %1",_data_units];}; + }; } foreach allGroups; _city setVariable ["data_units",_data_units]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/init.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/init.sqf index de538ce94..1506f68be 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/init.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/init.sqf @@ -7,43 +7,43 @@ _cities = ["NameVillage","NameCity","NameCityCapital","NameLocal","Hill","Airpor if (btc_p_sea) then {_cities pushBack "NameMarine";}; btc_city_all = []; for "_i" from 0 to (count _locations - 1) do { - private ["_current","_type"]; - _current = _locations select _i; - - _type = gettext(_current >> "type"); - if (_type in _cities) then { - private ["_position","_name","_position","_radius_x","_radius_y","_new_position","_area"]; - _position = getarray(_current >> "position"); - if (surfaceIsWater _position) then { - if !(_type isEqualTo "NameMarine") then { - private _church = nearestTerrainObjects [_position, ["CHURCH"], 470]; - if (_church isEqualTo []) then { - _area = 50; - for "_i" from 0 to 3 do { - _new_position = [_position, 0, _area, 0.5, 0, -1, 0] call BIS_fnc_findSafePos; - if (count _new_position == 2) exitWith {_position = _new_position;}; - _area = _area * 2; - }; - } else { - _position = getPos (_church select 0); - }; - }; - }; - _name = getText(_current >> "name"); - _radius_x = getNumber(_current >> "RadiusA"); - _radius_y = getNumber(_current >> "RadiusB"); - - if (btc_city_blacklist find _name >= 0) exitWith {}; - - /* - //if you want a safe area - if (_position distance getMarkerPos "YOUR_MARKER_AREA" < 500) exitWith {}; - */ - - [_position,_type,_name,_radius_x,_radius_y,random 1 > 0.45] call btc_fnc_city_create; - }; + private ["_current","_type"]; + _current = _locations select _i; + + _type = gettext(_current >> "type"); + if (_type in _cities) then { + private ["_position","_name","_position","_radius_x","_radius_y","_new_position","_area"]; + _position = getarray(_current >> "position"); + if (surfaceIsWater _position) then { + if !(_type isEqualTo "NameMarine") then { + private _church = nearestTerrainObjects [_position, ["CHURCH"], 470]; + if (_church isEqualTo []) then { + _area = 50; + for "_i" from 0 to 3 do { + _new_position = [_position, 0, _area, 0.5, 0, -1, 0] call BIS_fnc_findSafePos; + if (count _new_position == 2) exitWith {_position = _new_position;}; + _area = _area * 2; + }; + } else { + _position = getPos (_church select 0); + }; + }; + }; + _name = getText(_current >> "name"); + _radius_x = getNumber(_current >> "RadiusA"); + _radius_y = getNumber(_current >> "RadiusB"); + + if (btc_city_blacklist find _name >= 0) exitWith {}; + + /* + //if you want a safe area + if (_position distance getMarkerPos "YOUR_MARKER_AREA" < 500) exitWith {}; + */ + + [_position,_type,_name,_radius_x,_radius_y,random 1 > 0.45] call btc_fnc_city_create; + }; }; if !(isNil "btc_custom_loc") then { - {_x call btc_fnc_city_create} foreach btc_custom_loc; + {_x call btc_fnc_city_create} foreach btc_custom_loc; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/set_clear.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/set_clear.sqf index d9963e49a..a3ff6ab54 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/set_clear.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/set_clear.sqf @@ -7,7 +7,7 @@ _city setVariable ["occupied",false]; if (_city getVariable ["marker",""] != "") then {(_city getVariable ["marker",""]) setMarkerColor "ColorGreen";}; if (btc_final_phase) then { - btc_city_remaining = btc_city_remaining - [_city]; + btc_city_remaining = btc_city_remaining - [_city]; }; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/trigger_player_side.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/trigger_player_side.sqf index c57aec3ed..d4750d837 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/trigger_player_side.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/city/trigger_player_side.sqf @@ -1,14 +1,14 @@ private ["_trigger","_radius_x","_radius_y","_city","_position","_has_en","_name","_type","_id"]; -_position = _this select 0; -_radius_x = _this select 1; -_radius_y = _this select 2; -_city = _this select 3; -_has_en = _this select 4; -_name = _this select 5; -_type = _this select 6; -_id = _this select 7; +_position = _this select 0; +_radius_x = _this select 1; +_radius_y = _this select 2; +_city = _this select 3; +_has_en = _this select 4; +_name = _this select 5; +_type = _this select 6; +_id = _this select 7; _trigger = createTrigger["EmptyDetector",_position]; _trigger setTriggerArea[(_radius_x+_radius_y) + btc_city_radius,(_radius_x+_radius_y) + btc_city_radius,0,false]; @@ -16,17 +16,17 @@ _trigger setTriggerActivation["ANYPLAYER","PRESENT",true]; _trigger setTriggerStatements [btc_p_trigger, format ["[%1] spawn btc_fnc_city_activate",_id], format ["[%1] spawn btc_fnc_city_de_activate",_id]]; _city setVariable ["trigger_player_side",_trigger]; -if (btc_debug) then {//_debug - private ["_marker","_marke"]; - _marker = createmarker [format ["loc_%1",_id],_position]; - _marker setMarkerShape "ELLIPSE"; - _marker setMarkerBrush "SolidBorder"; - _marker setMarkerSize [(_radius_x+_radius_y) + btc_city_radius, (_radius_x+_radius_y) + btc_city_radius]; - _marker setMarkerAlpha 0.3; - //_marker setmarkertype "mil_dot"; - if (_has_en) then {_marker setmarkercolor "colorRed";} else {_marker setmarkercolor "colorGreen";}; - //_marker setmarkeralpha 0.5; - _marke = createmarker [format ["locn_%1",_id],_position]; - _marke setmarkertype "mil_dot"; - _marke setmarkertext format ["loc_%3 %1 %2 - [%4] - [%5] ",_name,_type,_id,_has_en, _city getVariable ["hasbeach", "empty"] ]; +if (btc_debug) then {//_debug + private ["_marker","_marke"]; + _marker = createmarker [format ["loc_%1",_id],_position]; + _marker setMarkerShape "ELLIPSE"; + _marker setMarkerBrush "SolidBorder"; + _marker setMarkerSize [(_radius_x+_radius_y) + btc_city_radius, (_radius_x+_radius_y) + btc_city_radius]; + _marker setMarkerAlpha 0.3; + //_marker setmarkertype "mil_dot"; + if (_has_en) then {_marker setmarkercolor "colorRed";} else {_marker setmarkercolor "colorGreen";}; + //_marker setmarkeralpha 0.5; + _marke = createmarker [format ["locn_%1",_id],_position]; + _marke setmarkertype "mil_dot"; + _marke setmarkertext format ["loc_%3 %1 %2 - [%4] - [%5] ",_name,_type,_id,_has_en, _city getVariable ["hasbeach", "empty"] ]; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/CuratorCivPlaced_s.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/CuratorCivPlaced_s.sqf index 8e091b5fd..30785a3db 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/CuratorCivPlaced_s.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/CuratorCivPlaced_s.sqf @@ -1,4 +1,4 @@ (_this select 0) call btc_fnc_civ_unit_create; -if (btc_debug_log) then {diag_log format ["Curator create civ : %1",(_this select 0)];}; \ No newline at end of file +if (btc_debug_log) then {diag_log format ["Curator create civ : %1",(_this select 0)];}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/addWP.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/addWP.sqf index 3dda346b9..b3fe747eb 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/addWP.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/addWP.sqf @@ -1,39 +1,30 @@ -private ["_group","_pos","_radius","_wp","_houses"]; +params ["_group", ["_pos", getpos leader param [0]] , ["_radius", 50]]; -_group = _this; - -_pos = getpos leader _group; -_radius = 50; - - -_wp = _group addWaypoint [_pos, 0]; +private _wp = _group addWaypoint [_pos, 0]; _wp setWaypointType "MOVE"; _wp setWaypointCompletionRadius 0; _wp setWaypointSpeed "LIMITED"; _wp setWaypointBehaviour "SAFE"; -_houses = [_pos,_radius] call btc_fnc_getHouses; +private _houses = [_pos,_radius] call btc_fnc_getHouses; if (count _houses > 0) then { - private ["_house"]; - _house = selectRandom _houses; - [_group,_house] call btc_fnc_house_addWP_loop; - _houses = _houses - [_house]; + private _house = selectRandom _houses; + [_group,_house] call btc_fnc_house_addWP_loop; + _houses = _houses - [_house]; }; for "_i" from 1 to 4 do { - private "_wp_pos"; - _wp_pos = [_pos, _radius] call btc_fnc_randomize_pos; - _wp = _group addWaypoint [_wp_pos, 0]; - _wp setWaypointType "MOVE"; - _wp setWaypointCompletionRadius 0; + private _wp_pos = [_pos, _radius] call btc_fnc_randomize_pos; + _wp = _group addWaypoint [_wp_pos, 0]; + _wp setWaypointType "MOVE"; + _wp setWaypointCompletionRadius 0; }; if (count _houses > 0) then { - private ["_house"]; - _house = selectRandom _houses; - [_group,_house] call btc_fnc_house_addWP_loop; - _houses = _houses - [_house]; + private _house = selectRandom _houses; + [_group,_house] call btc_fnc_house_addWP_loop; + _houses = _houses - [_house]; }; _wp = _group addWaypoint [_pos, 0]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_drone.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_drone.sqf new file mode 100644 index 000000000..7685f25fa --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_drone.sqf @@ -0,0 +1,15 @@ + +private _unit = _this select 0; + +_unit addMagazines [selectRandom btc_g_civs, 1]; + +_unit addEventHandler ["Fired", { + if ((_this select 1) isEqualTo "Throw") then { + (_this select 0) removeEventHandler ["Fired", _thisEventHandler]; + [_this select 0] joinSilent createGroup [civilian, true]; + [{ + (_this select 0) call btc_fnc_rep_add_eh; + [group (_this select 0)] call btc_fnc_civ_addWP; + }, [_this select 0], 20] call CBA_fnc_waitAndExecute; + }; +}]; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_grenade.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_grenade.sqf index 813095460..7685f25fa 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_grenade.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_grenade.sqf @@ -4,12 +4,12 @@ private _unit = _this select 0; _unit addMagazines [selectRandom btc_g_civs, 1]; _unit addEventHandler ["Fired", { - if ((_this select 1) isEqualTo "Throw") then { - (_this select 0) removeEventHandler ["Fired", _thisEventHandler]; - [_this select 0] joinSilent createGroup [civilian, true]; - [{ - (_this select 0) call btc_fnc_rep_add_eh; - (group (_this select 0)) call btc_fnc_civ_addWP; - }, [_this select 0], 20] call CBA_fnc_waitAndExecute; - }; + if ((_this select 1) isEqualTo "Throw") then { + (_this select 0) removeEventHandler ["Fired", _thisEventHandler]; + [_this select 0] joinSilent createGroup [civilian, true]; + [{ + (_this select 0) call btc_fnc_rep_add_eh; + [group (_this select 0)] call btc_fnc_civ_addWP; + }, [_this select 0], 20] call CBA_fnc_waitAndExecute; + }; }]; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_leaflets.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_leaflets.sqf new file mode 100644 index 000000000..24b1e7c3f --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/add_leaflets.sqf @@ -0,0 +1,19 @@ + +params ["_player","_uav"]; + +if !(_uav isKindOf "UAV_06_base_F") exitWith {}; + +_uav addMagazine "1Rnd_Leaflets_West_F"; +if !("Bomb_Leaflets" in (_uav weaponsTurret [-1])) then { + _uav addWeapon "Bomb_Leaflets"; +}; +if (needReload _uav == 1) then {reload _uav}; + +if ((_uav getVariable ["btc_leaflets_eh_added" , -1]) isEqualTo -1) then { + private _id_f = _uav addEventHandler ["Fired", btc_fnc_eh_leaflets]; + _uav setVariable ["btc_leaflets_eh_added" , _id_f]; + + if (btc_debug) then { + systemChat format ["Add leaflets EventHandler ID: %1", _id_f]; + }; +}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/class.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/class.sqf index 743a1c478..80a41608a 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/class.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/class.sqf @@ -13,25 +13,25 @@ _allclass = _allclass select {getNumber(configfile >> "CfgVehicles" >> _x >> "sc _factions = _factions apply {if !isClass(configFile >> "CfgFactionClasses" >> _x) then {"CIV_F"} else {_x};}; { - private _faction = _x; + private _faction = _x; - //Get all vehicles of the _faction selected - private _allclass_f = _allclass select {(toUpper getText(configFile >> "cfgvehicles" >> _x >> "faction")) isEqualTo _faction}; + //Get all vehicles of the _faction selected + private _allclass_f = _allclass select {(toUpper getText(configFile >> "cfgvehicles" >> _x >> "faction")) isEqualTo _faction}; - //Units - _type_units append (_allclass_f select {_x isKindOf "Man"}); - if (_type_units isEqualTo []) then {_type_units append ["C_man_1","C_man_1_1_F","C_man_1_2_F","C_man_1_3_F","C_man_polo_1_F","C_man_polo_1_F_afro","C_man_polo_1_F_euro","C_man_polo_1_F_asia","C_man_polo_2_F","C_man_polo_2_F_afro","C_man_polo_2_F_euro","C_man_polo_2_F_asia","C_man_polo_3_F","C_man_polo_3_F_afro","C_man_polo_3_F_euro","C_man_polo_3_F_asia","C_man_polo_4_F","C_man_polo_4_F_afro","C_man_polo_4_F_euro","C_man_polo_4_F_asia","C_man_polo_5_F","C_man_polo_5_F_afro","C_man_polo_5_F_euro","C_man_polo_5_F_asia","C_man_polo_6_F","C_man_polo_6_F_afro","C_man_polo_6_F_euro","C_man_polo_6_F_asia","C_man_p_fugitive_F","C_man_p_fugitive_F_afro","C_man_p_fugitive_F_euro","C_man_p_fugitive_F_asia","C_man_p_beggar_F","C_man_p_beggar_F_afro","C_man_p_beggar_F_euro","C_man_p_beggar_F_asia","C_man_w_worker_F","C_man_hunter_1_F","C_Orestes","C_Nikos","C_Man_casual_4_F","C_Man_casual_5_F","C_Man_casual_6_F","C_Man_sport_1_F","C_Man_sport_2_F","C_Man_sport_3_F","C_Man_casual_1_F","C_Man_casual_2_F","C_Man_casual_3_F"]}; + //Units + _type_units append (_allclass_f select {_x isKindOf "Man"}); + if (_type_units isEqualTo []) then {_type_units append ["C_man_1","C_man_1_1_F","C_man_1_2_F","C_man_1_3_F","C_man_polo_1_F","C_man_polo_1_F_afro","C_man_polo_1_F_euro","C_man_polo_1_F_asia","C_man_polo_2_F","C_man_polo_2_F_afro","C_man_polo_2_F_euro","C_man_polo_2_F_asia","C_man_polo_3_F","C_man_polo_3_F_afro","C_man_polo_3_F_euro","C_man_polo_3_F_asia","C_man_polo_4_F","C_man_polo_4_F_afro","C_man_polo_4_F_euro","C_man_polo_4_F_asia","C_man_polo_5_F","C_man_polo_5_F_afro","C_man_polo_5_F_euro","C_man_polo_5_F_asia","C_man_polo_6_F","C_man_polo_6_F_afro","C_man_polo_6_F_euro","C_man_polo_6_F_asia","C_man_p_fugitive_F","C_man_p_fugitive_F_afro","C_man_p_fugitive_F_euro","C_man_p_fugitive_F_asia","C_man_p_beggar_F","C_man_p_beggar_F_afro","C_man_p_beggar_F_euro","C_man_p_beggar_F_asia","C_man_w_worker_F","C_man_hunter_1_F","C_Orestes","C_Nikos","C_Man_casual_4_F","C_Man_casual_5_F","C_Man_casual_6_F","C_Man_sport_1_F","C_Man_sport_2_F","C_Man_sport_3_F","C_Man_casual_1_F","C_Man_casual_2_F","C_Man_casual_3_F"]}; - //Vehicles - _type_boats append (_allclass_f select {_x isKindOf "Ship"}); - if (_type_boats isEqualTo []) then {_type_boats append ["C_Rubberboat","C_Boat_Civil_01_F","C_Boat_Civil_01_rescue_F","C_Boat_Civil_01_police_F","C_Boat_Transport_02_F","C_Scooter_Transport_01_F"];}; - _type_veh append (_allclass_f select {(_x isKindOf "Car") || (_x isKindOf "Truck") || (_x isKindOf "Truck_F")}); - if (_type_veh isEqualTo []) then {_type_veh append ["C_Hatchback_01_F","C_SUV_01_F","C_Offroad_01_F","C_Van_01_transport_F","C_Van_01_box_F","C_Truck_02_transport_F","C_Truck_02_covered_F","C_Offroad_02_unarmed_F"]}; + //Vehicles + _type_boats append (_allclass_f select {_x isKindOf "Ship"}); + if (_type_boats isEqualTo []) then {_type_boats append ["C_Rubberboat","C_Boat_Civil_01_F","C_Boat_Civil_01_rescue_F","C_Boat_Civil_01_police_F","C_Boat_Transport_02_F","C_Scooter_Transport_01_F"];}; + _type_veh append (_allclass_f select {(_x isKindOf "Car") || (_x isKindOf "Truck") || (_x isKindOf "Truck_F")}); + if (_type_veh isEqualTo []) then {_type_veh append ["C_Hatchback_01_F","C_SUV_01_F","C_Offroad_01_F","C_Van_01_transport_F","C_Van_01_box_F","C_Truck_02_transport_F","C_Truck_02_covered_F","C_Offroad_02_unarmed_F"]}; } forEach _factions; //Final filter unwanted units type -_type_units = _type_units select {((_x find "_Driver_") isEqualTo -1) && ((_x find "_base") isEqualTo -1) && ((_x find "_unarmed_") isEqualTo -1) && ((_x find "_VR_") isEqualTo -1) && ((_x find "_pilot_") isEqualTo -1)}; -_type_veh = _type_veh select {((_x find "UAV") isEqualTo -1) && ((_x find "UGV") isEqualTo -1) && ((_x find "_Kart_") isEqualTo -1)}; +_type_units = _type_units select {((_x find "_Driver_") isEqualTo -1) && ((_x find "_base") isEqualTo -1) && ((_x find "_unarmed_") isEqualTo -1) && ((_x find "_VR_") isEqualTo -1) && ((_x find "_pilot_") isEqualTo -1)}; +_type_veh = _type_veh select {((_x find "UAV") isEqualTo -1) && ((_x find "UGV") isEqualTo -1) && ((_x find "_Kart_") isEqualTo -1)}; [_type_units,_type_boats,_type_veh] \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/create.sqf index 522ca8deb..4ce01c93f 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/create.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/create.sqf @@ -8,9 +8,9 @@ _pos = []; switch (typeName _city) do { - case "ARRAY" :{_pos = _city;}; - case "STRING":{_pos = getMarkerPos _city;}; - case "OBJECT":{_pos = position _city;}; + case "ARRAY" :{_pos = _city;}; + case "STRING":{_pos = getMarkerPos _city;}; + case "OBJECT":{_pos = position _city;}; }; _rpos = [_pos, _area] call btc_fnc_randomize_pos; @@ -21,14 +21,14 @@ _group = createGroup civilian; _group createUnit [_unit_type, _rpos, [], 0, "NONE"]; (leader _group) setpos _rpos; -_group spawn btc_fnc_civ_addWP; +[_group] spawn btc_fnc_civ_addWP; _group setSpeedMode "LIMITED"; {_x call btc_fnc_civ_unit_create} foreach units _group; if (BTC_debug_log) then { - diag_log format ["BTC_fnc_civ_create: _this = %1 ; POS %2 UNITS N %3",_this,_pos,count units _group]; + diag_log format ["BTC_fnc_civ_create: _this = %1 ; POS %2 UNITS N %3",_this,_pos,count units _group]; }; _group \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/evacuate.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/evacuate.sqf new file mode 100644 index 000000000..3d1fdbbdd --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/evacuate.sqf @@ -0,0 +1,27 @@ + +params ["_position", ["_position_evac", []]]; + +private _civilians = (allUnits select {side _x isEqualTo civilian}) select {_x distance _position < 200}; + +if (_position_evac isEqualTo []) then { + private _safe = (nearestTerrainObjects [_position, ["CHURCH","CHAPEL"], 400]); + if (_safe isEqualTo []) then { + _position_evac = [_position, 0, 500, 30, 0, 60 * (pi / 180), 0] call BIS_fnc_findSafePos; + } else { + private _safe_building = _safe select 0; + if ((_safe_building buildingPos -1) isEqualTo []) then { + _position_evac = _safe_building getPos [((boundingBox _safe_building) select 1 select 0) + 10, getDir _safe_building]; + } else { + _position_evac = getPos _safe_building; + }; + }; +}; + +{ + private _group = group _x; + while {(count (waypoints _group)) > 0} do {deleteWaypoint ((waypoints _group) select 0);}; + + [_group, _position_evac, 20] spawn btc_fnc_civ_addWP; +} forEach _civilians; + +_civilians \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_grenade.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_grenade.sqf index a1ed8ffcf..7ad0bcedd 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_grenade.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_grenade.sqf @@ -11,18 +11,18 @@ _units = (_units select {side _x isEqualTo civilian}); if (_units isEqualTo []) exitWith {}; { - if (btc_debug_log) then {diag_log format ["fnc_civ_get_grenade %1 - %2",_x,side _x];}; + if (btc_debug_log) then {diag_log format ["fnc_civ_get_grenade %1 - %2",_x,side _x];}; - _x call btc_fnc_rep_remove_eh; + _x call btc_fnc_rep_remove_eh; - [_x] call btc_fnc_civ_add_grenade; + [_x] call btc_fnc_civ_add_grenade; - [_x] joinSilent createGroup [btc_enemy_side, true]; + [_x] joinSilent createGroup [btc_enemy_side, true]; - (group _x) setVariable ["getWeapons",true]; + (group _x) setVariable ["getWeapons",true]; - (group _x) setBehaviour "AWARE"; - private _wp = (group _x) addWaypoint [_pos, 10]; - _wp setWaypointType "GUARD"; - _wp setWaypointCombatMode "RED"; + (group _x) setBehaviour "AWARE"; + private _wp = (group _x) addWaypoint [_pos, 10]; + _wp setWaypointType "GUARD"; + _wp setWaypointCombatMode "RED"; } foreach [selectRandom _units]; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_weapons.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_weapons.sqf index 1ce43e4cf..c045065a9 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_weapons.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/get_weapons.sqf @@ -8,26 +8,26 @@ if (count _this > 2) then {_units = _this select 2;} else {_units = _pos nearEnt _units = _units select {side _x isEqualTo civilian}; [[_units,_units apply {format ["amovp%1mstpsnonwnondnon",((animationState _x) select [5,3])]}], { - { - _x switchMove (_this select 1 select _foreachindex); - } forEach (_this select 0); + { + _x switchMove (_this select 1 select _foreachindex); + } forEach (_this select 0); }] remoteExec ["call", 0, false]; { - private ["_wp"]; - if (btc_debug_log) then {diag_log format ["fnc_civ_get_weapons %1 - %2",_x,side _x];}; + private ["_wp"]; + if (btc_debug_log) then {diag_log format ["fnc_civ_get_weapons %1 - %2",_x,side _x];}; - _x call btc_fnc_rep_remove_eh; + _x call btc_fnc_rep_remove_eh; - [_x] call btc_fnc_civ_add_weapons; + [_x] call btc_fnc_civ_add_weapons; - [_x] joinSilent createGroup [btc_enemy_side, true]; + [_x] joinSilent createGroup [btc_enemy_side, true]; - (group _x) setVariable ["getWeapons",true]; + (group _x) setVariable ["getWeapons",true]; - (group _x) setBehaviour "AWARE"; - _wp = (group _x) addWaypoint [getpos _x, 0]; - _wp setWaypointType "GUARD"; - _wp setWaypointCombatMode "RED"; + (group _x) setBehaviour "AWARE"; + _wp = (group _x) addWaypoint [getpos _x, 0]; + _wp setWaypointType "GUARD"; + _wp setWaypointCombatMode "RED"; } foreach _units; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/populate.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/populate.sqf index 810fee79d..163fa53f7 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/populate.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/populate.sqf @@ -10,23 +10,23 @@ _n = _this select 2; _pos = []; switch (typeName _city) do { - case "ARRAY" : {_pos = _city;}; - case "STRING": {_pos = getMarkerPos _city;}; - case "OBJECT": {_pos = position _city;}; + case "ARRAY" : {_pos = _city;}; + case "STRING": {_pos = getMarkerPos _city;}; + case "OBJECT": {_pos = position _city;}; }; _houses = []; for [{_i = 25},{_i < _area},{_i = _i + 50}] do { - private "_hs"; - _hs = [[(_pos select 0) + _i,(_pos select 1) + _i,0],50] call btc_fnc_getHouses; - _houses append _hs; - _hs = [[(_pos select 0) + _i,(_pos select 1) - _i,0],50] call btc_fnc_getHouses; - _houses append _hs; - _hs = [[(_pos select 0) - _i,(_pos select 1) - _i,0],50] call btc_fnc_getHouses; - _houses append _hs; - _hs = [[(_pos select 0) - _i,(_pos select 1) + _i,0],50] call btc_fnc_getHouses; - _houses append _hs; + private "_hs"; + _hs = [[(_pos select 0) + _i,(_pos select 1) + _i,0],50] call btc_fnc_getHouses; + _houses append _hs; + _hs = [[(_pos select 0) + _i,(_pos select 1) - _i,0],50] call btc_fnc_getHouses; + _houses append _hs; + _hs = [[(_pos select 0) - _i,(_pos select 1) - _i,0],50] call btc_fnc_getHouses; + _houses append _hs; + _hs = [[(_pos select 0) - _i,(_pos select 1) + _i,0],50] call btc_fnc_getHouses; + _houses append _hs; }; @@ -34,15 +34,16 @@ if (count _houses == 0) exitWith {}; for "_i" from 0 to _n do { - private ["_house","_unit_type"]; - if (count _houses == 0) exitWith {}; - _house = selectRandom _houses; - - _unit_type = selectRandom btc_civ_type_units; - - _group = createGroup civilian; - _group createUnit [_unit_type, _house buildingPos 0, [], 0, "NONE"]; - _group spawn btc_fnc_civ_addWP; - {_x call btc_fnc_civ_unit_create} foreach units _group; - _houses = _houses - [_house]; + private ["_house","_unit_type"]; + if (count _houses == 0) exitWith {}; + _house = selectRandom _houses; + + _unit_type = selectRandom btc_civ_type_units; + + _group = createGroup civilian; + _group createUnit [_unit_type, _house buildingPos 0, [], 0, "NONE"]; + _group setVariable ["btc_data_inhouse", [_house buildingPos 0]]; + [_group] spawn btc_fnc_civ_addWP; + {_x call btc_fnc_civ_unit_create} foreach units _group; + _houses = _houses - [_house]; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_add_WP.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_add_WP.sqf index 77c84f105..230c6a6aa 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_add_WP.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_add_WP.sqf @@ -12,27 +12,27 @@ _players = if (isMultiplayer) then {playableUnits} else {switchableUnits}; //Remove if too far from player if ({_x distance _active_city < (_area/2) || _x distance leader _group < (_area/2)} count _players isEqualTo 0) exitWith { - if (btc_debug_log) then { - diag_log format ["TRAFFIC REMOVE ID: %1 (%3) POS: %2",_group getVariable "btc_traffic_id",getpos leader _group,typeof vehicle leader _group]; - }; - vehicle leader _group setFuel 0; + if (btc_debug_log) then { + diag_log format ["TRAFFIC REMOVE ID: %1 (%3) POS: %2",_group getVariable "btc_traffic_id",getpos leader _group,typeof vehicle leader _group]; + }; + vehicle leader _group setFuel 0; }; //Sometimes the waypoints is completed but too far due to obstacle (water for island etc) if ((leader _group) distance _end_city > 300) then { - _noaccess pushBack _end_city; - _tmp_area = _area - ((leader _group) distance _end_city) * 0.3 * count _noaccess; - if (btc_debug) then {systemChat format ["TRAFFIC ID: %1 , count %2, tmp_area %3", _group getVariable "btc_traffic_id", count _noaccess, _tmp_area];}; + _noaccess pushBack _end_city; + _tmp_area = _area - ((leader _group) distance _end_city) * 0.3 * count _noaccess; + if (btc_debug) then {systemChat format ["TRAFFIC ID: %1 , count %2, tmp_area %3", _group getVariable "btc_traffic_id", count _noaccess, _tmp_area];}; } else { - _tmp_area = _area; - _noaccess = []; + _tmp_area = _area; + _noaccess = []; }; //Find a useful end city from the start city depending of vehicle type if (_isboat) then { - _useful = btc_city_all select {_x getVariable ["hasbeach",false]}; + _useful = btc_city_all select {_x getVariable ["hasbeach",false]}; } else { - _useful = btc_city_all select {_x getVariable ["type",""] != "NameMarine"}; + _useful = btc_city_all select {_x getVariable ["type",""] != "NameMarine"}; }; _cities = _useful select {(_x distance _active_city < _tmp_area) && !(_x in _noaccess)}; //Choose a city to have the _active_city (where the player is) between the traffic (eg. leader _group) and the _end_city : leader _group ----> _active_city ----> _end_city @@ -41,7 +41,7 @@ _cities = _cities select {_ang = _active_city getdir _x; (abs(_ang - _dirTo) min //Check if _end_city has been found, if not take the closer city which is _useful if (_cities isEqualTo []) then { - _cities = [[[_active_city, leader _group] select (_active_city in _noaccess),_useful,false] call btc_fnc_find_closecity]; + _cities = [[[_active_city, leader _group] select (_active_city in _noaccess),_useful,false] call btc_fnc_find_closecity]; }; _end_city = selectRandom _cities; _group setVariable ["end_city",_end_city]; @@ -49,15 +49,15 @@ _group setVariable ["noaccess",_noaccess]; _pos = getPos _end_city; if (_isboat) then { - _pos = (selectBestPlaces [_pos,(_active_city getVariable ["RadiusX",0]) + (_active_city getVariable ["RadiusY",0]), "sea",10,1]) select 0 select 0; - _pos = [_pos select 0, _pos select 1, 0]; + _pos = (selectBestPlaces [_pos,(_active_city getVariable ["RadiusX",0]) + (_active_city getVariable ["RadiusY",0]), "sea",10,1]) select 0 select 0; + _pos = [_pos select 0, _pos select 1, 0]; }; //Add Waypoints private ["_wp","_wp_1"]; while {(count (waypoints _group)) > 0} do { - deleteWaypoint ((waypoints _group) select 0); + deleteWaypoint ((waypoints _group) select 0); }; if ((vehicle leader _group) isKindOf "Air" || (vehicle leader _group) isKindOf "LandVehicle") then {(vehicle leader _group) setFuel 1;}; @@ -68,14 +68,14 @@ _wp setWaypointCompletionRadius 30; _wp setWaypointStatements ["true", format ["_spawn = [group this,%1,%2] spawn btc_fnc_civ_traffic_add_WP;",_area,_isboat]]; if (btc_debug) then { - if (!isNil {_group getVariable "btc_traffic_id"}) then { - private "_marker"; - deleteMarker format ["btc_traffic_%1", _group getVariable "btc_traffic_id"]; - _marker = createmarker [format ["btc_traffic_%1", _group getVariable "btc_traffic_id"] , [(_pos select 0) + random 30,(_pos select 1) + random 30,0]]; - format ["btc_traffic_%1", _group getVariable "btc_traffic_id"] setmarkertype "mil_dot"; - format ["btc_traffic_%1", _group getVariable "btc_traffic_id"] setMarkerText format ["P %1", _group getVariable "btc_traffic_id"]; - format ["btc_traffic_%1", _group getVariable "btc_traffic_id"] setmarkerColor "ColorOrange"; - format ["btc_traffic_%1", _group getVariable "btc_traffic_id"] setMarkerSize [0.5, 0.5]; - diag_log text format ["TRAFFIC ID: %1 (%3) POS: %2",_group getVariable "btc_traffic_id",_pos,typeof vehicle leader _group]; - }; + if (!isNil {_group getVariable "btc_traffic_id"}) then { + private "_marker"; + deleteMarker format ["btc_traffic_%1", _group getVariable "btc_traffic_id"]; + _marker = createmarker [format ["btc_traffic_%1", _group getVariable "btc_traffic_id"] , [(_pos select 0) + random 30,(_pos select 1) + random 30,0]]; + format ["btc_traffic_%1", _group getVariable "btc_traffic_id"] setmarkertype "mil_dot"; + format ["btc_traffic_%1", _group getVariable "btc_traffic_id"] setMarkerText format ["P %1", _group getVariable "btc_traffic_id"]; + format ["btc_traffic_%1", _group getVariable "btc_traffic_id"] setmarkerColor "ColorOrange"; + format ["btc_traffic_%1", _group getVariable "btc_traffic_id"] setMarkerSize [0.5, 0.5]; + diag_log text format ["TRAFFIC ID: %1 (%3) POS: %2",_group getVariable "btc_traffic_id",_pos,typeof vehicle leader _group]; + }; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_create.sqf index fbb514cf3..f5c9874c1 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_create.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_create.sqf @@ -1,5 +1,5 @@ -private ["_city","_area","_cities","_useful","_veh_type","_group","_veh","_pos_iswater","_pos","_Spos","_1","_2","_3"]; +private ["_city","_area","_cities","_useful","_veh_type","_group","_veh","_pos_iswater","_pos","_Spos","_1","_2","_3","_4"]; _city = _this select 0; _area = _this select 1; @@ -9,29 +9,29 @@ if (isNil "btc_traffic_id") then {btc_traffic_id = 0;}; _cities = btc_city_all select {(_x distance _city < _area)}; _useful = _cities select {!(_x getVariable ["active",false])}; if (_useful isEqualTo []) then { - while {_useful isEqualTo []} do { - private "_pos"; - _pos = [getPos _city, _area, btc_p_sea] call btc_fnc_randomize_pos; - if ({_x distance _pos < 500} count playableUnits isEqualTo 0) then {_useful pushBack _pos;}; - }; - _pos = selectRandom _useful; + while {_useful isEqualTo []} do { + private "_pos"; + _pos = [getPos _city, _area, btc_p_sea] call btc_fnc_randomize_pos; + if ({_x distance _pos < 500} count playableUnits isEqualTo 0) then {_useful pushBack _pos;}; + }; + _pos = selectRandom _useful; } else { - _pos = getPos(selectRandom _useful); + _pos = getPos(selectRandom _useful); }; if ((_pos nearRoads 200) isEqualTo []) then { - _Spos = [_pos, 0, 500, 13, [0,1] select btc_p_sea, 60 * (pi / 180), 0] call BIS_fnc_findSafePos; - _Spos = [_Spos select 0, _Spos select 1, 0]; - _pos_iswater = (surfaceIsWater _Spos); - if (_pos_iswater) then { - _veh_type = selectRandom btc_civ_type_boats; - } else { - _veh_type = selectRandom btc_civ_type_veh; - }; + _Spos = [_pos, 0, 500, 13, [0,1] select btc_p_sea, 60 * (pi / 180), 0] call BIS_fnc_findSafePos; + _Spos = [_Spos select 0, _Spos select 1, 0]; + _pos_iswater = (surfaceIsWater _Spos); + if (_pos_iswater) then { + _veh_type = selectRandom btc_civ_type_boats; + } else { + _veh_type = selectRandom btc_civ_type_veh; + }; } else { - _Spos = getPos (selectRandom (_pos nearRoads 200)); - _pos_iswater = false; - _veh_type = selectRandom btc_civ_type_veh; + _Spos = getPos (selectRandom (_pos nearRoads 200)); + _pos_iswater = false; + _veh_type = selectRandom btc_civ_type_veh; }; _veh = createVehicle [_veh_type, _Spos, [], 0, "FLY"]; @@ -53,8 +53,7 @@ _veh setVariable ["driver", _group]; _1 = _veh addEventHandler ["HandleDamage", {if ((_this select 2) > 0.1) then {_this call btc_fnc_civ_traffic_eh}}]; _2 = _veh addEventHandler ["Fuel", {_this call btc_fnc_civ_traffic_eh}]; _3 = _veh addEventHandler ["GetOut", {_this call btc_fnc_civ_traffic_eh}]; -//_4 = (leader _group) addEventHandler ["HandleDamage", {_this call btc_fnc_civ_traffic_eh}]; -//_5 = (leader _group) addEventHandler ["Killed", {_this call btc_fnc_civ_traffic_eh}]; +_4 = _veh addEventHandler ["HandleDamage", btc_fnc_rep_hd]; +_veh setVariable ["eh", [_1,_2,_3,_4]]; -_veh setVariable ["eh", [_1,_2,_3/*,4,5*/]]; [_group,_area,_pos_iswater] call btc_fnc_civ_traffic_add_WP; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_eh.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_eh.sqf index 068251a38..6458687b4 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_eh.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_eh.sqf @@ -3,8 +3,8 @@ //if (count _this > 4 && {!((_this select 1) isEqualTo "engine")}) exitWith {}; private _veh = _this select 0; -if (btc_debug_log) then { - diag_log format ["EH TRAFFIC ID: %1 veh: %2 driver: %3 pos_veh: %4",(_veh getVariable ["driver",_veh]) getVariable "btc_traffic_id", _veh,_veh getVariable ["driver",_veh], getPos _veh]; +if (btc_debug_log) then { + diag_log format ["EH TRAFFIC ID: %1 veh: %2 driver: %3 pos_veh: %4",(_veh getVariable ["driver",_veh]) getVariable "btc_traffic_id", _veh,_veh getVariable ["driver",_veh], getPos _veh]; }; _veh call btc_fnc_civ_traffic_eh_remove; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_eh_remove.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_eh_remove.sqf index 3fc388312..24171b745 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_eh_remove.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/civ/traffic_eh_remove.sqf @@ -5,4 +5,5 @@ private "_data"; _data = _this getVariable "eh"; _this removeEventHandler ["HandleDamage", (_data select 0)]; _this removeEventHandler ["Fuel", (_data select 1)]; -_this removeEventHandler ["GetOut", (_data select 2)]; \ No newline at end of file +_this removeEventHandler ["GetOut", (_data select 2)]; +_this removeEventHandler ["HandleDamage", (_data select 3)]; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/check_los.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/check_los.sqf index d329df989..26f325086 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/check_los.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/check_los.sqf @@ -13,10 +13,10 @@ _ang = abs (_dirTo - _atan); if ((_ang > 120) && (_ang < 240)) then {_can_see = true;}; if (_can_see) then { - _eyeu = eyepos _unit; - _eyet = eyepos _target; - _terr = terrainintersectasl [_eyeu, _eyet]; - _int = lineintersects [_eyeu, _eyet]; - if (_int || _terr) then {_can_see = false;}; + _eyeu = eyepos _unit; + _eyet = eyepos _target; + _terr = terrainintersectasl [_eyeu, _eyet]; + _int = lineintersects [_eyeu, _eyet]; + if (_int || _terr) then {_can_see = false;}; }; _can_see \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/clean_up.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/clean_up.sqf index 7e4276f42..b803459b9 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/clean_up.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/clean_up.sqf @@ -1,11 +1,11 @@ { - private _obj = _x; - if (({_x distance _obj < 150} count playableUnits) == 0) then {deleteVehicle _obj}; + private _obj = _x; + if (({_x distance _obj < 150} count playableUnits) == 0) then {deleteVehicle _obj}; } foreach ((allMissionObjects "groundweaponholder") select {!(_x getVariable ["no_cache",false])}); { - private _dead = _x; - if (({_x distance _dead < 300} count playableUnits) == 0 && isNil {_dead getVariable "btc_dont_delete"}) then {deleteVehicle _dead}; + private _dead = _x; + if (({_x distance _dead < 300} count playableUnits) == 0 && isNil {_dead getVariable "btc_dont_delete"}) then {deleteVehicle _dead}; } foreach alldead; { - if ({Alive _x} count units _x == 0) then {deleteGroup _x;}; + if ({Alive _x} count units _x == 0) then {deleteGroup _x;}; } foreach allGroups; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/create_attachto.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/create_attachto.sqf index 9c4ea6679..9fc17d3b1 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/create_attachto.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/create_attachto.sqf @@ -13,26 +13,26 @@ _maxWidth_box = abs ((_p2 select 0) - (_p1 select 0)); _height_weapon = (boundingBoxReal _holder select 1 select 2) - (boundingCenter _holder select 2); switch (_pos_type) do { - case "TOP": { - _holder attachTo [_object, [0, 0, _height_box + _height_weapon]]; - _y = random 180; _p = 0; _r = 0; - }; - case "FRONT": { - _holder attachTo [_object, [- _maxWidth_box/6, 0, -0.1]]; - _y = random [-20,0,20]; _p = random [-20,0,20]; _r = 255; - }; - case "CORNER_L": { - _holder attachTo [_object, [- _maxWidth_box/6.5, 0, -0.1]]; - _y = 40; _p = random [-10,0,10]; _r = 255; - }; - case "CORNER_R": { - _holder attachTo [_object, [- _maxWidth_box/8.5, 0, -0.1]]; - _y = -30; _p = random [-10,0,10]; _r = 255; - }; - default { - _holder attachTo [_object, [0, 0, _height_box + _height_weapon]]; - _y = random 180; _p = 0; _r = 0; - }; + case "TOP": { + _holder attachTo [_object, [0, 0, _height_box + _height_weapon]]; + _y = random 180; _p = 0; _r = 0; + }; + case "FRONT": { + _holder attachTo [_object, [- _maxWidth_box/6, 0, -0.1]]; + _y = random [-20,0,20]; _p = random [-20,0,20]; _r = 255; + }; + case "CORNER_L": { + _holder attachTo [_object, [- _maxWidth_box/6.5, 0, -0.1]]; + _y = 40; _p = random [-10,0,10]; _r = 255; + }; + case "CORNER_R": { + _holder attachTo [_object, [- _maxWidth_box/8.5, 0, -0.1]]; + _y = -30; _p = random [-10,0,10]; _r = 255; + }; + default { + _holder attachTo [_object, [0, 0, _height_box + _height_weapon]]; + _y = random 180; _p = 0; _r = 0; + }; }; _holder setVectorDirAndUp [[ sin _y * cos _p,cos _y * cos _p,sin _p],[[ sin _r,-sin _p,cos _r * cos _p],-_y] call BIS_fnc_rotateVector2D]; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/create_composition.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/create_composition.sqf index d99cc8f7b..48d506fdf 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/create_composition.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/create_composition.sqf @@ -1,25 +1,19 @@ -private ["_pos","_setdir","_array","_type","_dir","_rel_pos","_rel_x","_rel_y","_rel_z","_pos_z","_pos_x","_pos_y","_obj","_pos_obj"]; +params ["_pos", "_setdir", "_array"]; +_pos params ["_pos_x", "_pos_y", ["_pos_z", 0]]; -_pos = _this select 0; -//// Direction parameter is align with compass \\\\ -_setdir = -(_this select 1); -_array = _this select 2; -_pos_x = _pos select 0; -_pos_y = _pos select 1; -_pos_z = 0;if (count _pos > 2) then {_pos_z = _pos select 2;}; _array apply { - _type = _x select 0; - //// Determine direction function of setdir \\\\ - _dir = ((_x select 1) - _setdir); - _rel_pos = _x select 2; - _rel_x = _rel_pos select 0; - _rel_y = _rel_pos select 1; - _rel_z = _rel_pos select 2; - //// Determine position function of setdir \\\\ - _pos_obj = [(_pos_x + _rel_x*cos(_setdir) - _rel_y*sin(_setdir)),(_pos_y + _rel_y*cos(_setdir) + _rel_x*sin(_setdir)),(_pos_z + _rel_z)]; - _obj = createVehicle [_type, _pos_obj, [], 0, "CAN_COLLIDE"]; - _obj setDir _dir; - _obj setPos _pos_obj; - _obj; + _x params ["_type", "_dir", "_rel_pos"]; + _rel_pos params ["_rel_x", "_rel_y", ["_rel_z", 0]]; + + //// Determine position function of setdir \\\\ + private _final = [_pos_x + _rel_x*cos(_setdir) - _rel_y*sin(- _setdir), _pos_y + _rel_y*cos(_setdir) + _rel_x*sin(- _setdir)]; + _final pushBack (_pos_z + _rel_z + getTerrainHeightASL _final); + private _obj = createVehicle [_type, ASLToATL _final, [], 0, "CAN_COLLIDE"]; + //// Determine direction function of setdir \\\\ + _obj setDir (_dir + _setdir); + + _obj setVectorUp surfaceNormal position _obj; + _obj setPosWorld getPosWorld _obj; + _obj; }; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/delete.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/delete.sqf index e97fe8a8c..6721f2866 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/delete.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/delete.sqf @@ -1,39 +1,41 @@ // [marker array], [object array],[fx object array (test_EmptyObjectForSmoke)] , [group array] { - deletemarker _x; + deletemarker _x; + //remove JIP remoteExec + remoteExec ["", _x]; } foreach (_this select 0); { - private _object = _x; - [{ - params ["_args", "_id"]; - if ({_x distance _args < 1000} count playableUnits == 0) then { - [_id] call CBA_fnc_removePerFrameHandler; - deleteVehicle _args; - }; - } , 5, _object] call CBA_fnc_addPerFrameHandler; + private _object = _x; + [{ + params ["_args", "_id"]; + if ({_x distance _args < 1000} count playableUnits == 0) then { + [_id] call CBA_fnc_removePerFrameHandler; + deleteVehicle _args; + }; + } , 5, _object] call CBA_fnc_addPerFrameHandler; } forEach (_this select 1); { - private _fx = _x; - [{ - params ["_args", "_id"]; - if ({_x distance _args < 1000} count playableUnits == 0) then { - [_id] call CBA_fnc_removePerFrameHandler; - _args call btc_fnc_deleteTestObj; - }; - } , 5, _fx] call CBA_fnc_addPerFrameHandler; + private _fx = _x; + [{ + params ["_args", "_id"]; + if ({_x distance _args < 1000} count playableUnits == 0) then { + [_id] call CBA_fnc_removePerFrameHandler; + _args call btc_fnc_deleteTestObj; + }; + } , 5, _fx] call CBA_fnc_addPerFrameHandler; } forEach (_this select 2); { - private _group = _x; - [{ - params ["_args", "_id"]; - if ({_x distance leader _args < 1000} count playableUnits == 0) then { - [_id] call CBA_fnc_removePerFrameHandler; - {deleteVehicle _x} foreach units _args; - [_args] call btc_fnc_deletegroup; - }; - } , 5, _group] call CBA_fnc_addPerFrameHandler; -} forEach (_this select 3); \ No newline at end of file + private _group = _x; + [{ + params ["_args", "_id"]; + if ({_x distance leader _args < 1000} count playableUnits == 0) then { + [_id] call CBA_fnc_removePerFrameHandler; + {deleteVehicle _x} foreach units _args; + [_args] call btc_fnc_deletegroup; + }; + } , 5, _group] call CBA_fnc_addPerFrameHandler; +} forEach (_this select 3); diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/deleteTestObj.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/deleteTestObj.sqf index 91331e0f0..60d6a98c6 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/deleteTestObj.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/deleteTestObj.sqf @@ -1,11 +1,11 @@ _this addMPEventHandler ["MPKilled", { - _this = _this select 0; - { - deleteVehicle _x; - } forEach (_this getVariable ["effects", []]); - if (isServer) then { - deleteVehicle _this; - }; - }]; + _this = _this select 0; + { + deleteVehicle _x; + } forEach (_this getVariable ["effects", []]); + if (isServer) then { + deleteVehicle _this; + }; + }]; _this setDamage 1; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/deletegroup.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/deletegroup.sqf index 69783c5e3..27f1aa4a2 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/deletegroup.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/deletegroup.sqf @@ -1,8 +1,8 @@ //Check group locality if (local (_this select 0)) then { - deleteGroup (_this select 0); + deleteGroup (_this select 0); } else { - //DeleteGroup where is local - (_this select 0) remoteExec ["deleteGroup", groupOwner (_this select 0)]; + //DeleteGroup where is local + (_this select 0) remoteExec ["deleteGroup", groupOwner (_this select 0)]; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/end_mission.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/end_mission.sqf index b7eba6736..f1dbcebed 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/end_mission.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/end_mission.sqf @@ -1,9 +1,8 @@ 0 call btc_fnc_task_set_done; -hint "All the hideouts are destroyed, finally the Oplitas has been defeated! Mission accomplished"; - +hint (localize "STR_BTC_HAM_O_COMMON_ENDMISSION"); //All the hideouts are destroyed, finally the Oplitas has been defeated! Mission accomplished while {true} do { - hintSilent "All the hideouts are destroyed, finally the Oplitas has been defeated! Mission accomplished"; - sleep 1; -}; \ No newline at end of file + hintSilent (localize "STR_BTC_HAM_O_COMMON_ENDMISSION"); //All the hideouts are destroyed, finally the Oplitas has been defeated! Mission accomplished + sleep 1; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/final_phase.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/final_phase.sqf index 0653de0ca..95e0b3a4d 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/final_phase.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/final_phase.sqf @@ -10,18 +10,18 @@ btc_final_phase = true; btc_city_remaining = []; { - if (_x getVariable ["type",""] != "NameMarine") then { - if (_x getVariable ["marker",""] != "") then {deleteMarker (_x getVariable ["marker",""]);}; - _radius_x = _x getVariable ["RadiusX",500]; - _radius_y = _x getVariable ["RadiusY",500]; - _marker = createmarker [format ["city_%1",position _x],position _x]; - _marker setMarkerShape "ELLIPSE"; - _marker setMarkerBrush "SolidBorder"; - _marker setMarkerSize [(_radius_x+_radius_y), (_radius_x+_radius_y)]; - _marker setMarkerAlpha 0.3; - if (_x getVariable ["occupied",false]) then {_marker setmarkercolor "colorRed";btc_city_remaining pushBack _x;} else {_marker setmarkercolor "colorGreen";_marker setMarkerAlpha 0;}; - _x setVariable ["marker",_marker]; - }; + if (_x getVariable ["type",""] != "NameMarine") then { + if (_x getVariable ["marker",""] != "") then {deleteMarker (_x getVariable ["marker",""]);}; + _radius_x = _x getVariable ["RadiusX",500]; + _radius_y = _x getVariable ["RadiusY",500]; + _marker = createmarker [format ["city_%1",position _x],position _x]; + _marker setMarkerShape "ELLIPSE"; + _marker setMarkerBrush "SolidBorder"; + _marker setMarkerSize [(_radius_x+_radius_y), (_radius_x+_radius_y)]; + _marker setMarkerAlpha 0.3; + if (_x getVariable ["occupied",false]) then {_marker setmarkercolor "colorRed";btc_city_remaining pushBack _x;} else {_marker setmarkercolor "colorGreen";_marker setMarkerAlpha 0;}; + _x setVariable ["marker",_marker]; + }; } foreach btc_city_all; waitUntil {sleep 15; (btc_city_remaining isEqualTo [])}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/find_closecity.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/find_closecity.sqf index c8e9671e8..27832d1cc 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/find_closecity.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/find_closecity.sqf @@ -5,9 +5,9 @@ _obj = _this select 0; _array = _this select 1; if (_this select 2) then { - _btc_city_all_distance = _array select {!(_x getVariable ["occupied",false])}; + _btc_city_all_distance = _array select {!(_x getVariable ["occupied",false])}; } else { - _btc_city_all_distance = _array; + _btc_city_all_distance = _array; }; if (_btc_city_all_distance isEqualTo []) exitWith {[]}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/find_veh_with_turret.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/find_veh_with_turret.sqf index 837b9e896..8020a1ea8 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/find_veh_with_turret.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/find_veh_with_turret.sqf @@ -2,23 +2,23 @@ private ["_veh_array"]; if ((_this select 0) isEqualTypeAll objNull) then { - _veh_array = (_this select 0) apply {typeOf _x}; + _veh_array = (_this select 0) apply {typeOf _x}; } else { - _veh_array = _this select 0; + _veh_array = _this select 0; }; private _veh_with_turret = []; { - private _wps = []; - private _type = _x; - { - _wps append (([_type,_x] call btc_fnc_log_getconfigmagazines)); - } forEach [[-1], [0], [0,0], [0,1], [1], [2], [0,2]]; - _wps = _wps - (_this select 1); + private _wps = []; + private _type = _x; + { + _wps append (([_type,_x] call btc_fnc_log_getconfigmagazines)); + } forEach [[-1], [0], [0,0], [0,1], [1], [2], [0,2]]; + _wps = _wps - (_this select 1); - if !(_wps isEqualTo []) then { - _veh_with_turret pushBackUnique _x; - }; + if !(_wps isEqualTo []) then { + _veh_with_turret pushBackUnique _x; + }; } forEach _veh_array; _veh_with_turret \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/findposoutsiderock.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/findposoutsiderock.sqf index 4db662186..4cbb2ceba 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/findposoutsiderock.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/findposoutsiderock.sqf @@ -7,29 +7,29 @@ if (_objects isEqualTo []) exitWith {_rpos}; private _object = _objects select 0; if (_object in nearestTerrainObjects [_object, ["HIDE", "ROCK", "ROCKS"], 1]) then { - _roads = _rpos nearRoads 100; - if (_roads isEqualTo []) then { - _rpos = [_rpos,5,50,10,false] call btc_fnc_findsafepos; - } else { - _rpos = getPos (_roads select 0); - }; + _roads = _rpos nearRoads 100; + if (_roads isEqualTo []) then { + _rpos = [_rpos,5,50,10,false] call btc_fnc_findsafepos; + } else { + _rpos = getPos (_roads select 0); + }; }; if (btc_debug_log) then { - _objects = lineIntersectsObjs [[_rpos select 0, _rpos select 1, (getTerrainHeightASL _rpos) + 1], [_rpos select 0, _rpos select 1, (getTerrainHeightASL _rpos) + 100], objNull, objNull, false, 16]; - if !(_objects isEqualTo []) then { - _object = _objects select 0; - if (_object in nearestTerrainObjects [_object, ["HIDE", "ROCK", "ROCKS"], 1]) then { - diag_log format ["FIND POS OUTSIDE ROCK: POS %1 Still inside rock", _rpos]; - if (btc_debug) then { - systemChat "FIND POS OUTSIDE ROCK: Still inside rock"; - private _marker = createmarker [format ["btc_inrock_%1", _rpos], _rpos]; - _marker setmarkertype "mil_unknown"; - _marker setMarkerText "In rock"; - _marker setMarkerSize [0.5, 0.5]; - }; - }; - }; + _objects = lineIntersectsObjs [[_rpos select 0, _rpos select 1, (getTerrainHeightASL _rpos) + 1], [_rpos select 0, _rpos select 1, (getTerrainHeightASL _rpos) + 100], objNull, objNull, false, 16]; + if !(_objects isEqualTo []) then { + _object = _objects select 0; + if (_object in nearestTerrainObjects [_object, ["HIDE", "ROCK", "ROCKS"], 1]) then { + diag_log format ["FIND POS OUTSIDE ROCK: POS %1 Still inside rock", _rpos]; + if (btc_debug) then { + systemChat "FIND POS OUTSIDE ROCK: Still inside rock"; + private _marker = createmarker [format ["btc_inrock_%1", _rpos], _rpos]; + _marker setmarkertype "mil_unknown"; + _marker setMarkerText "In rock"; + _marker setMarkerSize [0.5, 0.5]; + }; + }; + }; }; _rpos diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/findsafepos.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/findsafepos.sqf index 7581a2965..63a02e679 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/findsafepos.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/findsafepos.sqf @@ -8,8 +8,8 @@ _objdist = _this select 3; _allow_water = _this select 4; for "_i" from 0 to 4 do { - _return_pos = [_check_pos, _mindist, _random_area, _objdist, [0,1] select _allow_water, 60 * (pi / 180), 0] call BIS_fnc_findSafePos; - if (count _return_pos == 2) exitWith {_return_pos = [_return_pos select 0, _return_pos select 1, 0];}; - _random_area = _random_area * 1.5; + _return_pos = [_check_pos, _mindist, _random_area, _objdist, [0,1] select _allow_water, 60 * (pi / 180), 0] call BIS_fnc_findSafePos; + if (count _return_pos == 2) exitWith {_return_pos = [_return_pos select 0, _return_pos select 1, 0];}; + _random_area = _random_area * 1.5; }; _return_pos \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/get_cardinal.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/get_cardinal.sqf index 4a251011d..9b9098663 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/get_cardinal.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/get_cardinal.sqf @@ -9,13 +9,13 @@ _card = ""; switch (true) do { - case (_n > 345 || _n <= 15) : {_card = "N";}; - case (_n > 15 && _n <= 75) : {_card = "NE";}; - case (_n > 75 && _n <= 105) : {_card = "E";}; - case (_n > 105 && _n <= 165) : {_card = "SE";}; - case (_n > 165 && _n <= 195) : {_card = "S";}; - case (_n > 195 && _n <= 255) : {_card = "SW";}; - case (_n > 255 && _n <= 285) : {_card = "W";}; - case (_n > 285 && _n <= 345) : {_card = "NW";}; + case (_n > 345 || _n <= 15) : {_card = "N";}; + case (_n > 15 && _n <= 75) : {_card = "NE";}; + case (_n > 75 && _n <= 105) : {_card = "E";}; + case (_n > 105 && _n <= 165) : {_card = "SE";}; + case (_n > 165 && _n <= 195) : {_card = "S";}; + case (_n > 195 && _n <= 255) : {_card = "SW";}; + case (_n > 255 && _n <= 285) : {_card = "W";}; + case (_n > 285 && _n <= 345) : {_card = "NW";}; }; _card \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/get_class.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/get_class.sqf index 9ceca428e..0faef05c0 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/get_class.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/get_class.sqf @@ -10,32 +10,32 @@ private _alldlc = []; // Get factions and store it if new faction are found { - // Get faction of the vehicle and store it if is a new faction - private _index = _allfaction pushBackUnique toUpper getText(configfile >> "CfgVehicles" >> _x >> "faction"); - - //If new get the side and author name and dlc name - if (_index > -1) then { - _allside pushBack getNumber(configfile >> "CfgVehicles" >> _x >> "side"); - _allauthor pushBack getText(configfile >> "CfgVehicles" >> _x >> "author"); - private _dlc = getText(configfile >> "CfgVehicles" >> _x >> "dlc"); - if (_dlc isEqualTo "") then { - if ((_allauthor select _index) isEqualTo "Bohemia Interactive") then { - //If is BI check if it is really BI, some mod don't change the author - private _mod_folder = getText(configfile >> "CfgFactionClasses" >> _allfaction select _index >> "icon") select [if ((getText(configfile >> "CfgFactionClasses" >> _allfaction select _index >> "icon") select [0,1]) isEqualTo "\") then {1} else {0}]; - private _mod = _mod_folder select [0, _mod_folder find "\"]; - if !(_mod isEqualTo "a3") then {_dlc = (_allfaction select _index) select [0, (_allfaction select _index) find "_"];}; - } else { - _dlc = (_allfaction select _index) select [0, (_allfaction select _index) find "_"]; - }; - }; - _alldlc pushBack _dlc; - }; + // Get faction of the vehicle and store it if is a new faction + private _index = _allfaction pushBackUnique toUpper getText(configfile >> "CfgVehicles" >> _x >> "faction"); + + //If new get the side and author name and dlc name + if (_index > -1) then { + _allside pushBack getNumber(configfile >> "CfgVehicles" >> _x >> "side"); + _allauthor pushBack getText(configfile >> "CfgVehicles" >> _x >> "author"); + private _dlc = getText(configfile >> "CfgVehicles" >> _x >> "dlc"); + if (_dlc isEqualTo "") then { + if ((_allauthor select _index) isEqualTo "Bohemia Interactive") then { + //If is BI check if it is really BI, some mod don't change the author + private _mod_folder = getText(configfile >> "CfgFactionClasses" >> _allfaction select _index >> "icon") select [if ((getText(configfile >> "CfgFactionClasses" >> _allfaction select _index >> "icon") select [0,1]) isEqualTo "\") then {1} else {0}]; + private _mod = _mod_folder select [0, _mod_folder find "\"]; + if !(_mod isEqualTo "a3") then {_dlc = (_allfaction select _index) select [0, (_allfaction select _index) find "_"];}; + } else { + _dlc = (_allfaction select _index) select [0, (_allfaction select _index) find "_"]; + }; + }; + _alldlc pushBack _dlc; + }; } forEach _allvehicles; //Create an array of all information get private _all = []; { - _all pushBack [ _alldlc select _foreachindex, _x, _allside select _foreachindex, _allauthor select _foreachindex]; + _all pushBack [ _alldlc select _foreachindex, _x, _allside select _foreachindex, _allauthor select _foreachindex]; } forEach _allfaction; //Select faction depending on side CIV or Enemy @@ -49,7 +49,7 @@ _allauthor = []; {_allauthor pushBackUnique _x} forEach (_all apply {_x select 0}); private _values = []; for "_i" from 0 to (count _all) - 1 do { - _values pushBack _i; + _values pushBack _i; }; _texts = _values apply {Format ["%1 -%2",_x,_texts select _x]}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/house_addWP.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/house_addWP.sqf index b7c05e8be..ea39bd314 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/house_addWP.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/house_addWP.sqf @@ -1,12 +1,9 @@ -private ["_group","_house","_wp"]; +params ["_group","_house"]; -_group = _this select 0; -_house = _this select 1; +private _allpositions = [_group,_house] call btc_fnc_house_addWP_loop; -[_group,_house] call btc_fnc_house_addWP_loop; - -_wp = _group addWaypoint [getPos _house, 0]; +private _wp = _group addWaypoint [_allpositions select 0, 0.2]; _wp setWaypointType "CYCLE"; _wp waypointAttachObject _house; _wp setWaypointHousePosition 0; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/house_addWP_loop.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/house_addWP_loop.sqf index 50ea5fe0a..a6547814c 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/house_addWP_loop.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/house_addWP_loop.sqf @@ -1,16 +1,19 @@ -private ["_group","_house","_wp","_allpositions"]; +params ["_group","_house"]; -_group = _this select 0; -_house = _this select 1; +private _allpositions = _house buildingPos -1; +private _copyallpositions = +_allpositions; -_allpositions = _house buildingPos -1; if (btc_debug_log) then {diag_log format ["setWaypoint : count all pos %1 in %2 ", count _allpositions,_house];}; { - _wp = _group addWaypoint [_x, 0]; - _wp setWaypointType "MOVE"; - _wp setWaypointCompletionRadius 0; - _wp waypointAttachObject _house; - _wp setWaypointHousePosition _foreachindex; - _wp setWaypointTimeout [15, 20, 30]; -} forEach _allpositions; \ No newline at end of file + private _index = _copyallpositions find selectRandom(_copyallpositions); + + private _wp = _group addWaypoint [_copyallpositions deleteAt _index, 0.2]; + _wp setWaypointType "MOVE"; + _wp setWaypointCompletionRadius 0; + _wp waypointAttachObject _house; + _wp setWaypointHousePosition _index; + _wp setWaypointTimeout [15, 20, 30]; +} forEach _allpositions; + +_allpositions \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/intro.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/intro.sqf index f16288cee..5365a0cfb 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/intro.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/intro.sqf @@ -4,14 +4,14 @@ private ["_color","_array"]; _color = [1,0.5,0,1]; _array = [ -['\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa',_color, getPos btc_gear_object, 1.1, 1.1, 0, "Arsenal/Re-deploy", 1], +['\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa',_color, getPos btc_gear_object, 1.1, 1.1, 0, (localize "STR_BTC_HAM_INTRO_ARSENAL_REDEPLOY"), 1], //Arsenal/Re-deploy ['\A3\Ui_f\data\Logos\a_64_ca.paa',_color, [getPos btc_gear_object select 0,getPos btc_gear_object select 1,(getPos btc_gear_object select 2) + 2], 1.1, 1.1, 0, "", 1], //['\A3\ui_f\data\map\vehicleicons\iconCar_ca.paa',_color, [getPos btc_create_object select 0,getPos btc_create_object select 1,(getPos btc_create_object select 2) + 5], 0.9, 0.9, 90, "", 1], ['\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa',_color, [getPos btc_create_object select 0,getPos btc_create_object select 1,(getPos btc_create_object select 2) + 2.5], 0.9, 0.9, 0, "", 1], -['\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa',_color, getPos btc_create_object, 0.9, 0.9, 0, "Rearm/Repair and Objects", 1] +['\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa',_color, getPos btc_create_object, 0.9, 0.9, 0, (localize "STR_BTC_HAM_INTRO_LOGPOINT"), 1] //Rearm/Repair and Objects ]; -if (!isNil "btc_helo_1") then {_array pushBack ['\A3\ui_f\data\map\vehicleicons\iconhelicopter_ca.paa',[0.7,0,0,1], getPos btc_helo_1, 1.1, 1.1, 0, "Only Respawnable", 1];}; +if (!isNil "btc_helo_1") then {_array pushBack ['\A3\ui_f\data\map\vehicleicons\iconhelicopter_ca.paa',[0.7,0,0,1], getPos btc_helo_1, 1.1, 1.1, 0, (localize "STR_BTC_HAM_INTRO_ONLYRESPAWN"), 1];}; //Only Respawnable -[getMarkerPos "btc_base","Base overview. Loading ...",20,30,240,0,_array,0] call BIS_fnc_establishingShot; +[getMarkerPos "btc_base",(localize "STR_BTC_HAM_INTRO_LOADINGTXT"),20,30,240,0,_array,0] call BIS_fnc_establishingShot; -enableSaving [false,false]; \ No newline at end of file +enableSaving [false,false]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/is_engineer.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/is_engineer.sqf deleted file mode 100644 index bdce8ceb6..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/is_engineer.sqf +++ /dev/null @@ -1,6 +0,0 @@ - -private ["_cond"]; - -_cond = false; -if (getNumber (configFile >> "CfgVehicles" >> typeOf _this >> "engineer") == 1 || _this getVariable ["btc_isEngineer",false]) then {_cond = true;}; -_cond \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/marker_debug.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/marker_debug.sqf index 0b7c8c262..d4563285b 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/marker_debug.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/marker_debug.sqf @@ -4,53 +4,53 @@ private ["_units","_color","_text","_typeof","_has_headless","_owners","_alpha"] _has_headless = !((entities "HeadlessClient_F") isEqualTo []); if (_has_headless) then { - _units = btc_units_owners apply {_x select 0}; - _owners = btc_units_owners apply {_x select 1}; + _units = btc_units_owners apply {_x select 0}; + _owners = btc_units_owners apply {_x select 1}; } else { - _units = allunits select {Alive _x}; - _units append entities "Car"; - _units append entities "Tank"; - _units append entities "Ship"; - _units append entities "Air"; + _units = allunits select {Alive _x}; + _units append entities "Car"; + _units append entities "Tank"; + _units append entities "Ship"; + _units append entities "Air"; }; { - _typeof = typeOf _x; - - _alpha = 1; - if (_has_headless) then { - if !((_owners select _foreachindex) isEqualTo 2) then { - _alpha = 0.3; - }; - }; - - switch (side _x) do { - case (west) : {_color = [0,0,1,_alpha]}; - case (east) : {_color = [1,0,0,_alpha]}; - case (independent) : {_color = [0,1,0,_alpha]}; - default {_color = [1,1,1,_alpha]}; - }; - - if (leader group _x isEqualTo _x) then { - _text = format ["%1 (%2)", _typeof,group _x getVariable ["btc_patrol_id",group _x getVariable ["btc_traffic_id",""]]]; - } else { - if ((_x isKindOf "car") OR (_x isKindOf "tank") OR (_x isKindOf "ship") OR (_x isKindOf "air")) then { - _text = ""; - _color = [1,0,0.5,_alpha]; - } else { - _text = format ["%1", _typeof]; - }; - }; - - (_this select 0) drawIcon [ - getText (configFile/"CfgVehicles"/ _typeof /"Icon"), - _color , - visiblePosition _x, - 20, - 20, - direction _x, - _text, - 0, - 0.05 - ]; + _typeof = typeOf _x; + + _alpha = 1; + if (_has_headless) then { + if !((_owners select _foreachindex) isEqualTo 2) then { + _alpha = 0.3; + }; + }; + + switch (side _x) do { + case (west) : {_color = [0,0,1,_alpha]}; + case (east) : {_color = [1,0,0,_alpha]}; + case (independent) : {_color = [0,1,0,_alpha]}; + default {_color = [1,1,1,_alpha]}; + }; + + if (leader group _x isEqualTo _x) then { + _text = format ["%1 (%2)", _typeof,group _x getVariable ["btc_patrol_id",group _x getVariable ["btc_traffic_id",""]]]; + } else { + if ((_x isKindOf "car") OR (_x isKindOf "tank") OR (_x isKindOf "ship") OR (_x isKindOf "air")) then { + _text = ""; + _color = [1,0,0.5,_alpha]; + } else { + _text = format ["%1", _typeof]; + }; + }; + + (_this select 0) drawIcon [ + getText (configFile/"CfgVehicles"/ _typeof /"Icon"), + _color , + visiblePosition _x, + 20, + 20, + direction _x, + _text, + 0, + 0.05 + ]; } foreach _units; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/randomize_pos.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/randomize_pos.sqf index 8ca409997..d22bbe613 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/randomize_pos.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/randomize_pos.sqf @@ -5,9 +5,9 @@ _pos = _this select 0; _random_area = _this select 1; if (count _this > 2) then { - _allowwater = _this select 2; + _allowwater = _this select 2; } else { - _allowwater = false; + _allowwater = false; }; _return_pos = _pos; @@ -21,8 +21,8 @@ _pos_y = _pos_y + ((random _random_area) - (random _random_area)); _check_pos = [_pos_x, _pos_y, 0]; if ((surfaceIsWater _check_pos) && !(_allowwater)) then { - _return_pos = [_check_pos,0,_random_area,13,false] call btc_fnc_findsafepos; + _return_pos = [_check_pos,0,_random_area,13,false] call btc_fnc_findsafepos; } else { - _return_pos = _check_pos; + _return_pos = _check_pos; }; _return_pos \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/set_damage.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/set_damage.sqf index 0f3193764..c0dd218c4 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/set_damage.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/set_damage.sqf @@ -2,21 +2,21 @@ params ["_unit"]; private _selection = [ - "head", - "body", - "hand_l", - "hand_r", - "leg_l", - "leg_r" + "head", + "body", + "hand_l", + "hand_r", + "leg_l", + "leg_r" ]; private _type = [ - "bullet", - "grenade"/*, - "explosive", - "shell"*/ + "bullet", + "grenade"/*, + "explosive", + "shell"*/ ]; for "_i" from 0 to (1 + floor random 2) do { - [_unit, 0.2, selectRandom _selection, selectRandom _type] call ace_medical_fnc_addDamageToUnit; - sleep 1; + [_unit, 0.2, selectRandom _selection, selectRandom _type] call ace_medical_fnc_addDamageToUnit; + sleep 1; }; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/set_groupowner.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/set_groupowner.sqf index f25608adb..e1c92a6ac 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/set_groupowner.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/set_groupowner.sqf @@ -10,9 +10,9 @@ if !(_group setgroupOwner _HC) exitWith {}; //Transfert EH to HC if (side _group isEqualTo btc_enemy_side) then { - [_group,{ - { - _x call btc_fnc_mil_add_eh; - } foreach units _this; - }] remoteExec ["call", _HC]; + [_group,{ + { + _x call btc_fnc_mil_add_eh; + } foreach units _this; + }] remoteExec ["call", _HC]; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/set_markerTextLocal.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/set_markerTextLocal.sqf new file mode 100644 index 000000000..3535f7a08 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/set_markerTextLocal.sqf @@ -0,0 +1,11 @@ +params [ + ["_marker", ""], + ["_text", ""], + ["_arg", ""] +]; + +//check for localized text +_text = if (isLocalized _text) then {(localize _text)}; + +//set markerText +_marker setMarkerTextLocal format [_text, _arg]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/showSubtitle.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/showSubtitle.sqf new file mode 100644 index 000000000..d4143f8b5 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/showSubtitle.sqf @@ -0,0 +1,82 @@ +/* + Author: Thomas Ryan, updated by Karel Moricky + Modified: kuemmel + + Description: + Displays a subtitle at the bottom of the screen. + + CHANGED: + - added optional line break + - added optional color for 'speaker' and 'content' + - changed position + - added optional font selection + - added background handling (WIP) + + Parameters: + _this select 0: STRING - Name of the person speaking + _this select 1: STRING - Contents of the subtitle + _this select 2: BOOL - Add a line break (Optional - default: false) + _this select 3: HEX color for speaker (#RGB or #ARGB): - (Optional- default: "#d4cd00") + _this select 4: HEX color for content (#RGB or #ARGB): - (Optional- default: "#FFFFFF") + _this select 5: STRING - Font (https://community.bistudio.com/wiki/FXY_File_Format#Available_Fonts) + + Examples: + ["Some Guy","How do yo do?"] spawn btc_fnc_showSubtitle; + ["Darth Vader","Come to the dark side. We have cookies!", false, "#ed2939"] spawn btc_fnc_showSubtitle; + ["Luke Skywalker","Whhhhhhyyyyyyyy", true, "#1768d3", nil, "PuristaBold"] spawn btc_fnc_showSubtitle; +*/ + +#define WAIT 10 +#define POS_W (0.4 * safeZoneW) +#define POS_H (safeZoneH) +#define POS_X (0.5 - POS_W / 2) +#define POS_Y (safeZoneY + (6/8) * safeZoneH) +#define POS_Y_CAM (safeZoneY + (31/32) * safeZoneH) + +params [ + ["_from", "", [""]], + ["_text", "", [""]], + ["_lineBreak", false , [false]], + ["_colorFrom", "#d4cd00" , [""]], //default color: gold + ["_colorText", "#FFFFFF" , [""]], //default color: white + ["_fontText", "RobotoCondensedBold", [""]] +]; + +disableSerialization; + +// Create display and control +"btc_fnc_showSubtitle" cutRsc ["RscDynamicText", "PLAIN"]; +private "_display"; +waitUntil {_display = uiNamespace getVariable "BIS_dynamicText"; !(isNull _display)}; +private _ctrl = _display ctrlCreate ["RscStructuredText",-1]; +uiNamespace setVariable ["BIS_dynamicText", displayNull]; + +_ctrl ctrlSetBackgroundColor (["Subtitles","Background"] call bis_fnc_displayColorGet); +//_ctrl ctrlSetBackgroundColor [0, 0, 0, 0.5]; //optional? - for better readability +_ctrl ctrlSetTextColor (["Subtitles","Text"] call bis_fnc_displayColorGet); +_ctrl ctrlSetPosition [POS_X,POS_Y,POS_W,POS_H]; +_ctrl ctrlCommit 0; + +// Show subtitle +_ctrl ctrlSetStructuredText parseText format [ + if (_from == "") then { + "%2" + } else { + if (_lineBreak) then { + "%1:
%2" + } else { + "%1: %2" + }; + }, + toUpper _from, _text, (safezoneH * 0.65) max 1, _colorFrom, _colorText,_fontText +]; + +private _textHeight = ctrlTextHeight _ctrl; +_ctrl ctrlSetPosition [POS_X,POS_Y - _textHeight,POS_W,_textHeight]; +_ctrl ctrlcommit 0; + +sleep WAIT; + +// Hide subtitle +_ctrl ctrlSetFade 1; +_ctrl ctrlCommit 0.5; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/show_hint.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/show_hint.sqf index cf86526a1..cf9be8b1d 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/show_hint.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/show_hint.sqf @@ -5,40 +5,40 @@ private ["_type"]; _type = _this select 0; switch (_type) do { - case 0 : { - hint "Cache destroyed!"; - }; - case 1 : { - hint "Intel about an ammo cache found! Map updated"; - }; - case 2 : { - hint format ["Hideout destroyed! %1 remaining",(_this select 1)]; - }; - case 3 : { - hint "This body does not have any intel"; - }; - case 4 : { - hint "Found intels about an ammo cache and an hideout! Map updated"; - }; - case 5 : { - hint "Intel about an hideout found! Map updated"; - }; - case 6 : { - hint "In the last hideout we found important intel about all the cities occupied by the Oplitas! Size the last positions held by the enemies and defeat them once and for all"; - }; - case 7 : { - hint ((_this select 1) + " has been deployed!"); - }; - case 8 : { - hint "Saving in progress...Please wait"; - }; - case 9 : { - hint "Game has been saved!"; - }; - case 10 : { - hint "Database deleted!"; - }; - case 11 : { - hint "One checkpoint destroyed!"; - }; -}; \ No newline at end of file + case 0 : { + hint (localize "STR_BTC_HAM_O_COMMON_SHOWHINTS_0"); //Cache destroyed! + }; + case 1 : { + hint (localize "STR_BTC_HAM_O_COMMON_SHOWHINTS_1"); //Intel about an ammo cache found! Map updated + }; + case 2 : { + hint format [(localize "STR_BTC_HAM_O_COMMON_SHOWHINTS_2"),(_this select 1)]; //Hideout destroyed! %1 remaining + }; + case 3 : { + hint (localize "STR_BTC_HAM_O_COMMON_SHOWHINTS_3"); //This body does not have any intel + }; + case 4 : { + hint (localize "STR_BTC_HAM_O_COMMON_SHOWHINTS_4"); //Found intels about an ammo cache and an hideout! Map updated + }; + case 5 : { + hint (localize "STR_BTC_HAM_O_COMMON_SHOWHINTS_5"); //Intel about an hideout found! Map updated + }; + case 6 : { + hint (localize "STR_BTC_HAM_O_COMMON_SHOWHINTS_6"); //In the last hideout we found important intel about all the cities occupied by the Oplitas! Size the last positions held by the enemies and defeat them once and for all + }; + case 7 : { + hint format [(localize "STR_BTC_HAM_O_COMMON_SHOWHINTS_7"),(_this select 1)]; // has been deployed! + }; + case 8 : { + hint (localize "STR_BTC_HAM_O_COMMON_SHOWHINTS_8"); //Saving in progress...Please wait + }; + case 9 : { + hint (localize "STR_BTC_HAM_O_COMMON_SHOWHINTS_9"); //Game has been saved! + }; + case 10 : { + hint (localize "STR_BTC_HAM_O_COMMON_SHOWHINTS_10"); //Database deleted! + }; + case 11 : { + hint (localize "STR_BTC_HAM_O_COMMON_SHOWHINTS_11"); //One checkpoint destroyed! + }; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/systemchat_debug.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/systemchat_debug.sqf index 2567e7fe5..58419a5e3 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/systemchat_debug.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/systemchat_debug.sqf @@ -3,17 +3,17 @@ private ["_count_units","_count_units_own"]; while {btc_marker_debug_cond} do { - _count_units = count (allunits select {Alive _x}); + _count_units = count (allunits select {Alive _x}); - if (!((entities "HeadlessClient_F") isEqualTo [])) then { - [player] remoteExec ["btc_fnc_get_owners",2]; - sleep 1; - _count_units_own = {((_x select 1) isEqualTo 2) && ((_x select 0) isKindOf "man")} count btc_units_owners; - } else { - sleep 1; - _count_units_own = _count_units; - }; + if (!((entities "HeadlessClient_F") isEqualTo [])) then { + [player] remoteExec ["btc_fnc_get_owners",2]; + sleep 1; + _count_units_own = {((_x select 1) isEqualTo 2) && ((_x select 0) isKindOf "man")} count btc_units_owners; + } else { + sleep 1; + _count_units_own = _count_units; + }; - systemChat format ["UNITS:%1 NOT-ON-SERVER:%2 | GROUPS:%3", _count_units, _count_units - _count_units_own, count allgroups]; + systemChat format ["UNITS:%1 NOT-ON-SERVER:%2 | GROUPS:%3", _count_units, _count_units - _count_units_own, count allgroups]; }; ((findDisplay 12) displayCtrl 51) ctrlRemoveEventHandler ["Draw",_this select 0]; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/task_patrol.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/task_patrol.sqf index 656a469d8..43feebe2f 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/task_patrol.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/task_patrol.sqf @@ -7,46 +7,46 @@ _max_area = _this select 2; if (_max_area < 100) then {_min_area = 0;} else {_min_area = 100;}; _behav = _this select 3; if (count _this > 4) then { - _allowwater = _this select 4; + _allowwater = _this select 4; } else { - _allowwater = false; + _allowwater = false; }; _group setBehaviour _behav; {_x setBehaviour _behav;} foreach units _group; -if ((vehicle leader _group) isKindOf "Air") then { - _waypointspeed = "NORMAL"; +if ((vehicle leader _group) isKindOf "Air") then { + _waypointspeed = "NORMAL"; } else { - _waypointspeed = "LIMITED"; + _waypointspeed = "LIMITED"; }; private _prevPos = _pos; for "_i" from 0 to (2 + (floor (random 3))) do { - private _newPos = [_prevPos, _min_area, _max_area, 1, [0,1] select _allowwater, 60 * (pi / 180), 0, []] call BIS_fnc_findSafePos; + private _newPos = [_prevPos, _min_area, _max_area, 1, [0,1] select _allowwater, 60 * (pi / 180), 0, []] call BIS_fnc_findSafePos; - _prevPos = _newPos; + _prevPos = _newPos; - private _wp = _group addWaypoint [_newPos, 0]; - _wp setWaypointType "MOVE"; - _wp setWaypointCompletionRadius 20; - _wp setWaypointCombatMode "RED"; - _wp setWaypointTimeout [5, 10, 20]; - if (_i == 0) then - { - _wp setWaypointSpeed _waypointspeed; - _wp setWaypointFormation "STAG COLUMN"; - _wp setWaypointCombatMode "RED"; - _wp setWaypointBehaviour "SAFE"; - }; + private _wp = _group addWaypoint [_newPos, 0]; + _wp setWaypointType "MOVE"; + _wp setWaypointCompletionRadius 20; + _wp setWaypointCombatMode "RED"; + _wp setWaypointTimeout [5, 10, 20]; + if (_i == 0) then + { + _wp setWaypointSpeed _waypointspeed; + _wp setWaypointFormation "STAG COLUMN"; + _wp setWaypointCombatMode "RED"; + _wp setWaypointBehaviour "SAFE"; + }; }; if (_allowwater) then { - private _nearestLocation = nearestLocation [_pos, ""]; - private _wp = _group addWaypoint [locationPosition _nearestLocation, 0]; - _wp setWaypointType "MOVE"; - _wp setWaypointCompletionRadius 20; - _wp setWaypointCombatMode "RED"; - _wp setWaypointTimeout [20, 30, 60]; + private _nearestLocation = nearestLocation [_pos, ""]; + private _wp = _group addWaypoint [locationPosition _nearestLocation, 0]; + _wp setWaypointType "MOVE"; + _wp setWaypointCompletionRadius 20; + _wp setWaypointCombatMode "RED"; + _wp setWaypointTimeout [20, 30, 60]; }; private _wp = _group addWaypoint [_pos, 0]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/veh_track_marker.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/veh_track_marker.sqf deleted file mode 100644 index 7cc9aa690..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/common/veh_track_marker.sqf +++ /dev/null @@ -1,42 +0,0 @@ - -private ["_is_vehicle","_veh","_resp","_v_type","_v_pos","_v_dir","_type","_color","_sleep","_marker"]; - -_is_vehicle = true; - -_veh = _this select 0; -_resp = _this select 1; - -_v_type = typeOf _veh; -_v_pos = getPos _veh; -_v_dir = getDir _veh; - -if (_veh isKindOf "Man") then {_is_vehicle = false;}; - -_type = "mil_triangle"; -_color = "ColorGreen"; -_sleep = 5; - -_marker = createmarker [format ["m_%1",_veh],getPos _veh]; -_marker setMarkerType _type; -_marker setMarkerColor _color; -_marker setMarkerDir (getDir _veh); - -while {Alive _veh} do { - sleep _sleep; - if (speed _veh > 50) then {_sleep = 2;} else {_sleep = 5;}; - _marker setMarkerPos (getPos _veh); - _marker setMarkerDir (getDir _veh); -}; - -_marker setMarkerColor "ColorRed"; - -if (_resp) then { - sleep (_this select 2); - deleteMarker _marker; - if (200 > ((getPos _veh) distance _v_pos)) then {deleteVehicle _veh;}; - - _veh = _v_type createVehicle _v_pos; - _veh setDir _v_dir; - _veh setPos _v_pos; - [_veh,true,(_this select 2)] spawn btc_fnc_veh_track_marker; -} else {deleteMarker _marker;}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/compile.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/compile.sqf index a84f8e429..c2a75f3a5 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/compile.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/compile.sqf @@ -1,218 +1,228 @@ /////////////////////SERVER\\\\\\\\\\\\\\\\\\\\\ if (isServer) then { - //CACHE - btc_fnc_cache_find_pos = compile preprocessFile "core\fnc\cache\find_pos.sqf"; - btc_fnc_cache_hd_cache = compile preprocessFile "core\fnc\cache\hd_cache.sqf"; - btc_fnc_cache_spawn = compile preprocessFile "core\fnc\cache\spawn.sqf"; - btc_fnc_cache_create = compile preprocessFile "core\fnc\cache\create.sqf"; - - //COMMON - btc_fnc_check_los = compile preprocessFile "core\fnc\common\check_los.sqf"; - btc_fnc_clean_up = compile preprocessFile "core\fnc\common\clean_up.sqf"; - btc_fnc_create_composition = compile preprocessFile "core\fnc\common\create_composition.sqf"; - btc_fnc_create_attachto = compile preprocessFile "core\fnc\common\create_attachto.sqf"; - btc_fnc_getHouses = compile preprocessFile "core\fnc\common\getHouses.sqf"; - btc_fnc_house_addWP = compile preprocessFile "core\fnc\common\house_addWP.sqf"; - btc_fnc_house_addWP_loop = compile preprocessFile "core\fnc\common\house_addWP_loop.sqf"; - btc_fnc_randomize_pos = compile preprocessFile "core\fnc\common\randomize_pos.sqf"; - btc_fnc_set_owner = compile preprocessFile "core\fnc\common\set_owner.sqf"; - btc_fnc_task_patrol = compile preprocessFile "core\fnc\common\task_patrol.sqf"; - btc_fnc_set_damage = compile preprocessFile "core\fnc\common\set_damage.sqf"; - btc_fnc_road_direction = compile preprocessFile "core\fnc\common\road_direction.sqf"; - btc_fnc_findsafepos = compile preprocessFile "core\fnc\common\findsafepos.sqf"; - btc_fnc_deleteTestObj = compile preprocessFile "core\fnc\common\deleteTestObj.sqf"; - btc_fnc_get_owners = compile preprocessFile "core\fnc\common\get_owners.sqf"; - btc_fnc_set_groupowner = compile preprocessFile "core\fnc\common\set_groupowner.sqf"; - btc_fnc_find_closecity = compile preprocessFile "core\fnc\common\find_closecity.sqf"; - btc_fnc_deletegroup = compile preprocessFile "core\fnc\common\deletegroup.sqf"; - btc_fnc_delete = compile preprocessFile "core\fnc\common\delete.sqf"; - btc_fnc_findPosOutsideRock = compile preprocessFile "core\fnc\common\findposoutsiderock.sqf"; - - //CITY - btc_fnc_city_activate = compile preprocessFile "core\fnc\city\activate.sqf"; - btc_fnc_city_create = compile preprocessFile "core\fnc\city\create.sqf"; - btc_fnc_city_de_activate = compile preprocessFile "core\fnc\city\de_activate.sqf"; - btc_fnc_city_set_clear = compile preprocessFile "core\fnc\city\set_clear.sqf"; - btc_fnc_city_trigger_player_side = compile preprocessFile "core\fnc\city\trigger_player_side.sqf"; - - //CIV - btc_fnc_civ_add_weapons = compile preprocessFile "core\fnc\civ\add_weapons.sqf"; - btc_fnc_civ_add_grenade = compile preprocessFile "core\fnc\civ\add_grenade.sqf"; - btc_fnc_civ_addWP = compile preprocessFile "core\fnc\civ\addWP.sqf"; - btc_fnc_civ_create = compile preprocessFile "core\fnc\civ\create.sqf"; - btc_fnc_civ_get_weapons = compile preprocessFile "core\fnc\civ\get_weapons.sqf"; - btc_fnc_civ_get_grenade = compile preprocessFile "core\fnc\civ\get_grenade.sqf"; - btc_fnc_civ_populate = compile preprocessFile "core\fnc\civ\populate.sqf"; - btc_fnc_civ_traffic_add_WP = compile preprocessFile "core\fnc\civ\traffic_add_WP.sqf"; - btc_fnc_civ_traffic_create = compile preprocessFile "core\fnc\civ\traffic_create.sqf"; - btc_fnc_civ_traffic_eh = compile preprocessFile "core\fnc\civ\traffic_eh.sqf"; - btc_fnc_civ_traffic_eh_remove = compile preprocessFile "core\fnc\civ\traffic_eh_remove.sqf"; - btc_fnc_civ_unit_create = compile preprocessFile "core\fnc\civ\unit_create.sqf"; - btc_fnc_civ_CuratorCivPlaced_s = compile preprocessFile "core\fnc\civ\CuratorCivPlaced_s.sqf"; - - //DATA - btc_fnc_data_add_group = compile preprocessFile "core\fnc\data\add_group.sqf"; - btc_fnc_data_get_group = compile preprocessFile "core\fnc\data\get_group.sqf"; - btc_fnc_data_spawn_group = compile preprocessFile "core\fnc\data\spawn_group.sqf"; - - //DB - btc_fnc_db_save = compile preprocessFile "core\fnc\db\save.sqf"; - btc_fnc_db_delete = compile preprocessFile "core\fnc\db\delete.sqf"; - btc_fnc_db_autosave = compile preprocessFile "core\fnc\db\autosave.sqf"; - - //EH - //btc_fnc_eh_helo_respawn = compile preprocessFile "core\fnc\eh\helo_respawn.sqf"; - btc_fnc_eh_veh_add_respawn = compile preprocessFile "core\fnc\eh\veh_add_respawn.sqf"; - btc_fnc_eh_veh_killed = compile preprocessFile "core\fnc\eh\veh_killed.sqf"; - btc_fnc_eh_veh_respawn = compile preprocessFile "core\fnc\eh\veh_respawn.sqf"; - btc_fnc_eh_explosives_defuse = compile preprocessFile "core\fnc\eh\explosives_defuse.sqf"; - btc_fnc_eh_handledisconnect = compile preprocessFile "core\fnc\eh\handledisconnect.sqf"; - btc_fnc_eh_buildingchanged = compile preprocessFile "core\fnc\eh\buildingchanged.sqf"; - - //IED - btc_fnc_ied_boom = compile preprocessFile "core\fnc\ied\boom.sqf"; - btc_fnc_ied_check = compile preprocessFile "core\fnc\ied\check.sqf"; - btc_fnc_ied_create = compile preprocessFile "core\fnc\ied\create.sqf"; - btc_fnc_ied_fired_near = compile preprocessFile "core\fnc\ied\fired_near.sqf"; - btc_fnc_ied_init_area = compile preprocessFile "core\fnc\ied\init_area.sqf"; - btc_fnc_ied_suicider_active = compile preprocessFile "core\fnc\ied\suicider_active.sqf"; - btc_fnc_ied_suicider_create = compile preprocessFile "core\fnc\ied\suicider_create.sqf"; - btc_fnc_ied_allahu_akbar = compile preprocessFile "core\fnc\ied\allahu_akbar.sqf"; - - //INFO - btc_fnc_info_cache = compile preprocessFile "core\fnc\info\cache.sqf"; - btc_fnc_info_give_intel = compile preprocessFile "core\fnc\info\give_intel.sqf"; - btc_fnc_info_has_intel = compile preprocessFile "core\fnc\info\has_intel.sqf"; - btc_fnc_info_hideout = compile preprocessFile "core\fnc\info\hideout.sqf"; - - //FOB - btc_fnc_fob_create_s = compile preprocessFile "core\fnc\fob\create_s.sqf"; - btc_fnc_fob_dismantle_s = compile preprocessFile "core\fnc\fob\dismantle_s.sqf"; - - //MIL - btc_fnc_mil_addWP = compile preprocessFile "core\fnc\mil\addWP.sqf"; - btc_fnc_mil_check_cap = compile preprocessFile "core\fnc\mil\check_cap.sqf"; - btc_fnc_mil_create_group = compile preprocessFile "core\fnc\mil\create_group.sqf"; - btc_fnc_mil_hd_hideout = compile preprocessFile "core\fnc\mil\hd_hideout.sqf"; - //btc_fnc_mil_eh_killed = compile preprocessFile "core\fnc\mil\eh_killed.sqf"; - btc_fnc_mil_create_hideout = compile preprocessFile "core\fnc\mil\create_hideout.sqf"; - btc_fnc_mil_create_hideout_composition = compile preprocessFile "core\fnc\mil\create_hideout_composition.sqf"; - btc_fnc_mil_create_static = compile preprocessFile "core\fnc\mil\create_static.sqf"; - btc_fnc_mil_patrol_create = compile preprocessFile "core\fnc\mil\patrol_create.sqf"; - btc_fnc_mil_patrol_addWP = compile preprocessFile "core\fnc\mil\patrol_addWP.sqf"; - btc_fnc_mil_send = compile preprocessFile "core\fnc\mil\send.sqf"; - btc_fnc_mil_set_skill = compile preprocessFile "core\fnc\mil\set_skill.sqf"; - btc_fnc_mil_unit_create = compile preprocessFile "core\fnc\mil\unit_create.sqf"; - btc_fnc_mil_patrol_eh = compile preprocessFile "core\fnc\mil\patrol_eh.sqf"; - btc_fnc_mil_patrol_eh_remove = compile preprocessFile "core\fnc\mil\patrol_eh_remove.sqf"; - btc_fnc_mil_CuratorMilPlaced_s = compile preprocessFile "core\fnc\mil\CuratorMilPlaced_s.sqf"; - - //REP - btc_fnc_rep_add_eh = compile preprocessFile "core\fnc\rep\add_eh.sqf"; - btc_fnc_rep_call_militia = compile preprocessFile "core\fnc\rep\call_militia.sqf"; - btc_fnc_rep_change = compile preprocessFile "core\fnc\rep\change.sqf"; - btc_fnc_rep_eh_effects = compile preprocessFile "core\fnc\rep\eh_effects.sqf"; - btc_fnc_rep_hd = compile preprocessFile "core\fnc\rep\hd.sqf"; - btc_fnc_rep_hh = compile preprocessFile "core\fnc\rep\hh.sqf"; - btc_fnc_rep_killed = compile preprocessFile "core\fnc\rep\killed.sqf"; - btc_fnc_rep_firednear = compile preprocessFile "core\fnc\rep\firednear.sqf"; - btc_fnc_rep_remove_eh = compile preprocessFile "core\fnc\rep\remove_eh.sqf"; - - //SIDE - btc_fnc_side_create = compile preprocessFileLineNumbers "core\fnc\side\create.sqf"; - btc_fnc_side_get_city = compile preprocessFileLineNumbers "core\fnc\side\get_city.sqf"; - btc_fnc_side_mines = compile preprocessFileLineNumbers "core\fnc\side\mines.sqf"; - btc_fnc_side_supply = compile preprocessFileLineNumbers "core\fnc\side\supply.sqf"; - btc_fnc_side_vehicle = compile preprocessFileLineNumbers "core\fnc\side\vehicle.sqf"; - btc_fnc_side_civtreatment = compile preprocessFileLineNumbers "core\fnc\side\civtreatment.sqf"; - btc_fnc_side_tower = compile preprocessFileLineNumbers "core\fnc\side\tower.sqf"; - btc_fnc_side_checkpoint = compile preprocessFileLineNumbers "core\fnc\side\checkpoint.sqf"; - btc_fnc_side_civtreatment_boat = compile preprocessFileLineNumbers "core\fnc\side\civtreatment_boat.sqf"; - btc_fnc_side_underwater_generator= compile preprocessFileLineNumbers "core\fnc\side\underwater_generator.sqf"; - btc_fnc_side_convoy = compile preprocessFileLineNumbers "core\fnc\side\convoy.sqf"; - btc_fnc_side_rescue = compile preprocessFileLineNumbers "core\fnc\side\rescue.sqf"; - btc_fnc_side_capture_officer = compile preprocessFileLineNumbers "core\fnc\side\capture_officer.sqf"; - btc_fnc_side_hostage = compile preprocessFileLineNumbers "core\fnc\side\hostage.sqf"; - btc_fnc_side_hack = compile preprocessFileLineNumbers "core\fnc\side\hack.sqf"; - - //LOG - btc_fnc_log_CuratorObjectPlaced_s = compile preprocessFile "core\fnc\log\CuratorObjectPlaced_s.sqf"; - btc_fnc_log_createVehicle = compile preprocessFile "core\fnc\log\createVehicle.sqf"; - btc_fnc_log_getRearmMagazines = compile preprocessFileLineNumbers "core\fnc\log\getRearmMagazines.sqf"; - - //DEAF - btc_fnc_deaf_earringing = compile preprocessFile "core\fnc\deaf\earringing.sqf"; + //CACHE + btc_fnc_cache_find_pos = compile preprocessFileLineNumbers "core\fnc\cache\find_pos.sqf"; + btc_fnc_cache_hd_cache = compile preprocessFileLineNumbers "core\fnc\cache\hd_cache.sqf"; + btc_fnc_cache_spawn = compile preprocessFileLineNumbers "core\fnc\cache\spawn.sqf"; + btc_fnc_cache_create = compile preprocessFileLineNumbers "core\fnc\cache\create.sqf"; + + //COMMON + btc_fnc_check_los = compile preprocessFileLineNumbers "core\fnc\common\check_los.sqf"; + btc_fnc_clean_up = compile preprocessFileLineNumbers "core\fnc\common\clean_up.sqf"; + btc_fnc_create_composition = compile preprocessFileLineNumbers "core\fnc\common\create_composition.sqf"; + btc_fnc_create_attachto = compile preprocessFileLineNumbers "core\fnc\common\create_attachto.sqf"; + btc_fnc_getHouses = compile preprocessFileLineNumbers "core\fnc\common\getHouses.sqf"; + btc_fnc_house_addWP = compile preprocessFileLineNumbers "core\fnc\common\house_addWP.sqf"; + btc_fnc_house_addWP_loop = compile preprocessFileLineNumbers "core\fnc\common\house_addWP_loop.sqf"; + btc_fnc_randomize_pos = compile preprocessFileLineNumbers "core\fnc\common\randomize_pos.sqf"; + btc_fnc_set_owner = compile preprocessFileLineNumbers "core\fnc\common\set_owner.sqf"; + btc_fnc_task_patrol = compile preprocessFileLineNumbers "core\fnc\common\task_patrol.sqf"; + btc_fnc_set_damage = compile preprocessFileLineNumbers "core\fnc\common\set_damage.sqf"; + btc_fnc_road_direction = compile preprocessFileLineNumbers "core\fnc\common\road_direction.sqf"; + btc_fnc_findsafepos = compile preprocessFileLineNumbers "core\fnc\common\findsafepos.sqf"; + btc_fnc_deleteTestObj = compile preprocessFileLineNumbers "core\fnc\common\deleteTestObj.sqf"; + btc_fnc_get_owners = compile preprocessFileLineNumbers "core\fnc\common\get_owners.sqf"; + btc_fnc_set_groupowner = compile preprocessFileLineNumbers "core\fnc\common\set_groupowner.sqf"; + btc_fnc_find_closecity = compile preprocessFileLineNumbers "core\fnc\common\find_closecity.sqf"; + btc_fnc_deletegroup = compile preprocessFileLineNumbers "core\fnc\common\deletegroup.sqf"; + btc_fnc_delete = compile preprocessFileLineNumbers "core\fnc\common\delete.sqf"; + btc_fnc_final_phase = compile preprocessFileLineNumbers "core\fnc\common\final_phase.sqf"; + btc_fnc_findPosOutsideRock = compile preprocessFileLineNumbers "core\fnc\common\findposoutsiderock.sqf"; + + //CITY + btc_fnc_city_activate = compile preprocessFileLineNumbers "core\fnc\city\activate.sqf"; + btc_fnc_city_create = compile preprocessFileLineNumbers "core\fnc\city\create.sqf"; + btc_fnc_city_de_activate = compile preprocessFileLineNumbers "core\fnc\city\de_activate.sqf"; + btc_fnc_city_set_clear = compile preprocessFileLineNumbers "core\fnc\city\set_clear.sqf"; + btc_fnc_city_trigger_player_side = compile preprocessFileLineNumbers "core\fnc\city\trigger_player_side.sqf"; + + //CIV + btc_fnc_civ_add_weapons = compile preprocessFileLineNumbers "core\fnc\civ\add_weapons.sqf"; + btc_fnc_civ_add_grenade = compile preprocessFileLineNumbers "core\fnc\civ\add_grenade.sqf"; + btc_fnc_civ_addWP = compile preprocessFileLineNumbers "core\fnc\civ\addWP.sqf"; + btc_fnc_civ_create = compile preprocessFileLineNumbers "core\fnc\civ\create.sqf"; + btc_fnc_civ_get_weapons = compile preprocessFileLineNumbers "core\fnc\civ\get_weapons.sqf"; + btc_fnc_civ_get_grenade = compile preprocessFileLineNumbers "core\fnc\civ\get_grenade.sqf"; + btc_fnc_civ_populate = compile preprocessFileLineNumbers "core\fnc\civ\populate.sqf"; + btc_fnc_civ_traffic_add_WP = compile preprocessFileLineNumbers "core\fnc\civ\traffic_add_WP.sqf"; + btc_fnc_civ_traffic_create = compile preprocessFileLineNumbers "core\fnc\civ\traffic_create.sqf"; + btc_fnc_civ_traffic_eh = compile preprocessFileLineNumbers "core\fnc\civ\traffic_eh.sqf"; + btc_fnc_civ_traffic_eh_remove = compile preprocessFileLineNumbers "core\fnc\civ\traffic_eh_remove.sqf"; + btc_fnc_civ_unit_create = compile preprocessFileLineNumbers "core\fnc\civ\unit_create.sqf"; + btc_fnc_civ_CuratorCivPlaced_s = compile preprocessFileLineNumbers "core\fnc\civ\CuratorCivPlaced_s.sqf"; + btc_fnc_civ_evacuate = compile preprocessFileLineNumbers "core\fnc\civ\evacuate.sqf"; + + //DATA + btc_fnc_data_add_group = compile preprocessFileLineNumbers "core\fnc\data\add_group.sqf"; + btc_fnc_data_get_group = compile preprocessFileLineNumbers "core\fnc\data\get_group.sqf"; + btc_fnc_data_spawn_group = compile preprocessFileLineNumbers "core\fnc\data\spawn_group.sqf"; + + //DB + btc_fnc_db_save = compile preprocessFileLineNumbers "core\fnc\db\save.sqf"; + btc_fnc_db_delete = compile preprocessFileLineNumbers "core\fnc\db\delete.sqf"; + btc_fnc_db_autosave = compile preprocessFileLineNumbers "core\fnc\db\autosave.sqf"; + btc_fnc_db_loadObjectStatus = compile preprocessFileLineNumbers "core\fnc\db\loadObjectStatus.sqf"; + btc_fnc_db_saveObjectStatus = compile preprocessFileLineNumbers "core\fnc\db\saveObjectStatus.sqf"; + + //EH + btc_fnc_eh_veh_add_respawn = compile preprocessFileLineNumbers "core\fnc\eh\veh_add_respawn.sqf"; + btc_fnc_eh_veh_killed = compile preprocessFileLineNumbers "core\fnc\eh\veh_killed.sqf"; + btc_fnc_eh_veh_respawn = compile preprocessFileLineNumbers "core\fnc\eh\veh_respawn.sqf"; + btc_fnc_eh_explosives_defuse = compile preprocessFileLineNumbers "core\fnc\eh\explosives_defuse.sqf"; + btc_fnc_eh_handledisconnect = compile preprocessFileLineNumbers "core\fnc\eh\handledisconnect.sqf"; + btc_fnc_eh_buildingchanged = compile preprocessFileLineNumbers "core\fnc\eh\buildingchanged.sqf"; + btc_fnc_eh_suicider = compile preprocessFileLineNumbers "core\fnc\eh\suicider.sqf"; + + //IED + btc_fnc_ied_boom = compile preprocessFileLineNumbers "core\fnc\ied\boom.sqf"; + btc_fnc_ied_check = compile preprocessFileLineNumbers "core\fnc\ied\check.sqf"; + btc_fnc_ied_create = compile preprocessFileLineNumbers "core\fnc\ied\create.sqf"; + btc_fnc_ied_fired_near = compile preprocessFileLineNumbers "core\fnc\ied\fired_near.sqf"; + btc_fnc_ied_init_area = compile preprocessFileLineNumbers "core\fnc\ied\init_area.sqf"; + btc_fnc_ied_suicider_active = compile preprocessFileLineNumbers "core\fnc\ied\suicider_active.sqf"; + btc_fnc_ied_suicider_create = compile preprocessFileLineNumbers "core\fnc\ied\suicider_create.sqf"; + btc_fnc_ied_allahu_akbar = compile preprocessFileLineNumbers "core\fnc\ied\allahu_akbar.sqf"; + btc_fnc_ied_drone_active = compile preprocessFileLineNumbers "core\fnc\ied\drone_active.sqf"; + btc_fnc_ied_drone_create = compile preprocessFileLineNumbers "core\fnc\ied\drone_create.sqf"; + btc_fnc_ied_drone_fire = compile preprocessFileLineNumbers "core\fnc\ied\drone_fire.sqf"; + + //INFO + btc_fnc_info_cache = compile preprocessFileLineNumbers "core\fnc\info\cache.sqf"; + btc_fnc_info_give_intel = compile preprocessFileLineNumbers "core\fnc\info\give_intel.sqf"; + btc_fnc_info_has_intel = compile preprocessFileLineNumbers "core\fnc\info\has_intel.sqf"; + btc_fnc_info_hideout = compile preprocessFileLineNumbers "core\fnc\info\hideout.sqf"; + + //FOB + btc_fnc_fob_create_s = compile preprocessFileLineNumbers "core\fnc\fob\create_s.sqf"; + btc_fnc_fob_dismantle_s = compile preprocessFileLineNumbers "core\fnc\fob\dismantle_s.sqf"; + + //MIL + btc_fnc_mil_addWP = compile preprocessFileLineNumbers "core\fnc\mil\addWP.sqf"; + btc_fnc_mil_check_cap = compile preprocessFileLineNumbers "core\fnc\mil\check_cap.sqf"; + btc_fnc_mil_create_group = compile preprocessFileLineNumbers "core\fnc\mil\create_group.sqf"; + btc_fnc_mil_hd_hideout = compile preprocessFileLineNumbers "core\fnc\mil\hd_hideout.sqf"; + //btc_fnc_mil_eh_killed = compile preprocessFileLineNumbers "core\fnc\mil\eh_killed.sqf"; + btc_fnc_mil_create_hideout = compile preprocessFileLineNumbers "core\fnc\mil\create_hideout.sqf"; + btc_fnc_mil_create_hideout_composition = compile preprocessFileLineNumbers "core\fnc\mil\create_hideout_composition.sqf"; + btc_fnc_mil_create_static = compile preprocessFileLineNumbers "core\fnc\mil\create_static.sqf"; + btc_fnc_mil_patrol_create = compile preprocessFileLineNumbers "core\fnc\mil\patrol_create.sqf"; + btc_fnc_mil_patrol_addWP = compile preprocessFileLineNumbers "core\fnc\mil\patrol_addWP.sqf"; + btc_fnc_mil_send = compile preprocessFileLineNumbers "core\fnc\mil\send.sqf"; + btc_fnc_mil_set_skill = compile preprocessFileLineNumbers "core\fnc\mil\set_skill.sqf"; + btc_fnc_mil_unit_create = compile preprocessFileLineNumbers "core\fnc\mil\unit_create.sqf"; + btc_fnc_mil_patrol_eh = compile preprocessFileLineNumbers "core\fnc\mil\patrol_eh.sqf"; + btc_fnc_mil_patrol_eh_remove = compile preprocessFileLineNumbers "core\fnc\mil\patrol_eh_remove.sqf"; + btc_fnc_mil_CuratorMilPlaced_s = compile preprocessFileLineNumbers "core\fnc\mil\CuratorMilPlaced_s.sqf"; + btc_fnc_mil_getStructures = compile preprocessFileLineNumbers "core\fnc\mil\getStructures.sqf"; + + //REP + btc_fnc_rep_add_eh = compile preprocessFileLineNumbers "core\fnc\rep\add_eh.sqf"; + btc_fnc_rep_call_militia = compile preprocessFileLineNumbers "core\fnc\rep\call_militia.sqf"; + btc_fnc_rep_change = compile preprocessFileLineNumbers "core\fnc\rep\change.sqf"; + btc_fnc_rep_eh_effects = compile preprocessFileLineNumbers "core\fnc\rep\eh_effects.sqf"; + btc_fnc_rep_hd = compile preprocessFileLineNumbers "core\fnc\rep\hd.sqf"; + btc_fnc_rep_hh = compile preprocessFileLineNumbers "core\fnc\rep\hh.sqf"; + btc_fnc_rep_killed = compile preprocessFileLineNumbers "core\fnc\rep\killed.sqf"; + btc_fnc_rep_firednear = compile preprocessFileLineNumbers "core\fnc\rep\firednear.sqf"; + btc_fnc_rep_remove_eh = compile preprocessFileLineNumbers "core\fnc\rep\remove_eh.sqf"; + + //SIDE + btc_fnc_side_create = compile preprocessFileLineNumbers "core\fnc\side\create.sqf"; + btc_fnc_side_get_city = compile preprocessFileLineNumbers "core\fnc\side\get_city.sqf"; + btc_fnc_side_mines = compile preprocessFileLineNumbers "core\fnc\side\mines.sqf"; + btc_fnc_side_supply = compile preprocessFileLineNumbers "core\fnc\side\supply.sqf"; + btc_fnc_side_vehicle = compile preprocessFileLineNumbers "core\fnc\side\vehicle.sqf"; + btc_fnc_side_civtreatment = compile preprocessFileLineNumbers "core\fnc\side\civtreatment.sqf"; + btc_fnc_side_tower = compile preprocessFileLineNumbers "core\fnc\side\tower.sqf"; + btc_fnc_side_checkpoint = compile preprocessFileLineNumbers "core\fnc\side\checkpoint.sqf"; + btc_fnc_side_civtreatment_boat = compile preprocessFileLineNumbers "core\fnc\side\civtreatment_boat.sqf"; + btc_fnc_side_underwater_generator= compile preprocessFileLineNumbers "core\fnc\side\underwater_generator.sqf"; + btc_fnc_side_convoy = compile preprocessFileLineNumbers "core\fnc\side\convoy.sqf"; + btc_fnc_side_rescue = compile preprocessFileLineNumbers "core\fnc\side\rescue.sqf"; + btc_fnc_side_capture_officer = compile preprocessFileLineNumbers "core\fnc\side\capture_officer.sqf"; + btc_fnc_side_hostage = compile preprocessFileLineNumbers "core\fnc\side\hostage.sqf"; + btc_fnc_side_hack = compile preprocessFileLineNumbers "core\fnc\side\hack.sqf"; + + //LOG + btc_fnc_log_CuratorObjectPlaced_s = compile preprocessFileLineNumbers "core\fnc\log\CuratorObjectPlaced_s.sqf"; + btc_fnc_log_createVehicle = compile preprocessFileLineNumbers "core\fnc\log\createVehicle.sqf"; + btc_fnc_log_getRearmMagazines = compile preprocessFileLineNumbers "core\fnc\log\getRearmMagazines.sqf"; + + //DEAF + btc_fnc_deaf_earringing = compile preprocessFileLineNumbers "core\fnc\deaf\earringing.sqf"; }; /////////////////////SERVER AND HEADLESS\\\\\\\\\\\\\\\\\\\\\ if (isServer OR (!isDedicated && !hasInterface)) then { - //MIL - btc_fnc_mil_unit_killed = compile preprocessFile "core\fnc\mil\unit_killed.sqf"; - btc_fnc_mil_add_eh = compile preprocessFile "core\fnc\mil\add_eh.sqf"; + //MIL + btc_fnc_mil_unit_killed = compile preprocessFileLineNumbers "core\fnc\mil\unit_killed.sqf"; + btc_fnc_mil_add_eh = compile preprocessFileLineNumbers "core\fnc\mil\add_eh.sqf"; }; /////////////////////CLIENT AND SERVER\\\\\\\\\\\\\\\\\\\\\ //COMMON -//btc_fnc_veh_track_marker = compile preprocessFile "core\fnc\common\veh_track_marker.sqf"; -btc_fnc_find_veh_with_turret = compile preprocessFile "core\fnc\common\find_veh_with_turret.sqf"; -btc_fnc_get_class = compile preprocessFile "core\fnc\common\get_class.sqf"; +btc_fnc_find_veh_with_turret = compile preprocessFileLineNumbers "core\fnc\common\find_veh_with_turret.sqf"; +btc_fnc_get_class = compile preprocessFileLineNumbers "core\fnc\common\get_class.sqf"; //DB -btc_fnc_db_add_veh = compile preprocessFile "core\fnc\db\add_veh.sqf"; +btc_fnc_db_add_veh = compile preprocessFileLineNumbers "core\fnc\db\add_veh.sqf"; //CIV -btc_fnc_civ_class = compile preprocessFile "core\fnc\civ\class.sqf"; +btc_fnc_civ_class = compile preprocessFileLineNumbers "core\fnc\civ\class.sqf"; //EH -btc_fnc_eh_unit_init = compile preprocessFile "core\fnc\eh\unit_init.sqf"; +btc_fnc_eh_unit_init = compile preprocessFileLineNumbers "core\fnc\eh\unit_init.sqf"; + //INT -btc_fnc_int_change_var = compile preprocessFile "core\fnc\int\change_var.sqf"; -btc_fnc_int_orders_give = compile preprocessFile "core\fnc\int\orders_give.sqf"; -btc_fnc_int_orders_behaviour = compile preprocessFile "core\fnc\int\orders_behaviour.sqf"; -btc_fnc_int_ans_var = compile preprocessFile "core\fnc\int\ans_var.sqf"; -btc_fnc_int_ask_var = compile preprocessFile "core\fnc\int\ask_var.sqf"; +btc_fnc_int_change_var = compile preprocessFileLineNumbers "core\fnc\int\change_var.sqf"; +btc_fnc_int_orders_give = compile preprocessFileLineNumbers "core\fnc\int\orders_give.sqf"; +btc_fnc_int_orders_behaviour = compile preprocessFileLineNumbers "core\fnc\int\orders_behaviour.sqf"; +btc_fnc_int_ans_var = compile preprocessFileLineNumbers "core\fnc\int\ans_var.sqf"; +btc_fnc_int_ask_var = compile preprocessFileLineNumbers "core\fnc\int\ask_var.sqf"; //LOG -btc_fnc_log_can_tow = compile preprocessFile "core\fnc\log\can_tow.sqf"; -btc_fnc_log_check_cargo = compile preprocessFile "core\fnc\log\check_cargo.sqf"; -btc_fnc_log_check_cc = compile preprocessFile "core\fnc\log\check_cc.sqf"; -btc_fnc_log_create = compile preprocessFile "core\fnc\log\create.sqf"; -btc_fnc_log_create_apply = compile preprocessFile "core\fnc\log\create_apply.sqf"; -btc_fnc_log_create_load = compile preprocessFile "core\fnc\log\create_load.sqf"; -btc_fnc_log_create_change_target = compile preprocessFile "core\fnc\log\create_change_target.sqf"; -btc_fnc_log_create_s = compile preprocessFile "core\fnc\log\create_s.sqf"; -btc_fnc_log_hook = compile preprocessFile "core\fnc\log\hook.sqf"; -btc_fnc_log_lift_check = compile preprocessFile "core\fnc\log\lift_check.sqf"; -btc_fnc_log_lift_deploy_ropes = compile preprocessFile "core\fnc\log\lift_deploy_ropes.sqf"; -btc_fnc_log_lift_destroy_ropes = compile preprocessFile "core\fnc\log\lift_destroy_ropes.sqf"; -btc_fnc_log_lift_hook = compile preprocessFile "core\fnc\log\lift_hook.sqf"; -btc_fnc_log_lift_hook_fake = compile preprocessFile "core\fnc\log\lift_hook_fake.sqf"; -btc_fnc_log_lift_hud = compile preprocessFile "core\fnc\log\lift_hud.sqf"; -btc_fnc_log_lift_hud_loop = compile preprocessFile "core\fnc\log\lift_hud_loop.sqf"; -btc_fnc_log_get_cc = compile preprocessFile "core\fnc\log\get_cc.sqf"; -btc_fnc_log_get_rc = compile preprocessFile "core\fnc\log\get_rc.sqf"; -btc_fnc_log_load = compile preprocessFile "core\fnc\log\load.sqf"; -btc_fnc_log_obj_fall = compile preprocessFile "core\fnc\log\obj_fall.sqf"; -btc_fnc_log_paradrop = compile preprocessFile "core\fnc\log\paradrop.sqf"; -btc_fnc_log_place = compile preprocessFile "core\fnc\log\place.sqf"; -btc_fnc_log_place_create_camera = compile preprocessFile "core\fnc\log\place_create_camera.sqf"; -btc_fnc_log_place_destroy_camera = compile preprocessFile "core\fnc\log\place_destroy_camera.sqf"; -btc_fnc_log_place_key_down = compile preprocessFile "core\fnc\log\place_key_down.sqf"; -btc_fnc_log_repair_wreck = compile preprocessFile "core\fnc\log\repair_wreck.sqf"; -btc_fnc_log_select = compile preprocessFile "core\fnc\log\select.sqf"; -btc_fnc_log_server_load = compile preprocessFile "core\fnc\log\server_load.sqf"; -btc_fnc_log_server_repair_wreck = compile preprocessFile "core\fnc\log\server_repair_wreck.sqf"; -btc_fnc_log_server_unload = compile preprocessFile "core\fnc\log\server_unload.sqf"; -btc_fnc_log_set_mass = compile preprocessFile "core\fnc\log\set_mass.sqf"; -btc_fnc_log_tow = compile preprocessFile "core\fnc\log\tow.sqf"; -btc_fnc_log_unhook = compile preprocessFile "core\fnc\log\unhook.sqf"; -btc_fnc_log_unload = compile preprocessFile "core\fnc\log\unload.sqf"; -btc_fnc_log_getconfigmagazines = compile preprocessFile "core\fnc\log\getconfigmagazines.sqf"; +btc_fnc_log_can_tow = compile preprocessFileLineNumbers "core\fnc\log\can_tow.sqf"; +btc_fnc_log_check_cargo = compile preprocessFileLineNumbers "core\fnc\log\check_cargo.sqf"; +btc_fnc_log_check_cc = compile preprocessFileLineNumbers "core\fnc\log\check_cc.sqf"; +btc_fnc_log_create = compile preprocessFileLineNumbers "core\fnc\log\create.sqf"; +btc_fnc_log_create_apply = compile preprocessFileLineNumbers "core\fnc\log\create_apply.sqf"; +btc_fnc_log_create_load = compile preprocessFileLineNumbers "core\fnc\log\create_load.sqf"; +btc_fnc_log_create_change_target = compile preprocessFileLineNumbers "core\fnc\log\create_change_target.sqf"; +btc_fnc_log_create_s = compile preprocessFileLineNumbers "core\fnc\log\create_s.sqf"; +btc_fnc_log_hook = compile preprocessFileLineNumbers "core\fnc\log\hook.sqf"; +btc_fnc_log_lift_check = compile preprocessFileLineNumbers "core\fnc\log\lift_check.sqf"; +btc_fnc_log_lift_deploy_ropes = compile preprocessFileLineNumbers "core\fnc\log\lift_deploy_ropes.sqf"; +btc_fnc_log_lift_destroy_ropes = compile preprocessFileLineNumbers "core\fnc\log\lift_destroy_ropes.sqf"; +btc_fnc_log_lift_hook = compile preprocessFileLineNumbers "core\fnc\log\lift_hook.sqf"; +btc_fnc_log_lift_hook_fake = compile preprocessFileLineNumbers "core\fnc\log\lift_hook_fake.sqf"; +btc_fnc_log_lift_hud = compile preprocessFileLineNumbers "core\fnc\log\lift_hud.sqf"; +btc_fnc_log_lift_hud_loop = compile preprocessFileLineNumbers "core\fnc\log\lift_hud_loop.sqf"; +btc_fnc_log_get_cc = compile preprocessFileLineNumbers "core\fnc\log\get_cc.sqf"; +btc_fnc_log_get_rc = compile preprocessFileLineNumbers "core\fnc\log\get_rc.sqf"; +btc_fnc_log_load = compile preprocessFileLineNumbers "core\fnc\log\load.sqf"; +btc_fnc_log_obj_fall = compile preprocessFileLineNumbers "core\fnc\log\obj_fall.sqf"; +btc_fnc_log_paradrop = compile preprocessFileLineNumbers "core\fnc\log\paradrop.sqf"; +btc_fnc_log_place = compile preprocessFileLineNumbers "core\fnc\log\place.sqf"; +btc_fnc_log_place_create_camera = compile preprocessFileLineNumbers "core\fnc\log\place_create_camera.sqf"; +btc_fnc_log_place_destroy_camera = compile preprocessFileLineNumbers "core\fnc\log\place_destroy_camera.sqf"; +btc_fnc_log_place_key_down = compile preprocessFileLineNumbers "core\fnc\log\place_key_down.sqf"; +btc_fnc_log_repair_wreck = compile preprocessFileLineNumbers "core\fnc\log\repair_wreck.sqf"; +btc_fnc_log_select = compile preprocessFileLineNumbers "core\fnc\log\select.sqf"; +btc_fnc_log_server_load = compile preprocessFileLineNumbers "core\fnc\log\server_load.sqf"; +btc_fnc_log_server_repair_wreck = compile preprocessFileLineNumbers "core\fnc\log\server_repair_wreck.sqf"; +btc_fnc_log_server_unload = compile preprocessFileLineNumbers "core\fnc\log\server_unload.sqf"; +btc_fnc_log_set_mass = compile preprocessFileLineNumbers "core\fnc\log\set_mass.sqf"; +btc_fnc_log_tow = compile preprocessFileLineNumbers "core\fnc\log\tow.sqf"; +btc_fnc_log_unhook = compile preprocessFileLineNumbers "core\fnc\log\unhook.sqf"; +btc_fnc_log_unload = compile preprocessFileLineNumbers "core\fnc\log\unload.sqf"; +btc_fnc_log_getconfigmagazines = compile preprocessFileLineNumbers "core\fnc\log\getconfigmagazines.sqf"; +btc_fnc_log_copy = compile preprocessFileLineNumbers "core\fnc\log\copy.sqf"; +btc_fnc_log_paste = compile preprocessFileLineNumbers "core\fnc\log\paste.sqf"; //MIL -btc_fnc_mil_class = compile preprocessFile "core\fnc\mil\class.sqf"; +btc_fnc_mil_class = compile preprocessFileLineNumbers "core\fnc\mil\class.sqf"; //TASK btc_fnc_task_create = compile preprocessFileLineNumbers "core\fnc\task\create.sqf"; @@ -224,51 +234,66 @@ btc_fnc_side_abort = compile preprocessFileLineNumbers "core\fnc\side\abort.sqf" /////////////////////CLIENT\\\\\\\\\\\\\\\\\\\\\ if (!isDedicated) then { - //DB - btc_fnc_db_request_save = compile preprocessFile "core\fnc\db\request_save.sqf"; - btc_fnc_db_request_delete = compile preprocessFile "core\fnc\db\request_delete.sqf"; - - //COMMON - btc_fnc_end_mission = compile preprocessFile "core\fnc\common\end_mission.sqf"; - btc_fnc_get_cardinal = compile preprocessFile "core\fnc\common\get_cardinal.sqf"; - btc_fnc_is_engineer = compile preprocessFile "core\fnc\common\is_engineer.sqf"; - btc_fnc_marker_debug = compile preprocessFile "core\fnc\common\marker_debug.sqf"; - btc_fnc_systemchat_debug = compile preprocessFile "core\fnc\common\systemchat_debug.sqf"; - btc_fnc_show_hint = compile preprocessFile "core\fnc\common\show_hint.sqf"; - btc_fnc_intro = compile preprocessFile "core\fnc\common\intro.sqf"; - - //EH - btc_fnc_eh_player_respawn = compile preprocessFile "core\fnc\eh\player_respawn.sqf"; - btc_fnc_eh_CuratorObjectPlaced = compile preprocessFile "core\fnc\eh\CuratorObjectPlaced.sqf"; - btc_fnc_eh_treatment = compile preprocessFile "core\fnc\eh\treatment.sqf"; - - //FOB - btc_fnc_fob_create = compile preprocessFile "core\fnc\fob\create.sqf"; - btc_fnc_fob_lb_change = compile preprocessFile "core\fnc\fob\lb_change.sqf"; - btc_fnc_fob_redeploy = compile preprocessFile "core\fnc\fob\redeploy.sqf"; - btc_fnc_fob_dismantle = compile preprocessFile "core\fnc\fob\dismantle.sqf"; - - //INT - btc_fnc_int_add_actions = compile preprocessFile "core\fnc\int\add_actions.sqf"; - btc_fnc_int_action_result = compile preprocessFile "core\fnc\int\action_result.sqf"; - btc_fnc_int_orders = compile preprocessFile "core\fnc\int\orders.sqf"; - - //INFO - btc_fnc_info_ask = compile preprocessFile "core\fnc\info\ask.sqf"; - btc_fnc_info_hideout_asked = compile preprocessFile "core\fnc\info\hideout_asked.sqf"; - btc_fnc_info_search_for_intel = compile preprocessFile "core\fnc\info\search_for_intel.sqf"; - btc_fnc_info_troops = compile preprocessFile "core\fnc\info\troops.sqf"; - btc_fnc_info_ask_reputation = compile preprocessFile "core\fnc\info\ask_reputation.sqf"; - - //LOG - btc_fnc_log_garage = compile preprocessFile "core\fnc\log\garage.sqf"; - btc_fnc_log_get_corner_points = compile preprocessFileLineNumbers "core\fnc\log\get_corner_points.sqf"; - - //TASK - btc_fnc_task_create = compile preprocessFileLineNumbers "core\fnc\task\create.sqf"; - btc_fnc_task_fail = compile preprocessFileLineNumbers "core\fnc\task\fail.sqf"; - btc_fnc_task_set_done = compile preprocessFileLineNumbers "core\fnc\task\set_done.sqf"; - - //SIDE - btc_fnc_side_request = compile preprocessFileLineNumbers "core\fnc\side\request.sqf"; -}; \ No newline at end of file + //DB + btc_fnc_db_request_save = compile preprocessFileLineNumbers "core\fnc\db\request_save.sqf"; + btc_fnc_db_request_delete = compile preprocessFileLineNumbers "core\fnc\db\request_delete.sqf"; + + //COMMON + btc_fnc_end_mission = compile preprocessFileLineNumbers "core\fnc\common\end_mission.sqf"; + btc_fnc_get_cardinal = compile preprocessFileLineNumbers "core\fnc\common\get_cardinal.sqf"; + btc_fnc_marker_debug = compile preprocessFileLineNumbers "core\fnc\common\marker_debug.sqf"; + btc_fnc_systemchat_debug = compile preprocessFileLineNumbers "core\fnc\common\systemchat_debug.sqf"; + btc_fnc_show_hint = compile preprocessFileLineNumbers "core\fnc\common\show_hint.sqf"; + btc_fnc_intro = compile preprocessFileLineNumbers "core\fnc\common\intro.sqf"; + btc_fnc_set_markerTextLocal = compile preprocessFileLineNumbers "core\fnc\common\set_markerTextLocal.sqf"; + btc_fnc_showSubtitle = compile preprocessFileLineNumbers "core\fnc\common\showSubtitle.sqf"; + + //CIV + btc_fnc_civ_add_leaflets = compile preprocessFileLineNumbers "core\fnc\civ\add_leaflets.sqf"; + + //IED + btc_fnc_ied_effects = compile preprocessFileLineNumbers "core\fnc\ied\ied_effects.sqf"; + btc_fnc_ied_effect_smoke = compile preprocessFileLineNumbers "core\fnc\ied\effect_smoke.sqf"; + btc_fnc_ied_effect_color_smoke = compile preprocessFileLineNumbers "core\fnc\ied\effect_color_smoke.sqf"; + btc_fnc_ied_effect_rocks = compile preprocessFileLineNumbers "core\fnc\ied\effect_rocks.sqf"; + btc_fnc_ied_effect_blurEffect = compile preprocessFileLineNumbers "core\fnc\ied\effect_blurEffect.sqf"; + btc_fnc_ied_effect_shock_wave = compile preprocessFileLineNumbers "core\fnc\ied\effect_shock_wave.sqf"; + + //EH + btc_fnc_eh_player_respawn = compile preprocessFileLineNumbers "core\fnc\eh\player_respawn.sqf"; + btc_fnc_eh_CuratorObjectPlaced = compile preprocessFileLineNumbers "core\fnc\eh\CuratorObjectPlaced.sqf"; + btc_fnc_eh_treatment = compile preprocessFileLineNumbers "core\fnc\eh\treatment.sqf"; + btc_fnc_eh_leaflets = compile preprocessFileLineNumbers "core\fnc\eh\leaflets.sqf"; + + //FOB + btc_fnc_fob_create = compile preprocessFileLineNumbers "core\fnc\fob\create.sqf"; + btc_fnc_fob_lb_change = compile preprocessFileLineNumbers "core\fnc\fob\lb_change.sqf"; + btc_fnc_fob_redeploy = compile preprocessFileLineNumbers "core\fnc\fob\redeploy.sqf"; + btc_fnc_fob_dismantle = compile preprocessFileLineNumbers "core\fnc\fob\dismantle.sqf"; + + //INT + btc_fnc_int_add_actions = compile preprocessFileLineNumbers "core\fnc\int\add_actions.sqf"; + btc_fnc_int_action_result = compile preprocessFileLineNumbers "core\fnc\int\action_result.sqf"; + btc_fnc_int_orders = compile preprocessFileLineNumbers "core\fnc\int\orders.sqf"; + btc_fnc_int_shortcuts = compile preprocessFileLineNumbers "core\fnc\int\shortcuts.sqf"; + + //INFO + btc_fnc_info_ask = compile preprocessFileLineNumbers "core\fnc\info\ask.sqf"; + btc_fnc_info_hideout_asked = compile preprocessFileLineNumbers "core\fnc\info\hideout_asked.sqf"; + btc_fnc_info_search_for_intel = compile preprocessFileLineNumbers "core\fnc\info\search_for_intel.sqf"; + btc_fnc_info_troops = compile preprocessFileLineNumbers "core\fnc\info\troops.sqf"; + btc_fnc_info_ask_reputation = compile preprocessFileLineNumbers "core\fnc\info\ask_reputation.sqf"; + + //LOG + btc_fnc_log_garage = compile preprocessFileLineNumbers "core\fnc\log\garage.sqf"; + btc_fnc_log_hitch_points = compile preprocessFileLineNumbers "core\fnc\log\hitch_points.sqf"; + btc_fnc_log_get_corner_points = compile preprocessFileLineNumbers "core\fnc\log\get_corner_points.sqf"; + + //TASK + btc_fnc_task_create = compile preprocessFileLineNumbers "core\fnc\task\create.sqf"; + btc_fnc_task_fail = compile preprocessFileLineNumbers "core\fnc\task\fail.sqf"; + btc_fnc_task_set_done = compile preprocessFileLineNumbers "core\fnc\task\set_done.sqf"; + + //SIDE + btc_fnc_side_request = compile preprocessFileLineNumbers "core\fnc\side\request.sqf"; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/add_group.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/add_group.sqf index 734b6b4b1..3ebb1185b 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/add_group.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/add_group.sqf @@ -1,5 +1,5 @@ /* - If player is around, initiate patrol around the destination, ifnot save in database and delete units by calling btc_fnc_data_get_group. + If player is around, initiate patrol around the destination, ifnot save in database and delete units by calling btc_fnc_data_get_group. */ private ["_group","_city","_wp","_marker"]; @@ -10,7 +10,7 @@ if (btc_debug_log) then {diag_log format ["ADD GROUP = %1",_group];}; _city = [leader _group,btc_city_all,false] call btc_fnc_find_closecity; while {(count (waypoints _group)) > 0} do { - deleteWaypoint ((waypoints _group) select 0); + deleteWaypoint ((waypoints _group) select 0); }; _city setVariable ["occupied",true]; @@ -18,28 +18,28 @@ _city setVariable ["occupied",true]; if (_city getVariable ["marker",""] != "") then {_marker = _city getVariable ["marker",""]; _marker setMarkerColor "ColorRed";_marker setMarkerAlpha 0.3;}; if (vehicle leader _group isEqualTo leader _group) then { - _wp = random 1; + _wp = random 1; } else { - if ((vehicle leader _group) isKindOf "Air") then { - _wp = 0.7; - } else { - _wp = 0.3 + random 0.7; - }; + if ((vehicle leader _group) isKindOf "Air") then { + _wp = 0.7; + } else { + _wp = 0.3 + random 0.7; + }; }; [_group,_city,200, _wp] call btc_fnc_mil_addWP; if !(_city getVariable ["active",false]) then { - private ["_data_units","_data_group"]; + private ["_data_units","_data_group"]; - _data_units = _city getVariable ["data_units",[]]; - _data_group = _group call btc_fnc_data_get_group; - _data_units pushBack _data_group; - _city setVariable ["data_units",_data_units]; - if (btc_debug_log) then {diag_log format ["PUSHBACK = %1",_data_group];}; + _data_units = _city getVariable ["data_units",[]]; + _data_group = _group call btc_fnc_data_get_group; + _data_units pushBack _data_group; + _city setVariable ["data_units",_data_units]; + if (btc_debug_log) then {diag_log format ["PUSHBACK = %1",_data_group];}; }; if (btc_final_phase) then { - btc_city_remaining pushBack _city; + btc_city_remaining pushBack _city; }; if (btc_debug_log) then {diag_log format ["END = %1",[]];}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/get_group.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/get_group.sqf index 748b27bd3..b49aacc06 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/get_group.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/get_group.sqf @@ -12,19 +12,19 @@ _array_dam = []; _behaviour = [behaviour (leader _group),combatMode _group,formation _group]; _array_wp = []; _array_in_veh = []; -_array_veh = []; +_array_veh = []; _index_wp = 0; //_group setVariable ["inHouse",true]; { - _pos = getPosATL _x; - if (surfaceIsWater _pos) then {_array_pos pushBack getpos _x} else {_array_pos pushBack _pos}; - _array_type pushBack typeOf _x; - _array_dam pushBack getDammage _x; + _pos = getPosATL _x; + if (surfaceIsWater _pos) then {_array_pos pushBack getpos _x} else {_array_pos pushBack _pos}; + _array_type pushBack typeOf _x; + _array_dam pushBack getDammage _x; } foreach _units; _index_wp = (currentWaypoint _group) + 1; { - _array_wp = _array_wp + [[waypointPosition _x,waypointType _x,waypointSpeed _x,waypointFormation _x,waypointCombatMode _x,waypointBehaviour _x]]; + _array_wp = _array_wp + [[waypointPosition _x,waypointType _x,waypointSpeed _x,waypointFormation _x,waypointCombatMode _x,waypointBehaviour _x]]; } foreach waypoints _group; @@ -32,26 +32,31 @@ if (!isNil {_group getVariable "stop"}) then {_type_db = 2;}; if (!isNil {_group getVariable "inHouse"}) then {_type_db = 3;_array_veh = _group getVariable "inHouse";}; if (!isNil {_group getVariable "getWeapons"}) then {_type_db = 4;}; if (!isNil {_group getVariable "suicider"}) then {_type_db = 5;}; +if (!isNil {_group getVariable "btc_data_inhouse"}) then {_type_db = 6;_array_veh = _group getVariable "btc_data_inhouse";}; +if (!isNil {_group getVariable "btc_ied_drone"}) then {_type_db = 7;}; /* if (!isNil {_group getVariable "btc_rebel"}) then {_type_db = 3;}; if (!isNil {_group getVariable "btc_terrorist"}) then {_type_db = 4;}; if (!isNil {_group getVariable "getWeapons"}) then {_type_db = 5;}; */ -if (vehicle leader _group != leader _group) then {_type_db = 1;}; +if ((vehicle leader _group != leader _group) && !(_type_db isEqualTo 7)) then {_type_db = 1;}; if (_type_db == 1) then { - private ["_veh","_type","_pos","_dir","_fuel"]; - _veh = vehicle leader _group; - _type = typeOf _veh; - _pos = getposATL _veh; - _dir = getdir _veh; - _fuel = fuel _veh; - _array_veh = [_type,_pos,_dir,_fuel]; - deletevehicle _veh; + private ["_veh","_type","_pos","_dir","_fuel"]; + _veh = vehicle leader _group; + _type = typeOf _veh; + _pos = getposATL _veh; + _dir = getdir _veh; + _fuel = fuel _veh; + _array_veh = [_type,_pos,_dir,_fuel]; }; _data = [_type_db,_array_pos,_array_type,_side,_array_dam,_behaviour,[_index_wp,_array_wp],_array_veh]; + +if ((_type_db == 1) || (_type_db == 7)) then { + deletevehicle vehicle leader _group; +}; {deletevehicle _x} foreach _units;deleteGroup _group; _data \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/spawn_group.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/spawn_group.sqf index 8725268d8..645061b1d 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/spawn_group.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/data/spawn_group.sqf @@ -4,76 +4,82 @@ params ["_type","_array_pos","_array_type","_side","_array_dam","_behaviour","_a private _group = createGroup _side; for "_i" from 0 to (count _array_pos - 1) do { - private _u = _group createUnit [(_array_type select _i), (_array_pos select _i), [], 0, "NONE"]; - _u enableSimulation false; - _u setPosATL (_array_pos select _i); - if (btc_debug_log) then {diag_log format ["spawn group : pos %1 in %2 ", (_array_pos select _i),getpos _u];}; - _u setDamage (_array_dam select _i); + private _u = _group createUnit [_array_type select _i, _array_pos select _i, [], 0, "NONE"]; + _u enableSimulation false; + _u setPosATL (_array_pos select _i); + if (btc_debug_log) then {diag_log format ["spawn group : pos %1 in %2 ", (_array_pos select _i),getpos _u];}; + _u setDamage (_array_dam select _i); }; if (_type == 1) then { - private _veh = createVehicle [(_array_veh select 0), (_array_veh select 1), [], 0, "FLY"]; - if !(_veh isKindOf "Plane") then { - _veh setPosATL (_array_veh select 1); - _veh setDir (_array_veh select 2); - }; - _veh setFuel (_array_veh select 3); - { - private _assigned = false; - if (!_assigned && _veh emptyPositions "driver" > 0) then {_x moveInDriver _veh;_x assignAsDriver _veh;_assigned = true;}; - if (!_assigned && _veh emptyPositions "gunner" > 0) then {_x moveinGunner _veh;_x assignAsGunner _veh;_assigned = true;}; - if (!_assigned && _veh emptyPositions "commander" > 0) then {_x moveinCommander _veh;_x assignAsCommander _veh;_assigned = true;}; - if (!_assigned && _veh emptyPositions "cargo" > 0) then {_x moveinCargo _veh;_x assignAsCargo _veh;_assigned = true;}; - } foreach units _group; + private _veh = createVehicle [_array_veh select 0, (_array_veh select 1), [], 0, "FLY"]; + if !(_veh isKindOf "Plane") then { + _veh setPosATL (_array_veh select 1); + _veh setDir (_array_veh select 2); + }; + _veh setFuel (_array_veh select 3); + { + private _assigned = false; + if (!_assigned && _veh emptyPositions "driver" > 0) then {_x moveInDriver _veh;_x assignAsDriver _veh;_assigned = true;}; + if (!_assigned && _veh emptyPositions "gunner" > 0) then {_x moveinGunner _veh;_x assignAsGunner _veh;_assigned = true;}; + if (!_assigned && _veh emptyPositions "commander" > 0) then {_x moveinCommander _veh;_x assignAsCommander _veh;_assigned = true;}; + if (!_assigned && _veh emptyPositions "cargo" > 0) then {_x moveinCargo _veh;_x assignAsCargo _veh;_assigned = true;}; + } foreach units _group; }; units _group joinSilent _group; (units _group) apply {_x enableSimulation true}; //[waypointPosition _x,waypointType _x,waypointSpeed _x,waypointFormation _x,waypointCombatMode _x,waypointBehaviour _x] -if (_side == civilian && {vehicle leader _group == leader _group}) then { - _group spawn btc_fnc_civ_addWP; -} else { - if (count (_array_wp select 1) > 1) then { - { - //diag_log text format ["TEST X %1",_x]; - private _wp = _group addWaypoint [(_x select 0), 0]; - _wp setWaypointCompletionRadius 20; - _wp setWaypointType (_x select 1); - _wp setWaypointSpeed (_x select 2); - _wp setWaypointFormation (_x select 3); - _wp setWaypointCombatMode (_x select 4); - _wp setWaypointBehaviour (_x select 5); - } foreach (_array_wp select 1); - _group setcurrentWaypoint [_group,(_array_wp select 0)]; - }; +if !(_side == civilian && {vehicle leader _group == leader _group}) then { + if (count (_array_wp select 1) > 1) then { + { + //diag_log text format ["TEST X %1",_x]; + private _wp = _group addWaypoint [(_x select 0), 0]; + _wp setWaypointCompletionRadius 20; + _wp setWaypointType (_x select 1); + _wp setWaypointSpeed (_x select 2); + _wp setWaypointFormation (_x select 3); + _wp setWaypointCombatMode (_x select 4); + _wp setWaypointBehaviour (_x select 5); + } foreach (_array_wp select 1); + _group setcurrentWaypoint [_group,(_array_wp select 0)]; + }; }; if (_type == 2) then { - _group setVariable ["stop",true]; - while {(count (waypoints _group)) > 0} do { deleteWaypoint ((waypoints _group) select 0); }; - {doStop _x;} foreach units _group; + _group setVariable ["stop",true]; + while {(count (waypoints _group)) > 0} do { deleteWaypoint ((waypoints _group) select 0); }; + {doStop _x;} foreach units _group; }; if (_type == 3) then { - while {(count (waypoints _group)) > 0} do { deleteWaypoint ((waypoints _group) select 0); }; - [_group, nearestObject[(units _group) select 0, _array_veh]] spawn btc_fnc_house_addWP; - _group setVariable ["inHouse", _array_veh]; + while {(count (waypoints _group)) > 0} do { deleteWaypoint ((waypoints _group) select 0); }; + [_group, nearestObject [(units _group) select 0, _array_veh]] spawn btc_fnc_house_addWP; + _group setVariable ["inHouse", _array_veh]; }; if (_type == 4) then {[[0,0,0],0,units _group] spawn btc_fnc_civ_get_weapons;}; if (_type == 5) then { - _group spawn { - _this setVariable ["suicider",true]; + _group spawn { + _this setVariable ["suicider",true]; - private _suicider = leader _this; + private _suicider = leader _this; - //Main check + //Main check - private _cond = false; + private _cond = false; - while {Alive _suicider && !isNull _suicider && !_cond} do { - sleep 5; - if (count (getpos _suicider nearEntities ["SoldierWB", 25]) > 0) then {_cond = true;_suicider spawn btc_fnc_ied_suicider_active}; - }; - }; + while {Alive _suicider && !isNull _suicider && !_cond} do { + sleep 5; + if (count (getpos _suicider nearEntities ["SoldierWB", 25]) > 0) then {_cond = true;_suicider spawn btc_fnc_ied_suicider_active}; + }; + }; +}; +if (_type == 6) then { + while {(count (waypoints _group)) > 0} do { deleteWaypoint ((waypoints _group) select 0); }; + [_group, _array_veh select 0] spawn btc_fnc_civ_addWP; + _group setVariable ["btc_data_inhouse", _array_veh]; +}; +if (_type == 7) then { + [objNull, 100, _array_pos select 0, _group] call btc_fnc_ied_drone_create; }; _group setBehaviour (_behaviour select 0); @@ -81,4 +87,6 @@ _group setCombatMode (_behaviour select 1); _group setFormation (_behaviour select 2); if (_side == btc_enemy_side) then {{_x call btc_fnc_mil_unit_create} foreach units _group;}; -if (_side == civilian) then {{_x call btc_fnc_civ_unit_create} foreach units _group;}; \ No newline at end of file +if (_side == civilian) then {{_x call btc_fnc_civ_unit_create} foreach units _group;}; + +[leader _group, _type] diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/add_veh.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/add_veh.sqf index 6f01e199c..fbc4d0248 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/add_veh.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/add_veh.sqf @@ -1,6 +1,6 @@ if !(isServer) exitWith { - _this remoteExec ["btc_fnc_db_add_veh", 2]; + _this remoteExec ["btc_fnc_db_add_veh", 2]; }; btc_vehicles pushBackUnique _this; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/autosave.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/autosave.sqf index eeb016d6d..7231a3155 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/autosave.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/autosave.sqf @@ -1,5 +1,5 @@ if (btc_p_auto_db > 0) then { - // Save 5 minutes before, so it saves on time. - [{[] spawn btc_fnc_db_save; call btc_fnc_db_autosave;}, [], btc_p_auto_db * 60 * 60 - 300] call CBA_fnc_waitAndExecute; + // Save 5 minutes before, so it saves on time. + [{[] spawn btc_fnc_db_save; call btc_fnc_db_autosave;}, [], btc_p_auto_db * 60 * 60 - 300] call CBA_fnc_waitAndExecute; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load.sqf index 6182b6589..794764af2 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load.sqf @@ -1,138 +1,104 @@ -private ["_name","_cities_status","_array_ho","_ho","_array_cache","_fobs","_fobs_loaded","_vehs","_objs"]; +private _name = worldName; -_name = worldName; - -setDate (profileNamespace getVariable [format ["btc_hm_%1_date",_name],date]); +setDate (profileNamespace getVariable [format ["btc_hm_%1_date", _name], date]); //CITIES -_cities_status = profileNamespace getVariable [format ["btc_hm_%1_cities",_name],[]]; -//diag_log format ["_cities_status: %1",_cities_status]; +private _cities_status = profileNamespace getVariable [format ["btc_hm_%1_cities", _name], []]; { -/* - _city_status pushBack (_x getVariable "id"); + _x params ["_id", "_initialized", "_spawn_more", "_occupied", "_data_units", "_has_ho", "_ho_units_spawned", "_ieds", "_has_suicider"]; + + private _city = btc_city_all select _id; - _city_status pushBack (_x getVariable "initialized"); + _city setVariable ["initialized", _initialized]; + _city setVariable ["spawn_more", _spawn_more]; + _city setVariable ["occupied", _occupied]; + _city setVariable ["data_units", _data_units]; + _city setVariable ["has_ho", _has_ho]; + _city setVariable ["ho_units_spawned", _ho_units_spawned]; + _city setVariable ["ieds", _ieds]; + _city setVariable ["has_suicider", _has_suicider]; - _city_status pushBack (_x getVariable "spawn_more"); - _city_status pushBack (_x getVariable "occupied"); + if (btc_debug) then {//_debug - _city_status pushBack (_x getVariable "data_units"); + if (_city getVariable ["occupied",false]) then {(_city getVariable ["marker", ""]) setmarkercolor "colorRed";} else {(_city getVariable ["marker", ""]) setmarkercolor "colorGreen";}; + (_city getVariable ["marker", ""]) setmarkertext format ["loc_%3 %1 %2 - [%4]", _city getVariable "name", _city getVariable "type", _id, _occupied]; - _city_status pushBack (_x getVariable ["has_ho",false]); - _city_status pushBack (_x getVariable ["ho_units_spawned",false]); - _city_status pushBack (_x getVariable ["ieds",[]]); -*/ + diag_log format ["ID: %1", _id]; + diag_log format ["data_city: %1", _x]; + diag_log format ["LOAD: %1 - %2", _id, _occupied]; + }; +} foreach _cities_status; +//HIDEOUT +private _array_ho = profileNamespace getVariable [format ["btc_hm_%1_ho", _name], []]; - private ["_id","_city"]; - _id = _x select 0; - _city = btc_city_all select _id; +{ + _x params ["_pos", "_id_hideout","_rinf_time", "_cap_time", "_id", "_markers_saved"]; - _city setVariable ["initialized",(_x select 1)]; - _city setVariable ["spawn_more",(_x select 2)]; - _city setVariable ["occupied",(_x select 3)]; - _city setVariable ["data_units",(_x select 4)]; - _city setVariable ["has_ho",(_x select 5)]; - _city setVariable ["ho_units_spawned",(_x select 6)]; - _city setVariable ["ieds",(_x select 7)]; + private _city = btc_city_all select _id; - if (btc_debug) then {//_debug + private _hideout = [_pos] call btc_fnc_mil_create_hideout_composition; + clearWeaponCargoGlobal _hideout;clearItemCargoGlobal _hideout;clearMagazineCargoGlobal _hideout; - if (_city getVariable ["occupied",false]) then {(_city getVariable ["marker",""]) setmarkercolor "colorRed";} else {(_city getVariable ["marker",""]) setmarkercolor "colorGreen";}; - (_city getVariable ["marker",""]) setmarkertext format ["loc_%3 %1 %2 - [%4]",(_city getVariable "name"),_city getVariable "type",_id,(_x select 3)]; + _city setpos _pos; + if (btc_debug) then {deleteMarker format ["loc_%1", _id];}; + deleteVehicle (_city getVariable ["trigger_player_side",objNull]); + private _radius_x = btc_hideouts_radius; + private _radius_y = btc_hideouts_radius; - diag_log format ["ID: %1",_id]; - diag_log format ["data_city: %1",_x]; - diag_log format ["LOAD: %1 - %2",_id,(_x select 3)]; - }; -} foreach _cities_status; + [_pos, _radius_x, _radius_y, _city, _city getVariable "occupied", _city getVariable "name", _city getVariable "type", _id] call btc_fnc_city_trigger_player_side; -//HIDEOUT -/* - _data pushBack (getPos _x); - _data pushBack (_x getVariable ["id",0]); - _data pushBack (_x getVariable ["rinf_time",0]); - _data pushBack (_x getVariable ["cap_time",0]); - _data pushBack (_x getVariable ["assigned_to",objNull]); - - _cache_markers = []; - { - _data = []; - _data pushback (getMarkerPos _x); - _data pushback (markerText _x); - } foreach (_x getVariable ["markers",[]]); - _data pushback (_cache_markers); -*/ -_array_ho = profileNamespace getVariable [format ["btc_hm_%1_ho",_name],[]]; + _city setVariable ["RadiusX", _radius_x]; + _city setVariable ["RadiusY", _radius_y]; -{ - private ["_pos","_hideout","_markers","_id","_city","_radius_x","_radius_y"]; - - _pos = (_x select 0); - _id = (_x select 4); - _city = btc_city_all select _id; - - _hideout = [_pos] call btc_fnc_mil_create_hideout_composition; - clearWeaponCargoGlobal _hideout;clearItemCargoGlobal _hideout;clearMagazineCargoGlobal _hideout; - - _city setpos _pos; - if (btc_debug) then {deleteMarker format ["loc_%1",_id];}; - deleteVehicle (_city getVariable ["trigger_player_side",objNull]); - _radius_x = btc_hideouts_radius; - _radius_y = btc_hideouts_radius; - - [_pos,_radius_x,_radius_y,_city,_city getVariable "occupied",_city getVariable "name",_city getVariable "type",_id] call btc_fnc_city_trigger_player_side; - - _city setVariable ["RadiusX",_radius_x]; - _city setVariable ["RadiusY",_radius_y]; - - _hideout setVariable ["id",(_x select 1)]; - _hideout setVariable ["rinf_time",(_x select 2)]; - _hideout setVariable ["cap_time",(_x select 3)]; - _hideout setVariable ["assigned_to", _city]; - - _hideout addEventHandler ["HandleDamage", btc_fnc_mil_hd_hideout]; - - _markers = []; - { - private ["_marker"]; - _marker = createmarker [format ["%1", (_x select 0)], (_x select 0)]; - _marker setmarkertype "hd_warning"; - _marker setMarkerText (_x select 1); - _marker setMarkerSize [0.5, 0.5]; - _marker setMarkerColor "ColorRed"; - _markers pushBack _marker; - } foreach (_x select 5); - - _hideout setVariable ["markers",_markers]; - - if (btc_debug) then { - //Marker - createmarker [format ["btc_hideout_%1", _pos], _pos]; - format ["btc_hideout_%1", _pos] setmarkertype "mil_unknown"; - format ["btc_hideout_%1", _pos] setMarkerText format ["Hideout %1", btc_hideouts_id]; - format ["btc_hideout_%1", _pos] setMarkerSize [0.8, 0.8]; - }; - - if (btc_debug_log) then {diag_log format ["btc_fnc_mil_create_hideout: _this = %1 ; POS %2 ID %3",_x,_pos,btc_hideouts_id];}; - - btc_hideouts_id = btc_hideouts_id + 1; - btc_hideouts pushBack _hideout; + _hideout setVariable ["id", _id_hideout]; + _hideout setVariable ["rinf_time", _rinf_time]; + _hideout setVariable ["cap_time", _cap_time]; + _hideout setVariable ["assigned_to", _city]; + + _hideout addEventHandler ["HandleDamage", btc_fnc_mil_hd_hideout]; + + private _markers = []; + { + _x params ["_pos", "_marker_name"]; + + private _marker = createmarker [format ["%1", _pos], _pos]; + _marker setmarkertype "hd_warning"; + _marker setMarkerText _marker_name; + _marker setMarkerSize [0.5, 0.5]; + _marker setMarkerColor "ColorRed"; + _markers pushBack _marker; + } foreach _markers_saved; + + _hideout setVariable ["markers", _markers]; + + if (btc_debug) then { + //Marker + createmarker [format ["btc_hideout_%1", _pos], _pos]; + format ["btc_hideout_%1", _pos] setmarkertype "mil_unknown"; + format ["btc_hideout_%1", _pos] setMarkerText format ["Hideout %1", btc_hideouts_id]; + format ["btc_hideout_%1", _pos] setMarkerSize [0.8, 0.8]; + }; + + if (btc_debug_log) then {diag_log format ["btc_fnc_mil_create_hideout: _this = %1 ; POS %2 ID %3", _x, _pos, btc_hideouts_id];}; + + btc_hideouts_id = btc_hideouts_id + 1; + btc_hideouts pushBack _hideout; } foreach _array_ho; -_ho = profileNamespace getVariable [format ["btc_hm_%1_ho_sel",_name],0]; +private _ho = profileNamespace getVariable [format ["btc_hm_%1_ho_sel", _name], 0]; btc_hq = btc_hideouts select _ho; -if (count btc_hideouts == 0) then {[] execVM "core\fnc\common\final_phase.sqf";}; +if (count btc_hideouts == 0) then {[] spawn btc_fnc_final_phase;}; //CACHE btc_cache_cities = + btc_city_all; btc_cache_markers = []; -_array_cache = profileNamespace getVariable [format ["btc_hm_%1_cache",_name],[]]; +private _array_cache = profileNamespace getVariable [format ["btc_hm_%1_cache", _name], []]; btc_cache_pos = _array_cache select 0; btc_cache_n = _array_cache select 1; @@ -141,224 +107,135 @@ btc_cache_info = _array_cache select 2; call btc_fnc_cache_create; { - private ["_marker"]; - _marker = createmarker [format ["%1", (_x select 0)], (_x select 0)]; - _marker setmarkertype "hd_unknown"; - _marker setMarkerText (_x select 1); - _marker setMarkerSize [0.5, 0.5]; - _marker setMarkerColor "ColorRed"; - btc_cache_markers pushBack _marker; + _x params ["_pos", "_marker_name"]; + + private _marker = createmarker [format ["%1", _pos], _pos]; + _marker setmarkertype "hd_unknown"; + _marker setMarkerText _marker_name; + _marker setMarkerSize [0.5, 0.5]; + _marker setMarkerColor "ColorRed"; + btc_cache_markers pushBack _marker; } foreach (_array_cache select 3); //FOB -_fobs = profileNamespace getVariable [format ["btc_hm_%1_fobs",_name],[]]; -_fobs_loaded = [[],[]]; +private _fobs = profileNamespace getVariable [format ["btc_hm_%1_fobs", _name], []]; +private _fobs_loaded = [[], []]; { - private ["_pos","_fob_structure","_flag"]; - _pos = (_x select 1); - createmarker [(_x select 0), _pos]; - (_x select 0) setMarkerSize [1,1]; - (_x select 0) setMarkerType "b_hq"; - (_x select 0) setMarkerText (_x select 0); - (_x select 0) setMarkerColor "ColorBlue"; - (_x select 0) setMarkerShape "ICON"; - _fob_structure = createVehicle [btc_fob_structure, _pos, [], 0, "NONE"]; - _flag = createVehicle [btc_fob_flag, _pos, [], 0, "NONE"]; - _flag setVariable ["btc_fob",_x select 0]; - (_fobs_loaded select 0) pushBack (_x select 0); - (_fobs_loaded select 1) pushBack _fob_structure; + _x params ["_fob_name", "_pos"]; + + createmarker [_fob_name, _pos]; + _fob_name setMarkerSize [1, 1]; + _fob_name setMarkerType "b_hq"; + _fob_name setMarkerText _fob_name; + _fob_name setMarkerColor "ColorBlue"; + _fob_name setMarkerShape "ICON"; + private _fob_structure = createVehicle [btc_fob_structure, _pos, [], 0, "NONE"]; + private _flag = createVehicle [btc_fob_flag, _pos, [], 0, "NONE"]; + _flag setVariable ["btc_fob", _fob_name]; + (_fobs_loaded select 0) pushBack _fob_name; + (_fobs_loaded select 1) pushBack _fob_structure; } foreach (_fobs select 0); btc_fobs = _fobs_loaded; //REP -private _global_reputation = profileNamespace getVariable [format ["btc_hm_%1_rep",_name],0]; +private _global_reputation = profileNamespace getVariable [format ["btc_hm_%1_rep", _name], 0]; //VEHICLES -/* _data pushBack (typeOf _x); - _data pushBack (getPos _x); - _data pushBack (getDir _x); - _data pushBack (fuel _x); - _data pushBack (damage _x); - _data pushBack (_x getVariable ["cargo",[]];); -*/ - {deleteVehicle _x} foreach btc_vehicles; btc_vehicles = []; -_vehs = profileNamespace getVariable [format ["btc_hm_%1_vehs",_name],[]]; -/* -{diag_log format ["0: %1",(_x select 0)]; -diag_log format ["1: %1",(_x select 1)]; -diag_log format ["2: %1",(_x select 2)]; -diag_log format ["3: %1",(_x select 3)]; -diag_log format ["4: %1",(_x select 4)]; -diag_log format ["5: %1",(_x select 5)]; -{diag_log format ["5: %1",_x];} foreach (_x select 5)} foreach _vehs; -*/ +private _vehs = profileNamespace getVariable [format ["btc_hm_%1_vehs", _name], []]; [{ - params ["_vehs", "_global_reputation"]; - { - private ["_veh","_cont","_weap","_mags","_items"]; - _veh = [(_x select 0),(_x select 1),(_x select 2)] call btc_fnc_log_createVehicle; - if ((getPos _veh) select 2 < 0) then {_veh setVectorUp surfaceNormal position _veh;}; - _veh setFuel (_x select 3); - { - private ["_type","_cargo_obj","_obj","_weap_obj","_mags_obj","_items_obj"]; - _type = _x select 0; - _cargo_obj = _x select 2; - _obj = _type createVehicle [0,0,0]; - if ((_x select 1) != "") then {_obj setVariable ["ace_rearm_magazineClass",(_x select 1),true]}; - btc_log_obj_created pushBack _obj; - btc_curator addCuratorEditableObjects [[_obj], false]; - clearWeaponCargoGlobal _obj;clearItemCargoGlobal _obj;clearMagazineCargoGlobal _obj; - _weap_obj = _cargo_obj select 0; - if (count _weap_obj > 0) then { - for "_i" from 0 to ((count (_weap_obj select 0)) - 1) do { - _obj addWeaponCargoGlobal[((_weap_obj select 0) select _i),((_weap_obj select 1) select _i)]; - }; - }; - _mags_obj = _cargo_obj select 1; - if (count _mags_obj > 0) then { - for "_i" from 0 to ((count (_mags_obj select 0)) - 1) do { - _obj addMagazineCargoGlobal[((_mags_obj select 0) select _i),((_mags_obj select 1) select _i)]; - }; - }; - _items_obj = _cargo_obj select 2; - if (count _items_obj > 0) then { - for "_i" from 0 to ((count (_items_obj select 0)) - 1) do { - _obj addItemCargoGlobal[((_items_obj select 0) select _i),((_items_obj select 1) select _i)]; - }; - }; - [_obj,_veh] call btc_fnc_log_server_load; - } foreach (_x select 5); - _cont = (_x select 6); - clearWeaponCargoGlobal _veh;clearItemCargoGlobal _veh;clearMagazineCargoGlobal _veh; - _weap = _cont select 0; - if (count _weap > 0) then { - for "_i" from 0 to ((count (_weap select 0)) - 1) do { - _veh addWeaponCargoGlobal[((_weap select 0) select _i),((_weap select 1) select _i)]; - }; - }; - _mags = _cont select 1; - if (count _mags > 0) then { - for "_i" from 0 to ((count (_mags select 0)) - 1) do { - _veh addMagazineCargoGlobal[((_mags select 0) select _i),((_mags select 1) select _i)]; - }; - }; - _items = _cont select 2; - if (count _items > 0) then { - for "_i" from 0 to ((count (_items select 0)) - 1) do { - _veh addItemCargoGlobal[((_items select 0) select _i),((_items select 1) select _i)]; - }; - }; - - //Disable explosion effect during database loading - { - [_veh, _foreachindex, _x, false] call ace_repair_fnc_setHitPointDamage; - } forEach ((_x select 4) select 2); - if (((_x select 4) select 2) select {_x < 1} isEqualTo []) then { - _veh setVariable ["ace_cookoff_enable", false, true]; - _veh setVariable ["ace_cookoff_enableAmmoCookoff", false, true]; - _veh setDamage [1, false]; - }; - } foreach _vehs; - [{ - btc_global_reputation = _this; - }, _global_reputation, 0.5] call CBA_fnc_waitAndExecute; + params ["_vehs", "_global_reputation"]; + + { + _x params ["_veh_type", "_veh_pos", "_veh_dir", "_veh_fuel", "_veh_AllHitPointsDamage", "_veh_cargo", "_veh_cont", "_customization"]; + + if (btc_debug_log) then {diag_log format ["btc_fnc_db_load: _veh = %1;", _x];}; + + private _veh = [_veh_type, _veh_pos, _veh_dir, _customization] call btc_fnc_log_createVehicle; + if ((getPos _veh) select 2 < 0) then {_veh setVectorUp surfaceNormal position _veh;}; + _veh setFuel _veh_fuel; + { + _x params ["_type", "_rearm_magazineClass", "_cargo_obj"]; + + private _obj = _type createVehicle [0, 0, 0]; + if (_rearm_magazineClass != "") then {_obj setVariable ["ace_rearm_magazineClass", _rearm_magazineClass, true]}; + btc_log_obj_created pushBack _obj; + btc_curator addCuratorEditableObjects [[_obj], false]; + + clearWeaponCargoGlobal _obj;clearItemCargoGlobal _obj;clearMagazineCargoGlobal _obj; + _cargo_obj params ["_weap_obj", "_mags_obj", "_items_obj"]; + if (count _weap_obj > 0) then { + for "_i" from 0 to ((count (_weap_obj select 0)) - 1) do { + _obj addWeaponCargoGlobal [(_weap_obj select 0) select _i, (_weap_obj select 1) select _i]; + }; + }; + if (count _mags_obj > 0) then { + for "_i" from 0 to ((count (_mags_obj select 0)) - 1) do { + _obj addMagazineCargoGlobal [(_mags_obj select 0) select _i, (_mags_obj select 1) select _i]; + }; + }; + if (count _items_obj > 0) then { + for "_i" from 0 to ((count (_items_obj select 0)) - 1) do { + _obj addItemCargoGlobal [(_items_obj select 0) select _i, (_items_obj select 1) select _i]; + }; + }; + [_obj, _veh] call btc_fnc_log_server_load; + } foreach _veh_cargo; + + clearWeaponCargoGlobal _veh;clearItemCargoGlobal _veh;clearMagazineCargoGlobal _veh; + _veh_cont params ["_weap", "_mags", "_items"]; + if (count _weap > 0) then { + for "_i" from 0 to ((count (_weap select 0)) - 1) do { + _veh addWeaponCargoGlobal[(_weap select 0) select _i, (_weap select 1) select _i]; + }; + }; + if (count _mags > 0) then { + for "_i" from 0 to ((count (_mags select 0)) - 1) do { + _veh addMagazineCargoGlobal[(_mags select 0) select _i, (_mags select 1) select _i]; + }; + }; + if (count _items > 0) then { + for "_i" from 0 to ((count (_items select 0)) - 1) do { + _veh addItemCargoGlobal[(_items select 0) select _i, (_items select 1) select _i]; + }; + }; + + //Disable explosion effect during database loading + { + [_veh, _foreachindex, _x, false] call ace_repair_fnc_setHitPointDamage; + } forEach (_veh_AllHitPointsDamage select 2); + if ((_veh_AllHitPointsDamage select 2) select {_x < 1} isEqualTo []) then { + _veh setVariable ["ace_cookoff_enable", false, true]; + _veh setVariable ["ace_cookoff_enableAmmoCookoff", false, true]; + _veh setDamage [1, false]; + }; + } foreach _vehs; + [{ + btc_global_reputation = _this; + }, _global_reputation, 0.5] call CBA_fnc_waitAndExecute; }, [_vehs, _global_reputation], 0.5] call CBA_fnc_waitAndExecute; -//Objs -/* - if (!isNil {_x getVariable "loaded"}) exitWith {}; - _data = []; - _data pushBack (typeOf _x); - _data pushBack (getPosASL _x); - _data pushBack (getDir _x); - _cargo = []; - {_cargo pushBack (typeOf _x)} foreach (_x getVariable ["cargo",[]]); - _data pushBack _cargo; - _array_obj pushBack _data; - _array_obj pushBack _data; -*/ -//btc_log_obj_created = []; -_objs = profileNamespace getVariable [format ["btc_hm_%1_objs",_name],[]]; +//Objects +private _objs = profileNamespace getVariable [format ["btc_hm_%1_objs", _name], []]; { - private ["_obj","_cont","_weap","_mags","_items"]; - _obj = (_x select 0) createVehicle (_x select 1); - btc_log_obj_created pushBack _obj; - btc_curator addCuratorEditableObjects [[_obj], false]; - _obj setDir (_x select 2); - _obj setPosASL (_x select 1); - if ((_x select 3) != "") then {_obj setVariable ["ace_rearm_magazineClass",(_x select 3),true]}; - { - /*private "_l"; - _l = _x createVehicle [0,0,0]; - btc_log_obj_created = btc_log_obj_created + [_l]; - btc_curator addCuratorEditableObjects [[_l], false]; - [_l,_obj] call btc_fnc_log_server_load;*/ - //NEW - private ["_type","_cargo_obj","_l","_weap_obj","_mags_obj","_items_obj"]; - //{_cargo pushBack [(typeOf _x),[getWeaponCargo _x,getMagazineCargo _x,getItemCargo _x]]} foreach (_x getVariable ["cargo",[]]); - _type = _x select 0; - _cargo_obj = _x select 2; - _l = _type createVehicle [0,0,0]; - if ((_x select 1) != "") then {_l setVariable ["ace_rearm_magazineClass",(_x select 1),true]}; - btc_log_obj_created pushBack _l; - btc_curator addCuratorEditableObjects [[_l], false]; - clearWeaponCargoGlobal _l;clearItemCargoGlobal _l;clearMagazineCargoGlobal _l; - _weap_obj = _cargo_obj select 0; - if (count _weap_obj > 0) then { - for "_i" from 0 to ((count (_weap_obj select 0)) - 1) do { - _l addWeaponCargoGlobal[((_weap_obj select 0) select _i),((_weap_obj select 1) select _i)]; - }; - }; - _mags_obj = _cargo_obj select 1; - if (count _mags_obj > 0) then { - for "_i" from 0 to ((count (_mags_obj select 0)) - 1) do { - _l addMagazineCargoGlobal[((_mags_obj select 0) select _i),((_mags_obj select 1) select _i)]; - }; - }; - _items_obj = _cargo_obj select 2; - if (count _items_obj > 0) then { - for "_i" from 0 to ((count (_items_obj select 0)) - 1) do { - _l addItemCargoGlobal[((_items_obj select 0) select _i),((_items_obj select 1) select _i)]; - }; - }; - [_l,_obj] call btc_fnc_log_server_load; - } foreach (_x select 4); - _cont = (_x select 5); - clearWeaponCargoGlobal _obj;clearItemCargoGlobal _obj;clearMagazineCargoGlobal _obj; - _weap = _cont select 0; - if (count _weap > 0) then { - for "_i" from 0 to ((count (_weap select 0)) - 1) do { - _obj addWeaponCargoGlobal[((_weap select 0) select _i),((_weap select 1) select _i)]; - }; - }; - _mags = _cont select 1; - if (count _mags > 0) then { - for "_i" from 0 to ((count (_mags select 0)) - 1) do { - _obj addMagazineCargoGlobal[((_mags select 0) select _i),((_mags select 1) select _i)]; - }; - }; - _items = _cont select 2; - if (count _items > 0) then { - for "_i" from 0 to ((count (_items select 0)) - 1) do { - _obj addItemCargoGlobal[((_items select 0) select _i),((_items select 1) select _i)]; - }; - }; + [_x] call btc_fnc_db_loadObjectStatus; } foreach _objs; //Player Markers -private _markers_properties = profileNamespace getVariable [format ["btc_hm_%1_markers",_name],[]]; +private _markers_properties = profileNamespace getVariable [format ["btc_hm_%1_markers", _name], []]; { - private _marker = createMarker [format ["_USER_DEFINED #0/%1/1", _foreachindex], _x select 1]; - _marker setMarkerText (_x select 0); - _marker setMarkerColor (_x select 2); - _marker setMarkerType (_x select 3); - _marker setMarkerSize (_x select 4); - _marker setmarkerAlpha (_x select 5); - _marker setmarkerBrush (_x select 6); - _marker setmarkerDir (_x select 7); - _marker setmarkerShape (_x select 8); -} forEach _markers_properties; \ No newline at end of file + _x params ["_markerText", "_markerPos", "_markerColor", "_markerType", "_markerSize", "_markerAlpha", "_markerBrush", "_markerDir", "_markerShape"]; + + private _marker = createMarker [format ["_USER_DEFINED #0/%1/1", _foreachindex], _markerPos]; + _marker setMarkerText _markerText; + _marker setMarkerColor _markerColor; + _marker setMarkerType _markerType; + _marker setMarkerSize _markerSize; + _marker setmarkerAlpha _markerAlpha; + _marker setmarkerBrush _markerBrush; + _marker setmarkerDir _markerDir; + _marker setmarkerShape _markerShape; +} forEach _markers_properties; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/loadObjectStatus.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/loadObjectStatus.sqf new file mode 100644 index 000000000..a022814a5 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/loadObjectStatus.sqf @@ -0,0 +1,79 @@ +params ["_object_data"]; +_object_data params ["_type","_posWorld","_dir","_magClass","_cargo","_inventory","_vectorPos"]; + +//create object +private _obj = _type createVehicle _posWorld; +btc_log_obj_created pushBack _obj; + +//give the curator controll of the object +btc_curator addCuratorEditableObjects [[_obj], false]; + +//set direction +_obj setDir _dir; + +//set the position of the object +_obj setPosWorld _posWorld; + +//set the vector postion +_obj setVectorDirAndUp _vectorPos; + +//set ace magazine classes +if !(_magClass isEqualTo "") then {_obj setVariable ["ace_rearm_magazineClass",_magClass,true]}; + +//handle cargo +{ + /*private "_l"; + _l = _x createVehicle [0,0,0]; + btc_log_obj_created = btc_log_obj_created + [_l]; + btc_curator addCuratorEditableObjects [[_l], false]; + [_l,_obj] call btc_fnc_log_server_load;*/ + //NEW + //{_cargo pushBack [(typeOf _x),[getWeaponCargo _x,getMagazineCargo _x,getItemCargo _x]]} foreach (_x getVariable ["cargo",[]]); + private _type = _x select 0; + private _cargo_obj = _x select 2; + private _l = _type createVehicle [0,0,0]; + if ((_x select 1) != "") then {_l setVariable ["ace_rearm_magazineClass",(_x select 1),true]}; + btc_log_obj_created pushBack _l; + btc_curator addCuratorEditableObjects [[_l], false]; + clearWeaponCargoGlobal _l;clearItemCargoGlobal _l;clearMagazineCargoGlobal _l; + private _weap_obj = _cargo_obj select 0; + if (count _weap_obj > 0) then { + for "_i" from 0 to ((count (_weap_obj select 0)) - 1) do { + _l addWeaponCargoGlobal[((_weap_obj select 0) select _i),((_weap_obj select 1) select _i)]; + }; + }; + private _mags_obj = _cargo_obj select 1; + if (count _mags_obj > 0) then { + for "_i" from 0 to ((count (_mags_obj select 0)) - 1) do { + _l addMagazineCargoGlobal[((_mags_obj select 0) select _i),((_mags_obj select 1) select _i)]; + }; + }; + private _items_obj = _cargo_obj select 2; + if (count _items_obj > 0) then { + for "_i" from 0 to ((count (_items_obj select 0)) - 1) do { + _l addItemCargoGlobal[((_items_obj select 0) select _i),((_items_obj select 1) select _i)]; + }; + }; + [_l,_obj] call btc_fnc_log_server_load; +} foreach _cargo; + +//set inventory content for weapons, magazines and items +_inventory params ["_weap","_mags","_items"]; +clearWeaponCargoGlobal _obj;clearItemCargoGlobal _obj;clearMagazineCargoGlobal _obj; +if (count _weap > 0) then { + for "_i" from 0 to ((count (_weap select 0)) - 1) do { + _obj addWeaponCargoGlobal[((_weap select 0) select _i),((_weap select 1) select _i)]; + }; +}; +if (count _mags > 0) then { + for "_i" from 0 to ((count (_mags select 0)) - 1) do { + _obj addMagazineCargoGlobal[((_mags select 0) select _i),((_mags select 1) select _i)]; + }; +}; +if (count _items > 0) then { + for "_i" from 0 to ((count (_items select 0)) - 1) do { + _obj addItemCargoGlobal[((_items select 0) select _i),((_items select 1) select _i)]; + }; +}; + +_obj diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load_old.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load_old.sqf index 1d201dc09..6b4146795 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load_old.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/load_old.sqf @@ -11,115 +11,115 @@ _cities_status = profileNamespace getVariable [format ["btc_hm_%1_cities",_name] { /* - _city_status pushBack (_x getVariable "id"); + _city_status pushBack (_x getVariable "id"); - _city_status pushBack (_x getVariable "initialized"); + _city_status pushBack (_x getVariable "initialized"); - _city_status pushBack (_x getVariable "spawn_more"); - _city_status pushBack (_x getVariable "occupied"); + _city_status pushBack (_x getVariable "spawn_more"); + _city_status pushBack (_x getVariable "occupied"); - _city_status pushBack (_x getVariable "data_units"); + _city_status pushBack (_x getVariable "data_units"); - _city_status pushBack (_x getVariable ["has_ho",false]); - _city_status pushBack (_x getVariable ["ho_units_spawned",false]); - _city_status pushBack (_x getVariable ["ieds",[]]); + _city_status pushBack (_x getVariable ["has_ho",false]); + _city_status pushBack (_x getVariable ["ho_units_spawned",false]); + _city_status pushBack (_x getVariable ["ieds",[]]); */ - private ["_id","_city"]; - _id = _x select 0; - _city = btc_city_all select _id; + private ["_id","_city"]; + _id = _x select 0; + _city = btc_city_all select _id; - _city setVariable ["initialized",(_x select 1)]; - _city setVariable ["spawn_more",(_x select 2)]; - _city setVariable ["occupied",(_x select 3)]; - _city setVariable ["data_units",(_x select 4)]; - _city setVariable ["has_ho",(_x select 5)]; - _city setVariable ["ho_units_spawned",(_x select 6)]; - _city setVariable ["ieds",(_x select 7)]; + _city setVariable ["initialized",(_x select 1)]; + _city setVariable ["spawn_more",(_x select 2)]; + _city setVariable ["occupied",(_x select 3)]; + _city setVariable ["data_units",(_x select 4)]; + _city setVariable ["has_ho",(_x select 5)]; + _city setVariable ["ho_units_spawned",(_x select 6)]; + _city setVariable ["ieds",(_x select 7)]; - if (btc_debug) then {//_debug + if (btc_debug) then {//_debug - if (_city getVariable ["occupied",false]) then {(_city getVariable ["marker",""]) setmarkercolor "colorRed";} else {(_city getVariable ["marker",""]) setmarkercolor "colorGreen";}; - (_city getVariable ["marker",""]) setmarkertext format ["loc_%3 %1 %2 - [%4]",(_city getVariable "name"),_city getVariable "type",_id,(_x select 3)]; + if (_city getVariable ["occupied",false]) then {(_city getVariable ["marker",""]) setmarkercolor "colorRed";} else {(_city getVariable ["marker",""]) setmarkercolor "colorGreen";}; + (_city getVariable ["marker",""]) setmarkertext format ["loc_%3 %1 %2 - [%4]",(_city getVariable "name"),_city getVariable "type",_id,(_x select 3)]; - diag_log format ["ID: %1",_id]; - diag_log format ["data_city: %1",_x]; - diag_log format ["LOAD: %1 - %2",_id,(_x select 3)]; - }; + diag_log format ["ID: %1",_id]; + diag_log format ["data_city: %1",_x]; + diag_log format ["LOAD: %1 - %2",_id,(_x select 3)]; + }; } foreach _cities_status; //HIDEOUT /* - _data pushBack (getPos _x); - _data pushBack (_x getVariable ["id",0]); - _data pushBack (_x getVariable ["rinf_time",0]); - _data pushBack (_x getVariable ["cap_time",0]); - _data pushBack (_x getVariable ["assigned_to",objNull]); - - _cache_markers = []; - { - _data = []; - _data pushback (getMarkerPos _x); - _data pushback (markerText _x); - } foreach (_x getVariable ["markers",[]]); - _data pushback (_cache_markers); + _data pushBack (getPos _x); + _data pushBack (_x getVariable ["id",0]); + _data pushBack (_x getVariable ["rinf_time",0]); + _data pushBack (_x getVariable ["cap_time",0]); + _data pushBack (_x getVariable ["assigned_to",objNull]); + + _cache_markers = []; + { + _data = []; + _data pushback (getMarkerPos _x); + _data pushback (markerText _x); + } foreach (_x getVariable ["markers",[]]); + _data pushback (_cache_markers); */ _array_ho = profileNamespace getVariable [format ["btc_hm_%1_ho",_name],[]]; { - private ["_pos","_hideout","_markers","_id","_city","_radius_x","_radius_y"]; - - _pos = (_x select 0); - _id = (_x select 4); - _city = btc_city_all select _id; - - _hideout = [_pos] call btc_fnc_mil_create_hideout_composition; - clearWeaponCargoGlobal _hideout;clearItemCargoGlobal _hideout;clearMagazineCargoGlobal _hideout; - - _city setpos _pos; - if (btc_debug) then {deleteMarker format ["loc_%1",_id];}; - deleteVehicle (_city getVariable ["trigger_player_side",objNull]); - _radius_x = btc_hideouts_radius; - _radius_y = btc_hideouts_radius; - - [_pos,_radius_x,_radius_y,_city,_city getVariable "occupied",_city getVariable "name",_city getVariable "type",_id] call btc_fnc_city_trigger_player_side; - - _city setVariable ["RadiusX",_radius_x]; - _city setVariable ["RadiusY",_radius_y]; - - _hideout setVariable ["id",(_x select 1)]; - _hideout setVariable ["rinf_time",(_x select 2)]; - _hideout setVariable ["cap_time",(_x select 3)]; - _hideout setVariable ["assigned_to", _city]; - - _hideout addEventHandler ["HandleDamage", btc_fnc_mil_hd_hideout]; - - _markers = []; - { - private ["_marker"]; - _marker = createmarker [format ["%1", (_x select 0)], (_x select 0)]; - _marker setmarkertype "hd_warning"; - _marker setMarkerText (_x select 1); - _marker setMarkerSize [0.5, 0.5]; - _marker setMarkerColor "ColorRed"; - _markers pushBack _marker; - } foreach (_x select 5); - - _hideout setVariable ["markers",_markers]; - - if (btc_debug) then { - //Marker - createmarker [format ["btc_hideout_%1", _pos], _pos]; - format ["btc_hideout_%1", _pos] setmarkertype "mil_unknown"; - format ["btc_hideout_%1", _pos] setMarkerText format ["Hideout %1", btc_hideouts_id]; - format ["btc_hideout_%1", _pos] setMarkerSize [0.8, 0.8]; - }; - - if (btc_debug_log) then {diag_log format ["btc_fnc_mil_create_hideout: _this = %1 ; POS %2 ID %3",_x,_pos,btc_hideouts_id];}; - - btc_hideouts_id = btc_hideouts_id + 1; - btc_hideouts pushBack _hideout; + private ["_pos","_hideout","_markers","_id","_city","_radius_x","_radius_y"]; + + _pos = (_x select 0); + _id = (_x select 4); + _city = btc_city_all select _id; + + _hideout = [_pos] call btc_fnc_mil_create_hideout_composition; + clearWeaponCargoGlobal _hideout;clearItemCargoGlobal _hideout;clearMagazineCargoGlobal _hideout; + + _city setpos _pos; + if (btc_debug) then {deleteMarker format ["loc_%1",_id];}; + deleteVehicle (_city getVariable ["trigger_player_side",objNull]); + _radius_x = btc_hideouts_radius; + _radius_y = btc_hideouts_radius; + + [_pos,_radius_x,_radius_y,_city,_city getVariable "occupied",_city getVariable "name",_city getVariable "type",_id] call btc_fnc_city_trigger_player_side; + + _city setVariable ["RadiusX",_radius_x]; + _city setVariable ["RadiusY",_radius_y]; + + _hideout setVariable ["id",(_x select 1)]; + _hideout setVariable ["rinf_time",(_x select 2)]; + _hideout setVariable ["cap_time",(_x select 3)]; + _hideout setVariable ["assigned_to", _city]; + + _hideout addEventHandler ["HandleDamage", btc_fnc_mil_hd_hideout]; + + _markers = []; + { + private ["_marker"]; + _marker = createmarker [format ["%1", (_x select 0)], (_x select 0)]; + _marker setmarkertype "hd_warning"; + _marker setMarkerText (_x select 1); + _marker setMarkerSize [0.5, 0.5]; + _marker setMarkerColor "ColorRed"; + _markers pushBack _marker; + } foreach (_x select 5); + + _hideout setVariable ["markers",_markers]; + + if (btc_debug) then { + //Marker + createmarker [format ["btc_hideout_%1", _pos], _pos]; + format ["btc_hideout_%1", _pos] setmarkertype "mil_unknown"; + format ["btc_hideout_%1", _pos] setMarkerText format ["Hideout %1", btc_hideouts_id]; + format ["btc_hideout_%1", _pos] setMarkerSize [0.8, 0.8]; + }; + + if (btc_debug_log) then {diag_log format ["btc_fnc_mil_create_hideout: _this = %1 ; POS %2 ID %3",_x,_pos,btc_hideouts_id];}; + + btc_hideouts_id = btc_hideouts_id + 1; + btc_hideouts pushBack _hideout; } foreach _array_ho; _ho = profileNamespace getVariable [format ["btc_hm_%1_ho_sel",_name],0]; @@ -141,13 +141,13 @@ btc_cache_info = _array_cache select 2; call btc_fnc_cache_create; { - private ["_marker"]; - _marker = createmarker [format ["%1", (_x select 0)], (_x select 0)]; - _marker setmarkertype "hd_unknown"; - _marker setMarkerText (_x select 1); - _marker setMarkerSize [0.5, 0.5]; - _marker setMarkerColor "ColorRed"; - btc_cache_markers pushBack _marker; + private ["_marker"]; + _marker = createmarker [format ["%1", (_x select 0)], (_x select 0)]; + _marker setmarkertype "hd_unknown"; + _marker setMarkerText (_x select 1); + _marker setMarkerSize [0.5, 0.5]; + _marker setMarkerColor "ColorRed"; + btc_cache_markers pushBack _marker; } foreach (_array_cache select 3); //REP @@ -158,29 +158,29 @@ _fobs = profileNamespace getVariable [format ["btc_hm_%1_fobs",_name],[]]; _fobs_loaded = [[],[]]; { - private ["_pos","_fob_structure","_flag"]; - _pos = (_x select 1); - createmarker [(_x select 0), _pos]; - (_x select 0) setMarkerSize [1,1]; - (_x select 0) setMarkerType "b_hq"; - (_x select 0) setMarkerText (_x select 0); - (_x select 0) setMarkerColor "ColorBlue"; - (_x select 0) setMarkerShape "ICON"; - _fob_structure = createVehicle [btc_fob_structure, _pos, [], 0, "NONE"]; - _flag = createVehicle [btc_fob_flag, _pos, [], 0, "NONE"]; - _flag setVariable ["btc_fob",_x select 0]; - (_fobs_loaded select 0) pushBack (_x select 0); - (_fobs_loaded select 1) pushBack _fob_structure; + private ["_pos","_fob_structure","_flag"]; + _pos = (_x select 1); + createmarker [(_x select 0), _pos]; + (_x select 0) setMarkerSize [1,1]; + (_x select 0) setMarkerType "b_hq"; + (_x select 0) setMarkerText (_x select 0); + (_x select 0) setMarkerColor "ColorBlue"; + (_x select 0) setMarkerShape "ICON"; + _fob_structure = createVehicle [btc_fob_structure, _pos, [], 0, "NONE"]; + _flag = createVehicle [btc_fob_flag, _pos, [], 0, "NONE"]; + _flag setVariable ["btc_fob",_x select 0]; + (_fobs_loaded select 0) pushBack (_x select 0); + (_fobs_loaded select 1) pushBack _fob_structure; } foreach (_fobs select 0); btc_fobs = _fobs_loaded; //VEHICLES -/* _data pushBack (typeOf _x); - _data pushBack (getPos _x); - _data pushBack (getDir _x); - _data pushBack (fuel _x); - _data pushBack (damage _x); - _data pushBack (_x getVariable ["cargo",[]];); +/* _data pushBack (typeOf _x); + _data pushBack (getPos _x); + _data pushBack (getDir _x); + _data pushBack (fuel _x); + _data pushBack (damage _x); + _data pushBack (_x getVariable ["cargo",[]];); */ {deleteVehicle _x} foreach btc_vehicles; @@ -196,151 +196,170 @@ diag_log format ["4: %1",(_x select 4)]; diag_log format ["5: %1",(_x select 5)]; {diag_log format ["5: %1",_x];} foreach (_x select 5)} foreach _vehs; */ -{ - private ["_veh","_cont","_weap","_mags","_items"]; - _veh = (_x select 0) createVehicle (_x select 1); - _veh setPosASL (_x select 1); - _veh setDir (_x select 2); - if ((getPos _veh) select 2 < 0) then {_veh setVectorUp surfaceNormal position _veh;}; - _veh setFuel (_x select 3); - _veh setVariable ["btc_dont_delete",true]; - _veh call btc_fnc_db_add_veh; - { - private ["_type","_cargo_obj","_obj","_weap_obj","_mags_obj","_items_obj"]; - //{_cargo pushBack [(typeOf _x),[getWeaponCargo _x,getMagazineCargo _x,getItemCargo _x]]} foreach (_x getVariable ["cargo",[]]); - _type = _x select 0; - _cargo_obj = _x select 2; - _obj = _type createVehicle [0,0,0]; - if ((_x select 1) != "") then {_obj setVariable ["ace_rearm_magazineClass",(_x select 1),true]}; - btc_log_obj_created pushBack _obj; - btc_curator addCuratorEditableObjects [[_obj], false]; - clearWeaponCargoGlobal _obj;clearItemCargoGlobal _obj;clearMagazineCargoGlobal _obj; - _weap_obj = _cargo_obj select 0; - if (count _weap_obj > 0) then { - for "_i" from 0 to ((count (_weap_obj select 0)) - 1) do { - _obj addWeaponCargoGlobal[((_weap_obj select 0) select _i),((_weap_obj select 1) select _i)]; - }; - }; - _mags_obj = _cargo_obj select 1; - if (count _mags_obj > 0) then { - for "_i" from 0 to ((count (_mags_obj select 0)) - 1) do { - _obj addMagazineCargoGlobal[((_mags_obj select 0) select _i),((_mags_obj select 1) select _i)]; - }; - }; - _items_obj = _cargo_obj select 2; - if (count _items_obj > 0) then { - for "_i" from 0 to ((count (_items_obj select 0)) - 1) do { - _obj addItemCargoGlobal[((_items_obj select 0) select _i),((_items_obj select 1) select _i)]; - }; - }; - [_obj,_veh] call btc_fnc_log_server_load; - } foreach (_x select 5); - _cont = (_x select 6); - clearWeaponCargoGlobal _veh;clearItemCargoGlobal _veh;clearMagazineCargoGlobal _veh; - _weap = _cont select 0; - if (count _weap > 0) then { - for "_i" from 0 to ((count (_weap select 0)) - 1) do { - _veh addWeaponCargoGlobal[((_weap select 0) select _i),((_weap select 1) select _i)]; - }; - }; - _mags = _cont select 1; - if (count _mags > 0) then { - for "_i" from 0 to ((count (_mags select 0)) - 1) do { - _veh addMagazineCargoGlobal[((_mags select 0) select _i),((_mags select 1) select _i)]; - }; - }; - _items = _cont select 2; - if (count _items > 0) then { - for "_i" from 0 to ((count (_items select 0)) - 1) do { - _veh addItemCargoGlobal[((_items select 0) select _i),((_items select 1) select _i)]; - }; - }; - - //Disable explosion effect during database loading - _veh setVariable ["ace_cookoff_enable", false]; - _veh setVariable ["ace_cookoff_enableAmmoCookoff", false]; - _veh setDamage [(_x select 4), false]; - _veh setVariable ["ace_cookoff_enable", nil]; - _veh setVariable ["ace_cookoff_enableAmmoCookoff", nil]; -} foreach _vehs; +[{ + private _vehs = _this; + { + private ["_veh","_cont","_weap","_mags","_items"]; + _veh = [(_x select 0),(_x select 1),(_x select 2)] call btc_fnc_log_createVehicle; + if ((getPos _veh) select 2 < 0) then {_veh setVectorUp surfaceNormal position _veh;}; + _veh setFuel (_x select 3); + { + private ["_type","_cargo_obj","_obj","_weap_obj","_mags_obj","_items_obj"]; + _type = _x select 0; + _cargo_obj = _x select 2; + _obj = _type createVehicle [0,0,0]; + if ((_x select 1) != "") then {_obj setVariable ["ace_rearm_magazineClass",(_x select 1),true]}; + btc_log_obj_created pushBack _obj; + btc_curator addCuratorEditableObjects [[_obj], false]; + clearWeaponCargoGlobal _obj;clearItemCargoGlobal _obj;clearMagazineCargoGlobal _obj; + _weap_obj = _cargo_obj select 0; + if (count _weap_obj > 0) then { + for "_i" from 0 to ((count (_weap_obj select 0)) - 1) do { + _obj addWeaponCargoGlobal[((_weap_obj select 0) select _i),((_weap_obj select 1) select _i)]; + }; + }; + _mags_obj = _cargo_obj select 1; + if (count _mags_obj > 0) then { + for "_i" from 0 to ((count (_mags_obj select 0)) - 1) do { + _obj addMagazineCargoGlobal[((_mags_obj select 0) select _i),((_mags_obj select 1) select _i)]; + }; + }; + _items_obj = _cargo_obj select 2; + if (count _items_obj > 0) then { + for "_i" from 0 to ((count (_items_obj select 0)) - 1) do { + _obj addItemCargoGlobal[((_items_obj select 0) select _i),((_items_obj select 1) select _i)]; + }; + }; + [_obj,_veh] call btc_fnc_log_server_load; + } foreach (_x select 5); + _cont = (_x select 6); + clearWeaponCargoGlobal _veh;clearItemCargoGlobal _veh;clearMagazineCargoGlobal _veh; + _weap = _cont select 0; + if (count _weap > 0) then { + for "_i" from 0 to ((count (_weap select 0)) - 1) do { + _veh addWeaponCargoGlobal[((_weap select 0) select _i),((_weap select 1) select _i)]; + }; + }; + _mags = _cont select 1; + if (count _mags > 0) then { + for "_i" from 0 to ((count (_mags select 0)) - 1) do { + _veh addMagazineCargoGlobal[((_mags select 0) select _i),((_mags select 1) select _i)]; + }; + }; + _items = _cont select 2; + if (count _items > 0) then { + for "_i" from 0 to ((count (_items select 0)) - 1) do { + _veh addItemCargoGlobal[((_items select 0) select _i),((_items select 1) select _i)]; + }; + }; + + //Disable explosion effect during database loading + _veh setVariable ["ace_cookoff_enable", false]; + _veh setVariable ["ace_cookoff_enableAmmoCookoff", false]; + { + [_veh, _foreachindex, _x] call ace_repair_fnc_setHitPointDamage; + } forEach ((_x select 4) select 2); + _veh setVariable ["ace_cookoff_enable", nil]; + _veh setVariable ["ace_cookoff_enableAmmoCookoff", nil]; + } foreach _vehs; +}, _vehs, 0.5] call CBA_fnc_waitAndExecute; //Objs /* - if (!isNil {_x getVariable "loaded"}) exitWith {}; - _data = []; - _data pushBack (typeOf _x); - _data pushBack (getPosASL _x); - _data pushBack (getDir _x); - _cargo = []; - {_cargo pushBack (typeOf _x)} foreach (_x getVariable ["cargo",[]]); - _data pushBack _cargo; - _array_obj pushBack _data; - _array_obj pushBack _data; + if (!isNil {_x getVariable "loaded"}) exitWith {}; + _data = []; + _data pushBack (typeOf _x); + _data pushBack (getPosASL _x); + _data pushBack (getDir _x); + _cargo = []; + {_cargo pushBack (typeOf _x)} foreach (_x getVariable ["cargo",[]]); + _data pushBack _cargo; + _array_obj pushBack _data; + _array_obj pushBack _data; */ //btc_log_obj_created = []; _objs = profileNamespace getVariable [format ["btc_hm_%1_objs",_name],[]]; { - private ["_obj","_cont","_weap","_mags","_items"]; - _obj = (_x select 0) createVehicle (_x select 1); - btc_log_obj_created pushBack _obj; - btc_curator addCuratorEditableObjects [[_obj], false]; - _obj setDir (_x select 2); - _obj setPosASL (_x select 1); - if ((_x select 3) != "") then {_obj setVariable ["ace_rearm_magazineClass",(_x select 3),true]}; - { - /*private "_l"; - _l = _x createVehicle [0,0,0]; - btc_log_obj_created = btc_log_obj_created + [_l]; - btc_curator addCuratorEditableObjects [[_l], false]; - [_l,_obj] call btc_fnc_log_server_load;*/ - //NEW - private ["_type","_cargo_obj","_l","_weap_obj","_mags_obj","_items_obj"]; - //{_cargo pushBack [(typeOf _x),[getWeaponCargo _x,getMagazineCargo _x,getItemCargo _x]]} foreach (_x getVariable ["cargo",[]]); - _type = _x select 0; - _cargo_obj = _x select 2; - _l = _type createVehicle [0,0,0]; - if ((_x select 1) != "") then {_l setVariable ["ace_rearm_magazineClass",(_x select 1),true]}; - btc_log_obj_created pushBack _l; - btc_curator addCuratorEditableObjects [[_l], false]; - clearWeaponCargoGlobal _l;clearItemCargoGlobal _l;clearMagazineCargoGlobal _l; - _weap_obj = _cargo_obj select 0; - if (count _weap_obj > 0) then { - for "_i" from 0 to ((count (_weap_obj select 0)) - 1) do { - _l addWeaponCargoGlobal[((_weap_obj select 0) select _i),((_weap_obj select 1) select _i)]; - }; - }; - _mags_obj = _cargo_obj select 1; - if (count _mags_obj > 0) then { - for "_i" from 0 to ((count (_mags_obj select 0)) - 1) do { - _l addMagazineCargoGlobal[((_mags_obj select 0) select _i),((_mags_obj select 1) select _i)]; - }; - }; - _items_obj = _cargo_obj select 2; - if (count _items_obj > 0) then { - for "_i" from 0 to ((count (_items_obj select 0)) - 1) do { - _l addItemCargoGlobal[((_items_obj select 0) select _i),((_items_obj select 1) select _i)]; - }; - }; - [_l,_obj] call btc_fnc_log_server_load; - } foreach (_x select 4); - _cont = (_x select 5); - clearWeaponCargoGlobal _obj;clearItemCargoGlobal _obj;clearMagazineCargoGlobal _obj; - _weap = _cont select 0; - if (count _weap > 0) then { - for "_i" from 0 to ((count (_weap select 0)) - 1) do { - _obj addWeaponCargoGlobal[((_weap select 0) select _i),((_weap select 1) select _i)]; - }; - }; - _mags = _cont select 1; - if (count _mags > 0) then { - for "_i" from 0 to ((count (_mags select 0)) - 1) do { - _obj addMagazineCargoGlobal[((_mags select 0) select _i),((_mags select 1) select _i)]; - }; - }; - _items = _cont select 2; - if (count _items > 0) then { - for "_i" from 0 to ((count (_items select 0)) - 1) do { - _obj addItemCargoGlobal[((_items select 0) select _i),((_items select 1) select _i)]; - }; - }; + private ["_obj","_cont","_weap","_mags","_items"]; + _obj = (_x select 0) createVehicle (_x select 1); + btc_log_obj_created pushBack _obj; + btc_curator addCuratorEditableObjects [[_obj], false]; + _obj setDir (_x select 2); + _obj setPosASL (_x select 1); + if ((_x select 3) != "") then {_obj setVariable ["ace_rearm_magazineClass",(_x select 3),true]}; + { + /*private "_l"; + _l = _x createVehicle [0,0,0]; + btc_log_obj_created = btc_log_obj_created + [_l]; + btc_curator addCuratorEditableObjects [[_l], false]; + [_l,_obj] call btc_fnc_log_server_load;*/ + //NEW + private ["_type","_cargo_obj","_l","_weap_obj","_mags_obj","_items_obj"]; + //{_cargo pushBack [(typeOf _x),[getWeaponCargo _x,getMagazineCargo _x,getItemCargo _x]]} foreach (_x getVariable ["cargo",[]]); + _type = _x select 0; + _cargo_obj = _x select 2; + _l = _type createVehicle [0,0,0]; + if ((_x select 1) != "") then {_l setVariable ["ace_rearm_magazineClass",(_x select 1),true]}; + btc_log_obj_created pushBack _l; + btc_curator addCuratorEditableObjects [[_l], false]; + clearWeaponCargoGlobal _l;clearItemCargoGlobal _l;clearMagazineCargoGlobal _l; + _weap_obj = _cargo_obj select 0; + if (count _weap_obj > 0) then { + for "_i" from 0 to ((count (_weap_obj select 0)) - 1) do { + _l addWeaponCargoGlobal[((_weap_obj select 0) select _i),((_weap_obj select 1) select _i)]; + }; + }; + _mags_obj = _cargo_obj select 1; + if (count _mags_obj > 0) then { + for "_i" from 0 to ((count (_mags_obj select 0)) - 1) do { + _l addMagazineCargoGlobal[((_mags_obj select 0) select _i),((_mags_obj select 1) select _i)]; + }; + }; + _items_obj = _cargo_obj select 2; + if (count _items_obj > 0) then { + for "_i" from 0 to ((count (_items_obj select 0)) - 1) do { + _l addItemCargoGlobal[((_items_obj select 0) select _i),((_items_obj select 1) select _i)]; + }; + }; + [_l,_obj] call btc_fnc_log_server_load; + } foreach (_x select 4); + _cont = (_x select 5); + clearWeaponCargoGlobal _obj;clearItemCargoGlobal _obj;clearMagazineCargoGlobal _obj; + _weap = _cont select 0; + if (count _weap > 0) then { + for "_i" from 0 to ((count (_weap select 0)) - 1) do { + _obj addWeaponCargoGlobal[((_weap select 0) select _i),((_weap select 1) select _i)]; + }; + }; + _mags = _cont select 1; + if (count _mags > 0) then { + for "_i" from 0 to ((count (_mags select 0)) - 1) do { + _obj addMagazineCargoGlobal[((_mags select 0) select _i),((_mags select 1) select _i)]; + }; + }; + _items = _cont select 2; + if (count _items > 0) then { + for "_i" from 0 to ((count (_items select 0)) - 1) do { + _obj addItemCargoGlobal[((_items select 0) select _i),((_items select 1) select _i)]; + }; + }; + if ((_x select 0) isEqualTo "Land_Pod_Heli_Transport_04_medevac_F") then { + { + _obj setObjectTextureGlobal [ _foreachindex, _x ]; + } forEach ["a3\air_f_heli\heli_transport_04\data\heli_transport_04_pod_ext01_black_co.paa","a3\air_f_heli\heli_transport_04\data\heli_transport_04_pod_ext02_black_co.paa"]; + }; } foreach _objs; + +//Player Markers +private _markers_properties = profileNamespace getVariable [format ["btc_hm_%1_markers",_name],[]]; +{ + private _marker = createMarker [format ["_USER_DEFINED #0/%1/1", _foreachindex], _x select 1]; + _marker setMarkerText (_x select 0); + _marker setMarkerColor (_x select 2); + _marker setMarkerType (_x select 3); + _marker setMarkerSize (_x select 4); + _marker setmarkerAlpha (_x select 5); + _marker setmarkerBrush (_x select 6); + _marker setmarkerDir (_x select 7); + _marker setmarkerShape (_x select 8); +} forEach _markers_properties; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/save.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/save.sqf index d8fb28300..a7b48f37b 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/save.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/save.sqf @@ -1,162 +1,139 @@ -/* -profileNamespace setVariable ["var_kills",10000]; -saveProfileNamespace; -_playerKills = profileNamespace getVariable "var_kills";*/ call btc_fnc_db_delete; -private ["_cities_status","_fobs","_name","_array_ho","_data","_array_cache","_array_veh","_array_obj","_cargo","_cont","_cache_markers"]; - -hint "saving..."; +if (btc_debug) then {hint "saving...1";}; [8] remoteExec ["btc_fnc_show_hint", 0]; btc_db_is_saving = true; -_name = worldName; +private _name = worldName; //Version -profileNamespace setVariable [format ["btc_hm_%1_version",_name],btc_version]; +profileNamespace setVariable [format ["btc_hm_%1_version", _name], btc_version]; //World Date -profileNamespace setVariable [format ["btc_hm_%1_date",_name],date]; +profileNamespace setVariable [format ["btc_hm_%1_date", _name], date]; for "_i" from 0 to (count btc_city_all - 1) do { - private "_s"; - _s = [_i] spawn btc_fnc_city_de_activate; - waitUntil {scriptDone _s}; + private _s = [_i] spawn btc_fnc_city_de_activate; + waitUntil {scriptDone _s}; }; -hint "saving...2"; +if (btc_debug) then {hint "saving...2";}; + //City status -_cities_status = []; +private _cities_status = []; { - //[151,false,false,true,false,false,[]] - private ["_city_status"]; - _city_status = []; - _city_status pushBack (_x getVariable "id"); + //[151,false,false,true,false,false,[]] + private _city_status = []; + _city_status pushBack (_x getVariable "id"); - //_city_status pushBack (_x getVariable "name"); + _city_status pushBack (_x getVariable "initialized"); - _city_status pushBack (_x getVariable "initialized"); + _city_status pushBack (_x getVariable "spawn_more"); + _city_status pushBack (_x getVariable "occupied"); - _city_status pushBack (_x getVariable "spawn_more"); - _city_status pushBack (_x getVariable "occupied"); + _city_status pushBack (_x getVariable "data_units"); - _city_status pushBack (_x getVariable "data_units"); + _city_status pushBack (_x getVariable ["has_ho", false]); + _city_status pushBack (_x getVariable ["ho_units_spawned", false]); + _city_status pushBack (_x getVariable ["ieds", []]); + _city_status pushBack (_x getVariable ["has_suicider", false]); - _city_status pushBack (_x getVariable ["has_ho",false]); - _city_status pushBack (_x getVariable ["ho_units_spawned",false]); - _city_status pushBack (_x getVariable ["ieds",[]]); - - _cities_status pushBack _city_status; - //diag_log format ["SAVE: %1 - %2",(_x getVariable "id"),(_x getVariable "occupied")]; + _cities_status pushBack _city_status; + if (btc_debug_log) then {diag_log format ["SAVE: %1 - %2", _x getVariable "id", _x getVariable "occupied"];}; } foreach btc_city_all; -profileNamespace setVariable [format ["btc_hm_%1_cities",_name],_cities_status]; +profileNamespace setVariable [format ["btc_hm_%1_cities", _name], _cities_status]; //HIDEOUT -_array_ho = []; +private _array_ho = []; { - private ["_data"]; - _data = []; - _data pushBack (getPos _x); - _data pushBack (_x getVariable ["id",0]); - _data pushBack (_x getVariable ["rinf_time",0]); - _data pushBack (_x getVariable ["cap_time",0]); - _data pushBack ((_x getVariable ["assigned_to",objNull]) getVariable "id"); - - private ["_ho_markers"]; - _ho_markers = []; - { - private ["_marker"]; - _marker = []; - _marker pushback (getMarkerPos _x); - _marker pushback (markerText _x); - _ho_markers pushback _marker; - } foreach (_x getVariable ["markers",[]]); - _data pushback _ho_markers; - diag_log format ["HO %1 DATA %2",_x,_data]; - _array_ho pushBack _data; + private _data = []; + _data pushBack (getPos _x); + _data pushBack (_x getVariable ["id", 0]); + _data pushBack (_x getVariable ["rinf_time", 0]); + _data pushBack (_x getVariable ["cap_time", 0]); + _data pushBack ((_x getVariable ["assigned_to", objNull]) getVariable "id"); + + private _ho_markers = []; + { + private _marker = []; + _marker pushback (getMarkerPos _x); + _marker pushback (markerText _x); + _ho_markers pushback _marker; + } foreach (_x getVariable ["markers", []]); + _data pushback _ho_markers; + if (btc_debug_log) then {diag_log format ["HO %1 DATA %2", _x, _data];}; + _array_ho pushBack _data; } foreach btc_hideouts; -profileNamespace setVariable [format ["btc_hm_%1_ho",_name],_array_ho]; +profileNamespace setVariable [format ["btc_hm_%1_ho", _name], _array_ho]; -profileNamespace setVariable [format ["btc_hm_%1_ho_sel",_name],btc_hq getVariable ["id",0]]; +profileNamespace setVariable [format ["btc_hm_%1_ho_sel", _name], btc_hq getVariable ["id",0]]; //CACHE -_array_cache = []; +private _array_cache = []; _array_cache pushback (getposATL btc_cache_obj); -_array_cache pushback (btc_cache_n); -_array_cache pushback (btc_cache_info); -_cache_markers = []; +_array_cache pushback btc_cache_n; +_array_cache pushback btc_cache_info; +private _cache_markers = []; { - private ["_data"]; - _data = []; - _data pushback (getMarkerPos _x); - _data pushback (markerText _x); - _cache_markers pushBack _data; + private _data = []; + _data pushback (getMarkerPos _x); + _data pushback (markerText _x); + _cache_markers pushBack _data; } foreach btc_cache_markers; -_array_cache pushback (_cache_markers); -profileNamespace setVariable [format ["btc_hm_%1_cache",_name],_array_cache]; +_array_cache pushback _cache_markers; +profileNamespace setVariable [format ["btc_hm_%1_cache", _name], _array_cache]; + +//REPUTATION +profileNamespace setVariable [format ["btc_hm_%1_rep", _name], btc_global_reputation]; -//rep status -profileNamespace setVariable [format ["btc_hm_%1_rep",_name],btc_global_reputation]; //FOBS -_fobs = [[],[]]; +private _fobs = [[], []]; { - private "_pos"; - _pos = getMarkerPos _x; - (_fobs select 0) pushBack [_x,_pos]; + private _pos = getMarkerPos _x; + (_fobs select 0) pushBack [_x, _pos]; } foreach (btc_fobs select 0); (_fobs select 1) append (btc_fobs select 1); -profileNamespace setVariable [format ["btc_hm_%1_fobs",_name],_fobs]; +profileNamespace setVariable [format ["btc_hm_%1_fobs", _name], _fobs]; //Vehicles status -_array_veh = []; +private _array_veh = []; { - private ["_data","_cargo","_cont"]; - _data = []; - _data pushBack (typeOf _x); - _data pushBack (getPosASL _x); - _data pushBack (getDir _x); - _data pushBack (fuel _x); - _data pushBack (getAllHitPointsDamage _x); - _cargo = []; - {_cargo pushBack [(typeOf _x),(_x getVariable ["ace_rearm_magazineClass",""]),[getWeaponCargo _x,getMagazineCargo _x,getItemCargo _x]]} foreach (_x getVariable ["cargo",[]]); - _data pushBack _cargo; - _cont = [getWeaponCargo _x,getMagazineCargo _x,getItemCargo _x]; - _data pushBack _cont; - _array_veh pushBack _data; - //diag_log format ["VEH %1 DATA %2",_x,_data]; + private _data = []; + _data pushBack (typeOf _x); + _data pushBack (getPosASL _x); + _data pushBack (getDir _x); + _data pushBack (fuel _x); + _data pushBack (getAllHitPointsDamage _x); + private _cargo = []; + {_cargo pushBack [typeOf _x, _x getVariable ["ace_rearm_magazineClass", ""], [getWeaponCargo _x,getMagazineCargo _x,getItemCargo _x]]} foreach (_x getVariable ["cargo", []]); + _data pushBack _cargo; + private _cont = [getWeaponCargo _x, getMagazineCargo _x, getItemCargo _x]; + _data pushBack _cont; + _data pushback ([_x] call BIS_fnc_getVehicleCustomization); + _array_veh pushBack _data; + if (btc_debug_log) then {diag_log format ["VEH %1 DATA %2", _x, _data]}; } foreach (btc_vehicles - [objNull]); -profileNamespace setVariable [format ["btc_hm_%1_vehs",_name],_array_veh]; +profileNamespace setVariable [format ["btc_hm_%1_vehs", _name], _array_veh]; //Objects status -_array_obj = []; +private _array_obj = []; { - if !(!isNil {_x getVariable "loaded"} || !Alive _x || isNull _x) then { - private ["_data","_cargo","_cont"]; - _data = []; - _data pushBack (typeOf _x); - _data pushBack (getPosASL _x); - _data pushBack (getDir _x); - _data pushBack (_x getVariable ["ace_rearm_magazineClass",""]); - _cargo = []; - {_cargo pushBack [(typeOf _x),(_x getVariable ["ace_rearm_magazineClass",""]),[getWeaponCargo _x,getMagazineCargo _x,getItemCargo _x]]} foreach (_x getVariable ["cargo",[]]); - _data pushBack _cargo; - _cont = [getWeaponCargo _x,getMagazineCargo _x,getItemCargo _x]; - _data pushBack _cont; - - _array_obj pushBack _data; - }; + private _data = [_x] call btc_fnc_db_saveObjectStatus; + if !(_data isEqualTo []) then { + _array_obj pushBack _data; + }; } foreach btc_log_obj_created; -profileNamespace setVariable [format ["btc_hm_%1_objs",_name],_array_obj]; +profileNamespace setVariable [format ["btc_hm_%1_objs", _name], _array_obj]; //Player Markers -private _player_markers = allMapMarkers select {(_x select [0,15]) isEqualTo "_USER_DEFINED #"}; -private _markers_properties = _player_markers apply {[markerText _x,markerPos _x,markerColor _x,markerType _x,markerSize _x, markerAlpha _x, markerBrush _x, markerDir _x, markerShape _x]}; -profileNamespace setVariable [format ["btc_hm_%1_markers",_name],_markers_properties]; +private _player_markers = allMapMarkers select {(_x select [0, 15]) isEqualTo "_USER_DEFINED #"}; +private _markers_properties = _player_markers apply {[markerText _x, markerPos _x, markerColor _x, markerType _x, markerSize _x, markerAlpha _x, markerBrush _x, markerDir _x, markerShape _x]}; +profileNamespace setVariable [format ["btc_hm_%1_markers", _name], _markers_properties]; -// -profileNamespace setVariable [format ["btc_hm_%1_db",_name],true]; +//End +profileNamespace setVariable [format ["btc_hm_%1_db", _name], true]; saveProfileNamespace; -hint "saving...3"; +if (btc_debug) then {hint "saving...3";}; [9] remoteExec ["btc_fnc_show_hint", 0]; -btc_db_is_saving = false; \ No newline at end of file +btc_db_is_saving = false; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/saveObjectStatus.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/saveObjectStatus.sqf new file mode 100644 index 000000000..75f321a03 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/db/saveObjectStatus.sqf @@ -0,0 +1,26 @@ + +params ["_object"]; + +private _data = []; + +if !(!isNil {_object getVariable "loaded"} || !Alive _object || isNull _object) then { + //select 0: Type + _data pushBack (typeOf _object); + //select 1: World Pos + _data pushBack (getPosWorld _object); + //select 2: Dir + _data pushBack (getDir _object); + //select 3: ACE rearm + _data pushBack (_object getVariable ["ace_rearm_magazineClass",""]); + //select 4: Cargo + private _cargo = []; + {_cargo pushBack [(typeOf _x),(_x getVariable ["ace_rearm_magazineClass",""]),[getWeaponCargo _x,getMagazineCargo _x,getItemCargo _x]]} foreach (_object getVariable ["cargo",[]]); + _data pushBack _cargo; + //select 5: Inventory + private _cont = [getWeaponCargo _object,getMagazineCargo _object,getItemCargo _object]; + _data pushBack _cont; + //select 6: Vector Pos (Dir and Up) + _data pushBack [vectorDir _object, vectorUp _object]; +}; + +_data diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/deaf/earplugs.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/deaf/earplugs.sqf deleted file mode 100644 index ddaea787c..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/deaf/earplugs.sqf +++ /dev/null @@ -1,29 +0,0 @@ -closeDialog 0; - -_hasEarplugs = player getVariable ["btc_hasEarplugs",false]; - -_show_img = -{ - _img = ""; - hintSilent parseText (_img + " "); - sleep 2; - hintSilent ""; -}; - -if (_hasEarplugs) then -{ - //Remove - player setVariable ["btc_hasEarplugs",false]; - 2 fadeSound 1; - hintSilent "Earplugs removed"; - //if (btc_wounds_mod) then {player addItem "BTC_w_earplugs";}; -} -else -{ - //Add - player setVariable ["btc_hasEarplugs",true]; - 2 fadeSound btc_earplugs_value; - hintSilent "Earplugs on"; - playSound "Click";sleep 0.5;playSound "Click";//Find better - //if (btc_wounds_mod) then {player removeItem "BTC_w_earplugs";}; -}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/deaf/fired_near.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/deaf/fired_near.sqf deleted file mode 100644 index d94d3720a..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/deaf/fired_near.sqf +++ /dev/null @@ -1,40 +0,0 @@ - -private ["_hearer","_shooter","_distance","_weapon","_max_distance","_ammo","_caliber","_audible_fire","_initSpeed","_deafness","_magazine"]; - -_hearer = _this select 0; -_shooter = _this select 1; -_distance = _this select 2; -_weapon = _this select 3; - -_max_distance = 5; - -if (_weapon == "Throw") exitWith {}; - -if (player != _hearer || {_distance > _max_distance}) exitWith {}; -if (player getVariable ["btc_hasEarplugs",false]) exitWith {}; - -_magazine = (getArray(configFile >> "CfgWeapons" >> _weapon >> "magazines")) select 0;_magazine = (getArray(configFile >> "CfgWeapons" >> _weapon >> "magazines")) select 0; - -_ammo = getText(configFile >> "CfgMagazines" >> _magazine >> "ammo"); -_caliber = getNumber(configFile >> "CfgAmmo" >> _ammo >> "caliber"); -_audible_fire = getNumber(configFile >> "CfgAmmo" >> _ammo >> "audibleFire"); -_initSpeed = getNumber(configFile >> "CfgMagazines" >> _magazine >> "initSpeed"); - -if (_audible_fire < 6) exitWith {}; -if (_initSpeed < 500 && {_audible_fire < 10}) exitWith {}; - -if (_distance < 1) then {_distance = 1;}; - -_deafness = (_audible_fire/btc_deaf_ratio) * (0.8/_distance); - -if (_audible_fire >= 10) then {_deafness = _deafness + (_audible_fire / 4)}; - -if (_caliber < 1.6) then {_deafness = _deafness / 5}; - -player setVariable ["btc_deafness",(player getVariable "btc_deafness") + _deafness]; - -if (!(player getVariable ["btc_isDeaf",false]) && {_audible_fire >= 10}) then -{ - playSound "combat_deafness"; -}; - diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/deaf/loop.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/deaf/loop.sqf deleted file mode 100644 index 2c74b673f..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/deaf/loop.sqf +++ /dev/null @@ -1,74 +0,0 @@ - -#define _isDeaf player getVariable ["btc_isDeaf",false] -#define _ring "combat_deafness" - -btc_deaf_isRinging = false; -_limit_deaf_value = (btc_deaf_value + 15); -_old_value = 0; -_deaf_min_time = 20; -_recover_ratio = 0.15; -_can_recover_from_deaf = true; - -player setVariable ["btc_deafness",0]; - -_recover_sound = -{ - player setVariable ["btc_isDeaf",false];player setVariable ["tf_globalVolume", 1];if (player getVariable ["btc_hasEarplugs",false]) then {4 fadeSound btc_earplugs_value;} else {4 fadeSound 1;}; -}; - -_play_sound = -{ - btc_deaf_isRinging = true; - //playSound [_ring, true]; - playSound _ring; - sleep 15; - btc_deaf_isRinging = false; -}; - -_min_deaf_time = -{ - _can_recover_from_deaf = false; - sleep _deaf_min_time; - _can_recover_from_deaf = true; -}; - -while {true} do -{ - private "_deafness"; - _deafness = player getVariable ["btc_deafness",0]; - if (_deafness > _limit_deaf_value) then {_deafness = _limit_deaf_value;player setVariable ["btc_deafness",_limit_deaf_value];}; - - if (_isDeaf) then - { - 0 fadeSound 0; - if (_deafness < btc_deaf_value) then {[] call _recover_sound;}; - } - else - { - if (_deafness > btc_deaf_value) then - { - player setVariable ["btc_isDeaf",true]; - 0 fadeSound 0; - [] spawn _play_sound; - player setVariable ["tf_globalVolume", 0]; - }; - }; - //is ringing? old value -> new value = sta aumentando o scendendo - if (!btc_deaf_isRinging && {_deafness > btc_deaf_ring} && {_deafness > _old_value}) then {[] spawn _play_sound;}; - if (!btc_deaf_isRinging && {_deafness <= _old_value} && {_can_recover_from_deaf} && {_deafness > 0}) then {player setVariable ["btc_deafness",(_deafness - _recover_ratio)];}; - _old_value = _deafness; - - sleep 0.1; -}; - -/* - Debug - [] spawn - { - while {true} do - { - hintSilent format ["Deaf: %1; Value: %2; Ring: %3",player getVariable ["btc_isDeaf",false],player getVariable ["btc_deafness",0],btc_deaf_isRinging]; - sleep 0.01; - }; - }; -*/ \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/CuratorObjectPlaced.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/CuratorObjectPlaced.sqf index 6f8e7706f..854549e29 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/CuratorObjectPlaced.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/CuratorObjectPlaced.sqf @@ -1,24 +1,24 @@ /* - curator,object + curator,object */ if !(((_this select 1) isKindOf "AllVehicles") || ((_this select 1) isKindOf "Module_F")) then { - [(_this select 1)] remoteExec ["btc_fnc_log_CuratorObjectPlaced_s",2]; + [(_this select 1)] remoteExec ["btc_fnc_log_CuratorObjectPlaced_s",2]; - if (btc_debug_log) then {diag_log format ["CURATOR OBJECT %1",(_this select 1)];}; - if (btc_debug) then {hint str(_this select 1);}; + if (btc_debug_log) then {diag_log format ["CURATOR OBJECT %1",(_this select 1)];}; + if (btc_debug) then {hint str(_this select 1);}; }; if ((_this select 1) isKindOf "Man") then { - if (side (_this select 1) == btc_enemy_side) then { - [(_this select 1)] remoteExec ["btc_fnc_mil_CuratorMilPlaced_s",2]; - }; + if (side (_this select 1) == btc_enemy_side) then { + [(_this select 1)] remoteExec ["btc_fnc_mil_CuratorMilPlaced_s",2]; + }; - if (side (_this select 1) == civilian) then { - [(_this select 1)] remoteExec ["btc_fnc_civ_CuratorCivPlaced_s",2]; - }; + if (side (_this select 1) == civilian) then { + [(_this select 1)] remoteExec ["btc_fnc_civ_CuratorCivPlaced_s",2]; + }; - if (btc_debug_log) then {diag_log format ["CURATOR MAN %1",(_this select 1)];}; - if (btc_debug) then {hint str (_this select 1);}; + if (btc_debug_log) then {diag_log format ["CURATOR MAN %1",(_this select 1)];}; + if (btc_debug) then {hint str (_this select 1);}; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/buildingchanged.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/buildingchanged.sqf index 8f561e976..b87e4b1c2 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/buildingchanged.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/buildingchanged.sqf @@ -9,23 +9,23 @@ if ((getObjectType _from != 1) && !(_from in btc_buildings_changed)) exitWith {} btc_buildings_changed pushBack _to; { - if (_classname find (toUpper (_x select 0)) != -1) exitWith { - _malus = _malus * (_x select 1); - _skipCategories = true; - }; + if (_classname find (toUpper (_x select 0)) != -1) exitWith { + _malus = _malus * (_x select 1); + _skipCategories = true; + }; } forEach btc_buildings_multipliers; if (!_skipCategories) then { - { - if (_classname find (toUpper (_x select 0)) != -1) then { - _malus = _malus * (_x select 1); - }; - } forEach btc_buildings_categories_multipliers; + { + if (_classname find (toUpper (_x select 0)) != -1) then { + _malus = _malus * (_x select 1); + }; + } forEach btc_buildings_categories_multipliers; }; if (btc_debug) then { - systemChat format [ "BuildingChanged: %1 to %2. Malus: %3", - typeOf _from, typeOf _to, _malus ]; + systemChat format [ "BuildingChanged: %1 to %2. Malus: %3", + typeOf _from, typeOf _to, _malus ]; }; _malus call btc_fnc_rep_change; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/explosives_defuse.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/explosives_defuse.sqf index 492ba44a4..16cd5665b 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/explosives_defuse.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/explosives_defuse.sqf @@ -2,5 +2,5 @@ params ["_ied", "_unit"]; private _type_ied = typeOf _ied; if ((_type_ied select [0, _type_ied find "_"]) in (btc_type_ieds_ace apply {_x select [0, _x find "_"]})) then { - btc_rep_bonus_disarm call btc_fnc_rep_change; + btc_rep_bonus_disarm call btc_fnc_rep_change; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/extended_InitPost_EH.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/extended_InitPost_EH.hpp index 2eda0ca7c..b1100a3f0 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/extended_InitPost_EH.hpp +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/extended_InitPost_EH.hpp @@ -14,9 +14,9 @@ class Extended_InitPost_EventHandlers { init = "[typeof (_this select 0)] call btc_fnc_eh_veh_init"; }; }; - /*class CAManBase { - class btc_actions { - init = "_this call btc_fnc_eh_unit_init"; - }; - };*/ -}; \ No newline at end of file + /*class CAManBase { + class btc_actions { + init = "_this call btc_fnc_eh_unit_init"; + }; + };*/ +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/extended_PreInit_EH.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/extended_PreInit_EH.hpp index 6724bc811..102b63615 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/extended_PreInit_EH.hpp +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/extended_PreInit_EH.hpp @@ -1,5 +1,5 @@ class Extended_PreInit_EventHandlers { class btc_hearts_and_minds { - init = "call compile preprocessFile 'core\def\mission.sqf';call compile preprocessFile 'core\fnc\compile.sqf';"; + init = "call compile preprocessFile 'core\fnc\compile.sqf';"; }; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/handledisconnect.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/handledisconnect.sqf index bbccafb1d..6436414db 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/handledisconnect.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/handledisconnect.sqf @@ -1,5 +1,5 @@ -if ((_this select 0) in (entities "HeadlessClient_F")) then { - //Remove HC player when disconnect - deleteVehicle (_this select 0); +if ((_this select 0) in (entities "HeadlessClient_F")) then { + //Remove HC player when disconnect + deleteVehicle (_this select 0); }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/helo_respawn.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/helo_respawn.sqf deleted file mode 100644 index 113d2bec6..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/helo_respawn.sqf +++ /dev/null @@ -1,9 +0,0 @@ - -private "_veh"; - -(_this select 0) spawn {sleep 30;deleteVehicle _this;}; - -_veh = btc_helo_type createVehicle btc_helo_pos; -_veh setDir btc_helo_dir; -_veh setPos btc_helo_pos; -_veh spawn btc_fnc_veh_track_marker; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/leaflets.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/leaflets.sqf new file mode 100644 index 000000000..c4e4ce1eb --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/leaflets.sqf @@ -0,0 +1,10 @@ + +params ["_uav","_weapon"]; + +if (btc_debug) then { + systemChat format ["UAV: %1 fired with %2", typeOf _uav, _weapon]; +}; + +if (_weapon isEqualTo "Bomb_Leaflets") then { + [getPos _uav] remoteExec ["btc_fnc_civ_evacuate", 2]; +}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/suicider.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/suicider.sqf new file mode 100644 index 000000000..878d167b8 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/suicider.sqf @@ -0,0 +1,12 @@ + +params ["_id"]; + +if (btc_debug) then { + systemChat format ["btc_eh_suicider: Suicider killed in city %1", _id]; +}; +if (btc_debug_log) then { + diag_log format ["btc_eh_suicider: Suicider killed in city %1", _id]; +}; + +private _city = btc_city_all select _id; +_city setVariable ["has_suicider", false]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/treatment.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/treatment.sqf index 7ad51d4aa..e1208740f 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/treatment.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/treatment.sqf @@ -1,5 +1,5 @@ if (isPlayer (_this select 1)) exitWith {}; if ((Alive (_this select 1)) && (side (_this select 1) isEqualTo civilian) && !((_this select 3) isEqualTo "Diagnose")) then { - _this remoteExec ["btc_fnc_rep_hh",2]; + _this remoteExec ["btc_fnc_rep_hh",2]; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/unit_init.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/unit_init.sqf index 83556acae..8adaf5077 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/unit_init.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/unit_init.sqf @@ -8,41 +8,41 @@ _type = typeOf _unit; diag_log format ["UNIT INIT : %1",[_this,side (_this select 0), _type]]; switch true do { - case (side _unit != west && side _unit != civilian) : { - - if (isServer) then {_unit call btc_fnc_mil_unit_create;}; - - if (!isDedicated) then { - if (isNil "btc_actions_units") then {btc_actions_units = [];}; - if !(_type in btc_actions_units) then { - btc_actions_units pushBack _type; - - _action = ["Search_intel", "Search for intel", "\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.pa", {(_this select 0) spawn btc_fnc_info_search_for_intel;}, {!Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; - }; - }; - }; - case (side _unit isEqualTo civilian) : { - - if (isServer) then {_unit call btc_fnc_civ_unit_create;}; - - if (!isDedicated) then { - if (isNil "btc_actions_units") then {btc_actions_units = [];}; - if !(_type in btc_actions_units) then { - btc_actions_units pushBack _type; - - sleep 1; - _action = ["Civil_Orders","Civil Orders","\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa",{},{true}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["Civil_Stop", "Stop", "", {[1,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["Civil_Get_down", "Get down", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[2,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["Civil_Go_away", "Go away", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[3,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["Ask_Info", "Ask info", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[(_this select 0), false] spawn btc_fnc_info_ask;}, {Alive (_this select 0) && {side (_this select 0) isEqualTo civilian}}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; - }; - }; - }; + case (side _unit != west && side _unit != civilian) : { + + if (isServer) then {_unit call btc_fnc_mil_unit_create;}; + + if (!isDedicated) then { + if (isNil "btc_actions_units") then {btc_actions_units = [];}; + if !(_type in btc_actions_units) then { + btc_actions_units pushBack _type; + + _action = ["Search_intel", "Search for intel", "\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.pa", {(_this select 0) spawn btc_fnc_info_search_for_intel;}, {!Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; + [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; + }; + }; + }; + case (side _unit isEqualTo civilian) : { + + if (isServer) then {_unit call btc_fnc_civ_unit_create;}; + + if (!isDedicated) then { + if (isNil "btc_actions_units") then {btc_actions_units = [];}; + if !(_type in btc_actions_units) then { + btc_actions_units pushBack _type; + + sleep 1; + _action = ["Civil_Orders","Civil Orders","\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa",{},{true}] call ace_interact_menu_fnc_createAction; + [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["Civil_Stop", "Stop", "", {[1,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; + [_type, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["Civil_Get_down", "Get down", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[2,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; + [_type, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["Civil_Go_away", "Go away", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[3,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; + [_type, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["Ask_Info", "Ask info", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[(_this select 0), false] spawn btc_fnc_info_ask;}, {Alive (_this select 0) && {side (_this select 0) isEqualTo civilian}}] call ace_interact_menu_fnc_createAction; + [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; + }; + }; + }; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_add_respawn.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_add_respawn.sqf index da86b3808..2c86a68e6 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_add_respawn.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_add_respawn.sqf @@ -12,13 +12,3 @@ _vehicle setVariable ["data_respawn",[_type,_pos,_dir,_time,_has_marker]]; if ((isNumber (configfile >> "CfgVehicles" >> typeof _vehicle >> "ace_fastroping_enabled")) && !(typeof _vehicle isEqualTo "RHS_UH1Y_d")) then {[_vehicle] call ace_fastroping_fnc_equipFRIES}; _vehicle addMPEventHandler ["MPKilled", {if (isServer) then {_this call btc_fnc_eh_veh_respawn};}]; -/* -waitUntil {sleep 10; (!Alive _vehicle)}; - -sleep _time; -deleteVehicle _vehicle; - -_veh = _type createVehicle _pos; -_veh setDir _dir; -_veh setPos _pos; -if (_has_marker) then {_veh spawn btc_fnc_veh_track_marker;};*/ \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_init.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_init.sqf index a5149a8c7..e9f5fda42 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_init.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_init.sqf @@ -4,60 +4,60 @@ if (isNil "btc_actions_veh") then {btc_actions_veh = [];}; if ((btc_actions_veh pushBackUnique _type) isEqualTo -1) exitWith {}; switch true do { - case (_type isKindOf "StaticWeapon"): { - private ["_action"]; - _action = ["Logistic","Logistic","\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa",{},{true}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["log_tow", "Tow", "\z\ace\addons\attach\UI\attach_ca.paa", {(_this select 0) spawn btc_fnc_log_tow;}, {!isNull btc_log_vehicle_selected && {btc_log_vehicle_selected != (_this select 0)} && {[(_this select 0),btc_log_vehicle_selected] call btc_fnc_log_can_tow}}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["log_hook", "Hook", "\z\ace\addons\attach\UI\attach_ca.paa", {(_this select 0) spawn btc_fnc_log_hook;}, {true}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["log_hook", "Unhook", "\z\ace\addons\attach\UI\detach_ca.paa", {(_this select 0) spawn btc_fnc_log_unhook;}, {true}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; - }; - case (_type isKindOf "LandVehicle") : { - private ["_action"]; - _action = ["Logistic","Logistic","\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa",{},{true}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["log_tow", "Tow", "\z\ace\addons\attach\UI\attach_ca.paa", {(_this select 0) spawn btc_fnc_log_tow;}, {!isNull btc_log_vehicle_selected && {btc_log_vehicle_selected != (_this select 0)} && {[(_this select 0),btc_log_vehicle_selected] call btc_fnc_log_can_tow}}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["log_hook", "Hook", "\z\ace\addons\attach\UI\attach_ca.paa", {(_this select 0) spawn btc_fnc_log_hook;}, {true}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["log_hook", "Unhook", "\z\ace\addons\attach\UI\detach_ca.paa", {(_this select 0) spawn btc_fnc_log_unhook;}, {true}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; - //Cargo - _action = ["check_cargo", "Check Cargo", "\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa", {(_this select 0) spawn btc_fnc_log_check_cargo;}, {true}] call ace_interact_menu_fnc_createAction; - //Outside Vehicle - [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; - //Inside Vehicle - [_type, 1, ["ACE_SelfActions"], _action,true] call ace_interact_menu_fnc_addActionToClass; - _action = ["Load_selected", "Load selected", "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa", {(_this select 0) spawn btc_fnc_log_load;}, {!isNull btc_log_object_selected && {btc_log_object_selected distance (_this select 0) <= btc_log_max_distance_load}}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; - }; - case (_type isKindOf "Helicopter") : { - private ["_action"]; - _action = ["Logistic","Logistic","\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa",{},{true}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; - //Cargo - _action = ["check_cargo", "Check Cargo", "\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa", {(_this select 0) spawn btc_fnc_log_check_cargo;}, {true}] call ace_interact_menu_fnc_createAction; - //Outside Vehicle - [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; - //Inside Vehicle - [_type, 1, ["ACE_SelfActions"], _action,true] call ace_interact_menu_fnc_addActionToClass; - _action = ["Load_selected", "Load selected", "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa", {(_this select 0) spawn btc_fnc_log_load;}, {!isNull btc_log_object_selected && {btc_log_object_selected distance (_this select 0) <= btc_log_max_distance_load}}] call ace_interact_menu_fnc_createAction; - [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; - //Lift - _action = ["Deploy_ropes","Deploy ropes","\A3\Structures_F_Heli\VR\Helpers\Data\VR_Symbol_Heli_Slingloading_CA.paa",{[] spawn btc_fnc_log_lift_deploy_ropes;},{!btc_ropes_deployed && {((driver vehicle player) isEqualTo player)} && {(getposATL player) select 2 > 4}}] call ace_interact_menu_fnc_createAction; - [_type, 1, ["ACE_SelfActions"], _action,true] call ace_interact_menu_fnc_addActionToClass; - _action = ["Cut_ropes","Cut ropes","\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa",{[] spawn btc_fnc_log_lift_destroy_ropes;},{btc_ropes_deployed && {((driver vehicle player) isEqualTo player)}}] call ace_interact_menu_fnc_createAction; - [_type, 1, ["ACE_SelfActions"], _action,true] call ace_interact_menu_fnc_addActionToClass; - }; - case (_type isKindOf "Ship") : { - private ["_action"]; - //Lift - _action = ["Deploy_ropes","Deploy ropes","\A3\Structures_F_Heli\VR\Helpers\Data\VR_Symbol_Heli_Slingloading_CA.paa",{[] spawn btc_fnc_log_lift_deploy_ropes;},{!btc_ropes_deployed && {((driver vehicle player) isEqualTo player)}}] call ace_interact_menu_fnc_createAction; - [_type, 1, ["ACE_SelfActions"], _action,true] call ace_interact_menu_fnc_addActionToClass; - _action = ["Cut_ropes","Cut ropes","\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa",{[] spawn btc_fnc_log_lift_destroy_ropes;},{btc_ropes_deployed && {((driver vehicle player) isEqualTo player)}}] call ace_interact_menu_fnc_createAction; - [_type, 1, ["ACE_SelfActions"], _action,true] call ace_interact_menu_fnc_addActionToClass; - }; -}; \ No newline at end of file + case (_type isKindOf "StaticWeapon"): { + private ["_action"]; + _action = ["Logistic",(localize "STR_BTC_HAM_ACTION_LOC_MAIN"),"\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa",{},{true}] call ace_interact_menu_fnc_createAction; //Logistic + [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["log_tow", (localize "STR_BTC_HAM_ACTION_VEHINIT_TOW"), "\z\ace\addons\attach\UI\attach_ca.paa", {(_this select 0) spawn btc_fnc_log_tow;}, {!isNull btc_log_vehicle_selected && {btc_log_vehicle_selected != (_this select 0)} && {[(_this select 0),btc_log_vehicle_selected] call btc_fnc_log_can_tow}}] call ace_interact_menu_fnc_createAction; //Tow + [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["log_hook", (localize "STR_BTC_HAM_ACTION_VEHINIT_HOOK"), "\z\ace\addons\attach\UI\attach_ca.paa", {(_this select 0) spawn btc_fnc_log_hook;}, {true}] call ace_interact_menu_fnc_createAction; //Hook + [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["log_hook", (localize "STR_BTC_HAM_ACTION_VEHINIT_UHOOK"), "\z\ace\addons\attach\UI\detach_ca.paa", {(_this select 0) spawn btc_fnc_log_unhook;}, {true}] call ace_interact_menu_fnc_createAction; //Unhook + [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; + }; + case (_type isKindOf "LandVehicle") : { + private ["_action"]; + _action = ["Logistic",(localize "STR_BTC_HAM_ACTION_LOC_MAIN"),"\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa",{},{true}] call ace_interact_menu_fnc_createAction; //Logistic + [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["log_tow", (localize "STR_BTC_HAM_ACTION_VEHINIT_TOW"), "\z\ace\addons\attach\UI\attach_ca.paa", {(_this select 0) spawn btc_fnc_log_tow;}, {!isNull btc_log_vehicle_selected && {btc_log_vehicle_selected != (_this select 0)} && {[(_this select 0),btc_log_vehicle_selected] call btc_fnc_log_can_tow}}] call ace_interact_menu_fnc_createAction; //Tow + [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["log_hook", (localize "STR_BTC_HAM_ACTION_VEHINIT_HOOK"), "\z\ace\addons\attach\UI\attach_ca.paa", {(_this select 0) spawn btc_fnc_log_hook;}, {true}] call ace_interact_menu_fnc_createAction; //Hook + [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["log_hook", (localize "STR_BTC_HAM_ACTION_VEHINIT_UHOOK"), "\z\ace\addons\attach\UI\detach_ca.paa", {(_this select 0) spawn btc_fnc_log_unhook;}, {true}] call ace_interact_menu_fnc_createAction; //Unhook + [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; + //Cargo + _action = ["check_cargo", (localize "STR_BTC_HAM_ACTION_LOGISTIC_CHECKCARGO"), "\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa", {(_this select 0) spawn btc_fnc_log_check_cargo;}, {true}] call ace_interact_menu_fnc_createAction; //Check Cargo + //Outside Vehicle + [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; //Logistic + //Inside Vehicle + [_type, 1, ["ACE_SelfActions"], _action,true] call ace_interact_menu_fnc_addActionToClass; + _action = ["Load_selected", (localize "STR_BTC_HAM_ACTION_LOGISTIC_LOADSEL"), "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa", {(_this select 0) spawn btc_fnc_log_load;}, {!isNull btc_log_object_selected && {btc_log_object_selected distance (_this select 0) <= btc_log_max_distance_load}}] call ace_interact_menu_fnc_createAction; //Load selected + [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; //Logistic + }; + case (_type isKindOf "Helicopter") : { + private ["_action"]; + _action = ["Logistic",(localize "STR_BTC_HAM_ACTION_LOC_MAIN"),"\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa",{},{true}] call ace_interact_menu_fnc_createAction; //Logistic + [_type, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; + //Cargo + _action = ["check_cargo", (localize "STR_BTC_HAM_ACTION_LOGISTIC_CHECKCARGO"), "\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa", {(_this select 0) spawn btc_fnc_log_check_cargo;}, {true}] call ace_interact_menu_fnc_createAction; //Check Cargo + //Outside Vehicle + [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; //Logistic + //Inside Vehicle + [_type, 1, ["ACE_SelfActions"], _action,true] call ace_interact_menu_fnc_addActionToClass; + _action = ["Load_selected", (localize "STR_BTC_HAM_ACTION_LOGISTIC_LOADSEL"), "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa", {(_this select 0) spawn btc_fnc_log_load;}, {!isNull btc_log_object_selected && {btc_log_object_selected distance (_this select 0) <= btc_log_max_distance_load}}] call ace_interact_menu_fnc_createAction; //Load selected + [_type, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; //Logistic + //Lift + _action = ["Deploy_ropes",(localize "STR_BTC_HAM_ACTION_VEHINIT_DEPLOYROPES"),"\A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa",{[] spawn btc_fnc_log_lift_deploy_ropes;},{!btc_ropes_deployed && {((driver vehicle player) isEqualTo player)} && {(getposATL player) select 2 > 4}}] call ace_interact_menu_fnc_createAction; //Deploy ropes + [_type, 1, ["ACE_SelfActions"], _action,true] call ace_interact_menu_fnc_addActionToClass; + _action = ["Cut_ropes",(localize "STR_BTC_HAM_ACTION_VEHINIT_CUTROPES"),"\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa",{[] spawn btc_fnc_log_lift_destroy_ropes;},{btc_ropes_deployed && {((driver vehicle player) isEqualTo player)}}] call ace_interact_menu_fnc_createAction; //Cut ropes + [_type, 1, ["ACE_SelfActions"], _action,true] call ace_interact_menu_fnc_addActionToClass; + }; + case (_type isKindOf "Ship") : { + private ["_action"]; + //Lift + _action = ["Deploy_ropes",(localize "STR_BTC_HAM_ACTION_VEHINIT_DEPLOYROPES"),"\A3\Structures_F_Heli\VR\Helpers\Data\VR_Symbol_Heli_Slingloading_CA.paa",{[] spawn btc_fnc_log_lift_deploy_ropes;},{!btc_ropes_deployed && {((driver vehicle player) isEqualTo player)}}] call ace_interact_menu_fnc_createAction; //Deploy ropes + [_type, 1, ["ACE_SelfActions"], _action,true] call ace_interact_menu_fnc_addActionToClass; + _action = ["Cut_ropes",(localize "STR_BTC_HAM_ACTION_VEHINIT_CUTROPES"),"\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa",{[] spawn btc_fnc_log_lift_destroy_ropes;},{btc_ropes_deployed && {((driver vehicle player) isEqualTo player)}}] call ace_interact_menu_fnc_createAction; //Cut ropes + [_type, 1, ["ACE_SelfActions"], _action,true] call ace_interact_menu_fnc_addActionToClass; + }; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_killed.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_killed.sqf index a94bd16b4..b45393ad6 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_killed.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_killed.sqf @@ -6,8 +6,8 @@ _vehicle = _this select 0; _marker = createmarker [format ["m_%1",_vehicle],getPos _vehicle]; _marker setMarkerType "mil_box"; _marker setMarkerColor "ColorRed"; -_marker setMarkerText format ["%1 wreck",getText (configFile >> "cfgVehicles" >> typeof _vehicle >> "displayName")]; +[_marker,"STR_BTC_HAM_O_EH_VEHKILLED_MRK",(getText (configFile >> "cfgVehicles" >> typeof _vehicle >> "displayName"))] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker]; // %1 wreck _vehicle setVariable ["marker",_marker]; -if (isServer) then {btc_rep_malus_veh_killed spawn btc_fnc_rep_change} else {btc_rep_malus_veh_killed remoteExec ["btc_fnc_rep_change", 2];}; \ No newline at end of file +if (isServer) then {btc_rep_malus_veh_killed spawn btc_fnc_rep_change} else {btc_rep_malus_veh_killed remoteExec ["btc_fnc_rep_change", 2];}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_respawn.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_respawn.sqf index 8b843fe4d..84e33f9dc 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_respawn.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/eh/veh_respawn.sqf @@ -5,14 +5,13 @@ _vehicle = _this select 0; _data = _vehicle getVariable ["data_respawn",[]]; [_vehicle,_data] spawn { - params ["_vehicle","_data"]; - private _time = (_data select 3); - sleep _time; - deleteVehicle _vehicle; - sleep 1; - private _veh = (_data select 0) createVehicle (_data select 1); - _veh setDir (_data select 2); - _veh setPosASL (_data select 1); - [_veh,_time,(_data select 4)] spawn btc_fnc_eh_veh_add_respawn; - if (_data select 4) then {_veh spawn btc_fnc_veh_track_marker;}; + params ["_vehicle","_data"]; + private _time = (_data select 3); + sleep _time; + deleteVehicle _vehicle; + sleep 1; + private _veh = (_data select 0) createVehicle (_data select 1); + _veh setDir (_data select 2); + _veh setPosASL (_data select 1); + [_veh,_time,(_data select 4)] spawn btc_fnc_eh_veh_add_respawn; }; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create.sqf index d55de6b27..a1ee69cdd 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create.sqf @@ -1,12 +1,15 @@ private ["_mat","_name","_array_markers","_name_to_check"]; -if (count ((position _this) isflatempty [1,0,0.9,1,0,false,_this]) == 0) exitWith {hint "Area is not flat enough!"}; +// "Area is not flat enough!" +if (count ((position _this) isflatempty [1,0,0.9,1,0,false,_this]) == 0) exitWith {hint (localize "STR_BTC_HAM_O_FOB_CREATE_H_AREA");}; -if (_this distance (getMarkerPos "btc_base") < 2000) exitWith {hint "Too close at the main base!"}; +//"Too close at the main base!" +if (_this distance (getMarkerPos "btc_base") < 2000) exitWith {hint (localize "STR_BTC_HAM_O_FOB_CREATE_H_DBASE");}; +//"Clear the area before mounting the FOB, %1" if ({!(_x isKindOf "ace_fastroping_helper")} count (nearestObjects [position _this, ["LandVehicle","Air"], 10]) > 0) exitWith { - hint format ["Clear the area before mounting the FOB, %1", (nearestObjects [position _this, ["LandVehicle","Air"], 10]) apply {typeof _x}] + hint format [(localize "STR_BTC_HAM_O_FOB_CREATE_H_CAREA"), (nearestObjects [position _this, ["LandVehicle","Air"], 10]) apply {typeof _x}] }; closeDialog 0; @@ -21,11 +24,18 @@ waitUntil {dialog}; while {!btc_fob_dlg} do { - if !(dialog) then {hint "Do not close the dialog with esc";createDialog "btc_fob_create";}; - sleep 0.1; + if !(dialog) then { + hint (localize "STR_BTC_HAM_O_FOB_CREATE_H_ESC"); //"Do not close the dialog with esc" + createDialog "btc_fob_create"; + }; + sleep 0.1; }; -if (ctrlText 777 == "") exitWith {closeDialog 0;hint "Name your FOB!";_mat spawn btc_fnc_fob_create;}; +if (ctrlText 777 == "") exitWith { + closeDialog 0; + hint (localize "STR_BTC_HAM_O_FOB_CREATE_H_NAME"); // "Name your FOB!" + _mat spawn btc_fnc_fob_create; +}; _name = ctrlText 777; @@ -33,10 +43,14 @@ _name_to_check = ("FOB " + (toUpper(_name))); _array_markers = []; {private "_n";_n = toUpper(_x);_array_markers pushBack _n;} foreach allMapMarkers; -if (_array_markers find _name_to_check >= 0) exitWith {closeDialog 0;hint "Name already in use!";_mat spawn btc_fnc_fob_create;}; +if (_array_markers find _name_to_check >= 0) exitWith { + closeDialog 0; + hint (localize "STR_BTC_HAM_O_FOB_CREATE_H_NAMENOTA"); //"Name already in use!" + _mat spawn btc_fnc_fob_create; +}; -hint "Get back! Mounting FOB"; +hint (localize "STR_BTC_HAM_O_FOB_CREATE_H_WIP");//"Get back! Mounting FOB" closeDialog 0; -[_mat,_name] remoteExec ["btc_fnc_fob_create_s", 2]; \ No newline at end of file +[_mat,_name] remoteExec ["btc_fnc_fob_create_s", 2]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create_s.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create_s.sqf index e59b02f46..a3bb278fd 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create_s.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/create_s.sqf @@ -12,9 +12,9 @@ _flag = createVehicle [btc_fob_flag, _pos, [], 0, "NONE"]; _h = - 10; while {_h < 0} do { - _h = _h + 0.1; - _struc setpos [_pos select 0,_pos select 1,_h]; - sleep 0.1; + _h = _h + 0.1; + _struc setpos [_pos select 0,_pos select 1,_h]; + sleep 0.1; }; {_x setpos _pos} foreach [_flag,_struc]; @@ -32,22 +32,22 @@ _flag setVariable ["btc_fob",("FOB " + _name)]; /* //_flag setVariable ["BTC_mobile_west",format ["FOB_%1",BTC_fob_id],true]; - BTC_fob_placed = BTC_fob_placed + [_flag];publicVariable "BTC_fob_placed";//Till nearestObjects will work again - BTC_vehs_mobile_west_str = BTC_vehs_mobile_west_str + [format ["FOB_%1",BTC_fob_id]]; - BTC_fob_id = BTC_fob_id + 1;publicVariable "BTC_fob_id";publicVariable "BTC_vehs_mobile_west_str"; - _flag setvariable ["BTC_cannot_lift",1,true]; - _flag setVariable ["BTC_cannot_drag",1,true]; - _flag setVariable ["BTC_cannot_load",1,true]; - _flag setVariable ["BTC_cannot_place",1,true]; - _marker = createmarker [(_flag getVariable "BTC_mobile_west"), getPos _flag]; - (_flag getVariable "BTC_mobile_west") setMarkerSize [0.5,0.5]; - (_flag getVariable "BTC_mobile_west") setMarkerType "hd_flag"; - (_flag getVariable "BTC_mobile_west") setMarkerText (_flag getVariable "BTC_mobile_west"); - (_flag getVariable "BTC_mobile_west") setMarkerColor "ColorBlue"; - (_flag getVariable "BTC_mobile_west") setMarkerShape "ICON"; - BTC_m_PVEH = [1,_flag];publicVariable "BTC_m_PVEH"; - _flag addAction [("") + ("Dismantle FOB") + "","=BTC=_revive\=BTC=_addAction.sqf",[[_flag],BTC_dismantle_fob], 8, true, true, "", "true"]; - hint "FOB assembled!"; - - #define east_pack "Land_Pod_Heli_Transport_04_box_F" + BTC_fob_placed = BTC_fob_placed + [_flag];publicVariable "BTC_fob_placed";//Till nearestObjects will work again + BTC_vehs_mobile_west_str = BTC_vehs_mobile_west_str + [format ["FOB_%1",BTC_fob_id]]; + BTC_fob_id = BTC_fob_id + 1;publicVariable "BTC_fob_id";publicVariable "BTC_vehs_mobile_west_str"; + _flag setvariable ["BTC_cannot_lift",1,true]; + _flag setVariable ["BTC_cannot_drag",1,true]; + _flag setVariable ["BTC_cannot_load",1,true]; + _flag setVariable ["BTC_cannot_place",1,true]; + _marker = createmarker [(_flag getVariable "BTC_mobile_west"), getPos _flag]; + (_flag getVariable "BTC_mobile_west") setMarkerSize [0.5,0.5]; + (_flag getVariable "BTC_mobile_west") setMarkerType "hd_flag"; + (_flag getVariable "BTC_mobile_west") setMarkerText (_flag getVariable "BTC_mobile_west"); + (_flag getVariable "BTC_mobile_west") setMarkerColor "ColorBlue"; + (_flag getVariable "BTC_mobile_west") setMarkerShape "ICON"; + BTC_m_PVEH = [1,_flag];publicVariable "BTC_m_PVEH"; + _flag addAction [("") + ("Dismantle FOB") + "","=BTC=_revive\=BTC=_addAction.sqf",[[_flag],BTC_dismantle_fob], 8, true, true, "", "true"]; + hint "FOB assembled!"; + + #define east_pack "Land_Pod_Heli_Transport_04_box_F" #define west_pack "B_Slingload_01_Cargo_F" */ \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/dismantle.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/dismantle.sqf index 33c13b76b..4126daa4b 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/dismantle.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/dismantle.sqf @@ -1,4 +1,4 @@ -hint format ["Dismantle, move out ..."]; +hint format [(localize "STR_BTC_HAM_O_FOB_DISMANTLE_H_PROC")]; //"Dismantle, move out ..." sleep 10; -_this remoteExec ["btc_fnc_fob_dismantle_s", 2]; \ No newline at end of file +_this remoteExec ["btc_fnc_fob_dismantle_s", 2]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/dlg.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/dlg.hpp index 3a7a4f34e..ee093f718 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/dlg.hpp +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/dlg.hpp @@ -1,106 +1,106 @@ class btc_fob_create { - idd = -1; - movingEnable = 1; - onLoad = "uiNamespace setVariable [""btc_fob_create"", _this select 0];"; - objects[] = {}; - class controlsBackground - { + idd = -1; + movingEnable = 1; + onLoad = "uiNamespace setVariable [""btc_fob_create"", _this select 0];"; + objects[] = {}; + class controlsBackground + { - }; - class controls - { - class btc_fob_dlg_background : btc_dlg_RscText - { - idc = -1; - x = 0.35 * safezoneW + safezoneX; - y = 0.4 * safezoneH + safezoneY; - w = 0.3 * safezoneW; - h = 0.125 * safezoneH; - colorBackground[] = {0, 0, 0, 0.65}; - text = ""; - }; - class btc_fob_dlg_text : btc_dlg_RscText - { - idc = -1; - colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; - x = 0.35 * safezoneW + safezoneX; - y = 0.4 * safezoneH + safezoneY; - w = 0.3 * safezoneW; - h = 0.025 * safezoneH; - colorText[] = {1, 1, 1, 1}; - text = "Name the FOB:"; - }; - class btc_fob_dlg_name : btc_dlg_RscEdit - { - idc = 777; - text = ""; - x = 0.35025 * safezoneW + safezoneX; - y = 0.45 * safezoneH + safezoneY; - w = 0.3 * safezoneW; - h = 0.025 * safezoneH; - }; - class btc_fob_dlg_apply : btc_dlg_button - { - text = "Apply"; - action = "btc_fob_dlg = true;"; - x = 0.45 * safezoneW + safezoneX; - y = 0.5 * safezoneH + safezoneY; - w = 0.1 * safezoneW; - default = true; - }; - }; + }; + class controls + { + class btc_fob_dlg_background : btc_dlg_RscText + { + idc = -1; + x = 0.35 * safezoneW + safezoneX; + y = 0.4 * safezoneH + safezoneY; + w = 0.3 * safezoneW; + h = 0.125 * safezoneH; + colorBackground[] = {0, 0, 0, 0.65}; + text = ""; + }; + class btc_fob_dlg_text : btc_dlg_RscText + { + idc = -1; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + x = 0.35 * safezoneW + safezoneX; + y = 0.4 * safezoneH + safezoneY; + w = 0.3 * safezoneW; + h = 0.025 * safezoneH; + colorText[] = {1, 1, 1, 1}; + text = $STR_BTC_HAM_O_FOB_DLG_T_NAMEFOB; //Name the FOB: + }; + class btc_fob_dlg_name : btc_dlg_RscEdit + { + idc = 777; + text = ""; + x = 0.35025 * safezoneW + safezoneX; + y = 0.45 * safezoneH + safezoneY; + w = 0.3 * safezoneW; + h = 0.025 * safezoneH; + }; + class btc_fob_dlg_apply : btc_dlg_button + { + text = $STR_BTC_HAM_O_FOB_DLG_T_APPLY; //Apply + action = "btc_fob_dlg = true;"; + x = 0.45 * safezoneW + safezoneX; + y = 0.5 * safezoneH + safezoneY; + w = 0.1 * safezoneW; + default = true; + }; + }; }; class btc_fob_redeploy { - idd = -1; - movingEnable = 1; - onLoad = "uiNamespace setVariable [""btc_fob_redeploy"", _this select 0];"; - objects[] = {}; - class controlsBackground - { + idd = -1; + movingEnable = 1; + onLoad = "uiNamespace setVariable [""btc_fob_redeploy"", _this select 0];"; + objects[] = {}; + class controlsBackground + { - }; - class controls - { - class btc_fob_dlg_re_background : btc_dlg_RscText - { - idc = -1; - x = 0.4 * safezoneW + safezoneX; - y = 0.05 * safezoneH + safezoneY; - w = 0.2 * safezoneW; - h = 0.1 * safezoneH; - colorBackground[] = {0, 0, 0, 0.65}; - text = ""; - }; - class btc_fob_dlg_re_text : btc_dlg_RscText - { - idc = -1; - colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; - x = 0.4 * safezoneW + safezoneX; - y = 0.05 * safezoneH + safezoneY; - w = 0.2 * safezoneW; - h = 0.025 * safezoneH; - colorText[] = {1, 1, 1, 1}; - text = "Select the FOB:"; - }; - class btc_fob_dlg_re_fobs: btc_dlg_comboBox - { - idc = 778; - x = 0.4 * safezoneW + safezoneX; - y = 0.1 * safezoneH + safezoneY; - w = 0.2 * safezoneW; - h = 0.017 * safezoneH; - onLBSelChanged = "[] call btc_fnc_fob_lb_change"; - }; - class btc_fob_dlg_apply : btc_dlg_button - { - text = "Apply"; - action = "btc_fob_dlg = true;"; - x = 0.45 * safezoneW + safezoneX; - y = 0.125 * safezoneH + safezoneY; - w = 0.1 * safezoneW; - default = true; - }; - }; -}; \ No newline at end of file + }; + class controls + { + class btc_fob_dlg_re_background : btc_dlg_RscText + { + idc = -1; + x = 0.4 * safezoneW + safezoneX; + y = 0.05 * safezoneH + safezoneY; + w = 0.2 * safezoneW; + h = 0.1 * safezoneH; + colorBackground[] = {0, 0, 0, 0.65}; + text = ""; + }; + class btc_fob_dlg_re_text : btc_dlg_RscText + { + idc = -1; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + x = 0.4 * safezoneW + safezoneX; + y = 0.05 * safezoneH + safezoneY; + w = 0.2 * safezoneW; + h = 0.025 * safezoneH; + colorText[] = {1, 1, 1, 1}; + text = $STR_BTC_HAM_O_FOB_DLG_T_SELECTFOB; //STR_BTC_HAM_O_FOB_DLG_T_SELECTFOB + }; + class btc_fob_dlg_re_fobs: btc_dlg_comboBox + { + idc = 778; + x = 0.4 * safezoneW + safezoneX; + y = 0.1 * safezoneH + safezoneY; + w = 0.2 * safezoneW; + h = 0.017 * safezoneH; + onLBSelChanged = "[] call btc_fnc_fob_lb_change"; + }; + class btc_fob_dlg_apply : btc_dlg_button + { + text = $STR_BTC_HAM_O_FOB_DLG_T_APPLY; //Apply + action = "btc_fob_dlg = true;"; + x = 0.45 * safezoneW + safezoneX; + y = 0.125 * safezoneH + safezoneY; + w = 0.1 * safezoneW; + default = true; + }; + }; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/redeploy.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/redeploy.sqf index 0455e343d..9c35f9087 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/redeploy.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/fob/redeploy.sqf @@ -11,7 +11,7 @@ btc_int_ask_data = nil; waitUntil {!(isNil "btc_int_ask_data")}; -if (count (btc_int_ask_data select 0) == 0) exitWith {hint "No FOBs deployed";}; +if (count (btc_int_ask_data select 0) == 0) exitWith {hint (localize "STR_BTC_HAM_O_FOB_REDEPLOY_H_NOFOB");}; //"No FOBs deployed" _fobs = btc_int_ask_data; @@ -30,8 +30,8 @@ _idc = 778; lbSetCurSel [_idc, 0]; /* while {!btc_fob_dlg} do { - if !(dialog) then {hint "Do not close the dialog with esc";createDialog "btc_fob_redeploy";{_index = lbAdd [ _idc, _x ];} foreach _fobs;lbSetCurSel [_idc, 0];}; - sleep 0.1; + if !(dialog) then {hint "Do not close the dialog with esc";createDialog "btc_fob_redeploy";{_index = lbAdd [ _idc, _x ];} foreach _fobs;lbSetCurSel [_idc, 0];}; + sleep 0.1; };*/ waitUntil {!dialog || btc_fob_dlg}; @@ -50,11 +50,11 @@ closeDialog 0; _pos = ((_fobs select 1) select ((_fobs select 0) find _marker)) buildingPos -1; -_text = format ["Moving to %1",_fob]; +_text = format [(localize "STR_BTC_HAM_O_FOB_REDEPLOY_H_MOVING"),_fob]; //"Moving to %1" titleText [_text, "BLACK OUT"]; sleep 3; titleText [_text, "BLACK FADED"]; player setPosATL selectRandom (_pos select [0, [count _pos,4] select (count _pos >= 4)]); sleep 2; -titleText ["", "BLACK IN"]; \ No newline at end of file +titleText ["", "BLACK IN"]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/add_to_weapon.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/add_to_weapon.sqf deleted file mode 100644 index 5f6494a7e..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/add_to_weapon.sqf +++ /dev/null @@ -1,12 +0,0 @@ - -private ["_item"]; - -_item = lbData [372, lbCurSel 372]; - -switch (btc_gear_acc_type) do -{ - case 0 : {player addPrimaryWeaponItem _item;}; - case 1 : {player addSecondaryWeaponItem _item;}; - case 2 : {player addHandGunItem _item;}; -}; - diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/change_cargo.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/change_cargo.sqf deleted file mode 100644 index 16aab329b..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/change_cargo.sqf +++ /dev/null @@ -1,19 +0,0 @@ -disableSerialization; - -private ["_ui","_type"]; - -_ui = uiNamespace getVariable "btc_gear_dlg"; - -_type = lbText [371, lbCurSel 371]; - -switch _type do -{ - case "Uniforms" : {[372,btc_uniforms] call btc_fnc_gear_lb_fill;}; - case "Vests" : {[372,btc_vests] call btc_fnc_gear_lb_fill;}; - case "Backpacks" : {[372,btc_backpacks] call btc_fnc_gear_lb_fill;}; - case "Goggles" : {[372,btc_goggles] call btc_fnc_gear_lb_fill;}; - case "Weapons" : {[372,btc_weapons] call btc_fnc_gear_lb_fill;}; - case "Magazines" : {[372,btc_magazines] call btc_fnc_gear_lb_fill;}; - case "Items" : {[372,btc_items] call btc_fnc_gear_lb_fill;}; - case "HeadGear" : {[372,btc_headgears] call btc_fnc_gear_lb_fill;}; -}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/change_container.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/change_container.sqf deleted file mode 100644 index 6eb33a0b5..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/change_container.sqf +++ /dev/null @@ -1,76 +0,0 @@ -disableSerialization; - -private ["_ui","_click","_type","_load","_items"]; - -_ui = uiNamespace getVariable "btc_gear_dlg"; -_click = _this select 0; -_type = _this select 1; -switch _type do -{ - case 0 : - { - if (_click == 1) then - { - removeUniform player; - (_ui displayCtrl 374) ctrlSettext "\A3\ui_f\data\gui\rsc\rscdisplaygear\ui_gear_uniform_gs.paa"; - if (btc_gear_container_selected == 0) then - { - lbClear 373; - (_ui displayCtrl 380) progressSetPosition 0; - }; - call btc_fnc_gear_get_text; - } - else - { - _load = loadUniform player; - _items = uniformItems player; - (_ui displayCtrl 380) progressSetPosition _load; - [373,_items] call btc_fnc_gear_lb_fill; - btc_gear_container_selected = 0; - }; - }; - case 1 : - { - if (_click == 1) then - { - removeVest player; - (_ui displayCtrl 375) ctrlSettext "\A3\ui_f\data\gui\rsc\rscdisplaygear\ui_gear_vest_gs.paa"; - if (btc_gear_container_selected == 1) then - { - lbClear 373; - (_ui displayCtrl 380) progressSetPosition 0; - }; - call btc_fnc_gear_get_text; - } - else - { - _load = loadVest player; - _items = vestItems player; - (_ui displayCtrl 380) progressSetPosition _load; - [373,_items] call btc_fnc_gear_lb_fill; - btc_gear_container_selected = 1; - }; - }; - case 2 : - { - if (_click == 1) then - { - removeBackPack player; - (_ui displayCtrl 376) ctrlSettext "\A3\ui_f\data\gui\rsc\rscdisplaygear\ui_gear_backpack_gs.paa"; - if (btc_gear_container_selected == 2) then - { - lbClear 373; - (_ui displayCtrl 380) progressSetPosition 0; - }; - call btc_fnc_gear_get_text; - } - else - { - _load = loadBackPack player; - _items = backPackItems player; - (_ui displayCtrl 380) progressSetPosition _load; - [373,_items] call btc_fnc_gear_lb_fill; - btc_gear_container_selected = 2; - }; - }; -}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/check_acc.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/check_acc.sqf deleted file mode 100644 index 178761031..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/check_acc.sqf +++ /dev/null @@ -1,25 +0,0 @@ -/* -if (lbText [371, lbCurSel 371] != "Items") exitWith {[3912,false] call btc_fnc_gear_show_button;}; - -_item = lbData [372, lbCurSel 372]; - -if ((getNumber(configfile >> "CfgWeapons" >> _item >> "type") != 131072)) exitWith {[3912,false] call btc_fnc_gear_show_button;}; - -_p = primaryWeapon player; -_s = secondaryWeapon player; -_h = handGunWeapon player; - -if (_item in (getArray(configFile >> "cfgWeapons" >> _p >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems"))) exitWith {[3912,true] call btc_fnc_gear_show_button;btc_gear_acc_type = 1;}; -if (_item in (getArray(configFile >> "cfgWeapons" >> _p >> "WeaponSlotsInfo" >> "PointerSlot" >> "MuzzleSlot"))) exitWith {[3912,true] call btc_fnc_gear_show_button;btc_gear_acc_type = 1;}; -if (_item in (getArray(configFile >> "cfgWeapons" >> _p >> "WeaponSlotsInfo" >> "PointerSlot" >> "CowsSlot"))) exitWith {[3912,true] call btc_fnc_gear_show_button;btc_gear_acc_type = 1;}; - - -if (_item in (getArray(configFile >> "cfgWeapons" >> _s >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems"))) exitWith {[3912,true] call btc_fnc_gear_show_button;btc_gear_acc_type = 2;}; -if (_item in (getArray(configFile >> "cfgWeapons" >> _s >> "WeaponSlotsInfo" >> "PointerSlot" >> "MuzzleSlot"))) exitWith {[3912,true] call btc_fnc_gear_show_button;btc_gear_acc_type = 2;}; -if (_item in (getArray(configFile >> "cfgWeapons" >> _s >> "WeaponSlotsInfo" >> "PointerSlot" >> "CowsSlot"))) exitWith {[3912,true] call btc_fnc_gear_show_button;btc_gear_acc_type = 2;}; - -if (_item in (getArray(configFile >> "cfgWeapons" >> _h >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems"))) exitWith {[3912,true] call btc_fnc_gear_show_button;btc_gear_acc_type = 3;}; -if (_item in (getArray(configFile >> "cfgWeapons" >> _h >> "WeaponSlotsInfo" >> "PointerSlot" >> "MuzzleSlot"))) exitWith {[3912,true] call btc_fnc_gear_show_button;btc_gear_acc_type = 3;}; -if (_item in (getArray(configFile >> "cfgWeapons" >> _h >> "WeaponSlotsInfo" >> "PointerSlot" >> "CowsSlot"))) exitWith {[3912,true] call btc_fnc_gear_show_button;btc_gear_acc_type = 3;}; - -[3912,false] call btc_fnc_gear_show_button;*/ \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/combo_fill.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/combo_fill.sqf deleted file mode 100644 index c17161378..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/combo_fill.sqf +++ /dev/null @@ -1,21 +0,0 @@ - -private ["_idc","_items"]; - -_idc = _this select 0; -_items = _this select 1; - -hint str(_this); - -lbClear _idc; -{ - private ["_type","_index","_displayName","_picture"]; - _type = "cfgMagazines"; - if (isClass (configFile >> "cfgWeapons" >> _x)) then {_type = "cfgWeapons"}; - if (isClass (configFile >> "CfgGlasses" >> _x)) then {_type = "CfgGlasses"}; - _displayName = getText (configFile >> _type >> _x >> "displayName"); - _picture = getText (configFile >> _type >> _x >> "picture"); - _index = lbAdd [ _idc, _displayName ]; - lbSetData [ _idc, _index, _x ]; - lbSetTooltip [ _idc, _index, _displayName ]; - lbSetPicture [ _idc, _index, _picture ]; -} foreach _items; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/dlg.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/dlg.hpp deleted file mode 100644 index e5d239a6f..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/dlg.hpp +++ /dev/null @@ -1,425 +0,0 @@ -#define backColor 0.65 - -class btc_gear_dlg -{ - idd = -1; - movingEnable = 1; - onLoad = "uiNamespace setVariable [""btc_gear_dlg"", _this select 0];"; - objects[] = {}; - class controlsBackground - { - - }; - class controls - { - class btc_gear_dlg_background_1 : btc_dlg_RscText - { - idc = -1; - x = 0.25 * safezoneW + safezoneX; - y = 0.25 * safezoneH + safezoneY; - w = 0.2 * safezoneW; - h = 0.45 * safezoneH;//1565 - colorBackground[] = {0, 0, 0, backColor}; - text = ""; - }; - class btc_gear_dlg_background_2 : btc_dlg_RscText - { - idc = -1; - x = 0.5 * safezoneW + safezoneX; - y = 0.25 * safezoneH + safezoneY; - w = 0.4 * safezoneW; - h = 0.45 * safezoneH;//1565 - colorBackground[] = {0, 0, 0, backColor}; - text = ""; - }; - class btc_gear_dlg_slot_0 : btc_dlg_RscText//Uniform - { - idc = -1; - x = 0.5 * safezoneW + safezoneX; - y = 0.33 * safezoneH + safezoneY; - w = 0.047 * safezoneW; - h = 0.05 * safezoneH; - colorBackground[] = {118, 118, 118, 0.1}; - text = ""; - }; - class btc_gear_dlg_slot_1 : btc_gear_dlg_slot_0 {x = 0.55 * safezoneW + safezoneX;};//Vest - class btc_gear_dlg_slot_2 : btc_gear_dlg_slot_0 {x = 0.6 * safezoneW + safezoneX;};//Backpack - class btc_gear_dlg_slot_3 : btc_gear_dlg_slot_0 {x = 0.525 * safezoneW + safezoneX;y = 0.27 * safezoneH + safezoneY;};//Head - class btc_gear_dlg_slot_4 : btc_gear_dlg_slot_0 {x = 0.575 * safezoneW + safezoneX;y = 0.27 * safezoneH + safezoneY;};//Goggles - - class btc_gear_dlg_slot_5 : btc_gear_dlg_slot_0 //P 1 - { - x = 0.71 * safezoneW + safezoneX; - y = 0.31 * safezoneH + safezoneY; - w = 0.0335 * safezoneW; - h = 0.025 * safezoneH; - }; - class btc_gear_dlg_slot_6 : btc_gear_dlg_slot_5 {x = 0.75 * safezoneW + safezoneX;};//P 2 - class btc_gear_dlg_slot_7 : btc_gear_dlg_slot_5 {x = 0.79 * safezoneW + safezoneX;};//P 3 - class btc_gear_dlg_slot_8 : btc_gear_dlg_slot_5 {x = 0.71 * safezoneW + safezoneX;y = 0.37 * safezoneH + safezoneY;};//S 1 - class btc_gear_dlg_slot_9 : btc_gear_dlg_slot_8 {x = 0.75 * safezoneW + safezoneX;};//S 2 - class btc_gear_dlg_slot_10 : btc_gear_dlg_slot_8 {x = 0.79 * safezoneW + safezoneX;};//S 3 - class btc_gear_dlg_slot_11 : btc_gear_dlg_slot_5 {x = 0.71 * safezoneW + safezoneX;y = 0.43 * safezoneH + safezoneY;};//H 1 - class btc_gear_dlg_slot_12 : btc_gear_dlg_slot_11 {x = 0.75 * safezoneW + safezoneX;};//H 2 - class btc_gear_dlg_slot_13 : btc_gear_dlg_slot_11 {x = 0.79 * safezoneW + safezoneX;};//H 3 - class btc_gear_dlg_class : btc_dlg_comboBox - { - idc = 371; - onLBSelChanged = "[] call btc_fnc_gear_change_cargo"; - x = 0.25 * safezoneW + safezoneX; - y = 0.27 * safezoneH + safezoneY; - w = 0.2 * safezoneW;//w = 0.105 * safezoneW; - h = 0.017 * safezoneH; - }; - class btc_gear_dlg_cargo: btc_dlg_RscListBox - { - idc = 372; - x = 0.25 * safezoneW + safezoneX; - y = 0.4 * safezoneH + safezoneY; - w = 0.2 * safezoneW; - h = 0.25 * safezoneH; - //onMouseButtonClick = "hint str(_this)"; - //onLBSelChanged = "call btc_fnc_gear_check_acc"; - onLBDblClick = "[0] call btc_fnc_gear_handle"; - }; - class btc_gear_dlg_equip: btc_dlg_RscListBox - { - idc = 373; - x = 0.5 * safezoneW + safezoneX; - y = 0.4 * safezoneH + safezoneY; - w = 0.2 * safezoneW; - h = 0.25 * safezoneH; - onLBDblClick = "[1] call btc_fnc_gear_handle"; - }; - class btc_gear_dlg_img_uniform : btc_dlg_RscText - { - idc = 374; - style = 48; - font = "PuristaMedium"; - x = 0.5 * safezoneW + safezoneX; - y = 0.33 * safezoneH + safezoneY; - w = 0.05 * safezoneW; - h = 0.05 * safezoneH;//1565 - text = "\A3\ui_f\data\gui\rsc\rscdisplaygear\ui_gear_uniform_gs.paa"; - }; - class btc_gear_dlg_img_vest : btc_gear_dlg_img_uniform - { - idc = 375; - x = 0.55 * safezoneW + safezoneX; - text = "\A3\ui_f\data\gui\rsc\rscdisplaygear\ui_gear_vest_gs.paa"; - }; - class btc_gear_dlg_img_backpack : btc_gear_dlg_img_uniform - { - idc = 376; - x = 0.6 * safezoneW + safezoneX; - text = "\A3\ui_f\data\gui\rsc\rscdisplaygear\ui_gear_backpack_gs.paa"; - }; - class btc_gear_dlg_img_headgear : btc_gear_dlg_img_uniform - { - idc = 377; - x = 0.525 * safezoneW + safezoneX; - y = 0.27 * safezoneH + safezoneY; - text = "\A3\ui_f\data\gui\rsc\rscdisplaygear\ui_gear_helmet_gs.paa"; - }; - class btc_gear_dlg_img_glasses : btc_gear_dlg_img_uniform - { - idc = 378; - x = 0.575 * safezoneW + safezoneX; - y = 0.27 * safezoneH + safezoneY; - text = "\A3\ui_f\data\gui\rsc\rscdisplaygear\ui_gear_glasses_gs.paa"; - }; - class btc_gear_uniform_button - { - idc = -1; - text = ""; - type = 1; - style = 2; - colorText[] = {0,0,0,0}; - colorDisabled[] = {0,0,0,0}; - colorBackground[] = {0,0,0,0};//{0,0,1,0}; - colorBackgroundDisabled[] = {0,0,0,0}; - colorBackgroundActive[] = {0,0,0,0}; - colorFocused[] = {0,0,0,0}; - colorShadow[] = {0,0,0,0}; - colorBorder[] = {0,0,0,0}; - soundEnter[] = {"\A3\ui_f\data\sound\RscButton\soundEnter",0.09,1}; - soundPush[] = {"\A3\ui_f\data\sound\RscButton\soundPush",0.09,1}; - soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick",0.09,1}; - soundEscape[] = {"\A3\ui_f\data\sound\RscButton\soundEscape",0.09,1}; - - x = 0.5 * safezoneW + safezoneX; - y = 0.33 * safezoneH + safezoneY; - w = 0.05 * safezoneW; - h = 0.05 * safezoneH; - shadow = 2; - font = "PuristaMedium"; - sizeEx = 0.03921; - offsetX = 0.003; - offsetY = 0.003; - offsetPressedX = 0.002; - offsetPressedY = 0.002; - borderSize = 0; - onMouseButtonClick = "[(_this select 1),0] call btc_fnc_gear_change_container"; - //action = "0 call btc_fnc_gear_change_container;"; - }; - class btc_gear_vest_button : btc_gear_uniform_button - { - idc = -1; - //action = "1 call btc_fnc_gear_change_container;"; - onMouseButtonClick = "[(_this select 1),1] call btc_fnc_gear_change_container"; - x = 0.55 * safezoneW + safezoneX; - y = 0.33 * safezoneH + safezoneY; - }; - class btc_gear_backpack_button : btc_gear_uniform_button - { - idc = -1; - //action = "2 call btc_fnc_gear_change_container;"; - onMouseButtonClick = "[(_this select 1),2] call btc_fnc_gear_change_container"; - x = 0.6 * safezoneW + safezoneX; - y = 0.33 * safezoneH + safezoneY; - }; - class btc_gear_headgear_button : btc_gear_uniform_button - { - idc = -1; - action = "removeHeadgear player;((uiNamespace getVariable 'btc_gear_dlg') displayCtrl 377) ctrlSettext '\A3\ui_f\data\gui\rsc\rscdisplaygear\ui_gear_helmet_gs.paa';"; - x = 0.525 * safezoneW + safezoneX; - y = 0.27 * safezoneH + safezoneY; - }; - class btc_gear_glasses_button : btc_gear_uniform_button - { - idc = -1; - action = "removeGoggles player;((uiNamespace getVariable 'btc_gear_dlg') displayCtrl 378) ctrlSettext '\A3\ui_f\data\gui\rsc\rscdisplaygear\ui_gear_glasses_gs.paa';"; - x = 0.575 * safezoneW + safezoneX; - y = 0.27 * safezoneH + safezoneY; - }; - class btc_gear_progressBar : btc_dlg_RscProgress - { - idc = 380; - access = 0; - colorBar[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])","(profilenamespace getvariable ['GUI_BCG_RGB_A',0.8])"}; - colorFrame[] = {0,0,0,0}; - texture = "\A3\ui_f\data\GUI\RscCommon\RscProgress\progressbar_ca.paa"; - type = 8; - x = 0.5 * safezoneW + safezoneX; - y = 0.66 * safezoneH + safezoneY; - w = "0.2 * safezoneW"; - h = "0.018 * safezoneH"; - }; - class btc_gear_dlg_img_add : btc_gear_dlg_img_uniform - { - x = 0.46 * safezoneW + safezoneX; - y = 0.4 * safezoneH + safezoneY; - w = 0.03 * safezoneW; - colorBackground[] = {0,0,0,backColor}; - sizeEx = 0.01; - text = "\A3\ui_f\data\gui\RscCommon\RscHTML\arrow_right_ca.paa"; - }; - class btc_gear_dlg_img_remove : btc_gear_dlg_img_uniform - { - x = 0.46 * safezoneW + safezoneX; - y = 0.5 * safezoneH + safezoneY; - w = 0.03 * safezoneW; - colorBackground[] = {0,0,0,backColor}; - sizeEx = 0.01; - text = "\A3\ui_f\data\gui\RscCommon\RscHTML\arrow_left_ca.paa"; - }; - class btc_gear_add : btc_gear_uniform_button - { - idc = -1; - text = ">"; - action = "[0] call btc_fnc_gear_handle"; - x = 0.46 * safezoneW + safezoneX; - y = 0.4 * safezoneH + safezoneY; - w = 0.03 * safezoneW; - h = 0.05 * safezoneW; - default = true; - }; - class btc_gear_remove : btc_gear_uniform_button - { - idc = -1; - text = "<"; - action = "[1] call btc_fnc_gear_handle"; - x = 0.46 * safezoneW + safezoneX; - y = 0.5 * safezoneH + safezoneY; - w = 0.03 * safezoneW; - h = 0.05 * safezoneW; - default = true; - }; - class btc_gear_dlg_text_p : btc_dlg_RscText - { - idc = 3910; - x = 0.71 * safezoneW + safezoneX; - y = 0.28 * safezoneH + safezoneY; - w = 0.18 * safezoneW; - h = 0.025 * safezoneH; - text = ""; - }; - class btc_gear_p_button : btc_gear_uniform_button - { - idc = -1; - action = "[2] call btc_fnc_gear_handle"; - x = 0.71 * safezoneW + safezoneX; - y = 0.28 * safezoneH + safezoneY; - w = 0.18 * safezoneW; - h = 0.025 * safezoneH; - colorBackground[] = {0,0,0,0};//{0,0,1,0}; - }; - class btc_gear_dlg_text_s : btc_gear_dlg_text_p - { - idc = 3911; - y = 0.34 * safezoneH + safezoneY; - }; - class btc_gear_s_button : btc_gear_p_button - { - idc = -1; - action = "[3] call btc_fnc_gear_handle"; - y = 0.34 * safezoneH + safezoneY; - }; - class btc_gear_dlg_text_h : btc_gear_dlg_text_p - { - idc = 3912; - y = 0.40 * safezoneH + safezoneY; - }; - class btc_gear_h_button : btc_gear_p_button - { - idc = -1; - action = "[4] call btc_fnc_gear_handle"; - y = 0.40 * safezoneH + safezoneY; - }; - class btc_gear_dlg_text_i : btc_gear_dlg_text_p - { - idc = 3913; - y = 0.465 * safezoneH + safezoneY; - text = "Ammo and items:"; - }; - class btc_gear_dlg_text_i_p_0 : btc_gear_dlg_img_uniform - { - idc = 3930; - x = 0.71 * safezoneW + safezoneX; - y = 0.31 * safezoneH + safezoneY; - w = 0.035 * safezoneW; - h = 0.025 * safezoneH; - text = ""; - }; - class btc_gear_dlg_text_i_p_1 : btc_gear_dlg_text_i_p_0 - { - idc = 3931; - x = 0.75 * safezoneW + safezoneX; - }; - class btc_gear_dlg_text_i_p_2 : btc_gear_dlg_text_i_p_0 - { - idc = 3932; - x = 0.79 * safezoneW + safezoneX; - }; - class btc_gear_dlg_text_i_s_0 : btc_gear_dlg_text_i_p_0 - { - idc = 3940; - x = 0.71 * safezoneW + safezoneX; - y = 0.37 * safezoneH + safezoneY; - }; - class btc_gear_dlg_text_i_s_1 : btc_gear_dlg_text_i_s_0 - { - idc = 3941; - x = 0.75 * safezoneW + safezoneX; - }; - class btc_gear_dlg_text_i_s_2 : btc_gear_dlg_text_i_s_0 - { - idc = 3942; - x = 0.79 * safezoneW + safezoneX; - }; - class btc_gear_dlg_text_i_h_0 : btc_gear_dlg_text_i_p_0 - { - idc = 3950; - x = 0.71 * safezoneW + safezoneX; - y = 0.43 * safezoneH + safezoneY; - }; - class btc_gear_dlg_text_i_h_1 : btc_gear_dlg_text_i_h_0 - { - idc = 3951; - x = 0.75 * safezoneW + safezoneX; - }; - class btc_gear_dlg_text_i_h_2 : btc_gear_dlg_text_i_h_0 - { - idc = 3952; - x = 0.79 * safezoneW + safezoneX; - }; - class btc_gear_p_i_0_button : btc_gear_uniform_button - { - idc = -1; - action = "[0,0] call btc_fnc_gear_remove_w_item"; - x = 0.71 * safezoneW + safezoneX; - y = 0.31 * safezoneH + safezoneY; - w = 0.035 * safezoneW; - h = 0.025 * safezoneH; - colorBackground[] = {0,0,0,0};//{0,0,0,0.75}; - }; - class btc_gear_p_i_1_button : btc_gear_p_i_0_button - { - action = "[0,1] call btc_fnc_gear_remove_w_item"; - x = 0.75 * safezoneW + safezoneX; - }; - class btc_gear_p_i_2_button : btc_gear_p_i_0_button - { - action = "[0,2] call btc_fnc_gear_remove_w_item"; - x = 0.79 * safezoneW + safezoneX; - }; - class btc_gear_s_i_0_button : btc_gear_p_i_0_button - { - action = "[1,0] call btc_fnc_gear_remove_w_item"; - x = 0.71 * safezoneW + safezoneX; - y = 0.37 * safezoneH + safezoneY; - }; - class btc_gear_s_i_1_button : btc_gear_s_i_0_button - { - action = "[1,1] call btc_fnc_gear_remove_w_item"; - x = 0.75 * safezoneW + safezoneX; - }; - class btc_gear_s_i_2_button : btc_gear_s_i_0_button - { - action = "[1,2] call btc_fnc_gear_remove_w_item"; - x = 0.79 * safezoneW + safezoneX; - }; - class btc_gear_h_i_0_button : btc_gear_p_i_0_button - { - action = "[2,0] call btc_fnc_gear_remove_w_item"; - x = 0.71 * safezoneW + safezoneX; - y = 0.43 * safezoneH + safezoneY; - }; - class btc_gear_h_i_1_button : btc_gear_h_i_0_button - { - action = "[2,1] call btc_fnc_gear_remove_w_item"; - x = 0.75 * safezoneW + safezoneX; - }; - class btc_gear_h_i_2_button : btc_gear_h_i_0_button - { - action = "[2,2] call btc_fnc_gear_remove_w_item"; - x = 0.79 * safezoneW + safezoneX; - }; - class btc_gear_dlg_inv: btc_dlg_RscListBox - { - idc = 3921; - x = 0.71 * safezoneW + safezoneX; - y = 0.5 * safezoneH + safezoneY; - w = 0.18 * safezoneW; - h = 0.2 * safezoneH; - colorScrollBar[] = {0,0,0,0}; - colorSelect[] = {0,0,0,0}; - colorSelect2[] = {0,0,0,0}; - class listScrollBar - { - //color[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",0.85}; - //colorActive[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",0.85}; - color[] = {0,0,0,0}; - colorActive[] = {0,0,0,0}; - colorDisabled[] = {1, 1, 1, 1}; - arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; - arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; - border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; - thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; - soundSelect[] = {"\A3\ui_f\data\sound\RscListbox\soundSelect",0.09,1}; - shadow = 1; - width = 0.2; - }; - }; - }; -}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/get_text.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/get_text.sqf deleted file mode 100644 index a5691debf..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/get_text.sqf +++ /dev/null @@ -1,124 +0,0 @@ -/*_text = "Rifle: "; -_br = "
"; - -_w = primaryWeapon player; -if (_w == "") then {_text = _text + "None";} else {_text = _text + (getText (configFile >> "cfgWeapons" >> _w >> "displayName"));}; -_text = _text + _br; -_w_items = primaryWeaponItems player; -_i = 0; -if ({_x != ""} count _w_items > 0) then -{ - _text = _text + "Accessories: "; - { - if (_x != "") then {if (_i > 0) then {_text = _text + ", ";};_text = _text + (getText (configFile >> "cfgWeapons" >> _x >> "displayName"));_i = _i + 1;}; - } foreach _w_items; -} else {_text = _text + "Accessories: None";}; -_text = _text + _br + _br + "Launcher: "; -_s = secondaryWeapon player; -if (_s == "") then {_text = _text + "None";} else {_text = _text + (getText (configFile >> "cfgWeapons" >> _s >> "displayName"));}; -_text = _text + _br; -_s_items = secondaryWeaponItems player; -_i = 0; -if ({_x != ""} count _s_items > 0) then -{ - _text = _text + "Accessories: "; - { - if (_x != "") then {if (_i > 0) then {_text = _text + ", ";};_text = _text + (getText (configFile >> "cfgWeapons" >> _x >> "displayName"));_i = _i + 1;}; - } foreach _s_items; -} else {_text = _text + "Accessories: None";}; -_text = _text + _br + _br + "Hand gun: "; -_h = handGunWeapon player; -if (_h == "") then {_text = _text + "None";} else {_text = _text + (getText (configFile >> "cfgWeapons" >> _h >> "displayName"));}; -_text = _text + _br; -_h_items = secondaryWeaponItems player; -_i = 0; -if ({_x != ""} count _h_items > 0) then -{ - _text = _text + "Accessories: "; - { - if (_x != "") then {if (_i > 0) then {_text = _text + ", ";};_text = _text + (getText (configFile >> "cfgWeapons" >> _x >> "displayName"));_i = _i + 1;}; - } foreach _h_items; -} else {_text = _text + "Accessories: None";}; -_text = _text + _br + _br + "Ammo and items:"; -*/ - -private ["_ui","_text","_w","_s","_w_items","_h_items","_h","_s_items","_i","_n","_idc","_displayName","_items","_mags","_picture"]; - -_ui = uiNamespace getVariable "btc_gear_dlg"; -_text = ""; -_w = primaryWeapon player; -if (_w == "") then {_text = "None";} else {_text = getText (configFile >> "cfgWeapons" >> _w >> "displayName");}; -(_ui displayCtrl 3910) ctrlSettext _text; - -_w_items = primaryWeaponItems player; -_i = 0; -{ - if (_x != "") then {(_ui displayCtrl (3930 + _i)) ctrlSettext (getText (configFile >> "cfgWeapons" >> _x >> "picture"))} else {(_ui displayCtrl (3930 + _i)) ctrlSettext ""}; - _i = _i + 1; -} foreach _w_items; - -_text = ""; -_s = secondaryWeapon player; -if (_s == "") then {_text = "None";} else {_text = getText (configFile >> "cfgWeapons" >> _s >> "displayName");}; -(_ui displayCtrl 3911) ctrlSettext _text; - -_w_items = secondaryWeaponItems player; -_i = 0; -{ - if (_x != "") then {(_ui displayCtrl (3940 + _i)) ctrlSettext (getText (configFile >> "cfgWeapons" >> _x >> "picture"))} else {(_ui displayCtrl (3940 + _i)) ctrlSettext ""}; - _i = _i + 1; -} foreach _w_items; - -_text = ""; -_h = handGunWeapon player; -if (_h == "") then {_text = "None";} else {_text = getText (configFile >> "cfgWeapons" >> _h >> "displayName");}; -(_ui displayCtrl 3912) ctrlSettext _text; - -_w_items = handGunItems player; -_i = 0; -{ - if (_x != "") then {(_ui displayCtrl (3950 + _i)) ctrlSettext (getText (configFile >> "cfgWeapons" >> _x >> "picture"))} else {(_ui displayCtrl (3950 + _i)) ctrlSettext ""}; - _i = _i + 1; -} foreach _w_items; - -_mags = magazines player; -_items = (items player) + (assignedItems player); - -_idc = 3921; -lbClear _idc; - -if (count _mags > 0) then -{ - while {count _mags > 0} do - { - _i = _mags select 0; - _n = {_i == _x} count _mags; - _displayName = format ["[%2] %1",(getText (configFile >> "cfgMagazines" >> _i >> "displayName")),_n]; - _picture = getText (configFile >> "cfgMagazines" >> _i >> "picture"); - _index = lbAdd [ _idc, _displayName ]; - lbSetData [ _idc, _index, _i ]; - lbSetTooltip [ _idc, _index, _displayName ]; - lbSetPicture [ _idc, _index, _picture ]; - _mags = _mags - [_i]; - }; -}; -if (count _items > 0) then -{ - while {count _items > 0} do - { - _i = _items select 0; - _n = {_i == _x} count _items; - _displayName = format ["[%2] %1",(getText (configFile >> "cfgWeapons" >> _i >> "displayName")),_n]; - _picture = getText (configFile >> "cfgWeapons" >> _i >> "picture"); - _index = lbAdd [ _idc, _displayName ]; - lbSetData [ _idc, _index, _i ]; - lbSetTooltip [ _idc, _index, _displayName ]; - lbSetPicture [ _idc, _index, _picture ]; - _items = _items - [_i]; - }; -}; - -lbSort [((uiNamespace getVariable "btc_gear_dlg") displayCtrl _idc), "ASC"]; - - -true \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/handle.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/handle.sqf deleted file mode 100644 index c41050516..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/handle.sqf +++ /dev/null @@ -1,104 +0,0 @@ -_type = _this select 0; - -_ui = uiNamespace getVariable "btc_gear_dlg"; - -switch _type do -{ - case 0 : - { - if (lbData [372, lbCurSel 372] == "") exitWith {}; - - _cargo = lbText [371, lbCurSel 371]; - - if (_cargo == "Uniforms" || _cargo == "Vests" || _cargo == "Backpacks" || _cargo == "HeadGear" || _cargo == "Goggles") exitWith - { - switch (lbText [371, lbCurSel 371]) do - { - case "Uniforms" : - { - _m = getMagazineCargo uniformContainer player; - _it = getItemCargo uniformContainer player; - player addUniform (lbData [372, lbCurSel 372]); - for "_i" from 0 to (count (_m select 0) - 1) do {(uniformContainer player) addMagazineCargo [((_m select 0) select _i),((_m select 1) select _i)];}; - for "_i" from 0 to (count (_it select 0) - 1) do {(uniformContainer player) addItemCargo [((_it select 0) select _i),((_it select 1) select _i)];}; - (_ui displayCtrl 374) ctrlSettext (getText (configFile >> "cfgWeapons" >> (lbData [372, lbCurSel 372]) >> "picture")); - }; - case "Vests" : - { - _m = getMagazineCargo vestContainer player; - _it = getItemCargo vestContainer player; - player addVest (lbData [372, lbCurSel 372]); - for "_i" from 0 to (count (_m select 0) - 1) do {(vestContainer player) addMagazineCargo [((_m select 0) select _i),((_m select 1) select _i)];}; - for "_i" from 0 to (count (_it select 0) - 1) do {(vestContainer player) addItemCargo [((_it select 0) select _i),((_it select 1) select _i)];}; - (_ui displayCtrl 375) ctrlSettext (getText (configFile >> "cfgWeapons" >> (lbData [372, lbCurSel 372]) >> "picture")); - }; - case "Backpacks" : - { - _m = getMagazineCargo backpackContainer player; - _it = getItemCargo backpackContainer player; - player addBackpack (lbData [372, lbCurSel 372]); - for "_i" from 0 to (count (_m select 0) - 1) do {(backpackContainer player) addMagazineCargo [((_m select 0) select _i),((_m select 1) select _i)];}; - for "_i" from 0 to (count (_it select 0) - 1) do {(backpackContainer player) addItemCargo [((_it select 0) select _i),((_it select 1) select _i)];}; - (_ui displayCtrl 376) ctrlSettext (getText (configFile >> "cfgVehicles" >> (lbData [372, lbCurSel 372]) >> "picture")); - }; - case "HeadGear" : - { - player addHeadGear (lbData [372, lbCurSel 372]); - (_ui displayCtrl 377) ctrlSettext (getText (configFile >> "cfgWeapons" >> (lbData [372, lbCurSel 372]) >> "picture")); - }; - case "Goggles" : - { - player addGoggles (lbData [372, lbCurSel 372]); - (_ui displayCtrl 378) ctrlSettext (getText (configFile >> "cfgGlasses" >> (lbData [372, lbCurSel 372]) >> "picture")); - }; - }; - }; - - if (_cargo == "Weapons") exitWith - { - player addWeapon (lbData [372, lbCurSel 372]); - }; - - //Add - _cond = true; - switch btc_gear_container_selected do - { - case 0 : {if (uniform player == "") then {_cond = false;};}; - case 1 : {if (vest player == "") then {_cond = false;};}; - case 2 : {if (backpack player == "") then {_cond = false;};}; - }; - if !(_cond) exitWith {}; - _obj_type = lbData [372, lbCurSel 372]; - switch btc_gear_container_selected do - { - case 0 : {if !(player canAddItemToUniform _obj_type) then {_cond = false;};}; - case 1 : {if !(player canAddItemToVest _obj_type) then {_cond = false;};}; - case 2 : {if !(player canAddItemToBackpack _obj_type) then {_cond = false;};}; - }; - if !(_cond) exitWith {hint "There is no enough space!"}; - switch btc_gear_container_selected do - { - case 0 : {player addItemToUniform _obj_type;[0,0] call btc_fnc_gear_change_container;}; - case 1 : {player addItemToVest _obj_type;[0,1] call btc_fnc_gear_change_container;}; - case 2 : {player addItemToBackpack _obj_type;[0,2] call btc_fnc_gear_change_container;}; - }; - //if ({_obj_type == _x} count assignedItems player == 0) then {player assignItem _obj_type}; - }; - case 1 : - { - //Remove - if (lbData [373, lbCurSel 373] == "") exitWith {}; - - switch btc_gear_container_selected do - { - case 0 : {player removeItemFromUniform (lbData [373, lbCurSel 373]);[0,0] call btc_fnc_gear_change_container;}; - case 1 : {player removeItemFromVest (lbData [373, lbCurSel 373]);[0,1] call btc_fnc_gear_change_container;}; - case 2 : {player removeItemFromBackpack (lbData [373, lbCurSel 373]);[0,2] call btc_fnc_gear_change_container;}; - }; - }; - case 2 : {player removeWeapon (primaryWeapon player)}; - case 3 : {player removeWeapon (secondaryWeapon player)}; - case 4 : {player removeWeapon (handGunWeapon player)}; -}; - -call btc_fnc_gear_get_text; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/lb_fill.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/lb_fill.sqf deleted file mode 100644 index d05fd7acd..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/lb_fill.sqf +++ /dev/null @@ -1,23 +0,0 @@ -_idc = _this select 0; -_items = _this select 1; - -_ui = uiNamespace getVariable "btc_gear_dlg"; - -//hint str(_this); - -lbClear _idc; -{ - private ["_type","_index","_displayName","_picture"]; - _type = "cfgMagazines"; - if (isClass (configFile >> "cfgWeapons" >> _x)) then {_type = "cfgWeapons"}; - if (isClass (configFile >> "cfgVehicles" >> _x)) then {_type = "cfgVehicles"}; - if (isClass (configFile >> "CfgGlasses" >> _x)) then {_type = "CfgGlasses"}; - _displayName = getText (configFile >> _type >> _x >> "displayName"); - _picture = getText (configFile >> _type >> _x >> "picture"); - _index = lbAdd [ _idc, _displayName ]; - lbSetData [ _idc, _index, _x ]; - lbSetTooltip [ _idc, _index, _displayName ]; - lbSetPicture [ _idc, _index, _picture ]; -} foreach _items; - -lbSort [(_ui displayCtrl _idc), "ASC"]; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/open_dlg.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/open_dlg.sqf deleted file mode 100644 index 5b60a81d9..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/open_dlg.sqf +++ /dev/null @@ -1,31 +0,0 @@ -// ((_this select 0) displayCtrl 379) ctrlSetPosition [0.5 * safezoneW + safezoneX,0.655 * safezoneH + safezoneY,0.2 * safezoneW,0.015 * safezoneH];((_this select 0) displayCtrl 379) ctrlCommit 0; - -btc_gear_acc_type = 0; - -closeDialog 0; -disableSerialization; -_dlg = createDialog "btc_gear_dlg"; -_ui = uiNamespace getVariable "btc_gear_dlg"; - -waitUntil {Dialog}; - -{_index = lbAdd [ 371, _x ];} foreach ["Uniforms","Vests","Backpacks","HeadGear","Goggles","Weapons","Magazines","Items"]; - -lbSetCurSel [371, 0]; - -//[3912,false] call btc_fnc_gear_show_button; - -_uniform = uniform player; -_vest = vest player; -_backPack = backPack player; -_headgear = headgear player; -_goggles = goggles player; - -if (_uniform != "") then {(_ui displayCtrl 374) ctrlSettext (getText (configFile >> "cfgWeapons" >> _uniform >> "picture"));}; -if (_vest != "") then {(_ui displayCtrl 375) ctrlSettext (getText (configFile >> "cfgWeapons" >> _vest >> "picture"));}; -if (_backPack != "") then {(_ui displayCtrl 376) ctrlSettext (getText (configFile >> "cfgVehicles" >> _backPack >> "picture"));}; -if (_headgear != "") then {(_ui displayCtrl 377) ctrlSettext (getText (configFile >> "cfgWeapons" >> _headgear >> "picture"));}; -if (_goggles != "") then {(_ui displayCtrl 378) ctrlSettext (getText (configFile >> "cfgGlasses" >> _goggles >> "picture"));}; -//Select uniform -call btc_fnc_gear_get_text; -[0,0] call btc_fnc_gear_change_container; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/remove_w_item.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/remove_w_item.sqf deleted file mode 100644 index e7b04b3d6..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/remove_w_item.sqf +++ /dev/null @@ -1,26 +0,0 @@ -_w = _this select 0; -_i = _this select 1; - -_ui = uiNamespace getVariable "btc_gear_dlg"; - -switch _w do -{ - case 0 : - { - _items = primaryWeaponItems player; - _item = _items select _i; - if (_item != "") then {player removePrimaryWeaponItem _item;(_ui displayCtrl (3930 + _i)) ctrlSettext "";}; - }; - case 1 : - { - _items = secondaryWeaponItems player; - _item = _items select _i; - if (_item != "") then {/*player removeSecondaryWeaponItem _item;(_ui displayCtrl (3940 + _i)) ctrlSettext "";*/}; - }; - case 2 : - { - _items = handgunItems player; - _item = _items select _i; - if (_item != "") then {player removeHandgunItem _item;(_ui displayCtrl (3950 + _i)) ctrlSettext "";}; - }; -}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/show_button.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/show_button.sqf deleted file mode 100644 index 4d410f68a..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/gear/show_button.sqf +++ /dev/null @@ -1,5 +0,0 @@ -_idc = _this select 0; -_cond = _this select 1; - -_ui = uiNamespace getVariable "btc_gear_dlg"; -(_ui displayCtrl _idc) ctrlShow _cond; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/allahu_akbar.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/allahu_akbar.sqf index 7e942f9a2..08d941375 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/allahu_akbar.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/allahu_akbar.sqf @@ -6,15 +6,15 @@ _suicider = _this getVariable "suicider"; _soundPath = [(str missionConfigFile), 0, -15] call BIS_fnc_trimString; _soundToPlay = _soundPath + "core\sounds\allahu_akbar.ogg"; if (Alive _suicider && [_suicider] call ace_common_fnc_isAwake) then { - playSound3d [_soundToPlay, _suicider, false, getPosASL _suicider, 40, random [0.9,1,1.2],100]; + playSound3d [_soundToPlay, _suicider, false, getPosASL _suicider, 40, random [0.9,1,1.2],100]; }; [{ - params ["_suicider"]; - if (Alive _suicider && [_suicider] call ace_common_fnc_isAwake) then { - {deleteVehicle _x;} forEach attachedObjects _suicider; - private _pos = getPos _suicider; - "Bo_GBU12_LGB_MI10" createVehicle [_pos select 0, _pos select 1, 0.1 + (_pos select 2)]; - [_pos] call btc_fnc_deaf_earringing; - }; + params ["_suicider"]; + if (Alive _suicider && [_suicider] call ace_common_fnc_isAwake) then { + {deleteVehicle _x;} forEach attachedObjects _suicider; + private _pos = getPos _suicider; + "Bo_GBU12_LGB_MI10" createVehicle [_pos select 0, _pos select 1, 0.1 + (_pos select 2)]; + [_pos] call btc_fnc_deaf_earringing; + }; }, [_suicider], 1.4] call CBA_fnc_waitAndExecute; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/boom.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/boom.sqf index fb957da73..080588cde 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/boom.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/boom.sqf @@ -6,4 +6,6 @@ _pos = getPos (_this select 1); deleteVehicle (_this select 1); "Bo_GBU12_LGB_MI10" createVehicle _pos; deleteVehicle (_this select 0); -[_pos] call btc_fnc_deaf_earringing; \ No newline at end of file +[_pos] call btc_fnc_deaf_earringing; +//separate execution to make it compatible in "singleplayer" and on dedicated servers +if (isDedicated) then {[_pos] remoteExec ["btc_fnc_ied_effects",-2];} else {[_pos] remoteExec ["btc_fnc_ied_effects",0];}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/check.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/check.sqf index be26783ff..5db2f09d6 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/check.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/check.sqf @@ -8,35 +8,35 @@ if (btc_debug_log) then {diag_log format ["START IED CHECK CITY ID %1",_city get private _ieds_check = (+ _ieds) select {!((_x select 2) isEqualTo objNull)}; [{ - params ["_args", "_id"]; - _args params ["_city", "_ieds", "_ieds_check"]; - - if (_city getVariable ["active", false]) then { - { - private _wreck = _x select 0; - private _ied = _x select 2; - if (!isNull _ied && {Alive _ied}) then { - { - if (side _x == btc_player_side && {(speed _x > 5 || vehicle _x != _x)}) then {[_wreck,_ied] spawn btc_fnc_ied_boom;}; - } foreach (_ied nearEntities ["allvehicles", 10]); - } else { - _ieds_check = _ieds_check - [_ied]; - }; - } foreach _ieds_check; - } else { - [_id] call CBA_fnc_removePerFrameHandler; - - private _data = []; - { - private _wreck = _x select 0; - if (!isNull _wreck && {Alive _wreck}) then { - _data pushBack [getPosATL _wreck,_x select 1,getDir _wreck,!((_x select 2) isEqualTo objNull)]; - deleteVehicle (_x select 2);deleteVehicle _wreck;}; - } foreach _ieds; - - _city setVariable ["ieds",_data]; - - if (btc_debug) then {systemChat format ["END IED CHECK CITY ID %1",_city getVariable "id"];}; - if (btc_debug_log) then {diag_log format ["END IED CHECK CITY ID %1",_city getVariable "id"];}; - }; + params ["_args", "_id"]; + _args params ["_city", "_ieds", "_ieds_check"]; + + if (_city getVariable ["active", false]) then { + { + private _wreck = _x select 0; + private _ied = _x select 2; + if (!isNull _ied && {Alive _ied}) then { + { + if (side _x == btc_player_side && {(speed _x > 5 || vehicle _x != _x)}) then {[_wreck,_ied] spawn btc_fnc_ied_boom;}; + } foreach (_ied nearEntities ["allvehicles", 10]); + } else { + _ieds_check = _ieds_check - [_ied]; + }; + } foreach _ieds_check; + } else { + [_id] call CBA_fnc_removePerFrameHandler; + + private _data = []; + { + private _wreck = _x select 0; + if (!isNull _wreck && {Alive _wreck}) then { + _data pushBack [getPosATL _wreck,_x select 1,getDir _wreck,!((_x select 2) isEqualTo objNull)]; + deleteVehicle (_x select 2);deleteVehicle _wreck;}; + } foreach _ieds; + + _city setVariable ["ieds",_data]; + + if (btc_debug) then {systemChat format ["END IED CHECK CITY ID %1",_city getVariable "id"];}; + if (btc_debug_log) then {diag_log format ["END IED CHECK CITY ID %1",_city getVariable "id"];}; + }; } , 1, [_city, _ieds, _ieds_check]] call CBA_fnc_addPerFrameHandler; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/create.sqf index e9df53ac9..a2450c55a 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/create.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/create.sqf @@ -1,23 +1,16 @@ -private ["_type","_pos","_dir","_active","_wreck","_ied"]; - -_pos = _this select 0; -_type = _this select 1; -_dir = _this select 2; -_active = _this select 3; +params ["_pos", "_type", "_dir","_active"]; if (btc_debug_log) then {diag_log format ["CREATE IED %1",_this];}; -_wreck = createSimpleObject [_type, _pos]; +private _wreck = createSimpleObject [_type, _pos]; _wreck setPosATL [ _pos select 0, _pos select 1, 0]; _wreck setDir _dir; _wreck setVectorUp surfaceNormal _pos; -if (_active) then { - _ied = createMine [selectRandom btc_type_ieds_ace,[_pos select 0, _pos select 1, -0.07],[],2]; - _ied setVectorUp surfaceNormal _pos; - [_wreck,_ied] call btc_fnc_ied_fired_near; -} else { - _ied = objNull; -}; +if !(_active) exitWith {[_wreck, _type, objNull]}; + +private _ied = createMine [selectRandom btc_type_ieds_ace,[_pos select 0, _pos select 1, btc_ied_offset], [], 2]; +_ied setVectorUp surfaceNormal _pos; +[_wreck,_ied] call btc_fnc_ied_fired_near; -[_wreck,_type,_ied] \ No newline at end of file +[_wreck, _type, _ied] \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/drone_active.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/drone_active.sqf new file mode 100644 index 000000000..e7f3b85f9 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/drone_active.sqf @@ -0,0 +1,19 @@ + +params ["_driver_drone"]; + +while {(count (waypoints group _driver_drone)) > 0} do { deleteWaypoint ((waypoints group _driver_drone) select 0); }; + +private _trigger = createTrigger ["EmptyDetector", getPos _driver_drone]; +_trigger setTriggerArea [10, 10, 0, false, -60]; +_trigger setTriggerActivation [str(btc_player_side), "PRESENT", true]; +_trigger setTriggerStatements ["this", "[thisTrigger] call btc_fnc_ied_drone_fire;", ""]; +_trigger setVariable ["btc_ied_drone", _driver_drone]; + +_trigger attachTo [vehicle _driver_drone,[0,0,0]]; + +if (btc_debug_log) then {diag_log format ["btc_fnc_ied_drone_active: _driver_drone = %1; POS %2 START LOOP",_driver_drone,getpos _driver_drone];}; + +(group _driver_drone) setBehaviour "CARELESS"; +(group _driver_drone) setSpeedMode "LIMITED"; + +_trigger diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/drone_create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/drone_create.sqf new file mode 100644 index 000000000..97e0382a1 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/drone_create.sqf @@ -0,0 +1,52 @@ + +params ["_city", "_area", ["_rpos", []], ["_group", createGroup [btc_enemy_side, true]]]; + +if (btc_debug_log) then { + diag_log format ["btc_fnc_ied_drone_create: _name = %1 _area %2",_city getVariable ["name","name"],_area]; +}; + +if (_rpos isEqualTo []) then { + _rpos = [position _city, _area] call btc_fnc_randomize_pos; +}; + +private _drone = createVehicle ["C_IDAP_UAV_06_antimine_F", _rpos, [], 0, "FLY"]; +createVehicleCrew _drone; +[driver _drone] joinSilent _group; +_group setVariable ["btc_ied_drone", true]; +{_x call btc_fnc_mil_unit_create} foreach units _group; + +[_group, _rpos, _area, 4] call CBA_fnc_taskPatrol; +_drone flyInHeight 10; + +//Main check +[{ + params ["_args", "_id"]; + _args params ["_driver_drone", "_rpos", "_area", "_trigger"]; + + private _group = group _driver_drone; + if (Alive _driver_drone && !isNull _driver_drone) then { + private _array = _driver_drone nearEntities ["SoldierWB", 200]; + if (_array isEqualTo []) then { + if (waypoints _group isEqualTo []) then { + [_group, _rpos, _area, 4] call CBA_fnc_taskPatrol; + (vehicle _driver_drone) flyInHeight 10; + deleteVehicle (_trigger deleteAt 0); + }; + } else { + if (_trigger isEqualTo []) then { + _trigger pushBack ([_driver_drone] call btc_fnc_ied_drone_active); + }; + if (btc_debug) then { + hint format ["Distance with UAV IED : %1", (_array select 0) distance (vehicle _driver_drone)]; + }; + (vehicle _driver_drone) doMove (ASLtoAGL getPosASL (_array select 0)); + }; + } else { + [_id] call CBA_fnc_removePerFrameHandler; + deleteVehicle (_trigger deleteAt 0); + _group setVariable ["btc_ied_drone",false]; + if (btc_debug_log) then {diag_log format ["btc_fnc_ied_drone_active: _driver_drone = %1; POS %2 END LOOP", _driver_drone, getpos _driver_drone];}; + }; +}, 5, [driver _drone, _rpos, _area, []]] call CBA_fnc_addPerFrameHandler; + +leader _group diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/drone_fire.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/drone_fire.sqf new file mode 100644 index 000000000..6d13ce0e6 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/drone_fire.sqf @@ -0,0 +1,6 @@ + +params ["_trigger"]; + +private _driver_drone = _trigger getVariable "btc_ied_drone"; + +_driver_drone forceWeaponFire ["BombDemine_01_F", "BombDemine_01_F"]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/effect_blurEffect.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/effect_blurEffect.sqf new file mode 100644 index 000000000..04b2b956e --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/effect_blurEffect.sqf @@ -0,0 +1,29 @@ +params [["_pos", [0,0,0]],["_caller", objNull]]; +if (!isPlayer _caller) exitWith {}; +if (alive _caller) then { + private _distance = (getPos _caller) distance _pos; + //blurry screen with cam shake + if(_distance < 40) then { + [] spawn { + addCamShake [1, 3, 3]; + + private _blur = ppEffectCreate ["DynamicBlur", 474]; + _blur ppEffectEnable true; + _blur ppEffectAdjust [0]; + _blur ppEffectCommit 0; + + waitUntil {ppEffectCommitted _blur}; + + _blur ppEffectAdjust [10]; + _blur ppEffectCommit 0; + + _blur ppEffectAdjust [0]; + _blur ppEffectCommit 5; + + waitUntil {ppEffectCommitted _blur}; + + _blur ppEffectEnable false; + ppEffectDestroy _blur; + }; + }; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/effect_color_smoke.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/effect_color_smoke.sqf new file mode 100644 index 000000000..da57ed293 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/effect_color_smoke.sqf @@ -0,0 +1,43 @@ +params [ + ["_pos", [0,0,0]], + ["_posASL", [0,0,0]], + ["_colorSel", ""], + ["_horizontal", 900], + ["_upwards", 500], + ["_color", []] +]; + +if (_colorSel isEqualTo "") exitWith {}; + +if (_colorSel isEqualTo "sand") then {_color = [[.55, .47, .37, .75], [0.78, 0.76, 0.71, 0]];}; +if (_colorSel isEqualTo "gray") then {_color = [[.1, .1, .1, .75], [0.78, 0.76, 0.71, 0]];}; +if (_colorSel isEqualTo "brown") then {_color = [[0.55, 0.41, 0.25, 1], [0.55, 0.41, 0.25, 0]];}; + +private _size = 1 + random 3; + +private _thingToFling = "Land_Bucket_F" createVehicleLocal [0,0,0]; +_thingToFling hideObject true; +_thingToFling setPos _pos; +private _smoke = "#particlesource" createVehicleLocal _posASL; +_smoke setPosASL _posASL; +_smoke setParticleCircle [0, [0, 0, 0]]; +_smoke setParticleRandom [0, [0, 0, -.5], [2, 2, .5], 0, 1, [0, 0, 0, 0.1], 0, 0]; +_smoke setParticleParams [["\A3\data_f\cl_fireD", 1, 0, 1], "", "Billboard", 1, 10.5, [0, 0, .7], [0, 0, 0], 0, 10, 7.85, 0.375, [_size,2*_size], _color, [0.08], 1, 0, "", "", _thingToFling]; +_smoke setDropInterval 0.005; + +_thingToFling setVelocity [(random _horizontal)-(_horizontal/2), (random _horizontal)-(_horizontal/2), 5+(random _upwards)]; +_thingToFling allowDamage false; +private _sleepTime = (random .5); +private _currentTime = 0; + +while { _currentTime < _sleepTime and _size > 0} do { + _smoke setParticleParams [["\A3\data_f\cl_fireD", 1, 0, 1], "", "Billboard", 1, 10, [0, 0, .7], [0, 0, 0], 0, 10, 7.85, 0.375, [_size,2*_size], _color, [0.08], 1, 0, "", "", _thingToFling]; + private _sleep = random .05; + _size = _size - (6*_sleep); + _currentTime = _currentTime + _sleep; + sleep _sleep; +}; + +_thingToFling setpos [0,0,0]; +deletevehicle _smoke; +deletevehicle _thingToFling; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/effect_rocks.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/effect_rocks.sqf new file mode 100644 index 000000000..beca45b27 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/effect_rocks.sqf @@ -0,0 +1,30 @@ +params [["_pos", [0,0,0]]]; +_pos params ["_x","_y"]; +_posASL = [_x,_y, (getTerrainHeightASL _pos)]; + +private _rockesArr = []; + +private _rVar = [ + [0, [1, 1, 0], [20, 20, 15], 3, 0.25, [0, 0, 0, 0.1], 0, 0], + [0, [1, 1, 0], [25, 25, 15], 3, 0.25, [0, 0, 0, 0.1], 0, 0], + [0, [1, 1, 0], [30, 30, 15], 3, 0.25, [0, 0, 0, 0.1], 0, 0] +]; + +private _rubVar = [ + [.45, .45], + [.27, .27], + [.09, .09] +]; + +for "_i" from 0 to ((count _rVar)-1) step 1 do { + private _rocks = "#particlesource" createVehicleLocal _posASL; + _rocks setPosASL _posASL; + _rocks setParticleCircle [0, [0, 0, 0]]; + _rocks setParticleRandom (_rVar select _i); + _rocks setParticleParams [["\A3\data_f\ParticleEffects\Universal\Mud.p3d", 1, 0, 1], "", "SpaceObject", 1, 12.5, [0, 0, 0], [0, 0, 15], 5, 100, 7.9, 1, (_rubVar select _i), [[0.1, 0.1, 0.1, 1], [0.25, 0.25, 0.25, 0.5], [0.5, 0.5, 0.5, 0]], [0.08], 1, 0, "", "", _posASL,0,false,0.3]; + _rocks setDropInterval 0.01; + _rockesArr pushBack _rocks; +}; + +sleep 0.22; +{deletevehicle _x; false} count _rockesArr; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/effect_shock_wave.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/effect_shock_wave.sqf new file mode 100644 index 000000000..1c6af9b29 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/effect_shock_wave.sqf @@ -0,0 +1,25 @@ +params [["_pos", [0,0,0]]]; +_pos params ["_x","_y"]; +_posASL = [_x,_y, (getTerrainHeightASL _pos)]; + +private _color = [ + [[0, 0, 0, 1], [.35, .35, .35, .35], [.35, .35, .35, 0]], + [[.78, .76, .71, 1], [.35, .35, .35, .35], [.35, .35, .35, 0]], + [[.55, .47, .37, 1], [.35, .35, .35, .35], [.35, .35, .35, 0]], + [[.1, .1, .1, 1], [.2, .2, .2, .35], [.35, .35, .35, 0]] +]; + +private _smokes = []; +for "_i" from 0 to ((count _color)-1) step 1 do { + private _smoke = "#particlesource" createVehicleLocal _posASL; + _smoke setposasl _posASL; + _smoke setParticleCircle [0, [0, 0, 0]]; + _smoke setParticleRandom [0, [8, 8, 2], [300, 300, 0], 0, 0.25, [0.05, 0.05, 0.05, 0.1], 0, 0]; + _smoke setParticleParams [["\A3\data_f\cl_fireD", 1, 0, 1], "", "Billboard", 1, 3, [0, 0, -1], [0, 0, -8], 0, 10, 7.85, .375, [6, 8, 10], (_color select _i), [.08], 1, 0, "", "", _posASL]; + _smoke setDropInterval .0004; + + _smokes pushBack _smoke; +}; + +sleep .07; +{ deletevehicle _x; false } count _smokes; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/effect_smoke.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/effect_smoke.sqf new file mode 100644 index 000000000..cd296ac94 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/effect_smoke.sqf @@ -0,0 +1,68 @@ +params [["_pos", [0,0,0]]]; +_pos params ["_x","_y"]; +_posASL = [_x,_y, (getTerrainHeightASL _pos)]; + +//creating some colored smoke (for a better visual effect) +[_pos,_posASL] spawn { + params ["_pos","_posASL"]; + private _smokePlu = selectRandom [6,8,10]; + for "_i" from 0 to (_smokePlu -1) do { + private _selection = selectRandom ["sand","gray","brown"]; + [_pos, _posASL, _selection] spawn btc_fnc_ied_effect_color_smoke; + }; +}; + +//creating smoke +private _smokes = []; + +private _color = [ + [[0, 0, 0, 1], [0.35, 0.35, 0.35, 0.35], [0.35, 0.35, 0.35, 0]], + [[.78, .76, .71, 1], [.35, .35, .35, 0.35], [0.35, 0.35, 0.35, 0]], + [[.55, .47, .37, 1], [.35, .35, .35, 0.35], [0.35, 0.35, 0.35, 0]], + [[.55, .47, .37, 1], [.35, .35, .35, 0.35], [0.35, 0.35, 0.35, 0]] +]; + +private _rndVar = [ + [0, [1.5 + random 2, 1.5 + random 2, 5], [1+random 5, 1+random 5, 10], 0, 0.25, [0.05, 0.05, 0.05, 0.1], 0, 0], + [0, [1.5 + random 2, 1.5 + random 2, 5], [1+random 5, 1+random 5, 6], 0, 0.25, [0.05, 0.05, 0.05, 0.1], 0, 0], + [0, [1 + random 3, 1 + random 3, 5], [1, 1, 4], 0, 0.25, [0.05, 0.05, 0.05, 0.1], 0, 0] +]; + +private _modPPar = [["\A3\data_f\cl_fireD", 1, 0, 1], "", "Billboard", 1, 10, [0, 0, 0], [0, 0, 0], 0, 10, 7.85, .375, [6 + random 4, 10 + random 4, 14 + random 4], [[.35, .35, .35, 1], [.2, .2, .2, 0.9], [0.35, 0.35, 0.35, 0]], [0.08], 1, 0, "", "", _posASL]; + +for "_i" from 0 to 6 step 1 do { + if (_i <= 3) then { + private _smoke = "#particlesource" createVehicleLocal _posASL; + _smoke setposasl _posASL; + _smoke setParticleCircle [0, [0, 0, 0]]; + _smoke setParticleRandom [0, [1.5 + random 2, 1.5 + random 2, 8], [1+random 5, 1+random 5, 15], 0, 0.25, [0.05, 0.05, 0.05, 0.1], 0, 0]; + _smoke setParticleParams [["\A3\data_f\cl_fireD", 1, 0, 1], "", "Billboard", 1, 8, [0, 0, 0], [0, 0, 0], 0, 10, 7.85, .375, [6 + random 4, 6 + random 4, 10 + random 4], (_color select _i), [0.08], 1, 0, "", "", _posASL]; + _smoke setDropInterval .01; + + _smokes pushBack _smoke; + }; + + if (_i isEqualTo 4) then { + { + _x setParticleRandom (_rndVar select 0); + _x setParticleParams _modPPar; + _x setDropInterval .03; + } count _smokes; + }; + if (_i isEqualTo 5) then { + { + _x setParticleRandom (_rndVar select 1); + _x setParticleParams _modPPar; + _x setDropInterval .05; + } count _smokes; + }; + if (_i isEqualTo 6) then { + { + _x setParticleRandom (_rndVar select 2); + _x setParticleParams _modPPar; + _x setDropInterval .05; + } count _smokes; + }; +}; +sleep 2; +{ deletevehicle _x; false} count _smokes; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/fired_near.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/fired_near.sqf index 1b7007e95..af427f0c2 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/fired_near.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/fired_near.sqf @@ -9,35 +9,35 @@ _range = 2; _array = []; [{ - params ["_args", "_id"]; - _args params ["_ied", "_wreck", "_pos", "_range", "_array"]; - if (Alive _ied && !isNull _ied) then { - private _list = _pos nearObjects ["Default",_range]; - if (count _list > 0) then { - { - private _b = _x; - private _bullet = typeOf _b; - if ({_bullet isKindOf _x} count ["SmokeShell", "FlareCore", "IRStrobeBase", "GrenadeHand_stone", "Smoke_120mm_AMOS_White", "TMR_R_DG32V_F"] > 0) exitWith {}; - if ({_bullet isKindOf _x} count ["TimeBombCore","BombCore", "Grenade"] > 0) then { - if !(_b in _array) then { - _array pushBack _b; - [{!Alive _b}, { - params ["_wreck","_ied"]; - if (Alive _ied) then {[_wreck,_ied] call btc_fnc_ied_boom;}; - }, [_wreck,_ied]] call CBA_fnc_waitUntilAndExecute; - }; - } else { - private _explosive = (getNumber(configFile >> "cfgAmmo" >> _bullet >> "explosive") > 0); - private _caliber = getNumber(configFile >> "CfgAmmo" >> _bullet >> "caliber"); - if (_explosive || _caliber > 1.6) then { - if (Alive _ied) then { - [_wreck,_ied] call btc_fnc_ied_boom; - }; - }; - }; - } foreach _list; - }; - } else { - [_id] call CBA_fnc_removePerFrameHandler; - }; + params ["_args", "_id"]; + _args params ["_ied", "_wreck", "_pos", "_range", "_array"]; + if (Alive _ied && !isNull _ied) then { + private _list = _pos nearObjects ["Default",_range]; + if (count _list > 0) then { + { + private _b = _x; + private _bullet = typeOf _b; + if ({_bullet isKindOf _x} count ["SmokeShell", "FlareCore", "IRStrobeBase", "GrenadeHand_stone", "Smoke_120mm_AMOS_White", "TMR_R_DG32V_F"] > 0) exitWith {}; + if ({_bullet isKindOf _x} count ["TimeBombCore","BombCore", "Grenade"] > 0) then { + if !(_b in _array) then { + _array pushBack _b; + [{!Alive _b}, { + params ["_wreck","_ied"]; + if (Alive _ied) then {[_wreck,_ied] call btc_fnc_ied_boom;}; + }, [_wreck,_ied]] call CBA_fnc_waitUntilAndExecute; + }; + } else { + private _explosive = (getNumber(configFile >> "cfgAmmo" >> _bullet >> "explosive") > 0); + private _caliber = getNumber(configFile >> "CfgAmmo" >> _bullet >> "caliber"); + if (_explosive || _caliber > 1.6) then { + if (Alive _ied) then { + [_wreck,_ied] call btc_fnc_ied_boom; + }; + }; + }; + } foreach _list; + }; + } else { + [_id] call CBA_fnc_removePerFrameHandler; + }; } , 0.01, [_ied, _wreck, _pos, _range, _array]] call CBA_fnc_addPerFrameHandler; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/ied_effects.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/ied_effects.sqf new file mode 100644 index 000000000..e2e88ea82 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/ied_effects.sqf @@ -0,0 +1,9 @@ +params [ + ["_pos", [0,0,0]], + ["_caller", player] +]; + +[_pos,_caller] spawn btc_fnc_ied_effect_blurEffect; +[_pos] spawn btc_fnc_ied_effect_smoke; +[_pos] spawn btc_fnc_ied_effect_rocks; +[_pos] spawn btc_fnc_ied_effect_shock_wave; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/init_area.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/init_area.sqf index acbee9c35..21c9b4862 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/init_area.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/init_area.sqf @@ -12,85 +12,85 @@ _array = _city getVariable ["ieds",[]]; _active = true; for "_i" from 1 to _n do { - private ["_sel_pos","_type_ied","_dir"]; - _sel_pos = _pos; - _sel_pos = [_pos, _area] call btc_fnc_randomize_pos; - _sel_pos = [_sel_pos,30,150,1,false] call btc_fnc_findsafepos; - - _type_ied = selectRandom btc_model_ieds; - - _dir = (random 360); - - if (random 1 > 0.3) then { - private ["_roads","_obj"]; - _roads = _sel_pos nearRoads _area; - if (count _roads > 0) then { - _obj = selectRandom _roads; - if (random 1 > 0.5) then {_sel_pos = _obj modelToWorld [3.5,0,0];} else {_sel_pos = _obj modelToWorld [-3.5,0,0];}; - }; - } else { - if (isOnRoad _sel_pos) then { - private ["_roads","_obj","_dist"]; - _roads = _sel_pos nearRoads 15; - if (count _roads > 0) then { - _obj = objNull;_dist = 100; - {if (_x distance _sel_pos < _dist) then {_dist = _x distance _sel_pos;_obj = _x;};} foreach _roads; - if (isNull _obj) exitWith {}; - if (random 1 > 0.5) then {_sel_pos = _obj modelToWorld [3.5,0,0];} else {_sel_pos = _obj modelToWorld [-3.5,0,0];}; - }; - } - }; - - - if (btc_debug) then { - //Marker - private ["_marker"]; - _marker = createmarker [format ["btc_ied_%1", _sel_pos], _sel_pos]; - format ["btc_ied_%1", _sel_pos] setmarkertype "mil_warning"; - format ["btc_ied_%1", _sel_pos] setmarkercolor "ColorRed"; - format ["btc_ied_%1", _sel_pos] setMarkerText "IED";//format ["ied %1", btc_hideouts_id]; - format ["btc_ied_%1", _sel_pos] setMarkerSize [0.8, 0.8]; - }; - - if (btc_debug_log) then {diag_log format ["btc_fnc_ied_create_in_area: _this = %1 ; POS %2 ; N %3(%4)",_this,_sel_pos,_i,_n];}; - - _array pushBack [_sel_pos,_type_ied,_dir,_active]; + private ["_sel_pos","_type_ied","_dir"]; + _sel_pos = _pos; + _sel_pos = [_pos, _area] call btc_fnc_randomize_pos; + _sel_pos = [_sel_pos,30,150,1,false] call btc_fnc_findsafepos; + + _type_ied = selectRandom btc_model_ieds; + + _dir = (random 360); + + if (random 1 > 0.3) then { + private ["_roads","_obj"]; + _roads = _sel_pos nearRoads _area; + if (count _roads > 0) then { + _obj = selectRandom _roads; + if (random 1 > 0.5) then {_sel_pos = _obj modelToWorld [3.5,0,0];} else {_sel_pos = _obj modelToWorld [-3.5,0,0];}; + }; + } else { + if (isOnRoad _sel_pos) then { + private ["_roads","_obj","_dist"]; + _roads = _sel_pos nearRoads 15; + if (count _roads > 0) then { + _obj = objNull;_dist = 100; + {if (_x distance _sel_pos < _dist) then {_dist = _x distance _sel_pos;_obj = _x;};} foreach _roads; + if (isNull _obj) exitWith {}; + if (random 1 > 0.5) then {_sel_pos = _obj modelToWorld [3.5,0,0];} else {_sel_pos = _obj modelToWorld [-3.5,0,0];}; + }; + } + }; + + + if (btc_debug) then { + //Marker + private ["_marker"]; + _marker = createmarker [format ["btc_ied_%1", _sel_pos], _sel_pos]; + format ["btc_ied_%1", _sel_pos] setmarkertype "mil_warning"; + format ["btc_ied_%1", _sel_pos] setmarkercolor "ColorRed"; + format ["btc_ied_%1", _sel_pos] setMarkerText "IED";//format ["ied %1", btc_hideouts_id]; + format ["btc_ied_%1", _sel_pos] setMarkerSize [0.8, 0.8]; + }; + + if (btc_debug_log) then {diag_log format ["btc_fnc_ied_create_in_area: _this = %1 ; POS %2 ; N %3(%4)",_this,_sel_pos,_i,_n];}; + + _array pushBack [_sel_pos,_type_ied,_dir,_active]; }; _active = false; for "_i" from 1 to _n do { - private ["_sel_pos","_type_ied","_dir"]; - _sel_pos = _pos; - _sel_pos = [_pos, _area] call btc_fnc_randomize_pos; - _sel_pos = [_sel_pos,30,150,1,false] call btc_fnc_findsafepos; + private ["_sel_pos","_type_ied","_dir"]; + _sel_pos = _pos; + _sel_pos = [_pos, _area] call btc_fnc_randomize_pos; + _sel_pos = [_sel_pos,30,150,1,false] call btc_fnc_findsafepos; - _type_ied = selectRandom btc_model_ieds; + _type_ied = selectRandom btc_model_ieds; - _dir = (random 360); + _dir = (random 360); - if (random 1 > 0.3) then { - private ["_roads","_obj","_ied_pos"]; - _roads = _sel_pos nearRoads _area; - if (count _roads > 0) then { - _obj = selectRandom _roads; - if (random 1 > 0.5) then {_sel_pos = _obj modelToWorld [3,0,0];} else {_sel_pos = _obj modelToWorld [-3,0,0];}; - }; - }; + if (random 1 > 0.3) then { + private ["_roads","_obj","_ied_pos"]; + _roads = _sel_pos nearRoads _area; + if (count _roads > 0) then { + _obj = selectRandom _roads; + if (random 1 > 0.5) then {_sel_pos = _obj modelToWorld [3,0,0];} else {_sel_pos = _obj modelToWorld [-3,0,0];}; + }; + }; - if (btc_debug) then { - //Marker - _marker = createmarker [format ["btc_ied_%1", _sel_pos], _sel_pos]; - format ["btc_ied_%1", _sel_pos] setmarkertype "mil_warning"; - format ["btc_ied_%1", _sel_pos] setmarkercolor "ColorBlue"; - format ["btc_ied_%1", _sel_pos] setMarkerText "IED (fake)";//format ["ied %1", btc_hideouts_id]; - format ["btc_ied_%1", _sel_pos] setMarkerSize [0.8, 0.8]; - }; + if (btc_debug) then { + //Marker + _marker = createmarker [format ["btc_ied_%1", _sel_pos], _sel_pos]; + format ["btc_ied_%1", _sel_pos] setmarkertype "mil_warning"; + format ["btc_ied_%1", _sel_pos] setmarkercolor "ColorBlue"; + format ["btc_ied_%1", _sel_pos] setMarkerText "IED (fake)";//format ["ied %1", btc_hideouts_id]; + format ["btc_ied_%1", _sel_pos] setMarkerSize [0.8, 0.8]; + }; - if (btc_debug_log) then {diag_log format ["btc_fnc_ied_create_in_area: _this = %1 ; POS %2 ; N %3(%4)",_this,_sel_pos,_i,_n];}; + if (btc_debug_log) then {diag_log format ["btc_fnc_ied_create_in_area: _this = %1 ; POS %2 ; N %3(%4)",_this,_sel_pos,_i,_n];}; - _array pushBack [_sel_pos,_type_ied,_dir,_active]; + _array pushBack [_sel_pos,_type_ied,_dir,_active]; }; _city setVariable ["ieds",_array]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_active.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_active.sqf index 3f4fa5765..2cd16482b 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_active.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_active.sqf @@ -27,9 +27,9 @@ _expl3 = "DemoCharge_Remote_Ammo" createVehicle (position _this); _expl3 attachTo [_this, [0.1,0.1,0.15],"Pelvis"]; [[_expl1,_expl2,_expl3], { - (_this select 0) setVectorDirAndUp [[0.5,0.5,0],[-0.5,0.5,0]]; - (_this select 1) setVectorDirAndUp [[1,0,0],[0,1,0]]; - (_this select 2) setVectorDirAndUp [[0.5,-0.5,0],[0.5,0.5,0]]; + (_this select 0) setVectorDirAndUp [[0.5,0.5,0],[-0.5,0.5,0]]; + (_this select 1) setVectorDirAndUp [[1,0,0],[0,1,0]]; + (_this select 2) setVectorDirAndUp [[0.5,-0.5,0],[0.5,0.5,0]]; }] remoteExec ["call", 0, false]; (group _this) setBehaviour "CARELESS"; @@ -38,18 +38,18 @@ _expl3 attachTo [_this, [0.1,0.1,0.15],"Pelvis"]; if (btc_debug_log) then {diag_log format ["btc_fnc_ied_suicider_active: _this = %1; POS %2 START LOOP",_this,getpos _this];}; [{ - params ["_args", "_id"]; - _args params ["_suicider","_trigger"]; - - if (Alive _suicider) then { - private _array = _suicider nearEntities ["SoldierWB", 30]; - if !(_array isEqualTo []) then { - _suicider doMove (position (_array select 0));//hint format ["MOVING %1",_man]; //_trigger setPos getPos _suicider; - }; - } else { - [_id] call CBA_fnc_removePerFrameHandler; - deleteVehicle _trigger; - group _suicider setVariable ["suicider",false]; - if (btc_debug_log) then {diag_log format ["btc_fnc_ied_suicider_active: _suicider = %1; POS %2 END LOOP",_suicider,getpos _suicider];}; - }; + params ["_args", "_id"]; + _args params ["_suicider","_trigger"]; + + if (Alive _suicider) then { + private _array = _suicider nearEntities ["SoldierWB", 30]; + if !(_array isEqualTo []) then { + _suicider doMove (position (_array select 0));//hint format ["MOVING %1",_man]; //_trigger setPos getPos _suicider; + }; + } else { + [_id] call CBA_fnc_removePerFrameHandler; + deleteVehicle _trigger; + group _suicider setVariable ["suicider",false]; + if (btc_debug_log) then {diag_log format ["btc_fnc_ied_suicider_active: _suicider = %1; POS %2 END LOOP",_suicider,getpos _suicider];}; + }; } , 0.5, [_this,_trigger]] call CBA_fnc_addPerFrameHandler; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_create.sqf index f85dd24ac..b03b2915e 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_create.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/ied/suicider_create.sqf @@ -1,49 +1,47 @@ -private ["_city","_area","_rpos","_unit_type","_group","_suicider"]; +params ["_city", "_area"]; -_city = _this select 0; -_area = _this select 1; - -if (btc_debug_log) then -{ - diag_log format ["btc_fnc_ied_suicider_create: _name = %1 _area %2",_city getVariable ["name","name"],_area]; +if (btc_debug_log) then { + diag_log format ["btc_fnc_ied_suicider_create: _name = %1 _area %2",_city getVariable ["name","name"],_area]; }; _pos = []; switch (typeName _city) do { - case "ARRAY" :{_pos = _city;}; - case "STRING":{_pos = getMarkerPos _city;}; - case "OBJECT":{_pos = position _city;}; + case "ARRAY" :{_pos = _city;}; + case "STRING":{_pos = getMarkerPos _city;}; + case "OBJECT":{_pos = position _city;}; }; -_rpos = [_pos, _area] call btc_fnc_randomize_pos; +private _rpos = [_pos, _area] call btc_fnc_randomize_pos; -_unit_type = selectRandom btc_civ_type_units; +private _unit_type = selectRandom btc_civ_type_units; -_group = createGroup civilian; +private _group = createGroup civilian; _group createUnit [_unit_type, _rpos, [], 0, "NONE"]; (leader _group) setpos _rpos; -_group spawn btc_fnc_civ_addWP; +[_group] spawn btc_fnc_civ_addWP; _group setVariable ["suicider",true]; -_suicider = leader _group; +private _suicider = leader _group; _suicider call btc_fnc_civ_unit_create; //Main check [{ - params ["_args", "_id"]; - _args params ["_suicider"]; - - if (Alive _suicider && !isNull _suicider) then { - if (count (getpos _suicider nearEntities ["SoldierWB", 25]) > 0) then { - [_id] call CBA_fnc_removePerFrameHandler; - _suicider call btc_fnc_ied_suicider_active; - }; - } else { - [_id] call CBA_fnc_removePerFrameHandler; - }; -} , 5, [_suicider]] call CBA_fnc_addPerFrameHandler; \ No newline at end of file + params ["_args", "_id"]; + _args params ["_suicider"]; + + if (Alive _suicider && !isNull _suicider) then { + if (count (getpos _suicider nearEntities ["SoldierWB", 25]) > 0) then { + [_id] call CBA_fnc_removePerFrameHandler; + _suicider call btc_fnc_ied_suicider_active; + }; + } else { + [_id] call CBA_fnc_removePerFrameHandler; + }; +} , 5, [_suicider]] call CBA_fnc_addPerFrameHandler; + +leader _group diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask.sqf index b4dcbefa9..60f517bbc 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask.sqf @@ -1,26 +1,22 @@ -if (isNil {player getVariable "interpreter"}) exitWith {hint "I can't understand what is saying";}; +params ["_man","_isInterrogate"]; -private ["_man","_rep","_chance","_info","_info_type","_random","_complain","_isInterrogate"]; - -_man = _this select 0; -_isInterrogate = _this select 1; +if (isNil {player getVariable "interpreter"}) exitWith {[name _man,localize "STR_BTC_HAM_CON_INFO_ASKREP_NOINTER"] spawn btc_fnc_showSubtitle;}; //I can't understand what is saying if !(_man call ace_medical_fnc_isInStableCondition) exitWith { - _random = (round random 3); - _complain = switch _random do { - case 0 : {"Help me!"}; - case 1 : {"I am suffering!"}; - case 2 : {"Injure!"}; - case 3 : {"I have open wound!"}; - }; - hint format ["%1 %2", name _man, _complain]; + private _complain = selectRandom [ + localize "STR_BTC_HAM_CON_INFO_ASK_WOUNDED1", //Help me! + localize "STR_BTC_HAM_CON_INFO_ASK_WOUNDED2", //I am suffering! + localize "STR_BTC_HAM_CON_INFO_ASK_WOUNDED3", //Injure! + localize "STR_BTC_HAM_CON_INFO_ASK_WOUNDED4" //I have open wound! + ]; + [name _man, _complain] spawn btc_fnc_showSubtitle; }; -if ((!isNil {_man getVariable "btc_already_asked"}) || (_man getVariable ["btc_already_interrogated",false])) exitWith {hint format ["%1 I already answered to your question!", name _man];}; +if ((!isNil {_man getVariable "btc_already_asked"}) || (_man getVariable ["btc_already_interrogated",false])) exitWith {[name _man, localize "STR_BTC_HAM_CON_INFO_ASK_ALLREADYANS"] spawn btc_fnc_showSubtitle;}; //I already answered to your question! if ((round random 3) >= 2 || !_isInterrogate) then { - _man setVariable ["btc_already_asked",true]; - if (_isInterrogate) then {_man setVariable ["btc_already_interrogated",true,true];}; + _man setVariable ["btc_already_asked",true]; + if (_isInterrogate) then {_man setVariable ["btc_already_interrogated",true,true];}; }; @@ -31,17 +27,18 @@ btc_int_ask_data = nil; waitUntil {!(isNil "btc_int_ask_data")}; -_rep = btc_int_ask_data; +private _rep = btc_int_ask_data; -_chance = (random 300) + (random _rep + (_rep/2)); -_info = "";_info_type = ""; +private _chance = (random 300) + (random _rep + (_rep/2)); +private _info = ""; +private _info_type = ""; switch !(_isInterrogate) do { - case (_chance < 200) : {_info_type = "NO";}; - case (_chance >= 200 && _chance < 600) : {_info_type = "FAKE";}; - case (_chance >= 600) : {_info_type = "REAL";}; + case (_chance < 200) : {_info_type = "NO";}; + case (_chance >= 200 && _chance < 600) : {_info_type = "FAKE";}; + case (_chance >= 600) : {_info_type = "REAL";}; }; if (_isInterrogate) then {_info_type = "REAL";}; -if (_info_type == "NO") exitWith {hint format ["%1: I've no information for you", name _man];}; +if (_info_type == "NO") exitWith {[name _man, localize "STR_BTC_HAM_CON_INFO_ASK_NOINFO"] spawn btc_fnc_showSubtitle;}; //I've no information for you btc_int_ask_data = nil; [8,nil,player] remoteExec ["btc_fnc_int_ask_var", 2]; @@ -50,42 +47,41 @@ waitUntil {!(isNil "btc_int_ask_data")}; private _final_phase = btc_int_ask_data isEqualTo 0; -_random = random 10; -switch (true) do { - case (_random < 4) : {_info = "TROOPS";}; - case (_random >= 4 && _random < 8) : {_info = ["HIDEOUT", "TROOPS"] select _final_phase;}; - case (_random >= 8) : {_info = "CACHE";}; -}; +private _info = selectRandomWeighted [ + "TROOPS", 0.4, + ["HIDEOUT", "TROOPS"] select _final_phase, 0.4, + "CACHE", 0.2 +]; switch (_info_type) do { - case "REAL" : { - switch (_info) do { - case "TROOPS" : { - [(name _man),true] spawn btc_fnc_info_troops; - }; - case "HIDEOUT" : { - [(name _man),true] spawn btc_fnc_info_hideout_asked; - }; - case "CACHE" : { - hint format ["%1: I'll show you some hint on the map", name _man]; - sleep 2; - [true,1] remoteExec ["btc_fnc_info_cache", 2]; - }; - }; - }; - case "FAKE" : { - switch (_info) do { - case "TROOPS" : { - [(name _man),false] spawn btc_fnc_info_troops; - }; - case "HIDEOUT" : { - [(name _man),false] spawn btc_fnc_info_hideout_asked; - }; - case "CACHE" : { - hint format ["%1: I'll show you some hint on the map", name _man]; - sleep 2; - [false,1] remoteExec ["btc_fnc_info_cache", 2]; - }; - }; - }; -}; \ No newline at end of file + case "REAL" : { + switch (_info) do { + case "TROOPS" : { + [(name _man),true] spawn btc_fnc_info_troops; + }; + case "HIDEOUT" : { + [(name _man),true] spawn btc_fnc_info_hideout_asked; + }; + case "CACHE" : { + [name _man, localize "STR_BTC_HAM_CON_INFO_ASK_CACHEMAP"] spawn btc_fnc_showSubtitle; //I'll show you some hint on the map + sleep 2; + [true,1] remoteExec ["btc_fnc_info_cache", 2]; + }; + }; + }; + case "FAKE" : { + switch (_info) do { + case "TROOPS" : { + [(name _man),false] spawn btc_fnc_info_troops; + }; + case "HIDEOUT" : { + [(name _man),false] spawn btc_fnc_info_hideout_asked; + }; + case "CACHE" : { + [name _man, localize "STR_BTC_HAM_CON_INFO_ASK_CACHEMAP"] spawn btc_fnc_showSubtitle; //I'll show you some hint on the map + sleep 2; + [false,1] remoteExec ["btc_fnc_info_cache", 2]; + }; + }; + }; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask_reputation.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask_reputation.sqf index 6564e5ec7..50a81c796 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask_reputation.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/ask_reputation.sqf @@ -1,8 +1,6 @@ -if (isNil {player getVariable "interpreter"}) exitWith {hint "I can't understand what is saying";}; +params ["_man"]; -private ["_man","_rep","_chance","_info","_info_type","_random","_text","_ho_left"]; - -_man = _this select 0; +if (isNil {player getVariable "interpreter"}) exitWith {[name _man,localize "STR_BTC_HAM_CON_INFO_ASKREP_NOINTER"] spawn btc_fnc_showSubtitle;}; //I can't understand what is saying btc_int_ask_data = nil; @@ -10,31 +8,31 @@ btc_int_ask_data = nil; waitUntil {!(isNil "btc_int_ask_data")}; -_rep = btc_int_ask_data; +private _rep = btc_int_ask_data; +private "_ho_left"; if ((round random 1) isEqualTo 1) then { - btc_int_ask_data = nil; - [8,nil,player] remoteExec ["btc_fnc_int_ask_var", 2]; + btc_int_ask_data = nil; + [8,nil,player] remoteExec ["btc_fnc_int_ask_var", 2]; - waitUntil {!(isNil "btc_int_ask_data")}; + waitUntil {!(isNil "btc_int_ask_data")}; - _ho_left = format ["I heard about %1 hideouts left.", btc_int_ask_data]; + _ho_left = format [localize "STR_BTC_HAM_CON_INFO_ASKREP_HIDEOUTS", btc_int_ask_data]; //I heard about %1 hideouts left. } else { - _ho_left = ""; + _ho_left = ""; }; -switch (true) do { - case (_rep < 200) : {_info_type = "very low";}; - case (_rep >= 200 && _rep < 500) : {_info_type = "low";}; - case (_rep >= 500 && _rep < 750) : {_info_type = "normal";}; - case (_rep >= 750) : {_info_type = "high";}; +private _info_type = switch (true) do { + case (_rep < 200): {localize "STR_BTC_HAM_CON_INFO_ASKREP_VLOW"}; //very low + case (_rep >= 200 && _rep < 500): {localize "STR_BTC_HAM_CON_INFO_ASKREP_LOW"}; //low + case (_rep >= 500 && _rep < 750): {localize "STR_BTC_HAM_CON_INFO_ASKREP_NORMAL"}; //normal + case (_rep >= 750): {localize "STR_BTC_HAM_CON_INFO_ASKREP_HIGH"}; //high }; -_chance = (random 100); -switch (true) do { - case (_chance < 30) : {_text = "Sir, your reputation is";}; - case (_chance >= 30 && _chance < 60) : {_text = "Hello ! Your reputation is";}; - case (_chance >= 60) : {_text = format ["I am %1 and I think your reputation is", name _man];}; -}; +private _text = selectRandom [ + localize "STR_BTC_HAM_CON_INFO_ASKREP_ASK1", //Sir, your reputation is + localize "STR_BTC_HAM_CON_INFO_ASKREP_ASK2", //Hello ! Your reputation is + localize "STR_BTC_HAM_CON_INFO_ASKREP_ASK3" //I think your reputation is +]; -hint format ["%1 %2. %3", _text, _info_type, _ho_left]; \ No newline at end of file +[name _man,format ["%1 %2. %3", _text, _info_type, _ho_left]] spawn btc_fnc_showSubtitle; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/cache.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/cache.sqf index f22a6e13a..1fa1fb3c3 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/cache.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/cache.sqf @@ -4,17 +4,17 @@ private ["_pos","_marker"]; if (isNull btc_cache_obj) exitWith {}; _pos = [ - ((btc_cache_pos select 0) + (random btc_cache_info - random btc_cache_info)), - ((btc_cache_pos select 1) + (random btc_cache_info - random btc_cache_info)) + ((btc_cache_pos select 0) + (random btc_cache_info - random btc_cache_info)), + ((btc_cache_pos select 1) + (random btc_cache_info - random btc_cache_info)) ]; if !(_this select 0) then { - private "_axis"; - _axis = getNumber (configfile >> "CfgWorlds" >> worldName >> "mapSize") / 2; - _pos = [ - (_axis + (random (btc_cache_info + _axis))), - (_axis + (random (btc_cache_info + _axis))) - ]; + private "_axis"; + _axis = getNumber (configfile >> "CfgWorlds" >> worldName >> "mapSize") / 2; + _pos = [ + (_axis + (random (btc_cache_info + _axis))), + (_axis + (random (btc_cache_info + _axis))) + ]; }; _marker = createmarker [format ["%1", _pos], _pos]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/give_intel.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/give_intel.sqf index 5cc859560..eb8af646e 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/give_intel.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/give_intel.sqf @@ -9,10 +9,10 @@ _n = random 100; if (count btc_hideouts == 0) then {_n = (btc_info_intel_type select 0) - 10;}; switch (true) do { - case (_n < (btc_info_intel_type select 0)) : {[true,0] spawn btc_fnc_info_cache;};//cache - case (_n > (btc_info_intel_type select 1) && _n < 101) : {_id = 4;[true,0] spawn btc_fnc_info_cache;[true] spawn btc_fnc_info_hideout;};//both - case (_n > (btc_info_intel_type select 0) && _n < (btc_info_intel_type select 1)) : {_id = 5;[true] spawn btc_fnc_info_hideout;};//hd - default {_id = 0;[3] remoteExec ["btc_fnc_show_hint", (_this select 0)];}; + case (_n < (btc_info_intel_type select 0)) : {[true,0] spawn btc_fnc_info_cache;};//cache + case (_n > (btc_info_intel_type select 1) && _n < 101) : {_id = 4;[true,0] spawn btc_fnc_info_cache;[true] spawn btc_fnc_info_hideout;};//both + case (_n > (btc_info_intel_type select 0) && _n < (btc_info_intel_type select 1)) : {_id = 5;[true] spawn btc_fnc_info_hideout;};//hd + default {_id = 0;[3] remoteExec ["btc_fnc_show_hint", (_this select 0)];}; }; if (_id == 0) exitWith {}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/has_intel.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/has_intel.sqf index 25f120a87..f3500ee58 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/has_intel.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/has_intel.sqf @@ -4,15 +4,15 @@ private ["_body","_asker"]; _body = _this select 0; _asker = _this select 1; -if (btc_debug_log) then {diag_log format ["getVariable intel has_intel: %1",_body getVariable "intel"];}; +if (btc_debug_log) then {diag_log format ["getVariable intel has_intel: %1",_body getVariable "intel"];}; if (_body getVariable ["intel",false] && !(_body getVariable ["btc_already_interrogated",false])) then { - _body setVariable ["intel",false]; - if (isServer) then { - [_asker] spawn btc_fnc_info_give_intel; - } else { - [_asker] remoteExec ["btc_fnc_info_give_intel", 2]; - }; + _body setVariable ["intel",false]; + if (isServer) then { + [_asker] spawn btc_fnc_info_give_intel; + } else { + [_asker] remoteExec ["btc_fnc_info_give_intel", 2]; + }; } else { - [3] remoteExec ["btc_fnc_show_hint", _asker]; + [3] remoteExec ["btc_fnc_show_hint", _asker]; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/hideout.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/hideout.sqf index 6e4940881..00be419b8 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/hideout.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/hideout.sqf @@ -6,13 +6,13 @@ private ["_ho","_pos","_marker","_array"]; _ho = btc_hq; if (isNull _ho) then { - _ho = selectRandom btc_hideouts; - btc_hq =_ho; + _ho = selectRandom btc_hideouts; + btc_hq =_ho; }; _pos = [ - (((getPos _ho) select 0) + (random btc_info_hideout_radius - random btc_info_hideout_radius)), - (((getPos _ho) select 1) + (random btc_info_hideout_radius - random btc_info_hideout_radius)) + (((getPos _ho) select 0) + (random btc_info_hideout_radius - random btc_info_hideout_radius)), + (((getPos _ho) select 1) + (random btc_info_hideout_radius - random btc_info_hideout_radius)) ]; _marker = createmarker [format ["%1", _pos], _pos]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/hideout_asked.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/hideout_asked.sqf index 3f71ebf23..a78855c22 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/hideout_asked.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/hideout_asked.sqf @@ -1,41 +1,32 @@ - -private ["_name","_is_real","_text"]; - -_name = _this select 0; -_is_real = _this select 1; - -_text = ""; - -switch _is_real do { - case true : { - btc_int_ask_data = nil; - [1,[],player] remoteExec ["btc_fnc_int_ask_var", 2]; - - waitUntil {!(isNil "btc_int_ask_data")}; - - if (!isNull btc_int_ask_data) then { - private ["_hideout","_dist","_dir","_card"]; - _hideout = btc_int_ask_data; - _dist = (player distance _hideout) + ((random 500) - (random 500)); - _dir = player getDir _hideout; - _card = [_dir] call btc_fnc_get_cardinal; - _text = format ["%1: I saw a lot of militia activity towards %2, %3 meter from here. Probably there is an hideout!", _name,_card,round _dist]; - } else {_text = format ["%1: There are no hideout around here!", _name];}; - }; - case false : { - if ((random 1) > 0.5) then { - private ["_array","_dist","_dir"]; - _array = ["N","E","W","S","NW","NE","SE","SW"]; - _dir = selectRandom _array; - _dist = 300 + (random 2000); - _text = format ["%1: I saw a lot of militia activity towards %2, %3 meter from here. Probably there is an hideout!", _name,_dir,round _dist]; - } else { - _text = format ["%1: There are no hideout around here!", _name]; - }; - }; +params ["_name","_is_real",["_text",""]]; + +if (_is_real) then { + btc_int_ask_data = nil; + [1,[],player] remoteExec ["btc_fnc_int_ask_var", 2]; + + waitUntil {!(isNil "btc_int_ask_data")}; + + if (!isNull btc_int_ask_data) then { + private _hideout = btc_int_ask_data; + private _dist = (player distance _hideout) + ((random 500) - (random 500)); + private _dir = player getDir _hideout; + private _card = [_dir] call btc_fnc_get_cardinal; + _text = format [localize "STR_BTC_HAM_CON_INFO_ASKHIDEOUT_TRUE", _card,round _dist]; //I saw a lot of militia activity towards %2, %3 meter from here. Probably there is an hideout! + } else { + _text = localize "STR_BTC_HAM_CON_INFO_ASKHIDEOUT_FALSE"; //There are no hideout around here! + }; +} else { + if ((random 1) > 0.5) then { + private _array = ["N","E","W","S","NW","NE","SE","SW"]; + private _dir = selectRandom _array; + private _dist = 300 + (random 2000); + _text = format [localize "STR_BTC_HAM_CON_INFO_ASKHIDEOUT_TRUE", _dir,round _dist]; //I saw a lot of militia activity towards %2, %3 meter from here. Probably there is an hideout! + } else { + _text = localize "STR_BTC_HAM_CON_INFO_ASKHIDEOUT_FALSE"; //There are no hideout around here! + }; }; if (btc_debug) then {_text = _text + " - " + str(_is_real)}; -hint _text; -player createDiaryRecord ["Diary log", [str(mapGridPosition player) + " - " + _name, _text]]; \ No newline at end of file +[_name, _text] spawn btc_fnc_showSubtitle; +player createDiaryRecord [localize "STR_BTC_HAM_CON_INFO_ASKHIDEOUT_DIARYLOG", [str(mapGridPosition player) + " - " + _name, _text]]; //Diary log diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/search_for_intel.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/search_for_intel.sqf index 82d799a27..8dbaaa2cd 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/search_for_intel.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/search_for_intel.sqf @@ -1,8 +1,10 @@ -[btc_int_search_intel_time,"Searching for intel . . .",_this] call btc_fnc_int_action_result; +params ["_target"]; -waitUntil {!(isNil "btc_int_action_result")}; +private _onFinish = { + params ["_args"]; + _args params ["_target", "_player"]; + [_target, _player] remoteExec ["btc_fnc_info_has_intel", 2]; +}; -if (btc_int_action_result) then { - [_this,player] remoteExec ["btc_fnc_info_has_intel", 2]; -}; \ No newline at end of file +[btc_int_search_intel_time, [_target, player], _onFinish, {}, localize "STR_BTC_HAM_CON_INFO_SEARCH_BAR"] call btc_fnc_int_action_result; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/troops.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/troops.sqf index e16659de3..90e640102 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/troops.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/info/troops.sqf @@ -1,41 +1,28 @@ +params ["_name","_is_real",["_text",""]]; -private ["_name","_is_real","_text"]; - -_name = _this select 0; -_is_real = _this select 1; - -_text = ""; - -switch _is_real do -{ - case true : { - private ["_array"]; - _array = (position player) nearEntities [btc_type_units, 2500]; - if (count _array > 0) then { - private ["_man","_dist","_dir","_card"]; - _man = _array select 0; - _dist = (player distance _man) + ((random 150) - (random 150)); - _dir = player getDir _man; - _card = [_dir] call btc_fnc_get_cardinal; - _text = format ["%1: I saw some militia movement %2, %3 meter from here", _name,_card,round _dist]; - } else { - _text = format ["%1: I didn't see any militia movement in this area!", _name]; - }; - }; - case false : { - if ((random 1) > 0.5) then { - private ["_array","_dist","_dir"]; - _array = ["N","E","W","S","NW","NE","SE","SW"]; - _dir = selectRandom _array; - _dist = (500 + (random 1000)); - _text = format ["%1: I saw some militia movement %2, %3 meter from here", _name,_dir,round _dist]; - } else { - _text = format ["%1: I didn't see any militia movement in this area!", _name]; - }; - }; +if (_is_real) then { + private _array = (position player) nearEntities [btc_type_units, 2500]; + if (count _array > 0) then { + private _man = _array select 0; + private _dist = (player distance _man) + ((random 150) - (random 150)); + private _dir = player getDir _man; + private _card = [_dir] call btc_fnc_get_cardinal; + _text = format [localize "STR_BTC_HAM_CON_INFO_TROOPS_TRUE", _card,round _dist]; //I saw some militia movement %2, %3 meter from here + } else { + _text = localize "STR_BTC_HAM_CON_INFO_TROOPS_FALSE"; //I didn't see any militia movement in this area! + }; +} else { + if ((random 1) > 0.5) then { + private _array = ["N","E","W","S","NW","NE","SE","SW"]; + private _dir = selectRandom _array; + private _dist = 500 + (random 1000); + _text = format [(localize "STR_BTC_HAM_CON_INFO_TROOPS_TRUE"), _dir,round _dist]; //I saw some militia movement %2, %3 meter from here + } else { + _text = localize "STR_BTC_HAM_CON_INFO_TROOPS_FALSE"; //I didn't see any militia movement in this area! + }; }; if (btc_debug) then {_text = _text + " - " + str(_is_real)}; -hint _text; -player createDiaryRecord ["Diary log", [str(mapGridPosition player) + " - " + _name, _text]]; \ No newline at end of file +[_name, _text] spawn btc_fnc_showSubtitle; +player createDiaryRecord [localize "STR_BTC_HAM_CON_INFO_ASKHIDEOUT_DIARYLOG", [str(mapGridPosition player) + " - " + _name, _text]]; //Diary log diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/action_result.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/action_result.sqf index 22e76f38e..717525160 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/action_result.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/action_result.sqf @@ -1,34 +1,17 @@ -btc_int_action_result = nil; -_this spawn { - private ["_time","_title","_target","_radius","_ctrlProgressBar","_ctrlProgressBarTitle"]; - _time = _this select 0; - _title = _this select 1; - _target = _this select 2; - _radius = 7; - if (_target isKindOf "Man") then {_radius = 4;}; - if (_target isKindOf "Helicopter") then {_radius = 20;}; - if (count _this > 3) then {_radius = _this select 3;}; - disableSerialization; - createDialog "btc_dlg_progressBar"; - _ctrlProgressBar = uiNamespace getVariable "btc_dlg_ctrlProgressBar"; - _ctrlProgressBarTitle = uiNamespace getVariable "btc_dlg_title"; - _ctrlProgressBar ctrlSetPosition [ - safezoneX + 0.1 * safezoneW, - safezoneY + 0.1 * safezoneH, - 0.8 * safezoneW, - 0.01 * safezoneH - ]; - _ctrlProgressBar ctrlCommit (_time / accTime); - _ctrlProgressBarTitle ctrlSetText _title; +params ["_totalTime", "_args", "_onFinish", "_onFail", ["_localizedTitle", ""]]; +_args params ["_target"]; +private _radius = 7; +if (_target isKindOf "Man") then {_radius = 4;}; +if (_target isKindOf "Helicopter") then {_radius = 20;}; - _time = time + _time; - waitUntil { - !dialog || {!alive player} || {player getVariable ["ACE_isUnconscious",false]} || {time > _time} || {_target distance player > _radius} - }; +_args pushBack _radius; - closeDialog 0; +_condition = { + params ["_args"]; + _args params ["_target", "_player"]; + _target distance _player < (_args select ((count _args) - 1)) +}; - if (time > _time) then {btc_int_action_result = true} else {btc_int_action_result = false}; -}; \ No newline at end of file +[_totalTime, _args, _onFinish, _onFail, _localizedTitle, _condition, ["isnotinside"]] call ace_common_fnc_progressBar; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/add_actions.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/add_actions.sqf index c32237707..b5cb046d1 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/add_actions.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/add_actions.sqf @@ -1,88 +1,103 @@ -private ["_action"]; - //Database -//_action = ["Database","Database","",{},{serverCommandAvailable "#logout"}] call ace_interact_menu_fnc_createAction; -_action = ["Database","Database","\A3\ui_f\data\igui\cfg\simpleTasks\letters\D_ca.paa",{},{serverCommandAvailable "#logout" || !isMultiplayer}] call ace_interact_menu_fnc_createAction; +private _action = ["Database", localize "STR_BTC_HAM_ACTION_DATA_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\D_ca.paa", {}, {serverCommandAvailable "#logout" || !isMultiplayer}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions"], _action] call ace_interact_menu_fnc_addActionToObject; -_action = ["request_save","Save","\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa",{call btc_fnc_db_request_save;},{true}] call ace_interact_menu_fnc_createAction; +_action = ["request_save", localize "STR_BTC_HAM_ACTION_DATA_SAVE", "\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa", {call btc_fnc_db_request_save;}, {true}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions","Database"], _action] call ace_interact_menu_fnc_addActionToObject; -_action = ["request_delete","Delete","\A3\ui_f\data\igui\cfg\simpleTasks\types\exit_ca.paa",{call btc_fnc_db_request_delete;},{true}] call ace_interact_menu_fnc_createAction; +_action = ["request_delete", localize "STR_BTC_HAM_ACTION_DATA_DELETE", "\A3\ui_f\data\igui\cfg\simpleTasks\types\exit_ca.paa", {call btc_fnc_db_request_delete;}, {true}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions","Database"], _action] call ace_interact_menu_fnc_addActionToObject; //Intel -_action = ["Search_intel", "Search for intel", "\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa", {(_this select 0) spawn btc_fnc_info_search_for_intel;}, {!Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; +_action = ["Search_intel", localize "STR_BTC_HAM_ACTION_INTEL_SEARCH", "\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa", {(_this select 0) spawn btc_fnc_info_search_for_intel;}, {!Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach (btc_type_units + btc_type_divers); -_action = ["Interrogate_intel", "Interrogate", "\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa", {[(_this select 0),true] spawn btc_fnc_info_ask;}, {(Alive (_this select 0) && {[(_this select 0)] call ace_common_fnc_isAwake} && captive (_this select 0))}] call ace_interact_menu_fnc_createAction; +_action = ["Interrogate_intel", localize "STR_BTC_HAM_ACTION_INTEL_INTERROGATE", "\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa", {[(_this select 0),true] spawn btc_fnc_info_ask;}, {Alive (_this select 0) && {[_this select 0] call ace_common_fnc_isAwake} && captive (_this select 0)}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach (btc_type_units + btc_type_divers); //Log point -_action = ["Logistic","Logistic","\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa",{},{true}] call ace_interact_menu_fnc_createAction; +_action = ["Logistic", localize "STR_BTC_HAM_ACTION_LOC_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction; [btc_create_object, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject; -_action = ["Require_object", "Require object", "\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa", {[btc_create_object_point] spawn btc_fnc_log_create}, {true}, {}, [], [0,0,0.4], 5] call ace_interact_menu_fnc_createAction; +_action = ["Require_object", localize "STR_BTC_HAM_ACTION_LOGPOINT_REQOBJ", "\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa", {[btc_create_object_point] spawn btc_fnc_log_create}, {true}, {}, [], [0,0,0.4], 5] call ace_interact_menu_fnc_createAction; [btc_create_object, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToObject; -_action = ["Repair_wreck", "Repair wreck", "\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa", {[btc_create_object_point] spawn btc_fnc_log_repair_wreck}, {true}, {}, [], [0,0,0], 5] call ace_interact_menu_fnc_createAction; +_action = ["Repair_wreck", localize "STR_BTC_HAM_ACTION_LOGPOINT_REPWRECK", "\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa", {[btc_create_object_point] spawn btc_fnc_log_repair_wreck}, {true}, {}, [], [0,0,0], 5] call ace_interact_menu_fnc_createAction; [btc_create_object, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToObject; -_action = ["Require_veh", "Require vehicle", "\A3\ui_f\data\map\vehicleicons\iconCar_ca.paa", {[btc_create_object_point] spawn btc_fnc_log_garage}, {(serverCommandAvailable "#logout" || !isMultiplayer) and btc_p_garage}, {}, [], [0,0,0], 5] call ace_interact_menu_fnc_createAction; +_action = ["Require_veh", localize "STR_BTC_HAM_ACTION_LOGPOINT_REQVEH", "\A3\ui_f\data\map\vehicleicons\iconCar_ca.paa", {[btc_create_object_point] spawn btc_fnc_log_garage}, {(serverCommandAvailable "#logout" || !isMultiplayer) and btc_p_garage}, {}, [], [0,0,0], 5] call ace_interact_menu_fnc_createAction; [btc_create_object, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToObject; +_action = ["Tool", localize "STR_BTC_HAM_ACTION_COPYPASTE_TOOL", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\T_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction; +[btc_create_object, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject; +_action = ["Copy", localize "STR_BTC_HAM_ACTION_COPYPASTE_COPY", "\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa", {[btc_create_object_point] spawn btc_fnc_log_copy}, {true}, {}, [], [0,0,0.4], 5] call ace_interact_menu_fnc_createAction; +[btc_create_object, 0, ["ACE_MainActions","Tool"], _action] call ace_interact_menu_fnc_addActionToObject; +_action = ["Paste", localize "STR_BTC_HAM_ACTION_COPYPASTE_PASTE", "\A3\ui_f\data\igui\cfg\simpleTasks\types\upload_ca.paa", {[btc_copy_container, btc_create_object_point] call btc_fnc_log_paste}, {!isNil "btc_copy_container"}, {}, [], [0,0,0.4], 5] call ace_interact_menu_fnc_createAction; +[btc_create_object, 0, ["ACE_MainActions","Tool"], _action] call ace_interact_menu_fnc_addActionToObject; //Logistic -_action = ["Logistic","Logistic","\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa",{},{true}] call ace_interact_menu_fnc_createAction; +_action = ["Logistic", localize "STR_BTC_HAM_ACTION_LOC_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\letters\L_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_log_def_loadable; -_action = ["Load_in", "Load in", "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa", {(_this select 0) call btc_fnc_log_select;}, {true}] call ace_interact_menu_fnc_createAction; +_action = ["Load_in", localize "STR_BTC_HAM_ACTION_LOGISTIC_LOADIN", "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa", {(_this select 0) call btc_fnc_log_select;}, {true}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_log_def_loadable; -_action = ["Load_selected", "Load selected", "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa", {(_this select 0) spawn btc_fnc_log_load;}, {!isNull btc_log_object_selected && {btc_log_object_selected distance (_this select 0) <= btc_log_max_distance_load}}] call ace_interact_menu_fnc_createAction; +_action = ["Load_selected", localize "STR_BTC_HAM_ACTION_LOGISTIC_LOADSEL", "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa", {(_this select 0) spawn btc_fnc_log_load;}, {!isNull btc_log_object_selected && {btc_log_object_selected distance (_this select 0) <= btc_log_max_distance_load}}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_log_def_can_load; -_action = ["check_cargo", "Check cargo", "\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa", {(_this select 0) spawn btc_fnc_log_check_cargo;}, {true}] call ace_interact_menu_fnc_createAction; +_action = ["check_cargo", localize "STR_BTC_HAM_ACTION_LOGISTIC_CHECKCARGO", "\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa", {(_this select 0) spawn btc_fnc_log_check_cargo;}, {true}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_log_def_can_load; //FOB -_action = ["Mount_FOB", "Mount FOB", "\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa", {(_this select 0) spawn btc_fnc_fob_create}, {true}] call ace_interact_menu_fnc_createAction; +_action = ["Mount_FOB", localize "STR_BTC_HAM_ACTION_FOB_MOUNT", "\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa", {(_this select 0) spawn btc_fnc_fob_create}, {true}] call ace_interact_menu_fnc_createAction; [btc_fob_mat, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass; -_action = ["Dismantle_FOB", "Dismantle FOB", "", {(_this select 0) spawn btc_fnc_fob_dismantle}, {true},{},[], [0,0,-2], 5] call ace_interact_menu_fnc_createAction; +_action = ["Dismantle_FOB", localize "STR_BTC_HAM_ACTION_FOB_DISMANTLE", "", {(_this select 0) spawn btc_fnc_fob_dismantle}, {true}, {}, [], [0,0,-2], 5] call ace_interact_menu_fnc_createAction; [btc_fob_flag, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; -_action = ["Place", "Place", "\A3\ui_f\data\map\markers\military\end_CA.paa", {(_this select 0) spawn btc_fnc_log_place}, {!btc_log_placing}] call ace_interact_menu_fnc_createAction; +_action = ["Place", localize "STR_BTC_HAM_ACTION_FOB_PLACE", "\A3\ui_f\data\map\markers\military\end_CA.paa", {(_this select 0) spawn btc_fnc_log_place}, {!btc_log_placing}] call ace_interact_menu_fnc_createAction; {[_x, 0, ["ACE_MainActions","Logistic"], _action] call ace_interact_menu_fnc_addActionToClass;} foreach btc_log_def_placeable; //Orders -_action = ["Civil_Orders","Civil Orders","\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa",{},{true}] call ace_interact_menu_fnc_createAction; +_action = ["Civil_Orders", localize "STR_BTC_HAM_ACTION_ORDERS_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions"], _action] call ace_interact_menu_fnc_addActionToObject; -_action = ["Civil_Stop","Stop","\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa",{[1] call btc_fnc_int_orders;},{(vehicle player isEqualTo player)}] call ace_interact_menu_fnc_createAction; +_action = ["Civil_Stop", localize "STR_BTC_HAM_ACTION_ORDERS_STOP", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk3_ca.paa", {[1] call btc_fnc_int_orders;}, {vehicle player isEqualTo player}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToObject; -_action = ["Civil_Get_down","Get down","\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa",{[2] call btc_fnc_int_orders;},{(vehicle player isEqualTo player)}] call ace_interact_menu_fnc_createAction; +_action = ["Civil_Get_down", localize "STR_BTC_HAM_ACTION_ORDERS_GETDOWN", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk2_ca.paa", {[2] call btc_fnc_int_orders;}, {vehicle player isEqualTo player}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToObject; -_action = ["Civil_Go_away","Go away","\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa",{[3] call btc_fnc_int_orders;},{(vehicle player isEqualTo player)}] call ace_interact_menu_fnc_createAction; +_action = ["Civil_Go_away", localize "STR_BTC_HAM_ACTION_ORDERS_GOAWAY", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk1_ca.paa", {[3] call btc_fnc_int_orders;}, {vehicle player isEqualTo player}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToObject; -{ - _action = ["Civil_Orders","Civil Orders","\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa",{},{true}] call ace_interact_menu_fnc_createAction; - [_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["Civil_Stop", "Stop", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[1,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; - [_x, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["Civil_Get_down", "Get down", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[2,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; - [_x, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["Civil_taxi", "Taxi", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[4,(_this select 0)] spawn btc_fnc_int_orders;}, {((Alive (_this select 0)) && !((vehicle (_this select 0)) isEqualTo (_this select 0)))}] call ace_interact_menu_fnc_createAction; - [_x, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["Civil_Go_away", "Go away", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[3,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; - [_x, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["Ask_Info", "Ask info", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[(_this select 0),false] spawn btc_fnc_info_ask;}, {Alive (_this select 0) && {[(_this select 0)] call ace_common_fnc_isAwake} && {side (_this select 0) isEqualTo civilian}}] call ace_interact_menu_fnc_createAction; - [_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; - _action = ["Ask_Reputation", "Ask Reputation", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[(_this select 0)] spawn btc_fnc_info_ask_reputation;}, {Alive (_this select 0) && {[(_this select 0)] call ace_common_fnc_isAwake} && {side (_this select 0) isEqualTo civilian}}] call ace_interact_menu_fnc_createAction; - [_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; +{ //Actions attachted to AI + _action = ["Civil_Orders", localize "STR_BTC_HAM_ACTION_ORDERS_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction; + [_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["Civil_taxi", localize "STR_BTC_HAM_ACTION_ORDERS_TAXI", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk4_ca.paa", {[4,(_this select 0)] spawn btc_fnc_int_orders;}, {(Alive (_this select 0)) && !((vehicle (_this select 0)) isEqualTo (_this select 0))}] call ace_interact_menu_fnc_createAction; + [_x, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["Civil_Stop", localize "STR_BTC_HAM_ACTION_ORDERS_STOP", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk3_ca.paa", {[1,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; + [_x, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["Civil_Get_down", localize "STR_BTC_HAM_ACTION_ORDERS_GETDOWN", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk2_ca.paa", {[2,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; + [_x, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["Civil_Go_away", localize "STR_BTC_HAM_ACTION_ORDERS_GOAWAY", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk1_ca.paa", {[3,(_this select 0)] call btc_fnc_int_orders;}, {Alive (_this select 0)}] call ace_interact_menu_fnc_createAction; + [_x, 0, ["ACE_MainActions","Civil_Orders"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["Ask_Info", localize "STR_BTC_HAM_ACTION_ORDERS_ASKINFO", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[(_this select 0),false] spawn btc_fnc_info_ask;}, {Alive (_this select 0) && {[_this select 0] call ace_common_fnc_isAwake} && {side (_this select 0) isEqualTo civilian}}] call ace_interact_menu_fnc_createAction; + [_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; + _action = ["Ask_Reputation", localize "STR_BTC_HAM_ACTION_ORDERS_ASKREP", "\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa", {[_this select 0] spawn btc_fnc_info_ask_reputation;}, {Alive (_this select 0) && {[_this select 0] call ace_common_fnc_isAwake} && {side (_this select 0) isEqualTo civilian}}] call ace_interact_menu_fnc_createAction; + [_x, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToClass; + + //remove ace3 "get down" order + [_x, 0, ["ACE_MainActions","ACE_GetDown"]] call ace_interact_menu_fnc_removeActionFromClass; + //remove ace3 "go away" order + [_x, 0, ["ACE_MainActions","ACE_SendAway"]] call ace_interact_menu_fnc_removeActionFromClass; } forEach btc_civ_type_units; //Side missions -_action = ["side_mission","Side mission","\A3\ui_f\data\igui\cfg\simpleTasks\types\whiteboard_ca.paa",{},{!(isNil {player getVariable "side_mission"})}] call ace_interact_menu_fnc_createAction; +_action = ["side_mission", localize "STR_BTC_HAM_ACTION_SIDEMISSION_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\types\whiteboard_ca.paa", {}, {!(isNil {player getVariable "side_mission"})}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions"], _action] call ace_interact_menu_fnc_addActionToObject; -_action = ["side_mission","Abort","\A3\ui_f\data\igui\cfg\simpleTasks\types\exit_ca.paa",{[] call btc_fnc_side_abort},{!(isNil {player getVariable "side_mission"}) && {btc_side_assigned}}] call ace_interact_menu_fnc_createAction; +_action = ["side_mission_abort", localize "STR_BTC_HAM_ACTION_SIDEMISSION_ABORT", "\A3\ui_f\data\igui\cfg\simpleTasks\types\exit_ca.paa", {[] call btc_fnc_side_abort}, {!(isNil {player getVariable "side_mission"}) && {btc_side_assigned}}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions", "side_mission"], _action] call ace_interact_menu_fnc_addActionToObject; -_action = ["side_mission","Request","\A3\ui_f\data\igui\cfg\simpleTasks\types\default_ca.paa",{[] spawn btc_fnc_side_request},{!(isNil {player getVariable "side_mission"}) && {!btc_side_assigned}}] call ace_interact_menu_fnc_createAction; +_action = ["side_mission_request", localize "STR_BTC_HAM_ACTION_SIDEMISSION_REQ", "\A3\ui_f\data\igui\cfg\simpleTasks\types\default_ca.paa", {[] spawn btc_fnc_side_request}, {!(isNil {player getVariable "side_mission"}) && {!btc_side_assigned}}] call ace_interact_menu_fnc_createAction; [player, 1, ["ACE_SelfActions", "side_mission"], _action] call ace_interact_menu_fnc_addActionToObject; //Re-deploy -_action = ["fob_redeploy", "Re-deploy", "\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa", {[] spawn btc_fnc_fob_redeploy}, {btc_p_redeploy}, {}, [], [0.4,0,0.4], 5] call ace_interact_menu_fnc_createAction; +_action = ["fob_redeploy", localize "STR_BTC_HAM_ACTION_REDEPLOY_MAIN", "\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa", {[] spawn btc_fnc_fob_redeploy}, {btc_p_redeploy}, {}, [], [0.4,0,0.4], 5] call ace_interact_menu_fnc_createAction; [btc_gear_object, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject; -btc_gear_object addAction ["Arsenal", "['Open',true] spawn BIS_fnc_arsenal;"]; \ No newline at end of file + +//Arsenal +if (btc_p_arsenalType < 3) then { + btc_gear_object addAction [localize "STR_BTC_HAM_ACTION_ARSENAL_OPEN_BIS", "['Open',true] spawn BIS_fnc_arsenal;"]; +}; +if (btc_p_arsenalType in [2, 4]) then { + btc_gear_object addAction [localize "STR_BTC_HAM_ACTION_ARSENAL_OPEN_ACE", "[player, player, true] call ace_arsenal_fnc_openBox;"]; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/ask_var.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/ask_var.sqf index d7760c11c..29ec1da65 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/ask_var.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/ask_var.sqf @@ -7,20 +7,21 @@ _target = _this select 1; _asker = _this select 2; switch (_id) do { - case 0 : {_data = _target getVariable ["active",false];}; - case 1 : { - private "_hd"; - _hd = objNull; - {if (_x distance _asker < 3000) then {_hd = _x;};} foreach btc_hideouts; - _data = _hd; - }; - case 2 : {_data = btc_global_reputation;}; - case 3 : {_data = _target getVariable ["cargo",[]];}; - case 4 : {_data = _target getVariable ["tow",objNull];}; - case 5 : {_data = btc_side_jip_data;}; - case 6 : {_data = btc_fobs;}; - case 7 : {_data = btc_construction_array;}; - case 8 : {_data = count btc_hideouts;}; + case 0 : {_data = _target getVariable ["active",false];}; + case 1 : { + private "_hd"; + _hd = objNull; + {if (_x distance _asker < 3000) then {_hd = _x;};} foreach btc_hideouts; + _data = _hd; + }; + case 2 : {_data = btc_global_reputation;}; + case 3 : {_data = _target getVariable ["cargo",[]];}; + case 4 : {_data = _target getVariable ["tow",objNull];}; + case 5 : {_data = btc_side_jip_data;}; + case 6 : {_data = btc_fobs;}; + case 7 : {_data = btc_construction_array;}; + case 8 : {_data = count btc_hideouts;}; + case 9 : {_data = [_target] call btc_fnc_db_saveObjectStatus;}; }; [_data] remoteExec ["btc_fnc_int_ans_var", _asker, false]; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/key_pressed.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/key_pressed.sqf deleted file mode 100644 index 68f7a1302..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/key_pressed.sqf +++ /dev/null @@ -1,35 +0,0 @@ - -private ["_key","_shift","_ctrl"]; - -_key = _this select 1; -_shift = _this select 2; -_ctrl = _this select 3; - -//if (_key in (actionKeys "moveUp") && {player getVariable ["btc_rev_isDragging",false]}) then {player setVariable ["btc_rev_isDragging",false];}; - -if (dialog || player getVariable ["btc_rev_isUnc",false] || player getVariable ["btc_int_busy",false]) exitWith {};// -btc_int_target = objNull; - -switch (true) do -{ - case (_key in (actionKeys "User1")) : - { - btc_int_target = player;0 spawn btc_fnc_int_open_dlg; - }; - case (_key in (actionKeys "User2") && {!(player getVariable ["btc_int_busy",false])} && {vehicle player == player}) : - { - switch (true) do - { - case (isPlayer cursorTarget && {cursorTarget distance player < 3} && {!(player getVariable ["btc_rev_isDragging",false]) && !(player getVariable ["btc_rev_isCarrying",false])}) : {btc_int_target = cursorTarget;2 spawn btc_fnc_int_open_dlg;}; - case (side cursorTarget == civilian && {cursorTarget isKindOf "Civilian_F"} && {cursorTarget distance player < 3}) : {btc_int_target = cursorTarget;4 spawn btc_fnc_int_open_dlg;}; - case ({cursorTarget isKindOf _x} count btc_type_ieds > 0 && {cursorTarget distance player < 3}) : {btc_int_target = cursorTarget;5 spawn btc_fnc_int_open_dlg;}; - case (!Alive cursorTarget && {{cursorTarget isKindOf _x} count btc_type_units > 0}) : {btc_int_target = cursorTarget;6 spawn btc_fnc_int_open_dlg;}; - case (cursorTarget == btc_create_object && {cursorTarget distance player < 5}) : {9 spawn btc_fnc_int_open_dlg;}; - case (cursorTarget == btc_gear_object && {cursorTarget distance player < 10}) : {10 spawn btc_fnc_int_open_dlg;}; - case (Alive cursorTarget && {cursorTarget distance player < 5} && {{cursorTarget isKindOf _x} count btc_log_def_loadable > 0} && {typeOf cursorTarget != "Land_CargoBox_V1_F"}) : {btc_int_target = cursorTarget;8 spawn btc_fnc_int_open_dlg;}; - case (cursorTarget distance player < 8 && {{cursorTarget isKindOf _x} count ["LandVehicle","Air"] > 0}) : {btc_int_target = cursorTarget;7 spawn btc_fnc_int_open_dlg;}; - case ((typeOf cursorTarget) == btc_fob_flag && {cursorTarget distance player < 5}) : {11 spawn btc_fnc_int_open_dlg;}; - }; - }; - case (_shift && {vehicle player == player} && {_key in [2,3,4]}) : {_key spawn btc_fnc_int_select_weapon}; -}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/open_dlg.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/open_dlg.sqf deleted file mode 100644 index 8c33c7781..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/open_dlg.sqf +++ /dev/null @@ -1,292 +0,0 @@ -/* - -*/ - -private ["_dlg","_ui"]; - -closeDialog 0; -disableSerialization; -_dlg = createDialog "btc_dlg_interaction"; -_ui = uiNamespace getVariable "btc_dlg_interaction"; -waitUntil {Dialog}; - -switch (_this) do { -/* case 0 : { - {(_ui displayCtrl _x) ctrlShow false;} foreach [9993,9994,9995,9996]; - (_ui displayCtrl 9991) ctrlSetText "Treatment"; - (_ui displayCtrl 9991) buttonSetAction "1 spawn btc_fnc_int_open_dlg;"; - if (vehicle player != player) then - { - if !(player in (assignedCargo vehicle player)) then {(_ui displayCtrl 9991) ctrlEnable false;}; - }; - - if (player getVariable ["btc_hasEarplugs",false]) then {(_ui displayCtrl 9992) ctrlSetText "Remove earplugs";} else {(_ui displayCtrl 9992) ctrlSetText "Use earplugs";}; - (_ui displayCtrl 9992) buttonSetAction "[] spawn btc_fnc_deaf_earplugs"; - - if (vehicle player == player) then - { - (_ui displayCtrl 9993) ctrlShow true; - (_ui displayCtrl 9993) ctrlSetText "Orders"; - (_ui displayCtrl 9993) buttonSetAction "3 spawn btc_fnc_int_open_dlg;"; - - if (player getVariable ["btc_int_busy",false]) then {(_ui displayCtrl 9991) ctrlEnable false;(_ui displayCtrl 9992) ctrlEnable false;(_ui displayCtrl 9993) ctrlEnable false;}; - if (player getVariable ["btc_rev_isDragging",false] || player getVariable ["btc_rev_isCarrying",false]) then - { - (_ui displayCtrl 9994) ctrlShow true; - (_ui displayCtrl 9994) ctrlSetText "Release"; - (_ui displayCtrl 9994) buttonSetAction "closeDialog 0;player setVariable ['btc_rev_isDragging',false];player setVariable ['btc_rev_isCarrying',false];"; - //LOAD - if (((count (nearestObjects [player, ["Air","LandVehicle"], 5])) > 0) && {(((nearestObjects [player, ["Air","LandVehicle"], 5]) select 0) emptyPositions "cargo" > 0)}) then - { - (_ui displayCtrl 9995) ctrlShow true; - (_ui displayCtrl 9995) ctrlSetText "Load wounded"; - (_ui displayCtrl 9995) buttonSetAction "(player getVariable ['btc_rev_attached',objNull]) spawn btc_fnc_rev_load"; - }; - }; - } - else //IN VEH - { - (_ui displayCtrl 9993) ctrlShow true; - (_ui displayCtrl 9993) ctrlSetText "Check Cargo"; - (_ui displayCtrl 9993) buttonSetAction "(vehicle player) spawn btc_fnc_log_check_cargo"; - - if (vehicle player isKindOf "Helicopter" && {driver vehicle player == player}) then - { - if (btc_ropes_deployed) then - { - (_ui displayCtrl 9994) ctrlShow true; - (_ui displayCtrl 9994) ctrlSetText "Cut ropes"; - (_ui displayCtrl 9994) buttonSetAction "[] spawn btc_fnc_log_lift_destroy_ropes"; - } - else - { - (_ui displayCtrl 9994) ctrlShow true; - (_ui displayCtrl 9994) ctrlSetText "Deploy ropes"; - (_ui displayCtrl 9994) buttonSetAction "[] spawn btc_fnc_log_lift_deploy_ropes"; - if (getpos (vehicle player) select 2 < 5) then {(_ui displayCtrl 9994) ctrlEnable false;}; - }; - }; - }; - if !(isNil {player getVariable "side_mission"}) then - { - (_ui displayCtrl 9996) ctrlShow true; - if (btc_side_assigned) then - { - (_ui displayCtrl 9996) ctrlSetText "Abort side mission"; - (_ui displayCtrl 9996) buttonSetAction "[] spawn btc_fnc_side_abort"; - } - else - { - (_ui displayCtrl 9996) ctrlSetText "Request side mission"; - (_ui displayCtrl 9996) buttonSetAction "[] spawn btc_fnc_side_request"; - }; - }; - }; - case 1 : { - //TREATMENT - //btc_int_target spawn btc_rev_fn_examine_result; - (_ui displayCtrl 9991) ctrlSetText "Examine"; - (_ui displayCtrl 9991) buttonSetAction "[] spawn btc_fnc_rev_examine;"; - /*if (btc_wounds_mod) then - { - _n_items = {_x == "BTC_w_bandage"} count items player; - (_ui displayCtrl 9992) ctrlSetText format ["Bandage",_n_items]; - (_ui displayCtrl 9992) buttonSetAction "[btc_int_target,1] spawn btc_fnc_rev_treat"; - if (_n_items == 0) then {(_ui displayCtrl 9992) ctrlEnable false;}; - - _n_items = {_x == "BTC_w_largeBandage"} count items player; - (_ui displayCtrl 9993) ctrlSetText format ["Large Bandage",_n_items]; - (_ui displayCtrl 9993) buttonSetAction "[btc_int_target,2] spawn btc_fnc_rev_treat"; - if (_n_items == 0 || (!(player call btc_fnc_rev_is_medic) && {btc_rev_lbndg_only_medic})) then {(_ui displayCtrl 9993) ctrlEnable false;}; - - _n_items = {_x == "BTC_w_mor"} count items player; - (_ui displayCtrl 9994) ctrlSetText format ["Morphine",_n_items]; - (_ui displayCtrl 9994) buttonSetAction "[btc_int_target,3] spawn btc_fnc_rev_treat"; - if (_n_items == 0 || (!(player call btc_fnc_rev_is_medic) && {btc_rev_mor_only_medic})) then {(_ui displayCtrl 9994) ctrlEnable false;}; - - _n_items = {_x == "BTC_w_epi"} count items player; - (_ui displayCtrl 9995) ctrlSetText format ["Epinephrine",_n_items]; - (_ui displayCtrl 9995) buttonSetAction "[btc_int_target,4] spawn btc_fnc_rev_treat"; - if (_n_items == 0 || (!(player call btc_fnc_rev_is_medic) && {btc_rev_epi_only_medic})) then {(_ui displayCtrl 9995) ctrlEnable false;}; - - _n_items = {_x == "BTC_w_bloodbag"} count items player; - (_ui displayCtrl 9996) ctrlSetText format ["Blood Bag",_n_items]; - (_ui displayCtrl 9996) buttonSetAction "[btc_int_target,5] spawn btc_fnc_rev_treat"; - if (_n_items == 0 || (!(player call btc_fnc_rev_is_medic) && {btc_rev_blood_only_medic})) then {(_ui displayCtrl 9996) ctrlEnable false;}; - } - else - { - (_ui displayCtrl 9992) ctrlSetText "Bandage"; - (_ui displayCtrl 9992) buttonSetAction "[btc_int_target,1] spawn btc_fnc_rev_treat"; - - (_ui displayCtrl 9993) ctrlSetText "Large Bandage"; - (_ui displayCtrl 9993) buttonSetAction "[btc_int_target,2] spawn btc_fnc_rev_treat"; - if ((!(player call btc_fnc_rev_is_medic) && {btc_rev_lbndg_only_medic}) || (btc_rev_medikit_required && {{_x == "Medikit"} count items player == 0})) then {(_ui displayCtrl 9993) ctrlEnable false;}; - - (_ui displayCtrl 9994) ctrlSetText "Morphine"; - (_ui displayCtrl 9994) buttonSetAction "[btc_int_target,3] spawn btc_fnc_rev_treat"; - if ((!(player call btc_fnc_rev_is_medic) && {btc_rev_mor_only_medic}) || (btc_rev_medikit_required && {{_x == "Medikit"} count items player == 0})) then {(_ui displayCtrl 9994) ctrlEnable false;}; - - (_ui displayCtrl 9995) ctrlSetText "Epinephrine"; - (_ui displayCtrl 9995) buttonSetAction "[btc_int_target,4] spawn btc_fnc_rev_treat"; - if ((!(player call btc_fnc_rev_is_medic) && {btc_rev_epi_only_medic}) || (btc_rev_medikit_required && {{_x == "Medikit"} count items player == 0})) then {(_ui displayCtrl 9995) ctrlEnable false;}; - - (_ui displayCtrl 9996) ctrlSetText "Blood Bag"; - (_ui displayCtrl 9996) buttonSetAction "[btc_int_target,5] spawn btc_fnc_rev_treat"; - if ((!(player call btc_fnc_rev_is_medic) && {btc_rev_blood_only_medic}) || (btc_rev_medikit_required && {{_x == "Medikit"} count items player == 0})) then {(_ui displayCtrl 9996) ctrlEnable false;}; - //}; - };*/ - case 2 : { - //Players - {(_ui displayCtrl _x) ctrlShow false;} foreach [9995,9996]; - (_ui displayCtrl 9991) ctrlSetText "Treatment"; - (_ui displayCtrl 9991) buttonSetAction "1 spawn btc_fnc_int_open_dlg;"; - (_ui displayCtrl 9992) ctrlSetText "Drag"; - (_ui displayCtrl 9992) buttonSetAction "btc_int_target spawn btc_fnc_rev_drag"; - (_ui displayCtrl 9993) ctrlSetText "Carry"; - (_ui displayCtrl 9993) buttonSetAction "btc_int_target spawn btc_fnc_rev_carry"; - (_ui displayCtrl 9994) ctrlSetText "Load in"; - (_ui displayCtrl 9994) buttonSetAction "btc_int_target spawn btc_fnc_rev_load"; - if !(btc_int_target getVariable ["btc_rev_isUnc",false]) then {(_ui displayCtrl 9992) ctrlEnable false;(_ui displayCtrl 9993) ctrlEnable false;(_ui displayCtrl 9994) ctrlEnable false;} else - { - if (((count (nearestObjects [player, ["Air","LandVehicle"], 5])) > 0) && {(((nearestObjects [player, ["Air","LandVehicle"], 5]) select 0) emptyPositions "cargo" > 0)}) then {(_ui displayCtrl 9994) ctrlSetText format ["Load in %1",getText (configFile >> "cfgVehicles" >> typeof ((nearestObjects [player, ["Air","LandVehicle"], 5]) select 0) >> "displayName")];} else {(_ui displayCtrl 9994) ctrlEnable false;}; - }; - }; - case 3 : - { - //Orders - {(_ui displayCtrl _x) ctrlShow false;} foreach [9994,9995,9996]; - (_ui displayCtrl 9991) ctrlSetText "Stop"; - (_ui displayCtrl 9991) buttonSetAction "[1] spawn btc_fnc_int_orders"; - (_ui displayCtrl 9992) ctrlSetText "Get down"; - (_ui displayCtrl 9992) buttonSetAction "[2] spawn btc_fnc_int_orders"; - (_ui displayCtrl 9993) ctrlSetText "Go away"; - (_ui displayCtrl 9993) buttonSetAction "[3] spawn btc_fnc_int_orders"; - /*(_ui displayCtrl 9993) ctrlSetText "Hands up"; - (_ui displayCtrl 9993) buttonSetAction "[4] spawn btc_fnc_int_orders";*/ - - }; - case 4 : - { - {(_ui displayCtrl _x) ctrlShow false;} foreach [9995,9996]; - (_ui displayCtrl 9991) ctrlSetText "Ask info"; - (_ui displayCtrl 9991) buttonSetAction "[] spawn btc_fnc_info_ask;closeDialog 0;"; - (_ui displayCtrl 9992) ctrlSetText "Stop"; - (_ui displayCtrl 9992) buttonSetAction "[1,btc_int_target] spawn btc_fnc_int_orders"; - (_ui displayCtrl 9993) ctrlSetText "Get down"; - (_ui displayCtrl 9993) buttonSetAction "[2,btc_int_target] spawn btc_fnc_int_orders"; - (_ui displayCtrl 9994) ctrlSetText "Go away"; - (_ui displayCtrl 9994) buttonSetAction "[3,btc_int_target] spawn btc_fnc_int_orders"; - if (!Alive btc_int_target) then {{(_ui displayCtrl _x) ctrlEnable false;} foreach [9991,9992,9993,9994]}; - }; - case 5 : - { - {(_ui displayCtrl _x) ctrlShow false;} foreach [9993,9994,9995,9996]; - (_ui displayCtrl 9991) ctrlSetText "Check for IED"; - (_ui displayCtrl 9991) buttonSetAction "btc_int_target spawn btc_fnc_ied_check_for;closeDialog 0;"; - (_ui displayCtrl 9992) ctrlSetText "Disarm IED"; - (_ui displayCtrl 9992) buttonSetAction "btc_int_target spawn btc_fnc_ied_disarm;closeDialog 0;"; - if (!(btc_int_target getVariable ["active",false]) || {_x == "ToolKit"} count items player == 0) then {(_ui displayCtrl 9992) ctrlEnable false;}; - }; - case 6 : - { - {(_ui displayCtrl _x) ctrlShow false;} foreach [9992,9993,9994,9995,9996]; - (_ui displayCtrl 9991) ctrlSetText "Search for intel"; - (_ui displayCtrl 9991) buttonSetAction "btc_int_target spawn btc_fnc_info_search_for_intel;closeDialog 0;"; - }; - case 7 : - { - {(_ui displayCtrl _x) ctrlShow false;} foreach [9991,9992,9993,9994,9995,9996]; - if (Alive btc_int_target) then - { - //UNLOAD - (_ui displayCtrl 9991) ctrlShow true; - (_ui displayCtrl 9991) ctrlSetText "Unload wounded"; - (_ui displayCtrl 9991) buttonSetAction "btc_int_target spawn btc_fnc_rev_unload"; - if (({_x getVariable ["btc_rev_isUnc",false]} count (crew btc_int_target)) == 0) then {(_ui displayCtrl 9991) ctrlEnable false;}; - - (_ui displayCtrl 9992) ctrlShow true; - (_ui displayCtrl 9992) ctrlSetText "Check Cargo"; - (_ui displayCtrl 9992) buttonSetAction "btc_int_target spawn btc_fnc_log_check_cargo"; - if (!isNull btc_log_object_selected) then - { - (_ui displayCtrl 9993) ctrlShow true; - (_ui displayCtrl 9993) ctrlSetText format ["Load %1 in %2",getText (configFile >> "cfgVehicles" >> typeof btc_log_object_selected >> "displayName"),getText (configFile >> "cfgVehicles" >> typeof btc_int_target >> "displayName")]; - (_ui displayCtrl 9993) buttonSetAction "[] spawn btc_fnc_log_load"; - if (btc_log_object_selected distance btc_int_target > btc_log_max_distance_load) then {(_ui displayCtrl 9993) ctrlEnable false;}; - }; - }; - btc_int_ask_data = nil; - [4,btc_int_target,player] remoteExec ["btc_fnc_int_ask_var", 2]; - - waitUntil {!(isNil "btc_int_ask_data")}; - - if (!isNull btc_int_ask_data) then - { - (_ui displayCtrl 9994) ctrlShow true; - (_ui displayCtrl 9994) ctrlSetText "Unhook"; - (_ui displayCtrl 9994) buttonSetAction "btc_int_target spawn btc_fnc_log_unhook"; - } - else - { - if (btc_int_target isKindOf "LandVehicle") then - { - (_ui displayCtrl 9994) ctrlShow true; - (_ui displayCtrl 9994) ctrlSetText "Hook"; - (_ui displayCtrl 9994) buttonSetAction "btc_int_target spawn btc_fnc_log_hook"; - if (!isNull btc_log_vehicle_selected && {btc_log_vehicle_selected != btc_int_target}) then - { - (_ui displayCtrl 9995) ctrlShow true; - (_ui displayCtrl 9995) ctrlSetText "Tow"; - (_ui displayCtrl 9995) buttonSetAction "btc_int_target spawn btc_fnc_log_tow"; - if !([btc_int_target,btc_log_vehicle_selected] call btc_fnc_log_can_tow) then {(_ui displayCtrl 9995) ctrlEnable false;}; - }; - }; - }; - }; - case 8 : - { - {(_ui displayCtrl _x) ctrlShow false;} foreach [9993,9994,9995,9996]; - (_ui displayCtrl 9991) ctrlSetText "Load in"; - (_ui displayCtrl 9991) buttonSetAction "[] spawn btc_fnc_log_select"; - - (_ui displayCtrl 9992) ctrlSetText "Drag"; - (_ui displayCtrl 9992) buttonSetAction "btc_int_target spawn btc_fnc_log_drag"; - if ({btc_int_target isKindOf _x} count btc_log_def_draggable == 0) then {(_ui displayCtrl 9992) ctrlEnable false;}; - - //PLACE - (_ui displayCtrl 9993) ctrlShow true; - (_ui displayCtrl 9993) ctrlSetText "Place"; - (_ui displayCtrl 9993) buttonSetAction "btc_int_target spawn btc_fnc_log_place"; - if ({btc_int_target isKindOf _x} count btc_log_def_placeable == 0) then {(_ui displayCtrl 9993) ctrlEnable false;}; - if (btc_int_target isKindOf "Land_Cargo20_blue_F") then - { - (_ui displayCtrl 9994) ctrlShow true; - (_ui displayCtrl 9994) ctrlSetText "Mount FOB"; - (_ui displayCtrl 9994) buttonSetAction "btc_int_target spawn btc_fnc_fob_create"; - }; - }; - case 9 : - { - {(_ui displayCtrl _x) ctrlShow false;} foreach [9993,9994,9995,9996]; - (_ui displayCtrl 9991) ctrlSetText "Require object"; - (_ui displayCtrl 9991) buttonSetAction "[btc_create_object_point] spawn btc_fnc_log_create"; - - (_ui displayCtrl 9992) ctrlSetText "Repair wreck"; - (_ui displayCtrl 9992) buttonSetAction "closeDialog 0;[btc_create_object_point] spawn btc_fnc_log_repair_wreck"; - }; - case 10 : - { - {(_ui displayCtrl _x) ctrlShow false;} foreach [9992,9993,9994,9995,9996]; - (_ui displayCtrl 9991) ctrlSetText "Gear"; - (_ui displayCtrl 9991) buttonSetAction "[] spawn btc_fnc_gear_open_dlg"; - }; - case 11 : - { - {(_ui displayCtrl _x) ctrlShow false;} foreach [9992,9993,9994,9995,9996]; - (_ui displayCtrl 9991) ctrlSetText "Re-deploy"; - (_ui displayCtrl 9991) buttonSetAction "[] spawn btc_fnc_fob_redeploy"; - //if (!btc_p_redeploy_base && {btc_int_target distance (getMarkerPos "btc_base") > 200}) then {(_ui displayCtrl 9991) ctrlEnable false;}; - }; -}; -waitUntil {!Dialog};//player setVariable ["btc_int_busy",false]; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders.sqf index ae10c5113..fdf99fe0c 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders.sqf @@ -1,56 +1,61 @@ -private ["_order","_unit","_gesture","_pos","_wp","_rep","_ran","_info_type"]; +params ["_order", ["_unit", objNull]]; -_order = _this select 0; -_unit = objNull; -if (count _this > 1) then {_unit = _this select 1;}; - -_gesture = switch (_order) do { - case 1 : {"gestureFreeze"}; - case 2 : {"gestureCover"}; - case 3 : {"gestureGo"}; - case 4 : {"gestureGo"}; +private _gesture = switch (_order) do { + case 1 : {"gestureFreeze"}; + case 2 : {"gestureCover"}; + case 3 : {"gestureGo"}; + case 4 : {"gestureGo"}; }; player playActionNow _gesture; -_pos = getpos player; +private _pos = getpos player; +private _dir = getDir player; +private _units = (_pos nearEntities [["Car","Civilian_F"] + btc_civ_type_units, btc_int_radius_orders]) apply {driver _x}; -if (count (_pos nearEntities [["Car","Civilian_F"] + btc_civ_type_units, btc_int_radius_orders]) == 0) exitWith {true}; +if (_units isEqualTo []) exitWith {true}; if (isNull _unit) then { - [_pos,_order] remoteExec ["btc_fnc_int_orders_give", 2]; + [_units, _dir, _order] remoteExec ["btc_fnc_int_orders_give", 2]; } else { - if (_order == 4) then { - - btc_int_ask_data = nil; - [2,nil,player] remoteExec ["btc_fnc_int_ask_var", 2]; - waitUntil {!(isNil "btc_int_ask_data")}; - _rep = btc_int_ask_data; - - if (_rep >= 500) then { - hintSilent "Show me where you want to go with your map."; - ["1", "onMapSingleClick", { - if (surfaceIsWater _pos) then { - hintSilent 'Selected area must be on land.'; - } else { - [(getpos (_this select 0)),4,_this select 1,_pos] remoteExec ["btc_fnc_int_orders_give", _this select 1]; - ["1", "onMapSingleClick"] call BIS_fnc_removeStackedEventHandler; - }; - }, [player, _unit]] call BIS_fnc_addStackedEventHandler; - } else { - if (isNil {player getVariable "interpreter"}) exitWith {hint "I can't understand what is saying";}; - _ran = round random 3; - _info_type = switch (true) do { - case (_ran == 0) : {"I hate you ! Get out !"}; - case (_ran == 1) : {"Get Out of my car ! You are not welcome."}; - case (_ran == 2) : {"I am not a taxi driver !"}; - case (_ran == 3) : {"No ! I go where I want ! "}; - }; - _text = format ["%1", _info_type]; - hint _text; - }; - } else { - [_pos,_order,_unit] remoteExec ["btc_fnc_int_orders_give", _unit]; - }; -}; \ No newline at end of file + if (_order isEqualTo 4) then { + + btc_int_ask_data = nil; + [2,nil,player] remoteExec ["btc_fnc_int_ask_var", 2]; + waitUntil {!(isNil "btc_int_ask_data")}; + private _rep = btc_int_ask_data; + + if (_rep >= 500) then { + [name _unit,localize "STR_BTC_HAM_CON_INT_ORDERS_SHOWMAP"] spawn btc_fnc_showSubtitle; //Show me where you want to go with your map. + openMap true; + ["1", "onMapSingleClick", { + if (surfaceIsWater _pos) then { + [name (_this select 4),localize "STR_BTC_HAM_CON_INT_ORDERS_ONLAND"] spawn btc_fnc_showSubtitle; //Selected area must be on land. + } else { + [[_this select 4], 0, 4, _pos] remoteExec ["btc_fnc_int_orders_give", _this select 4]; + ["1", "onMapSingleClick"] call BIS_fnc_removeStackedEventHandler; + openMap false; + private _textMap = selectRandom [ + localize "STR_BTC_HAM_CON_INT_ORDERS_TAXI_OK1", // No problem. I'd love to do that. + localize "STR_BTC_HAM_CON_INT_ORDERS_TAXI_OK2", // The ride should not take long. Let's go. + localize "STR_BTC_HAM_CON_INT_ORDERS_TAXI_OK3" // After what you've done for us, it's an honor to drive you. Let's go. + ]; + [name (_this select 4),_textMap] spawn btc_fnc_showSubtitle; + }; + }, [_unit]] call BIS_fnc_addStackedEventHandler; + } else { + if (isNil {player getVariable "interpreter"}) exitWith {[name _unit,localize "STR_BTC_HAM_CON_INFO_ASKREP_NOINTER"] spawn btc_fnc_showSubtitle;}; //I can't understand what is saying + + private _text = selectRandom [ + localize "STR_BTC_HAM_CON_INT_ORDERS_NEG1", //I hate you ! Get out ! + localize "STR_BTC_HAM_CON_INT_ORDERS_NEG2", // Get Out of my car ! You are not welcome. + localize "STR_BTC_HAM_CON_INT_ORDERS_NEG3", // I am not a taxi driver ! + localize "STR_BTC_HAM_CON_INT_ORDERS_NEG4" //No ! I go where I want ! + ]; + [name _unit,_text] spawn btc_fnc_showSubtitle; + }; + } else { + [[_unit], _dir, _order] remoteExec ["btc_fnc_int_orders_give", _unit]; + }; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders_behaviour.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders_behaviour.sqf index 86c912fed..3f71573c9 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders_behaviour.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders_behaviour.sqf @@ -1,45 +1,52 @@ -private ["_unit","_order","_group","_wp_pos"]; +params ["_unit", "_order", "_wp_pos"]; -_unit = _this select 0; -_order = _this select 1; -_wp_pos = _this select 2; -_group = group _unit; +private _group = group _unit; if (_order == _unit getVariable ["order",0]) exitWith {}; _unit setVariable ["order",_order]; -while {(count (waypoints _group)) > 0} do {deleteWaypoint ((waypoints _group) select 0);}; +if (_unit isEqualTo vehicle _unit) then { + while {(count (waypoints _group)) > 0} do {deleteWaypoint ((waypoints _group) select 0);}; +}; + +private _behaviour = behaviour _unit; switch (_order) do { - case 1 : {doStop _unit;}; - case 2 : { - doStop _unit; - _unit setUnitPos "DOWN"; - [_unit, format ["AmovP%1MstpSnonWnonDnon_AmovPpneMstpSnonWnonDnon",((animationState _unit) select [5,3])], 1] call ace_common_fnc_doAnimation; - }; - case 3 : { - private "_wp_pos"; - _wp_pos = [getPos _unit, 200] call btc_fnc_randomize_pos; - _unit setUnitPos "UP"; - _unit doMove _wp_pos; - }; - case 4 : { - _unit doMove _wp_pos; - }; + case 1 : {_unit setBehaviour selectRandom ["CARELESS", _behaviour]; doStop _unit;}; + case 2 : { + doStop _unit; + _unit setUnitPos "DOWN"; + [_unit, format ["AmovP%1MstpSnonWnonDnon_AmovPpneMstpSnonWnonDnon",((animationState _unit) select [5,3])], 1] call ace_common_fnc_doAnimation; + }; + case 3 : { + _unit setUnitPos "UP"; + _unit doMove _wp_pos; + }; + case 4 : { + _unit doMove _wp_pos; + }; }; -waitUntil {sleep 3; ((!(_order == 4) && (isNull _unit || !Alive _unit || (count (getpos _unit nearEntities ["SoldierWB", 50]) == 0))) || (((getpos _unit) distance _wp_pos < 10)) && (_order == 4)) }; +if (_order isEqualTo 4) then { + waitUntil {sleep 3; (isNull _unit || !Alive _unit || ((getpos _unit) distance _wp_pos < 10))}; +} else { + waitUntil {sleep 3; (isNull _unit || !Alive _unit || (count (getpos _unit nearEntities ["SoldierWB", 50]) == 0))}; +}; if (isNull _unit || !Alive _unit) exitWith {}; if (_order == 4) then { - doStop _unit; - sleep (30 + random 10); + doStop _unit; + sleep (30 + random 10); }; _unit setVariable ["order",nil]; _unit setUnitPos "AUTO"; +_unit setBehaviour _behaviour; _unit doMove getPos _unit; -_group spawn btc_fnc_civ_addWP; \ No newline at end of file + +if (_unit isEqualTo vehicle _unit) then { + [_group] spawn btc_fnc_civ_addWP; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders_give.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders_give.sqf index c3e5a3808..6e6849c1b 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders_give.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/orders_give.sqf @@ -1,21 +1,15 @@ -private ["_pos","_order","_units","_wp_pos"]; +params ["_units", "_dir", "_order", ["_wp_pos", []]]; -_pos = _this select 0; -_order = _this select 1; +_units = _units select {(isNil {group _x getVariable "suicider"}) && ((side _x) == civilian)}; -_units = []; -_wp_pos = [0,0,0]; +{ + private _wp_pos_i = if ((_order isEqualTo 3) && (_wp_pos isEqualTo [])) then { + (getpos _x) getPos [200 * sqrt random 1 , _dir - 0.5*40 + random 40] + } else { + _wp_pos + }; + [_x, _order, _wp_pos_i] spawn btc_fnc_int_orders_behaviour; +} foreach _units; -switch (count _this) do { - case 2 : {_units = _pos nearEntities [["Car","Civilian_F"] + btc_civ_type_units, btc_int_radius_orders];}; - case 3 : {_units = [_this select 2];}; - case 4 : { - _units = [_this select 2]; - _wp_pos = (_this select 3); - }; -}; - -if (count _units == 0) exitWith {}; - -{if ((isNil {group _x getVariable "suicider"}) && ((side _x) == civilian)) then {[_x,_order,_wp_pos] spawn btc_fnc_int_orders_behaviour;};} foreach _units; \ No newline at end of file +true \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/progress_bar.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/progress_bar.hpp deleted file mode 100644 index 15ac64981..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/progress_bar.hpp +++ /dev/null @@ -1,62 +0,0 @@ -class btc_dlg_progressBar -{ - idd = -1; - movingEnable = false; - onLoad = "uiNamespace setVariable ['btc_dlg_ctrlProgressBar', (_this select 0) displayCtrl 1]; uiNamespace setVariable ['btc_dlg_title', (_this select 0) displayCtrl 2];"; - objects[] = {}; - - class controlsBackground - { - class btc_background - { - idc = -1; - moving = 0; - font = "TahomaB"; - text = ""; - sizeEx = 0; - lineSpacing = 0; - access = 0; - type = 0; - style = 0; - size = 1; - colorBackground[] = {0, 0, 0, 0.01}; - colorText[] = {0, 0, 0, 0}; - x = "safezoneX"; - y = "safezoneY"; - w = "safezoneW"; - h = "safezoneH"; - }; - - class btc_progressBar - { - idc = 1; - moving = 0; - text = ""; - font = "PuristaMedium"; - sizeEx = "1 / 40 / (getResolution select 5)";// * safezoneX / safezoneXAbs"; - lineSpacing = 0; - access = 0; - type = 0; - style = 2; - size = 1; - colorBackground[] = {1, 0.647, 0, 0.5}; - colorText[] = {1,1,1,1}; - x = "safezoneX + 0.1 * safezoneW"; - y = "safezoneY + 0.1 * safezoneH"; - w = "0.0 * safezoneW"; - h = "0.01 * safezoneH"; - }; - - class btc_titleBar : btc_progressBar - { - idc = 2; - //type = 13; - //size = 1; - colorBackground[] = {0, 0, 0, 0}; - x = "safezoneX + 0.1 * safezoneW"; - y = "safezoneY + 0.05 * safezoneH"; - w = "0.8 * safezoneW"; - h = "0.05 * safezoneH"; - }; - }; -}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/shortcuts.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/shortcuts.sqf new file mode 100644 index 000000000..5132c6c9e --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/int/shortcuts.sqf @@ -0,0 +1,33 @@ +#include "\a3\editor_f\Data\Scripts\dikCodes.h" +#define BTC_PLAY_FBSOUND true //set false if you do not want a "key-pressed-feedback" (sound) +#define BTC_FBSOUND "ClickSoft" //really quiet sound + +//Order Stop +["Hearts and Minds: Mission", "btc_HaM_Action_civStop", [(localize "STR_BTC_HAM_O_SHORTC_STOP_TITLE"), (localize "STR_BTC_HAM_O_SHORTC_STOP_NOTE")],{ //"Civil Order: Stop", "Order a civilian to stop" + if (isNull objectParent player) then { + [1] call btc_fnc_int_orders; + if (BTC_PLAY_FBSOUND) then { + playSound BTC_FBSOUND; + }; + }; +}, {}] call CBA_fnc_addKeybind; + +//Order Get down +["Hearts and Minds: Mission", "btc_HaM_Action_civGetDown", [(localize "STR_BTC_HAM_O_SHORTC_GETDOWN_TITLE"), (localize "STR_BTC_HAM_O_SHORTC_GETDOWN_NOTE")],{ //"Civil Order: Get down", "Order a civilian to get down" + if (isNull objectParent player) then { + [2] call btc_fnc_int_orders; + if (BTC_PLAY_FBSOUND) then { + playSound BTC_FBSOUND; + }; + }; +}, {}] call CBA_fnc_addKeybind; + +//Order Go away +["Hearts and Minds: Mission", "btc_HaM_Action_civGoAway", [(localize "STR_BTC_HAM_O_SHORTC_GOAWAY_TITLE"), (localize "STR_BTC_HAM_O_SHORTC_GOAWAY_NOTE")],{ //"Civil Order: Go Away", "Order a civilian to go away" + if (isNull objectParent player) then { + [3] call btc_fnc_int_orders; + if (BTC_PLAY_FBSOUND) then { + playSound BTC_FBSOUND; + }; + }; +}, {}] call CBA_fnc_addKeybind; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/CuratorObjectPlaced_s.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/CuratorObjectPlaced_s.sqf index 1117fdd46..bae3bb6d2 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/CuratorObjectPlaced_s.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/CuratorObjectPlaced_s.sqf @@ -1,4 +1,4 @@ btc_log_obj_created pushBack (_this select 0); -if (btc_debug_log) then {diag_log format ["btc_log_obj_created UPDATED by curator %1",(_this select 0)];}; \ No newline at end of file +if (btc_debug_log) then {diag_log format ["btc_log_obj_created UPDATED by curator %1",(_this select 0)];}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/can_tow.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/can_tow.sqf index d4a2e3ce5..0803c35a7 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/can_tow.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/can_tow.sqf @@ -1,23 +1,26 @@ -private ["_tower","_towed","_array","_can_tow","_pos_towed","_pos_tower"]; - // _tower ----rope--- (hook)_towed -_tower = _this select 0; -_towed = _this select 1;//btc_log_vehicle_selected +params ["_tower","_towed"]; -_array = [_tower] call btc_fnc_log_get_nottowable; +private _array = [_tower] call btc_fnc_log_get_nottowable; if !({_towed isKindOf _x} count _array == 0) exitWith {false}; -_can_tow = false; - +private _can_tow = false; -_pos_towed = []; -_pos_tower = []; +private _model_rear = ([_tower] call btc_fnc_log_hitch_points) select 1; +private _model_front = ([_towed] call btc_fnc_log_hitch_points) select 0; +private _distance = (_towed modeltoworld _model_front) distance (_tower modeltoworld _model_rear); -_pos_towed = _towed modeltoworld [0,5,0]; -_pos_tower = _tower modeltoworld [0,-6,0]; +if(btc_debug) then { + if(isNil "btc_arrow_1") then { + btc_arrow_1 = "Sign_Arrow_F" createVehicleLocal [0,0,0]; + btc_arrow_2 = "Sign_Arrow_F" createVehicleLocal [0,0,0]; + }; + btc_arrow_1 setPosASL AGLtoASL (_tower modelToWorldVisual _model_rear); + btc_arrow_2 setPosASL AGLtoASL (_towed modelToWorldVisual _model_front); +}; -if (_pos_tower distance _pos_towed < 4) then {_can_tow = true;}; +if ((_distance > 1.3) && (_distance < 5)) then {_can_tow = true;}; _can_tow \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/check_cargo.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/check_cargo.sqf index 148bac01b..b130e233b 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/check_cargo.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/check_cargo.sqf @@ -22,18 +22,18 @@ _ui = uiNamespace getVariable "btc_log_dlg"; //player setVariable ["btc_int_busy",true]; _cargo = btc_int_ask_data; -_text = ("Vehicle: " + getText (configFile >> "cfgVehicles" >> typeof _veh >> "displayName") + format [" CC: %1/%2",[_veh,_cargo] call btc_fnc_log_check_cc,[_veh] call btc_fnc_log_get_cc]); +_text = format [(localize "STR_BTC_HAM_LOG_CHECKC_VEHICLE"),(getText (configFile >> "cfgVehicles" >> typeof _veh >> "displayName")),[_veh,_cargo] call btc_fnc_log_check_cc,[_veh] call btc_fnc_log_get_cc]; //Vehicle: %1 | CC: %2/%3 (_ui displayCtrl 990) ctrlSetText _text; { - private ["_index","_displayName"]; - _displayName = getText (configFile >> "cfgVehicles" >> typeof _x >> "displayName"); - if (_displayName isEqualTo "ace_rearm_dummy_obj") then {_displayName = getText (configfile >> "CfgMagazines" >> (_x getVariable "ace_rearm_magazineClass") >> "displayName"); - }; - _index = lbAdd [ 991, _displayName ]; - lbSetData [ 991, _index, typeOf _x ]; - lbSetTooltip [ 991, _index, _displayName ]; + private ["_index","_displayName"]; + _displayName = getText (configFile >> "cfgVehicles" >> typeof _x >> "displayName"); + if (_displayName isEqualTo "ace_rearm_dummy_obj") then {_displayName = getText (configfile >> "CfgMagazines" >> (_x getVariable "ace_rearm_magazineClass") >> "displayName"); + }; + _index = lbAdd [ 991, _displayName ]; + lbSetData [ 991, _index, typeOf _x ]; + lbSetTooltip [ 991, _index, _displayName ]; } foreach _cargo; lbSetCurSel [ 991, 0 ]; @@ -41,4 +41,4 @@ lbSetCurSel [ 991, 0 ]; waitUntil {!Dialog}; //player setVariable ["btc_int_busy",false]; -btc_log_veh_selected = objNull; \ No newline at end of file +btc_log_veh_selected = objNull; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/copy.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/copy.sqf new file mode 100644 index 000000000..699c39e11 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/copy.sqf @@ -0,0 +1,14 @@ + +params ["_create_object_point"]; + +private _objects = nearestObjects [_create_object_point, btc_containers_mat, 3]; + +if (_objects isEqualTo []) exitWith {hint (localize "STR_BTC_HAM_O_COPY_NOCONTAINER")}; //No container around! + +btc_int_ask_data = nil; +[9, _objects select 0, player] remoteExec ["btc_fnc_int_ask_var", 2]; +waitUntil {!(isNil "btc_int_ask_data")}; + +btc_copy_container = +btc_int_ask_data; + +hint (localize "STR_BTC_HAM_O_COPY_SUCCSESS"); //Container and cargo copied! Clear the area to paste. diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create.sqf index 0f517039d..a4967b726 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create.sqf @@ -5,7 +5,7 @@ closeDialog 0; btc_log_create_obj = _this select 0; -if ({!((_x isKindOf "Animal") || (_x isKindOf "Module_F") || (_x isKindOf "WeaponHolder"))} count (nearestObjects [btc_log_create_obj,["All"],5]) > 1) exitWith {hint "Clear the area before create another object!"}; +if ({!((_x isKindOf "Animal") || (_x isKindOf "Module_F") || (_x isKindOf "WeaponHolder"))} count (nearestObjects [btc_log_create_obj,["All"],5]) > 1) exitWith {hint (localize "STR_BTC_HAM_LOG_BASICS_CLEARAREA")}; //Clear the area before create another object! disableSerialization; closeDialog 0; @@ -19,27 +19,27 @@ call btc_fnc_log_create_load; _class = lbData [72, lbCurSel 72]; _selected = _class; if (getText (configFile >> "cfgVehicles" >> _selected >> "displayName") isEqualTo "") then { - _new = "Box_NATO_Ammo_F" createVehicleLocal getPosASL btc_log_create_obj; + _new = "Box_NATO_Ammo_F" createVehicleLocal getPosASL btc_log_create_obj; } else { - _new = _class createVehicleLocal getPosASL btc_log_create_obj; + _new = _class createVehicleLocal getPosASL btc_log_create_obj; }; while {dialog} do { - //if (_class != lbData [72, 1]) then - if (_class != lbData [72, lbCurSel 72]) then - { - deleteVehicle _new; sleep 0.1; - _class = lbData [72, lbCurSel 72]; - //_class = lbText [72,lbCurSel 72]; - _selected = _class; - if (getText (configFile >> "cfgVehicles" >> _selected >> "displayName") isEqualTo "") then { - _new = "Box_NATO_Ammo_F" createVehicleLocal getPosASL btc_log_create_obj; - } else { - _new = _class createVehicleLocal getPosASL btc_log_create_obj; - }; - _new setDir (getDir btc_log_create_obj); - _new setPosASL getPosASL btc_log_create_obj; - }; - sleep 0.1; + //if (_class != lbData [72, 1]) then + if (_class != lbData [72, lbCurSel 72]) then + { + deleteVehicle _new; sleep 0.1; + _class = lbData [72, lbCurSel 72]; + //_class = lbText [72,lbCurSel 72]; + _selected = _class; + if (getText (configFile >> "cfgVehicles" >> _selected >> "displayName") isEqualTo "") then { + _new = "Box_NATO_Ammo_F" createVehicleLocal getPosASL btc_log_create_obj; + } else { + _new = _class createVehicleLocal getPosASL btc_log_create_obj; + }; + _new setDir (getDir btc_log_create_obj); + _new setPosASL getPosASL btc_log_create_obj; + }; + sleep 0.1; }; deleteVehicle _new; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/createVehicle.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/createVehicle.sqf index 0c2f05b36..1bd0c2bae 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/createVehicle.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/createVehicle.sqf @@ -1,22 +1,17 @@ -private _type = _this select 0; -private _pos = _this select 1; -private _dir = _this select 2; -private _textures = if (count _this > 3) then {_this select 3} else {[]}; +params ["_type", "_pos", "_dir", ["_customization", [false, false]]]; _veh = createVehicle [_type, ASLToATL _pos, [], 0, "CAN_COLLIDE"]; _veh setDir _dir; _veh setPosASL _pos; +[_veh, _customization select 0, _customization select 1] call BIS_fnc_initVehicle; -{ - _veh setObjectTextureGlobal [ _foreachindex, _x ]; -} forEach _textures; _veh setVariable ["btc_dont_delete",true]; if (getNumber(configFile >> "CfgVehicles" >> typeof _veh >> "isUav") isEqualTo 1) then { - createVehicleCrew _veh; + createVehicleCrew _veh; }; _veh call btc_fnc_db_add_veh; -_veh \ No newline at end of file +_veh diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_change_target.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_change_target.sqf index 942538c82..cc6b9aea9 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_change_target.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_change_target.sqf @@ -9,14 +9,14 @@ _category = _sub_class select _id; lbClear 72; for "_i" from 0 to ((count _category) - 1) do { - private ["_class","_display","_index"]; - _class = (_category select _i); - _display = getText (configFile >> "cfgVehicles" >> _class >> "displayName"); - if (_display isEqualTo "") then { - _display = getText (configfile >> "CfgMagazines" >> _class >> "displayName"); - }; - //_lb = lbAdd [72,_display]; - _index = lbAdd [72,_display]; - lbSetData [72, _index, _class]; - if (_i == 0) then {lbSetCurSel [72,_index];}; + private ["_class","_display","_index"]; + _class = (_category select _i); + _display = getText (configFile >> "cfgVehicles" >> _class >> "displayName"); + if (_display isEqualTo "") then { + _display = getText (configfile >> "CfgMagazines" >> _class >> "displayName"); + }; + //_lb = lbAdd [72,_display]; + _index = lbAdd [72,_display]; + lbSetData [72, _index, _class]; + if (_i == 0) then {lbSetCurSel [72,_index];}; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_load.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_load.sqf index 0dd3fcf29..fd99e6ae2 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_load.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_load.sqf @@ -6,19 +6,19 @@ _main_class = btc_construction_array select 0; _sub_class = btc_construction_array select 1; for "_i" from 0 to ((count _main_class) - 1) do { - _lb = lbAdd [71,(_main_class select _i)];if (_i == 0) then {lbSetCurSel [71,_lb];}; + _lb = lbAdd [71,(_main_class select _i)];if (_i == 0) then {lbSetCurSel [71,_lb];}; }; _category = _sub_class select 0; lbClear 72; for "_i" from 0 to ((count _category) - 1) do { - private ["_class","_display"]; - _class = (_category select _i); - _display = getText (configFile >> "cfgVehicles" >> _class >> "displayName"); - //_lb = lbAdd [72,_display]; - //lbSetData [72, _i, _class]; - _index = lbAdd [72,_display]; - lbSetData [72, _index, _class]; - if (_i == 0) then {lbSetCurSel [72,_index];}; + private ["_class","_display"]; + _class = (_category select _i); + _display = getText (configFile >> "cfgVehicles" >> _class >> "displayName"); + //_lb = lbAdd [72,_display]; + //lbSetData [72, _i, _class]; + _index = lbAdd [72,_display]; + lbSetData [72, _index, _class]; + if (_i == 0) then {lbSetCurSel [72,_index];}; }; true \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_s.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_s.sqf index 9eb9b1eeb..05a00ddd4 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_s.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/create_s.sqf @@ -2,17 +2,17 @@ private ["_obj","_pos","_vector"]; if (count _this > 1) then { - _pos = _this select 1; - _vector = surfaceNormal _pos; + _pos = _this select 1; + _vector = surfaceNormal _pos; } else { - _pos = getPosASL btc_create_object_point; - _vector = vectorUp btc_create_object_point; + _pos = getPosASL btc_create_object_point; + _vector = vectorUp btc_create_object_point; }; if (getText (configFile >> "cfgVehicles" >> (_this select 0) >> "displayName") isEqualTo "") then { - _obj = [btc_create_object_point,(_this select 0)] call ace_rearm_fnc_createDummy; + _obj = [btc_create_object_point,(_this select 0)] call ace_rearm_fnc_createDummy; } else { - _obj = (_this select 0) createVehicle [0,0,0]; + _obj = (_this select 0) createVehicle [0,0,0]; }; _obj setVectorUp _vector; _obj setPosASL _pos; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/dlg.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/dlg.hpp index 325d79350..2e1db9cc9 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/dlg.hpp +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/dlg.hpp @@ -1,112 +1,93 @@ -class btc_log_dlg -{ - idd = -1; - movingEnable = 1; - onLoad = "uiNamespace setVariable [""btc_log_dlg"", _this select 0];"; - objects[] = {}; - class controlsBackground - { +class btc_log_dlg { + idd = -1; + movingEnable = 1; + onLoad = "uiNamespace setVariable [""btc_log_dlg"", _this select 0];"; + objects[] = {}; + class controlsBackground {}; + class controls { + class btc_log_dlg_background : btc_dlg_RscText { + idc = -1; + x = 0.55 * safezoneW + safezoneX; + y = 0.5 * safezoneH + safezoneY; + w = 0.25 * safezoneW; + h = 0.2 * safezoneH;//1565 + colorBackground[] = {0, 0, 0, 0.7}; + text = ""; + }; + class btc_log_dlg_name : btc_dlg_RscText { + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + idc = 990; + x = 0.55 * safezoneW + safezoneX; + y = 0.5 * safezoneH + safezoneY; + w = 0.25 * safezoneW;//w = 0.105 * safezoneW; + h = 0.0325 * safezoneH; + text = $STR_BTC_HAM_LOG_DLG_CARGO; //Cargo + }; + class btc_log_dlg_cargo: btc_dlg_RscListBox { + idc = 991; + x = 0.55 * safezoneW + safezoneX; + y = 0.54 * safezoneH + safezoneY; + w = 0.25 * safezoneW; + h = 0.16 * safezoneH; + }; - }; - class controls - { - class btc_log_dlg_background : btc_dlg_RscText - { - idc = -1; - x = 0.55 * safezoneW + safezoneX; - y = 0.5 * safezoneH + safezoneY; - w = 0.25 * safezoneW; - h = 0.2 * safezoneH;//1565 - colorBackground[] = {0, 0, 0, 0.7}; - text = ""; - }; - class btc_log_dlg_name : btc_dlg_RscText - { - colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; - idc = 990; - x = 0.55 * safezoneW + safezoneX; - y = 0.5 * safezoneH + safezoneY; - w = 0.25 * safezoneW;//w = 0.105 * safezoneW; - h = 0.0325 * safezoneH; - text = "Cargo"; - }; - class btc_log_dlg_cargo: btc_dlg_RscListBox - { - idc = 991; - x = 0.55 * safezoneW + safezoneX; - y = 0.54 * safezoneH + safezoneY; - w = 0.25 * safezoneW; - h = 0.16 * safezoneH; - }; - - class btc_log_unload : btc_dlg_button - { - idc = 992; - text = "Unload"; - action = "[] spawn btc_fnc_log_unload"; - x = 0.55 * safezoneW + safezoneX; - y = 0.7 * safezoneH + safezoneY; - w = 0.125 * safezoneW; - default = true; - }; - class btc_log_close : btc_dlg_button - { - idc = 993; - text = "Close"; - action = "closeDialog 0;"; - x = 0.675 * safezoneW + safezoneX; - y = 0.7 * safezoneH + safezoneY; - w = 0.125 * safezoneW; - default = true; - }; - }; + class btc_log_unload : btc_dlg_button { + idc = 992; + text = $STR_BTC_HAM_LOG_DLG_UNLOAD; //Unload + action = "[] spawn btc_fnc_log_unload"; + x = 0.55 * safezoneW + safezoneX; + y = 0.7 * safezoneH + safezoneY; + w = 0.125 * safezoneW; + default = true; + }; + class btc_log_close : btc_dlg_button { + idc = 993; + text = $STR_BTC_HAM_LOG_DLG_CLOSE; //Close + action = "closeDialog 0;"; + x = 0.675 * safezoneW + safezoneX; + y = 0.7 * safezoneH + safezoneY; + w = 0.125 * safezoneW; + default = true; + }; + }; +}; +class btc_log_dlg_create { + idd = -1; + movingEnable = 1; + onLoad = ""; + objects[] = {}; + class controlsBackground {}; + class controls { + class btc_log_dlg_Apply : btc_dlg_button { + idc = -1; + text = $STR_BTC_HAM_LOG_DLG_APPLY; //Apply + action = "_spawn = [] spawn btc_fnc_log_create_apply"; + x = 0 * safezoneW + safezoneX; + y = 0.25 * safezoneH + safezoneY; + default = true; + }; + class btc_log_dlg_Close : btc_dlg_button { + idc = -1; + text = $STR_BTC_HAM_LOG_DLG_CLOSE; //Close + action = "closeDialog 0;"; + x = 0.2 * safezoneW + safezoneX; + y = 0.25 * safezoneH + safezoneY; + default = true; + }; + class btc_log_dlg_main_class : btc_dlg_comboBox { + idc = 71; + onLBSelChanged = "_spawn = [] spawn btc_fnc_log_create_change_target"; + x = 0 * safezoneW + safezoneX; + y = 0 * safezoneH + safezoneY; + w = 0.4 * safezoneW; + h = 0.055 * safezoneH; + }; + class btc_log_dlg_sub_class : btc_dlg_comboBox { + idc = 72; + x = 0 * safezoneW + safezoneX; + y = 0.1 * safezoneH + safezoneY; + w = 0.4 * safezoneW; + h = 0.055 * safezoneH; + }; + }; }; -class btc_log_dlg_create -{ - idd = -1; - movingEnable = 1; - onLoad = ""; - objects[] = {}; - class controlsBackground - { - - }; - class controls - { - class btc_log_dlg_Apply : btc_dlg_button - { - idc = -1; - text = "Apply"; - action = "_spawn = [] spawn btc_fnc_log_create_apply"; - x = 0 * safezoneW + safezoneX; - y = 0.25 * safezoneH + safezoneY; - default = true; - }; - class btc_log_dlg_Close : btc_dlg_button - { - idc = -1; - text = "Close"; - action = "closeDialog 0;"; - x = 0.2 * safezoneW + safezoneX; - y = 0.25 * safezoneH + safezoneY; - default = true; - }; - class btc_log_dlg_main_class : btc_dlg_comboBox - { - idc = 71; - onLBSelChanged = "_spawn = [] spawn btc_fnc_log_create_change_target"; - x = 0 * safezoneW + safezoneX; - y = 0 * safezoneH + safezoneY; - w = 0.4 * safezoneW; - h = 0.055 * safezoneH; - }; - class btc_log_dlg_sub_class : btc_dlg_comboBox - { - idc = 72; - x = 0 * safezoneW + safezoneX; - y = 0.1 * safezoneH + safezoneY; - w = 0.4 * safezoneW; - h = 0.055 * safezoneH; - }; - }; -}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/garage.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/garage.sqf index 6de516347..747f883f6 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/garage.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/garage.sqf @@ -1,34 +1,36 @@ -if (count (nearestObjects [_this select 0,["All"],5]) > 1) exitWith {hint "Clear the area before create another object!"}; +params ["_current_garage"]; + +if (count (nearestObjects [_current_garage, ["All"], 5]) > 1) exitWith {hint (localize "STR_BTC_HAM_LOG_BASICS_CLEARAREA")}; //Clear the area before create another object! disableSerialization; -uiNamespace setVariable [ "current_garage", ( _this select 0 ) ]; -private _fullVersion = missionNamespace getVariable [ "BIS_fnc_arsenal_fullGarage", false ]; -if !( isNull ( uiNamespace getVariable [ "BIS_fnc_arsenal_cam", objNull ] ) ) exitwith { "Garage Viewer is already running" call bis_fnc_logFormat; }; -private _veh = createVehicle [ "Land_HelipadEmpty_F", getPos ( _this select 0 ), [], 0, "CAN_COLLIDE" ]; -_veh setPosASL getPosASL ( _this select 0 ); -uiNamespace setVariable [ "garage_pad", _veh ]; -missionNamespace setVariable [ "BIS_fnc_arsenal_fullGarage", [ true, 0, false, [ false ] ] call bis_fnc_param ]; +uiNamespace setVariable [ "current_garage", _current_garage]; +private _fullVersion = missionNamespace getVariable [ "BIS_fnc_arsenal_fullGarage", false]; +if !(isNull (uiNamespace getVariable [ "BIS_fnc_arsenal_cam", objNull ])) exitwith {"Garage Viewer is already running" call bis_fnc_logFormat;}; +private _veh = createVehicle [ "Land_HelipadEmpty_F", getPos _current_garage, [], 0, "CAN_COLLIDE"]; +_veh setPosASL getPosASL _current_garage; +uiNamespace setVariable [ "garage_pad", _veh]; +missionNamespace setVariable [ "BIS_fnc_arsenal_fullGarage", [ true, 0, false, [false]] call bis_fnc_param]; with missionNamespace do { BIS_fnc_garage_center = _veh }; with uiNamespace do { - private _displayMission = [] call ( uiNamespace getVariable "bis_fnc_displayMission" ); - if !( isNull findDisplay 312 ) then { _displayMission = findDisplay 312; }; - _displayMission createDisplay "RscDisplayGarage"; - uiNamespace setVariable [ "running_garage", true ]; - waitUntil { sleep 0.25; isNull ( uiNamespace getVariable [ "BIS_fnc_arsenal_cam", objNull ] ) }; - private _logistic_point = uiNamespace getVariable "current_garage"; - private _pad = uiNamespace getVariable "garage_pad"; - deleteVehicle _pad; - private _veh_list = _logistic_point nearEntities 5; - { - {deleteVehicle _x;} forEach crew _x; + private _displayMission = [] call (uiNamespace getVariable "bis_fnc_displayMission"); + if !(isNull findDisplay 312) then { _displayMission = findDisplay 312; }; + _displayMission createDisplay "RscDisplayGarage"; + uiNamespace setVariable [ "running_garage", true]; + waitUntil { sleep 0.25; isNull (uiNamespace getVariable ["BIS_fnc_arsenal_cam", objNull])}; + private _logistic_point = uiNamespace getVariable "current_garage"; + private _pad = uiNamespace getVariable "garage_pad"; + deleteVehicle _pad; + private _veh_list = _logistic_point nearEntities 5; + { + {deleteVehicle _x;} forEach crew _x; - private _type = typeOf _x; - private _pos = getPosASL _x; - private _dir = getDir _x; - private _textures = getObjectTextures _x; - deleteVehicle _x; - [_type, _pos, _dir, _textures] remoteExec ["btc_fnc_log_createVehicle", 2]; - [_type] remoteExec ["btc_fnc_eh_veh_init", -2]; - } forEach _veh_list; -}; \ No newline at end of file + private _type = typeOf _x; + private _pos = getPosASL _x; + private _dir = getDir _x; + private _customization = [_x] call BIS_fnc_getVehicleCustomization; + deleteVehicle _x; + [_type, _pos, _dir, _customization] remoteExec ["btc_fnc_log_createVehicle", 2]; + [_type] remoteExec ["btc_fnc_eh_veh_init", -2]; + } forEach _veh_list; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/getRearmMagazines.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/getRearmMagazines.sqf index be10f57c8..c650eff8c 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/getRearmMagazines.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/getRearmMagazines.sqf @@ -11,21 +11,21 @@ private _magazineInfo = []; private _pylonConfigs = configProperties [configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "Components" >> "TransportPylonsComponent" >> "Pylons", "isClass _x"]; { - // Strangely, a 1-based index. - private _pylonIndex = _forEachIndex + 1; + // Strangely, a 1-based index. + private _pylonIndex = _forEachIndex + 1; - // Retrieving pylon magazine by index. If the pylon is empty, it is marked with "". - private _pylonMagazine = (getPylonMagazines _vehicle) select (_pylonIndex - 1); + // Retrieving pylon magazine by index. If the pylon is empty, it is marked with "". + private _pylonMagazine = (getPylonMagazines _vehicle) select (_pylonIndex - 1); - // Only care about pylons that have a magazine. - if (!(_pylonMagazine isEqualTo "")) then { - _magazineInfo pushBack _pylonMagazine; - }; + // Only care about pylons that have a magazine. + if (!(_pylonMagazine isEqualTo "")) then { + _magazineInfo pushBack _pylonMagazine; + }; } forEach _pylonConfigs; private _turrets = [_vehicle] call ace_rearm_fnc_getAllRearmTurrets; { - _magazineInfo append ([_vehicle, _x] call ace_rearm_fnc_getTurretConfigMagazines); + _magazineInfo append ([_vehicle, _x] call ace_rearm_fnc_getTurretConfigMagazines); } forEach _turrets; // _magazines without duplicates diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_cc.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_cc.sqf index 3d906bf01..e1c4ab68e 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_cc.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_cc.sqf @@ -7,19 +7,19 @@ _cc = 0; _cond = false; for "_i" from 0 to (count btc_log_def_cc - 1) do { - if (typeName (btc_log_def_cc select _i) == "STRING" && !_cond) then - { - if (!_cond && _type == (btc_log_def_cc select _i)) then {_cc = (btc_log_def_cc select (_i + 1));_cond = true;}; - }; + if (typeName (btc_log_def_cc select _i) == "STRING" && !_cond) then + { + if (!_cond && _type == (btc_log_def_cc select _i)) then {_cc = (btc_log_def_cc select (_i + 1));_cond = true;}; + }; }; if (!_cond) then { - for "_i" from 0 to (count btc_log_main_cc - 1) do - { - if (typeName (btc_log_main_cc select _i) == "STRING") then - { - if (!_cond && _type isKindOf (btc_log_main_cc select _i)) then {_cc = (btc_log_main_cc select (_i + 1));_cond = true;}; - }; - }; + for "_i" from 0 to (count btc_log_main_cc - 1) do + { + if (typeName (btc_log_main_cc select _i) == "STRING") then + { + if (!_cond && _type isKindOf (btc_log_main_cc select _i)) then {_cc = (btc_log_main_cc select (_i + 1));_cond = true;}; + }; + }; }; _cc \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_corner_points.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_corner_points.sqf index fef2cd953..a3633ee6a 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_corner_points.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_corner_points.sqf @@ -6,11 +6,11 @@ params ["_vehicle"]; private _widthFactor = 0.75; private _lengthFactor = 0.75; if(_vehicle isKindOf "Air") then { - _widthFactor = 0.3; + _widthFactor = 0.3; }; if(_vehicle isKindOf "Helicopter") then { - _widthFactor = 0.2; - _lengthFactor = 0.45; + _widthFactor = 0.2; + _lengthFactor = 0.45; }; private _centerOfMass = getCenterOfMass _vehicle; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_rc.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_rc.sqf index 481a3dcef..81ed480f6 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_rc.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/get_rc.sqf @@ -7,19 +7,19 @@ _rc = 0; _cond = false; for "_i" from 0 to (count btc_log_def_rc - 1) do { - if (typeName (btc_log_def_rc select _i) == "STRING" && !_cond) then - { - if (!_cond && _type == (btc_log_def_rc select _i)) then {_rc = (btc_log_def_rc select (_i + 1));_cond = true;}; - }; + if (typeName (btc_log_def_rc select _i) == "STRING" && !_cond) then + { + if (!_cond && _type == (btc_log_def_rc select _i)) then {_rc = (btc_log_def_rc select (_i + 1));_cond = true;}; + }; }; if (!_cond) then { - for "_i" from 0 to (count btc_log_main_rc - 1) do - { - if (typeName (btc_log_main_rc select _i) == "STRING" && !_cond) then - { - if (!_cond && _type isKindOf (btc_log_main_rc select _i)) then {_rc = (btc_log_main_rc select (_i + 1));_cond = true;}; - }; - }; + for "_i" from 0 to (count btc_log_main_rc - 1) do + { + if (typeName (btc_log_main_rc select _i) == "STRING" && !_cond) then + { + if (!_cond && _type isKindOf (btc_log_main_rc select _i)) then {_rc = (btc_log_main_rc select (_i + 1));_cond = true;}; + }; + }; }; _rc \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/hitch_points.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/hitch_points.sqf new file mode 100644 index 000000000..3e81e4937 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/hitch_points.sqf @@ -0,0 +1,14 @@ +// Author : sethduda for AdvancedTowing + +params ["_vehicle"]; + +([_vehicle] call btc_fnc_log_get_corner_points) params [ + "_rearCorner", + "_rearCorner2", + "_frontCorner", + "_frontCorner2" +]; +private _rearHitchPoint = ((_rearCorner vectorDiff _rearCorner2) vectorMultiply 0.5) vectorAdd _rearCorner2; +private _frontHitchPoint = ((_frontCorner vectorDiff _frontCorner2) vectorMultiply 0.5) vectorAdd _frontCorner2; + +[_frontHitchPoint,_rearHitchPoint]; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/hook.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/hook.sqf index 84b2e4607..4fee5fa0c 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/hook.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/hook.sqf @@ -5,7 +5,7 @@ btc_log_vehicle_selected = _towed; private _string_array = ""; { - _string_array = _string_array + ", " + _x; + _string_array = _string_array + ", " + _x; } forEach (([_towed] call btc_fnc_log_get_nottowable) - ["Truck_F"]); -hint format ["Interact with a vehicle to tow it! (This vehicle can't tow %1)", _string_array]; \ No newline at end of file +hint format [(localize "STR_BTC_HAM_LOG_HOOK_HINFO"), _string_array]; //Interact with a vehicle to tow it! (This vehicle can't tow %1) diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_check.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_check.sqf index f6842dd9e..93fb09a82 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_check.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_check.sqf @@ -9,10 +9,10 @@ _can_lift = false; _cargo_array = nearestObjects [_chopper, _array, 30]; _cargo_array = _cargo_array - [_chopper]; _cargo_array = _cargo_array select { - !( - _x isKindOf "ACE_friesGantry" || - (typeof _x) isEqualTo "ACE_friesAnchorBar" || - _x isKindOf "ace_fastroping_helper") + !( + _x isKindOf "ACE_friesGantry" || + (typeof _x) isEqualTo "ACE_friesAnchorBar" || + _x isKindOf "ace_fastroping_helper") }; if (_cargo_array isEqualTo []) then {_can_lift = false;} else {_cargo = _cargo_array select 0;_can_lift = true;}; @@ -29,6 +29,6 @@ _cargo_y = _rel_pos select 1; _cargo_z = ((getPosATL _chopper) select 2) - (_cargo_pos select 2);//hintSilent format ["%1 - %2 - %3",_cargo_x,_cargo_y,_cargo_z]; if (((abs _cargo_z) < btc_lift_max_h) && ((abs _cargo_z) > btc_lift_min_h) && ((abs _cargo_x) < btc_lift_radius) && ((abs _cargo_y) < btc_lift_radius)) then - {_can_lift = true;} else {_can_lift = false;}; - //hintSilent format ["%1 - %2", _cargo,_cargo_array]; + {_can_lift = true;} else {_can_lift = false;}; + //hintSilent format ["%1 - %2", _cargo,_cargo_array]; _can_lift \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_deploy_ropes.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_deploy_ropes.sqf index 4e59702df..6ebf602f6 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_deploy_ropes.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_deploy_ropes.sqf @@ -13,8 +13,8 @@ _heli setVariable ["cargo",nil]; ropeCreate [_heli, "slingload0", 10, []]; -btc_lift_action_hud = player addAction [("" + ("Hud On\Off") + ""),{if (btc_log_hud) then {btc_log_hud = false;} else {btc_log_hud = true;[] spawn btc_fnc_log_lift_hud;};}, [], -8, false, false, "", "true"]; -btc_lift_action = player addAction [("" + ("Hook") + ""),btc_fnc_log_lift_hook, [], 9, true, false, "", "[] call btc_fnc_log_lift_check"]; +btc_lift_action_hud = player addAction [("" + (localize "STR_BTC_HAM_LOG_LDR_ACTIONHUD") + ""),{if (btc_log_hud) then {btc_log_hud = false;} else {btc_log_hud = true;[] spawn btc_fnc_log_lift_hud;};}, [], -8, false, false, "", "true"]; //"" + ("Hud On\Off") + "" +btc_lift_action = player addAction [("" + (localize "STR_BTC_HAM_LOG_LDR_ACTIONHOOK") + ""),btc_fnc_log_lift_hook, [], 9, true, false, "", "[] call btc_fnc_log_lift_check"]; //"" + ("Hook") + "" waitUntil {sleep 5; (vehicle player == player)}; @@ -22,4 +22,4 @@ btc_ropes_deployed = false; player removeAction btc_lift_action; player removeAction btc_lift_action_hud; -if (count ropes _heli > 0) then {{ropeDestroy _x;} foreach ropes _heli;}; \ No newline at end of file +if (count ropes _heli > 0) then {{ropeDestroy _x;} foreach ropes _heli;}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hook.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hook.sqf index 752f3edd4..cd3dcdac9 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hook.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hook.sqf @@ -1,78 +1,73 @@ -private ["_chopper","_array","_cargo_array","_cargo","_bbr","_rope_length"]; - -_chopper = vehicle player; -_array = [_chopper] call btc_fnc_log_get_liftable; -_cargo_array = nearestObjects [_chopper, _array, 30]; +private _chopper = vehicle player; +private _array = [_chopper] call btc_fnc_log_get_liftable; +private _cargo_array = nearestObjects [_chopper, _array, 30]; _cargo_array = _cargo_array - [_chopper]; _cargo_array = _cargo_array select { - !( - _x isKindOf "ACE_friesGantry" || - (typeof _x) isEqualTo "ACE_friesAnchorBar" || - _x isKindOf "ace_fastroping_helper" - ) + !( + _x isKindOf "ACE_friesGantry" || + (typeof _x) isEqualTo "ACE_friesAnchorBar" || + _x isKindOf "ace_fastroping_helper" + ) }; if (_cargo_array isEqualTo []) exitWith {}; -_cargo = _cargo_array select 0; - -private ["_rope","_max_cargo","_mass","_support","_bbr_z"]; +private _cargo = _cargo_array select 0; {ropeDestroy _x;} foreach ropes _chopper; -_bbr = getArray (configfile >> "CfgVehicles" >> typeof _cargo >> "slingLoadCargoMemoryPoints"); +private _bbr = getArray (configfile >> "CfgVehicles" >> typeof _cargo >> "slingLoadCargoMemoryPoints"); private _ropes_check = []; if !(_bbr isEqualTo []) then { - { - _ropes_check pushBack (ropeCreate [_chopper, "slingload0", _cargo, _x, 11]); - } forEach _bbr; - _rope_length = 10; + { + _ropes_check pushBack (ropeCreate [_chopper, "slingload0", _cargo, _x, 11]); + } forEach _bbr; }; + +private _rope_length = 10; if ((_bbr isEqualTo []) OR (_ropes_check isEqualTo [])) then { - _bbr = boundingBoxReal _cargo; - if (abs((_bbr select 0) select 0) < 5) then { - _rope_length = 10; - } else { - _rope_length = 10 + abs((_bbr select 0) select 0); - }; - ([_cargo] call btc_fnc_log_get_corner_points) params [ - "_rearCorner", - "_rearCorner2", - "_frontCorner", - "_frontCorner2" - ]; + _bbr = boundingBoxReal _cargo; + if (abs((_bbr select 0) select 0) > 5) then { + _rope_length = 10 + abs((_bbr select 0) select 0); + }; + ([_cargo] call btc_fnc_log_get_corner_points) params [ + "_rearCorner", + "_rearCorner2", + "_frontCorner", + "_frontCorner2" + ]; - if (!Alive _cargo) then { - _support = [_cargo, _chopper] call btc_fnc_log_lift_hook_fake; - _bbr_z = _support distance _cargo; - sleep 0.3; - } else { - _support = _cargo; - _bbr_z = 0; - }; + private _support = _cargo; + private _bbr_z = 0; + if (!Alive _cargo) then { + _support = [_cargo, _chopper] call btc_fnc_log_lift_hook_fake; + diag_log str([_support,_cargo]); + _bbr_z = _support distance _cargo; + sleep 0.3; + }; - ropeCreate [_chopper, "slingload0", _support, [_rearCorner select 0, _rearCorner select 1, _bbr_z], _rope_length]; - ropeCreate [_chopper, "slingload0", _support, [_rearCorner2 select 0, _rearCorner2 select 1, _bbr_z], _rope_length]; - ropeCreate [_chopper, "slingload0", _support, [_frontCorner select 0, _frontCorner select 1, _bbr_z], _rope_length]; - ropeCreate [_chopper, "slingload0", _support, [_frontCorner2 select 0, _frontCorner2 select 1, _bbr_z], _rope_length]; + ropeCreate [_chopper, "slingload0", _support, [_rearCorner select 0, _rearCorner select 1, _bbr_z], _rope_length]; + ropeCreate [_chopper, "slingload0", _support, [_rearCorner2 select 0, _rearCorner2 select 1, _bbr_z], _rope_length]; + ropeCreate [_chopper, "slingload0", _support, [_frontCorner select 0, _frontCorner select 1, _bbr_z], _rope_length]; + ropeCreate [_chopper, "slingload0", _support, [_frontCorner2 select 0, _frontCorner2 select 1, _bbr_z], _rope_length]; }; if (btc_debug) then {hint format ["boundingBoxReal : %1 rope length : %2", _bbr, _rope_length];}; -_max_cargo = getNumber (configFile >> "cfgVehicles" >> typeof _chopper >> "slingLoadMaxCargoMass"); -_mass = getMass _cargo; +private _max_cargo = getNumber (configFile >> "cfgVehicles" >> typeof _chopper >> "slingLoadMaxCargoMass"); +private _mass = getMass _cargo; [_cargo, player] remoteExec ["btc_fnc_set_owner", 2]; btc_lifted = true; sleep 1; if ((_mass + 400) > _max_cargo) then { - private _new_mass = _max_cargo - 1000; - if (_new_mass < 0) then {_new_mass = 50;}; - [_cargo,_new_mass] remoteExec ["btc_fnc_log_set_mass", _cargo]; + private _new_mass = _max_cargo - 1000; + if (_new_mass < 0) then {_new_mass = 50;}; + [_cargo,_new_mass] remoteExec ["btc_fnc_log_set_mass", _cargo]; }; _chopper setVariable ["cargo",_cargo]; waitUntil {sleep 5; (!Alive player || !Alive _cargo || !btc_lifted || vehicle player == player)}; -[_cargo,_mass] remoteExec ["btc_fnc_log_set_mass", _cargo]; \ No newline at end of file +[_cargo,_mass] remoteExec ["btc_fnc_log_set_mass", _cargo]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hook_fake.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hook_fake.sqf index 55fb0e4ed..9532e05ff 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hook_fake.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hook_fake.sqf @@ -1,8 +1,7 @@ -private _cargo = _this select 0; -private _chopper = _this select 1; +params ["_cargo", "_chopper"]; -private _simulation = createVehicle ["Box_T_NATO_WpsSpecial_F", getPos _cargo , [], 0, "CAN_COLLIDE"]; +private _simulation = createVehicle ["Box_T_NATO_WpsSpecial_F", getPosATL _cargo , [], 0, "CAN_COLLIDE"]; _simulation enableSimulation false; private _pos = getPosATL _cargo; if ((_pos select 2) < -0.05) then {_pos = [_pos select 0, _pos select 1, (_pos select 2) - ((getPosATL _cargo) select 2)]}; @@ -12,19 +11,18 @@ _simulation setVectorUp vectorUp _cargo; _cargo attachTo [_simulation, [0,0, 0.2 + abs(((_cargo modelToWorld [0,0,0]) select 2) - ((_simulation modelToWorld [0,0,0]) select 2))]]; - _chopper addEventHandler ["RopeBreak", { - (_this select 0) removeEventHandler ["RopeBreak", _thisEventHandler]; - btc_lifted = false; - { - detach _x; - _x setVectorUp surfaceNormal getPosATL _x; - private _pos = getPosATL _x; - if ((_pos select 2) < -0.05) then { - _x setPosATL [_pos select 0, _pos select 1, 0]; - }; - } forEach attachedObjects (_this select 2); - deleteVehicle (_this select 2); + (_this select 0) removeEventHandler ["RopeBreak", _thisEventHandler]; + btc_lifted = false; + { + detach _x; + _x setVectorUp surfaceNormal getPosATL _x; + private _pos = getPosATL _x; + if ((_pos select 2) < -0.05) then { + _x setPosATL [_pos select 0, _pos select 1, 0]; + }; + } forEach attachedObjects (_this select 2); + deleteVehicle (_this select 2); }]; _simulation enableSimulation true; @@ -34,4 +32,4 @@ clearMagazineCargoGlobal _simulation; _simulation setObjectTextureGlobal [0, ""]; _simulation setObjectTextureGlobal [1, ""]; -_simulation \ No newline at end of file +_simulation diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hud.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hud.sqf index 08bf79bc2..58087d489 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hud.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hud.sqf @@ -10,7 +10,7 @@ _obj_img = _ui displayCtrl 1003; _obj_pic = _ui displayCtrl 1004; _arrow = _ui displayCtrl 1005; _obj_name = _ui displayCtrl 1006; -_obj_alt = _ui displayCtrl 1007; +_obj_alt = _ui displayCtrl 1007; _array_hud = [_radar_background,_radar,_obj_img,_obj_pic,_arrow,_obj_name,_obj_alt]; {_x ctrlShow true;} foreach _array_hud;_obj_img ctrlShow false; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hud_loop.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hud_loop.sqf index 0742093dc..bba5e9b1f 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hud_loop.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/lift_hud_loop.sqf @@ -4,19 +4,19 @@ disableSerialization; private ["_cargo","_chopper","_array","_cargo_array","_can_lift","_cargo_pos","_rel_pos","_cargo_x","_cargo_y","_cargo_z","_obj_img","_hud_x","_hud_y","_hud_x_1","_hud_y_1","_pic_cargo","_obj_name","_name_cargo","_arrow_down","_arrow_up","_arrow","_complete","_incomplete","_obj_pic","_obj_alt"]; if !((Alive player && vehicle player != player) && btc_log_hud) then { - [_this select 1] call CBA_fnc_removePerFrameHandler; - 939996 cutRsc ["Default","PLAIN"]; + [_this select 1] call CBA_fnc_removePerFrameHandler; + 939996 cutRsc ["Default","PLAIN"]; }; -_arrow_up = _this select 0 select 0; -_arrow_down = _this select 0 select 1; -_complete = _this select 0 select 2; -_incomplete = _this select 0 select 3; -_obj_img = _this select 0 select 4; -_obj_pic = _this select 0 select 5; -_arrow = _this select 0 select 6; -_obj_name = _this select 0 select 7; -_obj_alt = _this select 0 select 8; +_arrow_up = _this select 0 select 0; +_arrow_down = _this select 0 select 1; +_complete = _this select 0 select 2; +_incomplete = _this select 0 select 3; +_obj_img = _this select 0 select 4; +_obj_pic = _this select 0 select 5; +_arrow = _this select 0 select 6; +_obj_name = _this select 0 select 7; +_obj_alt = _this select 0 select 8; _chopper = vehicle player; _array = [_chopper] call btc_fnc_log_get_liftable; @@ -24,68 +24,68 @@ _cargo_array = nearestObjects [_chopper, _array, 30]; if (count _array == 0) then {_cargo_array = [];}; _cargo_array = _cargo_array - [_chopper]; _cargo_array = _cargo_array select { - !( - _x isKindOf "ACE_friesGantry" || - (typeof _x) isEqualTo "ACE_friesAnchorBar" || - _x isKindOf "ace_fastroping_helper") + !( + _x isKindOf "ACE_friesGantry" || + (typeof _x) isEqualTo "ACE_friesAnchorBar" || + _x isKindOf "ace_fastroping_helper") }; if (_cargo_array isEqualTo []) then {_cargo = objNull;} else {_cargo = _cargo_array select 0;}; if (({_cargo isKindOf _x} count _array) > 0) then {_can_lift = true;} else {_can_lift = false;}; if (!isNull _cargo) then { - _cargo_pos = getPosATL _cargo; - _rel_pos = _chopper worldToModel _cargo_pos; - _cargo_x = _rel_pos select 0; - _cargo_y = _rel_pos select 1; - _cargo_z = ((getPosATL _chopper) select 2) - (_cargo_pos select 2); - _obj_img ctrlShow true; - _hud_x = _cargo_x / 100; - _hud_y = - _cargo_y / 100; - _hud_x_1 = (btc_lift_HUD_x + _hud_x) * safezoneW + safezoneX; - _hud_y_1 = (btc_lift_HUD_y + _hud_y) * safezoneH + safezoneY; - _obj_img ctrlsetposition [_hud_x_1, _hud_y_1]; - _obj_img ctrlCommit 0; - _pic_cargo = ""; - if (_cargo isKindOf "LandVehicle") then {_pic_cargo = getText (configFile >> "cfgVehicles" >> typeof _cargo >> "picture");} else {_pic_cargo = "";}; - _name_cargo = getText (configFile >> "cfgVehicles" >> typeof _cargo >> "displayName"); - _obj_pic ctrlSetText _pic_cargo; - _obj_name ctrlSetText _name_cargo; - if (btc_lifted) then { - _obj_alt ctrlSetText (format ["%1 m",(round((getpos _cargo select 2) * 10))/10]); - _obj_img ctrlSetTextColor [0, 1, 0, 1]; - }; + _cargo_pos = getPosATL _cargo; + _rel_pos = _chopper worldToModel _cargo_pos; + _cargo_x = _rel_pos select 0; + _cargo_y = _rel_pos select 1; + _cargo_z = ((getPosATL _chopper) select 2) - (_cargo_pos select 2); + _obj_img ctrlShow true; + _hud_x = _cargo_x / 100; + _hud_y = - _cargo_y / 100; + _hud_x_1 = (btc_lift_HUD_x + _hud_x) * safezoneW + safezoneX; + _hud_y_1 = (btc_lift_HUD_y + _hud_y) * safezoneH + safezoneY; + _obj_img ctrlsetposition [_hud_x_1, _hud_y_1]; + _obj_img ctrlCommit 0; + _pic_cargo = ""; + if (_cargo isKindOf "LandVehicle") then {_pic_cargo = getText (configFile >> "cfgVehicles" >> typeof _cargo >> "picture");} else {_pic_cargo = "";}; + _name_cargo = getText (configFile >> "cfgVehicles" >> typeof _cargo >> "displayName"); + _obj_pic ctrlSetText _pic_cargo; + _obj_name ctrlSetText _name_cargo; + if (btc_lifted) then { + _obj_alt ctrlSetText (format ["%1 m",(round((getpos _cargo select 2) * 10))/10]); + _obj_img ctrlSetTextColor [0, 1, 0, 1]; + }; - if ((abs _cargo_z) > (btc_lift_max_h + 3)) then { - _arrow ctrlSetText _arrow_down; - _arrow ctrlSetTextColor [1, 0, 0, 1]; - } else { - if ((abs _cargo_z) > btc_lift_max_h) then { - _arrow ctrlSetText _arrow_down; - _arrow ctrlSetTextColor [1, 1, 0, 1]; - }; - }; - if ((abs _cargo_z) < (btc_lift_min_h - 3)) then { - _arrow ctrlSetText _arrow_up; - _arrow ctrlSetTextColor [1, 0, 0, 1]; - } else { - if ((abs _cargo_z) < btc_lift_min_h) then { - _arrow ctrlSetText _arrow_up; - _arrow ctrlSetTextColor [1, 1, 0, 1]; - }; - }; - if ((abs _cargo_z) > btc_lift_min_h && (abs _cargo_z) < btc_lift_max_h) then { - _arrow ctrlSetText _complete; - _arrow ctrlSetTextColor [0, 1, 0, 1]; - }; - if !(_can_lift) then { - _arrow ctrlSetText _incomplete; - _arrow ctrlSetTextColor [1, 0, 0, 1]; - }; + if ((abs _cargo_z) > (btc_lift_max_h + 3)) then { + _arrow ctrlSetText _arrow_down; + _arrow ctrlSetTextColor [1, 0, 0, 1]; + } else { + if ((abs _cargo_z) > btc_lift_max_h) then { + _arrow ctrlSetText _arrow_down; + _arrow ctrlSetTextColor [1, 1, 0, 1]; + }; + }; + if ((abs _cargo_z) < (btc_lift_min_h - 3)) then { + _arrow ctrlSetText _arrow_up; + _arrow ctrlSetTextColor [1, 0, 0, 1]; + } else { + if ((abs _cargo_z) < btc_lift_min_h) then { + _arrow ctrlSetText _arrow_up; + _arrow ctrlSetTextColor [1, 1, 0, 1]; + }; + }; + if ((abs _cargo_z) > btc_lift_min_h && (abs _cargo_z) < btc_lift_max_h) then { + _arrow ctrlSetText _complete; + _arrow ctrlSetTextColor [0, 1, 0, 1]; + }; + if !(_can_lift) then { + _arrow ctrlSetText _incomplete; + _arrow ctrlSetTextColor [1, 0, 0, 1]; + }; } else { - _obj_img ctrlShow false; - _obj_pic ctrlSetText ""; - _obj_name ctrlSetText ""; - _arrow ctrlSetText ""; + _obj_img ctrlShow false; + _obj_pic ctrlSetText ""; + _obj_name ctrlSetText ""; + _arrow ctrlSetText ""; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/load.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/load.sqf index d0a507a56..7e9e973f7 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/load.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/load.sqf @@ -1,40 +1,41 @@ -private ["_veh","_veh_name","_obj_name","_rc","_cc","_cargo","_rc_tot"]; +private _veh = _this; -_veh = _this; - -_veh_name = getText (configFile >> "cfgVehicles" >> typeof _veh >> "displayName"); -_obj_name = getText (configFile >> "cfgVehicles" >> typeof btc_log_object_selected >> "displayName"); +private _veh_name = getText (configFile >> "cfgVehicles" >> typeof _veh >> "displayName"); +private _obj_name = getText (configFile >> "cfgVehicles" >> typeof btc_log_object_selected >> "displayName"); if (_obj_name isEqualTo "ace_rearm_dummy_obj") then {_obj_name = getText (configfile >> "CfgMagazines" >> (btc_log_object_selected getVariable "ace_rearm_magazineClass") >> "displayName"); }; -if (btc_log_object_selected distance _veh > btc_log_max_distance_load) exitWith {hint format ["%1 is too far from %2!",_veh_name,_obj_name];}; -if (speed _veh > 3) exitWith {hint format ["%1 is moving!",_veh_name];}; +if (btc_log_object_selected distance _veh > btc_log_max_distance_load) exitWith {hint format [localize "STR_BTC_HAM_LOG_LOAD_TOOFAR", _veh_name, _obj_name];}; +if (speed _veh > 3) exitWith {hint format [localize "STR_BTC_HAM_LOG_LOAD_TOOFAST", _veh_name];}; -_rc = [btc_log_object_selected] call btc_fnc_log_get_rc; -_cc = [_veh] call btc_fnc_log_get_cc; +private _rc = [btc_log_object_selected] call btc_fnc_log_get_rc; +private _cc = [_veh] call btc_fnc_log_get_cc; -if (_rc > _cc) exitWith {hint format ["Can not load %1 in %2",_obj_name,_veh_name];}; +if (_rc > _cc) exitWith {hint format [localize "STR_BTC_HAM_LOG_LOAD_TOOBIG", _obj_name, _veh_name];}; btc_int_ask_data = nil; -[3,_veh,player] remoteExec ["btc_fnc_int_ask_var", 2]; +[3, _veh, player] remoteExec ["btc_fnc_int_ask_var", 2]; waitUntil {!(isNil "btc_int_ask_data")}; -_cargo = btc_int_ask_data; - -_rc_tot = [_veh,_cargo] call btc_fnc_log_check_cc; +private _cargo = btc_int_ask_data; -if ((_rc_tot + _rc) > _cc) exitWith {hint format ["There is no enough space for %1 in %2",_obj_name,_veh_name];}; +private _rc_tot = [_veh,_cargo] call btc_fnc_log_check_cc; -[5,format ["Loading %1 in %2. . .",_obj_name,_veh_name],_veh] call btc_fnc_int_action_result; +if ((_rc_tot + _rc) > _cc) exitWith {hint format [localize "STR_BTC_HAM_LOG_LOAD_NOSPACE", _obj_name,_veh_name];}; -waitUntil {!(isNil "btc_int_action_result")}; +private _onFinish = { + params ["_args"]; + _args params ["_veh", "_player", "_obj_name", "_veh_name"]; + [btc_log_object_selected, _veh] remoteExec ["btc_fnc_log_server_load", 2]; + hint format [localize "STR_BTC_HAM_LOG_LOAD_FIN", _obj_name, _veh_name]; + btc_log_object_selected = objNull; +}; +private _onFail = { + hint (localize "STR_BTC_HAM_LOG_LOAD_ABORT"); + btc_log_object_selected = objNull; +}; -if (btc_int_action_result) then { - //player setVariable ["btc_log_isDragging",false]; - [btc_log_object_selected,_veh] remoteExec ["btc_fnc_log_server_load", 2]; - hint format ["%1 has been loaded in %2",_obj_name,_veh_name]; -} else {hint "Loading aborted";}; -btc_log_object_selected = objNull; \ No newline at end of file +[5, [_veh, player, _obj_name, _veh_name], _onFinish, _onFail, format [localize "STR_BTC_HAM_LOG_LOAD_BAR", _obj_name, _veh_name]] call btc_fnc_int_action_result; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/paradrop.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/paradrop.sqf index 6551705ee..7bdea4d11 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/paradrop.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/paradrop.sqf @@ -31,12 +31,12 @@ _dropped attachTo [_chute,[0,0,-0.6]]; sleep 1; if ((Velocity _dropped select 2) > -2) then { - detach _dropped; - deleteVehicle _chute; - _chute = createVehicle [_chute_type, [getPosATL _dropped select 0,getPosATL _dropped select 1,(getPosATL _dropped select 2) + 5], [], 0, "CAN_COLLIDE"]; - {_chute disableCollisionWith _x;} foreach [_veh,_dropped]; + detach _dropped; + deleteVehicle _chute; + _chute = createVehicle [_chute_type, [getPosATL _dropped select 0,getPosATL _dropped select 1,(getPosATL _dropped select 2) + 5], [], 0, "CAN_COLLIDE"]; + {_chute disableCollisionWith _x;} foreach [_veh,_dropped]; - _dropped attachTo [_chute,[0,0,0]]; + _dropped attachTo [_chute,[0,0,0]]; }; waitUntil {_pos = getPosASL _chute; sleep 1; (_chute isEqualTo objNull)}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/paste.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/paste.sqf new file mode 100644 index 000000000..4849f02c5 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/paste.sqf @@ -0,0 +1,8 @@ + +params ["_copy_container","_create_object_point"]; + +if ({!((_x isKindOf "Animal") || (_x isKindOf "Module_F") || (_x isKindOf "WeaponHolder"))} count (nearestObjects [_create_object_point,["All"],5]) > 1) exitWith {hint (localize "STR_BTC_HAM_LOG_BASICS_CLEARAREA")}; //Clear the area before create another object! + +if (isNil "_copy_container") exitWith {hint (localize "STR_BTC_HAM_O_PASTE_NOCOPIED")}; //No copied container! + +[_copy_container] remoteExec ["btc_fnc_db_loadObjectStatus",2]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/place.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/place.sqf index ced009c48..b5090a6e3 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/place.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/place.sqf @@ -1,44 +1,68 @@ - -private ["_bbr","_c"]; - btc_log_placing_obj = _this; -[btc_log_placing_obj,player] remoteExec ["btc_fnc_set_owner", 2]; +[btc_log_placing_obj, player] remoteExec ["btc_fnc_set_owner", 2]; hint composeText [ - "Q/Z to raise/lower the object", - lineBreak, - "X/C to rotate the object", - lineBreak, - "Shift to increase the movement" + localize "STR_BTC_HAM_LOG_PLACE_HINT1", //Q/Z to raise/lower the object + lineBreak, + localize "STR_BTC_HAM_LOG_PLACE_HINT2", //X/C to rotate the object + lineBreak, + localize "STR_BTC_HAM_LOG_PLACE_HINT3", //F/R to tilt the object + lineBreak, + localize "STR_BTC_HAM_LOG_PLACE_HINT4" //SHIFT to increase the movement ]; btc_log_placing = true; btc_log_placing_dir = 180; -btc_log_release = player addAction [("" + ("Release") + ""),{btc_log_placing = false;}, [], 9, true, false, "", "true"]; -btc_log_place_EH_keydown = (findDisplay 46) displayAddEventHandler ["KeyDown", btc_fnc_log_place_key_down]; +btc_log_rotating_dir = 0; +btc_log_ptich_dir = 0; + +//add action ACE +private _actionEH = [player, "DefaultAction", {true}, {btc_log_placing = false;}] call ace_common_fnc_addActionEventHandler; + +//show mouse hint for release +[localize "STR_BTC_HAM_LOG_PLACE_RELEASE", ""] call ace_interaction_fnc_showMouseHint; //Release + +//add actions to keys +private _place_EH_keydown = (findDisplay 46) displayAddEventHandler ["KeyDown", btc_fnc_log_place_key_down]; [player] call ace_weaponselect_fnc_putWeaponAway; player forceWalk true; btc_log_placing_obj enableSimulation false; -_bbr = boundingBoxReal btc_log_placing_obj; -_c = boundingCenter btc_log_placing_obj; +private _bbr = boundingBoxReal btc_log_placing_obj; +private _c = boundingCenter btc_log_placing_obj; -btc_log_placing_h = (abs ((_bbr select 0) select 2)) - (_c select 2); -btc_log_placing_d = 1.5 + (abs (((_bbr select 1) select 1) - ((_bbr select 0) select 1))); +btc_log_placing_h = abs((_bbr select 0) select 2) - (_c select 2); +btc_log_placing_d = 1.5 + (abs(((_bbr select 1) select 1) - ((_bbr select 0) select 1))); -btc_log_placing_obj attachTo [player,[0,(btc_log_placing_d),btc_log_placing_h]]; +btc_log_placing_obj attachTo [player,[0, btc_log_placing_d, btc_log_placing_h]]; btc_log_placing_obj setDir btc_log_placing_dir; -waitUntil {!alive player || player getVariable ["ACE_isUnconscious",false] || !btc_log_placing}; +[{ + params ["_arguments", "_idPFH"]; + if (!Alive player || player getVariable ["ACE_isUnconscious", false] || !btc_log_placing) then { + _arguments params ["_placing_obj", "_actionEH", "_place_EH_keydown"]; + + //remove PFH + [_idPFH] call CBA_fnc_removePerFrameHandler; + + _placing_obj enableSimulation true; + detach _placing_obj; + + player forceWalk false; + + btc_log_placing_obj = objNull; + (findDisplay 46) displayRemoveEventHandler ["KeyDown", _place_EH_keydown]; + + hintSilent ""; + + //remove mouse hint + call ace_interaction_fnc_hideMouseHint; -btc_log_placing_obj enableSimulation true; -detach btc_log_placing_obj; -player forceWalk false; + // remove drop action + [player, "DefaultAction", _actionEH, -1] call ace_common_fnc_removeActionEventHandler; -btc_log_placing_obj = objNull; -(findDisplay 46) displayRemoveEventHandler ["KeyDown",btc_log_place_EH_keydown]; -player removeAction btc_log_release; -hintSilent ""; \ No newline at end of file + }; +}, 0.5, [_this, _actionEH, _place_EH_keydown]] call CBA_fnc_addPerFrameHandler; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/place_create_camera.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/place_create_camera.sqf index e934dcfee..dedc32b45 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/place_create_camera.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/place_create_camera.sqf @@ -10,8 +10,8 @@ _cam cameraEffect ["Internal", "Back", "uavrtt"]; private _y = -180; private _p = 50; private _r = 0; _cam setVectorDirAndUp [ - [ sin _y * cos _p,cos _y * cos _p,sin _p], - [ [ sin _r,-sin _p,cos _r * cos _p],-_y] call BIS_fnc_rotateVector2D + [ sin _y * cos _p,cos _y * cos _p,sin _p], + [ [ sin _r,-sin _p,cos _r * cos _p],-_y] call BIS_fnc_rotateVector2D ]; btc_log_place_camera = _cam; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/place_key_down.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/place_key_down.sqf index b05abf8e5..748274803 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/place_key_down.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/place_key_down.sqf @@ -1,25 +1,80 @@ /* - 16 Q - 44 Z - 30 A - 32 D - 45 X - 46 C + DIK_KeyCodes: https://community.bistudio.com/wiki/DIK_KeyCodes */ +params ["_display","_key","_shift","_ctrl","_alt",["_keyPressed",false]]; -private ["_key","_shift","_ctrl","_alt","_turbo"]; +private _turbo = if (_shift) then {1} else {0}; -_key = _this select 1; -_shift = _this select 2; -_ctrl = _this select 3; -_alt = _this select 4; +//height [+] (Key 16: Q) +if (_key isEqualTo 16) then { + //check for max height + if !(btc_log_placing_h > btc_log_placing_max_h) then { + //increase height + btc_log_placing_h = btc_log_placing_h + 0.1 + (_turbo/2); + //placing + btc_log_placing_obj attachTo [player,[0,btc_log_placing_d,btc_log_placing_h]]; + }; + //set var + _keyPressed = true; +}; +//height [-] (Key 44: Z*) (*German keyboard: Y) +if (_key isEqualTo 44) then { + //check for min height + if !(btc_log_placing_h < - 2) then { + //decrease heigth + btc_log_placing_h = btc_log_placing_h - 0.1 - (_turbo/2); + //placing + btc_log_placing_obj attachTo [player,[0,btc_log_placing_d,btc_log_placing_h]]; + }; + //set var + _keyPressed = true; +}; +//yaw [+] (Key 45: X) +if (_key isEqualTo 45) then { + //rotating clockwise + btc_log_placing_dir = btc_log_placing_dir + 0.5 + _turbo; + //set var + _keyPressed = true; +}; +//yaw [-] (Key 46: C) +if (_key isEqualTo 46) then { + //rotating counterclockwise + btc_log_placing_dir = btc_log_placing_dir - 0.5 - _turbo; + //set var + _keyPressed = true; +}; +//roll [+] (Key 33: F) +if (_key isEqualTo 33) then { + //tilting clockwise + btc_log_rotating_dir = btc_log_rotating_dir + 0.5 + _turbo; + //set var + _keyPressed = true; +}; +//roll [-] (Key 19: R) +if (_key isEqualTo 19) then { + //tilting counterclockwise + btc_log_rotating_dir = btc_log_rotating_dir - 0.5 - _turbo; + //set var + _keyPressed = true; +}; -_turbo = if (_shift) then {1} else {0}; +//set object position (rotation and tilting) +if (_keyPressed) then { + btc_log_placing_obj setVectorDirAndUp [ + [ + (sin btc_log_placing_dir) * (cos btc_log_ptich_dir), + (cos btc_log_placing_dir) * (cos btc_log_ptich_dir), + (sin btc_log_ptich_dir) + ], + [ + [ + (sin btc_log_rotating_dir), + (-sin btc_log_ptich_dir), + (cos btc_log_rotating_dir * cos btc_log_ptich_dir) + ], + -btc_log_placing_dir + ] call BIS_fnc_rotateVector2D + ]; +}; -switch (true) do { - case (_key == 16) : {if (btc_log_placing_h > btc_log_placing_max_h) exitWith {true};btc_log_placing_h = btc_log_placing_h + 0.1 + (_turbo/2);btc_log_placing_obj attachTo [player,[0,btc_log_placing_d,btc_log_placing_h]];true}; - case (_key == 44) : {if (btc_log_placing_h < - 2) exitWith {true};btc_log_placing_h = btc_log_placing_h - 0.1 - (_turbo/2);btc_log_placing_obj attachTo [player,[0,btc_log_placing_d,btc_log_placing_h]];true}; - case (_key == 45) : {btc_log_placing_dir = btc_log_placing_dir + 0.5 + _turbo;btc_log_placing_obj setDir btc_log_placing_dir;true}; - case (_key == 46) : {btc_log_placing_dir = btc_log_placing_dir - 0.5 - _turbo;btc_log_placing_obj setDir btc_log_placing_dir;true}; - default {false}; -}; \ No newline at end of file +_keyPressed diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/repair_wreck.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/repair_wreck.sqf index 625fbbb8e..73c098eaf 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/repair_wreck.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/repair_wreck.sqf @@ -4,8 +4,8 @@ private ["_object","_array"]; _object = _this select 0; _array = (nearestObjects [_object, ["LandVehicle","Air"], 10]) select {!((_x isKindOf "ACE_friesGantry") OR (typeof _x isEqualTo "ACE_friesAnchorBar"))}; -if (count _array == 0) exitWith {hint "No wreck";}; +if (count _array == 0) exitWith {hint (localize "STR_BTC_HAM_LOG_RWRECK_NOWRECK");}; //No wreck found -if (damage (_array select 0) != 1) exitWith {hint "It is not a wreck!"}; +if (damage (_array select 0) != 1) exitWith {hint (localize "STR_BTC_HAM_LOG_RWRECK_NOTWRECK")}; //It is not a wreck! -[_array select 0] remoteExec ["btc_fnc_log_server_repair_wreck", 2]; \ No newline at end of file +[_array select 0] remoteExec ["btc_fnc_log_server_repair_wreck", 2]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/rsc.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/rsc.hpp index b41381146..bcccc9ff5 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/rsc.hpp +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/rsc.hpp @@ -1,133 +1,133 @@ - class btc_log_hud - { - idd = 1000; - movingEnable=0; - duration=1e+011; - name = "btc_log_hud"; - onLoad = "uiNamespace setVariable [""btc_log_hud"", _this select 0];"; - controlsBackground[] = {}; - objects[] = {}; - class controls - { - class Radar_background - { - type = 0; - idc = 1001; - style = 48; + class btc_log_hud + { + idd = 1000; + movingEnable=0; + duration=1e+011; + name = "btc_log_hud"; + onLoad = "uiNamespace setVariable [""btc_log_hud"", _this select 0];"; + controlsBackground[] = {}; + objects[] = {}; + class controls + { + class Radar_background + { + type = 0; + idc = 1001; + style = 48; - x = 0.82 * safezoneW + safezoneX; - y = 0.75 * safezoneH + safezoneY; - w = 0.14 * safezoneW; - h = 0.14 * safezoneH * (getresolution select 4); + x = 0.82 * safezoneW + safezoneX; + y = 0.75 * safezoneH + safezoneY; + w = 0.14 * safezoneW; + h = 0.14 * safezoneH * (getresolution select 4); - font = "PuristaMedium"; - sizeEx = 0.03; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {0.1, 0.1, 0.1, 0.6}; - text = "\A3\ui_f\data\igui\rscingameui\rscminimap\gradient_gs.paa"; - }; - class Radar - { - type = 0; - idc = 1002; - style = 48; + font = "PuristaMedium"; + sizeEx = 0.03; + colorBackground[] = {0, 0, 0, 0}; + colorText[] = {0.1, 0.1, 0.1, 0.6}; + text = "\A3\ui_f\data\igui\rscingameui\rscminimap\gradient_gs.paa"; + }; + class Radar + { + type = 0; + idc = 1002; + style = 48; - x = 0.82 * safezoneW + safezoneX; - y = 0.75 * safezoneH + safezoneY; - w = 0.14 * safezoneW; - h = 0.14 * safezoneH * (getresolution select 4); + x = 0.82 * safezoneW + safezoneX; + y = 0.75 * safezoneH + safezoneY; + w = 0.14 * safezoneW; + h = 0.14 * safezoneH * (getresolution select 4); - font = "PuristaMedium"; - sizeEx = 0.03; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {1, 1, 1, 1}; - text = "\A3\Ui_f\data\GUI\Rsc\RscSlingLoadAssistant\SLA_Circles_ca.paa"; - }; - class Img_Obj - { - type = 0; - idc = 1003; - style = 48; + font = "PuristaMedium"; + sizeEx = 0.03; + colorBackground[] = {0, 0, 0, 0}; + colorText[] = {1, 1, 1, 1}; + text = "\A3\Ui_f\data\GUI\Rsc\RscSlingLoadAssistant\SLA_Circles_ca.paa"; + }; + class Img_Obj + { + type = 0; + idc = 1003; + style = 48; - x = 0.85 * safezoneW + safezoneX; - y = 0.85 * safezoneH + safezoneY; - w = 0.025 * safezoneW; - h = 0.025 * safezoneH * (getresolution select 4); + x = 0.85 * safezoneW + safezoneX; + y = 0.85 * safezoneH + safezoneY; + w = 0.025 * safezoneW; + h = 0.025 * safezoneH * (getresolution select 4); - font = "PuristaMedium"; - sizeEx = 1; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {1, 0, 0, 1}; - text = "\A3\ui_f\data\igui\cfg\simpleTasks\types\target_ca.paa"; - }; - class Pic_Obj - { - type = 0; - idc = 1004; - style = 48; + font = "PuristaMedium"; + sizeEx = 1; + colorBackground[] = {0, 0, 0, 0}; + colorText[] = {1, 0, 0, 1}; + text = "\A3\ui_f\data\igui\cfg\simpleTasks\types\target_ca.paa"; + }; + class Pic_Obj + { + type = 0; + idc = 1004; + style = 48; - x = 0.822 * safezoneW + safezoneX; - y = 0.75 * safezoneH + safezoneY; - w = 0.03 * safezoneW; - h = 0.03 * safezoneH; + x = 0.822 * safezoneW + safezoneX; + y = 0.75 * safezoneH + safezoneY; + w = 0.03 * safezoneW; + h = 0.03 * safezoneH; - font = "PuristaMedium"; - sizeEx = 0.03; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {1, 1, 1, 1}; - text = ""; - }; - class Arrow - { - type = 0; - idc = 1005; - style = 48; + font = "PuristaMedium"; + sizeEx = 0.03; + colorBackground[] = {0, 0, 0, 0}; + colorText[] = {1, 1, 1, 1}; + text = ""; + }; + class Arrow + { + type = 0; + idc = 1005; + style = 48; - x = 0.94 * safezoneW + safezoneX; - y = 0.75 * safezoneH + safezoneY; - w = 0.02 * safezoneW; - h = 0.02 * safezoneH * (getresolution select 4); + x = 0.94 * safezoneW + safezoneX; + y = 0.75 * safezoneH + safezoneY; + w = 0.02 * safezoneW; + h = 0.02 * safezoneH * (getresolution select 4); - font = "PuristaMedium"; - sizeEx = 0.03; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {1, 1, 1, 1}; - text = ""; - }; - class Type_Obj - { - type = 0; - idc = 1006; - style = 0x00; + font = "PuristaMedium"; + sizeEx = 0.03; + colorBackground[] = {0, 0, 0, 0}; + colorText[] = {1, 1, 1, 1}; + text = ""; + }; + class Type_Obj + { + type = 0; + idc = 1006; + style = 0x00; - x = 0.84 * safezoneW + safezoneX; - y = 0.68 * safezoneH + safezoneY; - w = 0.3 * safezoneW; - h = 0.1 * safezoneH; + x = 0.84 * safezoneW + safezoneX; + y = 0.68 * safezoneH + safezoneY; + w = 0.3 * safezoneW; + h = 0.1 * safezoneH; - font = "PuristaMedium"; - sizeEx = 0.03; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {1, 1, 1, 1}; - text = ""; - }; - class Alt_Obj - { - type = 0; - idc = 1007; - style = 0x00; + font = "PuristaMedium"; + sizeEx = 0.03; + colorBackground[] = {0, 0, 0, 0}; + colorText[] = {1, 1, 1, 1}; + text = ""; + }; + class Alt_Obj + { + type = 0; + idc = 1007; + style = 0x00; - x = 0.92 * safezoneW + safezoneX; - y = 0.935 * safezoneH + safezoneY; - w = 0.3 * safezoneW; - h = 0.1 * safezoneH; + x = 0.92 * safezoneW + safezoneX; + y = 0.935 * safezoneH + safezoneY; + w = 0.3 * safezoneW; + h = 0.1 * safezoneH; - font = "PuristaMedium"; - sizeEx = 0.03; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {1, 1, 1, 1}; - text = ""; - }; - }; - }; \ No newline at end of file + font = "PuristaMedium"; + sizeEx = 0.03; + colorBackground[] = {0, 0, 0, 0}; + colorText[] = {1, 1, 1, 1}; + text = ""; + }; + }; + }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/select.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/select.sqf index 2e4e3832f..c52544cea 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/select.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/select.sqf @@ -7,4 +7,4 @@ _displayName = getText (configFile >> "cfgVehicles" >> typeof btc_log_object_sel if (_displayName isEqualTo "ace_rearm_dummy_obj") then {_displayName = getText (configfile >> "CfgMagazines" >> (btc_log_object_selected getVariable "ace_rearm_magazineClass") >> "displayName"); }; -hint parseText format ["%1 selected
CR: %2
Interact with a vehicle to load it in!",_displayName,[btc_log_object_selected] call btc_fnc_log_get_rc]; \ No newline at end of file +hint parseText format [(localize "STR_BTC_HAM_LOG_SEL_HINT"),_displayName,[btc_log_object_selected] call btc_fnc_log_get_rc]; //%1 selected
CR: %2
Interact with a vehicle to load it in! diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/server_repair_wreck.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/server_repair_wreck.sqf index 34a7181ab..12763eb10 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/server_repair_wreck.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/server_repair_wreck.sqf @@ -10,9 +10,9 @@ _marker = _veh getVariable ["marker",""]; btc_vehicles = btc_vehicles - [_veh]; -if (_marker != "") then {deleteMarker _marker;}; +if (_marker != "") then {deleteMarker _marker; remoteExec ["", _marker];}; deleteVehicle _veh; sleep 1; _veh = [_type,[_pos select 0, _pos select 1, 0.5 + (_pos select 2)],_dir,_textures] call btc_fnc_log_createVehicle; -_veh \ No newline at end of file +_veh diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/server_unload.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/server_unload.sqf index be56dd091..279d8068e 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/server_unload.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/server_unload.sqf @@ -10,12 +10,12 @@ _cargo = _veh getVariable ["cargo",[]]; _found = false; { - if (!_found) then { - if (typeOf _x == _obj_type) then { - _obj = _x; - _found = true;//diag_log format ["_found %1 - _x %2 - _obj %3",_found,_x,_obj]; - }; - }; + if (!_found) then { + if (typeOf _x == _obj_type) then { + _obj = _x; + _found = true;//diag_log format ["_found %1 - _x %2 - _obj %3",_found,_x,_obj]; + }; + }; } foreach _cargo; if (isNull _obj) exitWith {hint "null";}; @@ -34,17 +34,17 @@ _obj attachTo [_veh,[0, -(sizeOf typeOf _veh + sizeOf _obj_type)/2,-0.2]];sleep _obj allowDamage false; switch (true) do { - case (_height >= 20): { - [_veh,_obj,"B_Parachute_02_F"] spawn btc_fnc_log_paradrop; - }; - case ((_height < 20) && (_height >= 2)): { - _obj setPos [getpos _obj select 0,getpos _obj select 1,(getpos _obj select 2) -1]; - sleep 0.1; - _obj_fall = [_obj] spawn btc_fnc_log_obj_fall; - }; - case (_height < 2): { - _obj_fall = [_obj] call btc_fnc_log_obj_fall; - }; + case (_height >= 20): { + [_veh,_obj,"B_Parachute_02_F"] spawn btc_fnc_log_paradrop; + }; + case ((_height < 20) && (_height >= 2)): { + _obj setPos [getpos _obj select 0,getpos _obj select 1,(getpos _obj select 2) -1]; + sleep 0.1; + _obj_fall = [_obj] spawn btc_fnc_log_obj_fall; + }; + case (_height < 2): { + _obj_fall = [_obj] call btc_fnc_log_obj_fall; + }; }; _obj allowDamage true; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/tow.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/tow.sqf index ded50a06a..0d3d75bbc 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/tow.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/tow.sqf @@ -6,11 +6,28 @@ btc_int_ask_data = nil; waitUntil {!(isNil "btc_int_ask_data")}; -if (!isNull btc_int_ask_data) exitWith {hint "This vehicle is already attached to another!"}; +if (!isNull btc_int_ask_data) exitWith {hint (localize "STR_BTC_HAM_LOG_TOW_ALREADYTOWED");}; //This vehicle is already attached to another! -private _relative_pos = _tower worldToModel getPosATL btc_log_vehicle_selected; +private _model_rear_tower = ([_tower] call btc_fnc_log_hitch_points) select 1; +private _model_front_selected = ([btc_log_vehicle_selected] call btc_fnc_log_hitch_points) select 0; +private _relative_pos = - (_model_front_selected select 1) + (_model_rear_tower select 1) - ((btc_log_vehicle_selected modeltoworld _model_front_selected) distance (_tower modeltoworld _model_rear_tower)); -btc_log_vehicle_selected attachTo [_tower, [0, _relative_pos select 1, 0.2 + ((btc_log_vehicle_selected modelToWorld [0,0,0]) select 2) - ((_tower modelToWorld [0,0,0]) select 2)]]; +btc_log_vehicle_selected attachTo [_tower, [0, _relative_pos, 0.2 + ((btc_log_vehicle_selected modelToWorld [0,0,0]) select 2) - ((_tower modelToWorld [0,0,0]) select 2)]]; + +private _pos_rear = _tower modelToWorld _model_rear_tower; +private _pos_front = btc_log_vehicle_selected modelToWorld _model_front_selected; +private _distance = 0.3 + (_pos_front distance _pos_rear); +_model_front_selected = _tower worldToModel _pos_front; + +ropeCreate [_tower, _model_rear_tower, _tower, [(_model_front_selected select 0) - 0.4, _model_front_selected select 1, _model_front_selected select 2], _distance]; +ropeCreate [_tower, _model_rear_tower, _tower, [(_model_front_selected select 0) + 0.4, _model_front_selected select 1, _model_front_selected select 2], _distance]; + +private _eh = _tower addEventHandler ["RopeBreak", { + (_this select 0) removeEventHandler ["RopeBreak", _thisEventHandler]; + (_this select 0) setVariable ["btc_eh", nil]; + (_this select 0) spawn btc_fnc_log_unhook; +}]; +_tower setVariable ["btc_eh", _eh]; [_tower,"tow",btc_log_vehicle_selected] remoteExec ["btc_fnc_int_change_var", 2]; -[btc_log_vehicle_selected,"tow",_tower] remoteExec ["btc_fnc_int_change_var", 2]; \ No newline at end of file +[btc_log_vehicle_selected,"tow",_tower] remoteExec ["btc_fnc_int_change_var", 2]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/unhook.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/unhook.sqf index bcb8a9c13..407cf966a 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/unhook.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/unhook.sqf @@ -3,30 +3,34 @@ private ["_veh","_towed","_pos"]; _veh = _this; -deTach _veh; - -_pos = getpos _veh; -if ((_pos select 2) < -0.05) then { - _veh setpos [_pos select 0, _pos select 1, 0]; -}; - btc_int_ask_data = nil; [4,_veh,player] remoteExec ["btc_fnc_int_ask_var", 2]; waitUntil {!(isNil "btc_int_ask_data")}; -if (isNull btc_int_ask_data) exitWith {hint "This vehicle is not attached to another!"}; +if (isNull btc_int_ask_data) exitWith {hint (localize "STR_BTC_HAM_LOG_UNHOOK_NOROPE");}; //This vehicle is not attached to another! + +deTach _veh; +_veh removeEventHandler ["RopeBreak", _veh getVariable ["btc_eh", -1]]; +(ropes _veh) apply {ropeDestroy _x}; + +_pos = getpos _veh; +if ((_pos select 2) < -0.05) then { + _veh setpos [_pos select 0, _pos select 1, 0]; +}; _towed = btc_int_ask_data; deTach _towed; +_towed removeEventHandler ["RopeBreak", _towed getVariable ["btc_eh", -1]]; +(ropes _towed) apply {ropeDestroy _x}; _pos = getpos _towed; if ((_pos select 2) < -0.05) then { - _towed setposasl [_pos select 0, _pos select 1, ((getPosASL _veh) select 2) - (_pos select 2)]; + _towed setposasl [_pos select 0, _pos select 1, ((getPosASL _veh) select 2) - (_pos select 2)]; } else { - _towed setVelocity [0, 0, 0.01]; + _towed setVelocity [0, 0, 0.01]; }; [_towed,"tow",objNull] remoteExec ["btc_fnc_int_change_var", 2]; -[_veh,"tow",objNull] remoteExec ["btc_fnc_int_change_var", 2]; \ No newline at end of file +[_veh,"tow",objNull] remoteExec ["btc_fnc_int_change_var", 2]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/unload.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/unload.sqf index 518d8ba0b..68cc84925 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/unload.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/log/unload.sqf @@ -1,26 +1,28 @@ -private ["_obj_name","_obj_type","_veh","_ctrlProgressBar","_ctrlProgressBarTitle","_time"]; - if (!Dialog) exitWith {}; -_obj_type = lbData [991, lbCurSel 991]; +private _obj_type = lbData [991, lbCurSel 991]; -_veh = btc_log_veh_selected; +private _veh = btc_log_veh_selected; closeDialog 0; -_obj_name = getText (configFile >> "cfgVehicles" >> _obj_type >> "displayName"); +private _obj_name = getText (configFile >> "cfgVehicles" >> _obj_type >> "displayName"); if (_obj_name isEqualTo "ace_rearm_dummy_obj") then {_obj_name = "Ammo";}; +private _totalTime = 5; if (vehicle player != player && {_veh isKindOf "Air"}) then { - [[5,1] select (((getPos _veh) select 2) > 5),format ["Unloading %1. . .",_obj_name],_veh,99999] call btc_fnc_int_action_result; -} else { - [5,format ["Unloading %1. . .",_obj_name],_veh] call btc_fnc_int_action_result; + _totalTime = [5,1] select (((getPos _veh) select 2) > 5); }; -waitUntil {!(isNil "btc_int_action_result")}; +private _onFinish = { + params ["_args"]; + _args params ["_veh", "_player", "_obj_type", "_obj_name"]; + [_obj_type,_veh] remoteExec ["btc_fnc_log_server_unload", 2]; + hint format [localize "STR_BTC_HAM_LOG_UNLOAD_FIN", _obj_name, getText (configFile >> "cfgVehicles" >> typeOf _veh >> "displayName")]; +}; +private _onFail = { + hint (localize "STR_BTC_HAM_LOG_UNLOAD_ABORT"); +}; -if (btc_int_action_result) then { - [_obj_type,_veh] remoteExec ["btc_fnc_log_server_unload", 2]; - hint format ["%1 has been unloaded from %2",_obj_name,getText (configFile >> "cfgVehicles" >> typeOf _veh >> "displayName")]; -} else {hint "Unloading aborted";}; \ No newline at end of file +[_totalTime, [_veh, player, _obj_type, _obj_name], _onFinish, _onFail, format [localize "STR_BTC_HAM_LOG_UNLOAD_BAR", _obj_name]] call btc_fnc_int_action_result; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/CuratorMilPlaced_s.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/CuratorMilPlaced_s.sqf index 13797e5e9..4b078ec16 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/CuratorMilPlaced_s.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/CuratorMilPlaced_s.sqf @@ -1,4 +1,4 @@ (_this select 0) call btc_fnc_mil_unit_create; -if (btc_debug_log) then {diag_log format ["Curator create mil : %1",(_this select 0)];}; \ No newline at end of file +if (btc_debug_log) then {diag_log format ["Curator create mil : %1",(_this select 0)];}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/addWP.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/addWP.sqf index 6add1ccad..d30e60cab 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/addWP.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/addWP.sqf @@ -10,9 +10,9 @@ _wp = _this select 3; _pos = []; switch (typeName _city) do { - case "ARRAY" :{_pos = _city;}; - case "STRING":{_pos = getMarkerPos _city;}; - case "OBJECT":{_pos = position _city;}; + case "ARRAY" :{_pos = _city;}; + case "STRING":{_pos = getMarkerPos _city;}; + case "OBJECT":{_pos = position _city;}; }; _rpos = [_pos, _area] call btc_fnc_randomize_pos; @@ -20,29 +20,29 @@ _rpos = [_pos, _area] call btc_fnc_randomize_pos; _in_house = false; switch (true) do { - case (_wp < 0.3) : { - private ["_houses","_house","_n_pos","_max_pos","_unit"]; - _houses = [_city,_area] call btc_fnc_getHouses; - if (count _houses > 0) then { - _in_house = true; - _house = selectRandom _houses; - [_group,_house] spawn btc_fnc_house_addWP; - _group setVariable ["inHouse", typeOf _house]; - } else {[_group,_rpos,_area,"SAFE"] call btc_fnc_task_patrol;}; - }; - case (_wp > 0.3 && _wp < 0.75) : { - [_group,_rpos,_area,"AWARE"] call btc_fnc_task_patrol; - }; - case (_wp > 0.75) : { - private ["_wpa"]; - _wpa = _group addWaypoint [_rpos, 0]; - _wpa setWaypointType "SENTRY"; - _wpa setWaypointCombatMode "RED"; - _wpa setWaypointBehaviour "AWARE"; - _wpa setWaypointFormation "WEDGE"; - _wpa setWaypointTimeout [18000, 36000, 54000]; - _wpa setWaypointStatements ["true","(group this) spawn btc_fnc_data_add_group;"]; - }; + case (_wp < 0.3) : { + private ["_houses","_house","_n_pos","_max_pos","_unit"]; + _houses = [_city,_area] call btc_fnc_getHouses; + if (count _houses > 0) then { + _in_house = true; + _house = selectRandom _houses; + [_group,_house] spawn btc_fnc_house_addWP; + _group setVariable ["inHouse", typeOf _house]; + } else {[_group,_rpos,_area,"SAFE"] call btc_fnc_task_patrol;}; + }; + case (_wp > 0.3 && _wp < 0.75) : { + [_group,_rpos,_area,"AWARE"] call btc_fnc_task_patrol; + }; + case (_wp > 0.75) : { + private ["_wpa"]; + _wpa = _group addWaypoint [_rpos, 0]; + _wpa setWaypointType "SENTRY"; + _wpa setWaypointCombatMode "RED"; + _wpa setWaypointBehaviour "AWARE"; + _wpa setWaypointFormation "WEDGE"; + _wpa setWaypointTimeout [18000, 36000, 54000]; + _wpa setWaypointStatements ["true","(group this) spawn btc_fnc_data_add_group;"]; + }; }; true \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/aiskill.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/aiskill.hpp index 5796f0d50..47830df61 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/aiskill.hpp +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/aiskill.hpp @@ -1,12 +1,12 @@ class CfgAISkill { - aimingAccuracy[] = {0, 0, 1, 1}; - aimingShake[] = {0, 0, 1, 1}; - aimingSpeed[] = {0, 0, 1, 1}; - commanding[] = {0, 0, 1, 1}; - courage[] = {0, 0, 1, 1}; - endurance[] = {0, 0, 1, 1}; - general[] = {0, 0, 1, 1}; - reloadSpeed[] = {0, 0, 1, 1}; - spotDistance[] = {0, 0, 1, 1}; - spotTime[] = {0, 0, 1, 1}; + aimingAccuracy[] = {0, 0, 1, 1}; + aimingShake[] = {0, 0, 1, 1}; + aimingSpeed[] = {0, 0, 1, 1}; + commanding[] = {0, 0, 1, 1}; + courage[] = {0, 0, 1, 1}; + endurance[] = {0, 0, 1, 1}; + general[] = {0, 0, 1, 1}; + reloadSpeed[] = {0, 0, 1, 1}; + spotDistance[] = {0, 0, 1, 1}; + spotTime[] = {0, 0, 1, 1}; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/check_cap.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/check_cap.sqf index 4a90c5d41..95f0e13dd 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/check_cap.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/check_cap.sqf @@ -8,43 +8,43 @@ btc_hideout_cap_checking = true; _cap_to = btc_hideouts select {(time - (_x getVariable ["cap_time",time]) > btc_hideout_cap_time)}; if (_cap_to isEqualTo []) exitWith { - btc_hideout_cap_checking = false; - if (btc_debug_log) then {diag_log "btc_fnc_mil_check_cap: exit cap time";}; + btc_hideout_cap_checking = false; + if (btc_debug_log) then {diag_log "btc_fnc_mil_check_cap: exit cap time";}; }; { - private ["_hd","_in_range","_closest"]; - _hd = _x; - _in_range = btc_city_all select {(_hd distance _x < btc_hideout_range)}; - - if (_in_range isEqualTo []) exitWith { - btc_hideout_cap_checking = false; - if (btc_debug_log) then {diag_log format ["btc_fnc_mil_check_cap: exit no in range = %1",_hd getVariable "id"];}; - }; - - _closest = [_hd,_in_range,true] call btc_fnc_find_closecity; - - if (btc_debug_log) then {diag_log format ["btc_fnc_mil_check_cap: _in_range = %1",_in_range];}; - - if (_closest isEqualTo []) exitWith { - btc_hideout_cap_checking = false; - if (btc_debug_log) then {diag_log format ["btc_fnc_mil_check_cap: exit null _closest = %1",_hd getVariable "id"];}; - }; - - if (btc_debug_log) then {diag_log format ["btc_fnc_mil_check_cap: SEND FROM = %1 TO %2 [int %3]",_hd getVariable "id",_closest getVariable ["name","error"],_closest getVariable ["initialized",false]];}; - - _hd setVariable ["cap_time",time]; - - if (_closest getVariable ["initialized",false]) then { - /*[_hd,_closest,1,"I_Truck_02_transport_F"] spawn btc_fnc_mil_send; - sleep 1; - [_hd,_closest,1,"I_Truck_02_transport_F"] spawn btc_fnc_mil_send; - sleep 1;*/ - for "_i" from 0 to (2 + (round random 3)) do {[_hd,_closest,0] call btc_fnc_mil_send;}; - } else { - _closest setVariable ["occupied",true]; - if (btc_debug) then {(format ["loc_%1",_closest getVariable "id"]) setMarkerColor "ColorRed";}; - }; + private ["_hd","_in_range","_closest"]; + _hd = _x; + _in_range = btc_city_all select {(_hd distance _x < btc_hideout_range)}; + + if (_in_range isEqualTo []) exitWith { + btc_hideout_cap_checking = false; + if (btc_debug_log) then {diag_log format ["btc_fnc_mil_check_cap: exit no in range = %1",_hd getVariable "id"];}; + }; + + _closest = [_hd,_in_range,true] call btc_fnc_find_closecity; + + if (btc_debug_log) then {diag_log format ["btc_fnc_mil_check_cap: _in_range = %1",_in_range];}; + + if (_closest isEqualTo []) exitWith { + btc_hideout_cap_checking = false; + if (btc_debug_log) then {diag_log format ["btc_fnc_mil_check_cap: exit null _closest = %1",_hd getVariable "id"];}; + }; + + if (btc_debug_log) then {diag_log format ["btc_fnc_mil_check_cap: SEND FROM = %1 TO %2 [int %3]",_hd getVariable "id",_closest getVariable ["name","error"],_closest getVariable ["initialized",false]];}; + + _hd setVariable ["cap_time",time]; + + if (_closest getVariable ["initialized",false]) then { + /*[_hd,_closest,1,"I_Truck_02_transport_F"] spawn btc_fnc_mil_send; + sleep 1; + [_hd,_closest,1,"I_Truck_02_transport_F"] spawn btc_fnc_mil_send; + sleep 1;*/ + for "_i" from 0 to (2 + (round random 3)) do {[_hd,_closest,0] call btc_fnc_mil_send;}; + } else { + _closest setVariable ["occupied",true]; + if (btc_debug) then {(format ["loc_%1",_closest getVariable "id"]) setMarkerColor "ColorRed";}; + }; } foreach _cap_to; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/check_rinf.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/check_rinf.sqf index 25e462de1..c04a7bcad 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/check_rinf.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/check_rinf.sqf @@ -4,18 +4,18 @@ private ["_city","_pos","_hideout"]; _city = objNull; if (count _this > 0) then {_city = _this;} else { - private ["_useful","_id"]; - //"NameVillage","NameCity","NameCityCapital","NameLocal","Hill","Airport" - _useful = btc_city_all select {( - !(_x getVariable ["active",false]) && {_x distance (getMarkerPos btc_respawn_marker) > btc_hideout_safezone} && - {!(_x getVariable ["has_ho",false])} && - ( - _x getVariable ["type",""] == "NameLocal" || - {_x getVariable ["type",""] == "Hill"} || {_x getVariable ["type",""] == "NameVillage" || {_x getVariable ["type",""] == "Airport"} - ) - ) - }; - _city = selectRandom _useful; + private ["_useful","_id"]; + //"NameVillage","NameCity","NameCityCapital","NameLocal","Hill","Airport" + _useful = btc_city_all select {( + !(_x getVariable ["active",false]) && {_x distance (getMarkerPos btc_respawn_marker) > btc_hideout_safezone} && + {!(_x getVariable ["has_ho",false])} && + ( + _x getVariable ["type",""] == "NameLocal" || + {_x getVariable ["type",""] == "Hill"} || {_x getVariable ["type",""] == "NameVillage" || {_x getVariable ["type",""] == "Airport"} + ) + ) + }; + _city = selectRandom _useful; }; _pos = [getPos _city, 300] call btc_fnc_randomize_pos; @@ -37,12 +37,12 @@ _city setVariable ["ho_pos",_pos]; _city setVariable ["ho_units_spawned",false]; if (btc_debug) then { - //Marker - private ["_marker"]; - _marker = createmarker [format ["btc_hideout_%1", _pos], _pos]; - format ["btc_hideout_%1", _pos] setmarkertypelocal "mil_unknown"; - format ["btc_hideout_%1", _pos] setMarkerTextLocal format ["Hideout %1", btc_hideouts_id]; - format ["btc_hideout_%1", _pos] setMarkerSizeLocal [0.8, 0.8]; + //Marker + private ["_marker"]; + _marker = createmarker [format ["btc_hideout_%1", _pos], _pos]; + format ["btc_hideout_%1", _pos] setmarkertypelocal "mil_unknown"; + format ["btc_hideout_%1", _pos] setMarkerTextLocal format ["Hideout %1", btc_hideouts_id]; + format ["btc_hideout_%1", _pos] setMarkerSizeLocal [0.8, 0.8]; }; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/class.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/class.sqf index 1818692a3..48f03ee77 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/class.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/class.sqf @@ -20,64 +20,64 @@ _allclass = _allclass select {getNumber(configfile >> "CfgVehicles" >> _x >> "sc //Check if faction existe _factions = _factions apply {if !isClass(configFile >> "CfgFactionClasses" >> _x) then {"IND_G_F"} else {_x};}; -_enemy_side = [east,west,independent,civilian] select getNumber(configfile >> "CfgFactionClasses" >> (_factions select 0) >> "side"); +_enemy_side = [east,west,independent,civilian] select getNumber(configfile >> "CfgFactionClasses" >> (_factions select 0) >> "side"); //Prevent selecting same side as player side if (_enemy_side isEqualTo btc_player_side) exitWith { - [["IND_G_F"], _en_AA, _en_tank] call btc_fnc_mil_class; + [["IND_G_F"], _en_AA, _en_tank] call btc_fnc_mil_class; }; { - private _faction = _x; + private _faction = _x; - //Get all vehicles of the _faction selected - private _allclass_f = _allclass select {(toUpper getText(configFile >> "cfgvehicles" >> _x >> "faction")) isEqualTo _faction}; + //Get all vehicles of the _faction selected + private _allclass_f = _allclass select {(toUpper getText(configFile >> "cfgvehicles" >> _x >> "faction")) isEqualTo _faction}; - //Units - _divers = _allclass_f select {!(((toLower _x) find "diver") isEqualTo -1)}; - if (_divers isEqualTo []) then {_divers = if (_enemy_side isEqualTo east) then {["O_diver_F","O_diver_exp_F","O_diver_TL_F"]} else {["I_diver_F","I_diver_exp_F","I_diver_TL_F"]};}; - _type_divers append _divers; - _type_units append ((_allclass_f select {_x isKindOf "Man"}) - _divers); + //Units + _divers = _allclass_f select {!(((toLower _x) find "diver") isEqualTo -1)}; + if (_divers isEqualTo []) then {_divers = if (_enemy_side isEqualTo east) then {["O_diver_F","O_diver_exp_F","O_diver_TL_F"]} else {["I_diver_F","I_diver_exp_F","I_diver_TL_F"]};}; + _type_divers append _divers; + _type_units append ((_allclass_f select {_x isKindOf "Man"}) - _divers); - //Vehicles - _type_boats append (_allclass_f select {_x isKindOf "Ship"}); - if (_type_boats isEqualTo []) then {_type_boats append ["I_Boat_Armed_01_minigun_F","I_Boat_Transport_01_F","I_SDV_01_F","I_G_Boat_Transport_01_F"];}; - _type_motorized append (if (_en_tank) then { - _allclass_f select {(_x isKindOf "Tank") || (_x isKindOf "Car") || (_x isKindOf "Truck") || (_x isKindOf "Truck_F")} - } else { - _allclass_f select {(_x isKindOf "Car") || (_x isKindOf "Truck") || (_x isKindOf "Truck_F")} - }); - _type_motorized_armed append ([(_allclass_f select {((_x isKindOf "Air") || (_x isKindOf "Helicopter") || (_x isKindOf "Tank") || (_x isKindOf "Car"))}),["168Rnd_CMFlare_Chaff_Magazine","Laserbatteries","SmokeLauncherMag"]] call btc_fnc_find_veh_with_turret); + //Vehicles + _type_boats append (_allclass_f select {_x isKindOf "Ship"}); + if (_type_boats isEqualTo []) then {_type_boats append ["I_Boat_Armed_01_minigun_F","I_Boat_Transport_01_F","I_SDV_01_F","I_G_Boat_Transport_01_F"];}; + _type_motorized append (if (_en_tank) then { + _allclass_f select {(_x isKindOf "Tank") || (_x isKindOf "Car") || (_x isKindOf "Truck") || (_x isKindOf "Truck_F")} + } else { + _allclass_f select {(_x isKindOf "Car") || (_x isKindOf "Truck") || (_x isKindOf "Truck_F")} + }); + _type_motorized_armed append ([(_allclass_f select {((_x isKindOf "Air") || (_x isKindOf "Helicopter") || (_x isKindOf "Tank") || (_x isKindOf "Car"))}),["168Rnd_CMFlare_Chaff_Magazine","Laserbatteries","SmokeLauncherMag"]] call btc_fnc_find_veh_with_turret); - //Static - _type_mg append (_allclass_f select {_x isKindOf "StaticGrenadeLauncher"}); - if (_type_mg isEqualTo []) then {_type_mg = ["O_HMG_01_F","O_HMG_01_high_F"];}; - _type_gl append (_allclass_f select {_x isKindOf "StaticMGWeapon"}); - if (_type_gl isEqualTo []) then {_type_gl = ["O_GMG_01_F","O_GMG_01_high_F"];}; + //Static + _type_mg append (_allclass_f select {_x isKindOf "StaticGrenadeLauncher"}); + if (_type_mg isEqualTo []) then {_type_mg = ["O_HMG_01_F","O_HMG_01_high_F"];}; + _type_gl append (_allclass_f select {_x isKindOf "StaticMGWeapon"}); + if (_type_gl isEqualTo []) then {_type_gl = ["O_GMG_01_F","O_GMG_01_high_F"];}; } forEach _factions; //Final filter unwanted units type if !(_en_AA) then { - //Remove Anti-Air Units - _type_units = _type_units select { - private _unit = _x; - private _weapons = getarray(configfile >> "CfgVehicles" >> _unit >> "weapons"); + //Remove Anti-Air Units + _type_units = _type_units select { + private _unit = _x; + private _weapons = getarray(configfile >> "CfgVehicles" >> _unit >> "weapons"); - private _isAA = _weapons apply { - private _weapon = _x; - private _magazines = getarray(configfile >> "CfgWeapons" >> _weapon >> "magazines"); - private _ammo = ""; - if !(_magazines isEqualTo []) then { - _ammo = gettext(configfile >> "CfgMagazines" >> _magazines select 0 >> "ammo"); - }; - (getnumber(configfile >> "CfgAmmo" >> _ammo >> "aiAmmoUsageFlags") isEqualTo 256); - }; - if (btc_debug_log) then {diag_log format ["btc_fnc_mil_class %1 Weapons: %2 isAA: %3", _unit, _weapons , _isAA];}; - !(true in _isAA) - }; + private _isAA = _weapons apply { + private _weapon = _x; + private _magazines = getarray(configfile >> "CfgWeapons" >> _weapon >> "magazines"); + private _ammo = ""; + if !(_magazines isEqualTo []) then { + _ammo = gettext(configfile >> "CfgMagazines" >> _magazines select 0 >> "ammo"); + }; + (getnumber(configfile >> "CfgAmmo" >> _ammo >> "aiAmmoUsageFlags") isEqualTo 256); + }; + if (btc_debug_log) then {diag_log format ["btc_fnc_mil_class %1 Weapons: %2 isAA: %3", _unit, _weapons , _isAA];}; + !(true in _isAA) + }; }; -_type_units = _type_units select {((_x find "pilot_") isEqualTo -1) && ((_x find "_Pilot_") isEqualTo -1) && ((_x find "_Survivor_") isEqualTo -1) && ((_x find "_Story") isEqualTo -1) && ((_x find "_base") isEqualTo -1) && ((_x find "_unarmed_") isEqualTo -1) && ((_x find "_VR_") isEqualTo -1)}; -_type_crewmen = _type_units select 0; +_type_units = _type_units select {((_x find "pilot_") isEqualTo -1) && ((_x find "_Pilot_") isEqualTo -1) && ((_x find "_Survivor_") isEqualTo -1) && ((_x find "_Story") isEqualTo -1) && ((_x find "_base") isEqualTo -1) && ((_x find "_unarmed_") isEqualTo -1) && ((_x find "_VR_") isEqualTo -1)}; +_type_crewmen = _type_units select 0; _type_motorized = (_type_motorized select {(_x find "UAV") isEqualTo -1}) select {(_x find "UGV") isEqualTo -1}; _type_motorized_armed = (_type_motorized_armed select {(_x find "UAV") isEqualTo -1}) select {(_x find "UGV") isEqualTo -1}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_group.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_group.sqf index c3524ea2d..eed9bbe8d 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_group.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_group.sqf @@ -1,5 +1,5 @@ -private ["_city","_area","_n","_wp","_pos","_rpos","_unit_type","_group","_in_house","_pos_iswater","_newpos"]; +private ["_city","_area","_n","_wp","_pos","_rpos","_unit_type","_group","_pos_iswater","_newpos"]; _city = _this select 0; _area = _this select 1; @@ -9,57 +9,77 @@ _wp = _this select 3; _pos = []; switch (typeName _city) do { - case "ARRAY" :{_pos = _city;}; - case "STRING":{_pos = getMarkerPos _city;}; - case "OBJECT":{_pos = position _city;}; + case "ARRAY" :{_pos = _city;}; + case "STRING":{_pos = getMarkerPos _city;}; + case "OBJECT":{_pos = position _city;}; }; _rpos = [_pos, _area, btc_p_sea] call btc_fnc_randomize_pos; _pos_iswater = surfaceIsWater _rpos; if (_pos_iswater) then { - _unit_type = selectRandom btc_type_divers; + _unit_type = selectRandom btc_type_divers; } else { - _unit_type = selectRandom btc_type_units; - _newpos = _rpos findEmptyPosition [0, 40, _unit_type]; - if !(_newpos isEqualTo []) then {_rpos = _newpos;}; - _rpos = [_rpos] call btc_fnc_findPosOutsideRock; + _unit_type = selectRandom btc_type_units; + _newpos = _rpos findEmptyPosition [0, 40, _unit_type]; + if !(_newpos isEqualTo []) then {_rpos = _newpos;}; + _rpos = [_rpos] call btc_fnc_findPosOutsideRock; }; _group = createGroup btc_enemy_side; [_group createUnit [_unit_type, _rpos, [], 0, "NONE"]] joinSilent _group; (leader _group) setPos _rpos; -_in_house = false; +private _groups = []; +_groups pushBack _group; +private _structure = objNull; switch (true) do { - case (_wp < 0.3) : { - private ["_houses","_house","_n_pos","_max_pos","_unit"]; - _houses = [_rpos,50] call btc_fnc_getHouses; - if (count _houses > 0) then { - _in_house = true; - _house = selectRandom _houses; - [_group,_house] spawn btc_fnc_house_addWP; - _group setVariable ["inHouse", typeOf _house]; - } else {[_group,_rpos,_area,"SAFE",_pos_iswater] spawn btc_fnc_task_patrol;}; - }; - case (_wp > 0.3 && _wp < 0.75) : { - [_group,_rpos,_area,"AWARE",_pos_iswater] spawn btc_fnc_task_patrol; - }; - case (_wp > 0.75) : { - private ["_wpa"]; - _wpa = _group addWaypoint [_rpos, 0]; - _wpa setWaypointType "SENTRY"; - _wpa setWaypointCombatMode "RED"; - _wpa setWaypointBehaviour "AWARE"; - }; + case (_wp < 0.3) : { + private _structures = [_rpos,70] call btc_fnc_mil_getStructures; + if !(_structures isEqualTo []) then { + _structure = selectRandom _structures; + _n = count (_structure buildingPos -1); + if (_n > 8) then { + _n = 2; + } else { + _n = floor(_n/2); + }; + for "_i" from 0 to _n do { + [_group createUnit [selectRandom btc_type_units, _rpos, [], 0, "NONE"]] joinSilent _group; + sleep 0.5; + }; + } else { + private _houses = [_rpos,50] call btc_fnc_getHouses; + if !(_houses isEqualTo []) then { + _structure = selectRandom _houses; + } else {[_group,_rpos,_area,"SAFE",_pos_iswater] spawn btc_fnc_task_patrol;}; + }; + }; + case (_wp > 0.3 && _wp < 0.75) : { + [_group,_rpos,_area,"AWARE",_pos_iswater] spawn btc_fnc_task_patrol; + }; + case (_wp > 0.75) : { + private _wpa = _group addWaypoint [_rpos, 0]; + _wpa setWaypointType "SENTRY"; + _wpa setWaypointCombatMode "RED"; + _wpa setWaypointBehaviour "AWARE"; + }; }; -if (!_in_house) then { - for "_i" from 0 to _n do { - _unit_type = [selectRandom btc_type_units, selectRandom btc_type_divers ] select _pos_iswater; - [_group createUnit [_unit_type, _rpos, [], 0, "NONE"]] joinSilent _group; - sleep 0.5; - }; - //_group createUnit [btc_type_medic, _pos, [], 0, "NONE"]; +if (_structure isEqualTo objNull) then { + for "_i" from 0 to _n do { + _unit_type = [selectRandom btc_type_units, selectRandom btc_type_divers ] select _pos_iswater; + [_group createUnit [_unit_type, _rpos, [], 0, "NONE"]] joinSilent _group; + sleep 0.5; + }; + //_group createUnit [btc_type_medic, _pos, [], 0, "NONE"]; +} else { + { + private _grp = createGroup btc_enemy_side; + [_x] joinSilent _grp; + _grp setVariable ["inHouse", typeOf _structure]; + [_grp,_structure] spawn btc_fnc_house_addWP; + _groups pushBack _grp; + } forEach units _group; }; //if ((position leader _group) distance [0,0,0] < 50) then {{_x setpos _rpos;} foreach units _group;}; @@ -68,4 +88,4 @@ if (!_in_house) then { if (btc_debug_log) then {diag_log format ["btc_fnc_mil_create_group: _this = %1 ; POS %2 UNITS N %3",_this,_rpos,count units _group];}; -_group \ No newline at end of file +_groups \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout.sqf index 98c8cdefa..5a024aa1b 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout.sqf @@ -4,20 +4,20 @@ private ["_city","_pos","_radius","_hideout","_random_pos","_radius_x","_radius_ _city = objNull; if (count _this > 0) then {_city = _this;} else { - private ["_useful","_id"]; - //"NameVillage","NameCity","NameCityCapital","NameLocal","Hill" - _useful = btc_city_all select {( - !(_x getVariable ["active",false]) && - {_x distance (getMarkerPos btc_respawn_marker) > btc_hideout_safezone} && - {!(_x getVariable ["has_ho",false])} && - ( - _x getVariable ["type",""] == "NameLocal" || - {_x getVariable ["type",""] == "Hill"} || - {_x getVariable ["type",""] == "NameVillage"} || - {_x getVariable ["type",""] == "Airport"} - ) - )}; - _city = selectRandom _useful; + private ["_useful","_id"]; + //"NameVillage","NameCity","NameCityCapital","NameLocal","Hill" + _useful = btc_city_all select {( + !(_x getVariable ["active",false]) && + {_x distance (getMarkerPos btc_respawn_marker) > btc_hideout_safezone} && + {!(_x getVariable ["has_ho",false])} && + ( + _x getVariable ["type",""] == "NameLocal" || + {_x getVariable ["type",""] == "Hill"} || + {_x getVariable ["type",""] == "NameVillage"} || + {_x getVariable ["type",""] == "Airport"} + ) + )}; + _city = selectRandom _useful; }; _radius = (((_city getVariable ["RadiusX",0]) + (_city getVariable ["RadiusY",0]))/2); @@ -28,7 +28,7 @@ if (count _pos == 0) then {_pos = getPos _city;}; _city setpos _pos; _id = _city getVariable ["id",0]; -if (btc_debug) then {deleteMarker format ["loc_%1",_id];}; +if (btc_debug) then {deleteMarker format ["loc_%1",_id];}; deleteVehicle (_city getVariable ["trigger_player_side",objNull]); _radius_x = btc_hideouts_radius; _radius_y = btc_hideouts_radius; @@ -54,12 +54,12 @@ _city setVariable ["ho_pos",_pos]; _city setVariable ["ho_units_spawned",false]; if (btc_debug) then { - //Marker _pos = getpos _x; - createmarker [format ["btc_hideout_%1", _pos], _pos]; - format ["btc_hideout_%1", _pos] setmarkertype "mil_unknown"; - format ["btc_hideout_%1", _pos] setMarkerText format ["Hideout %1", btc_hideouts_id]; - format ["btc_hideout_%1", _pos] setMarkerSize [0.8, 0.8]; - (format ["loc_%1",_city getVariable "id"]) setMarkerColor "ColorRed"; + //Marker _pos = getpos _x; + createmarker [format ["btc_hideout_%1", _pos], _pos]; + format ["btc_hideout_%1", _pos] setmarkertype "mil_unknown"; + format ["btc_hideout_%1", _pos] setMarkerText format ["Hideout %1", btc_hideouts_id]; + format ["btc_hideout_%1", _pos] setMarkerSize [0.8, 0.8]; + (format ["loc_%1",_city getVariable "id"]) setMarkerColor "ColorRed"; }; if (btc_debug_log) then {diag_log format ["btc_fnc_mil_create_hideout: _this = %1 ; POS %2 ID %3",_this,_pos,btc_hideouts_id];}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout_composition.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout_composition.sqf index 3e7df3248..0517bf7b6 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout_composition.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/create_hideout_composition.sqf @@ -4,25 +4,25 @@ private ["_type_bigbox","_btc_composition","_btc_composition_hideout"]; _type_bigbox = selectRandom ["Box_FIA_Ammo_F","C_supplyCrate_F","Box_East_AmmoVeh_F"]; _btc_composition_hideout = [ - [selectRandom btc_type_campfire,0,[-2.30957,-1.02979,0]], - [_type_bigbox,121.331,[0.675781,-1.52539,0]], - [selectRandom btc_type_bigbox,227.166,[2.66504,1.4126,0]], - [selectRandom btc_type_sleepingbag,135.477,[0.758789,-3.91309,0]], - [selectRandom btc_type_power,77.6499,[0.418945,3.51855,0]], - [selectRandom btc_type_seat,171.123,[-2.08203,-3.39795,0]], - ["Flag_Red_F",0,[0,0,0]], - [selectRandom btc_type_sleepingbag,161.515,[-0.726563,-4.76953,0]], - ["Land_SatelliteAntenna_01_F",304.749,[-3.71973,2.46143,0]], - [selectRandom btc_type_seat,279.689,[-4.52783,-0.76416,0]], - [selectRandom btc_type_seat,238.639,[-3.89014,-2.94873,0]], - [selectRandom btc_type_bigbox,346.664,[3.66455,-1.72998,0]], - [selectRandom btc_type_box,36.4913,[-2.65088,-4.5625,0]], - [selectRandom btc_type_tent,86.984,[3.19922,-4.36133,0]], - [selectRandom btc_type_tent,10,[-4.35303,-5.66309,0]], - [selectRandom btc_type_tent,300,[-8.47949,-1.64063,0]] + [selectRandom btc_type_campfire,0,[-2.30957,-1.02979,0]], + [_type_bigbox,121.331,[0.675781,-1.52539,0]], + [selectRandom btc_type_bigbox,227.166,[2.66504,1.4126,0]], + [selectRandom btc_type_sleepingbag,135.477,[0.758789,-3.91309,0]], + [selectRandom btc_type_power,77.6499,[0.418945,3.51855,0]], + [selectRandom btc_type_seat,171.123,[-2.08203,-3.39795,0]], + ["Flag_Red_F",0,[0,0,0]], + [selectRandom btc_type_sleepingbag,161.515,[-0.726563,-4.76953,0]], + ["Land_SatelliteAntenna_01_F",304.749,[-3.71973,2.46143,0]], + [selectRandom btc_type_seat,279.689,[-4.52783,-0.76416,0]], + [selectRandom btc_type_seat,238.639,[-3.89014,-2.94873,0]], + [selectRandom btc_type_bigbox,346.664,[3.66455,-1.72998,0]], + [selectRandom btc_type_box,36.4913,[-2.65088,-4.5625,0]], + [selectRandom btc_type_tent,86.984,[3.19922,-4.36133,0]], + [selectRandom btc_type_tent,10,[-4.35303,-5.66309,0]], + [selectRandom btc_type_tent,300,[-8.47949,-1.64063,0]] ]; if (random 1 > 0.5) then { - _btc_composition_hideout pushBack [selectRandom btc_type_camonet,0,[-0.84668,-2.16113,0]]; + _btc_composition_hideout pushBack [selectRandom btc_type_camonet,0,[-0.84668,-2.16113,0]]; }; _btc_composition = [_this select 0,(random 360),_btc_composition_hideout] call btc_fnc_create_composition; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/getStructures.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/getStructures.sqf new file mode 100644 index 000000000..3364a42b8 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/getStructures.sqf @@ -0,0 +1,6 @@ + +params ["_pos","_radius"]; + +private _structures = (nearestTerrainObjects [_pos, ["House", "BUNKER", "FORTRESS"], _radius]) select {gettext(configfile >> "CfgVehicles" >> typeof _x >> "editorSubcategory") isEqualTo "EdSubcat_Military"}; +private _useful = _structures select {(format["%1", _x buildingPos 1] != "[0,0,0]" && {damage _x == 0} && {isNil {_x getVariable "btc_house_taken"}})}; +_useful \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/hd_hideout.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/hd_hideout.sqf index 2e2b7de57..5e0cd6705 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/hd_hideout.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/hd_hideout.sqf @@ -8,38 +8,38 @@ _ammo = _this select 4; _explosive = (getNumber(configFile >> "cfgAmmo" >> _ammo >> "explosive") > 0); if (_explosive && {_damage > 0.6}) then { - private ["_id","_marker","_city","_array"]; + private ["_id","_marker","_city","_array"]; - _id = _hideout getVariable "id"; + _id = _hideout getVariable "id"; - for "_i" from 0 to (count btc_hideouts - 1) do { - if ((btc_hideouts select _i) getVariable "id" == _id) then {btc_hideouts set [_i,0];}; - }; - btc_hideouts = btc_hideouts - [0]; + for "_i" from 0 to (count btc_hideouts - 1) do { + if ((btc_hideouts select _i) getVariable "id" == _id) then {btc_hideouts set [_i,0];}; + }; + btc_hideouts = btc_hideouts - [0]; - btc_rep_bonus_hideout spawn btc_fnc_rep_change; + btc_rep_bonus_hideout spawn btc_fnc_rep_change; - _marker = createmarker [format ["btc_hideout_%1_destroyed", _id], getpos _hideout]; - _marker setmarkertype "hd_destroy"; - _marker setMarkerText format ["Hideout %1 destroyed", _id]; - _marker setMarkerSize [1, 1]; - _marker setMarkerColor "ColorRed"; + _marker = createmarker [format ["btc_hideout_%1_destroyed", _id], getpos _hideout]; + _marker setmarkertype "hd_destroy"; + [_marker,"STR_BTC_HAM_O_EH_HDHIDEOUT_MRK",_id] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker]; //Cached %1 destroyed + _marker setMarkerSize [1, 1]; + _marker setMarkerColor "ColorRed"; - _city = _hideout getVariable ["assigned_to",_hideout]; - _city setVariable ["has_ho",false]; + _city = _hideout getVariable ["assigned_to",_hideout]; + _city setVariable ["has_ho",false]; - deleteVehicle (nearestObject [getpos _hideout, "Flag_Red_F"]); - _hideout setDamage 1; + deleteVehicle (nearestObject [getpos _hideout, "Flag_Red_F"]); + _hideout setDamage 1; - _array = _hideout getVariable ["markers",[]]; + _array = _hideout getVariable ["markers",[]]; - {deleteMarker _x} foreach _array; + {deleteMarker _x} foreach _array; - if (btc_hq isEqualTo _hideout) then {btc_hq = objNull}; + if (btc_hq isEqualTo _hideout) then {btc_hq = objNull}; - if (count btc_hideouts == 0) then {[] execVM "core\fnc\common\final_phase.sqf";}; + if (count btc_hideouts == 0) then {[] spawn btc_fnc_final_phase;}; - //Notification - [2,count btc_hideouts] remoteExec ["btc_fnc_show_hint", 0]; - if (btc_debug_log) then {diag_log format ["btc_fnc_mil_hd_hideout: _this = %1 ; POS %2 ID %3",_this,getpos _hideout,_id];}; -} else {0}; \ No newline at end of file + //Notification + [2,count btc_hideouts] remoteExec ["btc_fnc_show_hint", 0]; + if (btc_debug_log) then {diag_log format ["btc_fnc_mil_hd_hideout: _this = %1 ; POS %2 ID %3",_this,getpos _hideout,_id];}; +} else {0}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/patrol_addWP.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/patrol_addWP.sqf index 4f988dfc9..3b03d42cb 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/patrol_addWP.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/patrol_addWP.sqf @@ -12,30 +12,30 @@ _players = if (isMultiplayer) then {playableUnits} else {switchableUnits}; //Remove if too far from player if ({_x distance _active_city < (_area/2) || _x distance leader _group < (_area/2)} count _players isEqualTo 0) exitWith { - vehicle leader _group setFuel 0; + vehicle leader _group setFuel 0; }; //Sometimes the waypoints is completed but too far due to obstacle (water for island etc) if ((leader _group) distance _end_city > 300) then { - _noaccess pushBack _end_city; - _tmp_area = _area - ((leader _group) distance _end_city)*0.3*count _noaccess; - if (btc_debug) then {systemChat format ["Patrol ID: %1 , count %2, area %3", _group getVariable "btc_patrol_id", count _noaccess, _tmp_area];}; + _noaccess pushBack _end_city; + _tmp_area = _area - ((leader _group) distance _end_city)*0.3*count _noaccess; + if (btc_debug) then {systemChat format ["Patrol ID: %1 , count %2, area %3", _group getVariable "btc_patrol_id", count _noaccess, _tmp_area];}; } else { - _tmp_area = _area; - _noaccess = []; + _tmp_area = _area; + _noaccess = []; }; //Find a useful end city from the start city depending of vehicle type if (_isboat) then { - _useful = btc_city_all select {_x getVariable ["hasbeach",false]}; + _useful = btc_city_all select {_x getVariable ["hasbeach",false]}; } else { - _useful = btc_city_all select {_x getVariable ["type",""] != "NameMarine"}; + _useful = btc_city_all select {_x getVariable ["type",""] != "NameMarine"}; }; _cities = _useful select {(_x distance _active_city < _tmp_area) && !(_x in _noaccess)}; //Check if end city has been found, if not take the closer city if (_cities isEqualTo []) then { - _cities = [[[_active_city, leader _group] select (_active_city in _noaccess),_useful,false] call btc_fnc_find_closecity]; + _cities = [[[_active_city, leader _group] select (_active_city in _noaccess),_useful,false] call btc_fnc_find_closecity]; }; _end_city = selectRandom _cities; _group setVariable ["end_city",_end_city]; @@ -43,8 +43,8 @@ _group setVariable ["noaccess",_noaccess]; _pos = getPos _end_city; if (_isboat) then { - _pos = (selectBestPlaces [_pos,(_active_city getVariable ["RadiusX",0]) + (_active_city getVariable ["RadiusY",0]), "sea",10,1]) select 0 select 0; - _pos = [_pos select 0, _pos select 1, 0]; + _pos = (selectBestPlaces [_pos,(_active_city getVariable ["RadiusX",0]) + (_active_city getVariable ["RadiusY",0]), "sea",10,1]) select 0 select 0; + _pos = [_pos select 0, _pos select 1, 0]; }; //Add Waypoints @@ -62,30 +62,30 @@ _wp setWaypointSpeed "LIMITED"; _wp setWaypointFormation "STAG COLUMN"; if !((vehicle leader _group) isKindOf "Air") then { - for "_i" from 0 to (2 + (floor (random 3))) do { - private ["_wp", "_newPos"]; + for "_i" from 0 to (2 + (floor (random 3))) do { + private ["_wp", "_newPos"]; - _newPos = [(_pos select 0) + (random 150 - random 150),(_pos select 1) + (random 150 - random 150),0]; + _newPos = [(_pos select 0) + (random 150 - random 150),(_pos select 1) + (random 150 - random 150),0]; - _wp = _group addWaypoint [_newPos, 0]; - _wp setWaypointType "MOVE"; - _wp setWaypointCompletionRadius 20; - _wp setWaypointCombatMode "RED"; - }; - _wp_1 = _group addWaypoint [_pos, 0]; - _wp_1 setWaypointType "MOVE"; - _wp_1 setWaypointCompletionRadius 20; - _wp_1 setWaypointStatements ["true", format ["_spawn = [group this,%1,%2] spawn btc_fnc_mil_patrol_addWP;",_area,_isboat]]; + _wp = _group addWaypoint [_newPos, 0]; + _wp setWaypointType "MOVE"; + _wp setWaypointCompletionRadius 20; + _wp setWaypointCombatMode "RED"; + }; + _wp_1 = _group addWaypoint [_pos, 0]; + _wp_1 setWaypointType "MOVE"; + _wp_1 setWaypointCompletionRadius 20; + _wp_1 setWaypointStatements ["true", format ["_spawn = [group this,%1,%2] spawn btc_fnc_mil_patrol_addWP;",_area,_isboat]]; } else {_wp setWaypointStatements ["true", format ["_spawn = [group this,%1,%2] spawn btc_fnc_mil_patrol_addWP;",_area,_isboat]];}; if (btc_debug) then { - if (!isNil {_group getVariable "btc_patrol_id"}) then { - private ["_marker"]; - deleteMarker format ["Patrol_fant_%1", _group getVariable "btc_patrol_id"]; - _marker = createmarker [format ["Patrol_fant_%1", _group getVariable "btc_patrol_id"] , [(_pos select 0) + random 30,(_pos select 1) + random 30,0]]; - format ["Patrol_fant_%1", _group getVariable "btc_patrol_id"] setmarkertype "mil_dot"; - format ["Patrol_fant_%1", _group getVariable "btc_patrol_id"] setMarkerText format ["P %1", _group getVariable "btc_patrol_id"]; - format ["Patrol_fant_%1", _group getVariable "btc_patrol_id"] setmarkerColor "ColorGreen"; - format ["Patrol_fant_%1", _group getVariable "btc_patrol_id"] setMarkerSize [0.5, 0.5]; - diag_log text format ["ID: %1 (%3) POS: %2",_group getVariable "btc_patrol_id",_pos,typeof vehicle leader _group]; - }; + if (!isNil {_group getVariable "btc_patrol_id"}) then { + private ["_marker"]; + deleteMarker format ["Patrol_fant_%1", _group getVariable "btc_patrol_id"]; + _marker = createmarker [format ["Patrol_fant_%1", _group getVariable "btc_patrol_id"] , [(_pos select 0) + random 30,(_pos select 1) + random 30,0]]; + format ["Patrol_fant_%1", _group getVariable "btc_patrol_id"] setmarkertype "mil_dot"; + format ["Patrol_fant_%1", _group getVariable "btc_patrol_id"] setMarkerText format ["P %1", _group getVariable "btc_patrol_id"]; + format ["Patrol_fant_%1", _group getVariable "btc_patrol_id"] setmarkerColor "ColorGreen"; + format ["Patrol_fant_%1", _group getVariable "btc_patrol_id"] setMarkerSize [0.5, 0.5]; + diag_log text format ["ID: %1 (%3) POS: %2",_group getVariable "btc_patrol_id",_pos,typeof vehicle leader _group]; + }; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/patrol_create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/patrol_create.sqf index 5ced47104..ee3937bcc 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/patrol_create.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/patrol_create.sqf @@ -10,24 +10,24 @@ if (isNil "btc_patrol_id") then {btc_patrol_id = 0;}; if (btc_debug_log) then {diag_log format ["btc_fnc_mil_patrol_create: _random = %1 _city %2 _area %3 btc_patrol_active = %4",_random,_city,_area,count(btc_patrol_active)];}; if (_random isEqualTo 0) then { - private ["_n"]; - _n = random 100; - switch (true) do { - case (_n < 40) : {_random = 1;}; - case (_n > 40 && _n < 90) : {_random = 2;}; - case (_n > 90 && _n < 96) : {_random = 3;}; - case (_n > 96) : {_random = 4;}; - }; + private ["_n"]; + _n = random 100; + switch (true) do { + case (_n < 40) : {_random = 1;}; + case (_n > 40 && _n < 90) : {_random = 2;}; + case (_n > 90 && _n < 96) : {_random = 3;}; + case (_n > 96) : {_random = 4;}; + }; }; _cities = btc_city_all select {(_x distance _city < _area)}; _usefuls = _cities select {(!(_x getVariable ["active",false]) && _x getVariable ["occupied",false])}; /* if (count _useful == 0) then { - while {count _useful == 0} do { - private "_pos"; - _pos = [getPos _city, _area] call btc_fnc_randomize_pos; - if ({_x distance _pos < 500} count playableUnits == 0) then {_useful = _useful + [_pos];}; - }; + while {count _useful == 0} do { + private "_pos"; + _pos = [getPos _city, _area] call btc_fnc_randomize_pos; + if ({_x distance _pos < 500} count playableUnits == 0) then {_useful = _useful + [_pos];}; + }; }; */ @@ -35,9 +35,9 @@ if (_usefuls isEqualTo []) exitWith {true}; _useful = selectRandom _usefuls; if (_useful getVariable ["hasbeach",false]) then { - _pos = [getPos _useful,((_useful getVariable ["RadiusX",0]) + (_useful getVariable ["RadiusY",0])), btc_p_sea] call btc_fnc_randomize_pos; + _pos = [getPos _useful,((_useful getVariable ["RadiusX",0]) + (_useful getVariable ["RadiusY",0])), btc_p_sea] call btc_fnc_randomize_pos; } else { - _pos = getPos _useful; + _pos = getPos _useful; }; _group = createGroup [btc_enemy_side, true]; @@ -51,55 +51,55 @@ _pos_iswater = (surfaceIsWater _pos); sleep 5 + random 10; switch (true) do { - case ((_random isEqualTo 1) && !_pos_iswater) : { - _n_units = 4 + (round random 8); - _pos = [_pos,0,50,10,false] call btc_fnc_findsafepos; - [_group createUnit [(btc_type_units select 0), _pos, [], 0, "NONE"]] joinSilent _group; - (leader _group) setpos _pos; - for "_i" from 1 to _n_units do { - private ["_unit_type"]; - _unit_type = selectRandom btc_type_units; - [_group createUnit [_unit_type, _pos, [], 0, "NONE"]] joinSilent _group; - sleep 1; - }; - _spawn = [_group,_area,_pos_iswater] spawn btc_fnc_mil_patrol_addWP; - }; - case ((_random isEqualTo 2) || _pos_iswater) : { - private ["_veh_type","_newZone","_veh","_cargo"]; - if ((_pos nearRoads 150) isEqualTo []) then { - _newZone = [_pos,0,500,13,btc_p_sea] call btc_fnc_findsafepos; - _pos_iswater = surfaceIsWater _newZone; - if (_pos_iswater) then { - _veh_type = selectRandom btc_type_boats; - } else { - _veh_type = selectRandom (btc_type_motorized + [selectRandom btc_civ_type_veh]); - }; - } else { - _newZone = getPos (selectRandom (_pos nearRoads 150)); - _pos_iswater = false; - _veh_type = selectRandom (btc_type_motorized + [selectRandom btc_civ_type_veh]); - }; - - _needdiver = getText(configfile >> "CfgVehicles" >> _veh_type >> "simulation") isEqualTo "submarinex"; - if (_needdiver) then {_crewmen = btc_type_divers select 0} else {_crewmen = btc_type_crewmen}; - _veh = createVehicle [_veh_type, _newZone, [], 0, "FLY"]; - [_veh,_group,false,"",_crewmen] call BIS_fnc_spawnCrew; - _group selectLeader (driver _veh); - _cargo = (_veh emptyPositions "cargo") - 1; - if (_cargo > 0) then { - for "_i" from 0 to _cargo do { - _unit_type = [selectRandom btc_type_units, selectRandom btc_type_divers] select _needdiver; - _unit_type createUnit [_newZone, _group, "this moveinCargo _veh;this assignAsCargo _veh;"]; - }; - }; - units _group joinSilent _group; - - _1 = _veh addEventHandler ["Fuel", {_this call btc_fnc_mil_patrol_eh}]; - _veh setVariable ["eh", [_1/*,_2,_3,4,5*/]]; - _veh setVariable ["crews", _group]; - - _spawn = [_group,_area,_pos_iswater] spawn btc_fnc_mil_patrol_addWP; - }; + case ((_random isEqualTo 1) && !_pos_iswater) : { + _n_units = 4 + (round random 8); + _pos = [_pos,0,50,10,false] call btc_fnc_findsafepos; + [_group createUnit [(btc_type_units select 0), _pos, [], 0, "NONE"]] joinSilent _group; + (leader _group) setpos _pos; + for "_i" from 1 to _n_units do { + private ["_unit_type"]; + _unit_type = selectRandom btc_type_units; + [_group createUnit [_unit_type, _pos, [], 0, "NONE"]] joinSilent _group; + sleep 1; + }; + _spawn = [_group,_area,_pos_iswater] spawn btc_fnc_mil_patrol_addWP; + }; + case ((_random isEqualTo 2) || _pos_iswater) : { + private ["_veh_type","_newZone","_veh","_cargo"]; + if ((_pos nearRoads 150) isEqualTo []) then { + _newZone = [_pos,0,500,13,btc_p_sea] call btc_fnc_findsafepos; + _pos_iswater = surfaceIsWater _newZone; + if (_pos_iswater) then { + _veh_type = selectRandom btc_type_boats; + } else { + _veh_type = selectRandom (btc_type_motorized + [selectRandom btc_civ_type_veh]); + }; + } else { + _newZone = getPos (selectRandom (_pos nearRoads 150)); + _pos_iswater = false; + _veh_type = selectRandom (btc_type_motorized + [selectRandom btc_civ_type_veh]); + }; + + _needdiver = getText(configfile >> "CfgVehicles" >> _veh_type >> "simulation") isEqualTo "submarinex"; + if (_needdiver) then {_crewmen = btc_type_divers select 0} else {_crewmen = btc_type_crewmen}; + _veh = createVehicle [_veh_type, _newZone, [], 0, "FLY"]; + [_veh,_group,false,"",_crewmen] call BIS_fnc_spawnCrew; + _group selectLeader (driver _veh); + _cargo = (_veh emptyPositions "cargo") - 1; + if (_cargo > 0) then { + for "_i" from 0 to _cargo do { + _unit_type = [selectRandom btc_type_units, selectRandom btc_type_divers] select _needdiver; + _unit_type createUnit [_newZone, _group, "this moveinCargo _veh;this assignAsCargo _veh;"]; + }; + }; + units _group joinSilent _group; + + _1 = _veh addEventHandler ["Fuel", {_this call btc_fnc_mil_patrol_eh}]; + _veh setVariable ["eh", [_1/*,_2,_3,4,5*/]]; + _veh setVariable ["crews", _group]; + + _spawn = [_group,_area,_pos_iswater] spawn btc_fnc_mil_patrol_addWP; + }; }; btc_patrol_active pushBack _group; @@ -108,5 +108,5 @@ btc_patrol_active pushBack _group; //Check if HC is connected if !((entities "HeadlessClient_F") isEqualTo []) then { - [_group] call btc_fnc_set_groupowner; + [_group] call btc_fnc_set_groupowner; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/send.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/send.sqf index 7877305ca..92ac9bfed 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/send.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/send.sqf @@ -1,69 +1,69 @@ //[_hd,_closest,1,"I_Truck_02_transport_F"] spawn btc_fnc_mil_send; /* - Send a group of units to a location then call btc_fnc_data_add_group. If player is around, initiate patrol around the destination, ifnot save in database and delete units. + Send a group of units to a location then call btc_fnc_data_add_group. If player is around, initiate patrol around the destination, ifnot save in database and delete units. */ private ["_pos","_dest"]; _pos = getPos (_this select 0); switch (typeName (_this select 1)) do { - case "ARRAY" : {_dest = (_this select 1);}; - case "STRING": {_dest = getMarkerPos (_this select 1);}; - case "OBJECT": {_dest = getPos (_this select 1);}; + case "ARRAY" : {_dest = (_this select 1);}; + case "STRING": {_dest = getMarkerPos (_this select 1);}; + case "OBJECT": {_dest = getPos (_this select 1);}; }; private ["_group"]; switch (_this select 2) do { - case 0 : { - private ["_wp_0","_wp"]; - _group = [_pos,150,(3 + random 6),1] call btc_fnc_mil_create_group; - _group setVariable ["no_cache",true]; - while {(count (waypoints _group)) > 0} do { deleteWaypoint ((waypoints _group) select 0); }; - _wp_0 = _group addWaypoint [_dest, 60]; - _wp = _group addWaypoint [_dest, 60]; - _wp setWaypointType "MOVE"; - _wp setWaypointCombatMode "RED"; - _wp setWaypointBehaviour "AWARE"; - _wp setWaypointSpeed "FULL"; - _wp setWaypointFormation "COLUMN"; - _wp setWaypointStatements ["true", "(group this) spawn btc_fnc_data_add_group;"]; - }; - case 1 : { - private ["_veh_type","_return_pos","_veh","_gunner","_commander","_cargo","_wp","_wp_1","_wp_3"]; - _group = createGroup [btc_enemy_side, true]; - _group setVariable ["no_cache",true]; - _veh_type = (_this select 3); - if (_veh_type == "") then {_veh_type = selectRandom btc_type_motorized}; + case 0 : { + private ["_wp_0","_wp"]; + _group = ([_pos,150,(3 + random 6),1] call btc_fnc_mil_create_group) select 0; + _group setVariable ["no_cache",true]; + while {(count (waypoints _group)) > 0} do { deleteWaypoint ((waypoints _group) select 0); }; + _wp_0 = _group addWaypoint [_dest, 60]; + _wp = _group addWaypoint [_dest, 60]; + _wp setWaypointType "MOVE"; + _wp setWaypointCombatMode "RED"; + _wp setWaypointBehaviour "AWARE"; + _wp setWaypointSpeed "FULL"; + _wp setWaypointFormation "COLUMN"; + _wp setWaypointStatements ["true", "(group this) spawn btc_fnc_data_add_group;"]; + }; + case 1 : { + private ["_veh_type","_return_pos","_veh","_gunner","_commander","_cargo","_wp","_wp_1","_wp_3"]; + _group = createGroup [btc_enemy_side, true]; + _group setVariable ["no_cache",true]; + _veh_type = (_this select 3); + if (_veh_type == "") then {_veh_type = selectRandom btc_type_motorized}; - _return_pos = [_pos,10,500,13,false] call btc_fnc_findsafepos; + _return_pos = [_pos,10,500,13,false] call btc_fnc_findsafepos; - _veh = createVehicle [_veh_type, _return_pos, [], 0, "FLY"]; - [_veh,_group,false,"",btc_type_crewmen] call BIS_fnc_spawnCrew; - _cargo = (_veh emptyPositions "cargo") - 1; - for "_i" from 0 to _cargo do { - (selectRandom btc_type_units) createUnit [[0,0,0], _group, "this moveinCargo _veh;this assignAsCargo _veh;"]; - }; + _veh = createVehicle [_veh_type, _return_pos, [], 0, "FLY"]; + [_veh,_group,false,"",btc_type_crewmen] call BIS_fnc_spawnCrew; + _cargo = (_veh emptyPositions "cargo") - 1; + for "_i" from 0 to _cargo do { + (selectRandom btc_type_units) createUnit [[0,0,0], _group, "this moveinCargo _veh;this assignAsCargo _veh;"]; + }; - _group selectLeader (driver _veh); + _group selectLeader (driver _veh); - _wp = _group addWaypoint [_dest, 60]; - _wp setWaypointType "MOVE"; - _wp setWaypointCombatMode "RED"; - _wp setWaypointBehaviour "AWARE"; - _wp setWaypointSpeed "NORMAL"; - _wp_1 = _group addWaypoint [_dest, 60]; - _wp_1 setWaypointType "GETOUT"; - _wp_3 = _group addWaypoint [_dest, 60]; - _wp_3 setWaypointType "SENTRY"; - _wp setWaypointStatements ["true","(group this) spawn btc_fnc_data_add_group;"]; + _wp = _group addWaypoint [_dest, 60]; + _wp setWaypointType "MOVE"; + _wp setWaypointCombatMode "RED"; + _wp setWaypointBehaviour "AWARE"; + _wp setWaypointSpeed "NORMAL"; + _wp_1 = _group addWaypoint [_dest, 60]; + _wp_1 setWaypointType "GETOUT"; + _wp_3 = _group addWaypoint [_dest, 60]; + _wp_3 setWaypointType "SENTRY"; + _wp setWaypointStatements ["true","(group this) spawn btc_fnc_data_add_group;"]; - {_x call btc_fnc_mil_unit_create} foreach units _group; - }; + {_x call btc_fnc_mil_unit_create} foreach units _group; + }; }; //Check if HC is connected if !((entities "HeadlessClient_F") isEqualTo []) then { - [_group] call btc_fnc_set_groupowner; + [_group] call btc_fnc_set_groupowner; }; _group \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/set_skill.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/set_skill.sqf index 88309ed7a..079fafe7c 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/set_skill.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/set_skill.sqf @@ -2,14 +2,14 @@ if (typeName _this == "OBJECT") then {_this = [_this];} else {_this = units _this;}; { - _x setskill ["general",(btc_AI_skill select 0)]; - _x setskill ["aimingAccuracy",(btc_AI_skill select 1)]; - _x setskill ["aimingShake",(btc_AI_skill select 2)]; - _x setskill ["aimingSpeed",(btc_AI_skill select 3)]; - _x setskill ["endurance",(btc_AI_skill select 4)]; - _x setskill ["spotDistance",(btc_AI_skill select 5)]; - _x setskill ["spotTime",(btc_AI_skill select 6)]; - _x setskill ["courage",(btc_AI_skill select 7)]; - _x setskill ["reloadSpeed",(btc_AI_skill select 8)]; - _x setskill ["commanding",(btc_AI_skill select 9)]; + _x setskill ["general",(btc_AI_skill select 0)]; + _x setskill ["aimingAccuracy",(btc_AI_skill select 1)]; + _x setskill ["aimingShake",(btc_AI_skill select 2)]; + _x setskill ["aimingSpeed",(btc_AI_skill select 3)]; + _x setskill ["endurance",(btc_AI_skill select 4)]; + _x setskill ["spotDistance",(btc_AI_skill select 5)]; + _x setskill ["spotTime",(btc_AI_skill select 6)]; + _x setskill ["courage",(btc_AI_skill select 7)]; + _x setskill ["reloadSpeed",(btc_AI_skill select 8)]; + _x setskill ["commanding",(btc_AI_skill select 9)]; } foreach _this; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/unit_create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/unit_create.sqf index 97da78057..5d20782dc 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/unit_create.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/unit_create.sqf @@ -11,8 +11,8 @@ if (btc_p_set_skill) then {_this call btc_fnc_mil_set_skill;}; /* if (isNil {_this getVariable "btc_eh_killed_assigned"}) then { - _this addEventHandler ["Killed",btc_fnc_mil_eh_killed]; - _this setVariable ["btc_eh_killed_assigned",true]; + _this addEventHandler ["Killed",btc_fnc_mil_eh_killed]; + _this setVariable ["btc_eh_killed_assigned",true]; }; */ true \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/unit_killed.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/unit_killed.sqf index 73ffc2149..902def782 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/unit_killed.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/mil/unit_killed.sqf @@ -2,19 +2,19 @@ private _killer = (_this select 0) getVariable ["ace_medical_lastDamageSource", (_this select 1)]; if (!isDedicated && !hasInterface) then { - [(_this select 0), _killer] remoteExec ["btc_fnc_mil_unit_killed",2]; + [(_this select 0), _killer] remoteExec ["btc_fnc_mil_unit_killed",2]; } else { - if (random 100 > btc_info_intel_chance) then { - (_this select 0) setVariable ["intel",true]; - }; + if (random 100 > btc_info_intel_chance) then { + (_this select 0) setVariable ["intel",true]; + }; - if (isPlayer _killer) then { - if (isServer) then { - btc_rep_bonus_mil_killed call btc_fnc_rep_change; - } else { - btc_rep_bonus_mil_killed remoteExec ["btc_fnc_rep_change", 2]; - }; - }; + if (isPlayer _killer) then { + if (isServer) then { + btc_rep_bonus_mil_killed call btc_fnc_rep_change; + } else { + btc_rep_bonus_mil_killed remoteExec ["btc_fnc_rep_change", 2]; + }; + }; }; //{count units _x == 0} count allGroups; //(allGroups select {count units _x == 0}) apply {deleteGroup _x} diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/call_militia.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/call_militia.sqf index c883f8330..b22f7aa15 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/call_militia.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/call_militia.sqf @@ -9,38 +9,38 @@ _players = if (isMultiplayer) then {playableUnits} else {switchableunits}; //is there an hideout close by? _start_pos = []; { - private ["_hideout"]; - _hideout = _x; - if (_pos distance _hideout < 2000 && {{_x distance _hideout < 500} count _players == 0}) then {_start_pos = getPos _hideout;}; + private ["_hideout"]; + _hideout = _x; + if (_pos distance _hideout < 2000 && {{_x distance _hideout < 500} count _players == 0}) then {_start_pos = getPos _hideout;}; } foreach btc_hideouts; if (btc_debug_log) then {diag_log format ["fnc_rep_call_militia = _start_pos : %1 (HIDEOUTS)",_start_pos];}; if (count _start_pos == 0) then { - { - private ["_city"]; - _city = _x; - if (_pos distance _city > 300 && {_pos distance _city < 2500} && {{_x distance _city < 500} count _players == 0}) then {_start_pos = getPos _city;}; - } foreach btc_city_all; + { + private ["_city"]; + _city = _x; + if (_pos distance _city > 300 && {_pos distance _city < 2500} && {{_x distance _city < 500} count _players == 0}) then {_start_pos = getPos _city;}; + } foreach btc_city_all; }; if (btc_debug_log) then {diag_log format ["fnc_rep_call_militia = _start_pos : %1 (CITIES)",_start_pos];}; if (count _start_pos == 0) then { - private ["_random"]; - _random = random 8; - switch (true) do - { - case (_random <= 1) : {_start_pos = [(_pos select 0) + 0,(_pos select 1) + 1000,0];};//N - case (_random > 1 && _random <= 2) : {_start_pos = [(_pos select 0) + 750,(_pos select 1) + 750,0];};//NE - case (_random > 2 && _random <= 3) : {_start_pos = [(_pos select 0) + 1000,(_pos select 1) + 0,0];};//E - case (_random > 3 && _random <= 4) : {_start_pos = [(_pos select 0) + 750,(_pos select 1) - 750,0];};//SE - case (_random > 4 && _random <= 5) : {_start_pos = [(_pos select 0) - 1000,(_pos select 1) + 0,0];};//W - case (_random > 5 && _random <= 6) : {_start_pos = [(_pos select 0) - 750,(_pos select 1) - 750,0];};//SW - case (_random > 6 && _random <= 7) : {_start_pos = [(_pos select 0) - 750,(_pos select 1) + 750,0];};//NW - case (_random > 7) : {_start_pos = [(_pos select 0) + 0,(_pos select 1) - 1000,0];};//S - }; + private ["_random"]; + _random = random 8; + switch (true) do + { + case (_random <= 1) : {_start_pos = [(_pos select 0) + 0,(_pos select 1) + 1000,0];};//N + case (_random > 1 && _random <= 2) : {_start_pos = [(_pos select 0) + 750,(_pos select 1) + 750,0];};//NE + case (_random > 2 && _random <= 3) : {_start_pos = [(_pos select 0) + 1000,(_pos select 1) + 0,0];};//E + case (_random > 3 && _random <= 4) : {_start_pos = [(_pos select 0) + 750,(_pos select 1) - 750,0];};//SE + case (_random > 4 && _random <= 5) : {_start_pos = [(_pos select 0) - 1000,(_pos select 1) + 0,0];};//W + case (_random > 5 && _random <= 6) : {_start_pos = [(_pos select 0) - 750,(_pos select 1) - 750,0];};//SW + case (_random > 6 && _random <= 7) : {_start_pos = [(_pos select 0) - 750,(_pos select 1) + 750,0];};//NW + case (_random > 7) : {_start_pos = [(_pos select 0) + 0,(_pos select 1) - 1000,0];};//S + }; }; if (btc_debug_log) then {diag_log format ["fnc_rep_call_militia = _start_pos : %1 (ULTIMA RATIO)",_start_pos];}; @@ -49,65 +49,65 @@ _ratio = if (_pos distance _start_pos > 1000) then {0.2} else {0.6}; if (btc_debug_log) then { - diag_log format ["fnc_rep_call_militia = POS : %1 STARTPOS : %2 - RATIO = %3",_pos,_start_pos,_ratio]; + diag_log format ["fnc_rep_call_militia = POS : %1 STARTPOS : %2 - RATIO = %3",_pos,_start_pos,_ratio]; }; if ((random 1) > _ratio) then { - //MOT - private ["_veh_type","_veh","_gunner","_commander","_cargo","_wp"]; - _group = createGroup btc_enemy_side; - _group setVariable ["no_cache",true]; - _veh_type = selectRandom btc_type_motorized; - _veh = createVehicle [_veh_type, _start_pos, [], 0, "FLY"]; - _gunner = _veh emptyPositions "gunner"; - _commander = _veh emptyPositions "commander"; - _cargo = (_veh emptyPositions "cargo") - 1; - btc_type_crewmen createUnit [_start_pos, _group, "this moveinDriver _veh;this assignAsDriver _veh;"]; - if (_gunner > 0) then {btc_type_crewmen createUnit [_start_pos, _group, "this moveinGunner _veh;this assignAsGunner _veh;"];}; - if (_commander > 0) then {btc_type_crewmen createUnit [_start_pos, _group, "this moveinCommander _veh;this assignAsCommander _veh;"];}; - for "_i" from 0 to _cargo do - { - _unit_type = selectRandom btc_type_units; - _unit_type createUnit [_start_pos, _group, "this moveinCargo _veh;this assignAsCargo _veh;"]; - }; + //MOT + private ["_veh_type","_veh","_gunner","_commander","_cargo","_wp"]; + _group = createGroup btc_enemy_side; + _group setVariable ["no_cache",true]; + _veh_type = selectRandom btc_type_motorized; + _veh = createVehicle [_veh_type, _start_pos, [], 0, "FLY"]; + _gunner = _veh emptyPositions "gunner"; + _commander = _veh emptyPositions "commander"; + _cargo = (_veh emptyPositions "cargo") - 1; + btc_type_crewmen createUnit [_start_pos, _group, "this moveinDriver _veh;this assignAsDriver _veh;"]; + if (_gunner > 0) then {btc_type_crewmen createUnit [_start_pos, _group, "this moveinGunner _veh;this assignAsGunner _veh;"];}; + if (_commander > 0) then {btc_type_crewmen createUnit [_start_pos, _group, "this moveinCommander _veh;this assignAsCommander _veh;"];}; + for "_i" from 0 to _cargo do + { + _unit_type = selectRandom btc_type_units; + _unit_type createUnit [_start_pos, _group, "this moveinCargo _veh;this assignAsCargo _veh;"]; + }; - units _group joinSilent _group; - _group selectLeader (driver _veh); + units _group joinSilent _group; + _group selectLeader (driver _veh); - _wp = _group addWaypoint [_pos, 60]; - _wp setWaypointType "MOVE"; - _wp setWaypointCombatMode "RED"; - _wp setWaypointBehaviour "AWARE"; - _wp setWaypointSpeed "FULL"; - _wp setWaypointStatements ["true","(group this) spawn btc_fnc_data_add_group;"]; - _wp_1 = _group addWaypoint [_pos, 60]; - _wp_1 setWaypointType "UNLOAD"; - _wp_2 = _group addWaypoint [_pos, 60]; - _wp_2 setWaypointType "SAD"; - if (btc_debug_log) then - { - diag_log format ["fnc_rep_call_militia = MOT %1/%2 POS %3",_group,_veh_type,_pos]; - }; + _wp = _group addWaypoint [_pos, 60]; + _wp setWaypointType "MOVE"; + _wp setWaypointCombatMode "RED"; + _wp setWaypointBehaviour "AWARE"; + _wp setWaypointSpeed "FULL"; + _wp setWaypointStatements ["true","(group this) spawn btc_fnc_data_add_group;"]; + _wp_1 = _group addWaypoint [_pos, 60]; + _wp_1 setWaypointType "UNLOAD"; + _wp_2 = _group addWaypoint [_pos, 60]; + _wp_2 setWaypointType "SAD"; + if (btc_debug_log) then + { + diag_log format ["fnc_rep_call_militia = MOT %1/%2 POS %3",_group,_veh_type,_pos]; + }; } else { - //INF - _group = [_start_pos,50,(8 + random 6),1] call btc_fnc_mil_create_group; - _group setVariable ["no_cache",true]; - while {(count (waypoints _group)) > 0} do { deleteWaypoint ((waypoints _group) select 0); }; - _wp = _group addWaypoint [_pos, 60]; - _wp setWaypointType "MOVE"; - _wp setWaypointCombatMode "RED"; - _wp setWaypointBehaviour "AWARE"; - _wp setWaypointSpeed "FULL"; - _wp setWaypointFormation "WEDGE"; - _wp setWaypointStatements ["true", "(group this) spawn btc_fnc_data_add_group;"]; - //hint format ["%1,%2,%3,%4",_group,_pos,_wp,waypoints _group]; - _wp_2 = _group addWaypoint [_pos, 60]; - _wp_2 setWaypointType "SAD"; - if (btc_debug_log) then - { - diag_log format ["fnc_rep_call_militia = INF %1",_group]; - }; + //INF + _group = ([_start_pos,50,(8 + random 6),1] call btc_fnc_mil_create_group) select 0; + _group setVariable ["no_cache",true]; + while {(count (waypoints _group)) > 0} do { deleteWaypoint ((waypoints _group) select 0); }; + _wp = _group addWaypoint [_pos, 60]; + _wp setWaypointType "MOVE"; + _wp setWaypointCombatMode "RED"; + _wp setWaypointBehaviour "AWARE"; + _wp setWaypointSpeed "FULL"; + _wp setWaypointFormation "WEDGE"; + _wp setWaypointStatements ["true", "(group this) spawn btc_fnc_data_add_group;"]; + //hint format ["%1,%2,%3,%4",_group,_pos,_wp,waypoints _group]; + _wp_2 = _group addWaypoint [_pos, 60]; + _wp_2 setWaypointType "SAD"; + if (btc_debug_log) then + { + diag_log format ["fnc_rep_call_militia = INF %1",_group]; + }; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/change.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/change.sqf index 32ce5c6b0..053af5efc 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/change.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/change.sqf @@ -1,3 +1,3 @@ -if (btc_debug_log) then {diag_log format ["fnc_rep_change = GLOBAL %1 - CHANGE %2",btc_global_reputation,_this];}; +if (btc_debug_log) then {diag_log format ["fnc_rep_change = GLOBAL %1 - CHANGE %2",btc_global_reputation,_this];}; btc_global_reputation = btc_global_reputation + _this;//publicVariable "btc_global_reputation"; true \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/eh_effects.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/eh_effects.sqf index 67e04c945..f559d38ac 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/eh_effects.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/eh_effects.sqf @@ -12,25 +12,25 @@ if (_random <= 3) exitWith {}; if (time > (btc_rep_militia_called + btc_rep_militia_call_time)) then { - if (_random > 3) then //CALL MILITIA - { - [_pos] spawn btc_fnc_rep_call_militia; - }; + if (_random > 3) then //CALL MILITIA + { + [_pos] spawn btc_fnc_rep_call_militia; + }; }; if (btc_global_reputation < 300) then { - if (_random > 4) then //GET WEAPONS - { - [_pos,300] spawn btc_fnc_civ_get_weapons; - }; + if (_random > 4) then //GET WEAPONS + { + [_pos,300] spawn btc_fnc_civ_get_weapons; + }; } else { - if (_random > 1) then //GET GRENADE - { - [_pos,300] spawn btc_fnc_civ_get_grenade; - }; + if (_random > 1) then //GET GRENADE + { + [_pos,300] spawn btc_fnc_civ_get_grenade; + }; }; if (btc_debug) then { - diag_log format ["REP = %1 - RANDOM = %2 - RINF TIME = %3 - MILITIA/WEAPONS = %4/%5",_rep,_random,(time > (btc_rep_militia_called + btc_rep_militia_call_time)),(_random > 3),(_random > 4)]; + diag_log format ["REP = %1 - RANDOM = %2 - RINF TIME = %3 - MILITIA/WEAPONS = %4/%5",_rep,_random,(time > (btc_rep_militia_called + btc_rep_militia_call_time)),(_random > 3),(_random > 4)]; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/firednear.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/firednear.sqf index 171e04658..c3214fb8e 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/firednear.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/firednear.sqf @@ -12,11 +12,11 @@ if (!(side _civ isEqualTo civilian) || (random 3 < 1)) exitWith {}; [_civ, selectRandom ["ApanPknlMstpSnonWnonDnon_G01", "ApanPknlMstpSnonWnonDnon_G02", "ApanPknlMstpSnonWnonDnon_G03", "ApanPpneMstpSnonWnonDnon_G01", "ApanPpneMstpSnonWnonDnon_G02", "ApanPpneMstpSnonWnonDnon_G03"], 1] call ace_common_fnc_doAnimation; if (side _gunner isEqualTo btc_player_side) then { - if ((_gunner findNearestEnemy getpos _civ) distance _civ > 300) then { - if (abs((_gunner getdir _civ) - getDir _gunner) < (300/(_this select 2))) then { - btc_rep_malus_civ_firenear call btc_fnc_rep_change; - [getpos _civ] call btc_fnc_rep_eh_effects; - if (btc_debug_log) then {diag_log format ["REP Firenear = GREP %1 THIS = %2",btc_global_reputation,_this];}; - }; - }; + if ((_gunner findNearestEnemy getpos _civ) distance _civ > 300) then { + if (abs((_gunner getdir _civ) - getDir _gunner) < (300/(_this select 2))) then { + btc_rep_malus_civ_firenear call btc_fnc_rep_change; + [getpos _civ] call btc_fnc_rep_eh_effects; + if (btc_debug_log) then {diag_log format ["REP Firenear = GREP %1 THIS = %2",btc_global_reputation,_this];}; + }; + }; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hd.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hd.sqf index f83044fa3..d9c417eca 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hd.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hd.sqf @@ -1,18 +1,12 @@ -private ["_unit","_part","_dam","_injurer","_ammo"]; - -_unit = _this select 0; -_part = _this select 1; -_dam = _this select 2; -_injurer = _this select 3; -_ammo = _this select 4; - -if (_part == "body") then { - if (isPlayer _injurer && {_dam > 0.3}) then { - btc_rep_malus_civ_hd call btc_fnc_rep_change; - if (btc_global_reputation < 600) then {[getpos _unit] spawn btc_fnc_rep_eh_effects;}; - if (btc_debug_log) then {diag_log format ["REP HD = GREP %1 THIS = %2",btc_global_reputation,_this];}; - }; +params ["_unit","_part","_dam","_injurer","_ammo"]; + +if (_part in ["body","wheel_1_1_steering","wheel_1_2_steering","wheel_2_1_steering","wheel_2_2_steering","palivo","engine","glass1","glass2","glass3","glass4","karoserie","palivo","fuel_hitpoint","engine_hitpoint","body_hitpoint"]) then { + if (isPlayer _injurer && {_dam > 0.01}) then { + btc_rep_malus_civ_hd call btc_fnc_rep_change; + if (btc_global_reputation < 600) then {[getpos _unit] spawn btc_fnc_rep_eh_effects;}; + if (btc_debug_log) then {diag_log format ["REP HD = GREP %1 THIS = %2",btc_global_reputation,_this];}; + }; }; _dam \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hh.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hh.sqf index be3232617..33c908af4 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hh.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/hh.sqf @@ -3,5 +3,5 @@ private "_healer"; _healer = _this select 0; if (isPlayer _healer) then { - btc_rep_bonus_civ_hh spawn btc_fnc_rep_change;if (btc_debug_log) then {diag_log format ["REP HH = GREP %1 THIS = %2",btc_global_reputation,_this];}; + btc_rep_bonus_civ_hh spawn btc_fnc_rep_change;if (btc_debug_log) then {diag_log format ["REP HH = GREP %1 THIS = %2",btc_global_reputation,_this];}; }; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/killed.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/killed.sqf index f4f70bbdb..b13ce38fc 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/killed.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rep/killed.sqf @@ -4,11 +4,11 @@ private ["_unit","_killer"]; _unit = _this select 0; _killer = _this select 1; if (isPlayer _killer) then { - btc_rep_malus_civ_killed call btc_fnc_rep_change; - if (btc_global_reputation < 600) then {[getpos _unit] spawn btc_fnc_rep_eh_effects;}; - if (btc_debug_log) then {diag_log format ["REP KILLED = GREP %1 THIS = %2",btc_global_reputation,_this];}; + btc_rep_malus_civ_killed call btc_fnc_rep_change; + if (btc_global_reputation < 600) then {[getpos _unit] spawn btc_fnc_rep_eh_effects;}; + if (btc_debug_log) then {diag_log format ["REP KILLED = GREP %1 THIS = %2",btc_global_reputation,_this];}; }; if !(isNil {_unit getVariable ["traffic",objNull]}) then { - [[], [_unit getVariable ["traffic",objNull]], [], []] call btc_fnc_delete; + [[], [_unit getVariable ["traffic",objNull]], [], []] call btc_fnc_delete; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/ans_var.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/ans_var.sqf deleted file mode 100644 index e3afc0428..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/ans_var.sqf +++ /dev/null @@ -1,37 +0,0 @@ - -private ["_examined","_data"]; - -_examined = _this select 0; -_data = _this select 1; - -//_data = [_target,_isUnc,_isBusy,_isDragging,_bleed,_bloss,_pain,_mor]; - -_examined setVariable ["btc_rev_time_examination", time]; -/* -_examined setVariable ["BTC_w_isUnc",(_data select 1)]; -_examined setVariable ["BTC_w_busy",(_data select 2)]; -_examined setVariable ["BTC_w_isDragging",(_data select 3)]; -_examined setVariable ["BTC_w_bleed",(_data select 4)]; -_examined setVariable ["BTC_w_bloss",(_data select 5)]; -_examined setVariable ["BTC_w_pain",(_data select 6)]; -_examined setVariable ["BTC_w_mor",(_data select 7)];*/ - -_examined setVariable ["btc_int_busy",(_data select 1)]; -_examined setVariable ["btc_rev_isDragging",(_data select 2)]; -_examined setVariable ["btc_rev_bleed",(_data select 3)]; -_examined setVariable ["btc_rev_bloss",(_data select 4)]; -_examined setVariable ["btc_rev_pain",(_data select 5)]; -_examined setVariable ["btc_rev_mor",(_data select 6)]; - -_examined spawn -{ - waitUntil {!(isNil "btc_int_action_result")}; - - if (!btc_int_action_result) exitWith {player setVariable ["btc_int_busy", false];}; - - hintSilent ""; - - btc_int_target = _this; - btc_int_target spawn btc_fnc_rev_examine_result; - 1 spawn btc_fnc_int_open_dlg; -}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/apply_treat.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/apply_treat.sqf deleted file mode 100644 index 46151996a..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/apply_treat.sqf +++ /dev/null @@ -1,80 +0,0 @@ - -_unit = _this select 0; -_treat = _this select 1; - - -switch (_treat) do -{ - case 1 : - { - private ["_bleed","_pain","_new_pain","_dam","_new_dam"]; - _bleed = _unit getVariable ["btc_rev_bleed",0]; - _bleed = _bleed - 0.2; - if (_bleed < 0) then {_bleed = 0;}; - _unit setVariable ["btc_rev_bleed",_bleed]; - _pain = _unit getvariable ["btc_rev_pain",0]; - _new_pain = _pain - 0.1;if (_new_pain < 0) then {_new_pain = 0;}; - _unit setVariable ["btc_rev_pain",_new_pain]; - - _new_dam = 0.1; - _dam = _unit getVariable ["btc_rev_head",0]; - if (_dam > 0) then {_unit setVariable ["btc_rev_head",(_dam - _new_dam)];}; - if (_unit getVariable ["btc_rev_head",0] < 0) then {_unit setVariable ["btc_rev_head",0];}; - _dam = _unit getVariable ["btc_rev_body",0]; - if (_dam > 0) then {_unit setVariable ["btc_rev_body",(_dam - _new_dam)];}; - if (_unit getVariable ["btc_rev_body",0] < 0) then {_unit setVariable ["btc_rev_body",0];}; - _dam = _unit getVariable ["btc_rev_hands",0]; - if (_dam > 0) then {_unit setVariable ["btc_rev_hands",(_dam - _new_dam)];}; - if (_unit getVariable ["btc_rev_hands",0] < 0) then {_unit setVariable ["btc_rev_hands",0];}; - _dam = _unit getVariable ["btc_rev_legs",0]; - if (_dam > 0) then {_unit setVariable ["btc_rev_legs",(_dam - _new_dam)];}; - if (_unit getVariable ["btc_rev_legs",0] < 0) then {_unit setVariable ["btc_rev_legs",0];}; - }; - case 2 : - { - private ["_bleed","_pain","_new_pain"]; - _bleed = _unit getVariable ["btc_rev_bleed",0]; - _bleed = _bleed - 0.5; - if (_bleed < 0) then {_bleed = 0;}; - _unit setVariable ["btc_rev_bleed",_bleed]; - _pain = _unit getvariable ["btc_rev_pain",0]; - _new_pain = _pain - 0.1;if (_new_pain < 0) then {_new_pain = 0;}; - _unit setVariable ["btc_rev_pain",_new_pain]; - - _new_dam = 0.2; - _dam = _unit getVariable ["btc_rev_head",0]; - if (_dam > 0) then {_unit setVariable ["btc_rev_head",(_dam - _new_dam)];}; - if (_unit getVariable ["btc_rev_head",0] < 0) then {_unit setVariable ["btc_rev_head",0];}; - _dam = _unit getVariable ["btc_rev_body",0]; - if (_dam > 0) then {_unit setVariable ["btc_rev_body",(_dam - _new_dam)];}; - if (_unit getVariable ["btc_rev_body",0] < 0) then {_unit setVariable ["btc_rev_body",0];}; - _dam = _unit getVariable ["btc_rev_hands",0]; - if (_dam > 0) then {_unit setVariable ["btc_rev_hands",(_dam - _new_dam)];}; - if (_unit getVariable ["btc_rev_hands",0] < 0) then {_unit setVariable ["btc_rev_hands",0];}; - _dam = _unit getVariable ["btc_rev_legs",0]; - if (_dam > 0) then {_unit setVariable ["btc_rev_legs",(_dam - _new_dam)];}; - if (_unit getVariable ["btc_rev_legs",0] < 0) then {_unit setVariable ["btc_rev_legs",0];}; - }; - case 3 : - { - private ["_mor"]; - _mor = _unit getvariable ["btc_rev_mor",0]; - _unit setvariable ["btc_rev_mor",(_mor + 1)]; - _pain = _unit getvariable ["btc_rev_pain",0]; - _new_pain = _pain - 0.2;if (_new_pain < 0) then {_new_pain = 0;}; - _unit setVariable ["btc_rev_pain",_new_pain]; - //_spawn = _unit spawn {private ["_id"];_id = _this getVariable ["btc_rev_id",0];sleep btc_rev_mor_duration;if (_this getVariable ["btc_rev_id",0] == _id) then {private ["_mor"];_mor = _unit getvariable ["btc_rev_mor",0];if (_mor - 1 < 0) then {_mor = 1;};_unit setvariable ["btc_rev_mor",(_mor - 1)];};}; - }; - case 4 : - { - _unit setVariable ["btc_rev_isUnc",false]; - }; - case 5 : - { - private ["_bloss"]; - _bloss = _unit getVariable ["btc_rev_bloss",0]; - _bloss = _bloss - 0.5; - if (_bloss < 0) then {_bloss = 0;}; - _unit setVariable ["btc_rev_bloss",_bloss]; - }; -}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/ask_var.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/ask_var.sqf deleted file mode 100644 index 22c59b37a..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/ask_var.sqf +++ /dev/null @@ -1,16 +0,0 @@ - -private ["_target","_asker","_isBusy","_isDragging","_bleed","_bloss","_pain","_mor","_data"]; - -_target = player; -_asker = _this select 0; - -//_isUnc = _target getVariable ["btc_rev_isUnc",false]; -_isBusy = _target getVariable ["btc_int_busy",false]; -_isDragging = _target getVariable ["btc_rev_isDragging",false]; -_bleed = _target getVariable ["btc_rev_bleed",0]; -_bloss = _target getVariable ["btc_rev_bloss",0]; -_pain = _target getVariable ["btc_rev_pain",0]; -_mor = _target getVariable ["btc_rev_mor",0]; - -_data = [_target,/*_isUnc,*/_isBusy,_isDragging,_bleed,_bloss,_pain,_mor]; -[[player, _data],"btc_fnc_rev_ans_var",_asker,false] spawn BIS_fnc_MP; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/carry.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/carry.sqf deleted file mode 100644 index 9db6b025f..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/carry.sqf +++ /dev/null @@ -1,35 +0,0 @@ - -closeDialog 0; - -_injured = _this; - -if !(_injured getVariable ["btc_rev_isUnc",false]) exitWith {}; - -player setVariable ["btc_int_busy",true]; -player setVariable ["btc_rev_isCarrying",true]; -player setVariable ["btc_rev_attached",_injured]; - -detach _injured; - -player playMoveNow "acinpknlmstpsraswrfldnon_acinpercmrunsraswrfldnon"; - -_healer = player; -[[1,_injured, _healer],"btc_fnc_code_on_local",_injured,false] spawn BIS_fnc_MP; - -WaitUntil {!Alive player || player getVariable ["btc_rev_isUnc",false] || ((animationstate player == "acinpercmstpsraswrfldnon") || (animationstate player == "acinpercmrunsraswrfldf") || (animationstate player == "acinpercmrunsraswrfldr") || (animationstate player == "acinpercmrunsraswrfldl"))}; - -if ((player getVariable ["btc_rev_isUnc",false]) || !Alive player) exitWith {}; -_injured attachto [player,[-0.2, 0.1, 0.1]]; -_id = player addAction [("") + "Release" + "",{player setVariable ["btc_rev_isCarrying",false];},[],9,true,false]; - -WaitUntil {!Alive player || player getVariable ["btc_rev_isUnc",false] || isNull _injured || !Alive _injured || !(player getVariable ["btc_rev_isCarrying",false])}; - -if (vehicle _injured ==_injured) then {[[2,_injured],"btc_fnc_code_on_local",_injured,false] spawn BIS_fnc_MP;}; - -player removeAction _id; -if (player getVariable ["btc_rev_isUnc",false]) then {player switchMove "AinjPpneMstpSnonWrflDnon";} else {player playAction "released"}; -detach _injured; - -player setVariable ["btc_int_busy",false]; -player setVariable ["btc_rev_isCarrying",false]; -player setVariable ["btc_rev_attached",objNull]; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/dlg.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/dlg.hpp deleted file mode 100644 index 53f03fdf5..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/dlg.hpp +++ /dev/null @@ -1,61 +0,0 @@ -class btc_rev_dlg_unconscious -{ - name = btc_rev_dlg_unconscious; - idd = -1; - movingEnable = 1; - controlsBackground[] = {Background}; - objects[] = {}; - controls[] = {Respawn}; - - onLoad = "uiNamespace setVariable [""btc_rev_dlg_unconscious"", _this select 0];"; - - class Background - { - colorBackground[] = {0, 0, 0, 0}; - type = 0; - colorText[] = {1, 1, 1, 1}; - sizeEx = 0.04; - style = 48; - font = "PuristaMedium"; - idc=-1; - x = "safeZoneXAbs"; - y = "SafeZoneY"; - w = "safeZoneWAbs + 0.05"; - h = "SafeZoneH + 0.05"; - text = "img\rsc\i_unc.paa"; - }; - class Respawn - { - onMouseButtonClick = "player setDamage 1;closeDialog 0;"; - idc = 1103; - type = 1; - style = 2; - colorText[] = {1, 1, 1, 1}; - colorDisabled[] = {1, 1, 1, 0.25}; - colorBackground[] = {0, 0, 1, 0.1}; - colorBackgroundDisabled[] = {0,0,1,0}; - colorBackgroundActive[] = {0,0,1,0}; - colorFocused[] = {0,0,1,0}; - colorShadow[] = {0,0,0,0}; - colorBorder[] = {0,0,0,0}; - soundEnter[] = {"\A3\ui_f\data\sound\RscButton\soundEnter",0.09,1}; - soundPush[] = {"\A3\ui_f\data\sound\RscButton\soundPush",0.09,1}; - soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick",0.09,1}; - soundEscape[] = {"\A3\ui_f\data\sound\RscButton\soundEscape",0.09,1}; - - x = 0.4 * safezoneW + safezoneX; - y = 0.1 * safezoneH + safezoneY; - w = 0.18 * safezoneW; - h = 0.0286915 * safezoneH; - shadow = 2; - font = "PuristaMedium"; - sizeEx = 0.03921; - offsetX = 0.003; - offsetY = 0.003; - offsetPressedX = 0.002; - offsetPressedY = 0.002; - borderSize = 0; - text = "Respawn"; - action = ""; - }; -}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/drag.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/drag.sqf deleted file mode 100644 index 37bc6ea52..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/drag.sqf +++ /dev/null @@ -1,51 +0,0 @@ - -closeDialog 0; - -_injured = _this; - -if !(_injured getVariable ["btc_rev_isUnc",false]) exitWith {}; - -player setVariable ["btc_int_busy",true]; -player setVariable ["btc_rev_isDragging",true]; -player setVariable ["btc_rev_attached",_injured]; - -_is_prone = false; -if (stance player == "PRONE") then {_is_prone = true;} else {player playMoveNow "AcinPknlMstpSrasWrflDnon";}; -if (_is_prone) then {_injured attachTo [player, [0, 1.8, 0.092]];} else {_injured attachTo [player, [0, 1.1, 0.092]];}; - -[[0,_injured],"btc_fnc_code_on_local",_injured,false] spawn BIS_fnc_MP; - -WaitUntil {!Alive player || ((animationstate player == "acinpknlmstpsraswrfldnon") || (animationstate player == "acinpknlmwlksraswrfldb") || _is_prone)}; - -_id = player addAction [("") + "Release" + "",{player setVariable ["btc_rev_isDragging",false];},[],9,true,false]; - -while {!isNull player && !(player getVariable ["btc_rev_isUnc",false]) && alive player && !isNull _injured && alive _injured && player getVariable ["btc_rev_isDragging",true]} do -{ - if (_is_prone && stance player != "PRONE") then {player setVariable ["btc_rev_isDragging",false];}; - if (!_is_prone && stance player == "PRONE") then {player setVariable ["btc_rev_isDragging",false];}; - sleep 0.1; -}; - -player removeAction _id; -if (player getVariable ["btc_rev_isUnc",false]) then {player switchMove "AinjPpneMstpSnonWrflDnon";}; - -sleep 0.1; - -if (stance player != "PRONE" && Alive player) then -{ - player switchMove "AcinPknlMstpSrasWrflDnon_AmovPknlMstpSrasWrflDnon"; - sleep 1.3; - //player playActionNow "PlayerCrouch"; - switch (true) do - { - case (currentWeapon player == primaryWeapon player) : {player switchMove "";sleep 0.1;player switchMove "amovpknlmstpsraswrfldnon";}; - case (currentWeapon player == handgunWeapon player) : {player switchMove "";sleep 0.1;player switchMove "amovpknlmstpsraswpstdnon";}; - default {player switchMove "";sleep 0.1;player switchMove "amovpknlmstpsnonwnondnon";}; - }; -}; - -player setVariable ["btc_int_busy",false]; -player setVariable ["btc_rev_isDragging",false]; -player setVariable ["btc_rev_attached",objNull]; - -detach _injured; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/effect_pain.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/effect_pain.sqf deleted file mode 100644 index 06cd009ea..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/effect_pain.sqf +++ /dev/null @@ -1,16 +0,0 @@ -btc_rev_fx_effect_pain = true; -_bleed = player getVariable "btc_rev_pain"; - -"chromAberration" ppEffectEnable true; -while {player getVariable "btc_rev_pain" > 0} do -{ - _strength = player getVariable "btc_rev_pain"; - "chromAberration" ppEffectAdjust [(_strength / 100), (_strength / 100), false]; - "chromAberration" ppEffectCommit 1; - sleep (3 - _strength); - "chromAberration" ppEffectAdjust [(_strength / 100) + (_strength / 10), (_strength / 100) + (_strength / 10), false]; - "chromAberration" ppEffectCommit 1; - sleep 0.35; -}; -"chromAberration" ppEffectEnable false; -btc_rev_fx_effect_pain = false; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/effects.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/effects.sqf deleted file mode 100644 index bc822ad70..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/effects.sqf +++ /dev/null @@ -1,60 +0,0 @@ -btc_rev_fx_effects = true; -_bloss = player getVariable "btc_rev_bloss"; -_bleed = player getVariable "btc_rev_bleed"; -_sleep = 3; - -if (_bleed > 0) then -{ - switch (true) do - { - case (_bleed <= 0.2): - { - 939997 cutRsc["btc_rev_dlg_bleeding_1","PLAIN"]; - _sleep = 3; - }; - case (_bleed <= 0.3 && {_bleed > 0.2}): - { - 939997 cutRsc["btc_rev_dlg_bleeding_2","PLAIN"]; - _sleep = 2.5; - }; - case (_bleed <= 0.6 && {_bleed > 0.3}): - { - 939997 cutRsc["btc_rev_dlg_bleeding_3","PLAIN"]; - _sleep = 1.9; - }; - case (_bleed <= 0.8 && {_bleed > 0.6}): - { - 939997 cutRsc["btc_rev_dlg_bleeding_4","PLAIN"]; - _sleep = 1.5; - }; - case (_bleed > 0.8): - { - 939997 cutRsc["btc_rev_dlg_Bleeding_5","PLAIN"]; - _sleep = 1.1; - }; - }; - sleep _sleep; -}; -if (_bloss > 0.4 && {_bleed <= 0}) then -{ - switch (true) do - { - case (_bloss > 0.4 && {_bloss < 0.7}): - { - 939997 cutRsc["btc_rev_dlg_bloss_1","PLAIN"]; - _sleep = 2; - }; - case (_bloss <= 0.9 && {_bloss >= 0.7}): - { - 939997 cutRsc["btc_rev_dlg_bloss_2","PLAIN"]; - _sleep = 3; - }; - case (_bloss > 0.9): - { - 939997 cutRsc["btc_rev_dlg_bloss_3","PLAIN"]; - _sleep = 4; - }; - }; - sleep _sleep; -}; -btc_rev_fx_effects = false; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/examine.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/examine.sqf deleted file mode 100644 index e5d123f3a..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/examine.sqf +++ /dev/null @@ -1,47 +0,0 @@ - -btc_rev_examined = btc_int_target; -_isMedic = player call btc_fnc_rev_is_medic; - -if (!alive player || {isNull btc_rev_examined} || {!Alive btc_rev_examined}) exitWith {}; - -closeDialog 0; - -sleep 0.01; - -player setVariable ["btc_int_busy",true]; -_delay = btc_rev_examination_time;if (btc_rev_examined == player) then {_delay = btc_rev_examination_time / 3}; -_anim = "AinvPknlMstpSlayWrflDnon_medic";//AinvPknlMstpSnonWnonDnon_medic - -if (_isMedic) then {_delay = (_delay / 3 * 2);}; - -_isProne = (stance player == "PRONE"); -_inVeh = (vehicle player != player); - -_last_ex = btc_rev_examined getVariable ["btc_rev_time_examination", - 300]; -_actual_time = time; -if ((_actual_time - _last_ex) > 300) then -{ - if (_isProne || _inVeh) then {_delay = _delay + 5;} else {player playMove _anim;}; - - [_delay,format ["Examining %1 . . .", name btc_rev_examined],btc_rev_examined] call btc_fnc_int_action_result; - - waitUntil {!(isNil "btc_int_action_result")}; - - if (!btc_int_action_result && {!_isProne && !_inVeh} && {animationState player == _anim}) then {player switchmove "";player playActionNow "PlayerCrouch";}; - - if (btc_int_action_result) then - { - if (btc_rev_examined == player) then - { - player setVariable ["btc_rev_time_examination", time]; - btc_int_target = player; - btc_int_target spawn btc_fnc_rev_examine_result; - 1 spawn btc_fnc_int_open_dlg; - } - else - { - [[player],"btc_fnc_rev_ask_var",btc_rev_examined,false] spawn BIS_fnc_MP; - }; - } else {player setVariable ["btc_int_busy",false];}; -} else {if (btc_rev_examined == player) then {player setVariable ["btc_rev_time_examination", time];btc_int_target = player;btc_int_target spawn btc_fnc_rev_examine_result;1 spawn btc_fnc_int_open_dlg;} else {btc_int_action_result = true;[[player],"btc_fnc_rev_ask_var",btc_rev_examined,false] spawn BIS_fnc_MP;};}; -player setVariable ["btc_int_busy",false]; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/examine_result.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/examine_result.sqf deleted file mode 100644 index f3143ac69..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/examine_result.sqf +++ /dev/null @@ -1,44 +0,0 @@ -_text = format ["%1 ",name _this]; -//unc -_isUnc = _this getVariable ["btc_rev_isUnc",false]; -if (_isUnc) then {_text = _text + "is unconscious.";} else {_text = _text + "is awake.";}; -_text = _text + "
"; -//bleed -_bleed = _this getVariable ["btc_rev_bleed",0]; -switch (true) do -{ - case (_bleed <= 0) : {_text = _text + "He's not bleeding.";}; - case (_bleed < 0.5 && {_bleed > 0}) : {_text = _text + "He's bleeding.";}; - case (_bleed >= 0.5) : {_text = _text + "He's bleeding a lot.";}; -}; -_text = _text + "
"; -//pain -_pain = _this getVariable ["btc_rev_pain",0]; -switch (true) do -{ - case (_pain <= 0) : {_text = _text + "He isn't in pain.";}; - case (_pain < 0.5 && {_pain > 0}) : {_text = _text + "He is in pain.";}; - case (_pain >= 0.5) : {_text = _text + "He is in heavy pain.";}; -}; -_text = _text + "
"; -//mor -_mor = _this getVariable ["btc_rev_mor",0]; -switch (true) do -{ - case (_mor <= 0) : {_text = _text + "He isn't on morphine.";}; - case (_mor > 0 && {_mor < 1.5}) : {_text = _text + "He is on morphine.";}; - case (_mor >= 1.5) : {_text = _text + "He is on some morphine.";}; -}; -_text = _text + "
"; -//bloss -_bloss = _this getVariable ["btc_rev_bloss",0]; -switch (true) do -{ - case (_bloss <= 0) : {_text = _text + "He hasn't lost any blood.";}; - case (_bloss < 0.5 && {_bloss > 0}) : {_text = _text + "He has already lost some blood.";}; - case (_bloss < 0.85 && {_bloss > 0.5}) : {_text = _text + "He has lost a lot of blood.";}; - case (_bloss >= 0.85) : {_text = _text + "He has lost a lot of blood and need a transfution.";}; -}; - -hintSilent parseText _text; -//player sideChat _text; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/get_gear.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/get_gear.sqf deleted file mode 100644 index e98a28165..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/get_gear.sqf +++ /dev/null @@ -1,22 +0,0 @@ -_unit = _this select 0; -_weapons_array = [weapons player,primaryWeaponItems player,secondaryWeaponItems player,handgunItems player,primaryWeaponMagazine player,secondaryWeaponMagazine player,handgunMagazine player]; -_gear_array = -[ - uniform _unit, - vest _unit, - headGear _unit, - backpack _unit, - assignedItems _unit, - getMagazineCargo uniformContainer _unit, - getItemCargo uniformContainer _unit, - getMagazineCargo vestContainer _unit, - getItemCargo vestContainer _unit, - getMagazineCargo backpackContainer _unit, - getItemCargo backpackContainer _unit -]; -_gear = -[ - _weapons_array, - _gear_array -]; -_gear \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/hd.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/hd.sqf deleted file mode 100644 index b3b5659f3..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/hd.sqf +++ /dev/null @@ -1,103 +0,0 @@ -_unit = _this select 0; -_part = _this select 1; -_dam = _this select 2; -_injurer = _this select 3; -_ammo = _this select 4; - -_v_bleed = 4; -_v_bloss = 10; -_v_pain = 2; - -_eh_array = _unit getVariable ["btc_rev_eh_array",[]]; -//#define __ammocfg configFile >> "cfgAmmo" >> _ammo _explosive = (getNumber(__ammocfg >> "explosive") > 0); -switch (_part) do -{ - case "head_hit" : {_part = "head";}; - case "hand_l" : {_part = "hands";}; - case "hand_r" : {_part = "hands";}; - case "leg_l" : {_part = "legs";}; - case "leg_r" : {_part = "legs";}; -}; -if (_part != "") then -{ - if (_part == "head" && (count _eh_array) > 0) exitWith {0}; - _eh_array set [(count _eh_array), [_part,_dam]]; - _unit setVariable ["btc_rev_eh_array",_eh_array]; -}; - -if (vehicle _unit != _unit && {_part == ""} && {(count _eh_array) == 0}) then -{ - {_eh_array set [(count _eh_array), [_part,_dam]];_unit setVariable ["btc_rev_eh_array",_eh_array];} foreach [1,2,3,4]; -}; - -//diag_log format ["BTC HD = %1 - %2",_this,_eh_array]; - -if (count _eh_array < 4) exitWith {0}; - -if (vehicle _unit != _unit) then -{ - if (!Alive (vehicle _unit)) then - { - _unit action ["getOut",vehicle _unit];//EJECT - _unit setvariable ["btc_rev_bloss",1]; - _unit setvariable ["btc_rev_bleed",1]; - _unit setvariable ["btc_rev_pain",1]; - _unit spawn btc_fnc_rev_unc; - } - else - { - _unit spawn - { - private "_veh"; - _veh = (vehicle _this); - sleep 2.5; - if (!Alive _veh) then - { - _this action ["getOut",vehicle _this]; - _this setvariable ["btc_rev_bloss",1]; - _this setvariable ["btc_rev_bleed",1]; - _this setvariable ["btc_rev_pain",1]; - _this switchMove "AinjPpneMstpSnonWrflDnon"; - _this spawn btc_fnc_rev_unc; - }; - }; - }; -}; - -_unit setVariable ["btc_rev_eh_array",[]]; - -_part = "";_dam = 0; -{ - if ((_x select 1) > _dam) then - { - _part = (_x select 0); - _dam = (_x select 1); - }; -} foreach _eh_array; - -//diag_log text format ["HD = P %1 - DAM %2 - PAIN %3 (%4) - BLEED %5 (%6)",_part,_dam,_unit getvariable ["btc_rev_pain",0],(_dam / _v_pain),_unit getvariable ["btc_rev_bleed",0],(_dam / _v_bleed)]; - -_prevDamage = _unit getvariable (format ["btc_rev_%1",_part]); -_unit setVariable [(format ["btc_rev_%1",_part]), (_prevDamage + _dam)]; - -_fatigue = getFatigue player; -_new_fatigue = (_dam / 3) + _fatigue; -player setFatigue _new_fatigue; - -_bloss = _unit getvariable ["btc_rev_bloss",0]; -_bleed = _unit getvariable ["btc_rev_bleed",0]; -_pain = _unit getvariable ["btc_rev_pain",0]; -addCamShake [(_dam * 10), 1, 15]; -[_dam * 100] call BIS_fnc_bloodEffect; - - -if (_dam > 0.2) then -{ - _unit setvariable ["btc_rev_bloss",(_bloss + (_dam / _v_bloss))]; - _unit setvariable ["btc_rev_bleed",(_bleed + (_dam / _v_bleed))]; - _unit setvariable ["btc_rev_pain",(_pain + (_dam / _v_pain))]; -}; - -if (isNil {_unit getVariable "btc_rev_statehandler"}) then {_unit spawn btc_fnc_rev_statehandler;}; - -0 \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/init.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/init.sqf deleted file mode 100644 index 285147286..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/init.sqf +++ /dev/null @@ -1,5 +0,0 @@ - -if (btc_p_revive == 0) exitWith {}; - -player spawn btc_fnc_rev_unit_init; -btc_rev_gear = [player] call btc_fnc_rev_get_gear; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/init_var.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/init_var.sqf deleted file mode 100644 index 20043013e..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/init_var.sqf +++ /dev/null @@ -1,18 +0,0 @@ - -_this setVariable ["btc_rev_isUnc",false,true]; -_this setVariable ["btc_int_busy",false]; -_this setVariable ["btc_rev_isDragging",false]; -_this setVariable ["btc_rev_isCarrying",false]; -_this setVariable ["btc_rev_bleed",0]; -_this setVariable ["btc_rev_bloss",0]; -_this setVariable ["btc_rev_pain",0]; -_this setVariable ["btc_rev_mor",0]; -_this setVariable ["btc_rev_eh_array",[]]; -_this setVariable ["btc_rev_head",0]; -_this setVariable ["btc_rev_body",0]; -_this setVariable ["btc_rev_hands",0]; -_this setVariable ["btc_rev_legs",0]; -_this setfatigue 0; -_this setcaptive false; -_this forceWalk false; -true \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/is_medic.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/is_medic.sqf deleted file mode 100644 index 3abf87ebf..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/is_medic.sqf +++ /dev/null @@ -1,3 +0,0 @@ -_cond = false; -if (getNumber (configFile >> "CfgVehicles" >> typeOf _this >> "attendant") == 1 || _this getVariable ["btc_rev_isMedic",false]) then {_cond = true;}; -_cond \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/load.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/load.sqf deleted file mode 100644 index 0ee32f939..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/load.sqf +++ /dev/null @@ -1,17 +0,0 @@ - -_injured = _this; - -closeDialog 0; - -_veh = (nearestObjects [player, ["Air","LandVehicle"], 5]) select 0; - -if (isNull _injured) exitWith {hint "Error: No unit";}; -if (isNull _veh) exitWith {hint "Error: No vehicle";}; - -player setVariable ["btc_rev_busy",false]; -player setVariable ["btc_rev_isCarrying",false]; -player setVariable ["btc_rev_isDragging",false]; - -sleep 0.2; - -[[3,_injured, _veh],"btc_fnc_code_on_local",_injured,false] spawn BIS_fnc_MP; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/rsc.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/rsc.hpp deleted file mode 100644 index 54dad53d8..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/rsc.hpp +++ /dev/null @@ -1,208 +0,0 @@ - class btc_rev_dlg_bleeding_1 - { - idd = 999901; - movingEnable = 0; - duration = 0.1; - fadein = 0.4; - fadeout = 0.5; - name = "btc_rev_dlg_bleeding_1"; - - class controls { - class btc_rev_dlg_img { - idc=-1; - type = 0; - style = 48; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {0.9, 0.9, 0.9, 0.6}; - font = "PuristaMedium"; - sizeEx = 0.023; - x = "safeZoneXAbs"; - y = "SafeZoneY"; - w = "safeZoneWAbs + 0.05"; - h = "SafeZoneH + 0.05"; - text = "img\rsc\i_bleeding_1.paa"; - }; - }; - }; - class btc_rev_dlg_bleeding_2 - { - idd = 999902; - movingEnable = 0; - duration = 0.1; - fadein = 0.3; - fadeout = 0.6; - name = "btc_rev_dlg_bleeding_2"; - - class controls { - class btc_rev_dlg_img { - idc=-1; - type = 0; - style = 48; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {0.9, 0.9, 0.9, 0.8}; - font = "PuristaMedium"; - sizeEx = 0.023; - x = "safeZoneXAbs"; - y = "SafeZoneY"; - w = "safeZoneWAbs + 0.05"; - h = "SafeZoneH + 0.05"; - text = "img\rsc\i_bleeding_1.paa"; - }; - }; - }; - class btc_rev_dlg_bleeding_3 - { - idd = 999903; - movingEnable = 0; - duration = 0.1; - fadein = 0.2; - fadeout = 0.7; - name = "btc_rev_dlg_bleeding_3"; - - class controls { - class btc_rev_dlg_img { - idc=-1; - type = 0; - style = 48; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {0.9, 0.9, 0.9, 0.9}; - font = "PuristaMedium"; - sizeEx = 0.023; - x = "safeZoneXAbs"; - y = "SafeZoneY"; - w = "safeZoneWAbs + 0.05"; - h = "SafeZoneH + 0.05"; - text = "img\rsc\i_bleeding_2.paa"; - }; - }; - }; - class btc_rev_dlg_bleeding_4 - { - idd = 999904; - movingEnable = 0; - duration = 0.1; - fadein = 0.18; - fadeout = 0.72; - name = "btc_rev_dlg_bleeding_4"; - - class controls { - class btc_rev_dlg_img { - idc=-1; - type = 0; - style = 48; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {0.9, 0.9, 0.9, 0.9}; - font = "PuristaMedium"; - sizeEx = 0.023; - x = "safeZoneXAbs"; - y = "SafeZoneY"; - w = "safeZoneWAbs + 0.05"; - h = "SafeZoneH + 0.05"; - text = "img\rsc\i_bleeding_3.paa"; - }; - }; - }; - class btc_rev_dlg_bleeding_5 - { - idd = 999905; - movingEnable = 0; - duration = 0.1; - fadein = 0.15; - fadeout = 0.75; - name = "btc_rev_dlg_bleeding_5"; - - class controls { - class btc_rev_dlg_bleeding__BG { - idc=-1; - type = 0; - style = 48; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {0.9, 0.9, 0.9, 0.9}; - font = "PuristaMedium"; - sizeEx = 0.023; - x = "safeZoneXAbs"; - y = "SafeZoneY"; - w = "safeZoneWAbs + 0.05"; - h = "SafeZoneH + 0.05"; - text = "img\rsc\i_bleeding_3.paa"; - }; - }; - }; - class btc_rev_dlg_bloss_1 - { - idd = 999906; - movingEnable = 0; - duration = 0.1; - fadein = 1; - fadeout = 1; - name = "btc_rev_dlg_bloss_1"; - - class controls { - class BTC_w_dlg_img { - idc=-1; - type = 0; - style = 48; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {0.9, 0.9, 0.9, 0.6}; - font = "PuristaMedium"; - sizeEx = 0.023; - x = "safeZoneXAbs"; - y = "SafeZoneY"; - w = "safeZoneWAbs + 0.05"; - h = "SafeZoneH + 0.05"; - text = "img\rsc\i_bloss_1.paa"; - }; - }; - }; - class btc_rev_dlg_bloss_2 - { - idd = 999907; - movingEnable = 0; - duration = 0.1; - fadein = 1.5; - fadeout = 1.5; - name = "btc_rev_dlg_bloss_2"; - - class controls { - class BTC_w_dlg_img { - idc=-1; - type = 0; - style = 48; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {0.9, 0.9, 0.9, 0.8}; - font = "PuristaMedium"; - sizeEx = 0.023; - x = "safeZoneXAbs"; - y = "SafeZoneY"; - w = "safeZoneWAbs + 0.05"; - h = "SafeZoneH + 0.05"; - text = "img\rsc\i_bloss_2.paa"; - }; - }; - }; - class btc_rev_dlg_bloss_3 - { - idd = 999908; - movingEnable = 0; - duration = 0.1; - fadein = 2; - fadeout = 2; - name = "btc_rev_dlg_bloss_3"; - - class controls { - class BTC_w_dlg_img { - idc=-1; - type = 0; - style = 48; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {0.9, 0.9, 0.9, 0.9}; - font = "PuristaMedium"; - sizeEx = 0.023; - x = "safeZoneXAbs"; - y = "SafeZoneY"; - w = "safeZoneWAbs + 0.05"; - h = "SafeZoneH + 0.05"; - text = "img\rsc\i_bloss_3.paa"; - }; - }; - }; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/set_gear.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/set_gear.sqf deleted file mode 100644 index 89f28304c..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/set_gear.sqf +++ /dev/null @@ -1,70 +0,0 @@ -_unit = _this select 0; -_gear = _this select 1; -_weapons_array = _gear select 0; -_gear_array = _gear select 1; - -removeAllweapons player; -removeAllAssignedItems player; -removeuniform player; -removevest player; -removeheadgear player; -removegoggles player; -removeBackPack player; - -if ((_gear_array select 0) != "") then {player addUniform (_gear_array select 0);}; -if ((_gear_array select 1) != "") then {player addVest (_gear_array select 1);}; -if ((_gear_array select 2) != "") then {player addheadGear (_gear_array select 2);}; -if ((_gear_array select 3) != "") then {player addBackpack (_gear_array select 3);}; - -{player addMagazine _x;} foreach (_weapons_array select 4); -{player addMagazine _x;} foreach (_weapons_array select 5); -{player addMagazine _x;} foreach (_weapons_array select 6); -{player addWeapon _x} foreach (_weapons_array select 0); -if (count (_weapons_array select 1) > 0) then {{if (_x != "") then {player addPrimaryWeaponItem _x;};} foreach (_weapons_array select 1);}; -if (count (_weapons_array select 2) > 0) then {{if (_x != "") then {player addSecondaryWeaponItem _x;};} foreach (_weapons_array select 2);}; -if (count (_weapons_array select 3) > 0) then {{if (_x != "") then {player addHandgunItem _x;};} foreach (_weapons_array select 3);}; - -if (count (_gear_array select 4) > 0) then {{if (_x != "" && _x != "Binocular" && _x != "Rangefinder" && _x != "Laserdesignator") then {player addItem _x;player assignItem _x;} else {player addWeapon _x;};} foreach (_gear_array select 4);}; - -if ((count ((_gear_array select 5) select 0)) > 0) then -{ - for "_i" from 0 to (count ((_gear_array select 5) select 0) - 1) do - { - (uniformContainer player) addMagazineCargo [(((_gear_array select 5) select 0) select _i),(((_gear_array select 5) select 1) select _i)]; - }; -}; -if ((count ((_gear_array select 6) select 0)) > 0) then -{ - for "_i" from 0 to (count ((_gear_array select 6) select 0) - 1) do - { - (uniformContainer player) addItemCargo [(((_gear_array select 6) select 0) select _i),(((_gear_array select 6) select 1) select _i)]; - }; -}; -if ((count (_gear_array select 7)) > 0) then -{ - for "_i" from 0 to (count ((_gear_array select 7) select 0) - 1) do - { - (vestContainer player) addMagazineCargo [(((_gear_array select 7) select 0) select _i),(((_gear_array select 7) select 1) select _i)]; - }; -}; -if ((count ((_gear_array select 8) select 0)) > 0) then -{ - for "_i" from 0 to (count ((_gear_array select 8) select 0) - 1) do - { - (vestContainer player) addItemCargo [(((_gear_array select 8) select 0) select _i),(((_gear_array select 8) select 1) select _i)]; - }; -}; -if ((count (_gear_array select 9)) > 0) then -{ - for "_i" from 0 to (count ((_gear_array select 9) select 0) - 1) do - { - (backpackContainer player) addMagazineCargo [(((_gear_array select 9) select 0) select _i),(((_gear_array select 9) select 1) select _i)]; - }; -}; -if ((count ((_gear_array select 10) select 0)) > 0) then -{ - for "_i" from 0 to (count ((_gear_array select 10) select 0) - 1) do - { - (backpackContainer player) addItemCargo [(((_gear_array select 10) select 0) select _i),(((_gear_array select 10) select 1) select _i)]; - }; -}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/stateHandler.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/stateHandler.sqf deleted file mode 100644 index c2c718a0a..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/stateHandler.sqf +++ /dev/null @@ -1,90 +0,0 @@ - -private ["_fatigue","_get_fatigue","_new_fatigue","_bloss","_is_bleed","_bleed_fatigue"]; - -_unit = _this; -_unit setVariable ["btc_rev_statehandler",true]; - -#define _damageHead _unit getVariable ["btc_rev_head",0] -#define _damageBody _unit getVariable ["btc_rev_body",0] -#define _damageHands _unit getVariable ["btc_rev_hands",0] -#define _damagelegs _unit getVariable ["btc_rev_legs",0] - -#define _fatigue_bleed 4 -#define _fatigue_dam 10 - -#define __STATE _unit getVariable ["btc_rev_isUnc",false] - -//Init var -btc_rev_fx_effects = false; -btc_rev_fx_effect_pain = false; -_fatigue = 0; -_cond = true; - -While {Alive _unit && _cond} do -{ - _fatigue = 0; -//DAM CHECK - if (_unit getVariable ["btc_rev_head",0] > btc_rev_max_damage_head && !(__STATE)) then {_unit setvariable ["btc_rev_pain",1];_unit spawn btc_fnc_rev_unc;} else {_fatigue = _fatigue + ((_unit getVariable ["btc_rev_head",0]) * (((speed _unit) / _fatigue_dam)));}; - if (_unit getVariable ["btc_rev_body",0] > btc_rev_max_damage_body && !(__STATE)) then {_unit setvariable ["btc_rev_pain",1];_unit spawn btc_fnc_rev_unc;} else {_fatigue = _fatigue + ((_unit getVariable ["btc_rev_body",0]) * (((speed _unit) / _fatigue_dam)/2));}; - if (_unit getVariable ["btc_rev_hands",0] > btc_rev_max_damage_hands && !(__STATE)) then {_unit setvariable ["btc_rev_pain",1];_unit spawn btc_fnc_rev_unc;} else {_fatigue = _fatigue + ((_unit getVariable ["btc_rev_hands",0]) * (((speed _unit) / _fatigue_dam)/2));}; - if (_unit getVariable ["btc_rev_legs",0] > btc_rev_max_damage_legs && !(__STATE)) then {_unit setvariable ["btc_rev_pain",1];_unit spawn btc_fnc_rev_unc;} else {_fatigue = _fatigue + ((_unit getVariable ["btc_rev_legs",0]) * (((speed _unit) / _fatigue_dam)/2));}; - -//BLOSS CHECK - if ((_unit getvariable ["btc_rev_bleed",0]) > 0) then - { - if ((_unit getvariable ["btc_rev_bleed",0]) > 1) then {_unit setvariable ["btc_rev_bleed",1]}; - _moving_factor = if (speed _unit >= 3) then {0.0001} else {0.00005}; - _bleed = (_unit getvariable ["btc_rev_bleed",0])/1000; - _bloss = _unit getvariable ["btc_rev_bloss",0]; - _new_bloss = _bloss + _bleed + _moving_factor;if (_new_bloss > 1) then {_new_bloss = 1;}; - _unit setVariable ["btc_rev_bloss",_new_bloss]; - _bleed = _unit getvariable ["btc_rev_bleed",0]; - _pain_to_add = (_bleed + (_unit getVariable ["btc_rev_head",0]) + (_unit getVariable ["btc_rev_body",0]) + (_unit getVariable ["btc_rev_hands",0]) + (_unit getVariable ["btc_rev_legs",0])) / 2500; - _pain = _unit getvariable ["btc_rev_pain",0]; - _new_pain = _pain + _pain_to_add;if (_new_pain > 1) then {_new_pain = 1;}; - _unit setvariable ["btc_rev_pain",_new_pain]; - } - else - { - /*_bloss = _unit getvariable ["btc_rev_bloss",0]; - _new_bloss = _bloss - 0.0001;if (_new_bloss <= 0) then {_new_bloss = 0;}; - _unit setVariable ["btc_rev_bloss",_new_bloss];*/ - - _new_dam = 0.001; - _dam = _unit getVariable ["btc_rev_head",0]; - if (_dam > 0) then {_unit setVariable ["btc_rev_head",(_dam - _new_dam)];}; - _dam = _unit getVariable ["btc_rev_body",0]; - if (_dam > 0) then {_unit setVariable ["btc_rev_body",(_dam - _new_dam)];}; - _dam = _unit getVariable ["btc_rev_hands",0]; - if (_dam > 0) then {_unit setVariable ["btc_rev_hands",(_dam - _new_dam)];}; - _dam = _unit getVariable ["btc_rev_legs",0]; - if (_dam > 0) then {_unit setVariable ["btc_rev_legs",(_dam - _new_dam)];}; - }; - if (_unit getvariable ["btc_rev_bloss",0] > 1 && {!(__STATE)}) then {_unit setVariable ["btc_rev_bloss",1];_unit spawn btc_fnc_rev_unc;}; -//PAIN - _pain = _unit getvariable ["btc_rev_pain",0]; - _mor = _unit getvariable ["btc_rev_mor",0]; - if (_mor > 0 && {_unit getvariable ["btc_rev_pain",0] > 0}) then - { - _reduce = _mor * 0.001; - _unit setvariable ["btc_rev_pain",(_pain - _reduce)]; - }; - if ((_unit getvariable ["btc_rev_pain",0] >= btc_rev_max_pain || (_unit getvariable ["btc_rev_mor",0] > btc_rev_max_mor)) && {!(__STATE)}) then {_unit spawn btc_fnc_rev_unc;}; -//MOR - if (_mor > 0) then {_unit setvariable ["btc_rev_mor",(_mor - 0.00025)];}; -//FATIGUE - _get_fatigue = getFatigue _unit; - _new_fatigue = if ((_get_fatigue + (_fatigue / 100)) > 1) then {1} else {(_get_fatigue + (_fatigue / 100))}; - _unit setFatigue _new_fatigue; - ////diag_log format ["%1 - %2 / OLD = %3 NEW = %4",_fatigue,_fatigue / 100,_get_fatigue,(_get_fatigue + (_fatigue / 100))]; -//EFFECTS - if (!(__STATE) && {((_unit getvariable ["btc_rev_bleed",0]) > 0 || (_unit getvariable ["btc_rev_bloss",0]) > 0.4)} && {!btc_rev_fx_effects}) then {[] spawn btc_fnc_rev_effects;}; - if (((_unit getvariable ["btc_rev_pain",0]) > 0) && {!btc_rev_fx_effect_pain}) then {[] spawn btc_fnc_rev_effect_pain;}; - -//STATE CHECK - if (_unit getVariable ["btc_rev_legs",0] > 0.7 || {_unit getVariable ["btc_rev_bloss",0] > 0.7}) then {_unit forceWalk true;} else {_unit forceWalk false;}; - //if (__STATE == 1) then {_unit spawn btc_fnc_rev_unc;}; - sleep 0.1; -}; - -_unit setVariable ["btc_rev_statehandler",nil]; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/treat.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/treat.sqf deleted file mode 100644 index 3cc486309..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/treat.sqf +++ /dev/null @@ -1,62 +0,0 @@ -private ["_receiver", "_delay"]; -_receiver = _this select 0; -_treat = _this select 1; - -_isMedic = player call btc_fnc_rev_is_medic; - -if (!alive player) exitWith {}; -if (!_isMedic && {((_treat == 2 && btc_rev_lbndg_only_medic) || (_treat == 3 && btc_rev_mor_only_medic) || (_treat == 4 && btc_rev_epi_only_medic) || (_treat == 5 && btc_rev_blood_only_medic))}) exitWith {hint "You're not a medic"}; - -closeDialog 0; - -sleep 0.01; - -/* -1 - bndg -2 - lbndg -3 - mor -4 - epi -5 - blood -*/ - -player setVariable ["btc_int_busy",true]; -_delay = 6.5; -_anim = "AinvPknlMstpSlayWrflDnon_medic";//AinvPknlMstpSnonWnonDnon_medic -_item = ""; -/* -switch (_treat) do -{ - case 1 : {_delay = 6.5;_item = "BTC_w_bandage";}; - case 2 : {_delay = 7.5;_item = "BTC_w_largeBandage";}; - case 3 : {_delay = 5;_item = "BTC_w_mor";}; - case 4 : {_delay = 5;_item = "BTC_w_epi";};//AinvPknlMstpSnonWnonDnon_medicUp0 - case 5 : {_delay = 15;_item = "BTC_w_bloodbag";}; -};*/ - -//if !(btc_wounds_mod) then {_item = "";}; - -_isProne = (stance player == "PRONE"); -_inVeh = (vehicle player != player); - -if (_isProne || _inVeh) then {_delay = _delay + 5;} else {player playMove _anim;}; - -_target_action = _receiver; - -if (_inVeh) then {_target_action = objNull}; - -[_delay,format ["Treating %1 . . .", name _receiver],_receiver] call btc_fnc_int_action_result; - -//if (!_isProne) then {_anim spawn {while { isNil "btc_rev_action_result" } do {sleep 0.1;if (animationState player != _this) then {player playMoveNow _this;};};};}; - -waitUntil {!(isNil "btc_int_action_result")}; - -if (btc_int_action_result) then -{ - if (_item != "") then {player removeItem _item;}; - if (local _receiver) then {[_receiver,_treat] spawn btc_fnc_rev_apply_treat;} else {[[_receiver,_treat],"btc_fnc_rev_apply_treat",_receiver,false] spawn BIS_fnc_MP;}; - hint "Treatment applied"; -} else {hint "Treatment could not be applied";}; - -if ((!_isProne && !_inVeh) || (animationState player == _anim)) then {player switchmove "";player playActionNow "PlayerCrouch";}; - -player setVariable ["btc_int_busy", false]; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/unc.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/unc.sqf deleted file mode 100644 index 91682e587..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/unc.sqf +++ /dev/null @@ -1,76 +0,0 @@ - -if (_this getvariable ["btc_rev_mor",0] > btc_rev_max_mor) then {_this setvariable ["btc_rev_mor",btc_rev_max_mor];}; -_this setVariable ["btc_rev_head",0]; -_this setVariable ["btc_rev_body",0]; -_this setVariable ["btc_rev_hands",0]; -_this setVariable ["btc_rev_legs",0]; - -if (btc_p_revive == 1) then {player setDamage 1}; - -_timer = true; -if (btc_p_t_revive == 9999) then {_timer = false;}; - -if (_this getVariable ["btc_rev_isUnc",false]) exitWith {}; - -btc_rev_gear = [_this] call btc_fnc_rev_get_gear; - -_this setVariable ["tf_globalVolume", 0.4]; -_this setVariable ["tf_voiceVolume", 0]; -_this setVariable ["tf_unable_to_use_radio", true]; - -_this setVariable ["btc_rev_isUnc",true,true]; -_this setCaptive true; -//_this spawn {waitUntil {animationState player == "AinjPpneMstpSnonWrflDnon"};_this enableSimulation false;}; - -if (vehicle _this != _this) then {/*_this action ["EJECT",vehicle _this]*/} else -{ - _this switchMove "AinjPpneMstpSnonWrflDnon"; - _this spawn {sleep 7;if (_this getVariable ["btc_rev_isUnc",false]) then {_this switchMove "AinjPpneMstpSnonWrflDnon";};}; -}; -if (Dialog) then {closeDialog 0;}; -disableSerialization; - -if (isPlayer _this) then -{ - createDialog "btc_rev_dlg_unconscious"; - //_ui = uiNamespace getVariable "btc_rev_dlg_unconscious"; -} -else -{ - _this disableAI "MOVE"; -}; -_time = 0;_r_time = 0; -while {(_this getVariable ["btc_rev_isUnc",false]) && {Alive _this}} do -{ - private ["_ui"]; - if (isPlayer _this && {!Dialog}) then {createDialog "btc_rev_dlg_unconscious";}; - if (_this getvariable ["btc_rev_bleed",0] == 0 && {_this getVariable ["btc_rev_bloss",0] < 0.85} && {_this getVariable ["btc_rev_pain",0] < 0.7}) then - { - _time = _time + 0.1; - } else {_time = 0;}; - if (_time > (60 + random 30)) then {_this setVariable ["btc_rev_isUnc",false];}; - if (_timer) then {_r_time = _r_time + 0.1;if (_r_time > btc_p_t_revive) then {player setDamage 1;}}; - sleep 0.1; -}; -_this enableSimulation true; -_this enableAI "MOVE"; - -if (Alive _this) then -{ - closeDialog 0; - _this switchMove "AinjPpneMstpSnonWnonDnon_rolltofront"; - sleep 2; - _this playMoveNow "AmovPpneMstpSnonWnonDnon_healed"; - closeDialog 0; -}; - -_this setCaptive false; - -_this setVariable ["btc_rev_isUnc",false,true]; -_this setVariable ["btc_int_busy",false]; - -_this setVariable ["tf_globalVolume", 1]; -_this setVariable ["tf_voiceVolume", 1]; -_this setVariable ["tf_unable_to_use_radio", false]; - -if (Dialog) then {closeDialog 0;}; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/unit_init.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/unit_init.sqf deleted file mode 100644 index 261f64931..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/unit_init.sqf +++ /dev/null @@ -1,4 +0,0 @@ -if !(local _this && isNil {_this getVariable "btc_rev_eh"}) exitWith {}; -_this call btc_fnc_rev_init_var; -btc_rev_eh_id = _this addEventHandler ["HandleDamage", { _this call btc_fnc_rev_hd; }]; -_this setVariable ["btc_rev_eh", true]; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/unload.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/unload.sqf deleted file mode 100644 index 219d26bf2..000000000 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/rev/unload.sqf +++ /dev/null @@ -1,9 +0,0 @@ -_veh = btc_int_target; - -closeDialog 0; - -if (isNull _veh || !Alive _veh) exitWith {hint "Error: No vehicle";}; - -{ - if (_x getVariable ["btc_rev_isUnc",false]) then {[[4,_x],"btc_fnc_code_on_local",_x,false] spawn BIS_fnc_MP;}; -} foreach crew _veh; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/capture_officer.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/capture_officer.sqf index 14bdafb5c..ab893aae5 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/capture_officer.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/capture_officer.sqf @@ -29,19 +29,19 @@ btc_side_done = false; btc_side_failed = false; btc_side_assigned = true;publicVariable "btc_side_assigned"; -[14,_pos2,_city2 getVariable "name"] call btc_fnc_task_create; +[14,_pos2,_city2 getVariable "name"] remoteExec ["btc_fnc_task_create", 0]; btc_side_jip_data = [14,getPos _city1,_city1 getVariable "name"]; //// Create markers \\\\ _marker1 = createmarker [format ["sm_2_%1",getPos _city1],getPos _city1]; _marker1 setmarkertype "hd_flag"; -_marker1 setmarkertext "Convoy Start"; +[_marker1,"STR_BTC_HAM_SIDE_CONVOY_MRKSTART"] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker1]; //Convoy Start _marker1 setMarkerSize [0.6, 0.6]; _marker2 = createmarker [format ["sm_2_%1",_pos2],_pos2]; _marker2 setmarkertype "hd_flag"; -_marker2 setmarkertext "Convoy End"; +[_marker2,"STR_BTC_HAM_SIDE_CONVOY_MRKEND"] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker2]; //Convoy End _marker2 setMarkerSize [0.6, 0.6]; _area = createmarker [format ["sm_%1",_pos2],_pos2]; @@ -62,27 +62,27 @@ _veh_types = btc_civ_type_veh select {!(_x isKindOf "air")}; _random = (1+ round random 1); _random_veh = round random _random; for "_i" from 0 to _random do { - private ["_veh"]; - _veh_type = selectRandom _veh_types; - _crewmen = btc_type_crewmen; - _veh = createVehicle [_veh_type, _pos1, [], 0, "FLY"]; - _veh setDir ([_road] call btc_fnc_road_direction); - _vehs pushBack _veh; - - [_veh,_group,false,"",_crewmen] call BIS_fnc_spawnCrew; - if (_i == _random_veh) then { - (selectRandom btc_type_units) createUnit [_pos1, _group, "this moveinCargo _veh;this assignAsCargo _veh; removeAllWeapons this; _captive = this; _group selectLeader this;"] - }; - _cargo = (_veh emptyPositions "cargo") - 1; - if (_cargo > 0) then { - for "_i" from 0 to _cargo do { - private ["_unit_type"]; - _unit_type = selectRandom btc_type_units; - _unit_type createUnit [_pos1, _group, "this moveinCargo _veh;this assignAsCargo _veh;"]; - }; - }; - _road = (roadsConnectedTo _road) select 0; - _pos1 = getPos _road; + private ["_veh"]; + _veh_type = selectRandom _veh_types; + _crewmen = btc_type_crewmen; + _veh = createVehicle [_veh_type, _pos1, [], 0, "FLY"]; + _veh setDir ([_road] call btc_fnc_road_direction); + _vehs pushBack _veh; + + [_veh,_group,false,"",_crewmen] call BIS_fnc_spawnCrew; + if (_i == _random_veh) then { + (selectRandom btc_type_units) createUnit [_pos1, _group, "this moveinCargo _veh;this assignAsCargo _veh; removeAllWeapons this; _captive = this; _group selectLeader this;"] + }; + _cargo = (_veh emptyPositions "cargo") - 1; + if (_cargo > 0) then { + for "_i" from 0 to _cargo do { + private ["_unit_type"]; + _unit_type = selectRandom btc_type_units; + _unit_type createUnit [_pos1, _group, "this moveinCargo _veh;this assignAsCargo _veh;"]; + }; + }; + _road = (roadsConnectedTo _road) select 0; + _pos1 = getPos _road; }; units _group joinSilent _group; @@ -105,29 +105,29 @@ _trigger setTriggerActivation[str(btc_player_side),"PRESENT",true]; _trigger setTriggerStatements["this", "_captive = thisTrigger getVariable 'captive'; doStop _captive; [_captive,true] call ace_captives_fnc_setSurrendered;", ""]; _trigger attachTo [_captive,[0,0,0]]; -{player commandChat "Convoy has left the starting point!"} remoteExec ["call", -2]; +{player commandChat (localize "STR_BTC_HAM_SIDE_CONVOY_STARTCHAT")} remoteExec ["call", -2]; //Convoy has left the starting point! waitUntil {sleep 5; (btc_side_aborted || btc_side_failed || !(Alive _captive) || (_captive distance getpos btc_create_object_point < 100))}; btc_side_assigned = false;publicVariable "btc_side_assigned"; if (btc_side_aborted || !(Alive _captive)) exitWith { - 14 remoteExec ["btc_fnc_task_fail", 0]; - [_markers, _vehs + [_trigger], [], [_group]] call btc_fnc_delete; + 14 remoteExec ["btc_fnc_task_fail", 0]; + [_markers, _vehs + [_trigger], [], [_group]] call btc_fnc_delete; }; if (btc_side_failed) exitWith { - 14 remoteExec ["btc_fnc_task_fail", 0]; - _group setVariable ["no_cache",false]; - { - _group = createGroup btc_enemy_side; - (crew _x) joinSilent _group; - _group call btc_fnc_data_add_group; - } forEach _vehs; - [_markers, [_trigger], [], []] call btc_fnc_delete; + 14 remoteExec ["btc_fnc_task_fail", 0]; + _group setVariable ["no_cache",false]; + { + _group = createGroup btc_enemy_side; + (crew _x) joinSilent _group; + _group call btc_fnc_data_add_group; + } forEach _vehs; + [_markers, [_trigger], [], []] call btc_fnc_delete; }; 50 call btc_fnc_rep_change; 14 remoteExec ["btc_fnc_task_set_done", 0]; -[_markers, _vehs + [_trigger,_captive], [], [_group]] call btc_fnc_delete; \ No newline at end of file +[_markers, _vehs + [_trigger,_captive], [], [_group]] call btc_fnc_delete; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/checkpoint.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/checkpoint.sqf index 93c687442..89d418c6d 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/checkpoint.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/checkpoint.sqf @@ -12,7 +12,7 @@ btc_side_done = false; btc_side_failed = false; btc_side_assigned = true;publicVariable "btc_side_assigned"; -[9,_pos,_city getVariable "name"] call btc_fnc_task_create; +[9,_pos,_city getVariable "name"] remoteExec ["btc_fnc_task_create", 0]; btc_side_jip_data = [9,_pos,_city getVariable "name"]; @@ -23,66 +23,66 @@ _statics = btc_type_gl + btc_type_mg; _boxes = []; _markers = []; for "_i" from 1 to (1 + round random 2) do { - private ["_boxe"]; - //// Choose a road \\\\ - _pos = [getPos _city, 300] call btc_fnc_randomize_pos; - _roads = _pos nearRoads 300; - _roads = _roads select {isOnRoad _x}; - if (_roads isEqualTo []) exitWith {_boxes pushBack objNull}; - _road = selectRandom _roads; - _pos = getPos _road; - - _direction = [_road] call btc_fnc_road_direction; - - //// Create marker \\\\ - _marker = createmarker [format ["sm_2_%1",_pos],_pos]; - _marker setmarkertype "hd_flag"; - _marker setmarkertext "Checkpoint"; - _marker setMarkerColor "ColorRed"; - _marker setMarkerSize [0.6, 0.6]; - _markers pushback _marker; - - //// Randomise composition \\\\ - _type_barrel = selectRandom btc_type_barrel; - _type_barrel_canister1 = selectRandom(btc_type_barrel + btc_type_canister); - _type_barrel_canister2 = selectRandom(btc_type_barrel + btc_type_canister); - _type_pallet = selectRandom btc_type_pallet; - _type_box = selectRandom btc_type_box; - _btc_composition_checkpoint = [ - [_type_barrel,10,[0.243652,-2.78906,0]], - [_type_barrel,20,[-0.131836,3.12939,0]], - ["Land_BagFence_Long_F",90,[0.769531,-4.021,0]], - ["Land_BagFence_Long_F",90,[-0.638672,4.31787,0]], - ["Flag_Red_F",-90,[2.23193,-4.375,0]], - [_type_barrel_canister1,0,[1.27393,-4.93604,0]], - [_type_pallet,-70,[-3.98071,3.75342,0]], - [_type_barrel_canister2,0,[1.83984,-4.95264,0]], - [_type_box,180,[-1.97998,4.88574,0]], - ["Land_CncBarrier_stripes_F",180,[2.26367,-5.38623,0]], - ["RoadCone_L_F",180,[1.14771,-5.89697,0.00211954]], - ["Land_CncBarrier_stripes_F",0,[-2.1416,5.66553,0]], - ["RoadCone_L_F",0,[-1.03101,6.18164,0.00211954]], - ["RoadCone_L_F",180,[2.81616,-5.81689,0.00211954]], - ["RoadCone_L_F",0,[-2.6731,6.17773,0.00211954]] - ]; - - //// Create checkpoint with static at _pos \\\\ - [[((_pos select 0) -2.39185*cos(-_direction) - 2.33984*sin(-_direction)), ((_pos select 1) + 2.33984 *cos(-_direction) -2.39185*sin(-_direction)), (_pos select 2)],_statics,_direction + 180] call btc_fnc_mil_create_static; - [[((_pos select 0) + 2.72949*cos(-_direction) - -2.03857*sin(-_direction)), ((_pos select 1) -2.03857*cos(-_direction) +2.72949*sin(-_direction)), (_pos select 2)],_statics,_direction ] call btc_fnc_mil_create_static; - [_pos,_direction,_btc_composition_checkpoint] call btc_fnc_create_composition; - - _boxe = nearestObject [_pos, _type_box]; - _boxe setVariable ["ace_cookoff_enable", false, true]; - _boxe spawn { - private ["_pos","_fx"]; - _pos = getpos _this; - waitUntil {sleep 5; btc_side_aborted || btc_side_failed || !(Alive _this)}; - _fx = "test_EmptyObjectForSmoke" createVehicle _pos; - _fx setPos _pos; - sleep 120; - _fx call btc_fnc_deleteTestObj; - }; - _boxes pushBack _boxe; + private ["_boxe"]; + //// Choose a road \\\\ + _pos = [getPos _city, 300] call btc_fnc_randomize_pos; + _roads = _pos nearRoads 300; + _roads = _roads select {isOnRoad _x}; + if (_roads isEqualTo []) exitWith {_boxes pushBack objNull}; + _road = selectRandom _roads; + _pos = getPos _road; + + _direction = [_road] call btc_fnc_road_direction; + + //// Create marker \\\\ + _marker = createmarker [format ["sm_2_%1",_pos],_pos]; + _marker setmarkertype "hd_flag"; + [_marker,"STR_BTC_HAM_SIDE_CHECKPOINT_MRK"] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker]; //Checkpoint + _marker setMarkerColor "ColorRed"; + _marker setMarkerSize [0.6, 0.6]; + _markers pushback _marker; + + //// Randomise composition \\\\ + _type_barrel = selectRandom btc_type_barrel; + _type_barrel_canister1 = selectRandom(btc_type_barrel + btc_type_canister); + _type_barrel_canister2 = selectRandom(btc_type_barrel + btc_type_canister); + _type_pallet = selectRandom btc_type_pallet; + _type_box = selectRandom btc_type_box; + _btc_composition_checkpoint = [ + [_type_barrel,10,[0.243652,-2.78906,0]], + [_type_barrel,20,[-0.131836,3.12939,0]], + ["Land_BagFence_Long_F",90,[0.769531,-4.021,0]], + ["Land_BagFence_Long_F",90,[-0.638672,4.31787,0]], + ["Flag_Red_F",-90,[2.23193,-4.375,0]], + [_type_barrel_canister1,0,[1.27393,-4.93604,0]], + [_type_pallet,-70,[-3.98071,3.75342,0]], + [_type_barrel_canister2,0,[1.83984,-4.95264,0]], + [_type_box,180,[-1.97998,4.88574,0]], + ["Land_CncBarrier_stripes_F",180,[2.26367,-5.38623,0]], + ["RoadCone_L_F",180,[1.14771,-5.89697,0.00211954]], + ["Land_CncBarrier_stripes_F",0,[-2.1416,5.66553,0]], + ["RoadCone_L_F",0,[-1.03101,6.18164,0.00211954]], + ["RoadCone_L_F",180,[2.81616,-5.81689,0.00211954]], + ["RoadCone_L_F",0,[-2.6731,6.17773,0.00211954]] + ]; + + //// Create checkpoint with static at _pos \\\\ + [[((_pos select 0) -2.39185*cos(-_direction) - 2.33984*sin(-_direction)), ((_pos select 1) + 2.33984 *cos(-_direction) -2.39185*sin(-_direction)), (_pos select 2)],_statics,_direction + 180] call btc_fnc_mil_create_static; + [[((_pos select 0) + 2.72949*cos(-_direction) - -2.03857*sin(-_direction)), ((_pos select 1) -2.03857*cos(-_direction) +2.72949*sin(-_direction)), (_pos select 2)],_statics,_direction ] call btc_fnc_mil_create_static; + [_pos,_direction,_btc_composition_checkpoint] call btc_fnc_create_composition; + + _boxe = nearestObject [_pos, _type_box]; + _boxe setVariable ["ace_cookoff_enable", false, true]; + _boxe spawn { + private ["_pos","_fx"]; + _pos = getpos _this; + waitUntil {sleep 5; btc_side_aborted || btc_side_failed || !(Alive _this)}; + _fx = "test_EmptyObjectForSmoke" createVehicle _pos; + _fx setPos _pos; + sleep 120; + _fx call btc_fnc_deleteTestObj; + }; + _boxes pushBack _boxe; }; waitUntil {sleep 5; (btc_side_aborted || btc_side_failed || ({Alive _x} count _boxes == 0))}; @@ -91,9 +91,9 @@ btc_side_assigned = false;publicVariable "btc_side_assigned"; [_markers, _boxes, [], []] call btc_fnc_delete; if (btc_side_aborted || btc_side_failed) exitWith { - 9 remoteExec ["btc_fnc_task_fail", 0]; + 9 remoteExec ["btc_fnc_task_fail", 0]; }; 80 call btc_fnc_rep_change; -9 remoteExec ["btc_fnc_task_set_done", 0]; \ No newline at end of file +9 remoteExec ["btc_fnc_task_set_done", 0]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment.sqf index d992b86c8..afd277cdb 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment.sqf @@ -9,16 +9,16 @@ _pos = getPos _city; //// Choose spawn in house or on road \\\\ _r = random 2; -if ( _r < 1) then { - _roads = _pos nearRoads 200; - _roads = _roads select {isOnRoad _x}; - if (_roads isEqualTo []) exitWith {[] spawn btc_fnc_side_create;}; - _pos = getPos (selectRandom _roads); - _vehpos = [_pos, 10] call btc_fnc_randomize_pos; +if ( _r < 1) then { + _roads = _pos nearRoads 200; + _roads = _roads select {isOnRoad _x}; + if (_roads isEqualTo []) exitWith {[] spawn btc_fnc_side_create;}; + _pos = getPos (selectRandom _roads); + _vehpos = [_pos, 10] call btc_fnc_randomize_pos; } else { - _houses = [[(_pos select 0),(_pos select 1),0],200] call btc_fnc_getHouses; - _pos = selectRandom ((selectRandom _houses) buildingPos -1); - _vehpos = [(_pos select 0),(_pos select 1),(_pos select 2) + 0.1]; + _houses = [[(_pos select 0),(_pos select 1),0],200] call btc_fnc_getHouses; + _pos = selectRandom ((selectRandom _houses) buildingPos -1); + _vehpos = [(_pos select 0),(_pos select 1),(_pos select 2) + 0.1]; }; btc_side_aborted = false; @@ -26,37 +26,37 @@ btc_side_done = false; btc_side_failed = false; btc_side_assigned = true;publicVariable "btc_side_assigned"; -[8,_pos,_city getVariable "name"] call btc_fnc_task_create; +[8,_pos,_city getVariable "name"] remoteExec ["btc_fnc_task_create", 0]; btc_side_jip_data = [8,_pos,_city getVariable "name"]; //// Create marker \\\\ _marker = createmarker [format ["sm_2_%1",_pos],_pos]; _marker setmarkertype "hd_flag"; -_marker setmarkertext "Civil need help"; +[_marker,"STR_BTC_HAM_SIDE_CIVTREAT_MRK"] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker]; //Civil need help _marker setMarkerSize [0.6, 0.6]; //// Create civ on _pos \\\\ if ( _r < 1) then { - _veh_type = selectRandom btc_civ_type_veh; - _veh = createVehicle [_veh_type, _vehpos, [], 0, "NONE"]; - _veh setDir (random 360); - _veh setDamage 0.7; - //// Random wheel hit \\\\ - if (_r < 0.5) then { - _veh setHit ["wheel_1_2_steering", 1]; - } else { - _veh setHit ["wheel_2_1_steering", 1]; - }; - _veh setHit ["wheel_1_1_steering", 1]; - //// Add smoke effect on car \\\\ - _fx = "test_EmptyObjectForSmoke" createVehicle (getposATL _veh); - _fx attachTo [_veh,[0,0,0]]; + _veh_type = selectRandom btc_civ_type_veh; + _veh = createVehicle [_veh_type, _vehpos, [], 0, "NONE"]; + _veh setDir (random 360); + _veh setDamage 0.7; + //// Random wheel hit \\\\ + if (_r < 0.5) then { + _veh setHit ["wheel_1_2_steering", 1]; + } else { + _veh setHit ["wheel_2_1_steering", 1]; + }; + _veh setHit ["wheel_1_1_steering", 1]; + //// Add smoke effect on car \\\\ + _fx = "test_EmptyObjectForSmoke" createVehicle (getposATL _veh); + _fx attachTo [_veh,[0,0,0]]; } else { - _phone_type = selectRandom btc_type_phone; - _veh = createVehicle [_phone_type, _vehpos, [], 0, "NONE"]; - _veh setDir (random 360); - _fx = objNull; + _phone_type = selectRandom btc_type_phone; + _veh = createVehicle [_phone_type, _vehpos, [], 0, "NONE"]; + _veh setDir (random 360); + _fx = objNull; }; _unit_type = selectRandom btc_civ_type_units; @@ -83,11 +83,11 @@ btc_side_assigned = false;publicVariable "btc_side_assigned"; [[_marker], [_veh], [_fx], [_group]] call btc_fnc_delete; if (btc_side_aborted || btc_side_failed || !Alive _unit) exitWith { - 8 remoteExec ["btc_fnc_task_fail", 0]; + 8 remoteExec ["btc_fnc_task_fail", 0]; }; 10 call btc_fnc_rep_change; 8 remoteExec ["btc_fnc_task_set_done", 0]; -_unit setUnitPos "UP"; \ No newline at end of file +_unit setUnitPos "UP"; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment_boat.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment_boat.sqf index a5c5f626a..6d040757b 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment_boat.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/civtreatment_boat.sqf @@ -17,14 +17,14 @@ btc_side_done = false; btc_side_failed = false; btc_side_assigned = true;publicVariable "btc_side_assigned"; -[10,_pos,_city getVariable "name"] call btc_fnc_task_create; +[10,_pos,_city getVariable "name"] remoteExec ["btc_fnc_task_create", 0]; btc_side_jip_data = [10,_vehpos,_city getVariable "name"]; //// Create marker \\\\ _marker = createmarker [format ["sm_2_%1",_vehpos],_vehpos]; _marker setmarkertype "hd_flag"; -_marker setmarkertext "Civil need help"; +[_marker,"STR_BTC_HAM_SIDE_CIVTREAT_MRK"] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker]; //Civil need help _marker setMarkerSize [0.6, 0.6]; //// Create civ on _vehpos \\\\ @@ -53,9 +53,9 @@ btc_side_assigned = false;publicVariable "btc_side_assigned"; [[_marker], [_veh], [], [_group]] call btc_fnc_delete; if (btc_side_aborted || btc_side_failed || !Alive _unit) exitWith { - 10 remoteExec ["btc_fnc_task_fail", 0]; + 10 remoteExec ["btc_fnc_task_fail", 0]; }; 10 call btc_fnc_rep_change; -10 remoteExec ["btc_fnc_task_set_done", 0]; \ No newline at end of file +10 remoteExec ["btc_fnc_task_set_done", 0]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/convoy.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/convoy.sqf index 2767cf039..4f9e30c22 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/convoy.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/convoy.sqf @@ -26,19 +26,19 @@ btc_side_done = false; btc_side_failed = false; btc_side_assigned = true;publicVariable "btc_side_assigned"; -[12,_pos2,_city2 getVariable "name"] call btc_fnc_task_create; +[12,_pos2,_city2 getVariable "name"] remoteExec ["btc_fnc_task_create", 0]; btc_side_jip_data = [12,_pos1,_city1 getVariable "name"]; //// Create markers \\\\ _marker1 = createmarker [format ["sm_2_%1",_pos1],_pos1]; _marker1 setmarkertype "hd_flag"; -_marker1 setmarkertext "Convoy start"; +[_marker1,"STR_BTC_HAM_SIDE_CONVOY_MRKSTART"] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker1]; //Convoy start _marker1 setMarkerSize [0.6, 0.6]; _marker2 = createmarker [format ["sm_2_%1",_pos2],_pos2]; _marker2 setmarkertype "hd_flag"; -_marker2 setmarkertext "Convoy end"; +[_marker2,"STR_BTC_HAM_SIDE_CONVOY_MRKEND"] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker2]; //Convoy end _marker2 setMarkerSize [0.6, 0.6]; _area = createmarker [format ["sm_%1",_pos2],_pos2]; @@ -57,24 +57,24 @@ _group setVariable ["no_cache",true]; _vehs = []; _veh_types = btc_type_motorized select {!(_x isKindOf "air")}; for "_i" from 0 to (2 + round random 2) do { - private ["_veh"]; - _veh_type = selectRandom _veh_types; - _crewmen = btc_type_crewmen; - _veh = createVehicle [_veh_type, _pos1, [], 0, "FLY"]; - _veh setDir ([_road] call btc_fnc_road_direction); - _vehs pushBack _veh; - - [_veh,_group,false,"",_crewmen] call BIS_fnc_spawnCrew; - _cargo = (_veh emptyPositions "cargo") - 1; - if (_cargo > 0) then { - for "_i" from 0 to _cargo do { - private ["_unit_type"]; - _unit_type = selectRandom btc_type_units; - _unit_type createUnit [_pos1, _group, "this moveinCargo _veh;this assignAsCargo _veh;"]; - }; - }; - _road = (roadsConnectedTo _road) select 0; - _pos1 = getPos _road; + private ["_veh"]; + _veh_type = selectRandom _veh_types; + _crewmen = btc_type_crewmen; + _veh = createVehicle [_veh_type, _pos1, [], 0, "FLY"]; + _veh setDir ([_road] call btc_fnc_road_direction); + _vehs pushBack _veh; + + [_veh,_group,false,"",_crewmen] call BIS_fnc_spawnCrew; + _cargo = (_veh emptyPositions "cargo") - 1; + if (_cargo > 0) then { + for "_i" from 0 to _cargo do { + private ["_unit_type"]; + _unit_type = selectRandom btc_type_units; + _unit_type createUnit [_pos1, _group, "this moveinCargo _veh;this assignAsCargo _veh;"]; + }; + }; + _road = (roadsConnectedTo _road) select 0; + _pos1 = getPos _road; }; units _group joinSilent _group; @@ -89,29 +89,29 @@ _wp setWaypointSpeed "LIMITED"; _wp setWaypointFormation "COLUMN"; _wp setWaypointStatements ["true", "btc_side_failed = true"]; -{player commandChat "Convoy has left the starting point!"} remoteExec ["call", -2]; +{player commandChat (localize "STR_BTC_HAM_SIDE_CONVOY_STARTCHAT")} remoteExec ["call", -2]; //Convoy has left the starting point! waitUntil {sleep 5; (btc_side_aborted || btc_side_failed || ({ canMove _x } count _vehs == 0) || (_group isEqualTo grpNull))}; btc_side_assigned = false;publicVariable "btc_side_assigned"; if (btc_side_aborted) exitWith { - 12 remoteExec ["btc_fnc_task_fail", 0]; - [_markers, _vehs, [], [_group]] call btc_fnc_delete; + 12 remoteExec ["btc_fnc_task_fail", 0]; + [_markers, _vehs, [], [_group]] call btc_fnc_delete; }; if (btc_side_failed) exitWith { - 12 remoteExec ["btc_fnc_task_fail", 0]; - _group setVariable ["no_cache",false]; - { - _group = createGroup btc_enemy_side; - (crew _x) joinSilent _group; - _group call btc_fnc_data_add_group; - } forEach _vehs; - [_markers, [], [], []] call btc_fnc_delete; + 12 remoteExec ["btc_fnc_task_fail", 0]; + _group setVariable ["no_cache",false]; + { + _group = createGroup btc_enemy_side; + (crew _x) joinSilent _group; + _group call btc_fnc_data_add_group; + } forEach _vehs; + [_markers, [], [], []] call btc_fnc_delete; }; 50 call btc_fnc_rep_change; 12 remoteExec ["btc_fnc_task_set_done", 0]; -[_markers, _vehs, [], [_group]] call btc_fnc_delete; \ No newline at end of file +[_markers, _vehs, [], [_group]] call btc_fnc_delete; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/create.sqf index 6311dc872..2b26bd7de 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/create.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/create.sqf @@ -4,9 +4,9 @@ if (btc_side_assigned) exitWith {}; private ["_side","_cycle"]; if (_this isEqualTo []) then { - _cycle = false; + _cycle = false; } else { - _cycle = _this select 0; + _cycle = _this select 0; }; if (count btc_side_list_use == 0) then {btc_side_list_use = + btc_side_list;}; @@ -20,22 +20,22 @@ btc_side_done = false; btc_side_failed = false; switch (_side) do { - case 0 : {[] call btc_fnc_side_supply;}; - case 1 : {[] call btc_fnc_side_mines;}; - case 2 : {[] call btc_fnc_side_vehicle;}; - case 3 : {[] call btc_fnc_side_get_city;}; - case 4 : {[] call btc_fnc_side_tower;}; - case 5 : {[] call btc_fnc_side_civtreatment;}; - case 6 : {[] call btc_fnc_side_checkpoint;}; - case 7 : {[] call btc_fnc_side_civtreatment_boat;}; - case 8 : {[] call btc_fnc_side_underwater_generator;}; - case 9 : {[] call btc_fnc_side_convoy;}; - case 10 : {[] call btc_fnc_side_rescue;}; - case 11 : {[] call btc_fnc_side_capture_officer;}; - case 12 : {[] call btc_fnc_side_hostage;}; - case 13 : {[] call btc_fnc_side_hack;}; + case 0 : {[] call btc_fnc_side_supply;}; + case 1 : {[] call btc_fnc_side_mines;}; + case 2 : {[] call btc_fnc_side_vehicle;}; + case 3 : {[] call btc_fnc_side_get_city;}; + case 4 : {[] call btc_fnc_side_tower;}; + case 5 : {[] call btc_fnc_side_civtreatment;}; + case 6 : {[] call btc_fnc_side_checkpoint;}; + case 7 : {[] call btc_fnc_side_civtreatment_boat;}; + case 8 : {[] call btc_fnc_side_underwater_generator;}; + case 9 : {[] call btc_fnc_side_convoy;}; + case 10 : {[] call btc_fnc_side_rescue;}; + case 11 : {[] call btc_fnc_side_capture_officer;}; + case 12 : {[] call btc_fnc_side_hostage;}; + case 13 : {[] call btc_fnc_side_hack;}; }; if (_cycle) then { - [true] spawn btc_fnc_side_create; + [true] spawn btc_fnc_side_create; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/get_city.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/get_city.sqf index 27794cc55..c7164e926 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/get_city.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/get_city.sqf @@ -13,7 +13,7 @@ btc_side_done = false; btc_side_failed = false; btc_side_assigned = true;publicVariable "btc_side_assigned"; -[6,_pos,_city getVariable "name"] call btc_fnc_task_create; +[6,_pos,_city getVariable "name"] remoteExec ["btc_fnc_task_create", 0]; btc_side_jip_data = [6,_pos,_city getVariable "name"]; @@ -24,7 +24,7 @@ waitUntil {sleep 5; (btc_side_aborted || btc_side_failed || !(_city getVariable btc_side_assigned = false;publicVariable "btc_side_assigned"; if (btc_side_aborted || btc_side_failed) exitWith { - 6 remoteExec ["btc_fnc_task_fail", 0]; + 6 remoteExec ["btc_fnc_task_fail", 0]; }; 80 call btc_fnc_rep_change; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hack.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hack.sqf index 4d20eabe8..afeed5b0b 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hack.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hack.sqf @@ -18,7 +18,7 @@ btc_side_done = false; btc_side_failed = false; btc_side_assigned = true;publicVariable "btc_side_assigned"; -[16,_pos,_city getVariable "name"] call btc_fnc_task_create; +[16,_pos,_city getVariable "name"] remoteExec ["btc_fnc_task_create", 0]; btc_side_jip_data = [16,_pos,_city getVariable "name"]; @@ -26,7 +26,7 @@ _city setVariable ["spawn_more",true]; private _marker = createmarker [format ["sm_2_%1",_pos],_pos]; _marker setmarkertype "hd_flag"; -_marker setmarkertext "Terminal"; +[_marker,"STR_BTC_HAM_SIDE_HACK_MRK"] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker]; //Terminal _marker setMarkerSize [0.6, 0.6]; //// Create terminal \\\\ @@ -36,46 +36,46 @@ private _launchsite = createVehicle ["Land_PenBlack_F", _pos, [], 0, "FLY"]; //// Add interaction on Terminal \\\\ [[_terminal],{ - private _action = ["Open","Start Hacking","\A3\ui_f\data\igui\cfg\simpleTasks\types\intel_ca.paa",{ - [_this select 0,3] call BIS_fnc_dataTerminalAnimate; - {btc_side_done = true} remoteExec ["call", 0]; - },{isNil "btc_side_done"}] call ace_interact_menu_fnc_createAction; - [_this select 0, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject; + private _action = ["Open",(localize "STR_BTC_HAM_SIDE_HACK_ACEACTION"),"\A3\ui_f\data\igui\cfg\simpleTasks\types\intel_ca.paa",{ //Start Hacking + [_this select 0,3] call BIS_fnc_dataTerminalAnimate; + {btc_side_done = true} remoteExec ["call", 0]; + },{isNil "btc_side_done"}] call ace_interact_menu_fnc_createAction; + [_this select 0, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject; }] remoteExec ["call", -2, _terminal]; waitUntil {sleep 5; (btc_side_aborted || btc_side_failed || btc_side_done)}; if (btc_side_aborted || btc_side_failed) exitWith { - 16 remoteExec ["btc_fnc_task_fail", 0]; - [[_marker], [_terminal], [], []] call btc_fnc_delete; - btc_side_assigned = false;publicVariable "btc_side_assigned"; + 16 remoteExec ["btc_fnc_task_fail", 0]; + [[_marker], [_terminal], [], []] call btc_fnc_delete; + btc_side_assigned = false;publicVariable "btc_side_assigned"; }; private _groups = []; private _closest = [_city,btc_city_all select {!(_x getVariable ["active",false])},false] call btc_fnc_find_closecity; for "_i" from 1 to (2 + round random 1) do { - _groups pushBack ([_closest, getpos _terminal,1,selectRandom btc_type_motorized] call btc_fnc_mil_send); + _groups pushBack ([_closest, getpos _terminal,1,selectRandom btc_type_motorized] call btc_fnc_mil_send); }; _groups apply {_x setBehaviour "CARELESS"}; [_terminal, _launchsite modelToWorld [0,100,10]] remoteExec ["btc_fnc_log_place_create_camera", -2]; -{player commandChat "Defend the terminal until the missile is hacked!"} remoteExec ["call", -2]; +{player commandChat (localize "STR_BTC_HAM_SIDE_HACK_STARTCHAT")} remoteExec ["call", -2]; //Defend the terminal until the missile is hacked! waitUntil {sleep 5; (btc_side_aborted || btc_side_failed || ({_x isEqualTo grpNull} count _groups > 0) || !(_city getVariable ["active", false]))}; if (btc_side_aborted || btc_side_failed) exitWith { - {btc_side_done = Nil} remoteExec ["call", -2]; - 16 remoteExec ["btc_fnc_task_fail", 0]; - [[_marker], [_terminal], [], []] call btc_fnc_delete; - btc_side_assigned = false;publicVariable "btc_side_assigned"; + {btc_side_done = Nil} remoteExec ["call", -2]; + 16 remoteExec ["btc_fnc_task_fail", 0]; + [[_marker], [_terminal], [], []] call btc_fnc_delete; + btc_side_assigned = false;publicVariable "btc_side_assigned"; }; //// Launch the hacked missile \\\\ private _altitude = 20; while {_altitude < 500} do { - _altitude = _altitude + 3; - (createVehicle ["DemoCharge_Remote_Ammo_Scripted", [_pos select 0, _pos select 1, _altitude], [], 0, "CAN_COLLIDE"]) setDamage 1; - sleep 0.1; + _altitude = _altitude + 3; + (createVehicle ["DemoCharge_Remote_Ammo_Scripted", [_pos select 0, _pos select 1, _altitude], [], 0, "CAN_COLLIDE"]) setDamage 1; + sleep 0.1; }; private _rocket = createVehicle ["ace_rearm_Missile_AGM_02_F", [_pos select 0, _pos select 1, _altitude], [], 0, "CAN_COLLIDE"]; private _fx = createVehicle ["test_EmptyObjectForSmoke", [_pos select 0, _pos select 1, _altitude], [], 0, "CAN_COLLIDE"]; @@ -85,9 +85,9 @@ _fx attachTo [_rocket,[0,0,0]]; btc_side_assigned = false;publicVariable "btc_side_assigned"; [[_marker], [_rocket, _terminal], [_fx], []] call btc_fnc_delete; if (btc_side_aborted || btc_side_failed || !(_city getVariable ["active", false])) exitWith { - 16 remoteExec ["btc_fnc_task_fail", 0]; + 16 remoteExec ["btc_fnc_task_fail", 0]; }; 80 call btc_fnc_rep_change; -16 remoteExec ["btc_fnc_task_set_done", 0]; \ No newline at end of file +16 remoteExec ["btc_fnc_task_set_done", 0]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hostage.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hostage.sqf index c8c78d7eb..c6da5d8d6 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hostage.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/hostage.sqf @@ -24,14 +24,14 @@ btc_side_done = false; btc_side_failed = false; btc_side_assigned = true;publicVariable "btc_side_assigned"; -[15,_pos,_city getVariable "name"] call btc_fnc_task_create; +[15,_pos,_city getVariable "name"] remoteExec ["btc_fnc_task_create", 0]; btc_side_jip_data = [15,getPos _city,_city getVariable "name"]; //// Marker _marker = createmarker [format ["sm_2_%1",getPos _house],getPos _house]; _marker setmarkertype "hd_flag"; -_marker setmarkertext "Hostage"; +[_marker,"STR_BTC_HAM_SIDE_HOSTAGE_MRK"] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker]; //Hostage _marker setMarkerSize [0.6, 0.6]; _city setVariable ["spawn_more",true]; @@ -47,14 +47,14 @@ _captive call btc_fnc_civ_unit_create; _group = []; { - private ["_grp"]; - _grp = createGroup btc_enemy_side; - _unit = _grp createUnit [selectRandom btc_type_units, _x, [], 0, "NONE"]; - [_unit] joinSilent _grp; - _unit setPosATL _x; - _group pushBack _grp; - _grp setVariable ["no_cache",true]; - _unit call btc_fnc_mil_unit_create; + private ["_grp"]; + _grp = createGroup btc_enemy_side; + _unit = _grp createUnit [selectRandom btc_type_units, _x, [], 0, "NONE"]; + [_unit] joinSilent _grp; + _unit setPosATL _x; + _group pushBack _grp; + _grp setVariable ["no_cache",true]; + _unit call btc_fnc_mil_unit_create; } forEach (_buildingPos - [_pos]); _trigger = createTrigger["EmptyDetector",_pos]; @@ -64,17 +64,17 @@ _trigger setTriggerActivation[str(btc_player_side),"PRESENT",true]; _trigger setTriggerStatements["this", "private _group = thisTrigger getVariable 'group'; {_x setCombatMode 'RED';} foreach _group;", "private _group = thisTrigger getVariable 'group'; {_x setCombatMode 'WHITE';} foreach _group;"]; if (random 1 > 0.5) then { - sleep 5; - _mine = createMine [selectRandom btc_type_mines, getposATL _captive, [], 0]; + sleep 5; + _mine = createMine [selectRandom btc_type_mines, getposATL _captive, [], 0]; } else { - _mine = objNull; + _mine = objNull; }; waitUntil {sleep 5; (btc_side_aborted || btc_side_failed || !(_captive getVariable ["ace_captives_isHandcuffed", false]) || !Alive _captive)}; if (!(_captive getVariable ["ace_captives_isHandcuffed", false])) then { - _mine setDamage 1; - sleep 1; + _mine setDamage 1; + sleep 1; }; _group_civ setVariable ["no_cache",false]; @@ -82,11 +82,11 @@ _group_civ setVariable ["no_cache",false]; btc_side_assigned = false;publicVariable "btc_side_assigned"; if (btc_side_aborted || btc_side_failed || !(Alive _captive)) exitWith { - 15 remoteExec ["btc_fnc_task_fail", 0]; - [[_marker], [_trigger,_mine], [], _group + [_group_civ]] call btc_fnc_delete; + 15 remoteExec ["btc_fnc_task_fail", 0]; + [[_marker], [_trigger,_mine], [], _group + [_group_civ]] call btc_fnc_delete; }; 40 call btc_fnc_rep_change; [[_marker], [], [], []] call btc_fnc_delete; -15 remoteExec ["btc_fnc_task_set_done", 0]; \ No newline at end of file +15 remoteExec ["btc_fnc_task_set_done", 0]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/mines.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/mines.sqf index 32ddbb22b..2ad931369 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/mines.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/mines.sqf @@ -1,64 +1,114 @@ -private ["_useful","_city","_pos","_area","_marker","_mines","_closest"]; - -_useful = btc_city_all select {((_x getVariable ["type",""] != "NameLocal") && {_x getVariable ["type",""] != "Hill"} && (_x getVariable ["type",""] != "NameMarine"))}; +private _useful = btc_city_all select {(_x getVariable ["type",""] != "NameLocal") && {_x getVariable ["type",""] != "Hill"} && (_x getVariable ["type",""] != "NameMarine")}; if (_useful isEqualTo []) then {_useful = + btc_city_all;}; -_city = selectRandom _useful; - -//_pos = [getPos _city, 100] call btc_fnc_randomize_pos; +private _city = selectRandom _useful; +private _pos = [getPos _city, 0, 500, 30, 0, 60 * (pi / 180), 0] call BIS_fnc_findSafePos; -_pos = [getPos _city, 0, 500, 30, 0, 60 * (pi / 180), 0] call BIS_fnc_findSafePos; btc_side_aborted = false; btc_side_done = false; btc_side_failed = false; btc_side_assigned = true;publicVariable "btc_side_assigned"; -[4,_pos,_city getVariable "name"] call btc_fnc_task_create; +[4, _pos, _city getVariable "name"] remoteExec ["btc_fnc_task_create", 0]; + +btc_side_jip_data = [4, _pos, _city getVariable "name"]; -btc_side_jip_data = [4,_pos,_city getVariable "name"]; +private _distance_between_fences = 8.1; +private _number_of_fences = 3 + floor random 4; +private _area_size = _distance_between_fences * _number_of_fences; +private _offset = _area_size + _distance_between_fences/2; -_area = createmarker [format ["sm_%1",_pos],_pos]; +private _area = createmarker [format ["sm_%1", _pos], _pos]; _area setMarkerShape "RECTANGLE"; _area setMarkerBrush "SolidBorder"; -_area setMarkerSize [60, 60]; +_area setMarkerSize [_offset, _offset]; _area setMarkerAlpha 0.3; _area setmarkercolor "colorBlue"; -_marker = createmarker [format ["sm_2_%1",_pos],_pos]; +private _marker = createmarker [format ["sm_2_%1", _pos], _pos]; _marker setmarkertype "hd_flag"; -_marker setmarkertext "Mines"; +[_marker, "STR_BTC_HAM_SIDE_MINES_MRK"] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker]; //Mines _marker setMarkerSize [0.6, 0.6]; -_mines = []; +//// Randomise composition \\\\ +private _cone = selectRandom btc_type_cones; +private _fences = + btc_type_fences; +_fences pushBack _cone; +private _fence = selectRandom _fences; + +private _offset_door = - 60 + _offset; +private _composition_pattern = [ + [selectRandom btc_type_bloods,81,[56.0991 + _offset_door,5.71729,0]], + [_cone,0,[60.3545 + _offset_door,5.86768,0]], + [_cone,0,[60.3755 + _offset_door,9.47217,0]], + [selectRandom btc_type_portable_light,101,[61.1982 + _offset_door,3.28906,0]], + [selectRandom btc_type_portable_light,37,[60.7373 + _offset_door,11.856,0]], + [selectRandom btc_type_bloods,131,[61.9722 + _offset_door,5.49609,0]], + [selectRandom btc_type_body_bags,332,[62.4473 + _offset_door,0.76416,0]], + [selectRandom btc_type_bloods,94,[62.3799 + _offset_door,8.66309,0]], + [selectRandom btc_type_bloods,0,[65.3276 + _offset_door,1.97803,0]], + [selectRandom btc_type_medicals,0,[65.4448 + _offset_door,1.52734,0]], + [selectRandom btc_type_first_aid_kits,0,[65.6187 + _offset_door,0.109863,0]], + [selectRandom btc_type_power,223,[63.9292 + _offset_door,14.8687,0]], + [selectRandom (btc_type_barrel + btc_type_canister),0,[66.4707 + _offset_door,0.0717773,0]] +]; + +for "_i" from -_number_of_fences to _number_of_fences do { + _composition_pattern append [ + [_fence, 0, [_i * _distance_between_fences, -_offset, 0]], + [_fence, 0, [_i * _distance_between_fences, _offset, 0]], + [_fence, 90, [ -_offset, _i * _distance_between_fences, 0]] + ]; + if !(_i isEqualTo 1) then { + _composition_pattern pushBack [_fence, 90, [ _offset, _i * _distance_between_fences, 0]]; + }; + + if (random 1 > 0.7) then { + _composition_pattern append [ + [selectRandom btc_type_signs, 180, [_i * _distance_between_fences, _offset - 1, 0]], + [selectRandom btc_type_signs, 0, [_i * _distance_between_fences, -_offset + 1, 0]], + [selectRandom btc_type_signs, 270, [ _offset - 1, _i * _distance_between_fences, 0]], + [selectRandom btc_type_signs, 90, [ -_offset + 1, _i * _distance_between_fences, 0]] + ]; + }; +}; + +private _composition_objects = [_pos, selectRandom [0, 90, 180, 270], _composition_pattern] call btc_fnc_create_composition; +private _mines = []; for "_i" from 1 to (5 + round random 5) do { - private ["_type","_m_pos"]; - _type = "ATMine"; - if (random 1 > 0.6) then {_type = selectRandom btc_type_mines;}; - _m_pos = [_pos, 50] call btc_fnc_randomize_pos; - _m = createMine [_type, _m_pos, [], 0]; - _mines pushBack _m; + private _type = "ATMine"; + if (random 1 > 0.6) then {_type = selectRandom btc_type_mines;}; + private _m_pos = [_pos, _area_size - 10] call btc_fnc_randomize_pos; + _mines pushBack createMine [_type, _m_pos, [], 0]; + + if (random 1 > 0.8) then { + _m_pos = [_pos, _area_size - 10] call btc_fnc_randomize_pos; + private _s = createVehicle [selectRandom btc_type_signs, _m_pos, [], 10, "CAN_COLLIDE"]; + _s setDir random 360; + _composition_objects pushBack _s; + }; }; -waitUntil {sleep 5; (btc_side_aborted || btc_side_failed || ({_x distance _pos < 200} count playableUnits > 0))}; +waitUntil {sleep 5; (btc_side_aborted || btc_side_failed || ({_x distance _pos < 100} count playableUnits > 0))}; -_closest = [_city,btc_city_all select {!(_x getVariable ["active",false])},false] call btc_fnc_find_closecity; +private _closest = [_city,btc_city_all select {!(_x getVariable ["active",false])}, false] call btc_fnc_find_closecity; for "_i" from 1 to (round random 2) do { - [_closest,_pos,1,selectRandom btc_type_motorized] spawn btc_fnc_mil_send; + [_closest, _pos, 1, selectRandom btc_type_motorized] spawn btc_fnc_mil_send; }; waitUntil {sleep 5; (btc_side_aborted || btc_side_failed || ({!isNull _x} count _mines == 0))}; btc_side_assigned = false;publicVariable "btc_side_assigned"; if (btc_side_aborted || btc_side_failed) exitWith { - 4 remoteExec ["btc_fnc_task_fail", 0]; - [[_area,_marker], _mines, [], []] call btc_fnc_delete; + 4 remoteExec ["btc_fnc_task_fail", 0]; + [[_area,_marker], _mines + _composition_objects, [], []] call btc_fnc_delete; }; 30 call btc_fnc_rep_change; 4 remoteExec ["btc_fnc_task_set_done", 0]; -[[_area,_marker], [], [], []] call btc_fnc_delete; \ No newline at end of file +[[_area,_marker], _composition_objects, [], []] call btc_fnc_delete; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/rescue.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/rescue.sqf index 29e50b9ab..4447da70d 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/rescue.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/rescue.sqf @@ -12,9 +12,9 @@ _city = selectRandom _useful; _pos = [getPos _city, (((_city getVariable ["RadiusX",0]) + (_city getVariable ["RadiusY",0]))/2) - 100] call btc_fnc_randomize_pos; _random_area = 50; for "_i" from 0 to 4 do { - _return_pos = [_pos, 0, _random_area, 13, 0, 60 * (pi / 180), 0] call BIS_fnc_findSafePos; - if (count _return_pos == 2) exitWith {_return_pos = [_return_pos select 0, _return_pos select 1, 0];}; - _random_area = _random_area * 1.5; + _return_pos = [_pos, 0, _random_area, 13, 0, 60 * (pi / 180), 0] call BIS_fnc_findSafePos; + if (count _return_pos == 2) exitWith {_return_pos = [_return_pos select 0, _return_pos select 1, 0];}; + _random_area = _random_area * 1.5; }; _pos = _return_pos; @@ -23,7 +23,7 @@ btc_side_done = false; btc_side_failed = false; btc_side_assigned = true;publicVariable "btc_side_assigned"; -[13,_pos,_city getVariable "name"] call btc_fnc_task_create; +[13,_pos,_city getVariable "name"] remoteExec ["btc_fnc_task_create", 0]; btc_side_jip_data = [13,getPos _city,_city getVariable "name"]; @@ -49,20 +49,20 @@ getText(configfile >> "CfgVehicles" >> _heli_type >> "crew") createUnit [_pos, _ _units = []; _triggers = []; { - _x setCaptive true; - removeAllWeapons _x; - _x setBehaviour "CARELESS"; - _x setDir (random 360); - _x setUnitPos "DOWN"; - _units pushBack _x; - //// Create trigger \\\\ - _trigger = createTrigger["EmptyDetector",getPos _city]; - _trigger setVariable ["unit", _x]; - _trigger setTriggerArea[50,50,0,false]; - _trigger setTriggerActivation[str(btc_player_side),"PRESENT",false]; - _trigger setTriggerStatements["this", "_unit = thisTrigger getVariable 'unit'; [_unit] join (thisList select 0); _unit setUnitPos 'UP';", ""]; - _trigger attachTo [_x,[0,0,0]]; - _triggers pushBack _trigger; + _x setCaptive true; + removeAllWeapons _x; + _x setBehaviour "CARELESS"; + _x setDir (random 360); + _x setUnitPos "DOWN"; + _units pushBack _x; + //// Create trigger \\\\ + _trigger = createTrigger["EmptyDetector",getPos _city]; + _trigger setVariable ["unit", _x]; + _trigger setTriggerArea[50,50,0,false]; + _trigger setTriggerActivation[str(btc_player_side),"PRESENT",false]; + _trigger setTriggerStatements["this", "_unit = thisTrigger getVariable 'unit'; [_unit] join (thisList select 0); _unit setUnitPos 'UP';", ""]; + _trigger attachTo [_x,[0,0,0]]; + _triggers pushBack _trigger; } foreach units _group; waitUntil {sleep 5; (btc_side_aborted || btc_side_failed || ({_x distance getpos btc_create_object_point > 100} count _units isEqualTo 0) || ({Alive _x} count _units isEqualTo 0))}; @@ -71,7 +71,7 @@ btc_side_assigned = false;publicVariable "btc_side_assigned"; [[], [_heli] + _triggers, [_fx], [_group]] call btc_fnc_delete; if (btc_side_aborted || btc_side_failed || ({Alive _x} count _units isEqualTo 0)) exitWith { - 13 remoteExec ["btc_fnc_task_fail", 0]; + 13 remoteExec ["btc_fnc_task_fail", 0]; }; 50 call btc_fnc_rep_change; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/supply.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/supply.sqf index ba74a1b4a..6cbd4a021 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/supply.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/supply.sqf @@ -15,7 +15,7 @@ btc_side_done = false; btc_side_failed = false; btc_side_assigned = true;publicVariable "btc_side_assigned"; -[3,_pos,_city getVariable "name"] call btc_fnc_task_create; +[3,_pos,_city getVariable "name"] remoteExec ["btc_fnc_task_create", 0]; btc_side_jip_data = [3,_pos,_city getVariable "name"]; @@ -28,7 +28,7 @@ _area setmarkercolor "colorBlue"; _marker = createmarker [format ["sm_2_%1",_pos],_pos]; _marker setmarkertype "hd_flag"; -_marker setmarkertext "Supplies"; +[_marker,"STR_BTC_HAM_SIDE_SUPPLIES_MRK"] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker]; //Supplies _marker setMarkerSize [0.6, 0.6]; waitUntil {sleep 5; (btc_side_aborted || btc_side_failed || count (nearestObjects [_pos, [btc_supplies_mat], 30]) > 0)}; @@ -36,12 +36,12 @@ waitUntil {sleep 5; (btc_side_aborted || btc_side_failed || count (nearestObject btc_side_assigned = false;publicVariable "btc_side_assigned"; if (btc_side_aborted || btc_side_failed) exitWith { - 3 remoteExec ["btc_fnc_task_fail", 0]; - [[_area,_marker], [], [], []] call btc_fnc_delete; + 3 remoteExec ["btc_fnc_task_fail", 0]; + [[_area,_marker], [], [], []] call btc_fnc_delete; }; 50 call btc_fnc_rep_change; 3 remoteExec ["btc_fnc_task_set_done", 0]; -[[_area,_marker], [(nearestObjects [_pos, [btc_supplies_mat], 30]) select 0], [], []] call btc_fnc_delete; \ No newline at end of file +[[_area,_marker], [(nearestObjects [_pos, [btc_supplies_mat], 30]) select 0], [], []] call btc_fnc_delete; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/tower.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/tower.sqf index dfd85c2c9..1edfe8a7d 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/tower.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/tower.sqf @@ -21,7 +21,7 @@ btc_side_done = false; btc_side_failed = false; btc_side_assigned = true;publicVariable "btc_side_assigned"; -[7,_pos,_city getVariable "name"] call btc_fnc_task_create; +[7,_pos,_city getVariable "name"] remoteExec ["btc_fnc_task_create", 0]; btc_side_jip_data = [7,_pos,_city getVariable "name"]; @@ -36,7 +36,7 @@ _area setmarkercolor "colorBlue"; _marker = createmarker [format ["sm_2_%1",_pos],_pos]; _marker setmarkertype "hd_flag"; -_marker setmarkertext "Radio Tower"; +[_marker,"STR_BTC_HAM_SIDE_TOWER_MRK"] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker]; //Radio Tower _marker setMarkerSize [0.6, 0.6]; //// Randomise composition \\\\ @@ -44,9 +44,9 @@ _tower_type = selectRandom btc_type_tower; _power_type = selectRandom btc_type_power; _cord_type = selectRandom btc_type_cord; _btc_composition_tower = [ - [_tower_type,0,[0,0,0]], - [_cord_type,63,[-1.30664,0.939453,0]], - [_power_type,24,[-4.56885,-0.231445,0]] + [_tower_type,0,[0,0,0]], + [_cord_type,63,[-1.30664,0.939453,0]], + [_power_type,24,[-4.56885,-0.231445,0]] ]; //// Create tower with static at _pos \\\\ @@ -63,9 +63,9 @@ btc_side_assigned = false;publicVariable "btc_side_assigned"; [[_area,_marker], _btc_composition, [], []] call btc_fnc_delete; if (btc_side_aborted || btc_side_failed ) exitWith { - 7 remoteExec ["btc_fnc_task_fail", 0]; + 7 remoteExec ["btc_fnc_task_fail", 0]; }; 80 call btc_fnc_rep_change; -7 remoteExec ["btc_fnc_task_set_done", 0]; \ No newline at end of file +7 remoteExec ["btc_fnc_task_set_done", 0]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/underwater_generator.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/underwater_generator.sqf index 9d3a83468..5822cdc3e 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/underwater_generator.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/underwater_generator.sqf @@ -15,14 +15,14 @@ _objects = _objects select {((getPos _x select 2 < -3) && (((str(_x) find "car") _wrecks = _objects select {((str(_x) find "rock") isEqualTo -1)}; if (_wrecks isEqualTo []) then { - if (_objects isEqualTo []) then { - _pos = [getPos _city, 0, 100, 13, 2, 60 * (pi / 180), 0] call BIS_fnc_findSafePos; - _pos = [_pos select 0, _pos select 1, (getTerrainHeightASL [_pos select 0, _pos select 1])]; - } else { - _pos = getpos (selectRandom _objects); - }; + if (_objects isEqualTo []) then { + _pos = [getPos _city, 0, 100, 13, 2, 60 * (pi / 180), 0] call BIS_fnc_findSafePos; + _pos = [_pos select 0, _pos select 1, (getTerrainHeightASL [_pos select 0, _pos select 1])]; + } else { + _pos = getpos (selectRandom _objects); + }; } else { - _pos = getpos (selectRandom _wrecks); + _pos = getpos (selectRandom _wrecks); }; btc_side_aborted = false; @@ -30,7 +30,7 @@ btc_side_done = false; btc_side_failed = false; btc_side_assigned = true;publicVariable "btc_side_assigned"; -[11,_pos,_city getVariable "name"] call btc_fnc_task_create; +[11,_pos,_city getVariable "name"] remoteExec ["btc_fnc_task_create", 0]; btc_side_jip_data = [11,_pos,_city getVariable "name"]; @@ -46,7 +46,7 @@ _area setmarkercolor "colorBlue"; _marker = createmarker [format ["sm_2_%1",_pos],_pos]; _marker setmarkertype "hd_flag"; -_marker setmarkertext "Generator"; +[_marker,"STR_BTC_HAM_SIDE_UNDERWATER_MRK"] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker]; //Generator _marker setMarkerSize [0.6, 0.6]; @@ -58,7 +58,7 @@ _group = [_pos,8, 1 + round random 5,0.8] call btc_fnc_mil_create_group; [_pos,20, 2 + round random 4,0.5] call btc_fnc_mil_create_group; _pos = getPosASL _generator; -leader _group setPosASL [_pos select 0, _pos select 1, (_pos select 2) + 1 + random 1]; +(leader (_group select 0)) setPosASL [_pos select 0, _pos select 1, (_pos select 2) + 1 + random 1]; waitUntil {sleep 5; (btc_side_aborted || btc_side_failed || !Alive _generator )}; @@ -66,9 +66,9 @@ waitUntil {sleep 5; (btc_side_aborted || btc_side_failed || !Alive _generator )} btc_side_assigned = false;publicVariable "btc_side_assigned"; if (btc_side_aborted || btc_side_failed ) exitWith { - 11 remoteExec ["btc_fnc_task_fail", 0]; + 11 remoteExec ["btc_fnc_task_fail", 0]; }; 80 call btc_fnc_rep_change; -11 remoteExec ["btc_fnc_task_set_done", 0]; \ No newline at end of file +11 remoteExec ["btc_fnc_task_set_done", 0]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/vehicle.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/vehicle.sqf index b1bdf49d2..0f3060af4 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/vehicle.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/side/vehicle.sqf @@ -16,7 +16,7 @@ btc_side_done = false; btc_side_failed = false; btc_side_assigned = true;publicVariable "btc_side_assigned"; -[5,_pos,_city getVariable "name"] call btc_fnc_task_create; +[5,_pos,_city getVariable "name"] remoteExec ["btc_fnc_task_create", 0]; btc_side_jip_data = [5,_pos,_city getVariable "name"]; @@ -29,7 +29,7 @@ _area setmarkercolor "colorBlue"; _marker = createmarker [format ["sm_2_%1",_pos],_pos]; _marker setmarkertype "hd_flag"; -_marker setmarkertext "Vehicle needs assistance"; +[_marker,"STR_BTC_HAM_SIDE_VEHICLE_MRK"] remoteExec ["btc_fnc_set_markerTextLocal", [0, -2] select isDedicated, _marker]; // Vehicle needs assistance _marker setMarkerSize [0.6, 0.6]; _veh_type = selectRandom btc_civ_type_veh; @@ -47,9 +47,9 @@ btc_side_assigned = false;publicVariable "btc_side_assigned"; [[_area,_marker], [_veh], [], []] call btc_fnc_delete; if (btc_side_aborted || btc_side_failed || !Alive _veh) exitWith { - 5 remoteExec ["btc_fnc_task_fail", 0]; + 5 remoteExec ["btc_fnc_task_fail", 0]; }; 15 call btc_fnc_rep_change; -5 remoteExec ["btc_fnc_task_set_done", 0]; \ No newline at end of file +5 remoteExec ["btc_fnc_task_set_done", 0]; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/create.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/create.sqf index ff9485ed0..1d8cf3e0d 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/create.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/create.sqf @@ -1,105 +1,88 @@ -if (!isServer) exitWith {["task" + ([_this select 0] call BIS_fnc_taskState) + "Icon",[[[_this select 0] call BIS_fnc_taskType] call bis_fnc_taskTypeIcon, ([_this select 0] call BIS_fnc_taskDescription) select 1 select 0]] call bis_fnc_showNotification;}; +params ["_task_id", ["_destination", objNull], ["_location", ""]]; -private ["_location","_destination","_description","_type"]; +if !( _task_id isEqualType "") then {_task_id = str(_task_id);}; -if ((typeName (_this select 0)) isEqualTo "STRING") exitWith {}; +private ["_description","_type"]; -if (count _this > 1) then { - _destination = _this select 1; - _location = _this select 2; -} else { - _destination = objNull; - _location = ""; +switch (_task_id) do { + case "0" : { + _description = [(localize "STR_BTC_HAM_MISSION_DEFEAT_DESC"),(localize "STR_BTC_HAM_MISSION_DEFEAT_TITLE"),(localize "STR_BTC_HAM_MISSION_DEFEAT_TITLE")]; //"Defeat the Oplitas once and for all","Defeat the Oplitas","Defeat the Oplitas" + _type = "kill"; + }; + case "1" : { + _description = [(localize "STR_BTC_HAM_MISSION_DESTORY_DESC"),(localize "STR_BTC_HAM_MISSION_DESTORY_TITLE"),(localize "STR_BTC_HAM_MISSION_DESTORY_TITLE")]; //"Destroy all the hideouts of the Oplitas","Destroy all the hideouts","Destroy all the hideouts" + _type = "destroy"; + }; + case "2" : { + _description = [(localize "STR_BTC_HAM_MISSION_SEIZE_DESC"),(localize "STR_BTC_HAM_MISSION_SEIZE_TITLE"),(localize "STR_BTC_HAM_MISSION_SEIZE_MRK")]; //"Seize the last positions held by Oplitas fighters","Seize the last Oplitas positions","Seize the last Oplitas fighters positions" + _type = "move"; + }; + case "3" : { + _description = [format [(localize "STR_BTC_HAM_SIDE_SUPPLIES_DESC"),_location],(format [(localize "STR_BTC_HAM_SIDE_SUPPLIES_TITLE"),_location]),(format [(localize "STR_BTC_HAM_SIDE_SUPPLIES_TITLE"),_location])]; //The citizens of %1 are on the brink starving to death, bring them some supplies present at the logisitic point!",_location],("Supply " + _location),("Supply " + _location) + _type = "container"; + }; + case "4" : { + _description = [format [(localize "STR_BTC_HAM_SIDE_MINES_DESC"),_location],(format [(localize "STR_BTC_HAM_SIDE_MINES_TITLE"),_location]),(format [(localize "STR_BTC_HAM_SIDE_MINES_TITLE"),_location])]; //There is a minefield near %1, clear it!",_location],("Minefield near " + _location),("Minefield near " + _location) + _type = "mine"; + }; + case "5" : { + _description = [format [(localize "STR_BTC_HAM_SIDE_VEHICLE_DESC"),_location],(format [(localize "STR_BTC_HAM_SIDE_VEHICLE_TITLE"),_location]),(format [(localize "STR_BTC_HAM_SIDE_VEHICLE_TITLE"),_location])]; //"A vehicle damaged by an IED needs assistance near %1! Repair it!",_location],("Vehicle needs assistance near " + _location),("Vehicle needs assistance near " + _location) + _type = "repair"; + }; + case "6" : { + _description = [format [(localize "STR_BTC_HAM_SIDE_CONQUER_DESC"),_location],(format [(localize "STR_BTC_HAM_SIDE_CONQUER_TITLE"),_location]),(format [(localize "STR_BTC_HAM_SIDE_CONQUER_TITLE"),_location])]; //"%1 has been conquered by the Oplitas! Local population is being terrorized, they are asking for help!",_location],("Free " + _location),("Free " + _location) + _type = "attack"; + }; + case "7" : { + _description = [format [(localize "STR_BTC_HAM_SIDE_TOWER_DESC"),_location],(format [(localize "STR_BTC_HAM_SIDE_TOWER_TITLE"),_location]),(format [(localize "STR_BTC_HAM_SIDE_TOWER_TITLE"),_location])]; //"A Oplitas communications tower has been located in %1. Local population is asking for your help to destroy it! (Use one M183 explosive satchel)",_location],("Destroy tower in " + _location),("Destroy tower in " + _location) + _type = "destroy"; + }; + case "8" : { + _description = [format [(localize "STR_BTC_HAM_SIDE_CIVTREAT_DESC"),_location],(format [(localize "STR_BTC_HAM_SIDE_CIVTREAT_TITLE"),_location]),(format [(localize "STR_BTC_HAM_SIDE_CIVTREAT_TITLE"),_location])]; //format ["A civilian is calling for a medic in %1, treat and wait for patient stabilization ",_location],("Medical emergency call in " + _location),("Medical emergency call in " + _location) + _type = "heal"; + }; + case "9" : { + _description = [format [(localize "STR_BTC_HAM_SIDE_CHECKPOINT_DESC"),_location],(format [(localize "STR_BTC_HAM_SIDE_CHECKPOINT_TITLE"),_location]),(format [(localize "STR_BTC_HAM_SIDE_CHECKPOINT_TITLE"),_location])]; //"Checkpoints have been located in %1. Local population is asking for your help to destroy ammo box in all checkpoints!",_location],("Destroy checkpoints in " + _location),("Destroy checkpoints in " + _location) + _type = "destroy"; + }; + case "10" : { + _description = [format [(localize "STR_BTC_HAM_SIDE_CIVTREATBOAT_DESC"),_location],(format [(localize "STR_BTC_HAM_SIDE_CIVTREATBOAT_TITLE"),_location]),(format [(localize "STR_BTC_HAM_SIDE_CIVTREATBOAT_TITLE"),_location])]; //"A civilian is calling for a medic in %1, treat and wait for patient stabilization ",_location],("Medical emergency call in " + _location),("Medical emergency call in " + _location) + _type = "heal"; + }; + case "11" : { + _description = [format [(localize "STR_BTC_HAM_SIDE_UNDERWATER_DESC"),_location],(format [(localize "STR_BTC_HAM_SIDE_UNDERWATER_TITLE"),_location]),(format [(localize "STR_BTC_HAM_SIDE_UNDERWATER_TITLE"),_location])]; //"Underwater generator has been located in %1. Local population is asking for your help to destroy it!",_location],("Destroy underwater generator in " + _location),("Destroy underwater generator in " + _location) + _type = "destroy"; + }; + case "12" : { + _description = [format [(localize "STR_BTC_HAM_SIDE_CONVOY_DESC"),_location],(format [(localize "STR_BTC_HAM_SIDE_CONVOY_TITLE"),_location]),(format [(localize "STR_BTC_HAM_SIDE_CONVOY_TITLE"),_location])]; //"An armed Oplitas convoy is going to attack %1. Local population is asking for your help to destroy it before it gets there!",_location],("Destroy Oplitas convoy attacking " + _location),("Destroy Oplitas convoy attacking " + _location) + _type = "attack"; + }; + case "13" : { + _description = [format [(localize "STR_BTC_HAM_SIDE_RESC_DESC"),_location],(format [(localize "STR_BTC_HAM_SIDE_RESC_TITLE"),_location]),(format [(localize "STR_BTC_HAM_SIDE_RESC_TITLE"),_location])]; //"MAYDAY-MAYDAY, a pilot crashed his helicopter near %1. Command is asking for your help to rescue and bring him back to base!",_location],("Rescue downed pilot near " + _location),("Rescue downed pilot near " + _location) + _type = "heli"; + }; + case "14" : { + _description = [format [(localize "STR_BTC_HAM_SIDE_CAPOFF_DESC"),_location],((localize "STR_BTC_HAM_SIDE_CAPOFF_TITLE")),((localize "STR_BTC_HAM_SIDE_CAPOFF_TITLE"))]; //"Capture an officer travelling in a concealed convoy, then bring him at base for interrogation. He is his responsible for terrorizing local population!",_location],("Capture commander in concealed convoy"),("Capture commander in concealed convoy") + _type = "run"; + }; + case "15" : { + _description = [format [(localize "STR_BTC_HAM_SIDE_HOSTAGE_DESC"),_location],(format [(localize "STR_BTC_HAM_SIDE_HOSTAGE_TITLE"),_location]),(format [(localize "STR_BTC_HAM_SIDE_HOSTAGE_TITLE"),_location])]; //"Liberate a civilian hostage in %1. Local population is asking for your help!",_location],("Liberate hostage near " + _location),("Liberate hostage near " + _location) + _type = "exit"; + }; + case "16" : { + _description = [format [(localize "STR_BTC_HAM_SIDE_HACK_DESC"),_location],(format [(localize "STR_BTC_HAM_SIDE_HACK_TITLE"),_location]),(format [(localize "STR_BTC_HAM_SIDE_HACK_TITLE"),_location])]; //"Hack a prototype missile with a terminal available in %1. Defend your position until the process is done!",_location],("Hack missile near " + _location),("Hack missile near " + _location) + _type = "defend"; + }; }; -switch (_this select 0) do -{ - case 0 : - { - _description = ["Defeat the Oplitas once and for all","Defeat the Oplitas","Defeat the Oplitas"]; - _type = "kill"; - }; - case 1 : - { - _description = ["Destroy all the hideouts of the Oplitas","Destroy all the hideouts","Destroy all the hideouts"]; - _type = "destroy"; - }; - case 2 : - { - _description = ["Seize the last positions held by Oplitas fighters","Seize the last Oplitas positions","Seize the last Oplitas fighters positions"]; - _type = "move"; - }; - case 3 : - { - _description = [format ["The citizens of %1 are on the brink starving to death, bring them some supplies present at the logisitic point!",_location],("Supply " + _location),("Supply " + _location)]; - _type = "move"; - }; - case 4 : - { - _description = [format ["There is a minefield near %1, clear it!",_location],("Minefield near " + _location),("Minefield near " + _location)]; - _type = "search"; - }; - case 5 : - { - _description = [format ["A vehicle damaged by an IED needs assistance near %1! Repair it!",_location],("Vehicle needs assistance near " + _location),("Vehicle needs assistance near " + _location)]; - _type = "repair"; - }; - case 6 : - { - _description = [format ["%1 has been conquered by the Oplitas! Local population is being terrorized, they are asking for help!",_location],("Free " + _location),("Free " + _location)]; - _type = "attack"; - }; - case 7 : - { - _description = [format ["A Oplitas communications tower has been located in %1. Local population is asking for your help to destroy it! (Use one M183 explosive satchel)",_location],("Destroy tower in " + _location),("Destroy tower in " + _location)]; - _type = "destroy"; - }; - case 8 : - { - _description = [format ["A civilian is calling for a medic in %1, treat and wait for patient stabilization ",_location],("Medical emergency call in " + _location),("Medical emergency call in " + _location)]; - _type = "heal"; - }; - case 9 : - { - _description = [format ["Checkpoints have been located in %1. Local population is asking for your help to destroy ammo box in all checkpoints!",_location],("Destroy checkpoints in " + _location),("Destroy checkpoints in " + _location)]; - _type = "destroy"; - }; - case 10 : - { - _description = [format ["A civilian is calling for a medic in %1, treat and wait for patient stabilization ",_location],("Medical emergency call in " + _location),("Medical emergency call in " + _location)]; - _type = "heal"; - }; - case 11 : - { - _description = [format ["Underwater generator has been located in %1. Local population is asking for your help to destroy it!",_location],("Destroy underwater generator in " + _location),("Destroy underwater generator in " + _location)]; - _type = "destroy"; - }; - case 12 : - { - _description = [format ["An armed Oplitas convoy is going to attack %1. Local population is asking for your help to destroy it before it gets there!",_location],("Destroy Oplitas convoy attacking " + _location),("Destroy Oplitas convoy attacking " + _location)]; - _type = "attack"; - }; - case 13 : - { - _description = [format ["MAYDAY-MAYDAY, a pilot crashed his helicopter near %1. Command is asking for your help to rescue and bring him back to base!",_location],("Rescue downed pilot near " + _location),("Rescue downed pilot near " + _location)]; - _type = "navigate"; - }; - case 14 : - { - _description = [format ["Capture an officer travelling in a concealed convoy, then bring him at base for interrogation. He is his responsible for terrorizing local population!",_location],("Capture commander in concealed convoy"),("Capture commander in concealed convoy")]; - _type = "run"; - }; - case 15 : - { - _description = [format ["Liberate a civilian hostage in %1. Local population is asking for your help!",_location],("Liberate hostage near " + _location),("Liberate hostage near " + _location)]; - _type = "exit"; - }; - case 16 : - { - _description = [format ["Hack a prototype missile with a terminal available in %1. Defend your position until the process is done!",_location],("Hack missile near " + _location),("Hack missile near " + _location)]; - _type = "intel"; - }; +if (!isServer) exitWith { + [[_task_id], btc_player_side, _description, _destination, true, 2, false, false] spawn { + + waitUntil {(_this select 0) call BIS_fnc_taskState isEqualTo "ASSIGNED";}; + _this call BIS_fnc_setTask; + (_this select 0) call BIS_fnc_taskHint; + }; }; -[btc_player_side,[str(_this select 0)],_description,_destination,true,2,true,_type,true] call BIS_fnc_taskCreate; \ No newline at end of file +[btc_player_side,[_task_id],_description,_destination,true,2,false,_type,false] call BIS_fnc_taskCreate; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/fail.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/fail.sqf index 7e611b122..fabb34a78 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/fail.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/fail.sqf @@ -5,61 +5,47 @@ private ["_description"]; switch _this do { - case 3 : - { - _description = ["Side mission failed!","Supplies were not delivered"]; - }; - case 4 : - { - _description = ["Side mission failed!","The minefield was not cleared"]; - }; - case 5 : - { - _description = ["Side mission failed!","The vehicle was not repaired"]; - }; - case 6 : - { - _description = ["Side mission failed!","The city was not conquered"]; - }; - case 7 : - { - _description = ["Side mission failed!","The tower was not destroyed"]; - }; - case 8 : - { - _description = ["Side mission failed!","The patient was not stabilized"]; - }; - case 9 : - { - _description = ["Side mission failed!","Checkpoints were not destroyed"]; - }; - case 10 : - { - _description = ["Side mission failed!","The patient was not stabilized"]; - }; - case 11 : - { - _description = ["Side mission failed!","The underwater generator was not destroyed"]; - }; - case 12 : - { - _description = ["Side mission failed!","The armed convoy was not destroyed"]; - }; - case 13 : - { - _description = ["Side mission failed!","The pilot was not rescued"]; - }; - case 14 : - { - _description = ["Side mission failed!","The officer was not captured"]; - }; - case 15 : - { - _description = ["Side mission failed!","The hostage was not liberated"]; - }; - case 16 : - { - _description = ["Side mission failed!","The missile was not hacked"]; - }; + case 3 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_LOSE_TITLE"),(localize "STR_BTC_HAM_SIDE_SUPPLIES_FAILED_TEXT")]; //"Side mission failed!","Supplies were not delivered" + }; + case 4 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_LOSE_TITLE"),(localize "STR_BTC_HAM_SIDE_MINES_FAILED_TEXT")]; //"Side mission failed!","The minefield was not cleared" + }; + case 5 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_LOSE_TITLE"),(localize "STR_BTC_HAM_SIDE_VEHICLE_FAILED_TEXT")]; //"Side mission failed!","The vehicle was not repaired" + }; + case 6 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_LOSE_TITLE"),(localize "STR_BTC_HAM_SIDE_CONQUER_FAILED_TEXT")]; //"Side mission failed!","The city was not conquered" + }; + case 7 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_LOSE_TITLE"),(localize "STR_BTC_HAM_SIDE_TOWER_FAILED_TEXT")]; //"Side mission failed!","The tower was not destroyed" + }; + case 8 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_LOSE_TITLE"),(localize "STR_BTC_HAM_SIDE_CIVTREAT_FAILED_TEXT")]; //"Side mission failed!","The patient was not stabilized" + }; + case 9 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_LOSE_TITLE"),(localize "STR_BTC_HAM_SIDE_CHECKPOINT_FAILED_TEXT")]; //"Side mission failed!","Checkpoints were not destroyed" + }; + case 10 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_LOSE_TITLE"),(localize "STR_BTC_HAM_SIDE_CIVTREATBOAT_FAILED_TEXT")]; //"Side mission failed!","The patient was not stabilized" + }; + case 11 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_LOSE_TITLE"),(localize "STR_BTC_HAM_SIDE_UNDERWATER_FAILED_TEXT")]; //"Side mission failed!","The underwater generator was not destroyed" + }; + case 12 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_LOSE_TITLE"),(localize "STR_BTC_HAM_SIDE_CONVOY_FAILED_TEXT")]; //"Side mission failed!","The armed convoy was not destroyed" + }; + case 13 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_LOSE_TITLE"),(localize "STR_BTC_HAM_SIDE_RESC_FAILED_TEXT")]; //"Side mission failed!","The pilot was not rescued" + }; + case 14 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_LOSE_TITLE"),(localize "STR_BTC_HAM_SIDE_CAPOFF_FAILED_TEXT")]; //"Side mission failed!","The officer was not captured" + }; + case 15 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_LOSE_TITLE"),(localize "STR_BTC_HAM_SIDE_HOSTAGE_FAILED_TEXT")]; //"Side mission failed!","The hostage was not liberated" + }; + case 16 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_LOSE_TITLE"),(localize "STR_BTC_HAM_SIDE_HACK_FAILED_TEXT")]; //"Side mission failed!","The missile was not hacked" + }; }; -["task" + "FAILED" + "Icon",[[[str(_this)] call BIS_fnc_taskType] call bis_fnc_taskTypeIcon, _description select 1]] call bis_fnc_showNotification; \ No newline at end of file +["task" + "FAILED" + "Icon",[[[str(_this)] call BIS_fnc_taskType] call bis_fnc_taskTypeIcon, _description select 1]] call bis_fnc_showNotification; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/set_done.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/set_done.sqf index 5ffd434f2..9c3d13004 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/set_done.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/set_done.sqf @@ -1,63 +1,63 @@ if (isServer) exitWith { - [str(_this), "SUCCEEDED",false] spawn BIS_fnc_taskSetState; - if (_this isEqualTo 1) then {[2] call btc_fnc_task_create}; + [str(_this), "SUCCEEDED",false] spawn BIS_fnc_taskSetState; + if (_this isEqualTo 1) then {[2] remoteExec ["btc_fnc_task_create", 0]}; }; private ["_description"]; switch _this do { - case 0 : { - _description = ["Mission accomplished!","Oplitas have been finally defeated! Mission accomplished!"]; - }; - case 1 : { - _description = ["Mission accomplished!","All the hideouts have been destroyed!"]; - }; - case 2 : { - _description = ["Mission accomplished!","Oplitas have been finally defeated! Mission accomplished!"]; - }; - case 3 : { - _description = ["Side mission Accomplished!","Supplies have been delivered"]; - }; - case 4 : { - _description = ["Side mission Accomplished!","The minefield has been cleared"]; - }; - case 5 : { - _description = ["Side mission Accomplished!","The vehicle has been repaired"]; - }; - case 6 : { - _description = ["Side mission Accomplished!","The city has been cleared!"]; - }; - case 7 : { - _description = ["Side mission Accomplished!","The tower has been destroyed!"]; - }; - case 8 : { - _description = ["Side mission Accomplished!","The civilian has been stabilized!"]; - }; - case 9 : { - _description = ["Side mission Accomplished!","Checkpoints have been destroyed!"]; - }; - case 10 : { - _description = ["Side mission Accomplished!","The civilian has been stabilized!"]; - }; - case 11 : { - _description = ["Side mission Accomplished!","The underwater generator has been destroyed!"]; - }; - case 12 : { - _description = ["Side mission Accomplished!","The armed convoy has been destroyed!"]; - }; - case 13 : { - _description = ["Side mission Accomplished!","The pilot has been rescued!"]; - }; - case 14 : { - _description = ["Side mission Accomplished!","The officer has been captured!"]; - }; - case 15 : { - _description = ["Side mission Accomplished!","The hostage has been liberated!"]; - }; - case 16 : { - _description = ["Side mission Accomplished!","The missile has been hacked!"]; - }; + case 0 : { + _description = [(localize "STR_BTC_HAM_MISSION_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_MISSION_DEFEAT_WIN_TEXT")]; //"Mission accomplished!","Oplitas have been finally defeated! Mission accomplished!" + }; + case 1 : { + _description = [(localize "STR_BTC_HAM_MISSION_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_MISSION_DESTORY_WIN_TEXT")]; //"Mission accomplished!","All the hideouts have been destroyed!" + }; + case 2 : { + _description = [(localize "STR_BTC_HAM_MISSION_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_MISSION_DEFEAT_WIN_TEXT")]; //"Mission accomplished!","Oplitas have been finally defeated! Mission accomplished!" + }; + case 3 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_SIDE_SUPPLIES_WIN_TEXT")]; //"Side mission Accomplished!","Supplies have been delivered" + }; + case 4 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_SIDE_MINES_WIN_TEXT")]; //"Side mission Accomplished!","The minefield has been cleared" + }; + case 5 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_SIDE_VEHICLE_WIN_TEXT")]; //"Side mission Accomplished!","The vehicle has been repaired" + }; + case 6 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_SIDE_CONQUER_WIN_TEXT")]; //"Side mission Accomplished!","The city has been cleared!" + }; + case 7 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_SIDE_TOWER_WIN_TEXT")]; //"Side mission Accomplished!","The tower has been destroyed!" + }; + case 8 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_SIDE_CIVTREAT_WIN_TEXT")]; //"Side mission Accomplished!","The civilian has been stabilized!" + }; + case 9 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_SIDE_CHECKPOINT_WIN_TEXT")]; //"Side mission Accomplished!","Checkpoints have been destroyed!" + }; + case 10 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_SIDE_CIVTREATBOAT_WIN_TEXT")]; //"Side mission Accomplished!","The civilian has been stabilized!" + }; + case 11 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_SIDE_UNDERWATER_WIN_TEXT")]; //"Side mission Accomplished!","The underwater generator has been destroyed!" + }; + case 12 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_SIDE_CONVOY_WIN_TEXT")]; //"Side mission Accomplished!","The armed convoy has been destroyed!" + }; + case 13 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_SIDE_RESC_WIN_TEXT")]; //"Side mission Accomplished!","The pilot has been rescued!" + }; + case 14 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_SIDE_CAPOFF_WIN_TEXT")]; //"Side mission Accomplished!","The officer has been captured!" + }; + case 15 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_SIDE_HOSTAGE_WIN_TEXT")]; //"Side mission Accomplished!","The hostage has been liberated!" + }; + case 16 : { + _description = [(localize "STR_BTC_HAM_SIDE_BASIC_WIN_TITLE"),(localize "STR_BTC_HAM_SIDE_HACK_WIN_TEXT")]; //"Side mission Accomplished!","The missile has been hacked!" + }; }; -["task" + "SUCCEEDED" + "Icon",[[[str(_this)] call BIS_fnc_taskType] call bis_fnc_taskTypeIcon, _description select 1]] call bis_fnc_showNotification; \ No newline at end of file +["task" + "SUCCEEDED" + "Icon",[[[str(_this)] call BIS_fnc_taskType] call bis_fnc_taskTypeIcon, _description select 1]] call bis_fnc_showNotification; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/tasktypes.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/tasktypes.hpp index 262457e8a..76709ebf5 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/tasktypes.hpp +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/fnc/task/tasktypes.hpp @@ -1,32 +1,44 @@ class CfgTaskTypes { - class Heal { - icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\heal_ca.paa; - }; - class Kill { - icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\kill_ca.paa; - }; - class Destroy { - icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\destroy_ca.paa; - }; - class Move { - icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\move_ca.paa; - }; - class Search { - icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa; - }; - class Repair { - icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa; - }; - class Attack { - icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\attack_ca.paa; - }; - class Navigate { - icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\navigate_ca.paa; - }; - class Run { - icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa; - }; - class Exit { - icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\exit_ca.paa; - }; + class Heal { + icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\heal_ca.paa; + }; + class Kill { + icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\kill_ca.paa; + }; + class Destroy { + icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\destroy_ca.paa; + }; + class Move { + icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\move_ca.paa; + }; + class Search { + icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa; + }; + class Repair { + icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa; + }; + class Attack { + icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\attack_ca.paa; + }; + class Navigate { + icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\navigate_ca.paa; + }; + class Run { + icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa; + }; + class Exit { + icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\exit_ca.paa; + }; + class Container { + icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa; + }; + class Mine { + icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\mine_ca.paa; + }; + class Heli { + icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\heli_ca.paa; + }; + class Defend { + icon = \A3\ui_f\data\igui\cfg\simpleTasks\types\defend_ca.paa; + }; }; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/init_player.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/init_player.sqf index b4fb34eea..4f9890682 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/init_player.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/init_player.sqf @@ -1,37 +1,37 @@ -[] execVM "core\doc.sqf"; +call compile preprocessFile "core\doc.sqf"; -[] spawn { - waitUntil {!isNull player}; +[{!isNull player}, { - player addRating 9999; - btc_player_respawn = getPosASL player; - ["InitializePlayer", [player]] call BIS_fnc_dynamicGroups; + player addRating 9999; + btc_player_respawn = getPosASL player; + ["InitializePlayer", [player]] call BIS_fnc_dynamicGroups; - player addEventHandler ["Respawn", btc_fnc_eh_player_respawn]; - player addEventHandler ["CuratorObjectPlaced", btc_fnc_eh_CuratorObjectPlaced]; - ["ace_treatmentSucceded", btc_fnc_eh_treatment] call CBA_fnc_addEventHandler; + player addEventHandler ["Respawn", btc_fnc_eh_player_respawn]; + player addEventHandler ["CuratorObjectPlaced", btc_fnc_eh_CuratorObjectPlaced]; + ["ace_treatmentSucceded", btc_fnc_eh_treatment] call CBA_fnc_addEventHandler; + player addEventHandler ["WeaponAssembled", btc_fnc_civ_add_leaflets]; - call btc_fnc_int_add_actions; + call btc_fnc_int_add_actions; + call btc_fnc_int_shortcuts; - if (player getVariable ["interpreter", false]) then {player createDiarySubject ["Diary log","Diary log"];}; + if (player getVariable ["interpreter", false]) then {player createDiarySubject [localize "STR_BTC_HAM_CON_INFO_ASKHIDEOUT_DIARYLOG", localize "STR_BTC_HAM_CON_INFO_ASKHIDEOUT_DIARYLOG"];}; - removeAllWeapons player; + removeAllWeapons player; - waitUntil {scriptDone btc_intro_done}; - {[_x] call btc_fnc_task_create} foreach ((player call BIS_fnc_tasksUnit) select {[_x] call BIS_fnc_taskState isEqualTo "ASSIGNED"}); -}; + [{scriptDone btc_intro_done}, { + {[_x] call btc_fnc_task_create} foreach ((player call BIS_fnc_tasksUnit) select {[_x] call BIS_fnc_taskState isEqualTo "ASSIGNED"}); + }] call CBA_fnc_waitUntilAndExecute; +}] call CBA_fnc_waitUntilAndExecute; if (btc_debug) then { - private ["_eh"]; - - onMapSingleClick "if (vehicle player == player) then {player setpos _pos} else {vehicle player setpos _pos}"; - player allowDamage false; + onMapSingleClick "if (vehicle player == player) then {player setpos _pos} else {vehicle player setpos _pos}"; + player allowDamage false; - waitUntil {!isNull (findDisplay 12)}; - _eh = ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", btc_fnc_marker_debug]; + waitUntil {!isNull (findDisplay 12)}; + private _eh = ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", btc_fnc_marker_debug]; - btc_marker_debug_cond = true; - [_eh] spawn btc_fnc_systemchat_debug; -}; \ No newline at end of file + btc_marker_debug_cond = true; + [_eh] spawn btc_fnc_systemchat_debug; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/init_server.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/core/init_server.sqf index fec752b40..c4edf7fab 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/init_server.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/init_server.sqf @@ -3,21 +3,21 @@ call compile preprocessFile "core\fnc\city\init.sqf"; {[_x] spawn btc_fnc_task_create} foreach [0,1]; if (btc_db_load && {profileNamespace getVariable [format ["btc_hm_%1_db",worldName],false]}) then { - if (btc_version isEqualTo (profileNamespace getVariable [format ["btc_hm_%1_version",worldName],1.13])) then { - call compile preprocessFile "core\fnc\db\load.sqf"; - } else { - call compile preprocessFile "core\fnc\db\load_old.sqf"; - }; + if (btc_version isEqualTo (profileNamespace getVariable [format ["btc_hm_%1_version",worldName],1.13])) then { + call compile preprocessFile "core\fnc\db\load.sqf"; + } else { + call compile preprocessFile "core\fnc\db\load_old.sqf"; + }; } else { - for "_i" from 1 to btc_hideout_n do {[] call btc_fnc_mil_create_hideout;}; + for "_i" from 1 to btc_hideout_n do {[] call btc_fnc_mil_create_hideout;}; - private _date = date; - _date set [3, btc_p_time]; - setDate _date; + private _date = date; + _date set [3, btc_p_time]; + setDate _date; - [] execVM "core\fnc\cache\init.sqf"; + call compile preprocessFile "core\fnc\cache\init.sqf"; - [] spawn {{waitUntil {!isNull _x}; _x call btc_fnc_db_add_veh;} foreach btc_vehicles;}; + [] spawn {{waitUntil {!isNull _x}; _x call btc_fnc_db_add_veh;} foreach btc_vehicles;}; }; call btc_fnc_db_autosave; @@ -32,8 +32,10 @@ addMissionEventHandler ["BuildingChanged",btc_fnc_eh_buildingchanged]; setTimeMultiplier btc_p_acctime; +if (btc_p_arsenalType > 0) then {[btc_gear_object,true] call ace_arsenal_fnc_initBox;}; + {[_x,30,false] spawn btc_fnc_eh_veh_add_respawn;} forEach btc_helo; if (btc_p_side_mission_cycle) then { - [true] spawn btc_fnc_side_create; -}; \ No newline at end of file + [true] spawn btc_fnc_side_create; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/core/sounds/sounds.hpp b/=BTC=co@30_Hearts_and_Minds.Altis/core/sounds/sounds.hpp index 24388b3e1..1711f8169 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/core/sounds/sounds.hpp +++ b/=BTC=co@30_Hearts_and_Minds.Altis/core/sounds/sounds.hpp @@ -1,7 +1,7 @@ class CfgSounds { - class btc_sound_allahu_akbar { - name = "btc_sound_allahu_akbar"; - sound[] = {"core\sounds\allahu_akbar.ogg", 15, 1}; - titles[] = {}; - }; + class btc_sound_allahu_akbar { + name = "btc_sound_allahu_akbar"; + sound[] = {"core\sounds\allahu_akbar.ogg", 15, 1}; + titles[] = {}; + }; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/description.ext b/=BTC=co@30_Hearts_and_Minds.Altis/description.ext index 5b030e121..9ea54af0b 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/description.ext +++ b/=BTC=co@30_Hearts_and_Minds.Altis/description.ext @@ -1,16 +1,14 @@ loadScreen = "core\img\btc.paa"; -author = Giallustio; -onLoadName = Hearts and Minds; -onLoadMission = www.blacktemplars.altervista.org; +author = $STR_BTC_HAM_DESCR_AUTHOR; +onLoadName = $STR_BTC_HAM_DESCR_NAME; +onLoadMission = $STR_BTC_HAM_DESCR_MISSION; enabledebugconsole = 1; #include "core\def\dlg_def.hpp" #include "core\fnc\fob\dlg.hpp" -#include "core\fnc\int\progress_bar.hpp" #include "core\fnc\log\dlg.hpp" -//#include "core\fnc\rev\dlg.hpp" class RscTitles { class Default { @@ -19,8 +17,7 @@ class RscTitles { fadeout = 0; duration = 0; }; - //#include "core\fnc\rev\rsc.hpp" - #include "core\fnc\log\rsc.hpp" + #include "core\fnc\log\rsc.hpp" }; #include "core\sounds\sounds.hpp" @@ -31,6 +28,10 @@ class RscTitles { #include "core\fnc\task\tasktypes.hpp" -#include "core\def\functions.hpp" +class CfgFunctions { + #include "core\def\functions.hpp" + // add your own functions below +}; #include "core\fnc\eh\extended_InitPost_EH.hpp" +#include "core\fnc\eh\extended_PreInit_EH.hpp" diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/init.sqf b/=BTC=co@30_Hearts_and_Minds.Altis/init.sqf index 7fd04b2a5..b9000e333 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/init.sqf +++ b/=BTC=co@30_Hearts_and_Minds.Altis/init.sqf @@ -1,6 +1,4 @@ enableSaving [false,false]; -//Server -call compile preprocessFile "core\fnc\compile.sqf"; if (hasInterface) then {btc_intro_done = [] spawn btc_fnc_intro;}; @@ -8,15 +6,15 @@ call compile preprocessFile "core\def\mission.sqf"; call compile preprocessFile "define_mod.sqf"; if (isServer) then { - call compile preprocessFile "core\init_server.sqf"; + call compile preprocessFile "core\init_server.sqf"; }; call compile preprocessFile "core\init_common.sqf"; if (!isDedicated && hasInterface) then { - call compile preprocessFile "core\init_player.sqf"; + call compile preprocessFile "core\init_player.sqf"; }; if (!isDedicated && !hasInterface) then { - call compile preprocessFile "core\init_headless.sqf"; + call compile preprocessFile "core\init_headless.sqf"; }; \ No newline at end of file diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/mission.sqm b/=BTC=co@30_Hearts_and_Minds.Altis/mission.sqm index 60ee41c20..392b73295 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/mission.sqm +++ b/=BTC=co@30_Hearts_and_Minds.Altis/mission.sqm @@ -8,7 +8,7 @@ class EditorData toggles=513; class ItemIDProvider { - nextID=156; + nextID=179; }; class MarkerIDProvider { @@ -16,19 +16,16 @@ class EditorData }; class Camera { - pos[]={8297.6123,93.258369,10061.557}; - dir[]={0.58210856,-0.81064433,0.064327784}; - up[]={0.80575699,0.58552009,0.089042641}; - aside[]={0.10984567,4.5113848e-007,-0.99401075}; + pos[]={8264.4326,84.748459,10065.584}; + dir[]={0.89768684,-0.43750682,0.054335855}; + up[]={0.43681347,0.89917308,0.026440112}; + aside[]={0.060424324,1.1197553e-006,-0.99826705}; }; }; binarizationWanted=0; addons[]= { "A3_Ui_F", - "rhsusf_vehicles", - "RHS_US_A2Port_Armor", - "RHS_US_A2_AirImport", "A3_Structures_F_Ind_Cargo", "ace_cargo", "A3_Structures_F_Mil_Helipads", @@ -41,14 +38,19 @@ addons[]= "A3_Characters_F", "ace_explosives", "A3_Modules_F_Curator_Curator", - "rhsusf_c_fmtv", - "rhsusf_c_RG33L" + "A3_Air_F_Heli_Heli_Transport_03", + "A3_Soft_F_Beta_Truck_01", + "A3_Soft_F_Exp_LSV_01", + "A3_Soft_F_MRAP_01", + "A3_Armor_F_Beta_APC_Wheeled_01", + "A3_Air_F_Beta_Heli_Transport_01", + "A3_Air_F_Beta_Heli_Attack_01" }; class AddonsMetaData { class List { - items=16; + items=17; class Item0 { className="A3_Ui_F"; @@ -57,103 +59,116 @@ class AddonsMetaData url="https://www.arma3.com"; }; class Item1 - { - className="rhsusf_vehicles"; - name="rhsusf_vehicles"; - }; - class Item2 - { - className="RHS_US_A2Port_Armor"; - name="M2 Bradley IFV"; - url="http://www.rhsmods.org/"; - }; - class Item3 - { - className="RHS_US_A2_AirImport"; - name="RHSUSF A2 Air Ports"; - url="http://www.rhsmods.org/"; - }; - class Item4 { className="A3_Structures_F_Ind"; name="Arma 3 - Industrial Structures"; author="Bohemia Interactive"; url="https://www.arma3.com"; }; - class Item5 + class Item2 { className="ace_cargo"; name="ACE3 - Cargo"; author="ACE-Team"; url="http://ace3mod.com/"; }; - class Item6 + class Item3 { className="A3_Structures_F_Mil"; name="Arma 3 - Military Buildings and Structures"; author="Bohemia Interactive"; url="https://www.arma3.com"; }; - class Item7 + class Item4 { className="A3_Soft_F_Gamma"; name="Arma 3 - Unarmored Land Vehicles"; author="Bohemia Interactive"; url="https://www.arma3.com"; }; - class Item8 + class Item5 { className="A3_Characters_F"; name="Arma 3 Alpha - Characters and Clothing"; author="Bohemia Interactive"; url="https://www.arma3.com"; }; - class Item9 + class Item6 { className="ace_rearm"; name="ACE3 - Rearm"; author="ACE-Team"; url="http://ace3mod.com/"; }; - class Item10 + class Item7 { className="ace_refuel"; name="ACE3 - Refuel"; author="ACE-Team"; url="http://ace3mod.com/"; }; - class Item11 + class Item8 { className="ace_repair"; name="ACE3 - Repair"; author="ACE-Team"; url="http://ace3mod.com/"; }; - class Item12 + class Item9 { className="ace_explosives"; name="ACE3 - Explosives"; author="ACE-Team"; url="http://ace3mod.com/"; }; - class Item13 + class Item10 { className="A3_Modules_F_Curator"; name="Arma 3 Zeus Update - Scripted Modules"; author="Bohemia Interactive"; url="https://www.arma3.com"; }; + class Item11 + { + className="A3_Air_F_Heli"; + name="Arma 3 Helicopters - Aircraft"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item12 + { + className="A3_Soft_F_Beta"; + name="Arma 3 Beta - Unarmored Land Vehicles"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item13 + { + className="A3_Soft_F_Exp"; + name="Arma 3 Apex - Unarmored Land Vehicles"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; class Item14 { - className="rhsusf_c_fmtv"; - name="FMTV Trucks"; - url="http://www.rhsmods.org/"; + className="A3_Soft_F"; + name="Arma 3 Alpha - Unarmored Land Vehicles"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; }; class Item15 { - className="rhsusf_c_RG33L"; - name="RG33L MRAP"; - url="http://www.rhsmods.org/"; + className="A3_Armor_F_Beta"; + name="Arma 3 Beta - Armored Land Vehicles"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item16 + { + className="A3_Air_F_Beta"; + name="Arma 3 Beta - Aircraft"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; }; }; }; @@ -611,7 +626,7 @@ class Mission dataType="Marker"; position[]={8323.1348,73.933266,10113.239}; name="btc_log_point"; - text="Logistic Point"; + text=$STR_BTC_HAM_MSQM_MRK_LOGPOINT; type="mil_flag"; colorName="ColorGreen"; a=0.5; @@ -623,144 +638,43 @@ class Mission dataType="Object"; class PositionInfo { - position[]={8303.2588,78.415161,10074.801}; - angles[]={0.0080110608,5.6580257,6.2392201}; + position[]={8320.2842,75.246689,10105.996}; + angles[]={0.054611351,5.6770496,6.2631841}; }; side="Empty"; flags=4; class Attributes { skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_3"; - }; - id=3; - type="rhsusf_m1025_d_m2"; - class CustomAttributes - { - class Attribute0 - { - property="rhs_decalMask"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute1 - { - property="rhs_decalDoors"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute2 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; - }; - }; - }; - nAttributes=3; + init="call{this allowDamage false; this enableSimulation false;}"; + name="btc_create_object"; }; + id=13; + type="Land_CargoBox_V1_F"; }; class Item4 { dataType="Object"; class PositionInfo { - position[]={8297.6514,78.657707,10071.11}; - angles[]={6.2418733,5.6580257,6.2325706}; + position[]={8323.1582,73.944031,10113.102}; + angles[]={0.074525557,0.89397508,0.018657569}; }; side="Empty"; flags=4; class Attributes { skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_2"; + name="btc_create_object_point"; }; - id=4; - type="rhsusf_m1025_d_m2"; - atlOffset=7.6293945e-006; + id=14; + type="Land_HelipadSquare_F"; class CustomAttributes { class Attribute0 { - property="rhs_decalMask"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute1 - { - property="rhs_decalDoors"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute2 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; + property="ace_isRepairFacility"; + expression="_this setVariable ['ace_isRepairFacility',_value, true];"; class Value { class data @@ -769,14 +683,14 @@ class Mission { type[]= { - "STRING" + "SCALAR" }; }; - value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; + value=1; }; }; }; - nAttributes=3; + nAttributes=1; }; }; class Item5 @@ -784,45 +698,44 @@ class Mission dataType="Object"; class PositionInfo { - position[]={8295.166,77.579712,10052.532}; - angles[]={0,5.7184772,0}; + position[]={8309.2861,76.695534,10068.324}; + angles[]={0.0026744273,5.6770415,6.2392135}; }; side="Empty"; flags=4; class Attributes { skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true];"; - name="btc_veh_1"; + init="this allowDamage false;"; + name="btc_gear_object"; }; - id=5; - type="RHS_M2A3"; + id=15; + type="Land_CargoBox_V1_F"; }; class Item6 { dataType="Object"; class PositionInfo { - position[]={8332.2256,78.478668,10088.2}; - angles[]={0.049293593,5.7068849,6.2325621}; + position[]={8213.54,76.510483,10025.129}; + angles[]={6.2631893,0.89397335,6.2139621}; }; side="Empty"; flags=4; class Attributes { skill=0.60000002; - name="btc_helo_1"; }; - id=6; - type="RHS_CH_47F_10"; + id=17; + type="Land_HelipadSquare_F"; }; class Item7 { dataType="Object"; class PositionInfo { - position[]={8317.3643,77.782211,10084.248}; - angles[]={0.013334315,5.6580257,6.2591867}; + position[]={8358.7637,75.2911,10101.058}; + angles[]={0.078505196,5.6318169,6.2445364}; }; side="Empty"; flags=4; @@ -830,80 +743,19 @@ class Mission { skill=0.60000002; init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_4"; - }; - id=7; - type="rhsusf_m1025_d_m2"; - atlOffset=7.6293945e-006; - class CustomAttributes - { - class Attribute0 - { - property="rhs_decalMask"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute1 - { - property="rhs_decalDoors"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute2 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; - }; - }; - }; - nAttributes=3; + name="btc_veh_11"; }; + id=18; + type="B_Truck_01_ammo_F"; + atlOffset=0.00021362305; }; class Item8 { dataType="Object"; class PositionInfo { - position[]={8278.1641,79.440773,10076.579}; - angles[]={0.030647982,1.4514159,0.033318337}; + position[]={8353.5449,75.482399,10097.687}; + angles[]={0.025327841,5.6318169,6.247201}; }; side="Empty"; flags=4; @@ -911,233 +763,16 @@ class Mission { skill=0.60000002; init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_7"; + name="btc_veh_12"; }; - id=9; - type="rhsusf_m1025_d_m2"; - atlOffset=-7.6293945e-006; - class CustomAttributes - { - class Attribute0 - { - property="rhs_decalMask"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute1 - { - property="rhs_decalDoors"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute2 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; - }; - }; - }; - nAttributes=3; - }; - }; - class Item9 - { - dataType="Object"; - class PositionInfo - { - position[]={8320.2842,75.246689,10105.996}; - angles[]={0.054611351,5.6770496,6.2631841}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="call{this allowDamage false; this enableSimulation false;}"; - name="btc_create_object"; - }; - id=13; - type="Land_CargoBox_V1_F"; - }; - class Item10 - { - dataType="Object"; - class PositionInfo - { - position[]={8323.1582,73.944031,10113.102}; - angles[]={0.074525557,0.89397508,0.018657569}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - name="btc_create_object_point"; - }; - id=14; - type="Land_HelipadSquare_F"; - class CustomAttributes - { - class Attribute0 - { - property="ace_isRepairFacility"; - expression="_this setVariable ['ace_isRepairFacility',_value, true];"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1; - }; - }; - }; - nAttributes=1; - }; - }; - class Item11 - { - dataType="Object"; - class PositionInfo - { - position[]={8309.2861,76.695534,10068.324}; - angles[]={0.0026744273,5.6770415,6.2392135}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this allowDamage false;"; - name="btc_gear_object"; - }; - id=15; - type="Land_CargoBox_V1_F"; - }; - class Item12 - { - dataType="Object"; - class PositionInfo - { - position[]={8213.6924,78.541695,10023.983}; - angles[]={6.2631893,5.7956276,6.2139621}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_10"; - }; - id=16; - type="RHS_AH64D"; - atlOffset=-0.159729; - }; - class Item13 - { - dataType="Object"; - class PositionInfo - { - position[]={8213.54,76.510483,10025.129}; - angles[]={6.2631893,0.89397335,6.2139621}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - }; - id=17; - type="Land_HelipadSquare_F"; - }; - class Item14 - { - dataType="Object"; - class PositionInfo - { - position[]={8358.7637,75.2911,10101.058}; - angles[]={0.078505196,5.6318169,6.2445364}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_11"; - }; - id=18; - type="B_Truck_01_ammo_F"; - atlOffset=0.00021362305; - }; - class Item15 - { - dataType="Object"; - class PositionInfo - { - position[]={8353.5449,75.482399,10097.687}; - angles[]={0.025327841,5.6318169,6.247201}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_12"; - }; - id=19; - type="B_Truck_01_fuel_F"; - atlOffset=0.00020599365; - }; - class Item16 - { - dataType="Object"; - class PositionInfo + id=19; + type="B_Truck_01_fuel_F"; + atlOffset=0.00020599365; + }; + class Item9 + { + dataType="Object"; + class PositionInfo { position[]={8348.8496,76.13974,10094.677}; angles[]={6.247201,5.6318169,6.2418756}; @@ -1154,7 +789,7 @@ class Mission type="B_Truck_01_Repair_F"; atlOffset=0.00020599365; }; - class Item17 + class Item10 { dataType="Object"; class PositionInfo @@ -1172,26 +807,7 @@ class Mission type="Flag_NATO_F"; atlOffset=0.0030288696; }; - class Item18 - { - dataType="Object"; - class PositionInfo - { - position[]={8241.4199,79.564301,10048.12}; - angles[]={6.2591896,5.7956276,0.017332481}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_14"; - }; - id=22; - type="RHS_UH1Y_d"; - }; - class Item19 + class Item11 { dataType="Object"; class PositionInfo @@ -1208,7 +824,7 @@ class Mission id=23; type="Land_HelipadSquare_F"; }; - class Item20 + class Item12 { dataType="Group"; side="West"; @@ -1229,7 +845,7 @@ class Mission { skill=0.60000002; init="this setVariable [""side_mission"",true]"; - description="Officer"; + description=$STR_BTC_HAM_MSQM_OFFICER; isPlayer=1; isPlayable=1; }; @@ -1242,7 +858,7 @@ class Mission }; id=24; }; - class Item21 + class Item13 { dataType="Group"; side="West"; @@ -1263,7 +879,7 @@ class Mission { skill=0.60000002; init="this setVariable [""interpreter"",true]"; - description="Interpreter"; + description=$STR_BTC_HAM_MSQM_INTERPRETER; isPlayable=1; }; id=29; @@ -1277,7 +893,7 @@ class Mission id=28; atlOffset=-3.8146973e-005; }; - class Item22 + class Item14 { dataType="Group"; side="West"; @@ -1297,7 +913,7 @@ class Mission class Attributes { skill=0.60000002; - description="Advanced engineer"; + description=$STR_ACE_Repair_AssignEngineerRole_role_advanced; isPlayable=1; }; id=31; @@ -1370,7 +986,7 @@ class Mission }; id=30; }; - class Item23 + class Item15 { dataType="Logic"; class PositionInfo @@ -1481,7 +1097,7 @@ class Mission nAttributes=5; }; }; - class Item24 + class Item16 { dataType="Group"; side="West"; @@ -1511,7 +1127,7 @@ class Mission }; id=89; }; - class Item25 + class Item17 { dataType="Group"; side="West"; @@ -1541,7 +1157,7 @@ class Mission }; id=91; }; - class Item26 + class Item18 { dataType="Group"; side="West"; @@ -1571,7 +1187,7 @@ class Mission }; id=93; }; - class Item27 + class Item19 { dataType="Group"; side="West"; @@ -1601,7 +1217,7 @@ class Mission }; id=95; }; - class Item28 + class Item20 { dataType="Group"; side="West"; @@ -1631,7 +1247,7 @@ class Mission }; id=97; }; - class Item29 + class Item21 { dataType="Group"; side="West"; @@ -1661,7 +1277,7 @@ class Mission }; id=99; }; - class Item30 + class Item22 { dataType="Group"; side="West"; @@ -1691,7 +1307,7 @@ class Mission }; id=101; }; - class Item31 + class Item23 { dataType="Group"; side="West"; @@ -1721,7 +1337,7 @@ class Mission }; id=103; }; - class Item32 + class Item24 { dataType="Group"; side="West"; @@ -1753,7 +1369,7 @@ class Mission id=105; atlOffset=0.028755188; }; - class Item33 + class Item25 { dataType="Group"; side="West"; @@ -1785,7 +1401,7 @@ class Mission id=107; atlOffset=0.072166443; }; - class Item34 + class Item26 { dataType="Group"; side="West"; @@ -1815,7 +1431,7 @@ class Mission }; id=109; }; - class Item35 + class Item27 { dataType="Group"; side="West"; @@ -1845,7 +1461,7 @@ class Mission }; id=111; }; - class Item36 + class Item28 { dataType="Group"; side="West"; @@ -1875,7 +1491,7 @@ class Mission }; id=113; }; - class Item37 + class Item29 { dataType="Group"; side="West"; @@ -1905,7 +1521,7 @@ class Mission }; id=115; }; - class Item38 + class Item30 { dataType="Group"; side="West"; @@ -1935,7 +1551,7 @@ class Mission }; id=117; }; - class Item39 + class Item31 { dataType="Group"; side="West"; @@ -1965,7 +1581,7 @@ class Mission }; id=119; }; - class Item40 + class Item32 { dataType="Group"; side="West"; @@ -1995,7 +1611,7 @@ class Mission }; id=121; }; - class Item41 + class Item33 { dataType="Group"; side="West"; @@ -2025,7 +1641,7 @@ class Mission }; id=123; }; - class Item42 + class Item34 { dataType="Group"; side="West"; @@ -2057,7 +1673,7 @@ class Mission id=125; atlOffset=0.0039749146; }; - class Item43 + class Item35 { dataType="Group"; side="West"; @@ -2089,7 +1705,7 @@ class Mission id=127; atlOffset=0.0039749146; }; - class Item44 + class Item36 { dataType="Group"; side="West"; @@ -2119,7 +1735,7 @@ class Mission }; id=129; }; - class Item45 + class Item37 { dataType="Group"; side="West"; @@ -2149,13 +1765,66 @@ class Mission }; id=131; }; - class Item46 + class Item38 + { + dataType="Logic"; + class PositionInfo + { + position[]={8302.7266,75.940002,10058.99}; + }; + name="btc_hc_1"; + isPlayable=1; + id=153; + type="HeadlessClient_F"; + }; + class Item39 + { + dataType="Object"; + class PositionInfo + { + position[]={8332.2158,78.290398,10088.188}; + angles[]={0.049288094,5.7068777,6.232553}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + name="btc_helo_1"; + }; + id=156; + type="B_Heli_Transport_03_F"; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""FirstAidKit"",""Medikit""],[10,1]],[[],[]],[[""ToolKit""],[1]],[[""B_Parachute""],[20]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item40 { dataType="Object"; class PositionInfo { - position[]={8308.083,78.147247,10095.771}; - angles[]={0.08248426,0.94293159,6.224577}; + position[]={8309.2617,77.484642,10096.77}; + angles[]={0.06656827,0.94293159,6.2405434}; }; side="Empty"; flags=4; @@ -2165,8 +1834,9 @@ class Mission init="this setVariable [""btc_dont_delete"",true]"; name="btc_veh_9"; }; - id=145; - type="rhsusf_M1078A1P2_B_M2_D_open_fmtv_usarmy"; + id=158; + type="B_Truck_01_transport_F"; + atlOffset=-0.0005645752; class CustomAttributes { class Attribute0 @@ -2191,12 +1861,54 @@ class Mission nAttributes=1; }; }; - class Item47 + class Item41 { dataType="Object"; class PositionInfo { - position[]={8288.5078,79.64241,10081.821}; + position[]={8299.2021,78.316971,10089.534}; + angles[]={0.0013439035,0.94247776,6.232553}; + }; + side="Empty"; + flags=4; + class Attributes + { + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_15"; + }; + id=160; + type="B_Truck_01_covered_F"; + atlOffset=-0.095001221; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item42 + { + dataType="Object"; + class PositionInfo + { + position[]={8288.4736,79.124588,10081.791}; angles[]={0.058590703,0.94293159,6.2179446}; }; side="Empty"; @@ -2207,8 +1919,8 @@ class Mission init="this setVariable [""btc_dont_delete"",true]"; name="btc_veh_8"; }; - id=146; - type="rhsusf_M1078A1P2_B_M2_D_open_fmtv_usarmy"; + id=161; + type="B_Truck_01_transport_F"; class CustomAttributes { class Attribute0 @@ -2233,24 +1945,25 @@ class Mission nAttributes=1; }; }; - class Item48 + class Item43 { dataType="Object"; class PositionInfo { - position[]={8299.1973,78.215668,10089.534}; - angles[]={0.0013439035,0.94247776,6.232553}; + position[]={8317.3564,77.744057,10084.226}; + angles[]={0.013334315,5.6580257,6.2591867}; }; side="Empty"; flags=4; class Attributes { + skill=0.60000002; init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_15"; + name="btc_veh_4"; }; - id=152; - type="rhsusf_M1078A1P2_B_D_fmtv_usarmy"; - atlOffset=-0.095359802; + id=164; + type="B_LSV_01_armed_F"; + atlOffset=7.6293945e-006; class CustomAttributes { class Attribute0 @@ -2268,7 +1981,219 @@ class Mission "STRING" }; }; - value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit""],[2,4]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[10,2,2,2,4]],[[""ToolKit""],[1]],[[""rhsusf_falconii""],[1]]],false]"; + value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""NLAW_F""],[16,6,10,10,4,4,4,4,12,4,4,4,4,2]],[[],[]],[[],[]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item44 + { + dataType="Object"; + class PositionInfo + { + position[]={8303.251,78.377045,10074.778}; + angles[]={0.0080110608,5.6580257,6.2392201}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_3"; + }; + id=165; + type="B_LSV_01_armed_F"; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""NLAW_F""],[16,6,10,10,4,4,4,4,12,4,4,4,4,2]],[[],[]],[[],[]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item45 + { + dataType="Object"; + class PositionInfo + { + position[]={8297.6436,78.618568,10071.089}; + angles[]={6.2418733,5.6580257,6.2325706}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_2"; + }; + id=166; + type="B_LSV_01_armed_F"; + atlOffset=7.6293945e-006; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""NLAW_F""],[16,6,10,10,4,4,4,4,12,4,4,4,4,2]],[[],[]],[[],[]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item46 + { + dataType="Object"; + class PositionInfo + { + position[]={8272.083,80.947021,10065.467}; + angles[]={0.17032668,0.95726073,6.2392201}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_6"; + }; + id=168; + type="B_MRAP_01_hmg_F"; + atlOffset=0.0022201538; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue""],[16,6,10,10,4,4,4,4,12,4,4,4,4]],[[],[]],[[],[]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item47 + { + dataType="Object"; + class PositionInfo + { + position[]={8277.1621,80.921341,10059.937}; + angles[]={0.12205087,0.3543193,6.1297359}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_5"; + }; + id=169; + type="B_MRAP_01_hmg_F"; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue""],[16,6,10,10,4,4,4,4,12,4,4,4,4]],[[],[]],[[],[]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item48 + { + dataType="Object"; + class PositionInfo + { + position[]={8295.166,78.402695,10052.533}; + angles[]={-0,5.7184839,0}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true];"; + name="btc_veh_1"; + }; + id=170; + type="B_APC_Wheeled_01_cannon_F"; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""MiniGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""Titan_AT"",""Titan_AP"",""Titan_AA""],[12,6,6,6,6,3,3,3,3,8,8,8,8,2,2,2]],[[],[]],[[],[]]],false]"; }; }; }; @@ -2277,23 +2202,73 @@ class Mission }; class Item49 { - dataType="Logic"; + dataType="Object"; class PositionInfo { - position[]={8302.7266,75.940002,10058.99}; + position[]={8241.4209,79.516441,10048.122}; + angles[]={6.2591867,5.7956276,0.01733112}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_14"; + }; + id=174; + type="B_Heli_Transport_01_camo_F"; + atlOffset=7.6293945e-006; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""arifle_MXC_F"",""FirstAidKit"",""Medikit""],[2,8,1]],[[""SmokeShell"",""SmokeShellBlue"",""30Rnd_65x39_caseless_mag""],[2,2,4]],[[""ToolKit"",""ItemGPS""],[1,1]],[[""B_Parachute""],[8]]],false]"; + }; + }; + }; + class Attribute1 + { + property="ace_fastroping_equipFRIES"; + expression="if (_value) then {[_this] call ace_fastroping_fnc_equipFRIES}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=2; }; - name="btc_hc_1"; - isPlayable=1; - id=153; - type="HeadlessClient_F"; }; class Item50 { dataType="Object"; class PositionInfo { - position[]={8272.0283,79.696327,10065.254}; - angles[]={0.17033349,0.95726073,6.2392135}; + position[]={8213.6719,78.245605,10023.996}; + angles[]={6.2631841,5.7956276,6.2139654}; }; side="Empty"; flags=4; @@ -2301,11 +2276,11 @@ class Mission { skill=0.60000002; init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_6"; + name="btc_veh_10"; }; - id=154; - type="rhsusf_M1237_M2_usarmy_d"; - atlOffset=-0.0018463135; + id=175; + type="B_Heli_Attack_01_dynamicLoadout_F"; + atlOffset=-0.16000366; class CustomAttributes { class Attribute0 @@ -2323,7 +2298,7 @@ class Mission "STRING" }; }; - value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,8,1]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_M433_HEDP"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[30,20,11,10,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[4]]],false]"; + value="[[[[""arifle_MXC_F"",""FirstAidKit""],[2,2]],[[""SmokeShell"",""SmokeShellBlue"",""30Rnd_65x39_caseless_mag""],[2,2,4]],[[""ToolKit"",""ItemGPS""],[1,1]],[[""B_Parachute""],[2]]],false]"; }; }; }; @@ -2335,8 +2310,8 @@ class Mission dataType="Object"; class PositionInfo { - position[]={8276.9688,79.675079,10059.785}; - angles[]={0.12205668,0.35431969,6.1297355}; + position[]={8278.1592,79.402664,10076.555}; + angles[]={0.030647982,1.4514159,0.033318337}; }; side="Empty"; flags=4; @@ -2344,10 +2319,11 @@ class Mission { skill=0.60000002; init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_5"; + name="btc_veh_7"; }; - id=155; - type="rhsusf_M1237_M2_usarmy_d"; + id=178; + type="B_LSV_01_armed_F"; + atlOffset=-7.6293945e-006; class CustomAttributes { class Attribute0 @@ -2365,7 +2341,7 @@ class Mission "STRING" }; }; - value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,8,1]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_M433_HEDP"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[30,20,11,10,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[4]]],false]"; + value="[[[[""arifle_MX_F"",""FirstAidKit""],[2,10]],[[""30Rnd_65x39_caseless_mag"",""100Rnd_65x39_caseless_mag"",""HandGrenade"",""1Rnd_HE_Grenade_shell"",""1Rnd_Smoke_Grenade_shell"",""1Rnd_SmokeGreen_Grenade_shell"",""1Rnd_SmokeOrange_Grenade_shell"",""1Rnd_SmokeBlue_Grenade_shell"",""16Rnd_9x21_Mag"",""SmokeShell"",""SmokeShellGreen"",""SmokeShellOrange"",""SmokeShellBlue"",""NLAW_F""],[16,6,10,10,4,4,4,4,12,4,4,4,4,2]],[[],[]],[[],[]]],false]"; }; }; }; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/mission_RHSUS_Altis.sqm b/=BTC=co@30_Hearts_and_Minds.Altis/mission_RHSUS_Altis.sqm new file mode 100644 index 000000000..dca842ca4 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/mission_RHSUS_Altis.sqm @@ -0,0 +1,2376 @@ +version=53; +class EditorData +{ + moveGridStep=1; + angleGridStep=0.2617994; + scaleGridStep=1; + autoGroupingDist=10; + toggles=513; + class ItemIDProvider + { + nextID=156; + }; + class MarkerIDProvider + { + nextID=3; + }; + class Camera + { + pos[]={8297.6123,93.258369,10061.557}; + dir[]={0.58210856,-0.81064433,0.064327784}; + up[]={0.80575699,0.58552009,0.089042641}; + aside[]={0.10984567,4.5113848e-007,-0.99401075}; + }; +}; +binarizationWanted=0; +addons[]= +{ + "A3_Ui_F", + "rhsusf_vehicles", + "RHS_US_A2Port_Armor", + "RHS_US_A2_AirImport", + "A3_Structures_F_Ind_Cargo", + "ace_cargo", + "A3_Structures_F_Mil_Helipads", + "A3_Soft_F_Gamma_Truck_01", + "ace_realisticnames", + "ace_rearm", + "ace_refuel", + "ace_repair", + "A3_Structures_F_Mil_Flags", + "A3_Characters_F", + "ace_explosives", + "A3_Modules_F_Curator_Curator", + "rhsusf_c_fmtv", + "rhsusf_c_RG33L" +}; +class AddonsMetaData +{ + class List + { + items=16; + class Item0 + { + className="A3_Ui_F"; + name="Arma 3 - User Interface"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item1 + { + className="rhsusf_vehicles"; + name="rhsusf_vehicles"; + }; + class Item2 + { + className="RHS_US_A2Port_Armor"; + name="M2 Bradley IFV"; + url="http://www.rhsmods.org/"; + }; + class Item3 + { + className="RHS_US_A2_AirImport"; + name="RHSUSF A2 Air Ports"; + url="http://www.rhsmods.org/"; + }; + class Item4 + { + className="A3_Structures_F_Ind"; + name="Arma 3 - Industrial Structures"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item5 + { + className="ace_cargo"; + name="ACE3 - Cargo"; + author="ACE-Team"; + url="http://ace3mod.com/"; + }; + class Item6 + { + className="A3_Structures_F_Mil"; + name="Arma 3 - Military Buildings and Structures"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item7 + { + className="A3_Soft_F_Gamma"; + name="Arma 3 - Unarmored Land Vehicles"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item8 + { + className="A3_Characters_F"; + name="Arma 3 Alpha - Characters and Clothing"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item9 + { + className="ace_rearm"; + name="ACE3 - Rearm"; + author="ACE-Team"; + url="http://ace3mod.com/"; + }; + class Item10 + { + className="ace_refuel"; + name="ACE3 - Refuel"; + author="ACE-Team"; + url="http://ace3mod.com/"; + }; + class Item11 + { + className="ace_repair"; + name="ACE3 - Repair"; + author="ACE-Team"; + url="http://ace3mod.com/"; + }; + class Item12 + { + className="ace_explosives"; + name="ACE3 - Explosives"; + author="ACE-Team"; + url="http://ace3mod.com/"; + }; + class Item13 + { + className="A3_Modules_F_Curator"; + name="Arma 3 Zeus Update - Scripted Modules"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item14 + { + className="rhsusf_c_fmtv"; + name="FMTV Trucks"; + url="http://www.rhsmods.org/"; + }; + class Item15 + { + className="rhsusf_c_RG33L"; + name="RG33L MRAP"; + url="http://www.rhsmods.org/"; + }; + }; +}; +randomSeed=2442963; +class ScenarioData +{ + respawnDialog=0; + disabledAI=1; + respawn=3; + respawnDelay=5; + class Header + { + gameType="Coop"; + minPlayers=1; + maxPlayers=30; + }; +}; +class CustomAttributes +{ + class Category0 + { + name="Multiplayer"; + class Attribute0 + { + property="RespawnButton"; + expression="true"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute1 + { + property="RespawnTemplates"; + expression="true"; + class Value + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + }; + }; + }; + nAttributes=2; + }; + class Category1 + { + name="Scenario"; + class Attribute0 + { + property="cba_settings_hash"; + expression="false"; + class Value + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + class value + { + items=4; + class Item0 + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="#CBA_HASH#"; + }; + }; + class Item1 + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + class value + { + items=4; + class Item0 + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="ace_respawn_savepredeathgear"; + }; + }; + class Item1 + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="ace_medical_enablefor"; + }; + }; + class Item2 + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="ace_cargo_enable"; + }; + }; + class Item3 + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="ace_rearm_level"; + }; + }; + }; + }; + }; + class Item2 + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + class value + { + items=4; + class Item0 + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + class value + { + items=2; + class Item0 + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + class Item1 + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item1 + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + class value + { + items=2; + class Item0 + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + class Item1 + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item2 + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + class value + { + items=2; + class Item0 + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + class Item1 + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item3 + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + class value + { + items=2; + class Item0 + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + class Item1 + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + }; + }; + }; + class Item3 + { + class data + { + nil=1; + class type + { + type[]= + { + "ANY" + }; + }; + }; + }; + }; + }; + }; + }; + class Attribute1 + { + property="EnableDebugConsole"; + expression="true"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + nAttributes=2; + }; +}; +class Mission +{ + class Intel + { + briefingName="=BTC= co 30 HEARTS AND MINDS"; + overviewText="by Giallustio"; + resistanceWest=0; + resistanceEast=1; + startWeather=0.29999998; + startWind=0.099999994; + startWaves=0.099999994; + forecastWeather=0.29999998; + forecastWind=0.099999994; + forecastWaves=0.099999994; + forecastLightnings=0.099999994; + rainForced=1; + lightningsForced=1; + wavesForced=1; + windForced=1; + year=2035; + month=6; + day=24; + hour=12; + minute=0; + startFogDecay=0.013; + forecastFogDecay=0.013; + }; + class Entities + { + items=52; + class Item0 + { + dataType="Marker"; + position[]={8300.7275,76.093613,10061.531}; + name="respawn_west"; + type="Empty"; + id=0; + }; + class Item1 + { + dataType="Marker"; + position[]={8313.793,75.752388,10073.04}; + name="btc_base"; + type="flag_NATO"; + id=1; + }; + class Item2 + { + dataType="Marker"; + position[]={8323.1348,73.933266,10113.239}; + name="btc_log_point"; + text=$STR_BTC_HAM_MSQM_MRK_LOGPOINT; + type="mil_flag"; + colorName="ColorGreen"; + a=0.5; + b=0.5; + id=2; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={8303.2588,78.415161,10074.801}; + angles[]={0.0080110608,5.6580257,6.2392201}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_3"; + }; + id=3; + type="rhsusf_m1025_d_m2"; + class CustomAttributes + { + class Attribute0 + { + property="rhs_decalMask"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute1 + { + property="rhs_decalDoors"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute2 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; + }; + }; + }; + nAttributes=3; + }; + }; + class Item4 + { + dataType="Object"; + class PositionInfo + { + position[]={8297.6514,78.657707,10071.11}; + angles[]={6.2418733,5.6580257,6.2325706}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_2"; + }; + id=4; + type="rhsusf_m1025_d_m2"; + atlOffset=7.6293945e-006; + class CustomAttributes + { + class Attribute0 + { + property="rhs_decalMask"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute1 + { + property="rhs_decalDoors"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute2 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; + }; + }; + }; + nAttributes=3; + }; + }; + class Item5 + { + dataType="Object"; + class PositionInfo + { + position[]={8295.166,77.579712,10052.532}; + angles[]={0,5.7184772,0}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true];"; + name="btc_veh_1"; + }; + id=5; + type="RHS_M2A3"; + }; + class Item6 + { + dataType="Object"; + class PositionInfo + { + position[]={8332.2256,78.478668,10088.2}; + angles[]={0.049293593,5.7068849,6.2325621}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + name="btc_helo_1"; + }; + id=6; + type="RHS_CH_47F_10"; + }; + class Item7 + { + dataType="Object"; + class PositionInfo + { + position[]={8317.3643,77.782211,10084.248}; + angles[]={0.013334315,5.6580257,6.2591867}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_4"; + }; + id=7; + type="rhsusf_m1025_d_m2"; + atlOffset=7.6293945e-006; + class CustomAttributes + { + class Attribute0 + { + property="rhs_decalMask"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute1 + { + property="rhs_decalDoors"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute2 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; + }; + }; + }; + nAttributes=3; + }; + }; + class Item8 + { + dataType="Object"; + class PositionInfo + { + position[]={8278.1641,79.440773,10076.579}; + angles[]={0.030647982,1.4514159,0.033318337}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_7"; + }; + id=9; + type="rhsusf_m1025_d_m2"; + atlOffset=-7.6293945e-006; + class CustomAttributes + { + class Attribute0 + { + property="rhs_decalMask"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute1 + { + property="rhs_decalDoors"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute2 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; + }; + }; + }; + nAttributes=3; + }; + }; + class Item9 + { + dataType="Object"; + class PositionInfo + { + position[]={8320.2842,75.246689,10105.996}; + angles[]={0.054611351,5.6770496,6.2631841}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="call{this allowDamage false; this enableSimulation false;}"; + name="btc_create_object"; + }; + id=13; + type="Land_CargoBox_V1_F"; + }; + class Item10 + { + dataType="Object"; + class PositionInfo + { + position[]={8323.1582,73.944031,10113.102}; + angles[]={0.074525557,0.89397508,0.018657569}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + name="btc_create_object_point"; + }; + id=14; + type="Land_HelipadSquare_F"; + class CustomAttributes + { + class Attribute0 + { + property="ace_isRepairFacility"; + expression="_this setVariable ['ace_isRepairFacility',_value, true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + nAttributes=1; + }; + }; + class Item11 + { + dataType="Object"; + class PositionInfo + { + position[]={8309.2861,76.695534,10068.324}; + angles[]={0.0026744273,5.6770415,6.2392135}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this allowDamage false;"; + name="btc_gear_object"; + }; + id=15; + type="Land_CargoBox_V1_F"; + }; + class Item12 + { + dataType="Object"; + class PositionInfo + { + position[]={8213.6924,78.541695,10023.983}; + angles[]={6.2631893,5.7956276,6.2139621}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_10"; + }; + id=16; + type="RHS_AH64D"; + atlOffset=-0.159729; + }; + class Item13 + { + dataType="Object"; + class PositionInfo + { + position[]={8213.54,76.510483,10025.129}; + angles[]={6.2631893,0.89397335,6.2139621}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + }; + id=17; + type="Land_HelipadSquare_F"; + }; + class Item14 + { + dataType="Object"; + class PositionInfo + { + position[]={8358.7637,75.2911,10101.058}; + angles[]={0.078505196,5.6318169,6.2445364}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_11"; + }; + id=18; + type="B_Truck_01_ammo_F"; + atlOffset=0.00021362305; + }; + class Item15 + { + dataType="Object"; + class PositionInfo + { + position[]={8353.5449,75.482399,10097.687}; + angles[]={0.025327841,5.6318169,6.247201}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_12"; + }; + id=19; + type="B_Truck_01_fuel_F"; + atlOffset=0.00020599365; + }; + class Item16 + { + dataType="Object"; + class PositionInfo + { + position[]={8348.8496,76.13974,10094.677}; + angles[]={6.247201,5.6318169,6.2418756}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_13"; + }; + id=20; + type="B_Truck_01_Repair_F"; + atlOffset=0.00020599365; + }; + class Item17 + { + dataType="Object"; + class PositionInfo + { + position[]={8317.1514,79.59433,10075.261}; + angles[]={6.2791886,0,6.2445378}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + }; + id=21; + type="Flag_NATO_F"; + atlOffset=0.0030288696; + }; + class Item18 + { + dataType="Object"; + class PositionInfo + { + position[]={8241.4199,79.564301,10048.12}; + angles[]={6.2591896,5.7956276,0.017332481}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_14"; + }; + id=22; + type="RHS_UH1Y_d"; + }; + class Item19 + { + dataType="Object"; + class PositionInfo + { + position[]={8240.2227,77.387703,10049.465}; + angles[]={6.2591896,0.89397335,0.017332481}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + }; + id=23; + type="Land_HelipadSquare_F"; + }; + class Item20 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8311.1689,75.934975,10067.474}; + angles[]={0.0026520467,2.552031,0}; + }; + side="West"; + flags=6; + class Attributes + { + skill=0.60000002; + init="this setVariable [""side_mission"",true]"; + description=$STR_BTC_HAM_MSQM_OFFICER; + isPlayer=1; + isPlayable=1; + }; + id=25; + type="B_officer_F"; + }; + }; + class Attributes + { + }; + id=24; + }; + class Item21 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8305.6074,76.029839,10067.188}; + angles[]={6.2418771,2.5247488,0}; + }; + side="West"; + flags=6; + class Attributes + { + skill=0.60000002; + init="this setVariable [""interpreter"",true]"; + description=$STR_BTC_HAM_MSQM_INTERPRETER; + isPlayable=1; + }; + id=29; + type="B_Soldier_F"; + atlOffset=-3.8146973e-005; + }; + }; + class Attributes + { + }; + id=28; + atlOffset=-3.8146973e-005; + }; + class Item22 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8306.8721,76.060417,10067.928}; + angles[]={6.2418733,2.3351631,0}; + }; + side="West"; + flags=6; + class Attributes + { + skill=0.60000002; + description=$STR_ACE_Repair_AssignEngineerRole_role_advanced; + isPlayable=1; + }; + id=31; + type="B_engineer_F"; + class CustomAttributes + { + class Attribute0 + { + property="ace_isEngineer"; + expression="if (_value != -1) then {_this setVariable ['ace_isEngineer',_value, true];}"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=2; + }; + }; + }; + class Attribute1 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male02ENG"; + }; + }; + }; + class Attribute2 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.99000001; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=30; + }; + class Item23 + { + dataType="Logic"; + class PositionInfo + { + position[]={8255.6289,55.908749,9942.9063}; + }; + name="btc_curator"; + init="this addEventHandler ['CuratorObjectPlaced',{_this call btc_fnc_eh_CuratorObjectPlaced}];"; + id=71; + type="ModuleCurator_F"; + class CustomAttributes + { + class Attribute0 + { + property="ModuleCurator_F_Owner"; + expression="_this setVariable ['Owner',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="#adminLogged"; + }; + }; + }; + class Attribute1 + { + property="ModuleCurator_F_Forced"; + expression="_this setVariable ['Forced',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + class Attribute2 + { + property="ModuleCurator_F_Name"; + expression="_this setVariable ['Name',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value=""; + }; + }; + }; + class Attribute3 + { + property="ModuleInfo"; + expression="false"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute4 + { + property="ModuleCurator_F_Addons"; + expression="_this setVariable ['Addons',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=3; + }; + }; + }; + nAttributes=5; + }; + }; + class Item24 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8304.6758,75.941444,10055.586}; + angles[]={0,1.0172668,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=90; + type="B_medic_F"; + }; + }; + class Attributes + { + }; + id=89; + }; + class Item25 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8303.626,75.941444,10057.26}; + angles[]={0,1.0172668,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=92; + type="B_medic_F"; + }; + }; + class Attributes + { + }; + id=91; + }; + class Item26 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8310.3896,75.941444,10060.23}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=94; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=93; + }; + class Item27 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8311.8945,75.941444,10061.161}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=96; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=95; + }; + class Item28 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8313.1982,75.941444,10061.99}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=98; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=97; + }; + class Item29 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8314.7031,75.941444,10062.921}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=100; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=99; + }; + class Item30 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8316.1523,75.941444,10063.82}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=102; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=101; + }; + class Item31 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8317.6572,75.941444,10064.751}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=104; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=103; + }; + class Item32 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8318.9609,75.945419,10065.58}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=106; + type="B_Soldier_F"; + atlOffset=0.028755188; + }; + }; + class Attributes + { + }; + id=105; + atlOffset=0.028755188; + }; + class Item33 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8320.4658,75.945419,10066.511}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=108; + type="B_Soldier_F"; + atlOffset=0.072166443; + }; + }; + class Attributes + { + }; + id=107; + atlOffset=0.072166443; + }; + class Item34 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8321.874,75.83403,10067.351}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=110; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=109; + }; + class Item35 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8323.3789,75.865822,10068.281}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=112; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=111; + }; + class Item36 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8311.5381,75.941444,10058.645}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=114; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=113; + }; + class Item37 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8313.043,75.941444,10059.575}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=116; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=115; + }; + class Item38 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8314.3467,75.941444,10060.404}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=118; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=117; + }; + class Item39 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8315.8516,75.941444,10061.335}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=120; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=119; + }; + class Item40 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8317.3008,75.941444,10062.234}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=122; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=121; + }; + class Item41 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8318.8057,75.941444,10063.165}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=124; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=123; + }; + class Item42 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8320.1094,75.945419,10063.994}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=126; + type="B_Soldier_F"; + atlOffset=0.0039749146; + }; + }; + class Attributes + { + }; + id=125; + atlOffset=0.0039749146; + }; + class Item43 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8321.6143,75.945419,10064.925}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=128; + type="B_Soldier_F"; + atlOffset=0.0039749146; + }; + }; + class Attributes + { + }; + id=127; + atlOffset=0.0039749146; + }; + class Item44 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8323.0225,75.908073,10065.765}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=130; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=129; + }; + class Item45 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={8324.5273,75.919395,10066.695}; + angles[]={0,5.701921,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=132; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=131; + }; + class Item46 + { + dataType="Object"; + class PositionInfo + { + position[]={8308.083,78.147247,10095.771}; + angles[]={0.08248426,0.94293159,6.224577}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_9"; + }; + id=145; + type="rhsusf_M1078A1P2_B_M2_D_open_fmtv_usarmy"; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item47 + { + dataType="Object"; + class PositionInfo + { + position[]={8288.5078,79.64241,10081.821}; + angles[]={0.058590703,0.94293159,6.2179446}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_8"; + }; + id=146; + type="rhsusf_M1078A1P2_B_M2_D_open_fmtv_usarmy"; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item48 + { + dataType="Object"; + class PositionInfo + { + position[]={8299.1973,78.215668,10089.534}; + angles[]={0.0013439035,0.94247776,6.232553}; + }; + side="Empty"; + flags=4; + class Attributes + { + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_15"; + }; + id=152; + type="rhsusf_M1078A1P2_B_D_fmtv_usarmy"; + atlOffset=-0.095359802; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit""],[2,4]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[10,2,2,2,4]],[[""ToolKit""],[1]],[[""rhsusf_falconii""],[1]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item49 + { + dataType="Logic"; + class PositionInfo + { + position[]={8302.7266,75.940002,10058.99}; + }; + name="btc_hc_1"; + isPlayable=1; + id=153; + type="HeadlessClient_F"; + }; + class Item50 + { + dataType="Object"; + class PositionInfo + { + position[]={8272.0283,79.696327,10065.254}; + angles[]={0.17033349,0.95726073,6.2392135}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_6"; + }; + id=154; + type="rhsusf_M1237_M2_usarmy_d"; + atlOffset=-0.0018463135; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,8,1]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_M433_HEDP"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[30,20,11,10,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[4]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item51 + { + dataType="Object"; + class PositionInfo + { + position[]={8276.9688,79.675079,10059.785}; + angles[]={0.12205668,0.35431969,6.1297355}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_5"; + }; + id=155; + type="rhsusf_M1237_M2_usarmy_d"; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,8,1]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_M433_HEDP"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[30,20,11,10,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[4]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + }; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/mission_Tanoa.sqm b/=BTC=co@30_Hearts_and_Minds.Altis/mission_RHSUS_Tanoa.sqm similarity index 94% rename from =BTC=co@30_Hearts_and_Minds.Altis/mission_Tanoa.sqm rename to =BTC=co@30_Hearts_and_Minds.Altis/mission_RHSUS_Tanoa.sqm index 1857d241d..582515ccc 100644 --- a/=BTC=co@30_Hearts_and_Minds.Altis/mission_Tanoa.sqm +++ b/=BTC=co@30_Hearts_and_Minds.Altis/mission_RHSUS_Tanoa.sqm @@ -1,3840 +1,3840 @@ -version=53; -class EditorData -{ - moveGridStep=0.125; - angleGridStep=0.2617994; - scaleGridStep=0.1; - autoGroupingDist=10; - toggles=517; - class ItemIDProvider - { - nextID=249; - }; - class MarkerIDProvider - { - nextID=3; - }; - class Camera - { - pos[]={4207.9165,39.892441,4004.0476}; - dir[]={0.23425245,-0.75864172,0.60809433}; - up[]={0.2727313,0.6514526,0.70798182}; - aside[]={0.93324167,-1.1265511e-006,-0.35950708}; - }; -}; -binarizationWanted=0; -addons[]= -{ - "A3_Ui_F", - "RHS_US_A2_AirImport", - "A3_Structures_F_Ind_Cargo", - "ace_cargo", - "A3_Structures_F_Mil_Helipads", - "A3_Soft_F_Gamma_Truck_01", - "ace_realisticnames", - "ace_rearm", - "ace_refuel", - "ace_repair", - "A3_Structures_F_Mil_Flags", - "A3_Characters_F", - "ace_explosives", - "A3_Modules_F_Curator_Curator", - "RHS_US_A2Port_Armor", - "rhsusf_vehicles", - "rhsusf_c_fmtv", - "rhsusf_c_RG33L" -}; -class AddonsMetaData -{ - class List - { - items=16; - class Item0 - { - className="A3_Ui_F"; - name="Arma 3 - User Interface"; - author="Bohemia Interactive"; - url="https://www.arma3.com"; - }; - class Item1 - { - className="RHS_US_A2_AirImport"; - name="RHSUSF A2 Air Ports"; - url="http://www.rhsmods.org/"; - }; - class Item2 - { - className="A3_Structures_F_Ind"; - name="Arma 3 - Industrial Structures"; - author="Bohemia Interactive"; - url="https://www.arma3.com"; - }; - class Item3 - { - className="ace_cargo"; - name="ACE3 - Cargo"; - author="ACE-Team"; - url="http://ace3mod.com/"; - }; - class Item4 - { - className="A3_Structures_F_Mil"; - name="Arma 3 - Military Buildings and Structures"; - author="Bohemia Interactive"; - url="https://www.arma3.com"; - }; - class Item5 - { - className="A3_Soft_F_Gamma"; - name="Arma 3 - Unarmored Land Vehicles"; - author="Bohemia Interactive"; - url="https://www.arma3.com"; - }; - class Item6 - { - className="A3_Characters_F"; - name="Arma 3 Alpha - Characters and Clothing"; - author="Bohemia Interactive"; - url="https://www.arma3.com"; - }; - class Item7 - { - className="ace_rearm"; - name="ACE3 - Rearm"; - author="ACE-Team"; - url="http://ace3mod.com/"; - }; - class Item8 - { - className="ace_refuel"; - name="ACE3 - Refuel"; - author="ACE-Team"; - url="http://ace3mod.com/"; - }; - class Item9 - { - className="ace_repair"; - name="ACE3 - Repair"; - author="ACE-Team"; - url="http://ace3mod.com/"; - }; - class Item10 - { - className="ace_explosives"; - name="ACE3 - Explosives"; - author="ACE-Team"; - url="http://ace3mod.com/"; - }; - class Item11 - { - className="A3_Modules_F_Curator"; - name="Arma 3 Zeus Update - Scripted Modules"; - author="Bohemia Interactive"; - url="https://www.arma3.com"; - }; - class Item12 - { - className="RHS_US_A2Port_Armor"; - name="M2 Bradley IFV"; - url="http://www.rhsmods.org/"; - }; - class Item13 - { - className="rhsusf_vehicles"; - name="rhsusf_vehicles"; - }; - class Item14 - { - className="rhsusf_c_fmtv"; - name="FMTV Trucks"; - url="http://www.rhsmods.org/"; - }; - class Item15 - { - className="rhsusf_c_RG33L"; - name="RG33L MRAP"; - url="http://www.rhsmods.org/"; - }; - }; -}; -randomSeed=2442963; -class ScenarioData -{ - respawnDialog=0; - disabledAI=1; - respawn=3; - respawnDelay=5; - class Header - { - gameType="Coop"; - minPlayers=1; - maxPlayers=30; - }; -}; -class CustomAttributes -{ - class Category0 - { - name="Multiplayer"; - class Attribute0 - { - property="RespawnButton"; - expression="true"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1; - }; - }; - }; - class Attribute1 - { - property="RespawnTemplates"; - expression="true"; - class Value - { - class data - { - class type - { - type[]= - { - "ARRAY" - }; - }; - }; - }; - }; - nAttributes=2; - }; - class Category1 - { - name="Scenario"; - class Attribute0 - { - property="cba_settings_hash"; - expression="false"; - class Value - { - class data - { - class type - { - type[]= - { - "ARRAY" - }; - }; - class value - { - items=4; - class Item0 - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="#CBA_HASH#"; - }; - }; - class Item1 - { - class data - { - class type - { - type[]= - { - "ARRAY" - }; - }; - class value - { - items=4; - class Item0 - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="ace_medical_enablefor"; - }; - }; - class Item1 - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="ace_rearm_level"; - }; - }; - class Item2 - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="ace_respawn_savepredeathgear"; - }; - }; - class Item3 - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="ace_cargo_enable"; - }; - }; - }; - }; - }; - class Item2 - { - class data - { - class type - { - type[]= - { - "ARRAY" - }; - }; - class value - { - items=4; - class Item0 - { - class data - { - class type - { - type[]= - { - "ARRAY" - }; - }; - class value - { - items=2; - class Item0 - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1; - }; - }; - class Item1 - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=1; - }; - }; - }; - }; - }; - class Item1 - { - class data - { - class type - { - type[]= - { - "ARRAY" - }; - }; - class value - { - items=2; - class Item0 - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1; - }; - }; - class Item1 - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=1; - }; - }; - }; - }; - }; - class Item2 - { - class data - { - class type - { - type[]= - { - "ARRAY" - }; - }; - class value - { - items=2; - class Item0 - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=1; - }; - }; - class Item1 - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=1; - }; - }; - }; - }; - }; - class Item3 - { - class data - { - class type - { - type[]= - { - "ARRAY" - }; - }; - class value - { - items=2; - class Item0 - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - class Item1 - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=1; - }; - }; - }; - }; - }; - }; - }; - }; - class Item3 - { - class data - { - nil=1; - class type - { - type[]= - { - "ANY" - }; - }; - }; - }; - }; - }; - }; - }; - class Attribute1 - { - property="EnableDebugConsole"; - expression="true"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0; - }; - }; - }; - nAttributes=2; - }; -}; -class Mission -{ - class Intel - { - briefingName="=BTC= co 30 HEARTS AND MINDS"; - overviewText="by Giallustio"; - resistanceWest=0; - resistanceEast=1; - startWeather=0.29999998; - startWind=0.099999994; - startWaves=0.099999994; - forecastWeather=0.29999998; - forecastWind=0.099999994; - forecastWaves=0.099999994; - forecastLightnings=0.099999994; - rainForced=1; - lightningsForced=1; - wavesForced=1; - windForced=1; - year=2035; - month=6; - day=24; - hour=12; - minute=0; - startFogDecay=0.013; - forecastFogDecay=0.013; - }; - class Entities - { - items=52; - class Item0 - { - dataType="Marker"; - position[]={4231.5,360.625,4011.125}; - name="respawn_west"; - type="Empty"; - angle=33.149483; - id=0; - atlOffset=341.63031; - }; - class Item1 - { - dataType="Marker"; - position[]={4223.375,6.159635e+026,3993.75}; - name="btc_base"; - type="flag_NATO"; - id=1; - atlOffset=6.159635e+026; - }; - class Item2 - { - dataType="Marker"; - position[]={4253.5,6.159635e+026,3990.375}; - name="btc_log_point"; - text="Logistic Point"; - type="mil_flag"; - colorName="ColorGreen"; - a=0.5; - b=0.5; - id=2; - atlOffset=6.159635e+026; - }; - class Item3 - { - dataType="Object"; - class PositionInfo - { - position[]={4290.125,25.662582,3962.6953}; - angles[]={6.2432079,4.8979063,0.0053265258}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - name="btc_helo_1"; - }; - id=6; - type="RHS_CH_47F_10"; - atlOffset=0.0007686615; - class CustomAttributes - { - class Attribute0 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,10,2]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[12,4,2,2,4]],[[],[]],[[""B_Parachute""],[4]]],false]"; - }; - }; - }; - nAttributes=1; - }; - }; - class Item4 - { - dataType="Object"; - class PositionInfo - { - position[]={4245.125,19.769165,3990.25}; - angles[]={0,3.7038331,0.047961645}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="call{this allowDamage false; this enableSimulation false;}"; - name="btc_create_object"; - }; - id=13; - type="Land_CargoBox_V1_F"; - class CustomAttributes - { - class Attribute0 - { - property="ace_isMedicalFacility"; - expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=1; - }; - }; - class Item5 - { - dataType="Object"; - class PositionInfo - { - position[]={4253.375,19.517353,3990.375}; - angles[]={6.2671809,0.52167892,0.058608156}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - name="btc_create_object_point"; - }; - id=14; - type="Land_HelipadSquare_F"; - class CustomAttributes - { - class Attribute0 - { - property="ace_isRepairFacility"; - expression="_this setVariable ['ace_isRepairFacility',_value, true];"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1; - }; - }; - }; - class Attribute1 - { - property="ace_isMedicalFacility"; - expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=2; - }; - }; - class Item6 - { - dataType="Object"; - class PositionInfo - { - position[]={4225.4805,19.707785,4010.2305}; - angles[]={6.256525,1.0466481,0.0053265258}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this allowDamage false;"; - name="btc_gear_object"; - }; - id=15; - type="Land_CargoBox_V1_F"; - atlOffset=-0.00018310547; - class CustomAttributes - { - class Attribute0 - { - property="ace_isMedicalFacility"; - expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=1; - }; - }; - class Item7 - { - dataType="Object"; - class PositionInfo - { - position[]={4294.6011,23.503742,3994.0601}; - angles[]={0.034652505,4.8737464,0.039977662}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_10"; - }; - id=16; - type="RHS_AH64D"; - atlOffset=-0.16130447; - class CustomAttributes - { - class Attribute0 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit""],[2,4]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_m18_green"",""rhs_mag_m18_yellow"",""rhs_mag_m18_red"",""rhs_mag_m18_purple"",""rhs_mag_an_m8hc""],[8,2,2,2,2,2]],[[],[]],[[""B_Parachute""],[2]]],false]"; - }; - }; - }; - nAttributes=1; - }; - }; - class Item8 - { - dataType="Object"; - class PositionInfo - { - position[]={4293.625,21.394325,3994.5}; - angles[]={0.034652505,4.7827449,6.2805333}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - }; - id=17; - type="Land_HelipadSquare_F"; - class CustomAttributes - { - class Attribute0 - { - property="ace_isMedicalFacility"; - expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=1; - }; - }; - class Item9 - { - dataType="Object"; - class PositionInfo - { - position[]={4244.6074,22.12014,3918.6768}; - angles[]={0.050623242,1.6752416,0.12468291}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_11"; - }; - id=18; - type="B_Truck_01_ammo_F"; - atlOffset=-0.017528534; - class CustomAttributes - { - class Attribute0 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]"; - }; - }; - }; - nAttributes=1; - }; - }; - class Item10 - { - dataType="Object"; - class PositionInfo - { - position[]={4245.75,21.995382,3924.875}; - angles[]={0.021328852,1.6752416,0.14562827}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_12"; - }; - id=19; - type="B_Truck_01_fuel_F"; - atlOffset=-0.020908356; - class CustomAttributes - { - class Attribute0 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]"; - }; - }; - }; - nAttributes=1; - }; - }; - class Item11 - { - dataType="Object"; - class PositionInfo - { - position[]={4246.6548,22.44026,3930.334}; - angles[]={0.095706634,1.6752416,0.095706634}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_13"; - }; - id=20; - type="B_Truck_01_Repair_F"; - atlOffset=-0.02120018; - class CustomAttributes - { - class Attribute0 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]"; - }; - }; - }; - nAttributes=1; - }; - }; - class Item12 - { - dataType="Object"; - class PositionInfo - { - position[]={4224.5,22.85014,4002.75}; - angles[]={6.2778587,1.6527834,0.0026520467}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - }; - id=21; - type="Flag_NATO_F"; - class CustomAttributes - { - class Attribute0 - { - property="ace_isMedicalFacility"; - expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=1; - }; - }; - class Item13 - { - dataType="Object"; - class PositionInfo - { - position[]={4321.6724,24.29775,3992.0872}; - angles[]={6.2645216,4.9720054,0.039977662}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_14"; - }; - id=22; - type="RHS_UH1Y_d"; - atlOffset=-0.004776001; - class CustomAttributes - { - class Attribute0 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,10,2]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[12,4,2,2,4]],[[],[]],[[""B_Parachute""],[4]]],false]"; - }; - }; - }; - nAttributes=1; - }; - }; - class Item14 - { - dataType="Object"; - class PositionInfo - { - position[]={4319.625,22.049675,3992.5}; - angles[]={6.2645183,0.1613543,0.018667053}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - }; - id=23; - type="Land_HelipadSquare_F"; - class CustomAttributes - { - class Attribute0 - { - property="ace_isMedicalFacility"; - expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=1; - }; - }; - class Item15 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4212.5469,19.360876,4017.093}; - angles[]={6.2698536,4.3477578,6.259192}; - }; - side="West"; - flags=6; - class Attributes - { - skill=0.60000002; - init="this setVariable [""side_mission"",true]"; - description="Officer"; - isPlayer=1; - isPlayable=1; - }; - id=25; - type="B_officer_F"; - atlOffset=-3.8146973e-006; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.98000002; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=24; - atlOffset=-3.8146973e-006; - }; - class Item16 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4213.5083,19.405031,4022.5779}; - angles[]={6.2698536,4.3204784,6.2698536}; - }; - side="West"; - flags=6; - class Attributes - { - skill=0.60000002; - init="this setVariable [""interpreter"",true]"; - description="Interpreter"; - isPlayable=1; - }; - id=29; - type="B_Soldier_F"; - atlOffset=-1.9073486e-006; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.04; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=28; - atlOffset=-1.9073486e-006; - }; - class Item17 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4213.9482,19.380543,4021.1812}; - angles[]={6.2698507,4.1308804,6.2698507}; - }; - side="West"; - flags=6; - class Attributes - { - skill=0.60000002; - description="Advanced engineer"; - isPlayable=1; - }; - id=31; - type="B_engineer_F"; - atlOffset=1.9073486e-006; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="ace_isEngineer"; - expression="if (_value != -1) then {_this setVariable ['ace_isEngineer',_value, true];}"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=2; - }; - }; - }; - class Attribute2 - { - property="speaker"; - expression="_this setspeaker _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="Male02ENG"; - }; - }; - }; - class Attribute3 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.99000001; - }; - }; - }; - class Attribute4 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=5; - }; - }; - }; - class Attributes - { - }; - id=30; - atlOffset=1.9073486e-006; - }; - class Item18 - { - dataType="Logic"; - class PositionInfo - { - position[]={3985.1992,-5.0633116,3906.0693}; - angles[]={6.272521,0,0.093063653}; - }; - name="btc_curator"; - init="this addEventHandler ['CuratorObjectPlaced',{_this call btc_fnc_eh_CuratorObjectPlaced}];"; - id=71; - type="ModuleCurator_F"; - class CustomAttributes - { - class Attribute0 - { - property="ModuleCurator_F_Owner"; - expression="_this setVariable ['Owner',_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="#adminLogged"; - }; - }; - }; - class Attribute1 - { - property="ModuleCurator_F_Forced"; - expression="_this setVariable ['Forced',_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0; - }; - }; - }; - class Attribute2 - { - property="ModuleCurator_F_Name"; - expression="_this setVariable ['Name',_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value=""; - }; - }; - }; - class Attribute3 - { - property="ModuleInfo"; - expression="false"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=1; - }; - }; - }; - class Attribute4 - { - property="ModuleCurator_F_Addons"; - expression="_this setVariable ['Addons',_value,true];"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=3; - }; - }; - }; - nAttributes=5; - }; - }; - class Item19 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4202.4067,19.632608,4026.0737}; - angles[]={0,2.8130026,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=90; - type="B_medic_F"; - atlOffset=1.9073486e-006; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=89; - atlOffset=1.9073486e-006; - }; - class Item20 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4204.2739,19.586445,4026.7244}; - angles[]={0,2.8130026,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=92; - type="B_medic_F"; - atlOffset=-3.8146973e-006; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.98000002; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=91; - atlOffset=-3.8146973e-006; - }; - class Item21 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4205.6602,19.529768,4019.4685}; - angles[]={0,1.2144552,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=94; - type="B_Soldier_F"; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=93; - }; - class Item22 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4206.125,19.507095,4017.9248}; - angles[]={0,1.2144552,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=96; - type="B_Soldier_F"; - atlOffset=-3.8146973e-006; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=95; - atlOffset=-3.8146973e-006; - }; - class Item23 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4206.751,19.485619,4016.3379}; - angles[]={0,1.2144552,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=98; - type="B_Soldier_F"; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.01; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=97; - }; - class Item24 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4207.3213,19.4573,4014.6621}; - angles[]={0,1.2144552,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=100; - type="B_Soldier_F"; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.01; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=99; - }; - class Item25 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4207.875,19.426762,4013.0498}; - angles[]={0,1.2144552,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=102; - type="B_Soldier_F"; - atlOffset=1.9073486e-006; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.99000001; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=101; - atlOffset=1.9073486e-006; - }; - class Item26 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4208.4458,19.392982,4011.3767}; - angles[]={0,1.2144552,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=104; - type="B_Soldier_F"; - atlOffset=-3.8146973e-006; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.03; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=103; - atlOffset=-3.8146973e-006; - }; - class Item27 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4208.9639,19.36977,4009.9202}; - angles[]={0,1.2144552,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=106; - type="B_Soldier_F"; - atlOffset=-1.9073486e-006; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.02; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=105; - atlOffset=-1.9073486e-006; - }; - class Item28 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4209.5347,19.338087,4008.2456}; - angles[]={0,1.2144552,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=108; - type="B_Soldier_F"; - atlOffset=3.8146973e-006; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.05; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=107; - atlOffset=3.8146973e-006; - }; - class Item29 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4210.04,19.298412,4006.6853}; - angles[]={0,1.2144643,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=110; - type="B_Soldier_F"; - atlOffset=-1.9073486e-006; - }; - }; - class Attributes - { - }; - id=109; - atlOffset=-1.9073486e-006; - }; - class Item30 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4210.6113,19.249859,4005.011}; - angles[]={0,1.2144643,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=112; - type="B_Soldier_F"; - }; - }; - class Attributes - { - }; - id=111; - }; - class Item31 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4203.8584,19.552221,4018.7021}; - angles[]={0,1.2144552,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=114; - type="B_Soldier_F"; - atlOffset=-3.8146973e-006; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=113; - atlOffset=-3.8146973e-006; - }; - class Item32 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4204.375,19.535097,4017.2998}; - angles[]={0,1.2144552,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=116; - type="B_Soldier_F"; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.95999998; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=115; - }; - class Item33 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4204.9468,19.511341,4015.573}; - angles[]={0,1.2144552,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=118; - type="B_Soldier_F"; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.95999998; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=117; - }; - class Item34 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4205.519,19.489536,4013.8979}; - angles[]={0,1.2144552,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=120; - type="B_Soldier_F"; - atlOffset=-3.8146973e-006; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.97000003; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=119; - atlOffset=-3.8146973e-006; - }; - class Item35 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4206.125,19.470091,4011.9248}; - angles[]={0,1.2144552,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=122; - type="B_Soldier_F"; - atlOffset=-3.8146973e-006; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=0.99000001; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=121; - atlOffset=-3.8146973e-006; - }; - class Item36 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4206.75,19.44743,4010.2998}; - angles[]={0,1.2144552,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=124; - type="B_Soldier_F"; - atlOffset=-3.8146973e-006; - class CustomAttributes - { - class Attribute0 - { - property="ace_isHandcuffed"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - class Attribute1 - { - property="pitch"; - expression="_this setpitch _value;"; - class Value - { - class data - { - class type - { - type[]= - { - "SCALAR" - }; - }; - value=1.03; - }; - }; - }; - class Attribute2 - { - property="ace_isSurrendered"; - expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; - class Value - { - class data - { - class type - { - type[]= - { - "BOOL" - }; - }; - value=0; - }; - }; - }; - nAttributes=3; - }; - }; - }; - class Attributes - { - }; - id=123; - atlOffset=-3.8146973e-006; - }; - class Item37 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4207.1621,19.432291,4009.155}; - angles[]={0,1.2144643,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=126; - type="B_Soldier_F"; - atlOffset=-5.7220459e-006; - }; - }; - class Attributes - { - }; - id=125; - atlOffset=-5.7220459e-006; - }; - class Item38 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4207.7329,19.386436,4007.4795}; - angles[]={0,1.2144643,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=128; - type="B_Soldier_F"; - atlOffset=-3.8146973e-006; - }; - }; - class Attributes - { - }; - id=127; - atlOffset=-3.8146973e-006; - }; - class Item39 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4208.2378,19.338343,4005.9192}; - angles[]={0,1.2144643,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=130; - type="B_Soldier_F"; - atlOffset=5.7220459e-006; - }; - }; - class Attributes - { - }; - id=129; - atlOffset=5.7220459e-006; - }; - class Item40 - { - dataType="Group"; - side="West"; - class Entities - { - items=1; - class Item0 - { - dataType="Object"; - class PositionInfo - { - position[]={4208.8101,19.29657,4004.2451}; - angles[]={0,1.2144643,0}; - }; - side="West"; - flags=7; - class Attributes - { - isPlayable=1; - }; - id=132; - type="B_Soldier_F"; - }; - }; - class Attributes - { - }; - id=131; - }; - class Item41 - { - dataType="Object"; - class PositionInfo - { - position[]={4265.0215,22.082785,3986.5215}; - angles[]={6.2698536,3.7083344,0.079830162}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true];"; - name="btc_veh_1"; - }; - id=213; - type="RHS_M2A3_wd"; - atlOffset=-0.0076828003; - class CustomAttributes - { - class Attribute0 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""rhs_weap_m4_carryhandle_pmag"",""rhs_weap_fgm148"",""FirstAidKit"",""Medikit""],[4,2,10,2]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhsusf_100Rnd_762x51"",""rhs_fgm148_magazine_AT"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[75,11,11,4,20,8,4,10,4,4,10]],[[""ToolKit""],[1]],[[""rhsusf_falconii""],[8]]],false]"; - }; - }; - }; - nAttributes=1; - }; - }; - class Item42 - { - dataType="Object"; - class PositionInfo - { - position[]={4213.5605,20.973347,3988.6531}; - angles[]={6.2007008,0.836833,0.0053407075}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_7"; - }; - id=214; - type="rhsusf_m1025_w_m2"; - class CustomAttributes - { - class Attribute0 - { - property="rhs_decalMask"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute1 - { - property="rhs_decalDoors"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute2 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; - }; - }; - }; - nAttributes=3; - }; - }; - class Item43 - { - dataType="Object"; - class PositionInfo - { - position[]={4219.061,20.742113,3984.6533}; - angles[]={6.2405472,0.43331289,0.010663962}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_2"; - }; - id=215; - type="rhsusf_m1025_w_m2"; - class CustomAttributes - { - class Attribute0 - { - property="rhs_decalMask"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute1 - { - property="rhs_decalDoors"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute2 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; - }; - }; - }; - nAttributes=3; - }; - }; - class Item44 - { - dataType="Object"; - class PositionInfo - { - position[]={4224.6836,20.637239,3981.2756}; - angles[]={6.2272477,0.45174354,0.0079936078}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_3"; - }; - id=216; - type="rhsusf_m1025_w_m2"; - atlOffset=1.9073486e-006; - class CustomAttributes - { - class Attribute0 - { - property="rhs_decalMask"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute1 - { - property="rhs_decalDoors"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute2 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; - }; - }; - }; - nAttributes=3; - }; - }; - class Item45 - { - dataType="Object"; - class PositionInfo - { - position[]={4242.1729,20.918491,3972.4004}; - angles[]={6.251193,0.4537856,0.14301229}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_4"; - }; - id=217; - type="rhsusf_m1025_w_m2"; - class CustomAttributes - { - class Attribute0 - { - property="rhs_decalMask"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute1 - { - property="rhs_decalDoors"; - expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="NoChange"; - }; - }; - }; - class Attribute2 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; - }; - }; - }; - nAttributes=3; - }; - }; - class Item46 - { - dataType="Object"; - class PositionInfo - { - position[]={4248.0615,21.338169,3969.1675}; - angles[]={0.045302324,0.4537856,0.10890055}; - }; - side="Empty"; - flags=4; - class Attributes - { - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_15"; - }; - id=241; - type="rhsusf_M1078A1P2_B_WD_fmtv_usarmy"; - atlOffset=-0.27951813; - class CustomAttributes - { - class Attribute0 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit""],[2,4]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[10,2,2,2,4]],[[""ToolKit""],[1]],[[""rhsusf_falconii""],[1]]],false]"; - }; - }; - }; - nAttributes=1; - }; - }; - class Item47 - { - dataType="Object"; - class PositionInfo - { - position[]={4233.0352,21.638979,3999.2959}; - angles[]={0,3.3611374,0.0079936078}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_8"; - }; - id=244; - type="rhsusf_M1078A1P2_B_M2_WD_open_fmtv_usarmy"; - class CustomAttributes - { - class Attribute0 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]"; - }; - }; - }; - nAttributes=1; - }; - }; - class Item48 - { - dataType="Object"; - class PositionInfo - { - position[]={4240.4561,21.697552,3995.7307}; - angles[]={6.2805324,3.3253233,0.016004669}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_9"; - }; - id=245; - type="rhsusf_M1078A1P2_B_M2_WD_open_fmtv_usarmy"; - class CustomAttributes - { - class Attribute0 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]"; - }; - }; - }; - nAttributes=1; - }; - }; - class Item49 - { - dataType="Logic"; - class PositionInfo - { - position[]={4206.125,19.548992,4027.375}; - angles[]={6.2805109,0,6.2618566}; - }; - name="btc_hc_1"; - isPlayable=1; - id=246; - type="HeadlessClient_F"; - }; - class Item50 - { - dataType="Object"; - class PositionInfo - { - position[]={4230.4194,19.875408,3979.3396}; - angles[]={6.2352238,0.38933057,0.0079936078}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_6"; - }; - id=247; - type="rhsusf_M1237_M2_usarmy_wd"; - atlOffset=-0.0060005188; - class CustomAttributes - { - class Attribute0 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,8,1]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_M433_HEDP"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[30,20,11,10,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[4]]],false]"; - }; - }; - }; - nAttributes=1; - }; - }; - class Item51 - { - dataType="Object"; - class PositionInfo - { - position[]={4235.7686,19.755186,3975.4988}; - angles[]={6.1980653,0.46773079,0.071872659}; - }; - side="Empty"; - flags=4; - class Attributes - { - skill=0.60000002; - init="this setVariable [""btc_dont_delete"",true]"; - name="btc_veh_5"; - }; - id=248; - type="rhsusf_M1237_M2_usarmy_wd"; - class CustomAttributes - { - class Attribute0 - { - property="ammoBox"; - expression="[_this,_value] call bis_fnc_initAmmoBox;"; - class Value - { - class data - { - class type - { - type[]= - { - "STRING" - }; - }; - value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,8,1]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_M433_HEDP"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[30,20,11,10,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[4]]],false]"; - }; - }; - }; - nAttributes=1; - }; - }; - }; -}; +version=53; +class EditorData +{ + moveGridStep=0.125; + angleGridStep=0.2617994; + scaleGridStep=0.1; + autoGroupingDist=10; + toggles=517; + class ItemIDProvider + { + nextID=249; + }; + class MarkerIDProvider + { + nextID=3; + }; + class Camera + { + pos[]={4207.9165,39.892441,4004.0476}; + dir[]={0.23425245,-0.75864172,0.60809433}; + up[]={0.2727313,0.6514526,0.70798182}; + aside[]={0.93324167,-1.1265511e-006,-0.35950708}; + }; +}; +binarizationWanted=0; +addons[]= +{ + "A3_Ui_F", + "RHS_US_A2_AirImport", + "A3_Structures_F_Ind_Cargo", + "ace_cargo", + "A3_Structures_F_Mil_Helipads", + "A3_Soft_F_Gamma_Truck_01", + "ace_realisticnames", + "ace_rearm", + "ace_refuel", + "ace_repair", + "A3_Structures_F_Mil_Flags", + "A3_Characters_F", + "ace_explosives", + "A3_Modules_F_Curator_Curator", + "RHS_US_A2Port_Armor", + "rhsusf_vehicles", + "rhsusf_c_fmtv", + "rhsusf_c_RG33L" +}; +class AddonsMetaData +{ + class List + { + items=16; + class Item0 + { + className="A3_Ui_F"; + name="Arma 3 - User Interface"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item1 + { + className="RHS_US_A2_AirImport"; + name="RHSUSF A2 Air Ports"; + url="http://www.rhsmods.org/"; + }; + class Item2 + { + className="A3_Structures_F_Ind"; + name="Arma 3 - Industrial Structures"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item3 + { + className="ace_cargo"; + name="ACE3 - Cargo"; + author="ACE-Team"; + url="http://ace3mod.com/"; + }; + class Item4 + { + className="A3_Structures_F_Mil"; + name="Arma 3 - Military Buildings and Structures"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item5 + { + className="A3_Soft_F_Gamma"; + name="Arma 3 - Unarmored Land Vehicles"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item6 + { + className="A3_Characters_F"; + name="Arma 3 Alpha - Characters and Clothing"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item7 + { + className="ace_rearm"; + name="ACE3 - Rearm"; + author="ACE-Team"; + url="http://ace3mod.com/"; + }; + class Item8 + { + className="ace_refuel"; + name="ACE3 - Refuel"; + author="ACE-Team"; + url="http://ace3mod.com/"; + }; + class Item9 + { + className="ace_repair"; + name="ACE3 - Repair"; + author="ACE-Team"; + url="http://ace3mod.com/"; + }; + class Item10 + { + className="ace_explosives"; + name="ACE3 - Explosives"; + author="ACE-Team"; + url="http://ace3mod.com/"; + }; + class Item11 + { + className="A3_Modules_F_Curator"; + name="Arma 3 Zeus Update - Scripted Modules"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item12 + { + className="RHS_US_A2Port_Armor"; + name="M2 Bradley IFV"; + url="http://www.rhsmods.org/"; + }; + class Item13 + { + className="rhsusf_vehicles"; + name="rhsusf_vehicles"; + }; + class Item14 + { + className="rhsusf_c_fmtv"; + name="FMTV Trucks"; + url="http://www.rhsmods.org/"; + }; + class Item15 + { + className="rhsusf_c_RG33L"; + name="RG33L MRAP"; + url="http://www.rhsmods.org/"; + }; + }; +}; +randomSeed=2442963; +class ScenarioData +{ + respawnDialog=0; + disabledAI=1; + respawn=3; + respawnDelay=5; + class Header + { + gameType="Coop"; + minPlayers=1; + maxPlayers=30; + }; +}; +class CustomAttributes +{ + class Category0 + { + name="Multiplayer"; + class Attribute0 + { + property="RespawnButton"; + expression="true"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute1 + { + property="RespawnTemplates"; + expression="true"; + class Value + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + }; + }; + }; + nAttributes=2; + }; + class Category1 + { + name="Scenario"; + class Attribute0 + { + property="cba_settings_hash"; + expression="false"; + class Value + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + class value + { + items=4; + class Item0 + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="#CBA_HASH#"; + }; + }; + class Item1 + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + class value + { + items=4; + class Item0 + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="ace_medical_enablefor"; + }; + }; + class Item1 + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="ace_rearm_level"; + }; + }; + class Item2 + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="ace_respawn_savepredeathgear"; + }; + }; + class Item3 + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="ace_cargo_enable"; + }; + }; + }; + }; + }; + class Item2 + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + class value + { + items=4; + class Item0 + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + class value + { + items=2; + class Item0 + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + class Item1 + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item1 + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + class value + { + items=2; + class Item0 + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + class Item1 + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item2 + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + class value + { + items=2; + class Item0 + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + class Item1 + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item3 + { + class data + { + class type + { + type[]= + { + "ARRAY" + }; + }; + class value + { + items=2; + class Item0 + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + class Item1 + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + }; + }; + }; + class Item3 + { + class data + { + nil=1; + class type + { + type[]= + { + "ANY" + }; + }; + }; + }; + }; + }; + }; + }; + class Attribute1 + { + property="EnableDebugConsole"; + expression="true"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + nAttributes=2; + }; +}; +class Mission +{ + class Intel + { + briefingName="=BTC= co 30 HEARTS AND MINDS"; + overviewText="by Giallustio"; + resistanceWest=0; + resistanceEast=1; + startWeather=0.29999998; + startWind=0.099999994; + startWaves=0.099999994; + forecastWeather=0.29999998; + forecastWind=0.099999994; + forecastWaves=0.099999994; + forecastLightnings=0.099999994; + rainForced=1; + lightningsForced=1; + wavesForced=1; + windForced=1; + year=2035; + month=6; + day=24; + hour=12; + minute=0; + startFogDecay=0.013; + forecastFogDecay=0.013; + }; + class Entities + { + items=52; + class Item0 + { + dataType="Marker"; + position[]={4231.5,360.625,4011.125}; + name="respawn_west"; + type="Empty"; + angle=33.149483; + id=0; + atlOffset=341.63031; + }; + class Item1 + { + dataType="Marker"; + position[]={4223.375,6.159635e+026,3993.75}; + name="btc_base"; + type="flag_NATO"; + id=1; + atlOffset=6.159635e+026; + }; + class Item2 + { + dataType="Marker"; + position[]={4253.5,6.159635e+026,3990.375}; + name="btc_log_point"; + text=$STR_BTC_HAM_MSQM_MRK_LOGPOINT; + type="mil_flag"; + colorName="ColorGreen"; + a=0.5; + b=0.5; + id=2; + atlOffset=6.159635e+026; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={4290.125,25.662582,3962.6953}; + angles[]={6.2432079,4.8979063,0.0053265258}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + name="btc_helo_1"; + }; + id=6; + type="RHS_CH_47F_10"; + atlOffset=0.0007686615; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,10,2]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[12,4,2,2,4]],[[],[]],[[""B_Parachute""],[4]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item4 + { + dataType="Object"; + class PositionInfo + { + position[]={4245.125,19.769165,3990.25}; + angles[]={0,3.7038331,0.047961645}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="call{this allowDamage false; this enableSimulation false;}"; + name="btc_create_object"; + }; + id=13; + type="Land_CargoBox_V1_F"; + class CustomAttributes + { + class Attribute0 + { + property="ace_isMedicalFacility"; + expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=1; + }; + }; + class Item5 + { + dataType="Object"; + class PositionInfo + { + position[]={4253.375,19.517353,3990.375}; + angles[]={6.2671809,0.52167892,0.058608156}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + name="btc_create_object_point"; + }; + id=14; + type="Land_HelipadSquare_F"; + class CustomAttributes + { + class Attribute0 + { + property="ace_isRepairFacility"; + expression="_this setVariable ['ace_isRepairFacility',_value, true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute1 + { + property="ace_isMedicalFacility"; + expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item6 + { + dataType="Object"; + class PositionInfo + { + position[]={4225.4805,19.707785,4010.2305}; + angles[]={6.256525,1.0466481,0.0053265258}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this allowDamage false;"; + name="btc_gear_object"; + }; + id=15; + type="Land_CargoBox_V1_F"; + atlOffset=-0.00018310547; + class CustomAttributes + { + class Attribute0 + { + property="ace_isMedicalFacility"; + expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=1; + }; + }; + class Item7 + { + dataType="Object"; + class PositionInfo + { + position[]={4294.6011,23.503742,3994.0601}; + angles[]={0.034652505,4.8737464,0.039977662}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_10"; + }; + id=16; + type="RHS_AH64D"; + atlOffset=-0.16130447; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit""],[2,4]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_m18_green"",""rhs_mag_m18_yellow"",""rhs_mag_m18_red"",""rhs_mag_m18_purple"",""rhs_mag_an_m8hc""],[8,2,2,2,2,2]],[[],[]],[[""B_Parachute""],[2]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item8 + { + dataType="Object"; + class PositionInfo + { + position[]={4293.625,21.394325,3994.5}; + angles[]={0.034652505,4.7827449,6.2805333}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + }; + id=17; + type="Land_HelipadSquare_F"; + class CustomAttributes + { + class Attribute0 + { + property="ace_isMedicalFacility"; + expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=1; + }; + }; + class Item9 + { + dataType="Object"; + class PositionInfo + { + position[]={4244.6074,22.12014,3918.6768}; + angles[]={0.050623242,1.6752416,0.12468291}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_11"; + }; + id=18; + type="B_Truck_01_ammo_F"; + atlOffset=-0.017528534; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item10 + { + dataType="Object"; + class PositionInfo + { + position[]={4245.75,21.995382,3924.875}; + angles[]={0.021328852,1.6752416,0.14562827}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_12"; + }; + id=19; + type="B_Truck_01_fuel_F"; + atlOffset=-0.020908356; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item11 + { + dataType="Object"; + class PositionInfo + { + position[]={4246.6548,22.44026,3930.334}; + angles[]={0.095706634,1.6752416,0.095706634}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_13"; + }; + id=20; + type="B_Truck_01_Repair_F"; + atlOffset=-0.02120018; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item12 + { + dataType="Object"; + class PositionInfo + { + position[]={4224.5,22.85014,4002.75}; + angles[]={6.2778587,1.6527834,0.0026520467}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + }; + id=21; + type="Flag_NATO_F"; + class CustomAttributes + { + class Attribute0 + { + property="ace_isMedicalFacility"; + expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=1; + }; + }; + class Item13 + { + dataType="Object"; + class PositionInfo + { + position[]={4321.6724,24.29775,3992.0872}; + angles[]={6.2645216,4.9720054,0.039977662}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_14"; + }; + id=22; + type="RHS_UH1Y_d"; + atlOffset=-0.004776001; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,10,2]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[12,4,2,2,4]],[[],[]],[[""B_Parachute""],[4]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item14 + { + dataType="Object"; + class PositionInfo + { + position[]={4319.625,22.049675,3992.5}; + angles[]={6.2645183,0.1613543,0.018667053}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + }; + id=23; + type="Land_HelipadSquare_F"; + class CustomAttributes + { + class Attribute0 + { + property="ace_isMedicalFacility"; + expression="_this setVariable [""ace_medical_isMedicalFacility"",_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=1; + }; + }; + class Item15 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4212.5469,19.360876,4017.093}; + angles[]={6.2698536,4.3477578,6.259192}; + }; + side="West"; + flags=6; + class Attributes + { + skill=0.60000002; + init="this setVariable [""side_mission"",true]"; + description=$STR_BTC_HAM_MSQM_OFFICER; + isPlayer=1; + isPlayable=1; + }; + id=25; + type="B_officer_F"; + atlOffset=-3.8146973e-006; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.98000002; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=24; + atlOffset=-3.8146973e-006; + }; + class Item16 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4213.5083,19.405031,4022.5779}; + angles[]={6.2698536,4.3204784,6.2698536}; + }; + side="West"; + flags=6; + class Attributes + { + skill=0.60000002; + init="this setVariable [""interpreter"",true]"; + description=$STR_BTC_HAM_MSQM_INTERPRETER; + isPlayable=1; + }; + id=29; + type="B_Soldier_F"; + atlOffset=-1.9073486e-006; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.04; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=28; + atlOffset=-1.9073486e-006; + }; + class Item17 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4213.9482,19.380543,4021.1812}; + angles[]={6.2698507,4.1308804,6.2698507}; + }; + side="West"; + flags=6; + class Attributes + { + skill=0.60000002; + description=$STR_ACE_Repair_AssignEngineerRole_role_advanced; + isPlayable=1; + }; + id=31; + type="B_engineer_F"; + atlOffset=1.9073486e-006; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="ace_isEngineer"; + expression="if (_value != -1) then {_this setVariable ['ace_isEngineer',_value, true];}"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=2; + }; + }; + }; + class Attribute2 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="Male02ENG"; + }; + }; + }; + class Attribute3 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.99000001; + }; + }; + }; + class Attribute4 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=5; + }; + }; + }; + class Attributes + { + }; + id=30; + atlOffset=1.9073486e-006; + }; + class Item18 + { + dataType="Logic"; + class PositionInfo + { + position[]={3985.1992,-5.0633116,3906.0693}; + angles[]={6.272521,0,0.093063653}; + }; + name="btc_curator"; + init="this addEventHandler ['CuratorObjectPlaced',{_this call btc_fnc_eh_CuratorObjectPlaced}];"; + id=71; + type="ModuleCurator_F"; + class CustomAttributes + { + class Attribute0 + { + property="ModuleCurator_F_Owner"; + expression="_this setVariable ['Owner',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="#adminLogged"; + }; + }; + }; + class Attribute1 + { + property="ModuleCurator_F_Forced"; + expression="_this setVariable ['Forced',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + class Attribute2 + { + property="ModuleCurator_F_Name"; + expression="_this setVariable ['Name',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value=""; + }; + }; + }; + class Attribute3 + { + property="ModuleInfo"; + expression="false"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute4 + { + property="ModuleCurator_F_Addons"; + expression="_this setVariable ['Addons',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=3; + }; + }; + }; + nAttributes=5; + }; + }; + class Item19 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4202.4067,19.632608,4026.0737}; + angles[]={0,2.8130026,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=90; + type="B_medic_F"; + atlOffset=1.9073486e-006; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=89; + atlOffset=1.9073486e-006; + }; + class Item20 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4204.2739,19.586445,4026.7244}; + angles[]={0,2.8130026,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=92; + type="B_medic_F"; + atlOffset=-3.8146973e-006; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.98000002; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=91; + atlOffset=-3.8146973e-006; + }; + class Item21 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4205.6602,19.529768,4019.4685}; + angles[]={0,1.2144552,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=94; + type="B_Soldier_F"; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=93; + }; + class Item22 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4206.125,19.507095,4017.9248}; + angles[]={0,1.2144552,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=96; + type="B_Soldier_F"; + atlOffset=-3.8146973e-006; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=95; + atlOffset=-3.8146973e-006; + }; + class Item23 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4206.751,19.485619,4016.3379}; + angles[]={0,1.2144552,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=98; + type="B_Soldier_F"; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.01; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=97; + }; + class Item24 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4207.3213,19.4573,4014.6621}; + angles[]={0,1.2144552,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=100; + type="B_Soldier_F"; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.01; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=99; + }; + class Item25 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4207.875,19.426762,4013.0498}; + angles[]={0,1.2144552,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=102; + type="B_Soldier_F"; + atlOffset=1.9073486e-006; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.99000001; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=101; + atlOffset=1.9073486e-006; + }; + class Item26 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4208.4458,19.392982,4011.3767}; + angles[]={0,1.2144552,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=104; + type="B_Soldier_F"; + atlOffset=-3.8146973e-006; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.03; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=103; + atlOffset=-3.8146973e-006; + }; + class Item27 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4208.9639,19.36977,4009.9202}; + angles[]={0,1.2144552,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=106; + type="B_Soldier_F"; + atlOffset=-1.9073486e-006; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.02; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=105; + atlOffset=-1.9073486e-006; + }; + class Item28 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4209.5347,19.338087,4008.2456}; + angles[]={0,1.2144552,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=108; + type="B_Soldier_F"; + atlOffset=3.8146973e-006; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.05; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=107; + atlOffset=3.8146973e-006; + }; + class Item29 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4210.04,19.298412,4006.6853}; + angles[]={0,1.2144643,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=110; + type="B_Soldier_F"; + atlOffset=-1.9073486e-006; + }; + }; + class Attributes + { + }; + id=109; + atlOffset=-1.9073486e-006; + }; + class Item30 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4210.6113,19.249859,4005.011}; + angles[]={0,1.2144643,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=112; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=111; + }; + class Item31 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4203.8584,19.552221,4018.7021}; + angles[]={0,1.2144552,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=114; + type="B_Soldier_F"; + atlOffset=-3.8146973e-006; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=113; + atlOffset=-3.8146973e-006; + }; + class Item32 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4204.375,19.535097,4017.2998}; + angles[]={0,1.2144552,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=116; + type="B_Soldier_F"; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.95999998; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=115; + }; + class Item33 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4204.9468,19.511341,4015.573}; + angles[]={0,1.2144552,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=118; + type="B_Soldier_F"; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.95999998; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=117; + }; + class Item34 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4205.519,19.489536,4013.8979}; + angles[]={0,1.2144552,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=120; + type="B_Soldier_F"; + atlOffset=-3.8146973e-006; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.97000003; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=119; + atlOffset=-3.8146973e-006; + }; + class Item35 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4206.125,19.470091,4011.9248}; + angles[]={0,1.2144552,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=122; + type="B_Soldier_F"; + atlOffset=-3.8146973e-006; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.99000001; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=121; + atlOffset=-3.8146973e-006; + }; + class Item36 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4206.75,19.44743,4010.2998}; + angles[]={0,1.2144552,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=124; + type="B_Soldier_F"; + atlOffset=-3.8146973e-006; + class CustomAttributes + { + class Attribute0 + { + property="ace_isHandcuffed"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleHandcuffed}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1.03; + }; + }; + }; + class Attribute2 + { + property="ace_isSurrendered"; + expression="if (_value) then {[objNull,[_this],true] call ace_captives_fnc_moduleSurrender}"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + nAttributes=3; + }; + }; + }; + class Attributes + { + }; + id=123; + atlOffset=-3.8146973e-006; + }; + class Item37 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4207.1621,19.432291,4009.155}; + angles[]={0,1.2144643,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=126; + type="B_Soldier_F"; + atlOffset=-5.7220459e-006; + }; + }; + class Attributes + { + }; + id=125; + atlOffset=-5.7220459e-006; + }; + class Item38 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4207.7329,19.386436,4007.4795}; + angles[]={0,1.2144643,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=128; + type="B_Soldier_F"; + atlOffset=-3.8146973e-006; + }; + }; + class Attributes + { + }; + id=127; + atlOffset=-3.8146973e-006; + }; + class Item39 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4208.2378,19.338343,4005.9192}; + angles[]={0,1.2144643,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=130; + type="B_Soldier_F"; + atlOffset=5.7220459e-006; + }; + }; + class Attributes + { + }; + id=129; + atlOffset=5.7220459e-006; + }; + class Item40 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={4208.8101,19.29657,4004.2451}; + angles[]={0,1.2144643,0}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayable=1; + }; + id=132; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=131; + }; + class Item41 + { + dataType="Object"; + class PositionInfo + { + position[]={4265.0215,22.082785,3986.5215}; + angles[]={6.2698536,3.7083344,0.079830162}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true];"; + name="btc_veh_1"; + }; + id=213; + type="RHS_M2A3_wd"; + atlOffset=-0.0076828003; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle_pmag"",""rhs_weap_fgm148"",""FirstAidKit"",""Medikit""],[4,2,10,2]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhsusf_100Rnd_762x51"",""rhs_fgm148_magazine_AT"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[75,11,11,4,20,8,4,10,4,4,10]],[[""ToolKit""],[1]],[[""rhsusf_falconii""],[8]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item42 + { + dataType="Object"; + class PositionInfo + { + position[]={4213.5605,20.973347,3988.6531}; + angles[]={6.2007008,0.836833,0.0053407075}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_7"; + }; + id=214; + type="rhsusf_m1025_w_m2"; + class CustomAttributes + { + class Attribute0 + { + property="rhs_decalMask"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute1 + { + property="rhs_decalDoors"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute2 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; + }; + }; + }; + nAttributes=3; + }; + }; + class Item43 + { + dataType="Object"; + class PositionInfo + { + position[]={4219.061,20.742113,3984.6533}; + angles[]={6.2405472,0.43331289,0.010663962}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_2"; + }; + id=215; + type="rhsusf_m1025_w_m2"; + class CustomAttributes + { + class Attribute0 + { + property="rhs_decalMask"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute1 + { + property="rhs_decalDoors"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute2 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; + }; + }; + }; + nAttributes=3; + }; + }; + class Item44 + { + dataType="Object"; + class PositionInfo + { + position[]={4224.6836,20.637239,3981.2756}; + angles[]={6.2272477,0.45174354,0.0079936078}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_3"; + }; + id=216; + type="rhsusf_m1025_w_m2"; + atlOffset=1.9073486e-006; + class CustomAttributes + { + class Attribute0 + { + property="rhs_decalMask"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute1 + { + property="rhs_decalDoors"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute2 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; + }; + }; + }; + nAttributes=3; + }; + }; + class Item45 + { + dataType="Object"; + class PositionInfo + { + position[]={4242.1729,20.918491,3972.4004}; + angles[]={6.251193,0.4537856,0.14301229}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_4"; + }; + id=217; + type="rhsusf_m1025_w_m2"; + class CustomAttributes + { + class Attribute0 + { + property="rhs_decalMask"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_1',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute1 + { + property="rhs_decalDoors"; + expression="if(_value != 'NoChange')then{ [_this,'unitdecals_2',_value] call rhs_fnc_hmmwv_setDecal}"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="NoChange"; + }; + }; + }; + class Attribute2 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""rhs_weap_M136_hedp"",""FirstAidKit""],[2,2,4]],[[""rhs_m136_hedp_mag"",""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[2,20,8,16,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[2]]],false]"; + }; + }; + }; + nAttributes=3; + }; + }; + class Item46 + { + dataType="Object"; + class PositionInfo + { + position[]={4248.0615,21.338169,3969.1675}; + angles[]={0.045302324,0.4537856,0.10890055}; + }; + side="Empty"; + flags=4; + class Attributes + { + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_15"; + }; + id=241; + type="rhsusf_M1078A1P2_B_WD_fmtv_usarmy"; + atlOffset=-0.27951813; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit""],[2,4]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[10,2,2,2,4]],[[""ToolKit""],[1]],[[""rhsusf_falconii""],[1]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item47 + { + dataType="Object"; + class PositionInfo + { + position[]={4233.0352,21.638979,3999.2959}; + angles[]={0,3.3611374,0.0079936078}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_8"; + }; + id=244; + type="rhsusf_M1078A1P2_B_M2_WD_open_fmtv_usarmy"; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item48 + { + dataType="Object"; + class PositionInfo + { + position[]={4240.4561,21.697552,3995.7307}; + angles[]={6.2805324,3.3253233,0.016004669}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_9"; + }; + id=245; + type="rhsusf_M1078A1P2_B_M2_WD_open_fmtv_usarmy"; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""FirstAidKit""],[10]],[[],[]],[[],[]],[[],[]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item49 + { + dataType="Logic"; + class PositionInfo + { + position[]={4206.125,19.548992,4027.375}; + angles[]={6.2805109,0,6.2618566}; + }; + name="btc_hc_1"; + isPlayable=1; + id=246; + type="HeadlessClient_F"; + }; + class Item50 + { + dataType="Object"; + class PositionInfo + { + position[]={4230.4194,19.875408,3979.3396}; + angles[]={6.2352238,0.38933057,0.0079936078}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_6"; + }; + id=247; + type="rhsusf_M1237_M2_usarmy_wd"; + atlOffset=-0.0060005188; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,8,1]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_M433_HEDP"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[30,20,11,10,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[4]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + class Item51 + { + dataType="Object"; + class PositionInfo + { + position[]={4235.7686,19.755186,3975.4988}; + angles[]={6.1980653,0.46773079,0.071872659}; + }; + side="Empty"; + flags=4; + class Attributes + { + skill=0.60000002; + init="this setVariable [""btc_dont_delete"",true]"; + name="btc_veh_5"; + }; + id=248; + type="rhsusf_M1237_M2_usarmy_wd"; + class CustomAttributes + { + class Attribute0 + { + property="ammoBox"; + expression="[_this,_value] call bis_fnc_initAmmoBox;"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="[[[[""rhs_weap_m4_carryhandle"",""FirstAidKit"",""Medikit""],[2,8,1]],[[""rhs_mag_30Rnd_556x45_M855A1_Stanag"",""rhs_mag_M433_HEDP"",""rhsusf_100Rnd_556x45_soft_pouch"",""rhs_mag_M441_HE"",""rhs_mag_m714_White"",""rhs_mag_m662_red"",""rhs_mag_m67"",""rhs_mag_m18_green"",""rhs_mag_m18_red"",""rhs_mag_an_m8hc""],[30,20,11,10,4,2,4,2,2,4]],[[],[]],[[""rhsusf_falconii""],[4]]],false]"; + }; + }; + }; + nAttributes=1; + }; + }; + }; +}; diff --git a/=BTC=co@30_Hearts_and_Minds.Altis/stringtable.xml b/=BTC=co@30_Hearts_and_Minds.Altis/stringtable.xml new file mode 100644 index 000000000..1ace2e281 --- /dev/null +++ b/=BTC=co@30_Hearts_and_Minds.Altis/stringtable.xml @@ -0,0 +1,1465 @@ + + + + + + Hearts and Minds + Hearts and Minds + + + Giallustio + Giallustio + + + www.blacktemplars.altervista.org + www.blacktemplars.altervista.org + + + + + + + Interpreter + Dolmetscher + + + Officer + Offizier + + + Logistic Point + Logistikpunkt + + + + + + + Arsenal/Re-deploy + Arsenal/Verlegen + + + Rearm/Repair and Objects + Aufmunitionieren und Reparieren von Fahrzeugen + + + Only Respawnable + Respawnt bei Zertörung + + + Base overview. Loading ... + Basisübersicht. Lade ... + + + + + + + Documentation + Dokumentation + + + + + Headless and Database + Headless Client und Datanbank + + + <img image='\a3\ui_f\data\map\vehicleicons\iconvirtual_ca.paa' width='20' height='20'/> This mission automatically uses one Headless client when available.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa' width='20' height='20'/> This mission has a database system. Enemy units, towns, hideouts, cache, objects created by players or Zeus, vehicles, players markers (not lines) on global/camp channel are saved. All admin can save mission progress at any time with his self interaction key. + <img image='\a3\ui_f\data\map\vehicleicons\iconvirtual_ca.paa' width='20' height='20'/> Sollte ein Headless Client vorhanden sein, so wird dieser durch die Mission automatisch genutzt.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\download_ca.paa' width='20' height='20'/> Diese Mission verfügt über ein eingenes Datenbanksystem, in welcher folgende Dinge gespeichert werden: feindliche Einheiten, Städte, Verstecke, feindliche Waffenlager, Fahrzeuge, vom Spieler oder vom Zeus erstelle Objecte und Marker (keine Linien) vom Spieler im Globalen-Channel. Jeder Admin kann zu jeder Zeit den Missionsfortschritt über das Eigen-Interaktionsmenü speichern. + + + + + Wounds + Wunden + + + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\heal_ca.paa' width='20' height='20'/> Use the interaction menu to treat your wounds.<br/> Keep in mind that all the actions will be available, even if you do not need them. It is always recommended examine first. + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\heal_ca.paa' width='20' height='20'/> Mit Hilfe des Interactionsmenü können Sie ihre und die Wunden anderer versorgen.<br/> Denken Sie daran, dass Sie immer den vollen Zugriff auf alle Aktionen haben, egal ob Sie diese benötigen oder nicht. In jedem Fall wird empfohlen zuerst eine Diagnose zu erstellen, bevor man mit der Behandlung beginnt. + + + + + Deafness + Taubheit + + + <img image='\z\ace\addons\hearing\UI\Icon_Module_Hearing_ca.paa' width='20' height='20'/> Use the earplugs to protect your ears to avoid combat deafness.<br/> You can put them on with your self interaction key.<br/><br/> + <img image='\z\ace\addons\hearing\UI\Icon_Module_Hearing_ca.paa' width='20' height='20'/> Nutzen Sie die Ohrstöpsel um sich vor Taubheit und Hörverlust zu schützen.<br/> Über das Eigen-Interaktionsmenü können Sie die Ohrstöpsel nutzen (sofern sich welche in Ihrem Inventar befinden).<br/><br/> + + + + + Vehicles + Fahrzeuge + + + <marker name='blufor_base'><img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\destroy_ca.paa' width='20' height='20' color='#FFBF00'/> Respawn:</marker><br/> When a vehicle is destroyed it will not respawn in base, you need to tow or lift it back to base and repair it near the logistic point (Interact with the red box). Helicopter wrecks can only be lifted. <br/> The Chinook is the only exception, it will respawn after 30 seconds. <br/><br/> <marker name='blufor_base'> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20' color='#FFBF00'/> Rearm:</marker><br/> You can also rearm them by spawning the corresponding caliber at logistic point (Interact with the red box, select the vehicle type and caliber). Carry the ammo created and interact with the vehicle to rearm. This only works if rearming is setting on entire magazine or amount based on caliber (not for entire vehicle setting). + <marker name='blufor_base'><img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\destroy_ca.paa' width='20' height='20' color='#FFBF00'/> Respawn:</marker><br/> Wenn ein Fahrzeug zersört wurde, wird dies nicht Respawnen. Es muss durch Abschleppen oder Anheben(Sling-Load) zum Logisik-Punkt gebracht und dort repariert werden (mit der roten Box interagieren). Wracks von Hubschraubern können nur angehoben werden (Sling-Load). <br/> Die einzigste Ausnahme hierbei ist der Chinook. Er respawnt nach 30 Sekunden. <br/><br/> <marker name='blufor_base'> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20' color='#FFBF00'/> Aufmunitionieren:</marker><br/> Fahrzeuge können Aufmunitioniert werden, in dem man das entsprechende Kaliber am Logisik-Punk anfordert (mit der Roten Box interagieren: Fahzeug und Kaliber auswählen). Nun muss man nur noch die erstellte Munition zum Fahrzeug bringen und mit diesem interagieren um das aufmunitionieren zu beginnen.<br/>ANMERKUNG: Das funktioiert nur wenn die Aufmunitionierungseinstellung auf 'Gesamtes Magazin' oder 'Kalieberbasierte Anzahl' gestellt ist (get nicht für 'Gesamtes Fahrzeug'). + + + + + Side Mission + Nebenaufgaben + + + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\whiteboard_ca.paa' width='20' height='20'/> Side missions are really useful to raise your reputation level.<br/> A side mission can be requested by the officer with his self interaction menu.<br/> If you don't want to complete a task, you can always abort it with the self interaction menu. + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\whiteboard_ca.paa' width='20' height='20'/> Nebenaufgaben sind sehr nütlich um das Ansehen in der Bevölkerung zu erhöhen.<br/>Diese Aufgaben können vom Offizier über das Eigen-Interaktionsmenü angefordert werden.<br/>Kann man eine Mission aus verschiedenen Gründen nicht abgeschlossen werden, so kann der Offizier sie jederzeit über das Eigen-Interaktionsmenü abbrechen. + + + + + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move1_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move2_ca.paa' width='20' height='20' /> <marker name='blufor_base'>FOB:</marker><br/> In this mission a FOB is a forward spawn point, to create a FOB approach the red box at the logistic point and require a blue container.<br/><br/> - <img image='\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa' width='20' height='20'/> <marker name='blufor_base'>Deploy:</marker> <br/> Move it where you want to deploy a new FOB and interact with it to set it up. Keep in mind that you can not deploy a FOB close to the main base (2.500m) and the terrain needs to be flat.<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Dismantle:</marker> <br/> You can dismantle a FOB by interacting with the flag on the HQ roof. + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move1_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\run_ca.paa' width='20' height='20' /> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\move2_ca.paa' width='20' height='20' /> <marker name='blufor_base'>FOB:</marker><br/> Eine FOB (Forward Operating Base / vorgeschobene Operationsbasis) dient in dieser Mission als Spawn-Punkt. Um eine FOB zu erstellen muss am Logistikpunkt ein ensprechnender Frachtcontainer(Blau) angefordert werden<br/><br/> - <img image='\A3\Ui_f\data\Map\Markers\NATO\b_hq.paa' width='20' height='20'/> <marker name='blufor_base'>Aufbau:</marker> <br/> Der Aufbau kann nur statfinden, wenn man sich mindestens 2,5km von der Basis entfernt hat und das Gelände relativ flach ist. Um den Aufbau zu beginnen: einfach mit dem Frachtcontainer interagieren und 'FOB aufbauen' auswählen.<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Abbau:</marker> <br/> Auf dem Dach der FOB kann man mit der Flagge interagieren um den Abbau zu beginnen. + + + + + Sling loading + Lasten heben (Hubschrauber) + + + =BTC= Lift will not replace the A3 sling loading, you can use both.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa' width='20' height='20'/> <img image='\A3\air_f_beta\Heli_Transport_01\Data\UI\Map_Heli_Transport_01_base_CA.paa' width='20' height='20'/> Lifting an object is pretty simple. Get in a chopper as pilot, hover above the object and interact with the chopper to deploy ropes.<br/> When you are in the right position a new scroll wheel action will appear ('HOOK'). If you want you can open the HUD to facilitate the operation.<br/> <img image='\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa' width='20' height='20'/> To release an object open you self interaction menu and select 'CUT ROPES'. + =BTC= Lift ersetzt nicht das A3 Sling-Load-System, du kannst beide nutzen.<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\container_ca.paa' width='20' height='20'/> <img image='\A3\air_f_beta\Heli_Transport_01\Data\UI\Map_Heli_Transport_01_base_CA.paa' width='20' height='20'/> Das heben von Lasten ist recht einfach. Nimm dir einen Hubschrauber, schwebe über dem Objekt und lass die Seile ab indem du mit dem Hubschrauber interagierst.<br/> Wenn du in der richtigen Postion bist, erscheint im Maus-Rad-Menü die Option 'EINHACKEN' mit der du die Fracht einhacken kannst. Wenn du willst kannst du auch ein HUD öffnen, welches dir deine Arbeit erleichtert.<br/> <img image='\z\ace\addons\logistics_wirecutter\ui\wirecutter_ca.paa' width='20' height='20'/> Um ein eingehacktes Objekt abzulassen, wähle im Maus-Rad-Menü die Option 'SEILE TRENNEN' aus. + + + + + Logistic point + Logistikpunkt + + + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> At the logistic point you can require new objects (like ammo, fortifications, supplies for the side missions...) and repair destroyed vehicles. + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\repair_ca.paa' width='20' height='20'/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\rearm_ca.paa' width='20' height='20'/> Am Logistikpunkt kann man neue Objekte (wie zB. Munition, Baumaterial, Nachschubgüter für Nebenaufgaben...) anfordern und zerstörte Fahrzeuge reparieren. + + + + + Logistic + Logistik + + + <marker name='blufor_base'>Cargo System:</marker><br/> - <img image='a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Load:</marker> You can load objects inside vehicles. Approach the object you want to load and interact with it.<br/> Select 'LOAD IN' option.<br/> After that interact with the vehicle and select 'LOAD object selected' option.<br/> The object has to be close to the vehicle.<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Unload:</marker> You can unload an object from a vehicle interacting with it. You can be inside the vehicle (personal interaction) or outside (object interaction).<br/> Select the option 'CHECK CARGO', then choose the object you want to unload from the list, and click 'UNLOAD'.<br/> If you are inside a chopper the object will be paradropped with a chute. If your height is too low, the object will crash down.<br/> Every vehicle has a 'CARGO CAPACITY' (CC in game), and every object has a 'REQUIRED CAPACITY' value (RC in game.)<br/> You can check those values in game with 'LOAD IN' and 'CHECK CARGO' options.<br/><br/><br/> <marker name='blufor_base'>Towing system:</marker><br/> To tow a vehicle interact with it and select the option 'HOOK'.<br/>After that place the tow vehicle in front of it and select 'TOW' in the interaction menu.<br/> If the two vehicles are too far away or the vehicle can't tow that load (Car can't tow truck or tank), the option will be disabled.<br/> To unhook interact with one of the two vehicles and select the option 'UNHOOK'.<br/><br/> <marker name='blufor_base'>Place option:</marker><br/> With this option you can move heavy objects to build small outpost or base.<br/> When you select the option an hint will show all the keys required to move the object. + <marker name='blufor_base'>Fracht-System:</marker><br/> - <img image='a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Beladen:</marker> Man kann Objekte in Fahrzeuge einladen. Gehen Sie an das Obekt heran und interagieren sie damit.<br/> Wählen sie 'EINLADEN'aus.<br/> Als nächstes gehen Sie zum Fahrzeug und wählen 'AUSGEWÄHLTES EINLADEN' aus.<br/> Denken Sie daran, dass das zu verladende Objekt sich in der Nähe des Fahrzeuges befinden muss.<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa' width='20' height='20'/> <marker name='blufor_base'>Abladen:</marker> Man kann Objekte aus einen Fahrzeug entladen, indem man mit diesem interagiert. Das funktioniert von Innen (Eigen-Interaktionsmenü) und von Aussen (mit dem Objekt interagieren).<br/> Über den Menüpunkt 'FRACHT ÜBERPRÜFEN' kann man das zu entladende Objekt aus einer Liste auswählen und mit einem Klick auf 'ENTLADEN' ausladen.<br/> Wenn man sich beim Ausladen in einem Hubschrauber befindet, so wird das Objekt automatisch mit einem Fallschrim abgeworfen. Aber Achtung: Der Fallschirm öffnet sich erst ab einer bestimmten Flughöhe.<br/> Jedes Fahrzeug hat eine gewisse Ladekapazität ('Frachtkapazität' - CC im Spiel genannt) und jedes Objekt hat ein gewisses Ladevolumen ('benötigte Kapazität' - RC im Spiel genannt).<br/> Diese Werte können im Spiel mit den Actionen 'EINLADEN' und 'FRACHT ÜBERPRÜFEN' geprüft werden.<br/><br/><br/> <marker name='blufor_base'>Abschleppsystem:</marker><br/> Um ein Fahrzeug abzuschleppen muss man mit diesem interagieren und 'EINHACKEN' auswählen.<br/>Als nächstes muss man das Zugfahrzeug vor das abzuschleppende Fahrzeug stellen und über das Interagtionsmenü die Option 'ABSCHLEPPEN' aktivieren.<br/> Zu beachten ist dabei, dass die beiden Fahrzeuge nicht zu weit von einander entfernt sein dürfen. Ebenso ist daruf zu achten, dass das Zugfahrzeug auch das andere Fahrzeug abschleppen kann (zB. Autos können keine Lkw/Panzer abschleppen).<br/> Um das Abschleppseil wieder zu entfernen muss man einen bei einem der beiden Fahrzeuge die Option 'AUSHACKEN' auswählen.<br/><br/> <marker name='blufor_base'>Platzierung von Objekten:</marker><br/> Mit dieser Option können Sie schwere Objekte bewegen, um einen kleinen Außenposten oder eine Basis zu bauen.<br/> Wenn Sie die Option auswählen, zeigt ein Hinweis alle Tasten an, die zum Verschieben des Objekts erforderlich sind. + + + + + Hideout + Verstecke + + + The hideouts are a place where the Oplitas organize their movements.<br/>They send reinforcements from here and can attack the closest city.<br/>If you notice a lot of activity in an area, probably there is an hideout closeby.<br/>If you want to defeat the Oplitas, you need to destroy all their hideouts.<br/>Here an example of an hideout:<br/><br/><img image='core\img\hideout.jpg' width='256' height='256'/><br/><br/>To destroy an hideout just place a satchel near the ammo box, it's close to the flag, and blow it off! + In den Verstecken planen und organisieren die Oplitas ihre Einstäze und Bewegungen.<br/>Von hier wird Verstärkung auf umliegende Gebiete verteilt. Ebenso ist ein Angriff auf die nächste Stadt von hier aus möglich.<br/>Sollten Sie eine erhöhte feindliche Aktivität in der Gegend festestellen, so befindet sich möglicherweise ein Versteck in der Nähe.<br/>Wenn Sie die Oplitas besiegen wollen, so müssen Sie alle Verstecke zerstören.<br/>Hier ein kleines Beispiel für ein Versteck:<br/><br/><img image='core\img\hideout.jpg' width='256' height='256'/><br/><br/>Das Versteck kann zerstört werden in dem man eine Sprengladung in der Nähe der Munitionskiste oder der Flagge zündet! + + + + + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> Any object could be an IED, approach it carefully (DO NOT rotate while you are walking: prefer walk, stop, rotate, walk again etc). Turn On your mine detector (VMH3 or VMMH3) and search for a charge in a circle of 2 meter around.<br/> <img image='\z\ace\addons\explosives\UI\Defuse_ca.paa' width='20' height='20'/> If you are an engineer and have a defusal kit, you can disarm it.<br/> You can also blow them off with high caliber and explosive satchels. + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> Jedes Objekt kann eine IED sein, seien sie ensprechen Vorsichtig und machen Sie keine hastigen Bewegungen (NICHT drehen wenn man läuft: besser gehen, stop, drehen, gehen und so weiter). Schalten Sie ihren Minendetektor (VMH3 oder VMMH3) ein und suchen sie in eim 2m Radius nach der Ladung.<br/> <img image='\z\ace\addons\explosives\UI\Defuse_ca.paa' width='20' height='20'/> Wenn Sie ein Ingenieur sind und ein Entschärfungskit dabei habe, können Sie die Sprengladung entschärfen.<br/> Es is ebenfalls möglich die IED mithilfe von hohen Kalibern oder Sprengladungen zu entfernen (kontrollierte Explosion). + + + + + Intel + Informationen + + + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\map_ca.paa' width='20' height='20'/> Intel can be retrieved in the following ways:<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa' width='13' height='13'/> Searching dead bodies<br/> - <img image='\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa' width='13' height='13'/> Interrogate prisoner<br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='13' height='13'/> Talking to civilians<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> Keep in mind that only the interpreter can talk to civilians and they can lie if your reputation level is low.<br/><br/> When you find an intel from a dead body or interrogate a prisoner, a marker will appear in the map. Remember, prisoner have a random number of intel more or less interesting.<br/> There are two types of marker:<br/> - Red question mark (<img image='\A3\ui_f\data\map\markers\handdrawn\unknown_CA.paa' width='13' height='13' color='#ff0000'/>): ammo cache intel<br/> - Red exclamation mark (<img image='\A3\ui_f\data\map\markers\handdrawn\warning_CA.paa' width='13' height='13' color='#ff0000'/>): hideout intel<br/><br/><br/> When you destroy an hideout or an ammo cache, all the markers related to it will be deleted. + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\map_ca.paa' width='20' height='20'/> Informationen kann man auf verschiedene Arten erhalten:<br/><br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\search_ca.paa' width='13' height='13'/> Durchsuchen von toten Personen<br/> - <img image='\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa' width='13' height='13'/> Verhören von Gefangenen<br/> - <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='13' height='13'/> Mit Zivilisten reden<br/><br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> Nur der Dolmetscher kann sich mit Zivilisten unterhalten. Wenn ihr Ansehen bei der Bevölkerunge niedrig ist, so kann es auch mal vorkommen das manche Zivilisten sie belügen.<br/><br/> Wenn Sie Information erhalten, erscheint eine Markierung auf der Karte. Zur Erinnerung: Gefangene habe mal mehr und mal weniger interessante Informationen.<br/> Es gibt zwei Arten von Markierungen:<br/> - Ein rotes Fragezeichen (<img image='\A3\ui_f\data\map\markers\handdrawn\unknown_CA.paa' width='13' height='13' color='#ff0000'/>): Information über ein Waffenlager <br/> - Ein rotes Ausrufezeichen (<img image='\A3\ui_f\data\map\markers\handdrawn\warning_CA.paa' width='13' height='13' color='#ff0000'/>): Information über ein Versteck <br/><br/><br/> Wenn Sie ein Versteck oder ein Waffenlager zersört haben, so werden alle relevanten Markierungen automatisch gelöscht. + + + + + Reputation + Ansehen + + + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> Reputation can be ask to civilian<br/> Bad actions cause bad effects.<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> Helping the local population by fighting the Oplitas and disarming IED's will rise your reputation; killing civilians, mutilating alive/dead civilians, firing near civilians for no reason, firing to civilian car, damaging/destroying buildings, losing vehicles, player respawns will decrease your repution. At the beginning you have a very low reputation level, so civilians won't help you in revealing important information about the Oplitas, they will likely lie instead.<br/> Aborting a side mission does not affect reputation. + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\talk_ca.paa' width='20' height='20'/> Ihr Ansehen bei der Bevölkerung können Sie bei Zivilisten erfragen <br/> Schlechte bzw. böse Handlungen habe zur Folge das ihr Ansehen sinkt. <br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> Das Unterstützen der lokalen Bevölkerung, das Entschärfen von IEDs und der aktive Kampf gegen die Oplitas wird sich positiv auf ihr Ansehen auswirken. Negative Aktionen wie zb. das Töten oder verstümmeln von Zivlisten, das grundlose Abfeueren einer Waffe in der Nähe von Zivilisten, das Zerstören oder Beschädigen von Gebäuden, der Angriff auf zivile Fahrzeuge, der Verlust von Fahrzeugen im Allgemeinen oder das Respawnen haben hingegen einen nicht so guten Effekt. Zu Beginn ist Ihr Ansehen nur recht gering, weshalb es sein kann das Zivlisten eher zruückhaltend mit Informationen sind. In manchen Fällen werden die Zivilisten Sie auch einfach belügen.<br/> Das Abbrechen von Nebenaufgaben hat keine Auswirkung auf Ihr Ansehen. + + + + + Orders + Befehle (Zivilisten) + + + Any player can give orders to civilians.<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> To do this, just open your self interaction menu and select 'ORDERS' or use one of the shortcuts. Shortcuts can changed under 'configure' >> 'controls' >> 'configure addons' >> 'Hearts and Minds: Mission' (drop down menu).<br/> Your options are:<br/> - STOP<br/> - GET DOWN<br/> - GO AWAY<br/><br/> If you want to give an order to just one unit, interact with it (ace object interaction).<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> You can also drop leaflets to ask all civilians in a circle of 200m to evacuate to a religious building (if not available a safe area) with a drone. + Jeder Spieler kann einem Zivlisten Anweisungen geben.<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\interact_ca.paa' width='20' height='20'/> Dies geht recht einfach in dem man das Eigen-Interaktionsmenü öffnet und dann 'BEFEHLE(ZIVILISTEN)' auswählt. Oder in dem man Kurztasten nutzt. Diese können unter 'Konfigurieren' >> 'Steuerung' >> 'Modifikationen anpassen' >> Hearts and Minds: Mission' (Drop-Down-Menü) geändert werden.<br/><br/> Folgende Optionen stehen zur Verfügung:<br/> - STOPP!<br/> - AUF DEN BODEN!<br/> - GEH WEG!<br/><br/> Wenn Sie einen Befehl an eine bestimmte Person geben wollen, so können Sie auch direkt mir dieser Interagieren (ACE Objekt-Interaction).<br/> <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> Sie können mithilfe einer Drohne Broschüren abwerfen, um die Zivilisten im Umkreis von ca. 200 m aufzufordern, sich in dem nächsten religiösen Gebäude einzufinden (sollte kein Gebäude vorhanden sein, so wird ein sicherer Bereich festgelegt). + + + + + Traffic + Straßenverkehr + + + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> <img image='\A3\soft_f_gamma\van_01\Data\UI\map_van_01_box_CA.paa' width='20' height='20'/> Civilians are travelling by vehicle across cities. If your reputation is higher than normal, you can ask for a lift to a location chosen on the map. If you bump into a Oplitas patrol, don't worry, the civilian driver will do their best to hide you in the car.<br/> + <img image='\A3\ui_f\data\igui\cfg\simpleTasks\types\meet_ca.paa' width='20' height='20'/> <img image='\A3\soft_f_gamma\van_01\Data\UI\map_van_01_box_CA.paa' width='20' height='20'/> Zivlisten sind mit Fahrzeugen in den Städten unterwegs. Wenn Sie ein hohes Ansehen in der Bevölkerung genießen, so sind Zivlisten auch gerne mal dazu bereit Sie mitzunehmen (nutzen sie die Karte um den Zivlisten zu zeigen wo sie hinwollen). Sollten Sie dabei durch Zufall auf Feinde stoßen, so wird der Zivilist sein Bestes geben um sie im Fahrzeug zu verstecken.<br/> + + + + + Gear (Arsenal) + Ausrüstung (Arsenal) + + + <img image='\A3\Ui_f\data\Logos\a_64_ca.paa' width='20' height='20'/>You can choose your gear at the red box inside the base. Located at the spawn point.<br/> + <img image='\A3\Ui_f\data\Logos\a_64_ca.paa' width='20' height='20'/>Sie können ihre Ausrüstung jederzeit an der roten Box in der Basis anpassen. Diese steht in der Nähe des Startpunktes<br/> + + + + + Interaction + Interaktion + + + <img image='\z\ace\addons\interaction\UI\Icon_Module_Interaction_ca.paa' width='20' height='20'/>Use ACE 3 interactions system. + <img image='\z\ace\addons\interaction\UI\Icon_Module_Interaction_ca.paa' width='20' height='20'/>Nutzen Sie das Interactions-System von ACE 3. + + + + + Version + Version + + + + + + + << Time options >> + << Zeiteinstellungen >> + + + Set the start time: + Legt die Startzeit fest: + + + Acceleration time multiplier: + Zeit-Beschleunigungs-Multiplikator: + + + + + Load the savegame (if available) + Spielstand wird geladen (wenn verfügbar) + + + Auto savegame (can break player immersion) + Spielstand autom. sichern (kann die Immersion stören) + + + + + << Faction options >> + << Fraktion Einstellungen >> + + + Enemy type: + Feindliche Einheiten: + + + Anti-Air infantry: + feindl. Fliegerabwehrtruppen: + + + Enemy uses Tank: + feindl. Panzer: + + + Civil type: + Zivile Einheiten: + + + Civil vehicle type: + Fahrzeuge der Zivilen Einheite: + + + + + << IED options >> + << IED Einstellungen >> + + + IEDs ratio: + IED Wahrscheinlichkeit: + + + Low + Niedrig + + + Normal + Normal + + + High + Hoch + + + IEDs spotting difficulty + + + Very easy + + + Easy + + + Drone bomber: + + + + + << Hideout/Cache options >> + << Verstecke/Waffenlager Einstellungen >> + + + Hideout numbers: + Anzahl der Verstecke: + + + Random + Zufällig + + + Info cache distance: + Distanzangabe für ein Waffenlager(Startwert): + + + Cache info ratio: + Verkürzungschritt je gefundener Information: + + + Intel from dead bodies chance: + Chance auf Informationen von toten Gegnern: + + + + + << Medical options >> + << Sanitäts-Einstellungen >> + + + Allow re-deploy? + Verlegen erlauben? + + + + + << A3 Skill options >> + << A3 Skill options >> + + + Set skill? + KI-Fertigkeiten festlegen? + + + Set skill, general + KI-Fertigkeit, Allgemein + + + Set skill, aimingAccuracy + KI-Fertigkeit, Zielgenauigkeit + + + Set skill, aimingShake + KI-Fertigkeit, Verwackeln beim Zielen + + + Set skill, aimingSpeed + KI-Fertigkeit, Zielgeschwindigkeit + + + Set skill, endurance + KI-Fertigkeit, Ausdauer + + + Set skill, spotDistance + KI-Fertigkeit, Aufklärungsentfernung + + + Set skill, spotTime + KI-Fertigkeit, Aufklärungsgeschwindigkeit + + + Set skill, courage + KI-Fertigkeit, Mut + + + Set skill, reloadSpeed + KI-Fertigkeit, Nachladegeschwindigkeit + + + Set skill, commanding + KI-Fertigkeit, Befehligen + + + + + << Gameplay options >> + << Spieleinstellungen >> + + + Extend battlefield to sea: + Kämpfe aufs Wasser ausweiten: + + + Add armed vehicles in Hideout: + Gepanzerte Fahrzeuge bei den Verstecken: + + + Add armed vehicles in Side mission/Cache: + Gepanzerte Fahrzeuge bei den Nebenmissionen/ Waffenlagern: + + + Side mission cycle: + Autom. nächste Nebenmission starten: + + + + + << Other options >> + << Sonstige Einstellungen >> + + + Type of the arsenal: + Art des Arsenals: + + + BIS - Vanilla + BIS - Vanilla + + + ACE 3 + ACE 3 + + + BIS - Vanilla and ACE 3 + BIS - Vanilla und ACE 3 + + + ACE 3 (scroll wheel action) + ACE 3 (Maus-Rad-Menü) + + + BIS - Vanilla and ACE 3 (scroll wheel action) + BIS - Vanilla und ACE 3 (Maus-Rad-Menü) + + + Reputation at start: + Ansehen zu Beginn: + + + Very Low + Sehr Niedrig + + + Activate garage for admin: + Virtuelle Garage für den Admin: + + + Spawn city radius offset: + Radius zum Spawnen von Einheiten: + + + 300 m (Default: Altis, Tanoa) + 300 m (Standard: Altis, Tanoa) + + + Disable city activation when a plane or helicopter (>190Km/h) is flying above: + Das Spawnen von Einheiten deaktivieren, wenn ein Flugzeug oder Helikopter (>190Km/h) drüber fliegt: + + + Debug: + Debug: + + + Log only + Nur Logs + + + + + + + Mission accomplished! + Mission erfolgreich! + + + + + Defeat the Oplitas + Besiege die Oplitas + + + Defeat the Oplitas once and for all + Besiegen Sie die Oplitas ein für allemal + + + Oplitas have been finally defeated! Mission accomplished! + Die Oplitas wurde endgültig besiegt! Mission erfüllt! + + + + + Destroy all the hideouts + Alle Verstecke zerstören + + + Destroy all the hideouts of the Oplitas + Zerstören Sie sämtliche Verstecke der Oplitas + + + All the hideouts have been destroyed! + Alle Verstecke wurden zerstört! + + + + + Seize the last Oplitas positions + Erobern Sie die letzten Stellungen + + + Seize the last Oplitas fighters positions + Erobern Sie die letzten Positionen der Oplitas-Kämpfer + + + Seize the last positions held by Oplitas fighters + Erobern Sie die letzten Stellungen der Oplitas-Kämpfer zurück. + + + + + + + Side mission Accomplished! + Nebenmission erfolgreich! + + + Side mission failed! + Nebenmission fehlschlagen! + + + + + Capture commander in concealed convoy + Offizier gefangen nehmen + + + Capture an officer travelling in a concealed convoy, then bring him to the base for interrogation. He is his responsible for terrorizing local population! + Ein feindlicher Offizier ist in einem getarnten Konvoi unterwegs. Finden und bringen Sie ihn in die Basis für weitere Befragungen. Er ist einer der Hauptverantwortlichen für die Terrorisierung der lokalen Bevölkerung! + + + The officer was not captured + Der Offizier wurde nicht gefangen genommen + + + The officer has been captured! + Der Offizier wurde erfolgreich gefangen genommen! + + + + + Checkpoint + Kontrollpunkt + + + Destroy checkpoints in %1 + Kontrollpunkte zerstören in %1 + + + Checkpoints have been located in %1. Local population is asking for your help to destroy ammo box in all checkpoints! + Kontrollpunkt wurden in der Nähe von %1 gesichtet. Die lokale Bevölkerung bittet Sie darum, alle Munitionskisten und den jeweiligen Kontrollpunkt zu beseitigen! + + + Checkpoints were not destroyed + Die Kontrollpunkte wurden nicht zerstört + + + Checkpoints have been destroyed! + Die Kontrollpunkte wurden zerstört! + + + + + Medical emergency call on sea + Medizinischer Notruf auf hoher See + + + A civilian is calling for a medic in %1, treat and wait for patient stabilization. + Ein Zivilist aus %1 hat einen Notruf abgesetzt. Behandeln Sie ihn umd warten Sie darauf das sein Zustand sich stabilisiert. + + + The patient was not stabilized + Der Patient wurde nicht rechtzeitig stabilisiert + + + The civilian has been stabilized! + Der Patient wurde erfolgreich behandelt! + + + + + Civil need help + Zivilist braucht Hilfe + + + Medical emergency call in %1 + Medizinischer Notruf aus %1 + + + A civilian is calling for a medic in %1, treat and wait for patient stabilization + Ein Zivilist aus %1 hat einen Notruf abgesetzt. Behandeln Sie ihn umd warten Sie darauf das sein Zustand sich stabilisiert + + + The patient was not stabilized + Der Patient wurde nicht rechtzeitig stabilisiert + + + The civilian has been stabilized! + Der Patient wurde erfolgreich behandelt! + + + + + Convoy has left the starting point! + Der Konvoi ist losgefahren! + + + Convoy Start + Konvoi Start + + + Convoy End + Konvoi Ende + + + Destroy Oplitas convoy attacking %1 + Bewaffneter Konvoi unterwegs nach %1 + + + An armed Oplitas convoy is going to attack %1. Local population is asking for your help to destroy it before it gets there! + Ein bewaffneter Konvoi der Oplitas will %1 angreifen. Schützen Sie die Bevölkerung in dem Sie den Konvoi zerstören bevor er dort ankommt + + + The armed convoy was not destroyed + + + + The armed convoy has been destroyed! + Der bewaffnete Konvoi ist zerstört worden! + + + + + Defend the terminal until the missile is hacked! + Verteidigt das Terminal, bis die Rakete gehackt erfolgreich gehackt ist! + + + Terminal + Terminal + + + Start Hacking + Hack starten + + + Hack missile near %1 + Rakete hacken in der Nähe von %1 + + + Hack a prototype missile with a terminal available in %1. Defend your position until the process is done! + Hacke eine Prototyp-Rakete mit einem in %1 verfügbaren Terminal. Verteidige deine Position, bis der Prozess abgeschlossen ist! + + + The missile was not hacked + Die Rakete wurde nicht gehackt + + + The missile has been hacked! + Die Rakete wurde erfolgreich gehackt! + + + + + Hostage + Geisel + + + Liberate hostage near %1 + Geisel befreien: %1 + + + Liberate a civilian hostage in %1. The Local population is asking for your help! + Befreien Sie eine Geisel in %1 aus den Händen der Terroristen. Die lokale Bevölkerung bittet um Ihre Hilfe! + + + The hostage was not liberated + Die Geisel wurde nicht befreit + + + The hostage has been liberated! + Die Geisel wurde befreit! + + + + + Mines + Minen + + + Minefield near %1 + Minenfeld in der Nähe von %1 + + + There is a minefield near %1, clear it! + Es gibt ein Minenfeld in der Nähe von %1, räumen Sie es! + + + The minefield was not cleared + Das Minenfeld wurde nicht geräumt + + + The minefield has been cleared + Alle Minen wurden entschärft + + + + + Rescue downed pilot near %1 + Abgestürzter Piloten in der Nähe %1 + + + MAYDAY-MAYDAY, a pilot crashed his helicopter near %1. Command is asking for your help to rescue and bring him back to base! + MAYDAY-MAYDAY, ein Pilot stürzte mit seinem Helikopter in der Nähe von %1 ab. Sie haben den Befehl ihn zu retten und sicher zur Basis zurückzubringen! + + + The pilot was not rescued + Der Pilot wurde nicht gerettet + + + The pilot has been rescued! + Der Pilot wurde gerettet! + + + + + Supplies + Nachschub + + + Supply %1 + Versorgung nach %1 bringen + + + The citizens of %1 are on the brink starving to death, bring them some supplies present at the logistic point! + Die Bürger von %1 sind am verhungern. Bingen Sie ihnen Vorräte. Die Vorräte(Supplies) können beim Logistikpunkt angefordert werden. + + + Supplies were not delivered + Die Lieferungen haben ihr Ziel nicht erreicht + + + Supplies have been delivered + Lieferungen wurden geliefert + + + + + Radio Tower + Funkturm + + + Destroy tower in %1 + Funkturm zerstören: %1 + + + A Oplitas communications tower has been located in %1. Local population is asking for your help to destroy it! (Use one M183 explosive satchel) + Ein Funkturm der Oplitas befindet sich in %1. Die lokale Bevölkerung bittet darum diesen zu zerstören! (Nutzen Sie die M183 Sprengladungen) + + + The tower was not destroyed + Der Funkturm wurde nicht zerstört + + + The tower has been destroyed! + Der Funkturm wurde zerstört! + + + + + Generator + Generator + + + Destroy underwater generator in %1 + Zerstöre den Unterwassergenerator in %1 + + + An Underwater generator has been located in %1. Local population is asking for your help to destroy it! + Ein Unterwassergenerator wurde in der Nähe von %1 aufgeklärt. Die zivile Bevölkerung bittet um die Zerstörung des Aggregats! + + + The underwater generator was not destroyed + Der Unterwassergenerator wurde nicht zerstört + + + The underwater generator has been destroyed! + Der Generator wurde zerstört! + + + + + Vehicle needs assistance + Fahrzeug braucht Unterstützung + + + Vehicle needs assistance near %1 + Fahrzeug braucht Unterstützung in der Nähe von %1 + + + A vehicle damaged by an IED needs assistance near %1! Repair it! + Ein Fahrzeug wurde durch eine IED beschädigt und braucht nun Unterstützung in der Nähe von %1! Repariere Sie es! + + + The vehicle was not repaired + Das Fahrzeug wurde nicht repariert + + + The vehicle has been repaired + Die Reparatur war erfolgreich + + + + + Free %1 + Befreie %1 + + + %1 has been conquered by the Oplitas! The Local population is being terrorized, they are asking for help! + %1 wurde von der Oplitas erobert! Die lokale Bevölkerung wird terrorisiert, greifen Sie ein! + + + The city was not conquered + Die Stadt wurde nicht erobert + + + The city has been cleared! + Die Stadt wurde erfolgreich gesichert! + + + + + + + Database + Datenbank + + + Save + Sichern + + + Delete + Löschen + + + + + Search for intel + Nach Informationen suchen + + + Interrogate + Verhören + + + + + Logistic + Logistik + + + Require object + Nachschub anfordern + + + Repair wreck + Wrack reparieren + + + Require vehicle + Fahrzeug anfordern + + + + + Load in + Einladen + + + Load selected + Ausgewähltes einladen + + + Check cargo + Fracht überprüfen + + + + + Mount FOB + FOB aufbauen + + + Dismantle FOB + FOB abbauen + + + Place + Platzieren + + + + + Civil Orders + Befehle (Zivilisten) + + + Stop! + Stopp! + + + Get down! + Auf den Boden! + + + Go away! + Geh weg! + + + Taxi + Taxi + + + Ask info + Nach Informationen fragen + + + Ask Reputation + Nach dem Ansehen fragen + + + + + Side mission + Nebenmission + + + Abort + Abbrechen + + + Request + Anfordern + + + + + Re-deploy + Verlegen + + + + + <t color='#ff1111'>Arsenal (BIS)</t> + <t color='#ff1111'>Arsenal (BIS)</t> + + + + + <t color='#ff1111'>Arsenal (ACE)</t> + <t color='#ff1111'>Arsenal (ACE)</t> + + + + + Tow + Abschleppen + + + Hook + Einhacken + + + Unhook + Aushaken + + + Deploy ropes + Seile auswerfen + + + Cut ropes + Seile trennen + + + + + Tools + Werkzeuge + + + Copy container + Container kopieren + + + Paste container + Container einfügen + + + + + + + I can't understand what is saying + Ich verstehe nicht was Sie sagen + + + I heard about %1 hideouts left. + Ich habe gehört, dass es noch %1 Verstecke gibt. + + + very low + sehr niedrig + + + low + niedrig + + + normal + normal + + + high + hoch + + + Sir, your reputation is + Mein Herr, Ihr Ansehen ist + + + Hello ! Your reputation is + Hallo ! Ihr Ansehen ist + + + I think your reputation is + Ich glaube ihr Ansehen ist + + + Help me! + Hilf mir! + + + I am suffering! + Ich habe Schmerzen! + + + Injure! + Ich bin Verletzt! + + + I have open wound! + I habe offene Wunden! + + + I already answered to your question! + Ich habe Ihnen bereits alles gesagt! + + + I've no information for you + Ich habe keine Informationen für Sie. + + + I'll show you some hint on the map + Ich habe etwas auf der Karte markiert + + + I saw a lot of militia activity towards %1, %2 meter from here. Probably there is an hideout! + Ich habe mehrer bewaffnete Personen in Richtung %1, ca. %2m entfernt, gesehen. Möglicherweise ist dort ein Versteck! + + + There are no hideout around here! + Hier in der Gegend gibt es keine Verstecke! + + + Diary log + Gesprächsaufzeichnung + + + Searching for intel . . . + Suche Information . . . + + + I saw some militia movement %1, %2 meter from here + Ich habe mehrer bewaffnete Personen in Richtung %1, ca. %2m entfernt, gesehen + + + I didn't see any militia movement in this area! + Ich habe keine bewaffneten Personen in der Nähe gesehen! + + + + + Show me where you want to go with your map. + Zeig mir auf der Karte wo du hin willst. + + + No problem. I'd love to do that. + Kein Problem. Das mache ich doch gerne. + + + The ride should not take long. Let's go. + Die Fahrt sollten nicht lang dauern. Also los. + + + After what you've done for us, it's an honor to drive you. Let's go. + Nach dem was Sie alles für uns getan haben, ist es mir eine Ehre Sie zu fahren. Los geht´s. + + + Selected area must be on land. + Der Zielort muss an Land sein. + + + I hate you! Get out! + Ich hasse dich! Raus hier! + + + Get Out of my car ! You are not welcome. + Raus aus meinem Auto! Du bist hier nicht willkommen. + + + I am not a taxi driver! + Ich bin kein Taxifahrer! + + + No! I go where I want! + Nein! Ich gehe wohin ich will! + + + + + + + Area is not flat enough! + Das Gebiet ist nicht Flach genug! + + + Too close at the main base! + Zu Nahe an der Haupt-Basis! + + + Clear the area before mounting the FOB, %1 + Das Gebiet ist nicht leer, es sind noch folgende Fahrzeuge im Weg: %1 + + + Do not close the dialog with esc + Den Dialog nicht mir ESC schließen + + + Name your FOB! + FOB benennen! + + + Name already in use! + Der Name wird bereits verwendet! + + + Get back! Mounting FOB + Geh ein wenig zurück! Die FOB wird aufgebaut + + + Dismantle, move out ... + Abbau im gange, geh ein wenig zurück... + + + No FOBs deployed + Es sind keine FOBs aufgebaut + + + Moving to %1 + Verlege zu %1 + + + Name the FOB: + FOB Benennen: + + + Apply + Bestätigen + + + Select the FOB: + FOB auswählen: + + + + + Cache destroyed! + Waffenlager zerstört! + + + Intel about an ammo cache found! Map updated + Informationen über ein Waffenlager gefunden! Karte aktualisiert + + + Hideout destroyed! %1 remaining + Versteck zerstört! Verbleiben noch %1 + + + This body does not have any intel + Keine Informationen gefunden + + + Found intels about an ammo cache and an hideout! Map updated + Informationen über ein Waffenlager und ein Versteck gefunden! Karte aktualisiert + + + Intel about an hideout found! Map updated + Informationen über ein Versteck gefunden! Karte aktualisiert + + + In the last hideout we found important intel about all the cities occupied by the Oplitas! Size the last positions held by the enemies and defeat them once and for all + In the last hideout we found important intel about all the cities occupied by the Oplitas! Size the last positions held by the enemies and defeat them once and for all + + + %1 has been deployed! + %1 wurde bereitgestellt! + + + Saving in progress... Please wait + Es wird gespeichert... Bitte warten + + + Game has been saved! + Spiel wurde gespeichert! + + + Database deleted! + Datenbank gelöscht! + + + One checkpoint destroyed! + Ein Kontrollpunkt wurde zerstört! + + + + + Civil Order: Stop! + Befehle (Zivilisten): Stopp! + + + Order a civilian to stop + Befiehlt den Zivilisten in der Umgebung stehen zu bleiben + + + Civil Order: Get down! + Befehle (Zivilisten): Auf den Boden! + + + Order a civilian to get down + Befiehlt den Zivilisten in der Umgebung sich hinzulegen + + + Civil Order: Go Away! + Befehle (Zivilisten): Geh weg! + + + Order a civilian to go away + Befiehlt den Zivilisten in der Umgebung wegzugehen + + + + + No copied container! + Kein kopierter Container gefunden! + + + No container around! + Kein Container gefunden! + + + Container and cargo copied! Clear the area to paste. + Container und Inhalt kopiert! Bereich freimachen, um neuen einzufügen. + + + + + All the hideouts are destroyed, finally the Oplitas has been defeated! Mission accomplished + Alle Verstecke sind zerstört, nun sind die Oplitas besiegt! Mission erfüllt + + + + + %1 wreck + %1 Wrack + + + Hideout %1 destroyed + Versteck %1 wurde zerstört + + + Cached %1 destroyed + Waffenlager %1 wurde zerstört + + + + + + + Clear the area before creating another object! + Der Bereich muss sauber sein, bevor Sie etwas neues anfordern! + + + + + Interact with a vehicle to tow it! (This vehicle can't tow %1) + Interagieren Sie mit dem Zug-Fahrzeug, um es abzuschleppen! (Folgende Fahrzeuge können nicht gezogen werden: %1) + + + + + Hud On\Off + Hud An\Aus + + + Hook + Einhacken + + + + + %1 is too far from %2! + %1 ist zu weit von %2 entfernt! + + + %1 is moving! + %1 is in Bewegung! + + + Can not load %1 in %2 + Der Laderaum von %2 ist zu klein für %1 + + + There is no enough space for %1 in %2 + Es ist nicht mehr genug Platz im Laderaum von %1 vorhanden + + + Loading %1 in %2. . . + %1 wird verladen in %2 . . . + + + %1 has been loaded in %2 + %1 wurde in %2 eingeladen + + + Loading aborted + Ladevorgang abgebrochen + + + + + Q/Z to raise/lower the object + Q/Y zum Heben/Senken des Objekts + + + X/C to rotate the object + X/C um das Objekt zu drehen + + + F/R to tilt the object + F/R um das Object zu neigen + + + SHIFT to increase the movement + SHIFT um die Bewegung des Objektes zu beschleunigen + + + Release + Loslassen + + + + + No wreck found + Kein Wrack gefunden + + + It is not a wreck! + Das ist kein Wrack! + + + + + %1 selected <br/>CR: %2<br/> Interact with a vehicle to load it in! + %1 ausgewählt <br/>CR: %2<br/> Interagieren Sie mit dem Fahrzeug, in welches die Fracht eingeladen werden soll! + + + + + This vehicle is already attached to another! + Dieses Fahrzeug zieht bereits ein anderes Fahrzeug! + + + + + Vehicle: %1 | CC: %2/%3 + Fahrzeug: %1 | CC: %2/%3 + + + + + This vehicle is not attached to another! + Das Fahrzeug schleppt kein anderes Fahrzeug ab! + + + + + Unloading %1. . . + %1 wird abgeladen. . . + + + %1 has been unloaded from %2 + %1 wurde von %2 abgeladen + + + Unloading aborted + Abladen abgebrochen + + + + + Cargo + Frachtraum + + + Unload + Entladen + + + Apply + Bestätigen + + + Close + Schließen + + + + diff --git a/README.md b/README.md index cc9ab1de8..db6beea6c 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@

- - H&M Version + + H&M Version H&M Downloads @@ -25,7 +25,7 @@ A new formed group, known as "Oplitas", is against the NATO intervention and is - Repair wreck system - Logistic system - Interaction system -- Realistic IED/Suicide bomber system +- Realistic IED/Suicide/Drone bomber system - Civilian interaction/fleeing - Reputation system - Deep ACE3 support