Cleaning up of all tabs in source code files.

This commit is contained in:
jaynus 2015-04-06 09:22:43 -07:00
parent 1c28e82725
commit 1bb6be5654
143 changed files with 3292 additions and 3292 deletions

View File

@ -2,11 +2,11 @@
#include "\z\ace\Addons\main\script_mod.hpp" #include "\z\ace\Addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_ATTACH #ifdef DEBUG_ENABLED_ATTACH
#define DEBUG_MODE_FULL #define DEBUG_MODE_FULL
#endif #endif
#ifdef DEBUG_SETTINGS_ATTACH #ifdef DEBUG_SETTINGS_ATTACH
#define DEBUG_SETTINGS DEBUG_SETTINGS_ATTACH #define DEBUG_SETTINGS DEBUG_SETTINGS_ATTACH
#endif #endif
#include "\z\ace\Addons\main\script_macros.hpp" #include "\z\ace\Addons\main\script_macros.hpp"

View File

@ -4,10 +4,10 @@
_wall = _this select 0; _wall = _this select 0;
if (local _wall) then { if (local _wall) then {
_paper = "UserTexture_1x2_F" createVehicle position _wall; _paper = "UserTexture_1x2_F" createVehicle position _wall;
_paper attachTo [_wall, [0,-0.02,0.6]]; _paper attachTo [_wall, [0,-0.02,0.6]];
_paper setDir getDir _wall; _paper setDir getDir _wall;
_paper setObjectTextureGlobal [0, QUOTE(PATHTOF(textures\target_ca.paa))]; _paper setObjectTextureGlobal [0, QUOTE(PATHTOF(textures\target_ca.paa))];
}; };

View File

@ -29,7 +29,7 @@ private "_index";
_index = _conditionNames find _conditionName; _index = _conditionNames find _conditionName;
if (_index == -1) then { if (_index == -1) then {
_index = count _conditionNames; _index = count _conditionNames;
}; };
_conditionNames set [_index, _conditionName]; _conditionNames set [_index, _conditionName];

View File

@ -15,28 +15,28 @@ _id = _this select 0;
_show = if (count _this > 1) then {_this select 1} else {false}; _show = if (count _this > 1) then {_this select 1} else {false};
if (isnil QGVAR(SHOW_BLUR_SCREEN_COLLECTION)) then { if (isnil QGVAR(SHOW_BLUR_SCREEN_COLLECTION)) then {
GVAR(SHOW_BLUR_SCREEN_COLLECTION) = []; GVAR(SHOW_BLUR_SCREEN_COLLECTION) = [];
}; };
if (typeName _show == typeName 0) then { if (typeName _show == typeName 0) then {
_show = (_show == 1); _show = (_show == 1);
}; };
if (_show) then { if (_show) then {
GVAR(SHOW_BLUR_SCREEN_COLLECTION) pushback _id; GVAR(SHOW_BLUR_SCREEN_COLLECTION) pushback _id;
// show blur // show blur
if (isnil QGVAR(MENU_ppHandle_GUI_BLUR_SCREEN)) then { if (isnil QGVAR(MENU_ppHandle_GUI_BLUR_SCREEN)) then {
GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) = ppEffectCreate ["DynamicBlur", 102]; GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) = ppEffectCreate ["DynamicBlur", 102];
GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectAdjust [0.9]; GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectAdjust [0.9];
GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectEnable true; GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectEnable true;
GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectCommit 0; GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectCommit 0;
}; };
} else { } else {
GVAR(SHOW_BLUR_SCREEN_COLLECTION) = GVAR(SHOW_BLUR_SCREEN_COLLECTION) - [_id]; GVAR(SHOW_BLUR_SCREEN_COLLECTION) = GVAR(SHOW_BLUR_SCREEN_COLLECTION) - [_id];
if (GVAR(SHOW_BLUR_SCREEN_COLLECTION) isEqualTo []) then { if (GVAR(SHOW_BLUR_SCREEN_COLLECTION) isEqualTo []) then {
// hide blur // hide blur
if (!isnil QGVAR(MENU_ppHandle_GUI_BLUR_SCREEN)) then { if (!isnil QGVAR(MENU_ppHandle_GUI_BLUR_SCREEN)) then {
ppEffectDestroy GVAR(MENU_ppHandle_GUI_BLUR_SCREEN); ppEffectDestroy GVAR(MENU_ppHandle_GUI_BLUR_SCREEN);
GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) = nil; GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) = nil;
}; };
}; };
}; };

View File

@ -34,13 +34,13 @@
#define Y_POS_ICONS_SECOND (TOP_SIDE + (1.1 * ICON_WIDTH)) #define Y_POS_ICONS_SECOND (TOP_SIDE + (1.1 * ICON_WIDTH))
// setting values // setting values
#define TOP_RIGHT_DOWN 1 #define TOP_RIGHT_DOWN 1
#define TOP_RIGHT_LEFT 2 #define TOP_RIGHT_LEFT 2
#define TOP_LEFT_DOWN 3 #define TOP_LEFT_DOWN 3
#define TOP_LEFT_RIGHT 4 #define TOP_LEFT_RIGHT 4
// other constants // other constants
#define DEFAULT_TIME 6 #define DEFAULT_TIME 6
private ["_iconId", "_show", "_icon", "_allControls", "_refresh", "_timeAlive", "_list", "_color"]; private ["_iconId", "_show", "_icon", "_allControls", "_refresh", "_timeAlive", "_list", "_color"];
_iconId = _this select 0; _iconId = _this select 0;
@ -53,68 +53,68 @@ disableSerialization;
_list = missionNamespace getvariable [QGVAR(displayIconList),[]]; _list = missionNamespace getvariable [QGVAR(displayIconList),[]];
_refresh = { _refresh = {
private ["_allControls"]; private ["_allControls"];
// Refreshing of all icons.. // Refreshing of all icons..
_allControls = missionNamespace getvariable [QGVAR(displayIconListControls), []]; _allControls = missionNamespace getvariable [QGVAR(displayIconListControls), []];
{ {
ctrlDelete _x; ctrlDelete _x;
}foreach _allControls; }foreach _allControls;
_allControls = []; _allControls = [];
private ["_ctrl", "_setting"]; private ["_ctrl", "_setting"];
_setting = missionNamespace getvariable[QGVAR(settingFeedbackIcons), 0]; _setting = missionNamespace getvariable[QGVAR(settingFeedbackIcons), 0];
if (_setting > 0) then { if (_setting > 0) then {
{ {
// +19000 because we want to make certain we are using free IDCs.. // +19000 because we want to make certain we are using free IDCs..
_ctrl = ((findDisplay 46) ctrlCreate ["RscPicture", _foreachIndex + 19000]); _ctrl = ((findDisplay 46) ctrlCreate ["RscPicture", _foreachIndex + 19000]);
_position = switch (_setting) do { _position = switch (_setting) do {
case TOP_RIGHT_DOWN: {[X_POS_ICONS, Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]}; case TOP_RIGHT_DOWN: {[X_POS_ICONS, Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]};
case TOP_RIGHT_LEFT: {[X_POS_ICONS_SECOND - ((_foreachIndex+3) * DIFFERENCE_ICONS), Y_POS_ICONS_SECOND - (ICON_WIDTH / 2), ICON_WIDTH, ICON_WIDTH]}; case TOP_RIGHT_LEFT: {[X_POS_ICONS_SECOND - ((_foreachIndex+3) * DIFFERENCE_ICONS), Y_POS_ICONS_SECOND - (ICON_WIDTH / 2), ICON_WIDTH, ICON_WIDTH]};
case TOP_LEFT_DOWN: {[LEFT_SIDE + (0.5 * ICON_WIDTH), Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]}; case TOP_LEFT_DOWN: {[LEFT_SIDE + (0.5 * ICON_WIDTH), Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]};
case TOP_LEFT_RIGHT: {[LEFT_SIDE + (0.5 * ICON_WIDTH) - ((_foreachIndex+3) * DIFFERENCE_ICONS), Y_POS_ICONS_SECOND, ICON_WIDTH, ICON_WIDTH]}; case TOP_LEFT_RIGHT: {[LEFT_SIDE + (0.5 * ICON_WIDTH) - ((_foreachIndex+3) * DIFFERENCE_ICONS), Y_POS_ICONS_SECOND, ICON_WIDTH, ICON_WIDTH]};
default {[X_POS_ICONS, Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]}; default {[X_POS_ICONS, Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]};
}; };
_ctrl ctrlSetPosition _position; _ctrl ctrlSetPosition _position;
_ctrl ctrlsetText (_x select 1); _ctrl ctrlsetText (_x select 1);
_ctrl ctrlSetTextColor (_x select 2); _ctrl ctrlSetTextColor (_x select 2);
_ctrl ctrlCommit 0; _ctrl ctrlCommit 0;
_allControls pushback _ctrl; _allControls pushback _ctrl;
}foreach (missionNamespace getvariable [QGVAR(displayIconList),[]]); }foreach (missionNamespace getvariable [QGVAR(displayIconList),[]]);
}; };
missionNamespace setvariable [QGVAR(displayIconListControls), _allControls]; missionNamespace setvariable [QGVAR(displayIconListControls), _allControls];
}; };
if (_show) then { if (_show) then {
if ({(_x select 0 == _iconId)} count _list == 0) then { if ({(_x select 0 == _iconId)} count _list == 0) then {
_list pushback [_iconId, _icon, _color, time]; _list pushback [_iconId, _icon, _color, time];
} else { } else {
{ {
if (_x select 0 == _iconId) exitwith { if (_x select 0 == _iconId) exitwith {
_list set [_foreachIndex, [_iconId, _icon, _color, time]]; _list set [_foreachIndex, [_iconId, _icon, _color, time]];
}; };
}foreach _list; }foreach _list;
}; };
missionNamespace setvariable [QGVAR(displayIconList), _list]; missionNamespace setvariable [QGVAR(displayIconList), _list];
call _refresh; call _refresh;
if (_timeAlive >= 0) then { if (_timeAlive >= 0) then {
[{ [{
[_this select 0, false, "", [0,0,0], 0] call FUNC(displayIcon); [_this select 0, false, "", [0,0,0], 0] call FUNC(displayIcon);
}, [_iconId], _timeAlive, _timeAlive] call EFUNC(common,waitAndExecute); }, [_iconId], _timeAlive, _timeAlive] call EFUNC(common,waitAndExecute);
}; };
} else { } else {
if ({(_x select 0 == _iconId)} count _list == 1) then { if ({(_x select 0 == _iconId)} count _list == 1) then {
private "_newList"; private "_newList";
_newList = []; _newList = [];
{ {
if (_x select 0 != _iconId) then { if (_x select 0 != _iconId) then {
_newList pushback _x; _newList pushback _x;
}; };
}foreach _list; }foreach _list;
missionNamespace setvariable [QGVAR(displayIconList), _newList]; missionNamespace setvariable [QGVAR(displayIconList), _newList];
call _refresh; call _refresh;
}; };
}; };

View File

@ -7,19 +7,19 @@ _var = _this select 0;
_depth = _this select 1; _depth = _this select 1;
_pad = ""; _pad = "";
for "_i" from 0 to _depth do { for "_i" from 0 to _depth do {
_pad = _pad + toString [9]; _pad = _pad + toString [9];
}; };
_depth = _depth + 1; _depth = _depth + 1;
if(IS_ARRAY(_var)) then { if(IS_ARRAY(_var)) then {
if((count _var) > 0) then { if((count _var) > 0) then {
diag_log text format["%1[", _pad]; diag_log text format["%1[", _pad];
{ {
[_x, _depth] call FUNC(dumpArray); [_x, _depth] call FUNC(dumpArray);
} forEach _var; } forEach _var;
diag_log text format["%1],", _pad]; diag_log text format["%1],", _pad];
} else { } else {
diag_log text format["%1[],", _pad]; diag_log text format["%1[],", _pad];
}; };
} else { } else {
diag_log text format["%1%2", _pad, [_var] call FUNC(formatVar)]; diag_log text format["%1%2", _pad, [_var] call FUNC(formatVar)];
}; };

View File

@ -6,42 +6,42 @@
diag_log text format["REGISTERED ACE PFH HANDLERS"]; diag_log text format["REGISTERED ACE PFH HANDLERS"];
diag_log text format["-------------------------------------------"]; diag_log text format["-------------------------------------------"];
if(!isNil "ACE_PFH_COUNTER") then { if(!isNil "ACE_PFH_COUNTER") then {
{ {
private["_pfh"]; private["_pfh"];
_pfh = _x select 0; _pfh = _x select 0;
diag_log text format["Registered PFH: id=%1, %1:%2", (_pfh select 0), (_pfh select 1), (_pfh select 2) ]; diag_log text format["Registered PFH: id=%1, %1:%2", (_pfh select 0), (_pfh select 1), (_pfh select 2) ];
} forEach ACE_PFH_COUNTER; } forEach ACE_PFH_COUNTER;
}; };
diag_log text format["ACE COUNTER RESULTS"]; diag_log text format["ACE COUNTER RESULTS"];
diag_log text format["-------------------------------------------"]; diag_log text format["-------------------------------------------"];
{ {
private["_counterEntry", "_iter", "_total", "_count", "_delta", "_averageResult"]; private["_counterEntry", "_iter", "_total", "_count", "_delta", "_averageResult"];
_counterEntry = _x; _counterEntry = _x;
_iter = 0; _iter = 0;
_total = 0; _total = 0;
_count = 0; _count = 0;
_averageResult = 0; _averageResult = 0;
if( (count _counterEntry) > 3) then { if( (count _counterEntry) > 3) then {
// calc // calc
{ {
if(_iter > 2) then { if(_iter > 2) then {
_count = _count + 1; _count = _count + 1;
_delta = (_x select 1) - (_x select 0); _delta = (_x select 1) - (_x select 0);
_total = _total + _delta; _total = _total + _delta;
}; };
_iter = _iter + 1; _iter = _iter + 1;
} forEach _counterEntry; } forEach _counterEntry;
// results // results
_averageResult = (_total / _count) * 1000; _averageResult = (_total / _count) * 1000;
// dump results // dump results
diag_log text format["%1: Average: %2s / %3 = %4ms", (_counterEntry select 0), _total, _count, _averageResult]; diag_log text format["%1: Average: %2s / %3 = %4ms", (_counterEntry select 0), _total, _count, _averageResult];
} else { } else {
diag_log text format["%1: No results", (_counterEntry select 0) ]; diag_log text format["%1: No results", (_counterEntry select 0) ];
}; };
} forEach ACE_COUNTERS; } forEach ACE_COUNTERS;
/* /*
@ -49,21 +49,21 @@ diag_log text format["-------------------------------------------"];
diag_log text format["ACE_PERFORMANCE_EXCESSIVE_STEP_TRACKER"]; diag_log text format["ACE_PERFORMANCE_EXCESSIVE_STEP_TRACKER"];
diag_log text format["-------------------------------------------"]; diag_log text format["-------------------------------------------"];
{ {
private["_delay"]; private["_delay"];
_delay = _x select 2; _delay = _x select 2;
//if(_delay > 0) then { _delay = _delay / 1000; }; //if(_delay > 0) then { _delay = _delay / 1000; };
diag_log text format["%1: %2s, delay=%3, handle=%4",(_x select 0), _delay, (_x select 3), (_x select 4)]; diag_log text format["%1: %2s, delay=%3, handle=%4",(_x select 0), _delay, (_x select 3), (_x select 4)];
} forEach ACE_PERFORMANCE_EXCESSIVE_STEP_TRACKER; } forEach ACE_PERFORMANCE_EXCESSIVE_STEP_TRACKER;
// Dump PFH Trackers // Dump PFH Trackers
diag_log text format["ACE_PERFORMANCE_EXCESSIVE_FRAME_TRACKER"]; diag_log text format["ACE_PERFORMANCE_EXCESSIVE_FRAME_TRACKER"];
diag_log text format["-------------------------------------------"]; diag_log text format["-------------------------------------------"];
{ {
private["_delta"]; private["_delta"];
_delta = _x select 1; _delta = _x select 1;
//if(_delta > 0) then { _delta = _delta / 1000; }; //if(_delta > 0) then { _delta = _delta / 1000; };
diag_log text format[" DELTA: %1s", _delta]; diag_log text format[" DELTA: %1s", _delta];
} forEach ACE_PERFORMANCE_EXCESSIVE_FRAME_TRACKER; } forEach ACE_PERFORMANCE_EXCESSIVE_FRAME_TRACKER;
//{ //{

View File

@ -7,11 +7,11 @@ _configs = "true" configClasses (configFile >> _this);
_entries = []; _entries = [];
{ {
{ {
_name = toLower configName _x; _name = toLower configName _x;
if !(_name in _entries) then { if !(_name in _entries) then {
diag_log text _name; diag_log text _name;
_entries pushBack _name; _entries pushBack _name;
}; };
} forEach configProperties [_x, "toLower configName _x find 'ace' == 0", false]; } forEach configProperties [_x, "toLower configName _x find 'ace' == 0", false];
} forEach _configs; } forEach _configs;

View File

@ -18,30 +18,30 @@ _type = [_this, 3, 0,[0]] call BIS_fnc_Param;
_parameters = [_this, 4, [], [[]]] call BIS_fnc_Param; _parameters = [_this, 4, [], [[]]] call BIS_fnc_Param;
if (isPlayer _reciever) then { if (isPlayer _reciever) then {
if (!local _reciever) then { if (!local _reciever) then {
[_this, QUOTE(FUNC(sendDisplayInformationTo)), _reciever, false] call EFUNC(common,execRemoteFnc); [_this, QUOTE(FUNC(sendDisplayInformationTo)), _reciever, false] call EFUNC(common,execRemoteFnc);
} else { } else {
if (isLocalized _title) then { if (isLocalized _title) then {
_title = localize _title; _title = localize _title;
}; };
_localizationArray = [_title]; _localizationArray = [_title];
{ {
_localizationArray pushback _x; _localizationArray pushback _x;
}foreach _parameters; }foreach _parameters;
_title = format _localizationArray; _title = format _localizationArray;
{ {
if (isLocalized _x) then { if (isLocalized _x) then {
_localizationArray = [localize _x]; _localizationArray = [localize _x];
{ {
_localizationArray pushback _x; _localizationArray pushback _x;
}foreach _parameters; }foreach _parameters;
_content set [_foreachIndex, format _localizationArray]; _content set [_foreachIndex, format _localizationArray];
}; };
}foreach _content; }foreach _content;
[_title,_content,_type] call EFUNC(common,displayInformation); [_title,_content,_type] call EFUNC(common,displayInformation);
}; };
}; };

View File

@ -18,29 +18,29 @@ _type = [_this, 3, 0,[0]] call BIS_fnc_Param;
_parameters = [_this, 4, [], [[]]] call BIS_fnc_Param; _parameters = [_this, 4, [], [[]]] call BIS_fnc_Param;
if (isPlayer _reciever) then { if (isPlayer _reciever) then {
if (!local _reciever) then { if (!local _reciever) then {
[_this, QUOTE(FUNC(sendDisplayMessageTo)), _reciever, false] call EFUNC(common,execRemoteFnc); [_this, QUOTE(FUNC(sendDisplayMessageTo)), _reciever, false] call EFUNC(common,execRemoteFnc);
} else { } else {
if (isLocalized _title) then { if (isLocalized _title) then {
_title = localize _title; _title = localize _title;
}; };
if (isLocalized _content) then { if (isLocalized _content) then {
_content = localize _content; _content = localize _content;
}; };
_localizationArray = [_title]; _localizationArray = [_title];
{ {
_localizationArray pushback _x; _localizationArray pushback _x;
}foreach _parameters; }foreach _parameters;
_title = format _localizationArray; _title = format _localizationArray;
_localizationArray = [_content]; _localizationArray = [_content];
{ {
_localizationArray pushback _x; _localizationArray pushback _x;
}foreach _parameters; }foreach _parameters;
_content = format _localizationArray; _content = format _localizationArray;
[_title,_content,_type] call EFUNC(common,displayMessage); [_title,_content,_type] call EFUNC(common,displayMessage);
}; };
}; };

View File

@ -1,13 +1,13 @@
#include "\z\ace\addons\common\script_component.hpp" #include "\z\ace\addons\common\script_component.hpp"
#define VALIDHASH(hash) (IS_ARRAY(hash) && {(count hash) >= 2} && {IS_ARRAY(hash select 0)} && {IS_ARRAY(hash select 1)}) #define VALIDHASH(hash) (IS_ARRAY(hash) && {(count hash) >= 2} && {IS_ARRAY(hash select 0)} && {IS_ARRAY(hash select 1)})
#define ERROR(msg) throw msg + format[" @ %1:%2", _callFrom, _lineNo] #define ERROR(msg) throw msg + format[" @ %1:%2", _callFrom, _lineNo]
#define HANDLECATCH diag_log text _exception; assert(exception=="") #define HANDLECATCH diag_log text _exception; assert(exception=="")
#define ERRORDATA(c) private ["_callFrom", "_lineNo"];\ #define ERRORDATA(c) private ["_callFrom", "_lineNo"];\
_callFrom = "";\ _callFrom = "";\
_lineNo = -1;\ _lineNo = -1;\
if((count _this) > c) then {\ if((count _this) > c) then {\
_callFrom = _this select c;\ _callFrom = _this select c;\
_lineNo = _this select c+1;\ _lineNo = _this select c+1;\
}; };

View File

@ -2,11 +2,11 @@
#include "\z\ace\Addons\main\script_mod.hpp" #include "\z\ace\Addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_ATTACH #ifdef DEBUG_ENABLED_ATTACH
#define DEBUG_MODE_FULL #define DEBUG_MODE_FULL
#endif #endif
#ifdef DEBUG_SETTINGS_ATTACH #ifdef DEBUG_SETTINGS_ATTACH
#define DEBUG_SETTINGS DEBUG_SETTINGS_ATTACH #define DEBUG_SETTINGS DEBUG_SETTINGS_ATTACH
#endif #endif
#include "\z\ace\Addons\main\script_macros.hpp" #include "\z\ace\Addons\main\script_macros.hpp"

View File

@ -1,20 +1,20 @@
/* /*
Name: AGM_Drag_fnc_GetWeight Name: AGM_Drag_fnc_GetWeight
Author(s): Author(s):
L-H, edited by commy2 L-H, edited by commy2
Description: Description:
Returns the weight of a crate. Returns the weight of a crate.
Parameters: Parameters:
0: OBJECT - Crate to get weight of 0: OBJECT - Crate to get weight of
Returns: Returns:
NUMBER - Weight NUMBER - Weight
Example: Example:
_weight = Crate1 call AGM_Drag_fnc_GetWeight; _weight = Crate1 call AGM_Drag_fnc_GetWeight;
*/ */
#include "script_component.hpp" #include "script_component.hpp"
@ -25,24 +25,24 @@ _object = _this select 0;
private ["_totalWeight", "_fnc","_fnc_Extra"]; private ["_totalWeight", "_fnc","_fnc_Extra"];
_totalWeight = 0; _totalWeight = 0;
_fnc_Extra = { _fnc_Extra = {
private ["_weight", "_items"]; private ["_weight", "_items"];
_items = _this select 0; _items = _this select 0;
_weight = 0; _weight = 0;
{ {
_weight = _weight + (getNumber (ConfigFile >> (_this select 1) >> _x >> (_this select 2) >> "mass") * ((_items select 1) select _foreachIndex)); _weight = _weight + (getNumber (ConfigFile >> (_this select 1) >> _x >> (_this select 2) >> "mass") * ((_items select 1) select _foreachIndex));
} foreach (_items select 0); } foreach (_items select 0);
_weight _weight
}; };
_fnc = { _fnc = {
private ["_weight", "_items"]; private ["_weight", "_items"];
_items = _this select 0; _items = _this select 0;
_weight = 0; _weight = 0;
{ {
_weight = _weight + (getNumber (ConfigFile >> (_this select 1) >> _x >> "mass") * ((_items select 1) select _foreachIndex)); _weight = _weight + (getNumber (ConfigFile >> (_this select 1) >> _x >> "mass") * ((_items select 1) select _foreachIndex));
} foreach (_items select 0); } foreach (_items select 0);
_weight _weight
}; };
_totalWeight = ([getMagazineCargo _object, "CfgMagazines"] call _fnc); _totalWeight = ([getMagazineCargo _object, "CfgMagazines"] call _fnc);
_totalWeight = _totalWeight + ([getItemCargo _object, "CfgWeapons", "ItemInfo"] call _fnc_Extra); _totalWeight = _totalWeight + ([getItemCargo _object, "CfgWeapons", "ItemInfo"] call _fnc_Extra);

View File

@ -22,46 +22,46 @@ GVAR(CurrentSpeedDial) = 0;
[{(_this select 0) call FUNC(handleScrollWheel);}] call EFUNC(Common,addScrollWheelEventHandler); [{(_this select 0) call FUNC(handleScrollWheel);}] call EFUNC(Common,addScrollWheelEventHandler);
player addEventHandler ["Killed", { player addEventHandler ["Killed", {
private "_deadman"; private "_deadman";
call FUNC(place_Cancel); call FUNC(place_Cancel);
_deadman = [(_this select 0), "DeadManSwitch"] call FUNC(getPlacedExplosives); _deadman = [(_this select 0), "DeadManSwitch"] call FUNC(getPlacedExplosives);
{ {
[(_this select 0), -1, _x, true] call FUNC(detonateExplosive); [(_this select 0), -1, _x, true] call FUNC(detonateExplosive);
} count _deadman; } count _deadman;
}]; }];
player addEventHandler ["Take", { player addEventHandler ["Take", {
private ["_item", "_getter", "_giver", "_config"]; private ["_item", "_getter", "_giver", "_config"];
_item = _this select 2; _item = _this select 2;
_getter = _this select 0; _getter = _this select 0;
_giver = _this select 1; _giver = _this select 1;
_config = ConfigFile >> "CfgWeapons" >> _item; _config = ConfigFile >> "CfgWeapons" >> _item;
if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then { if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then {
private ["_clackerItems"]; private ["_clackerItems"];
_clackerItems = _giver getVariable [QGVAR(Clackers), []]; _clackerItems = _giver getVariable [QGVAR(Clackers), []];
_getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true]; _getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true];
_detonators = [_giver] call FUNC(getDetonators); _detonators = [_giver] call FUNC(getDetonators);
if (count _detonators == 0) then { if (count _detonators == 0) then {
_giver setVariable [QGVAR(Clackers), nil, true]; _giver setVariable [QGVAR(Clackers), nil, true];
}; };
}; };
}]; }];
player addEventHandler ["Put", { player addEventHandler ["Put", {
private ["_item", "_getter", "_giver", "_config"]; private ["_item", "_getter", "_giver", "_config"];
_item = _this select 2; _item = _this select 2;
_getter = _this select 1; _getter = _this select 1;
_giver = _this select 0; _giver = _this select 0;
_config = ConfigFile >> "CfgWeapons" >> _item; _config = ConfigFile >> "CfgWeapons" >> _item;
if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then { if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then {
private ["_clackerItems"]; private ["_clackerItems"];
_clackerItems = _giver getVariable [QGVAR(Clackers), []]; _clackerItems = _giver getVariable [QGVAR(Clackers), []];
_getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true]; _getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true];
_detonators = [_giver] call FUNC(getDetonators); _detonators = [_giver] call FUNC(getDetonators);
if (count _detonators == 0) then { if (count _detonators == 0) then {
_giver setVariable [QGVAR(Clackers), nil, true]; _giver setVariable [QGVAR(Clackers), nil, true];
}; };
}; };
}]; }];

View File

@ -28,9 +28,9 @@ _requiredItems = getArray(_config >> "requires");
_hasRequired = true; _hasRequired = true;
_detonators = [_unit] call FUNC(getDetonators); _detonators = [_unit] call FUNC(getDetonators);
{ {
if !(_x in _detonators) exitWith{ if !(_x in _detonators) exitWith{
_hasRequired = false; _hasRequired = false;
}; };
} count _requiredItems; } count _requiredItems;
if !(_hasRequired) exitWith {}; if !(_hasRequired) exitWith {};
@ -39,6 +39,6 @@ _config = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> co
_clacker = _unit getVariable [QGVAR(Clackers), []]; _clacker = _unit getVariable [QGVAR(Clackers), []];
GVAR(PlacedCount) = GVAR(PlacedCount) + 1; GVAR(PlacedCount) = GVAR(PlacedCount) + 1;
_clacker pushBack [_explosive, getNumber(_config >> "FuseTime"), format [localize "STR_ACE_Explosives_DetonateCode", _clacker pushBack [_explosive, getNumber(_config >> "FuseTime"), format [localize "STR_ACE_Explosives_DetonateCode",
GVAR(PlacedCount)], _magazineClass, configName ((_this select 3) select (count (_this select 3) - 1))]; GVAR(PlacedCount)], _magazineClass, configName ((_this select 3) select (count (_this select 3) - 1))];
_unit setVariable [QGVAR(Clackers), _clacker, true]; _unit setVariable [QGVAR(Clackers), _clacker, true];
_unit sideChat format [localize "STR_ACE_Explosives_DetonateCode", GVAR(PlacedCount)]; _unit sideChat format [localize "STR_ACE_Explosives_DetonateCode", GVAR(PlacedCount)];

View File

@ -22,16 +22,16 @@ _found = false;
EXPLODE_2_PVT(_this,_name,_code); EXPLODE_2_PVT(_this,_name,_code);
if ((_code) == "") ExitWith { if ((_code) == "") ExitWith {
[_name] call FUNC(removeFromSpeedDial); [_name] call FUNC(removeFromSpeedDial);
}; };
{ {
if ((_x select 0) == _name) exitWith { if ((_x select 0) == _name) exitWith {
_speedDial set [_foreachindex, _this]; _speedDial set [_foreachindex, _this];
_found = true; _found = true;
}; };
} foreach _speedDial; } foreach _speedDial;
if (!_found) then { if (!_found) then {
_speedDial pushBack _this; _speedDial pushBack _this;
}; };
ace_player setVariable [QGVAR(SpeedDial), _speedDial]; ace_player setVariable [QGVAR(SpeedDial), _speedDial];

View File

@ -20,7 +20,7 @@ _unit = _this select 0;
_explosive = _this select 1; _explosive = _this select 1;
if (getNumber (ConfigFile >> "CfgAmmo" >> typeof _explosive >> "ACE_explodeOnDefuse") == 1) exitWith { if (getNumber (ConfigFile >> "CfgAmmo" >> typeof _explosive >> "ACE_explodeOnDefuse") == 1) exitWith {
[_unit, -1, [_explosive, 1], true] call FUNC(detonateExplosive); [_unit, -1, [_explosive, 1], true] call FUNC(detonateExplosive);
}; };
_unit action ["Deactivate", _unit, _explosive]; _unit action ["Deactivate", _unit, _explosive];

View File

@ -6,8 +6,8 @@
* 0: Unit <OBJECT> * 0: Unit <OBJECT>
* 1: Max range (-1 to ignore) <NUMBER> * 1: Max range (-1 to ignore) <NUMBER>
* 2: Explosive <ARRAY> * 2: Explosive <ARRAY>
* 0: Explosive <OBJECT> * 0: Explosive <OBJECT>
* 1: Fuse time <NUMBER> * 1: Fuse time <NUMBER>
* *
* Return Value: * Return Value:
* None * None
@ -29,23 +29,23 @@ _result = true;
if (!_ignoreRange && {(_unit distance (_item select 0)) > _range}) exitWith {false}; if (!_ignoreRange && {(_unit distance (_item select 0)) > _range}) exitWith {false};
if (getNumber (ConfigFile >> "CfgAmmo" >> typeof (_item select 0) >> "TriggerWhenDestroyed") == 0) then { if (getNumber (ConfigFile >> "CfgAmmo" >> typeof (_item select 0) >> "TriggerWhenDestroyed") == 0) then {
private ["_exp", "_previousExp"]; private ["_exp", "_previousExp"];
_previousExp = _item select 0; _previousExp = _item select 0;
_exp = getText (ConfigFile >> "CfgAmmo" >> typeof (_previousExp) >> "ACE_Explosive"); _exp = getText (ConfigFile >> "CfgAmmo" >> typeof (_previousExp) >> "ACE_Explosive");
if (_exp != "") then { if (_exp != "") then {
_exp = createVehicle [_exp, [0,0,15001], [], 0, "NONE"]; _exp = createVehicle [_exp, [0,0,15001], [], 0, "NONE"];
_exp setDir (getDir _previousExp); _exp setDir (getDir _previousExp);
_item set [0, _exp]; _item set [0, _exp];
_pos = getPosASL _previousExp; _pos = getPosASL _previousExp;
deleteVehicle _previousExp; deleteVehicle _previousExp;
_exp setPosASL _pos; _exp setPosASL _pos;
}; };
}; };
[{ [{
_explosive = _this; _explosive = _this;
if (!isNull _explosive) then { if (!isNull _explosive) then {
_explosive setDamage 1; _explosive setDamage 1;
}; };
}, _item select 0, _item select 1, 0] call EFUNC(common,waitAndExecute); }, _item select 0, _item select 1, 0] call EFUNC(common,waitAndExecute);
_result _result

View File

@ -24,19 +24,19 @@ _unit setVariable [QGVAR(Dialing), true, true];
_ran = (ceil(random 8)) + 1; _ran = (ceil(random 8)) + 1;
_arr = []; _arr = [];
for [{_i=0}, {_i<_ran}, {_i=_i+1}] do { for [{_i=0}, {_i<_ran}, {_i=_i+1}] do {
_arr = _arr + ['.','..','...','']; _arr = _arr + ['.','..','...',''];
}; };
if (_unit == ace_player) then { if (_unit == ace_player) then {
ctrlSetText [1400,"Calling"]; ctrlSetText [1400,"Calling"];
[FUNC(dialingPhone), 0.25, [_unit,4,_arr,_code]] call CALLSTACK(CBA_fnc_addPerFrameHandler); [FUNC(dialingPhone), 0.25, [_unit,4,_arr,_code]] call CALLSTACK(CBA_fnc_addPerFrameHandler);
} else { } else {
private ["_explosive"]; private ["_explosive"];
_explosive = [_code] call FUNC(getSpeedDialExplosive); _explosive = [_code] call FUNC(getSpeedDialExplosive);
if ((count _explosive) > 0) then { if ((count _explosive) > 0) then {
[{ [{
playSound3D [QUOTE(PATHTO_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosASL (_this select 1),3.16228,1,75]; playSound3D [QUOTE(PATHTO_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosASL (_this select 1),3.16228,1,75];
(_this select 0) setVariable [QGVAR(Dialing), false, true]; (_this select 0) setVariable [QGVAR(Dialing), false, true];
}, [_unit,_explosive select 0], 0.25 * (count _arr - 4), 0] call EFUNC(common,waitAndExecute); }, [_unit,_explosive select 0], 0.25 * (count _arr - 4), 0] call EFUNC(common,waitAndExecute);
[_explosive select 0,(0.25 * (count _arr - 1)) + (_explosive select 2)] call FUNC(startTimer); [_explosive select 0,(0.25 * (count _arr - 1)) + (_explosive select 2)] call FUNC(startTimer);
}; };
}; };

View File

@ -20,10 +20,10 @@ _items = (items _unit);
_result = []; _result = [];
{ {
_config = ConfigFile >> "CfgWeapons" >> _x; _config = ConfigFile >> "CfgWeapons" >> _x;
if (getNumber (_config >> "ACE_Detonator") == 1) then { if (getNumber (_config >> "ACE_Detonator") == 1) then {
_result pushBack _x; _result pushBack _x;
}; };
} forEach _items; } forEach _items;
_result _result

View File

@ -20,29 +20,29 @@ private ["_unit", "_clackerList", "_adjustedList", "_list", "_filter"];
_unit = _this select 0; _unit = _this select 0;
_filter = nil; _filter = nil;
if (count _this > 1) then { if (count _this > 1) then {
_filter = ConfigFile >> "CfgACE_Triggers" >> (_this select 1); _filter = ConfigFile >> "CfgACE_Triggers" >> (_this select 1);
}; };
_clackerList = []; _clackerList = [];
_adjustedList = false; _adjustedList = false;
_clackerList = _unit getVariable [QGVAR(Clackers), []]; _clackerList = _unit getVariable [QGVAR(Clackers), []];
_list = []; _list = [];
{ {
if isNull (_x select 0) then { if isNull (_x select 0) then {
_clackerList set [_foreachIndex, "X"]; _clackerList set [_foreachIndex, "X"];
_adjustedList = true; _adjustedList = true;
} else { } else {
if (isNil "_filter" || {(ConfigFile >> "CfgACE_Triggers" >> (_x select 4)) == _filter}) then { if (isNil "_filter" || {(ConfigFile >> "CfgACE_Triggers" >> (_x select 4)) == _filter}) then {
_list pushBack _x; _list pushBack _x;
}; };
}; };
} foreach _clackerList; } foreach _clackerList;
if (_adjustedList) then { if (_adjustedList) then {
_clackerList = _clackerList - ["X"]; _clackerList = _clackerList - ["X"];
if (count _clackerList == 0) then { if (count _clackerList == 0) then {
_unit SetVariable [QGVAR(Clackers), nil, true]; _unit SetVariable [QGVAR(Clackers), nil, true];
} else { } else {
_unit SetVariable [QGVAR(Clackers), _clackerList, true]; _unit SetVariable [QGVAR(Clackers), _clackerList, true];
}; };
}; };
_list _list

View File

@ -19,9 +19,9 @@ _result = false;
_unit = _this select 0; _unit = _this select 0;
_magazines = magazines _unit; _magazines = magazines _unit;
{ {
if (getNumber (ConfigFile >> "CfgMagazines" >> _x >> "ACE_Placeable") == 1) exitWith { if (getNumber (ConfigFile >> "CfgMagazines" >> _x >> "ACE_Placeable") == 1) exitWith {
_result = true; _result = true;
}; };
} count _magazines; } count _magazines;
_result _result

View File

@ -23,39 +23,39 @@ _range = GetNumber (ConfigFile >> "CfgWeapons" >> _detonator >> "ACE_Range");
_result = [_unit] call FUNC(getPlacedExplosives); _result = [_unit] call FUNC(getPlacedExplosives);
_actions = [localize "STR_ACE_Explosives_DetonateMenu", localize "STR_ACE_Explosives_Detonate"] _actions = [localize "STR_ACE_Explosives_DetonateMenu", localize "STR_ACE_Explosives_Detonate"]
call EFUNC(interaction,prepareSelectMenu); call EFUNC(interaction,prepareSelectMenu);
_count = 0; _count = 0;
{ {
if (!isNull(_x select 0)) then { if (!isNull(_x select 0)) then {
_required = getArray (ConfigFile >> "CfgACE_Triggers" >> (_x select 4) >> "requires"); _required = getArray (ConfigFile >> "CfgACE_Triggers" >> (_x select 4) >> "requires");
if (_detonator in _required) then { if (_detonator in _required) then {
_item = ConfigFile >> "CfgMagazines" >> (_x select 3); _item = ConfigFile >> "CfgMagazines" >> (_x select 3);
_actions = [ _actions = [
_actions, _actions,
_x select 2, _x select 2,
getText(_item >> "picture"), getText(_item >> "picture"),
[_foreachIndex, _range] [_foreachIndex, _range]
] call EFUNC(interaction,AddSelectableItem); ] call EFUNC(interaction,AddSelectableItem);
_count = _count + 1; _count = _count + 1;
}; };
}; };
} foreach _result; } foreach _result;
if (_count > 0) then { if (_count > 0) then {
[ [
_actions, _actions,
{ {
[ [
ACE_player, ACE_player,
[_this select 1] call EFUNC(common,toNumber), [_this select 1] call EFUNC(common,toNumber),
(ACE_player getVariable [QGVAR(Clackers), []]) select ([_this select 0] call EFUNC(common,toNumber)), (ACE_player getVariable [QGVAR(Clackers), []]) select ([_this select 0] call EFUNC(common,toNumber)),
false false
] call FUNC(detonateExplosive); ] call FUNC(detonateExplosive);
call EFUNC(interaction,hideMenu); call EFUNC(interaction,hideMenu);
}, },
{[ACE_player] call FUNC(openTransmitterUI);} {[ACE_player] call FUNC(openTransmitterUI);}
] call EFUNC(interaction,openSelectMenu); ] call EFUNC(interaction,openSelectMenu);
}else{ }else{
call EFUNC(interaction,hideMenu); call EFUNC(interaction,hideMenu);
[ACE_player] call FUNC(openTransmitterUI); [ACE_player] call FUNC(openTransmitterUI);
[localize "STR_ACE_Explosives_NoExplosivesAvailable"] call EFUNC(common,displayTextStructured); [localize "STR_ACE_Explosives_NoExplosivesAvailable"] call EFUNC(common,displayTextStructured);
}; };

View File

@ -22,34 +22,34 @@ _mags = magazines _unit;
_list = []; _list = [];
_itemCount = []; _itemCount = [];
{ {
_item = ConfigFile >> "CfgMagazines" >> _x; _item = ConfigFile >> "CfgMagazines" >> _x;
if (getNumber(_item >> "ACE_Placeable") == 1) then { if (getNumber(_item >> "ACE_Placeable") == 1) then {
_index = _list find _item; _index = _list find _item;
if (_index != -1) then { if (_index != -1) then {
_itemCount set [_index, (_itemCount select _index) + 1]; _itemCount set [_index, (_itemCount select _index) + 1];
} else { } else {
_list pushBack _item; _list pushBack _item;
_itemCount pushBack 1; _itemCount pushBack 1;
}; };
}; };
} forEach _mags; } forEach _mags;
_actions = [localize "STR_ACE_Explosives_PlaceMenu", localize "STR_ACE_Explosives_Place"] _actions = [localize "STR_ACE_Explosives_PlaceMenu", localize "STR_ACE_Explosives_Place"]
call EFUNC(interaction,prepareSelectMenu); call EFUNC(interaction,prepareSelectMenu);
{ {
_actions = [ _actions = [
_actions, _actions,
format [getText(_x >> "displayName") + " (%1)", _itemCount select _foreachIndex], format [getText(_x >> "displayName") + " (%1)", _itemCount select _foreachIndex],
getText(_x >> "picture"), getText(_x >> "picture"),
configName _x configName _x
] call EFUNC(interaction,AddSelectableItem); ] call EFUNC(interaction,AddSelectableItem);
} foreach _list; } foreach _list;
[ [
_actions, _actions,
{ {
[_this] call FUNC(openTriggerSelectionUI); [_this] call FUNC(openTriggerSelectionUI);
}, },
{ {
call EFUNC(interaction,hideMenu); call EFUNC(interaction,hideMenu);
} }
] call EFUNC(interaction,openSelectMenu); ] call EFUNC(interaction,openSelectMenu);

View File

@ -19,30 +19,30 @@ _unit = _this select 0;
_items = (items _unit); _items = (items _unit);
_actions = [localize "STR_ACE_Explosives_TriggerMenu", localize "STR_ACE_Explosives_SelectTrigger"] _actions = [localize "STR_ACE_Explosives_TriggerMenu", localize "STR_ACE_Explosives_SelectTrigger"]
call EFUNC(interaction,prepareSelectMenu); call EFUNC(interaction,prepareSelectMenu);
_detonators = [_unit] call FUNC(getDetonators); _detonators = [_unit] call FUNC(getDetonators);
{ {
_config = ConfigFile >> "CfgWeapons" >> _x; _config = ConfigFile >> "CfgWeapons" >> _x;
_actions = [ _actions = [
_actions, _actions,
getText(_config >> "displayName"), getText(_config >> "displayName"),
getText(_config >> "picture"), getText(_config >> "picture"),
_x _x
] call EFUNC(interaction,addSelectableItem); ] call EFUNC(interaction,addSelectableItem);
} count _detonators; } count _detonators;
if (count _detonators == 0) then { if (count _detonators == 0) then {
call EFUNC(interaction,hideMenu); call EFUNC(interaction,hideMenu);
"ACE_Explosives" call EFUNC(interaction,openMenuSelf); "ACE_Explosives" call EFUNC(interaction,openMenuSelf);
[format[localize "STR_ACE_Explosives_NoTriggersAvailable", "player"]] call EFUNC(Common,displayTextStructured); [format[localize "STR_ACE_Explosives_NoTriggersAvailable", "player"]] call EFUNC(Common,displayTextStructured);
}else{ }else{
[ [
_actions, _actions,
{ {
[ACE_player, _this] call FUNC(openDetonateUI); [ACE_player, _this] call FUNC(openDetonateUI);
}, },
{ {
call EFUNC(interaction,hideMenu); call EFUNC(interaction,hideMenu);
} }
] call EFUNC(interaction,openSelectMenu); ] call EFUNC(interaction,openSelectMenu);
}; };

View File

@ -21,37 +21,37 @@ _detonators = [ACE_player] call FUNC(getDetonators);
_triggerTypes = [_magazine] call FUNC(triggerType); _triggerTypes = [_magazine] call FUNC(triggerType);
_magTriggers = ConfigFile >> "CfgMagazines" >> _magazine >> "ACE_Triggers"; _magTriggers = ConfigFile >> "CfgMagazines" >> _magazine >> "ACE_Triggers";
_actions = [localize "STR_ACE_Explosives_TriggerMenu", localize "STR_ACE_Explosives_SelectTrigger"] _actions = [localize "STR_ACE_Explosives_TriggerMenu", localize "STR_ACE_Explosives_SelectTrigger"]
call EFUNC(interaction,prepareSelectMenu); call EFUNC(interaction,prepareSelectMenu);
_count = 0; _count = 0;
{ {
_required = getArray (_x >> "requires"); _required = getArray (_x >> "requires");
_hasRequiredItems = true; _hasRequiredItems = true;
{ {
if !(_x in _detonators) exitWith { if !(_x in _detonators) exitWith {
_hasRequiredItems = false; _hasRequiredItems = false;
}; };
} count _required; } count _required;
if (_hasRequiredItems) then { if (_hasRequiredItems) then {
_actions = [ _actions = [
_actions, _actions,
if(isText(_magTriggers >> configName _x >> "displayName"))then{getText(_magTriggers >> configName _x >> "displayName")}else{getText(_x >> "displayName")}, if(isText(_magTriggers >> configName _x >> "displayName"))then{getText(_magTriggers >> configName _x >> "displayName")}else{getText(_x >> "displayName")},
if(isText(_magTriggers >> configName _x >> "picture"))then{getText(_magTriggers >> configName _x >> "picture")}else{getText(_x >> "picture")}, if(isText(_magTriggers >> configName _x >> "picture"))then{getText(_magTriggers >> configName _x >> "picture")}else{getText(_x >> "picture")},
[configName _x, _magazine] [configName _x, _magazine]
] call EFUNC(interaction,addSelectableItem); ] call EFUNC(interaction,addSelectableItem);
_count = _count + 1; _count = _count + 1;
}; };
} count _triggerTypes; } count _triggerTypes;
if (_count == 0) then { if (_count == 0) then {
[ACE_player] call FUNC(openPlaceUI); [ACE_player] call FUNC(openPlaceUI);
[format[localize "STR_ACE_Explosives_NoTriggersAvailable", [format[localize "STR_ACE_Explosives_NoTriggersAvailable",
getText(configFile >> "CfgMagazines" >> _magazine >> "DisplayName")]] call EFUNC(Common,displayTextStructured); getText(configFile >> "CfgMagazines" >> _magazine >> "DisplayName")]] call EFUNC(Common,displayTextStructured);
}else{ }else{
[ [
_actions, _actions,
{ {
[_this select 1, _this select 0] call FUNC(selectTrigger); [_this select 1, _this select 0] call FUNC(selectTrigger);
}, },
{[ACE_player] call FUNC(openPlaceUI);} {[ACE_player] call FUNC(openPlaceUI);}
] call EFUNC(interaction,openSelectMenu); ] call EFUNC(interaction,openSelectMenu);
}; };

View File

@ -16,7 +16,7 @@
* *
* Example: * Example:
* _explosive = [player, player modelToWorldVisual [0,0.5, 0.1], 134, * _explosive = [player, player modelToWorldVisual [0,0.5, 0.1], 134,
* "SatchelCharge_Remote_Mag", "Command", []] call ACE_Explosives_fnc_placeExplosive; * "SatchelCharge_Remote_Mag", "Command", []] call ACE_Explosives_fnc_placeExplosive;
* *
* Public: Yes * Public: Yes
*/ */
@ -30,32 +30,32 @@ _triggerConfig = _this select 4;
_triggerSpecificVars = _this select 5; _triggerSpecificVars = _this select 5;
_setDir = true; _setDir = true;
if (count _this > 6) then { if (count _this > 6) then {
_setDir = _this select 6; _setDir = _this select 6;
}; };
if (isNil "_triggerConfig") exitWith { if (isNil "_triggerConfig") exitWith {
diag_log format ["ACE_Explosives: Error config not passed to PlaceExplosive: %1", _this]; diag_log format ["ACE_Explosives: Error config not passed to PlaceExplosive: %1", _this];
objNull objNull
}; };
_magazineTrigger = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> _triggerConfig; _magazineTrigger = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> _triggerConfig;
_triggerConfig = ConfigFile >> "CfgACE_Triggers" >> _triggerConfig; _triggerConfig = ConfigFile >> "CfgACE_Triggers" >> _triggerConfig;
if (isNil "_triggerConfig") exitWith { if (isNil "_triggerConfig") exitWith {
diag_log format ["ACE_Explosives: Error config not found in PlaceExplosive: %1", _this]; diag_log format ["ACE_Explosives: Error config not found in PlaceExplosive: %1", _this];
objNull objNull
}; };
_ammo = getText(ConfigFile >> "CfgMagazines" >> _magazineClass >> "ammo"); _ammo = getText(ConfigFile >> "CfgMagazines" >> _magazineClass >> "ammo");
if (isText(_magazineTrigger >> "ammo")) then { if (isText(_magazineTrigger >> "ammo")) then {
_ammo = getText (_magazineTrigger >> "ammo"); _ammo = getText (_magazineTrigger >> "ammo");
}; };
_triggerSpecificVars pushBack _triggerConfig; _triggerSpecificVars pushBack _triggerConfig;
_explosive = createVehicle [_ammo, _pos, [], 0, "NONE"]; _explosive = createVehicle [_ammo, _pos, [], 0, "NONE"];
if (isText(_triggerConfig >> "onPlace") && {[_unit,_explosive,_magazineClass,_triggerSpecificVars] if (isText(_triggerConfig >> "onPlace") && {[_unit,_explosive,_magazineClass,_triggerSpecificVars]
call compile (getText (_triggerConfig >> "onPlace"))}) exitWith {_explosive}; call compile (getText (_triggerConfig >> "onPlace"))}) exitWith {_explosive};
if (_setDir) then { if (_setDir) then {
[[_explosive, _dir, getNumber (_magazineTrigger >> "pitch")], QFUNC(setPosition)] [[_explosive, _dir, getNumber (_magazineTrigger >> "pitch")], QFUNC(setPosition)]
call EFUNC(common,execRemoteFnc); call EFUNC(common,execRemoteFnc);
}; };
_explosive _explosive

View File

@ -16,8 +16,8 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
if (GVAR(pfeh_running)) then { if (GVAR(pfeh_running)) then {
[QGVAR(Placement),"OnEachFrame"] call CALLSTACK(BIS_fnc_removeStackedEventHandler); [QGVAR(Placement),"OnEachFrame"] call CALLSTACK(BIS_fnc_removeStackedEventHandler);
GVAR(pfeh_running) = false; GVAR(pfeh_running) = false;
}; };
private ["_mag", "_setup", "_player"]; private ["_mag", "_setup", "_player"];
_setup = GVAR(Setup); _setup = GVAR(Setup);
@ -29,77 +29,77 @@ _player = ACE_player;
[_player, "MenuBack", _player getVariable [QGVAR(Cancel), -1]] call EFUNC(Common,removeActionEventHandler); [_player, "MenuBack", _player getVariable [QGVAR(Cancel), -1]] call EFUNC(Common,removeActionEventHandler);
call EFUNC(interaction,hideMouseHint); call EFUNC(interaction,hideMouseHint);
if ((_setup getVariable [QGVAR(Class), ""]) == "") exitWith { if ((_setup getVariable [QGVAR(Class), ""]) == "") exitWith {
deleteVehicle _setup; deleteVehicle _setup;
}; };
_dir = (getDir _setup); _dir = (getDir _setup);
if (_dir > 180) then { if (_dir > 180) then {
_dir = _dir - 180; _dir = _dir - 180;
} else { } else {
_dir = 180 + _dir; _dir = 180 + _dir;
}; };
_setup setVariable [QGVAR(Direction), _dir]; _setup setVariable [QGVAR(Direction), _dir];
_player setVariable [QGVAR(PlantingExplosive), true]; _player setVariable [QGVAR(PlantingExplosive), true];
_setup addEventHandler ["EpeContactStart", { _setup addEventHandler ["EpeContactStart", {
if (!((_this select 0) getVariable [QGVAR(Handled), false])) then { if (!((_this select 0) getVariable [QGVAR(Handled), false])) then {
private ["_player", "_pos", "_attachTo"]; private ["_player", "_pos", "_attachTo"];
_player = ACE_player; _player = ACE_player;
_player setVariable [QGVAR(PlantingExplosive), false]; _player setVariable [QGVAR(PlantingExplosive), false];
_pos = getPosATL (_this select 0); _pos = getPosATL (_this select 0);
(_this select 0) enableSimulationGlobal false; (_this select 0) enableSimulationGlobal false;
if (surfaceIsWater _pos) then { if (surfaceIsWater _pos) then {
_pos = getPosASL (_this select 0); _pos = getPosASL (_this select 0);
(_this select 0) setPosASL _pos; (_this select 0) setPosASL _pos;
}else{ }else{
(_this select 0) setPosATL _pos; (_this select 0) setPosATL _pos;
}; };
(_this select 0) setVariable [QGVAR(Handled), true]; (_this select 0) setVariable [QGVAR(Handled), true];
_attachTo = objNull; _attachTo = objNull;
if (!isNull (_this select 1) && {(_this select 1) isKindOf "AllVehicles"}) then { if (!isNull (_this select 1) && {(_this select 1) isKindOf "AllVehicles"}) then {
_attachTo = (_this select 1); _attachTo = (_this select 1);
}; };
[(_this select 0),_attachTo, _pos] spawn { // TODO: Change to scheduled delay execution [(_this select 0),_attachTo, _pos] spawn { // TODO: Change to scheduled delay execution
private ["_mag", "_setup", "_dir", "_player"]; private ["_mag", "_setup", "_dir", "_player"];
_setup = _this select 0; _setup = _this select 0;
_player = ACE_player; _player = ACE_player;
_mag = _setup getVariable [QGVAR(Class), ""]; _mag = _setup getVariable [QGVAR(Class), ""];
_dir = _setup getVariable [QGVAR(Direction), 0]; _dir = _setup getVariable [QGVAR(Direction), 0];
sleep getNumber(ConfigFile >> "CfgMagazines" >> _mag >> "ACE_DelayTime"); sleep getNumber(ConfigFile >> "CfgMagazines" >> _mag >> "ACE_DelayTime");
_explosive = [_player, _this select 2, _dir, _mag, _setup getVariable QGVAR(Trigger), _explosive = [_player, _this select 2, _dir, _mag, _setup getVariable QGVAR(Trigger),
[_setup getVariable QGVAR(Timer)], isNull (_this select 1)] call FUNC(placeExplosive); [_setup getVariable QGVAR(Timer)], isNull (_this select 1)] call FUNC(placeExplosive);
deleteVehicle _setup; deleteVehicle _setup;
if (!isNull(_explosive)) then { if (!isNull(_explosive)) then {
_player RemoveMagazine _mag; _player RemoveMagazine _mag;
if (!isNull (_this select 1)) then { if (!isNull (_this select 1)) then {
_explosive attachTo [(_this select 1)]; _explosive attachTo [(_this select 1)];
_dir = _dir - (getDir (_this select 1)); _dir = _dir - (getDir (_this select 1));
[[_explosive, _dir, 0], QFUNC(setPosition)] call EFUNC(common,execRemoteFnc); [[_explosive, _dir, 0], QFUNC(setPosition)] call EFUNC(common,execRemoteFnc);
}; };
}; };
}; };
}; };
}]; }];
_setup enableSimulationGlobal true; _setup enableSimulationGlobal true;
_player playActionNow "MedicOther"; _player playActionNow "MedicOther";
[_setup] spawn { // TODO: Change to scheduled delay execution [_setup] spawn { // TODO: Change to scheduled delay execution
private ["_setup", "_player"]; private ["_setup", "_player"];
_setup = _this select 0; _setup = _this select 0;
_player = ACE_player; _player = ACE_player;
sleep 5; sleep 5;
_player setVariable [QGVAR(PlantingExplosive), false]; _player setVariable [QGVAR(PlantingExplosive), false];
if (!isNull _setup) then { if (!isNull _setup) then {
private ["_mag", "_dir", "_delayTime"]; private ["_mag", "_dir", "_delayTime"];
_mag = _setup getVariable [QGVAR(Class), ""]; _mag = _setup getVariable [QGVAR(Class), ""];
_dir = _setup getVariable [QGVAR(Direction), 0]; _dir = _setup getVariable [QGVAR(Direction), 0];
_delayTime = (getNumber(ConfigFile >> "CfgMagazines" >> _mag >> "ACE_DelayTime")) - 5; _delayTime = (getNumber(ConfigFile >> "CfgMagazines" >> _mag >> "ACE_DelayTime")) - 5;
if (_delayTime > 0) then { if (_delayTime > 0) then {
sleep _delayTime; sleep _delayTime;
}; };
if (!isNull _setup) then { if (!isNull _setup) then {
[_player, GetPosATL _setup, _dir, _mag, _setup getVariable QGVAR(Trigger), [_player, GetPosATL _setup, _dir, _mag, _setup getVariable QGVAR(Trigger),
[_setup getVariable QGVAR(Timer)], true] call FUNC(placeExplosive); [_setup getVariable QGVAR(Timer)], true] call FUNC(placeExplosive);
deleteVehicle _setup; deleteVehicle _setup;
_player RemoveMagazine _mag; _player RemoveMagazine _mag;
}; };
}; };
}; };

View File

@ -15,15 +15,15 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
if (GVAR(pfeh_running)) then { if (GVAR(pfeh_running)) then {
[QGVAR(Placement),"OnEachFrame"] call CALLSTACK(BIS_fnc_removeStackedEventHandler); [QGVAR(Placement),"OnEachFrame"] call CALLSTACK(BIS_fnc_removeStackedEventHandler);
GVAR(pfeh_running) = false; GVAR(pfeh_running) = false;
}; };
if (!isNull (GVAR(Setup))) then { if (!isNull (GVAR(Setup))) then {
deleteVehicle GVAR(Setup); deleteVehicle GVAR(Setup);
}; };
GVAR(Setup) = objNull; GVAR(Setup) = objNull;
if (isNil {GVAR(placer)}) then { if (isNil {GVAR(placer)}) then {
GVAR(placer) = objNull; GVAR(placer) = objNull;
}; };
[GVAR(placer), "ACE_Explosives", false] call EFUNC(Common,setForceWalkStatus); [GVAR(placer), "ACE_Explosives", false] call EFUNC(Common,setForceWalkStatus);
GVAR(placer) = objNull; GVAR(placer) = objNull;

View File

@ -18,9 +18,9 @@ private "_speedDial";
_speedDial = ace_player getVariable [QGVAR(SpeedDial), []]; _speedDial = ace_player getVariable [QGVAR(SpeedDial), []];
if (count _speedDial == 0) exitWith {}; if (count _speedDial == 0) exitWith {};
{ {
if ((_x select 0) == (_this select 0)) exitWith { if ((_x select 0) == (_this select 0)) exitWith {
_speedDial set [_foreachIndex, "x"]; _speedDial set [_foreachIndex, "x"];
_speedDial = _speedDial - ["x"]; _speedDial = _speedDial - ["x"];
ace_player setVariable [QGVAR(SpeedDial),_speedDial]; ace_player setVariable [QGVAR(SpeedDial),_speedDial];
}; };
} foreach _speedDial; } foreach _speedDial;

View File

@ -20,6 +20,6 @@ private "_ex";
_ex = _this select 0; _ex = _this select 0;
_ex setDir (_this select 1); _ex setDir (_this select 1);
if ((_this select 2) != 0) then { if ((_this select 2) != 0) then {
[_ex, _this select 2, 0] call CALLSTACK(BIS_fnc_setPitchBank); [_ex, _this select 2, 0] call CALLSTACK(BIS_fnc_setPitchBank);
}; };
//_ex setVectorUp (surfaceNormal _pos); //_ex setVectorUp (surfaceNormal _pos);

View File

@ -20,6 +20,6 @@ _config = getArray (ConfigFile >> "CfgMagazines" >> (_this select 0) >> "ACE_Tri
_count = count _config; _count = count _config;
for "_index" from 0 to (_count - 1) do { for "_index" from 0 to (_count - 1) do {
_result set [_index, ConfigFile >> "CfgACE_Triggers" >> (_config select _index)]; _result set [_index, ConfigFile >> "CfgACE_Triggers" >> (_config select _index)];
}; };
_result _result

View File

@ -2,11 +2,11 @@
#include "\z\ace\addons\main\script_mod.hpp" #include "\z\ace\addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_EXPLOSIVES #ifdef DEBUG_ENABLED_EXPLOSIVES
#define DEBUG_MODE_FULL #define DEBUG_MODE_FULL
#endif #endif
#ifdef DEBUG_SETTINGS_EXPLOSIVES #ifdef DEBUG_SETTINGS_EXPLOSIVES
#define DEBUG_SETTINGS DEBUG_SETTINGS_EXPLOSIVES #define DEBUG_SETTINGS DEBUG_SETTINGS_EXPLOSIVES
#endif #endif
#include "\z\ace\addons\main\script_macros.hpp" #include "\z\ace\addons\main\script_macros.hpp"

View File

@ -5,7 +5,7 @@ _projectile = _this select 0 select 1;
_zeroing = _this select 0 select 2; _zeroing = _this select 0 select 2;
if (isNull _projectile || {!alive _projectile}) exitWith { if (isNull _projectile || {!alive _projectile}) exitWith {
[_this select 1] call CBA_fnc_removePerFrameHandler; [_this select 1] call CBA_fnc_removePerFrameHandler;
}; };
if (_projectile distance _vehicle < _zeroing) exitWith {}; if (_projectile distance _vehicle < _zeroing) exitWith {};

View File

@ -1,352 +1,352 @@
#define BASE_DRAG -0.01 #define BASE_DRAG -0.01
#define HD_MULT 5 #define HD_MULT 5
#define BASE_DRAG_HD (BASE_DRAG*HD_MULT) #define BASE_DRAG_HD (BASE_DRAG*HD_MULT)
class CfgAmmo { class CfgAmmo {
//class ace_arty_105mm_m1_m782_time; //class ace_arty_105mm_m1_m782_time;
//class ace_arty_105mm_m1_m782_prox: ace_arty_105mm_m1_m782_time {}; //class ace_arty_105mm_m1_m782_prox: ace_arty_105mm_m1_m782_time {};
//class ace_arty_105mm_m1_m782_delay: ace_arty_105mm_m1_m782_prox { //class ace_arty_105mm_m1_m782_delay: ace_arty_105mm_m1_m782_prox {
// ACE_FRAG_SKIP = 1; // ACE_FRAG_SKIP = 1;
//}; //};
class Bo_GBU12_LGB; class Bo_GBU12_LGB;
class Nou_GBU12 : Bo_GBU12_LGB { class Nou_GBU12 : Bo_GBU12_LGB {
ACE_FRAG_CLASSES[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"}; ACE_FRAG_CLASSES[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"};
ACE_FRAG_METAL = 140000; ACE_FRAG_METAL = 140000;
ACE_FRAG_CHARGE = 87000; ACE_FRAG_CHARGE = 87000;
ACE_FRAG_GURNEY_C = 2320; ACE_FRAG_GURNEY_C = 2320;
ACE_FRAG_GURNEY_K = 1/2; ACE_FRAG_GURNEY_K = 1/2;
sideAirFriction = 0.04; sideAirFriction = 0.04;
airFriction = 0.04; airFriction = 0.04;
laserLock = 0; laserLock = 0;
}; };
class GrenadeBase; class GrenadeBase;
class Grenade; class Grenade;
class GrenadeHand: Grenade { class GrenadeHand: Grenade {
ACE_FRAG_SKIP = 0; ACE_FRAG_SKIP = 0;
ACE_FRAG_FORCE = 1; ACE_FRAG_FORCE = 1;
// This is a good high-drag frag type for grenades. // This is a good high-drag frag type for grenades.
ACE_FRAG_CLASSES[] = {"ACE_frag_tiny_HD"}; ACE_FRAG_CLASSES[] = {"ACE_frag_tiny_HD"};
/* /*
These values are based on the M67 Grenade, should be tweaked for These values are based on the M67 Grenade, should be tweaked for
individual grenades. individual grenades.
*/ */
ACE_FRAG_METAL = 210; // metal in grams ACE_FRAG_METAL = 210; // metal in grams
ACE_FRAG_CHARGE = 185; // explosive in grams ACE_FRAG_CHARGE = 185; // explosive in grams
ACE_FRAG_GURNEY_C = 2843; // Gurney velocity constant for explosive type. See: http://en.wikipedia.org/wiki/Gurney_equations ACE_FRAG_GURNEY_C = 2843; // Gurney velocity constant for explosive type. See: http://en.wikipedia.org/wiki/Gurney_equations
ACE_FRAG_GURNEY_K = 3/5; // Gurney shape factor, in this case a sphere. See: http://en.wikipedia.org/wiki/Gurney_equations ACE_FRAG_GURNEY_K = 3/5; // Gurney shape factor, in this case a sphere. See: http://en.wikipedia.org/wiki/Gurney_equations
}; };
class GrenadeHand_stone: GrenadeHand { class GrenadeHand_stone: GrenadeHand {
ACE_FRAG_SKIP = 1; ACE_FRAG_SKIP = 1;
}; };
class SmokeShell: GrenadeHand { class SmokeShell: GrenadeHand {
ACE_FRAG_SKIP = 1; ACE_FRAG_SKIP = 1;
}; };
class RocketBase; class RocketBase;
//class R_Hydra_HE: RocketBase { //class R_Hydra_HE: RocketBase {
// ACE_FRAG_SKIP = 1; // ACE_FRAG_SKIP = 1;
//}; //};
//class R_57mm_HE: RocketBase { //class R_57mm_HE: RocketBase {
// ACE_FRAG_SKIP = 1; // ACE_FRAG_SKIP = 1;
//}; //};
class R_80mm_HE: RocketBase { class R_80mm_HE: RocketBase {
ACE_FRAG_SKIP = 1; ACE_FRAG_SKIP = 1;
}; };
//class R_S8T_AT: RocketBase { //class R_S8T_AT: RocketBase {
// ACE_FRAG_SKIP = 1; // ACE_FRAG_SKIP = 1;
//}; //};
class BombCore; class BombCore;
class Bo_Mk82: BombCore { class Bo_Mk82: BombCore {
ACE_FRAG_CLASSES[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"}; ACE_FRAG_CLASSES[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"};
ACE_FRAG_METAL = 140000; ACE_FRAG_METAL = 140000;
ACE_FRAG_CHARGE = 87000; ACE_FRAG_CHARGE = 87000;
ACE_FRAG_GURNEY_C = 2320; ACE_FRAG_GURNEY_C = 2320;
ACE_FRAG_GURNEY_K = 1/2; ACE_FRAG_GURNEY_K = 1/2;
}; };
class G_40mm_HE: GrenadeBase { class G_40mm_HE: GrenadeBase {
ACE_FRAG_SKIP = 0; ACE_FRAG_SKIP = 0;
ACE_FRAG_FORCE = 1; ACE_FRAG_FORCE = 1;
}; };
class ACE_G_40mm_HEDP: G_40mm_HE { class ACE_G_40mm_HEDP: G_40mm_HE {
}; };
class ACE_G_40mm_HE: ACE_G_40mm_HEDP { class ACE_G_40mm_HE: ACE_G_40mm_HEDP {
}; };
class ACE_G_40mm_Practice: ACE_G_40mm_HE { class ACE_G_40mm_Practice: ACE_G_40mm_HE {
ACE_FRAG_SKIP = 1; ACE_FRAG_SKIP = 1;
}; };
class ACE_G40mm_HE_VOG25P: G_40mm_HE { class ACE_G40mm_HE_VOG25P: G_40mm_HE {
ACE_FRAG_SKIP = 0; ACE_FRAG_SKIP = 0;
ACE_FRAG_FORCE = 1; ACE_FRAG_FORCE = 1;
}; };
//class R_SMAW_HEDP; //class R_SMAW_HEDP;
//class R_MEEWS_HEDP : R_SMAW_HEDP { //class R_MEEWS_HEDP : R_SMAW_HEDP {
// ACE_FRAG_FORCE = 1; // ACE_FRAG_FORCE = 1;
// ACE_FRAG_MULTIPLIER = 1.2; // ACE_FRAG_MULTIPLIER = 1.2;
//}; //};
//class MissileBase; //class MissileBase;
//class M_Hellfire_AT: MissileBase { //class M_Hellfire_AT: MissileBase {
// ACE_FRAG_FORCE = 1; // ACE_FRAG_FORCE = 1;
// ACE_FRAG_MULTIPLIER = 1.75; // ACE_FRAG_MULTIPLIER = 1.75;
//}; //};
/* /*
class B_762x51_Ball; class B_762x51_Ball;
class ACE_frag_base: B_762x51_Ball { ////TODO: B_762x45_Ball no longer exists, is this a valid replacement? class ACE_frag_base: B_762x51_Ball { ////TODO: B_762x45_Ball no longer exists, is this a valid replacement?
model = "\A3\Weapons_f\ammo\shell"; model = "\A3\Weapons_f\ammo\shell";
timeToLive = 12; timeToLive = 12;
typicalSpeed = 800; typicalSpeed = 800;
// Fix sounds // Fix sounds
effectFly = "AmmoClassic"; effectFly = "AmmoClassic";
soundDefault1[] = {"A3\sounds_f\weapons\hits\concrete_1.wav",0.158114,1,30}; soundDefault1[] = {"A3\sounds_f\weapons\hits\concrete_1.wav",0.158114,1,30};
soundDefault2[] = {"A3\sounds_f\weapons\hits\concrete_2.wav",0.158114,1,30}; soundDefault2[] = {"A3\sounds_f\weapons\hits\concrete_2.wav",0.158114,1,30};
soundDefault3[] = {"A3\sounds_f\weapons\hits\concrete_3.wav",0.158114,1,30}; soundDefault3[] = {"A3\sounds_f\weapons\hits\concrete_3.wav",0.158114,1,30};
soundDefault4[] = {"A3\sounds_f\weapons\hits\concrete_4.wav",0.158114,1,30}; soundDefault4[] = {"A3\sounds_f\weapons\hits\concrete_4.wav",0.158114,1,30};
soundDefault5[] = {"A3\sounds_f\weapons\hits\concrete_5.wav",0.158114,1,30}; soundDefault5[] = {"A3\sounds_f\weapons\hits\concrete_5.wav",0.158114,1,30};
soundDefault6[] = {"A3\sounds_f\weapons\hits\concrete_6.wav",0.158114,1,30}; soundDefault6[] = {"A3\sounds_f\weapons\hits\concrete_6.wav",0.158114,1,30};
soundDefault7[] = {"A3\sounds_f\weapons\hits\concrete_7.wav",0.158114,1,30}; soundDefault7[] = {"A3\sounds_f\weapons\hits\concrete_7.wav",0.158114,1,30};
soundDefault8[] = {"A3\sounds_f\weapons\hits\concrete_8.wav",0.158114,1,30}; soundDefault8[] = {"A3\sounds_f\weapons\hits\concrete_8.wav",0.158114,1,30};
soundGroundSoft1[] = {"A3\sounds_f\weapons\hits\soft_ground_1.wav",0.02811705,1,30}; soundGroundSoft1[] = {"A3\sounds_f\weapons\hits\soft_ground_1.wav",0.02811705,1,30};
soundGroundSoft2[] = {"A3\sounds_f\weapons\hits\soft_ground_2.wav",0.02811705,1,30}; soundGroundSoft2[] = {"A3\sounds_f\weapons\hits\soft_ground_2.wav",0.02811705,1,30};
soundGroundSoft3[] = {"A3\sounds_f\weapons\hits\soft_ground_3.wav",0.02811705,1,30}; soundGroundSoft3[] = {"A3\sounds_f\weapons\hits\soft_ground_3.wav",0.02811705,1,30};
soundGroundSoft4[] = {"A3\sounds_f\weapons\hits\soft_ground_4.wav",0.02811705,1,30}; soundGroundSoft4[] = {"A3\sounds_f\weapons\hits\soft_ground_4.wav",0.02811705,1,30};
soundGroundSoft5[] = {"A3\sounds_f\weapons\hits\soft_ground_5.wav",0.02811705,1,30}; soundGroundSoft5[] = {"A3\sounds_f\weapons\hits\soft_ground_5.wav",0.02811705,1,30};
soundGroundSoft6[] = {"A3\sounds_f\weapons\hits\soft_ground_6.wav",0.02811705,1,30}; soundGroundSoft6[] = {"A3\sounds_f\weapons\hits\soft_ground_6.wav",0.02811705,1,30};
soundGroundSoft7[] = {"A3\sounds_f\weapons\hits\soft_ground_7.wav",0.02811705,1,30}; soundGroundSoft7[] = {"A3\sounds_f\weapons\hits\soft_ground_7.wav",0.02811705,1,30};
soundGroundSoft8[] = {"A3\sounds_f\weapons\hits\soft_ground_8.wav",0.02811705,1,30}; soundGroundSoft8[] = {"A3\sounds_f\weapons\hits\soft_ground_8.wav",0.02811705,1,30};
soundGroundHard1[] = {"A3\sounds_f\weapons\hits\hard_ground_1.wav",0.62946,1,40}; soundGroundHard1[] = {"A3\sounds_f\weapons\hits\hard_ground_1.wav",0.62946,1,40};
soundGroundHard2[] = {"A3\sounds_f\weapons\hits\hard_ground_2.wav",0.62946,1,40}; soundGroundHard2[] = {"A3\sounds_f\weapons\hits\hard_ground_2.wav",0.62946,1,40};
soundGroundHard3[] = {"A3\sounds_f\weapons\hits\hard_ground_3.wav",0.62946,1,40}; soundGroundHard3[] = {"A3\sounds_f\weapons\hits\hard_ground_3.wav",0.62946,1,40};
soundGroundHard4[] = {"A3\sounds_f\weapons\hits\hard_ground_4.wav",0.62946,1,40}; soundGroundHard4[] = {"A3\sounds_f\weapons\hits\hard_ground_4.wav",0.62946,1,40};
soundGroundHard5[] = {"A3\sounds_f\weapons\hits\hard_ground_5.wav",0.62946,1,40}; soundGroundHard5[] = {"A3\sounds_f\weapons\hits\hard_ground_5.wav",0.62946,1,40};
soundGroundHard6[] = {"A3\sounds_f\weapons\hits\hard_ground_6.wav",0.62946,1,40}; soundGroundHard6[] = {"A3\sounds_f\weapons\hits\hard_ground_6.wav",0.62946,1,40};
soundGroundHard7[] = {"A3\sounds_f\weapons\hits\hard_ground_7.wav",0.62946,1,40}; soundGroundHard7[] = {"A3\sounds_f\weapons\hits\hard_ground_7.wav",0.62946,1,40};
soundGroundHard8[] = {"A3\sounds_f\weapons\hits\hard_ground_8.wav",0.62946,1,40}; soundGroundHard8[] = {"A3\sounds_f\weapons\hits\hard_ground_8.wav",0.62946,1,40};
soundMetal1[] = {"A3\sounds_f\weapons\hits\metal_1.wav",0.158114,1,45}; soundMetal1[] = {"A3\sounds_f\weapons\hits\metal_1.wav",0.158114,1,45};
soundMetal2[] = {"A3\sounds_f\weapons\hits\metal_2.wav",0.158114,1,45}; soundMetal2[] = {"A3\sounds_f\weapons\hits\metal_2.wav",0.158114,1,45};
soundMetal3[] = {"A3\sounds_f\weapons\hits\metal_3.wav",0.158114,1,45}; soundMetal3[] = {"A3\sounds_f\weapons\hits\metal_3.wav",0.158114,1,45};
soundMetal4[] = {"A3\sounds_f\weapons\hits\metal_4.wav",0.158114,1,45}; soundMetal4[] = {"A3\sounds_f\weapons\hits\metal_4.wav",0.158114,1,45};
soundMetal5[] = {"A3\sounds_f\weapons\hits\metal_5.wav",0.158114,1,45}; soundMetal5[] = {"A3\sounds_f\weapons\hits\metal_5.wav",0.158114,1,45};
soundMetal6[] = {"A3\sounds_f\weapons\hits\metal_6.wav",0.158114,1,45}; soundMetal6[] = {"A3\sounds_f\weapons\hits\metal_6.wav",0.158114,1,45};
soundMetal7[] = {"A3\sounds_f\weapons\hits\metal_7.wav",0.158114,1,45}; soundMetal7[] = {"A3\sounds_f\weapons\hits\metal_7.wav",0.158114,1,45};
soundMetal8[] = {"A3\sounds_f\weapons\hits\metal_8.wav",0.158114,1,45}; soundMetal8[] = {"A3\sounds_f\weapons\hits\metal_8.wav",0.158114,1,45};
soundGlass1[] = {"A3\sounds_f\weapons\hits\glass_1.wav",0.177828,1,25}; soundGlass1[] = {"A3\sounds_f\weapons\hits\glass_1.wav",0.177828,1,25};
soundGlass2[] = {"A3\sounds_f\weapons\hits\glass_2.wav",0.177828,1,25}; soundGlass2[] = {"A3\sounds_f\weapons\hits\glass_2.wav",0.177828,1,25};
soundGlass3[] = {"A3\sounds_f\weapons\hits\glass_3.wav",0.177828,1,25}; soundGlass3[] = {"A3\sounds_f\weapons\hits\glass_3.wav",0.177828,1,25};
soundGlass4[] = {"A3\sounds_f\weapons\hits\glass_4.wav",0.177828,1,25}; soundGlass4[] = {"A3\sounds_f\weapons\hits\glass_4.wav",0.177828,1,25};
soundGlass5[] = {"A3\sounds_f\weapons\hits\glass_5.wav",0.177828,1,25}; soundGlass5[] = {"A3\sounds_f\weapons\hits\glass_5.wav",0.177828,1,25};
soundGlass6[] = {"A3\sounds_f\weapons\hits\glass_6.wav",0.177828,1,25}; soundGlass6[] = {"A3\sounds_f\weapons\hits\glass_6.wav",0.177828,1,25};
soundGlass7[] = {"A3\sounds_f\weapons\hits\glass_7.wav",0.177828,1,25}; soundGlass7[] = {"A3\sounds_f\weapons\hits\glass_7.wav",0.177828,1,25};
soundGlass8[] = {"A3\sounds_f\weapons\hits\glass_8.wav",0.177828,1,25}; soundGlass8[] = {"A3\sounds_f\weapons\hits\glass_8.wav",0.177828,1,25};
soundGlassArmored1[] = {"A3\sounds_f\weapons\hits\glass_arm_1.wav",0.177828,1,30}; soundGlassArmored1[] = {"A3\sounds_f\weapons\hits\glass_arm_1.wav",0.177828,1,30};
soundGlassArmored2[] = {"A3\sounds_f\weapons\hits\glass_arm_2.wav",0.177828,1,30}; soundGlassArmored2[] = {"A3\sounds_f\weapons\hits\glass_arm_2.wav",0.177828,1,30};
soundGlassArmored3[] = {"A3\sounds_f\weapons\hits\glass_arm_3.wav",0.177828,1,30}; soundGlassArmored3[] = {"A3\sounds_f\weapons\hits\glass_arm_3.wav",0.177828,1,30};
soundGlassArmored4[] = {"A3\sounds_f\weapons\hits\glass_arm_4.wav",0.177828,1,30}; soundGlassArmored4[] = {"A3\sounds_f\weapons\hits\glass_arm_4.wav",0.177828,1,30};
soundGlassArmored5[] = {"A3\sounds_f\weapons\hits\glass_arm_5.wav",0.177828,1,30}; soundGlassArmored5[] = {"A3\sounds_f\weapons\hits\glass_arm_5.wav",0.177828,1,30};
soundGlassArmored6[] = {"A3\sounds_f\weapons\hits\glass_arm_6.wav",0.177828,1,30}; soundGlassArmored6[] = {"A3\sounds_f\weapons\hits\glass_arm_6.wav",0.177828,1,30};
soundGlassArmored7[] = {"A3\sounds_f\weapons\hits\glass_arm_7.wav",0.177828,1,30}; soundGlassArmored7[] = {"A3\sounds_f\weapons\hits\glass_arm_7.wav",0.177828,1,30};
soundGlassArmored8[] = {"A3\sounds_f\weapons\hits\glass_arm_8.wav",0.177828,1,30}; soundGlassArmored8[] = {"A3\sounds_f\weapons\hits\glass_arm_8.wav",0.177828,1,30};
soundVehiclePlate1[] = {"A3\sounds_f\weapons\hits\metal_plate_1.wav",0.281170,1,40}; soundVehiclePlate1[] = {"A3\sounds_f\weapons\hits\metal_plate_1.wav",0.281170,1,40};
soundVehiclePlate2[] = {"A3\sounds_f\weapons\hits\metal_plate_2.wav",0.281170,1,40}; soundVehiclePlate2[] = {"A3\sounds_f\weapons\hits\metal_plate_2.wav",0.281170,1,40};
soundVehiclePlate3[] = {"A3\sounds_f\weapons\hits\metal_plate_3.wav",0.281170,1,40}; soundVehiclePlate3[] = {"A3\sounds_f\weapons\hits\metal_plate_3.wav",0.281170,1,40};
soundVehiclePlate4[] = {"A3\sounds_f\weapons\hits\metal_plate_4.wav",0.281170,1,40}; soundVehiclePlate4[] = {"A3\sounds_f\weapons\hits\metal_plate_4.wav",0.281170,1,40};
soundVehiclePlate5[] = {"A3\sounds_f\weapons\hits\metal_plate_5.wav",0.281170,1,40}; soundVehiclePlate5[] = {"A3\sounds_f\weapons\hits\metal_plate_5.wav",0.281170,1,40};
soundVehiclePlate6[] = {"A3\sounds_f\weapons\hits\metal_plate_6.wav",0.281170,1,40}; soundVehiclePlate6[] = {"A3\sounds_f\weapons\hits\metal_plate_6.wav",0.281170,1,40};
soundVehiclePlate7[] = {"A3\sounds_f\weapons\hits\metal_plate_7.wav",0.281170,1,40}; soundVehiclePlate7[] = {"A3\sounds_f\weapons\hits\metal_plate_7.wav",0.281170,1,40};
soundVehiclePlate8[] = {"A3\sounds_f\weapons\hits\metal_plate_8.wav",0.281170,1,40}; soundVehiclePlate8[] = {"A3\sounds_f\weapons\hits\metal_plate_8.wav",0.281170,1,40};
soundWood1[] = {"A3\sounds_f\weapons\hits\wood_1.wav",0.158114,1,30}; soundWood1[] = {"A3\sounds_f\weapons\hits\wood_1.wav",0.158114,1,30};
soundWood2[] = {"A3\sounds_f\weapons\hits\wood_2.wav",0.158114,1,30}; soundWood2[] = {"A3\sounds_f\weapons\hits\wood_2.wav",0.158114,1,30};
soundWood3[] = {"A3\sounds_f\weapons\hits\wood_3.wav",0.158114,1,30}; soundWood3[] = {"A3\sounds_f\weapons\hits\wood_3.wav",0.158114,1,30};
soundWood4[] = {"A3\sounds_f\weapons\hits\wood_4.wav",0.158114,1,30}; soundWood4[] = {"A3\sounds_f\weapons\hits\wood_4.wav",0.158114,1,30};
soundWood5[] = {"A3\sounds_f\weapons\hits\wood_5.wav",0.158114,1,30}; soundWood5[] = {"A3\sounds_f\weapons\hits\wood_5.wav",0.158114,1,30};
soundWood6[] = {"A3\sounds_f\weapons\hits\wood_6.wav",0.158114,1,30}; soundWood6[] = {"A3\sounds_f\weapons\hits\wood_6.wav",0.158114,1,30};
soundWood7[] = {"A3\sounds_f\weapons\hits\wood_7.wav",0.158114,1,30}; soundWood7[] = {"A3\sounds_f\weapons\hits\wood_7.wav",0.158114,1,30};
soundWood8[] = {"A3\sounds_f\weapons\hits\wood_8.wav",0.158114,1,30}; soundWood8[] = {"A3\sounds_f\weapons\hits\wood_8.wav",0.158114,1,30};
soundHitBody1[] = {"A3\sounds_f\weapons\hits\body_1.wav",0.0177828,1,25}; soundHitBody1[] = {"A3\sounds_f\weapons\hits\body_1.wav",0.0177828,1,25};
soundHitBody2[] = {"A3\sounds_f\weapons\hits\body_2.wav",0.0177828,1,25}; soundHitBody2[] = {"A3\sounds_f\weapons\hits\body_2.wav",0.0177828,1,25};
soundHitBody3[] = {"A3\sounds_f\weapons\hits\body_3.wav",0.0177828,1,25}; soundHitBody3[] = {"A3\sounds_f\weapons\hits\body_3.wav",0.0177828,1,25};
soundHitBody4[] = {"A3\sounds_f\weapons\hits\body_4.wav",0.0177828,1,25}; soundHitBody4[] = {"A3\sounds_f\weapons\hits\body_4.wav",0.0177828,1,25};
soundHitBody5[] = {"A3\sounds_f\weapons\hits\body_5.wav",0.0177828,1,25}; soundHitBody5[] = {"A3\sounds_f\weapons\hits\body_5.wav",0.0177828,1,25};
soundHitBody6[] = {"A3\sounds_f\weapons\hits\body_6.wav",0.0177828,1,25}; soundHitBody6[] = {"A3\sounds_f\weapons\hits\body_6.wav",0.0177828,1,25};
soundHitBody7[] = {"A3\sounds_f\weapons\hits\body_7.wav",0.0177828,1,25}; soundHitBody7[] = {"A3\sounds_f\weapons\hits\body_7.wav",0.0177828,1,25};
soundHitBody8[] = {"A3\sounds_f\weapons\hits\body_8.wav",0.0177828,1,25}; soundHitBody8[] = {"A3\sounds_f\weapons\hits\body_8.wav",0.0177828,1,25};
soundHitBuilding1[] = {"A3\sounds_f\weapons\hits\building_1.wav",0.251189,1,30}; soundHitBuilding1[] = {"A3\sounds_f\weapons\hits\building_1.wav",0.251189,1,30};
soundHitBuilding2[] = {"A3\sounds_f\weapons\hits\building_2.wav",0.251189,1,30}; soundHitBuilding2[] = {"A3\sounds_f\weapons\hits\building_2.wav",0.251189,1,30};
soundHitBuilding3[] = {"A3\sounds_f\weapons\hits\building_3.wav",0.251189,1,30}; soundHitBuilding3[] = {"A3\sounds_f\weapons\hits\building_3.wav",0.251189,1,30};
soundHitBuilding4[] = {"A3\sounds_f\weapons\hits\building_4.wav",0.251189,1,30}; soundHitBuilding4[] = {"A3\sounds_f\weapons\hits\building_4.wav",0.251189,1,30};
soundHitBuilding5[] = {"A3\sounds_f\weapons\hits\building_5.wav",0.251189,1,30}; soundHitBuilding5[] = {"A3\sounds_f\weapons\hits\building_5.wav",0.251189,1,30};
soundHitBuilding6[] = {"A3\sounds_f\weapons\hits\building_6.wav",0.251189,1,30}; soundHitBuilding6[] = {"A3\sounds_f\weapons\hits\building_6.wav",0.251189,1,30};
soundHitBuilding7[] = {"A3\sounds_f\weapons\hits\building_7.wav",0.251189,1,30}; soundHitBuilding7[] = {"A3\sounds_f\weapons\hits\building_7.wav",0.251189,1,30};
soundHitBuilding8[] = {"A3\sounds_f\weapons\hits\building_8.wav",0.251189,1,30}; soundHitBuilding8[] = {"A3\sounds_f\weapons\hits\building_8.wav",0.251189,1,30};
soundHitFoliage1[] = {"A3\sounds_f\weapons\hits\foliage_1.wav",0.177828,1,25}; soundHitFoliage1[] = {"A3\sounds_f\weapons\hits\foliage_1.wav",0.177828,1,25};
soundHitFoliage2[] = {"A3\sounds_f\weapons\hits\foliage_2.wav",0.177828,1,25}; soundHitFoliage2[] = {"A3\sounds_f\weapons\hits\foliage_2.wav",0.177828,1,25};
soundHitFoliage3[] = {"A3\sounds_f\weapons\hits\foliage_3.wav",0.177828,1,25}; soundHitFoliage3[] = {"A3\sounds_f\weapons\hits\foliage_3.wav",0.177828,1,25};
soundHitFoliage4[] = {"A3\sounds_f\weapons\hits\foliage_4.wav",0.177828,1,25}; soundHitFoliage4[] = {"A3\sounds_f\weapons\hits\foliage_4.wav",0.177828,1,25};
soundHitFoliage5[] = {"A3\sounds_f\weapons\hits\foliage_5.wav",0.177828,1,25}; soundHitFoliage5[] = {"A3\sounds_f\weapons\hits\foliage_5.wav",0.177828,1,25};
soundHitFoliage6[] = {"A3\sounds_f\weapons\hits\foliage_6.wav",0.177828,1,25}; soundHitFoliage6[] = {"A3\sounds_f\weapons\hits\foliage_6.wav",0.177828,1,25};
soundHitFoliage7[] = {"A3\sounds_f\weapons\hits\foliage_7.wav",0.177828,1,25}; soundHitFoliage7[] = {"A3\sounds_f\weapons\hits\foliage_7.wav",0.177828,1,25};
soundHitFoliage8[] = {"A3\sounds_f\weapons\hits\foliage_8.wav",0.177828,1,25}; soundHitFoliage8[] = {"A3\sounds_f\weapons\hits\foliage_8.wav",0.177828,1,25};
soundPlastic1[] = {"A3\sounds_f\weapons\hits\plastic_1.wav",0.177828,1,25}; soundPlastic1[] = {"A3\sounds_f\weapons\hits\plastic_1.wav",0.177828,1,25};
soundPlastic2[] = {"A3\sounds_f\weapons\hits\plastic_2.wav",0.177828,1,25}; soundPlastic2[] = {"A3\sounds_f\weapons\hits\plastic_2.wav",0.177828,1,25};
soundPlastic3[] = {"A3\sounds_f\weapons\hits\plastic_3.wav",0.177828,1,25}; soundPlastic3[] = {"A3\sounds_f\weapons\hits\plastic_3.wav",0.177828,1,25};
soundPlastic4[] = {"A3\sounds_f\weapons\hits\plastic_4.wav",0.177828,1,25}; soundPlastic4[] = {"A3\sounds_f\weapons\hits\plastic_4.wav",0.177828,1,25};
soundPlastic5[] = {"A3\sounds_f\weapons\hits\plastic_5.wav",0.177828,1,25}; soundPlastic5[] = {"A3\sounds_f\weapons\hits\plastic_5.wav",0.177828,1,25};
soundPlastic6[] = {"A3\sounds_f\weapons\hits\plastic_6.wav",0.177828,1,25}; soundPlastic6[] = {"A3\sounds_f\weapons\hits\plastic_6.wav",0.177828,1,25};
soundPlastic7[] = {"A3\sounds_f\weapons\hits\plastic_7.wav",0.177828,1,25}; soundPlastic7[] = {"A3\sounds_f\weapons\hits\plastic_7.wav",0.177828,1,25};
soundPlastic8[] = {"A3\sounds_f\weapons\hits\plastic_8.wav",0.177828,1,25}; soundPlastic8[] = {"A3\sounds_f\weapons\hits\plastic_8.wav",0.177828,1,25};
soundConcrete1[] = {"A3\sounds_f\weapons\hits\concrete_1.wav",0.177828,1,35}; soundConcrete1[] = {"A3\sounds_f\weapons\hits\concrete_1.wav",0.177828,1,35};
soundConcrete2[] = {"A3\sounds_f\weapons\hits\concrete_2.wav",0.177828,1,35}; soundConcrete2[] = {"A3\sounds_f\weapons\hits\concrete_2.wav",0.177828,1,35};
soundConcrete3[] = {"A3\sounds_f\weapons\hits\concrete_3.wav",0.177828,1,35}; soundConcrete3[] = {"A3\sounds_f\weapons\hits\concrete_3.wav",0.177828,1,35};
soundConcrete4[] = {"A3\sounds_f\weapons\hits\concrete_4.wav",0.177828,1,35}; soundConcrete4[] = {"A3\sounds_f\weapons\hits\concrete_4.wav",0.177828,1,35};
soundConcrete5[] = {"A3\sounds_f\weapons\hits\concrete_5.wav",0.177828,1,35}; soundConcrete5[] = {"A3\sounds_f\weapons\hits\concrete_5.wav",0.177828,1,35};
soundConcrete6[] = {"A3\sounds_f\weapons\hits\concrete_6.wav",0.177828,1,35}; soundConcrete6[] = {"A3\sounds_f\weapons\hits\concrete_6.wav",0.177828,1,35};
soundConcrete7[] = {"A3\sounds_f\weapons\hits\concrete_7.wav",0.177828,1,35}; soundConcrete7[] = {"A3\sounds_f\weapons\hits\concrete_7.wav",0.177828,1,35};
soundConcrete8[] = {"A3\sounds_f\weapons\hits\concrete_8.wav",0.177828,1,35}; soundConcrete8[] = {"A3\sounds_f\weapons\hits\concrete_8.wav",0.177828,1,35};
soundRubber1[] = {"A3\sounds_f\weapons\hits\tyre_1.wav",0.158114,1,25}; soundRubber1[] = {"A3\sounds_f\weapons\hits\tyre_1.wav",0.158114,1,25};
soundRubber2[] = {"A3\sounds_f\weapons\hits\tyre_2.wav",0.158114,1,25}; soundRubber2[] = {"A3\sounds_f\weapons\hits\tyre_2.wav",0.158114,1,25};
soundRubber3[] = {"A3\sounds_f\weapons\hits\tyre_3.wav",0.158114,1,25}; soundRubber3[] = {"A3\sounds_f\weapons\hits\tyre_3.wav",0.158114,1,25};
soundRubber4[] = {"A3\sounds_f\weapons\hits\tyre_4.wav",0.158114,1,25}; soundRubber4[] = {"A3\sounds_f\weapons\hits\tyre_4.wav",0.158114,1,25};
soundRubber5[] = {"A3\sounds_f\weapons\hits\tyre_5.wav",0.158114,1,25}; soundRubber5[] = {"A3\sounds_f\weapons\hits\tyre_5.wav",0.158114,1,25};
soundRubber6[] = {"A3\sounds_f\weapons\hits\tyre_6.wav",0.158114,1,25}; soundRubber6[] = {"A3\sounds_f\weapons\hits\tyre_6.wav",0.158114,1,25};
soundRubber7[] = {"A3\sounds_f\weapons\hits\tyre_7.wav",0.158114,1,25}; soundRubber7[] = {"A3\sounds_f\weapons\hits\tyre_7.wav",0.158114,1,25};
soundRubber8[] = {"A3\sounds_f\weapons\hits\tyre_8.wav",0.158114,1,25}; soundRubber8[] = {"A3\sounds_f\weapons\hits\tyre_8.wav",0.158114,1,25};
soundWater1[] = {"A3\sounds_f\weapons\hits\water_01.wav",0.158114,1,25}; soundWater1[] = {"A3\sounds_f\weapons\hits\water_01.wav",0.158114,1,25};
soundWater2[] = {"A3\sounds_f\weapons\hits\water_02.wav",0.158114,1,25}; soundWater2[] = {"A3\sounds_f\weapons\hits\water_02.wav",0.158114,1,25};
soundWater3[] = {"A3\sounds_f\weapons\hits\water_03.wav",0.158114,1,25}; soundWater3[] = {"A3\sounds_f\weapons\hits\water_03.wav",0.158114,1,25};
soundWater4[] = {"A3\sounds_f\weapons\hits\water_04.wav",0.158114,1,25}; soundWater4[] = {"A3\sounds_f\weapons\hits\water_04.wav",0.158114,1,25};
soundWater5[] = {"A3\sounds_f\weapons\hits\water_05.wav",0.158114,1,25}; soundWater5[] = {"A3\sounds_f\weapons\hits\water_05.wav",0.158114,1,25};
soundWater6[] = {"A3\sounds_f\weapons\hits\water_06.wav",0.158114,1,25}; soundWater6[] = {"A3\sounds_f\weapons\hits\water_06.wav",0.158114,1,25};
soundWater7[] = {"A3\sounds_f\weapons\hits\water_07.wav",0.158114,1,25}; soundWater7[] = {"A3\sounds_f\weapons\hits\water_07.wav",0.158114,1,25};
soundWater8[] = {"A3\sounds_f\weapons\hits\water_08.wav",0.158114,1,25}; soundWater8[] = {"A3\sounds_f\weapons\hits\water_08.wav",0.158114,1,25};
hitGroundSoft[] = {"soundGroundSoft1",0.2,"soundGroundSoft2",0.2,"soundGroundSoft3",0.1,"soundGroundSoft4",0.1,"soundGroundSoft5",0.1,"soundGroundSoft6",0.1,"soundGroundSoft7",0.1,"soundGroundSoft8",0.1}; hitGroundSoft[] = {"soundGroundSoft1",0.2,"soundGroundSoft2",0.2,"soundGroundSoft3",0.1,"soundGroundSoft4",0.1,"soundGroundSoft5",0.1,"soundGroundSoft6",0.1,"soundGroundSoft7",0.1,"soundGroundSoft8",0.1};
hitGroundHard[] = {"soundGroundHard1",0.2,"soundGroundHard2",0.2,"soundGroundHard3",0.1,"soundGroundHard4",0.1,"soundGroundHard5",0.1,"soundGroundHard6",0.1,"soundGroundHard7",0.1,"soundGroundHard8",0.1}; hitGroundHard[] = {"soundGroundHard1",0.2,"soundGroundHard2",0.2,"soundGroundHard3",0.1,"soundGroundHard4",0.1,"soundGroundHard5",0.1,"soundGroundHard6",0.1,"soundGroundHard7",0.1,"soundGroundHard8",0.1};
hitMan[] = {"soundHitBody1",0.125,"soundHitBody2",0.125,"soundHitBody3",0.125,"soundHitBody4",0.125,"soundHitBody5",0.125,"soundHitBody6",0.125,"soundHitBody7",0.125,"soundHitBody8",0.125}; hitMan[] = {"soundHitBody1",0.125,"soundHitBody2",0.125,"soundHitBody3",0.125,"soundHitBody4",0.125,"soundHitBody5",0.125,"soundHitBody6",0.125,"soundHitBody7",0.125,"soundHitBody8",0.125};
hitArmor[] = {"soundVehiclePlate1",0.125,"soundVehiclePlate2",0.125,"soundVehiclePlate3",0.125,"soundVehiclePlate4",0.125,"soundVehiclePlate5",0.125,"soundVehiclePlate6",0.125,"soundVehiclePlate7",0.125,"soundVehiclePlate8",0.125}; hitArmor[] = {"soundVehiclePlate1",0.125,"soundVehiclePlate2",0.125,"soundVehiclePlate3",0.125,"soundVehiclePlate4",0.125,"soundVehiclePlate5",0.125,"soundVehiclePlate6",0.125,"soundVehiclePlate7",0.125,"soundVehiclePlate8",0.125};
hitBuilding[] = {"soundHitBuilding1",0.2,"soundHitBuilding2",0.2,"soundHitBuilding3",0.1,"soundHitBuilding4",0.1,"soundHitBuilding5",0.1,"soundHitBuilding6",0.1,"soundHitBuilding7",0.1,"soundHitBuilding8",0.1}; hitBuilding[] = {"soundHitBuilding1",0.2,"soundHitBuilding2",0.2,"soundHitBuilding3",0.1,"soundHitBuilding4",0.1,"soundHitBuilding5",0.1,"soundHitBuilding6",0.1,"soundHitBuilding7",0.1,"soundHitBuilding8",0.1};
hitFoliage[] = {"soundHitFoliage1",0.125,"soundHitFoliage2",0.125,"soundHitFoliage3",0.125,"soundHitFoliage4",0.125,"soundHitFoliage5",0.125,"soundHitFoliage6",0.125,"soundHitFoliage7",0.125,"soundHitFoliage8",0.125}; hitFoliage[] = {"soundHitFoliage1",0.125,"soundHitFoliage2",0.125,"soundHitFoliage3",0.125,"soundHitFoliage4",0.125,"soundHitFoliage5",0.125,"soundHitFoliage6",0.125,"soundHitFoliage7",0.125,"soundHitFoliage8",0.125};
hitWood[] = {"soundWood1",0.125,"soundWood2",0.125,"soundWood3",0.125,"soundWood4",0.125,"soundWood5",0.125,"soundWood6",0.125,"soundWood7",0.125,"soundWood8",0.125}; hitWood[] = {"soundWood1",0.125,"soundWood2",0.125,"soundWood3",0.125,"soundWood4",0.125,"soundWood5",0.125,"soundWood6",0.125,"soundWood7",0.125,"soundWood8",0.125};
hitGlass[] = {"soundGlass1",0.125,"soundGlass2",0.125,"soundGlass3",0.125,"soundGlass4",0.125,"soundGlass5",0.125,"soundGlass6",0.125,"soundGlass7",0.125,"soundGlass8",0.125}; hitGlass[] = {"soundGlass1",0.125,"soundGlass2",0.125,"soundGlass3",0.125,"soundGlass4",0.125,"soundGlass5",0.125,"soundGlass6",0.125,"soundGlass7",0.125,"soundGlass8",0.125};
hitGlassArmored[] = {"soundGlassArmored1",0.125,"soundGlassArmored2",0.125,"soundGlassArmored3",0.125,"soundGlassArmored4",0.125,"soundGlassArmored5",0.125,"soundGlassArmored6",0.125,"soundGlassArmored7",0.125,"soundGlassArmored8",0.125}; hitGlassArmored[] = {"soundGlassArmored1",0.125,"soundGlassArmored2",0.125,"soundGlassArmored3",0.125,"soundGlassArmored4",0.125,"soundGlassArmored5",0.125,"soundGlassArmored6",0.125,"soundGlassArmored7",0.125,"soundGlassArmored8",0.125};
hitConcrete[] = {"soundConcrete1",0.125,"soundConcrete2",0.125,"soundConcrete3",0.125,"soundConcrete4",0.125,"soundConcrete5",0.125,"soundConcrete6",0.125,"soundConcrete7",0.125,"soundConcrete8",0.125}; hitConcrete[] = {"soundConcrete1",0.125,"soundConcrete2",0.125,"soundConcrete3",0.125,"soundConcrete4",0.125,"soundConcrete5",0.125,"soundConcrete6",0.125,"soundConcrete7",0.125,"soundConcrete8",0.125};
hitRubber[] = {"soundRubber1",0.125,"soundRubber2",0.125,"soundRubber3",0.125,"soundRubber4",0.125,"soundRubber5",0.125,"soundRubber6",0.125,"soundRubber7",0.125,"soundRubber8",0.125}; hitRubber[] = {"soundRubber1",0.125,"soundRubber2",0.125,"soundRubber3",0.125,"soundRubber4",0.125,"soundRubber5",0.125,"soundRubber6",0.125,"soundRubber7",0.125,"soundRubber8",0.125};
hitPlastic[] = {"soundPlastic1",0.125,"soundPlastic2",0.125,"soundPlastic3",0.125,"soundPlastic4",0.125,"soundPlastic5",0.125,"soundPlastic6",0.125,"soundPlastic7",0.125,"soundPlastic8",0.125}; hitPlastic[] = {"soundPlastic1",0.125,"soundPlastic2",0.125,"soundPlastic3",0.125,"soundPlastic4",0.125,"soundPlastic5",0.125,"soundPlastic6",0.125,"soundPlastic7",0.125,"soundPlastic8",0.125};
hitDefault[] = {"soundDefault1",0.2,"soundDefault2",0.2,"soundDefault3",0.1,"soundDefault4",0.1,"soundDefault5",0.1,"soundDefault6",0.1,"soundDefault7",0.1,"soundDefault8",0.1}; hitDefault[] = {"soundDefault1",0.2,"soundDefault2",0.2,"soundDefault3",0.1,"soundDefault4",0.1,"soundDefault5",0.1,"soundDefault6",0.1,"soundDefault7",0.1,"soundDefault8",0.1};
hitMetal[] = {"soundMetal1",0.125,"soundMetal2",0.125,"soundMetal3",0.125,"soundMetal4",0.125,"soundMetal5",0.125,"soundMetal6",0.125,"soundMetal7",0.125,"soundMetal8",0.125}; hitMetal[] = {"soundMetal1",0.125,"soundMetal2",0.125,"soundMetal3",0.125,"soundMetal4",0.125,"soundMetal5",0.125,"soundMetal6",0.125,"soundMetal7",0.125,"soundMetal8",0.125};
hitMetalplate[] = {"soundVehiclePlate1",0.125,"soundVehiclePlate2",0.125,"soundVehiclePlate3",0.125,"soundVehiclePlate4",0.125,"soundVehiclePlate5",0.125,"soundVehiclePlate6",0.125,"soundVehiclePlate7",0.125,"soundVehiclePlate8",0.125}; hitMetalplate[] = {"soundVehiclePlate1",0.125,"soundVehiclePlate2",0.125,"soundVehiclePlate3",0.125,"soundVehiclePlate4",0.125,"soundVehiclePlate5",0.125,"soundVehiclePlate6",0.125,"soundVehiclePlate7",0.125,"soundVehiclePlate8",0.125};
hitWater[] = {"soundWater1",0.125,"soundWater2",0.125,"soundWater3",0.125,"soundWater4",0.125,"soundWater5",0.125,"soundWater6",0.125,"soundWater7",0.125,"soundWater8",0.125}; hitWater[] = {"soundWater1",0.125,"soundWater2",0.125,"soundWater3",0.125,"soundWater4",0.125,"soundWater5",0.125,"soundWater6",0.125,"soundWater7",0.125,"soundWater8",0.125};
bulletFly1[] = {"A3\sounds_f\weapons\hits\bullet_by_1.wav",1,1,35}; bulletFly1[] = {"A3\sounds_f\weapons\hits\bullet_by_1.wav",1,1,35};
bulletFly2[] = {"A3\sounds_f\weapons\hits\bullet_by_2.wav",1,1,35}; bulletFly2[] = {"A3\sounds_f\weapons\hits\bullet_by_2.wav",1,1,35};
bulletFly3[] = {"A3\sounds_f\weapons\hits\bullet_by_3.wav",1,1,35}; bulletFly3[] = {"A3\sounds_f\weapons\hits\bullet_by_3.wav",1,1,35};
bulletFly4[] = {"A3\sounds_f\weapons\hits\bullet_by_4.wav",1,1,35}; bulletFly4[] = {"A3\sounds_f\weapons\hits\bullet_by_4.wav",1,1,35};
bulletFly5[] = {"A3\sounds_f\weapons\hits\bullet_by_5.wav",1,1,35}; bulletFly5[] = {"A3\sounds_f\weapons\hits\bullet_by_5.wav",1,1,35};
bulletFly6[] = {"A3\sounds_f\weapons\hits\bullet_by_6.wav",1,1,35}; bulletFly6[] = {"A3\sounds_f\weapons\hits\bullet_by_6.wav",1,1,35};
bulletFly7[] = {"A3\sounds_f\weapons\hits\bullet_by_7.wav",1,1,35}; bulletFly7[] = {"A3\sounds_f\weapons\hits\bullet_by_7.wav",1,1,35};
bulletFly8[] = {"A3\sounds_f\weapons\hits\bullet_by_8.wav",1,1,35}; bulletFly8[] = {"A3\sounds_f\weapons\hits\bullet_by_8.wav",1,1,35};
bulletFly[] = {"bulletFly1",0.166,"bulletFly2",0.166,"bulletFly3",0.166,"bulletFly4",0.166,"bulletFly5",0.166,"bulletFly6",0.167,"bulletFly7",0.166,"bulletFly8",0.167}; bulletFly[] = {"bulletFly1",0.166,"bulletFly2",0.166,"bulletFly3",0.166,"bulletFly4",0.166,"bulletFly5",0.166,"bulletFly6",0.167,"bulletFly7",0.166,"bulletFly8",0.167};
supersonicCrackNear[] = {"A3\sounds_f\weapons\hits\sscrack1.wav",1,1,35}; supersonicCrackNear[] = {"A3\sounds_f\weapons\hits\sscrack1.wav",1,1,35};
supersonicCrackFar[] = {"A3\sounds_f\weapons\hits\sscrack2.wav",1,1,135}; supersonicCrackFar[] = {"A3\sounds_f\weapons\hits\sscrack2.wav",1,1,135};
}; };
*/ */
class B_65x39_Caseless; class B_65x39_Caseless;
class ACE_frag_base: B_65x39_Caseless { class ACE_frag_base: B_65x39_Caseless {
timeToLive = 12; timeToLive = 12;
typicalSpeed = 1500; typicalSpeed = 1500;
deflecting = 65; deflecting = 65;
}; };
class ACE_frag_tiny: ACE_frag_base { class ACE_frag_tiny: ACE_frag_base {
hit = 6; hit = 6;
airFriction = BASE_DRAG; airFriction = BASE_DRAG;
caliber = 0.75; caliber = 0.75;
}; };
class ACE_frag_tiny_HD: ACE_frag_base { class ACE_frag_tiny_HD: ACE_frag_base {
hit = 6; hit = 6;
airFriction = BASE_DRAG_HD; airFriction = BASE_DRAG_HD;
caliber = 0.75; caliber = 0.75;
}; };
class ACE_frag_small: ACE_frag_base { class ACE_frag_small: ACE_frag_base {
hit = 12; hit = 12;
airFriction = BASE_DRAG*0.9; airFriction = BASE_DRAG*0.9;
}; };
class ACE_frag_small_HD: ACE_frag_base { class ACE_frag_small_HD: ACE_frag_base {
hit = 12; hit = 12;
airFriction = BASE_DRAG_HD*0.9; airFriction = BASE_DRAG_HD*0.9;
}; };
class ACE_frag_medium: ACE_frag_base { class ACE_frag_medium: ACE_frag_base {
hit = 14; hit = 14;
airFriction = BASE_DRAG*0.75; airFriction = BASE_DRAG*0.75;
caliber = 1.2; caliber = 1.2;
}; };
class ACE_frag_medium_HD: ACE_frag_base { class ACE_frag_medium_HD: ACE_frag_base {
hit = 14; hit = 14;
airFriction = BASE_DRAG_HD*0.75; airFriction = BASE_DRAG_HD*0.75;
caliber = 1.2; caliber = 1.2;
}; };
class ACE_frag_large: ACE_frag_base { class ACE_frag_large: ACE_frag_base {
hit = 28; hit = 28;
indirectHit = 2; indirectHit = 2;
indirectHitRange = 0.25; indirectHitRange = 0.25;
airFriction = BASE_DRAG*0.65; airFriction = BASE_DRAG*0.65;
caliber = 2; caliber = 2;
explosive = 0; explosive = 0;
}; };
class ACE_frag_large_HD: ACE_frag_large { class ACE_frag_large_HD: ACE_frag_large {
hit = 28; hit = 28;
indirectHit = 2; indirectHit = 2;
indirectHitRange = 0.25; indirectHitRange = 0.25;
airFriction = BASE_DRAG_HD*0.65; airFriction = BASE_DRAG_HD*0.65;
caliber = 2; caliber = 2;
}; };
class ACE_frag_huge: ACE_frag_large { class ACE_frag_huge: ACE_frag_large {
hit = 40; hit = 40;
indirectHit = 4; indirectHit = 4;
indirectHitRange = 0.5; indirectHitRange = 0.5;
airFriction = BASE_DRAG*0.5; airFriction = BASE_DRAG*0.5;
caliber = 2.8; caliber = 2.8;
}; };
class ACE_frag_huge_HD: ACE_frag_large { class ACE_frag_huge_HD: ACE_frag_large {
hit = 40; hit = 40;
indirectHit = 4; indirectHit = 4;
indirectHitRange = 0.5; indirectHitRange = 0.5;
airFriction = BASE_DRAG_HD*0.5; airFriction = BASE_DRAG_HD*0.5;
caliber = 2.8; caliber = 2.8;
}; };
class ACE_frag_spall_small: ACE_frag_small { class ACE_frag_spall_small: ACE_frag_small {
timeToLive = 0.1; timeToLive = 0.1;
}; };
class ACE_frag_spall_medium: ACE_frag_medium { class ACE_frag_spall_medium: ACE_frag_medium {
timeToLive = 0.15; timeToLive = 0.15;
}; };
class ACE_frag_spall_large: ACE_frag_large { class ACE_frag_spall_large: ACE_frag_large {
timeToLive = 0.25; timeToLive = 0.25;
}; };
class ACE_frag_spall_huge: ACE_frag_huge { class ACE_frag_spall_huge: ACE_frag_huge {
timeToLive = 0.3; timeToLive = 0.3;
}; };
}; };

View File

@ -1,17 +1,17 @@
class Extended_PreInit_EventHandlers { class Extended_PreInit_EventHandlers {
class ADDON { class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_pre_init)); init = QUOTE(call COMPILE_FILE(XEH_pre_init));
}; };
}; };
class Extended_PostInit_EventHandlers { class Extended_PostInit_EventHandlers {
class ADDON { class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_post_init)); init = QUOTE(call COMPILE_FILE(XEH_post_init));
}; };
}; };
class Extended_FiredBIS_EventHandlers { class Extended_FiredBIS_EventHandlers {
class AllVehicles { class AllVehicles {
ADDON = QUOTE(_this call FUNC(fired)); ADDON = QUOTE(_this call FUNC(fired));
}; };
}; };

View File

@ -1,18 +1,18 @@
#include "script_component.hpp" #include "script_component.hpp"
if(isServer) then { if(isServer) then {
[QGVAR(frag_eh), { _this call FUNC(frago); }] call ace_common_fnc_addEventHandler; [QGVAR(frag_eh), { _this call FUNC(frago); }] call ace_common_fnc_addEventHandler;
}; };
/* /*
GVAR(replacedBisArtyWrapper) = false; GVAR(replacedBisArtyWrapper) = false;
[] spawn { [] spawn {
waitUntil { waitUntil {
if(!(isNil "BIS_ARTY_F_ShellFlight")) then { if(!(isNil "BIS_ARTY_F_ShellFlight")) then {
ACE_WRAPPER_BIS_ARTY_F_ShellFlight = BIS_ARTY_F_ShellFlight; ACE_WRAPPER_BIS_ARTY_F_ShellFlight = BIS_ARTY_F_ShellFlight;
BIS_ARTY_F_ShellFlight = FUNC(BIS_ARTY_WRAPPER); BIS_ARTY_F_ShellFlight = FUNC(BIS_ARTY_WRAPPER);
GVAR(replacedBisArtyWrapper) = true; GVAR(replacedBisArtyWrapper) = true;
}; };
sleep 4; sleep 4;
GVAR(replacedBisArtyWrapper) GVAR(replacedBisArtyWrapper)
}; };
}; };
*/ */

View File

@ -1,13 +1,13 @@
#include "script_component.hpp" #include "script_component.hpp"
class CfgPatches { class CfgPatches {
class ADDON { class ADDON {
units[] = {}; units[] = {};
weapons[] = {}; weapons[] = {};
requiredVersion = REQUIRED_VERSION; requiredVersion = REQUIRED_VERSION;
requiredAddons[] = { "A3_Misc_F", "A3_Weapons_F" }; requiredAddons[] = { "A3_Misc_F", "A3_Weapons_F" };
author[] = {"Nou"}; author[] = {"Nou"};
VERSION_CONFIG; VERSION_CONFIG;
}; };
}; };
//PRELOAD_ADDONS; //PRELOAD_ADDONS;

View File

@ -1,13 +1,13 @@
#include "script_component.hpp" #include "script_component.hpp"
_ret = [(_this select 6)] call FUNC(removeTrack); _ret = [(_this select 6)] call FUNC(removeTrack);
if(!_ret) then { if(!_ret) then {
[(_this select 6)] call FUNC(addBlackList); [(_this select 6)] call FUNC(addBlackList);
}; };
_this call ACE_WRAPPER_BIS_ARTY_F_ShellFlight; _this call ACE_WRAPPER_BIS_ARTY_F_ShellFlight;
_catEntry = BIS_ARTY_SHELLCAT select ((count BIS_ARTY_SHELLCAT) - 1); _catEntry = BIS_ARTY_SHELLCAT select ((count BIS_ARTY_SHELLCAT) - 1);
_shell = _catEntry select 0; _shell = _catEntry select 0;
_ARTY_DeployOnImpact = getText (configFile >> "CfgAmmo" >> "ARTY_DeployOnImpact"); _ARTY_DeployOnImpact = getText (configFile >> "CfgAmmo" >> "ARTY_DeployOnImpact");
if(_ARTY_DeployOnImpact == "") then { if(_ARTY_DeployOnImpact == "") then {
_this set[6, _shell]; _this set[6, _shell];
_this call FUNC(fired); _this call FUNC(fired);
}; };

View File

@ -2,6 +2,6 @@
private ["_round"]; private ["_round"];
_round = _this select 0; _round = _this select 0;
if(alive _round) then { if(alive _round) then {
GVAR(trackedObjects) set[(count GVAR(trackedObjects)), _round]; GVAR(trackedObjects) set[(count GVAR(trackedObjects)), _round];
[DFUNC(trackFragRound), 0, [_round, (getPosASL _round), (velocity _round), (typeOf _round), time, objNull, false, 0, 0]] call cba_fnc_addPerFrameHandler; [DFUNC(trackFragRound), 0, [_round, (getPosASL _round), (velocity _round), (typeOf _round), time, objNull, false, 0, 0]] call cba_fnc_addPerFrameHandler;
}; };

View File

@ -1,6 +1,6 @@
#include "script_component.hpp" #include "script_component.hpp"
if(GVAR(autoTrace)) then { if(GVAR(autoTrace)) then {
[] call FUNC(startTracing); [] call FUNC(startTracing);
}; };
// setAccTime 0.05; // setAccTime 0.05;
@ -9,7 +9,7 @@ _obj = _this select 1;
_origin = _this select 0; _origin = _this select 0;
_color = [1,0,0,1]; _color = [1,0,0,1];
if((count _this) > 2) then { if((count _this) > 2) then {
_color = _this select 2; _color = _this select 2;
}; };
_positions = []; _positions = [];
_objVel = velocity _obj; _objVel = velocity _obj;

View File

@ -3,5 +3,5 @@
private ["_ret"]; private ["_ret"];
_ret = [(_this select 0)] call FUNC(removeTrack); _ret = [(_this select 0)] call FUNC(removeTrack);
if(!_ret) then { if(!_ret) then {
[(_this select 0)] call FUNC(addBlackList); [(_this select 0)] call FUNC(addBlackList);
}; };

View File

@ -1,14 +1,14 @@
//fnc_doSpall.sqf //fnc_doSpall.sqf
#include "script_component.hpp" #include "script_component.hpp"
#ifdef DEBUG_MODE_FULL #ifdef DEBUG_MODE_FULL
GVAR(traceFrags) = true; GVAR(traceFrags) = true;
#endif #endif
// player sideChat "WAAAAAAAAAAAAAAAAAAAAA"; // player sideChat "WAAAAAAAAAAAAAAAAAAAAA";
private ["_params", "_initialData", "_hpData", "_roundType", "_round", "_object", "_caliber", "_explosive", private ["_params", "_initialData", "_hpData", "_roundType", "_round", "_object", "_caliber", "_explosive",
"_idh", "_alive", "_exit", "_vm", "_velocity", "_unitDir", "_oldVelocity", "_curVelocity", "_diff", "_polar", "_idh", "_alive", "_exit", "_vm", "_velocity", "_unitDir", "_oldVelocity", "_curVelocity", "_diff", "_polar",
"_pos", "_spallPos", "_i", "_pos1", "_pos2", "_blah", "_data", "_spallPolar", "_c", "_warn", "_m", "_k", "_pos", "_spallPos", "_i", "_pos1", "_pos2", "_blah", "_data", "_spallPolar", "_c", "_warn", "_m", "_k",
"_gC", "_shellType", "_fragPower", "_spread", "_spallCount", "_elev", "_dir", "_vel", "_spallFragVect", "_gC", "_shellType", "_fragPower", "_spread", "_spallCount", "_elev", "_dir", "_vel", "_spallFragVect",
"_fragment"]; "_fragment"];
_params = _this select 0; _params = _this select 0;
@ -23,7 +23,7 @@ _object removeEventHandler ["hitPart", _initialData select 0];
_foundObjects = _initialData select 7; _foundObjects = _initialData select 7;
_index = _foundObjects find _object; _index = _foundObjects find _object;
if(_index != -1) then { if(_index != -1) then {
_foundObjecsts set[_index, nil]; _foundObjecsts set[_index, nil];
}; };
_roundType = (_initialData select 2); _roundType = (_initialData select 2);
@ -36,131 +36,131 @@ _idh = getNumber(configFile >> "CfgAmmo" >> _roundType >> "indirectHitRange");
_alive = true; _alive = true;
if(!alive _round && (_initialData select 6) == 1) then { if(!alive _round && (_initialData select 6) == 1) then {
_alive = false; _alive = false;
}; };
if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then { if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then {
// player sideChat format["BBBB"]; // player sideChat format["BBBB"];
_exit = false; _exit = false;
_vm = 1; _vm = 1;
_velocity = _initialData select 5; _velocity = _initialData select 5;
_oldVelocity = _velocity call BIS_fnc_magnitude; _oldVelocity = _velocity call BIS_fnc_magnitude;
_curVelocity = (velocity _round) call BIS_fnc_magnitude; _curVelocity = (velocity _round) call BIS_fnc_magnitude;
if(alive _round) then { if(alive _round) then {
_diff = _velocity vectorDiff (velocity _round); _diff = _velocity vectorDiff (velocity _round);
_polar = _diff call CBA_fnc_vect2polar; _polar = _diff call CBA_fnc_vect2polar;
// player sideChat format["polar: %1", _polar]; // player sideChat format["polar: %1", _polar];
if((abs(_polar select 1) > 45 || abs(_polar select 2) > 45)) then { if((abs(_polar select 1) > 45 || abs(_polar select 2) > 45)) then {
if(_caliber < 2.5) then { if(_caliber < 2.5) then {
// player sideChat format["exit!"]; // player sideChat format["exit!"];
_exit = true; _exit = true;
} else { } else {
_vm = 1-(_curVelocity/_oldVelocity); _vm = 1-(_curVelocity/_oldVelocity);
}; };
}; };
}; };
if(!_exit) then { if(!_exit) then {
_unitDir = vectorNormalized _velocity; _unitDir = vectorNormalized _velocity;
_pos = _hpData select 3; _pos = _hpData select 3;
_spallPos = nil; _spallPos = nil;
for "_i" from 0 to 100 do { for "_i" from 0 to 100 do {
_pos1 = [ _pos1 = [
(_pos select 0) + (((_unitDir select 0)*0.01)*_i), (_pos select 0) + (((_unitDir select 0)*0.01)*_i),
(_pos select 1) + (((_unitDir select 1)*0.01)*_i), (_pos select 1) + (((_unitDir select 1)*0.01)*_i),
(_pos select 2) + (((_unitDir select 2)*0.01)*_i) (_pos select 2) + (((_unitDir select 2)*0.01)*_i)
]; ];
_pos2 = [ _pos2 = [
(_pos select 0) + (((_unitDir select 0)*0.01)*(_i+1)), (_pos select 0) + (((_unitDir select 0)*0.01)*(_i+1)),
(_pos select 1) + (((_unitDir select 1)*0.01)*(_i+1)), (_pos select 1) + (((_unitDir select 1)*0.01)*(_i+1)),
(_pos select 2) + (((_unitDir select 2)*0.01)*(_i+1)) (_pos select 2) + (((_unitDir select 2)*0.01)*(_i+1))
]; ];
// _blah = [_object, "FIRE"] intersect [_object worldToModel (ASLtoATL _pos1), _object worldToModel (ASLtoATL _pos2)]; // _blah = [_object, "FIRE"] intersect [_object worldToModel (ASLtoATL _pos1), _object worldToModel (ASLtoATL _pos2)];
// diag_log text format["b: %1", _blah]; // diag_log text format["b: %1", _blah];
// _data = [nil, nil, nil, 1, [[ASLtoATL _pos1, 1], [ASLtoATL _pos2, 1]]]; // _data = [nil, nil, nil, 1, [[ASLtoATL _pos1, 1], [ASLtoATL _pos2, 1]]];
// NOU_TRACES set[(count NOU_TRACES), _data]; // NOU_TRACES set[(count NOU_TRACES), _data];
if(!lineIntersects [_pos1, _pos2]) exitWith { if(!lineIntersects [_pos1, _pos2]) exitWith {
// player sideChat format["FOUND!"]; // player sideChat format["FOUND!"];
_spallPos = _pos2; _spallPos = _pos2;
}; };
}; };
if(!isNil "_spallPos") then { if(!isNil "_spallPos") then {
_spallPolar = _velocity call CBA_fnc_vect2polar; _spallPolar = _velocity call CBA_fnc_vect2polar;
if(_explosive > 0) then { if(_explosive > 0) then {
// player sideChat format["EXPLOSIVE!"]; // player sideChat format["EXPLOSIVE!"];
_warn = false; _warn = false;
_c = getNumber(configFile >> "CfgAmmo" >> _roundType >> "ACE_frag_CHARGE"); _c = getNumber(configFile >> "CfgAmmo" >> _roundType >> "ACE_frag_CHARGE");
if(_c == 0) then { _c = 1; _warn = true;}; if(_c == 0) then { _c = 1; _warn = true;};
_m = getNumber(configFile >> "CfgAmmo" >> _roundType >> "ACE_frag_METAL"); _m = getNumber(configFile >> "CfgAmmo" >> _roundType >> "ACE_frag_METAL");
if(_m == 0) then { _m = 2; _warn = true;}; if(_m == 0) then { _m = 2; _warn = true;};
_k = getNumber(configFile >> "CfgAmmo" >> _roundType >> "ACE_frag_GURNEY_K"); _k = getNumber(configFile >> "CfgAmmo" >> _roundType >> "ACE_frag_GURNEY_K");
if(_k == 0) then { _k = 1/2; _warn = true;}; if(_k == 0) then { _k = 1/2; _warn = true;};
_gC = getNumber(configFile >> "CfgAmmo" >> _roundType >> "ACE_frag_GURNEY_C"); _gC = getNumber(configFile >> "CfgAmmo" >> _roundType >> "ACE_frag_GURNEY_C");
if(_gC == 0) then { _gC = 2440; _warn = true;}; if(_gC == 0) then { _gC = 2440; _warn = true;};
if(_warn) then { if(_warn) then {
diag_log text format["Ammo class %1 lacks proper explosive properties definitions for frag!", _roundType]; //TODO: turn this off when we get closer to release diag_log text format["Ammo class %1 lacks proper explosive properties definitions for frag!", _roundType]; //TODO: turn this off when we get closer to release
}; };
_fragPower = (((_m/_c)+_k)^-(1/2))*_gC; _fragPower = (((_m/_c)+_k)^-(1/2))*_gC;
_spallPolar set[0, _fragPower*0.66]; _spallPolar set[0, _fragPower*0.66];
}; };
_fragTypes = [ _fragTypes = [
"ACE_frag_spall_small", "ACE_frag_spall_small", "ACE_frag_spall_small", "ACE_frag_spall_small", "ACE_frag_spall_small", "ACE_frag_spall_small",
"ACE_frag_spall_small","ACE_frag_spall_medium","ACE_frag_spall_medium","ACE_frag_spall_medium", "ACE_frag_spall_small","ACE_frag_spall_medium","ACE_frag_spall_medium","ACE_frag_spall_medium",
"ACE_frag_spall_medium", "ACE_frag_spall_large", "ACE_frag_spall_large", "ACE_frag_spall_huge", "ACE_frag_spall_medium", "ACE_frag_spall_large", "ACE_frag_spall_large", "ACE_frag_spall_huge",
"ACE_frag_spall_huge" "ACE_frag_spall_huge"
]; ];
// diag_log text format["SPALL POWER: %1", _spallPolar select 0]; // diag_log text format["SPALL POWER: %1", _spallPolar select 0];
_spread = 15+(random 25); _spread = 15+(random 25);
_spallCount = 5+(random 10); _spallCount = 5+(random 10);
for "_i" from 1 to _spallCount do { for "_i" from 1 to _spallCount do {
_elev = ((_spallPolar select 2)-_spread)+(random (_spread*2)); _elev = ((_spallPolar select 2)-_spread)+(random (_spread*2));
_dir = ((_spallPolar select 1)-_spread)+(random (_spread*2)); _dir = ((_spallPolar select 1)-_spread)+(random (_spread*2));
if(abs _elev > 90) then { if(abs _elev > 90) then {
_dir = _dir + 180; _dir = _dir + 180;
}; };
_dir = _dir % 360; _dir = _dir % 360;
_vel = (_spallPolar select 0)*0.33*_vm; _vel = (_spallPolar select 0)*0.33*_vm;
_vel = (_vel-(_vel*0.25))+(random (_vel*0.5)); _vel = (_vel-(_vel*0.25))+(random (_vel*0.5));
_spallFragVect = [_vel, _dir, _elev] call CBA_fnc_polar2vect; _spallFragVect = [_vel, _dir, _elev] call CBA_fnc_polar2vect;
_fragType = round (random ((count _fragTypes)-1)); _fragType = round (random ((count _fragTypes)-1));
_fragment = (_fragTypes select _fragType) createVehicleLocal [0,0,10000]; _fragment = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
_fragment setPosASL _spallPos; _fragment setPosASL _spallPos;
_fragment setVelocity _spallFragVect; _fragment setVelocity _spallFragVect;
if(GVAR(traceFrags)) then { if(GVAR(traceFrags)) then {
[player, _fragment, [1,0.5,0,1]] call FUNC(addTrack); [player, _fragment, [1,0.5,0,1]] call FUNC(addTrack);
}; };
}; };
_spread = 5+(random 5); _spread = 5+(random 5);
_spallCount = 3+(random 5); _spallCount = 3+(random 5);
for "_i" from 1 to _spallCount do { for "_i" from 1 to _spallCount do {
_elev = ((_spallPolar select 2)-_spread)+(random (_spread*2)); _elev = ((_spallPolar select 2)-_spread)+(random (_spread*2));
_dir = ((_spallPolar select 1)-_spread)+(random (_spread*2)); _dir = ((_spallPolar select 1)-_spread)+(random (_spread*2));
if(abs _elev > 90) then { if(abs _elev > 90) then {
_dir = _dir + 180; _dir = _dir + 180;
}; };
_dir = _dir % 360; _dir = _dir % 360;
_vel = (_spallPolar select 0)*0.55*_vm; _vel = (_spallPolar select 0)*0.55*_vm;
_vel = (_vel-(_vel*0.25))+(random (_vel*0.5)); _vel = (_vel-(_vel*0.25))+(random (_vel*0.5));
_spallFragVect = [_vel, _dir, _elev] call CBA_fnc_polar2vect; _spallFragVect = [_vel, _dir, _elev] call CBA_fnc_polar2vect;
_fragType = round (random ((count _fragTypes)-1)); _fragType = round (random ((count _fragTypes)-1));
_fragment = (_fragTypes select _fragType) createVehicleLocal [0,0,10000]; _fragment = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
_fragment setPosASL _spallPos; _fragment setPosASL _spallPos;
_fragment setVelocity _spallFragVect; _fragment setVelocity _spallFragVect;
if(GVAR(traceFrags)) then { if(GVAR(traceFrags)) then {
[player, _fragment, [1,0,0,1]] call FUNC(addTrack); [player, _fragment, [1,0,0,1]] call FUNC(addTrack);
}; };
}; };
}; };
}; };
}; };

View File

@ -1,32 +1,32 @@
#include "script_component.hpp" #include "script_component.hpp"
{ {
_positions = _x select 4; _positions = _x select 4;
_color = _x select 5; _color = _x select 5;
_index = 0; _index = 0;
_max = count _positions; _max = count _positions;
_startSpeed = (_positions select 0) select 1; _startSpeed = (_positions select 0) select 1;
if(_startSpeed <= 0) then { if(_startSpeed <= 0) then {
_startSpeed = 0.01; _startSpeed = 0.01;
}; };
_lastSpd = []; _lastSpd = [];
_lastPos = []; _lastPos = [];
while {_index < _max} do { while {_index < _max} do {
_data1 = _positions select _index; _data1 = _positions select _index;
_data2 = nil; _data2 = nil;
if(_index + ACE_TRACE_DRAW_INC >= _max) then { if(_index + ACE_TRACE_DRAW_INC >= _max) then {
_data2 = _positions select (_max - 1); _data2 = _positions select (_max - 1);
} else { } else {
_data2 = _positions select (_index + ACE_TRACE_DRAW_INC); _data2 = _positions select (_index + ACE_TRACE_DRAW_INC);
}; };
_pos1 = _data1 select 0; _pos1 = _data1 select 0;
_pos2 = _data2 select 0; _pos2 = _data2 select 0;
_index = _index + ACE_TRACE_DRAW_INC; _index = _index + ACE_TRACE_DRAW_INC;
drawLine3D [_pos1, _pos2, _color]; drawLine3D [_pos1, _pos2, _color];
_lastPos = _pos2; _lastPos = _pos2;
_lastSpd = _data1 select 1; _lastSpd = _data1 select 1;
}; };
// drawIcon3D ["", [1,0,0,1], _lastPos, 0, 0, 0, format["%1m/s", _lastSpd], 1, 0.05, "PuristaMedium"]; // drawIcon3D ["", [1,0,0,1], _lastPos, 0, 0, 0, format["%1m/s", _lastSpd], 1, 0.05, "PuristaMedium"];
} forEach GVAR(traces); } forEach GVAR(traces);

View File

@ -7,42 +7,42 @@ _type = _this select 4;
_round = _this select 6; _round = _this select 6;
if(_round in GVAR(blackList)) exitWith { if(_round in GVAR(blackList)) exitWith {
GVAR(blackList) = GVAR(blackList) - [_round]; GVAR(blackList) = GVAR(blackList) - [_round];
}; };
_doFragTrack = false; _doFragTrack = false;
if(_gun == player) then { if(_gun == player) then {
_doFragTrack = true; _doFragTrack = true;
} else { } else {
if((gunner _gun) == player) then { if((gunner _gun) == player) then {
_doFragTrack = true; _doFragTrack = true;
} else { } else {
if(local _gun && {!(isPlayer (gunner _gun))} && {!(isPlayer _gun)}) then { if(local _gun && {!(isPlayer (gunner _gun))} && {!(isPlayer _gun)}) then {
_doFragTrack = true; _doFragTrack = true;
}; };
}; };
}; };
_doSpall = false; _doSpall = false;
if(_doSpall) then { if(_doSpall) then {
if(GVAR(spallIsTrackingCount) <= 0) then { if(GVAR(spallIsTrackingCount) <= 0) then {
GVAR(spallHPData) = []; GVAR(spallHPData) = [];
}; };
if(GVAR(spallIsTrackingCount) > 5) then { if(GVAR(spallIsTrackingCount) > 5) then {
// player sideChat "LIMT!"; // player sideChat "LIMT!";
_doSpall = false; _doSpall = false;
} else { } else {
GVAR(spallIsTrackingCount) = GVAR(spallIsTrackingCount) + 1; GVAR(spallIsTrackingCount) = GVAR(spallIsTrackingCount) + 1;
}; };
}; };
// player sideChat format["c: %1", GVAR(spallIsTrackingCount)]; // player sideChat format["c: %1", GVAR(spallIsTrackingCount)];
[player, _round, [1,0,0,1]] call nou_fnc_addTrack; [player, _round, [1,0,0,1]] call nou_fnc_addTrack;
if(_doFragTrack && alive _round) then { if(_doFragTrack && alive _round) then {
GVAR(trackedObjects) pushBack _round; GVAR(trackedObjects) pushBack _round;
_spallTrack = []; _spallTrack = [];
_spallTrackID = []; _spallTrackID = [];
[DFUNC(trackFragRound), 0, [_round, (getPosASL _round), (velocity _round), _type, time, _gun, _doSpall, _spallTrack, _spallTrackID]] call cba_fnc_addPerFrameHandler; [DFUNC(trackFragRound), 0, [_round, (getPosASL _round), (velocity _round), _type, time, _gun, _doSpall, _spallTrack, _spallTrackID]] call cba_fnc_addPerFrameHandler;
if(_doSpall) then { if(_doSpall) then {
[_round, 2, _spallTrack, _spallTrackID] call FUNC(spallTrack); [_round, 2, _spallTrack, _spallTrackID] call FUNC(spallTrack);
}; };
// player sideChat "WTF2"; // player sideChat "WTF2";
}; };

View File

@ -4,7 +4,7 @@ private ["_params", "_shell"];
_params = _this select 0; _params = _this select 0;
_shell = _params select 0; _shell = _params select 0;
if(alive _shell) then { if(alive _shell) then {
drop ["\Ca\Data\Cl_basic","","Billboard",1,30,(getPos _shell),[0,0,0],1,1.275,1.0,0.0,[0.5],[[0,1,0,1]],[0],0.0,2.0,"","",""]; drop ["\Ca\Data\Cl_basic","","Billboard",1,30,(getPos _shell),[0,0,0],1,1.275,1.0,0.0,[0.5],[[0,1,0,1]],[0],0.0,2.0,"","",""];
} else { } else {
[_this select 1] call cba_fnc_removePerFrameHandler; [_this select 1] call cba_fnc_removePerFrameHandler;
}; };

View File

@ -10,43 +10,43 @@ if(!isServer) exitWith { };
// _startTime = diag_tickTime; // _startTime = diag_tickTime;
private ["_round", "_lastPos", "_lastVel", "_shellType", "_gun", "_fragTypes", "_warn", "_atlPos", "_isArmed", private ["_round", "_lastPos", "_lastVel", "_shellType", "_gun", "_fragTypes", "_warn", "_atlPos", "_isArmed",
"_fuseDist", "_indirectHitRange", "_fragRange", "_c", "_m", "_k", "_gC", "_fragPower", "_fragPowerRandom", "_fuseDist", "_indirectHitRange", "_fragRange", "_c", "_m", "_k", "_gC", "_fragPower", "_fragPowerRandom",
"_manObjects", "_objects", "_crew", "_fragCount", "_fragArcs", "_doRandom", "_target", "_boundingBox", "_manObjects", "_objects", "_crew", "_fragCount", "_fragArcs", "_doRandom", "_target", "_boundingBox",
"_targetPos", "_distance", "_add", "_bbX", "_bbY", "_bbZ", "_cubic", "_targetVel", "_baseVec", "_dir", "_targetPos", "_distance", "_add", "_bbX", "_bbY", "_bbZ", "_cubic", "_targetVel", "_baseVec", "_dir",
"_currentCount", "_count", "_vecVar", "_i", "_vec", "_fp", "_vel", "_fragType", "_fragObj", "_randomCount", "_currentCount", "_count", "_vecVar", "_i", "_vec", "_fp", "_vel", "_fragType", "_fragObj", "_randomCount",
"_sectorSize", "_sectorOffset", "_randomDir"]; "_sectorSize", "_sectorOffset", "_randomDir"];
_round = _this select 0; _round = _this select 0;
_lastPos = _this select 1; _lastPos = _this select 1;
_lastVel = _this select 2; _lastVel = _this select 2;
_shellType = _this select 3; _shellType = _this select 3;
_gun = nil; _gun = nil;
if((count _this) > 5) then { if((count _this) > 5) then {
_gun = _this select 5; _gun = _this select 5;
}; };
_fragTypes = [ _fragTypes = [
"ACE_frag_tiny", "ACE_frag_tiny", "ACE_frag_tiny", "ACE_frag_tiny", "ACE_frag_tiny", "ACE_frag_tiny",
"ACE_frag_tiny_HD", "ACE_frag_tiny_HD", "ACE_frag_tiny_HD", "ACE_frag_tiny_HD", "ACE_frag_tiny_HD", "ACE_frag_tiny_HD",
"ACE_frag_small","ACE_frag_small","ACE_frag_small","ACE_frag_small", "ACE_frag_small","ACE_frag_small","ACE_frag_small","ACE_frag_small",
"ACE_frag_small_HD","ACE_frag_small_HD","ACE_frag_small_HD","ACE_frag_small_HD", "ACE_frag_small_HD","ACE_frag_small_HD","ACE_frag_small_HD","ACE_frag_small_HD",
"ACE_frag_medium_HD", "ACE_frag_medium_HD", "ACE_frag_medium_HD", "ACE_frag_medium_HD", "ACE_frag_medium_HD" "ACE_frag_medium_HD", "ACE_frag_medium_HD", "ACE_frag_medium_HD", "ACE_frag_medium_HD", "ACE_frag_medium_HD"
]; ];
_warn = false; _warn = false;
if(isArray (configFile >> "CfgAmmo" >> _shellType >> "ACE_frag_CLASSES")) then { if(isArray (configFile >> "CfgAmmo" >> _shellType >> "ACE_frag_CLASSES")) then {
_fragTypes = getArray (configFile >> "CfgAmmo" >> _shellType >> "ACE_frag_CLASSES"); _fragTypes = getArray (configFile >> "CfgAmmo" >> _shellType >> "ACE_frag_CLASSES");
} else { } else {
_warn = true; _warn = true;
}; };
_atlPos = ASLtoATL _lastPos; _atlPos = ASLtoATL _lastPos;
_isArmed = true; _isArmed = true;
if(!isNil "_gun") then { if(!isNil "_gun") then {
_fuseDist = getNumber(configFile >> "CfgAmmo" >> _shellType >> "fuseDistance"); _fuseDist = getNumber(configFile >> "CfgAmmo" >> _shellType >> "fuseDistance");
_isArmed = ((getPosASL _gun) distance _lastPos > _fuseDist); _isArmed = ((getPosASL _gun) distance _lastPos > _fuseDist);
}; };
_indirectHitRange = getNumber(configFile >> "CfgAmmo" >> _shellType >> "indirecthitrange"); _indirectHitRange = getNumber(configFile >> "CfgAmmo" >> _shellType >> "indirecthitrange");
@ -72,7 +72,7 @@ _gC = getNumber(configFile >> "CfgAmmo" >> _shellType >> "ACE_frag_GURNEY_C");
if(_gC == 0) then { _gC = 2440; _warn = true;}; if(_gC == 0) then { _gC = 2440; _warn = true;};
if(_warn) then { if(_warn) then {
diag_log text format["Ammo class %1 lacks proper explosive properties definitions for frag!", _shellType]; //TODO: turn this off when we get closer to release diag_log text format["Ammo class %1 lacks proper explosive properties definitions for frag!", _shellType]; //TODO: turn this off when we get closer to release
}; };
_fragPower = (((_m/_c)+_k)^-(1/2))*_gC; _fragPower = (((_m/_c)+_k)^-(1/2))*_gC;
@ -80,7 +80,7 @@ _fragPower = _fragPower*0.8; // Gunery equation is for a non-fragmenting metal,
_fragPowerRandom = _fragPower*0.5; _fragPowerRandom = _fragPower*0.5;
if((_atlPos select 2) < 0.5) then { if((_atlPos select 2) < 0.5) then {
_lastPos set[2, (_lastPos select 2)+0.5]; _lastPos set[2, (_lastPos select 2)+0.5];
}; };
// _manObjects = _atlPos nearEntities ["CaManBase", _fragRange]; // _manObjects = _atlPos nearEntities ["CaManBase", _fragRange];
@ -108,123 +108,123 @@ _fragArcs = [];
_fragArcs set[360, 0]; _fragArcs set[360, 0];
#ifdef DEBUG_MODE_FULL #ifdef DEBUG_MODE_FULL
player sideChat format["_fragRange: %1", _fragRange]; player sideChat format["_fragRange: %1", _fragRange];
player sideChat format["_objects: %1", _objects]; player sideChat format["_objects: %1", _objects];
#endif #endif
_doRandom = false; _doRandom = false;
if(_isArmed && (count _objects) > 0) then { if(_isArmed && (count _objects) > 0) then {
{ {
//if(random(1) > 0.5) then { //if(random(1) > 0.5) then {
_target = _x; _target = _x;
if(alive _target) then { if(alive _target) then {
_boundingBox = boundingBox _target; _boundingBox = boundingBox _target;
_targetPos = (getPosASL _target); _targetPos = (getPosASL _target);
_distance = _targetPos distance _lastPos; _distance = _targetPos distance _lastPos;
_add = (((_boundingBox select 1) select 2)/2)+((((_distance-(_fragpower/8)) max 0)/_fragPower)*10); _add = (((_boundingBox select 1) select 2)/2)+((((_distance-(_fragpower/8)) max 0)/_fragPower)*10);
_bbX = (abs((_boundingBox select 0) select 0))+((_boundingBox select 1) select 0); _bbX = (abs((_boundingBox select 0) select 0))+((_boundingBox select 1) select 0);
_bbY = (abs((_boundingBox select 0) select 1))+((_boundingBox select 1) select 1); _bbY = (abs((_boundingBox select 0) select 1))+((_boundingBox select 1) select 1);
_bbZ = (abs((_boundingBox select 0) select 2))+((_boundingBox select 1) select 2); _bbZ = (abs((_boundingBox select 0) select 2))+((_boundingBox select 1) select 2);
_cubic = _bbX*_bbY*_bbZ; _cubic = _bbX*_bbY*_bbZ;
if(_cubic > 1) then { if(_cubic > 1) then {
_doRandom = true; _doRandom = true;
_targetVel = (velocity _target); _targetVel = (velocity _target);
_targetPos set[0, (_targetPos select 0)+((_targetVel select 0)*(_distance/_fragPower))]; _targetPos set[0, (_targetPos select 0)+((_targetVel select 0)*(_distance/_fragPower))];
_targetPos set[1, (_targetPos select 1)+((_targetVel select 1)*(_distance/_fragPower))]; _targetPos set[1, (_targetPos select 1)+((_targetVel select 1)*(_distance/_fragPower))];
_targetPos set[2, (_targetPos select 2)+_add]; _targetPos set[2, (_targetPos select 2)+_add];
_baseVec = _lastPos vectorFromTo _targetPos; _baseVec = _lastPos vectorFromTo _targetPos;
_dir = floor(_baseVec call CBA_fnc_vectDir); _dir = floor(_baseVec call CBA_fnc_vectDir);
_currentCount = _fragArcs select _dir; _currentCount = _fragArcs select _dir;
if(isNil "_currentCount") then { if(isNil "_currentCount") then {
_currentCount = 0; _currentCount = 0;
}; };
if(_currentCount < 20) then { if(_currentCount < 20) then {
_count = ceil(random(sqrt(_m/1000))); _count = ceil(random(sqrt(_m/1000)));
_vecVar = FRAG_VEC_VAR; _vecVar = FRAG_VEC_VAR;
if(!(_target isKindOf "Man")) then { if(!(_target isKindOf "Man")) then {
_vecVar = ((sqrt _cubic)/2000)+FRAG_VEC_VAR; _vecVar = ((sqrt _cubic)/2000)+FRAG_VEC_VAR;
if((count (crew _target)) == 0 && _count > 0) then { if((count (crew _target)) == 0 && _count > 0) then {
_count = 0 max (_count/2); _count = 0 max (_count/2);
}; };
}; };
for "_i" from 1 to _count do { for "_i" from 1 to _count do {
_vec = +_baseVec; _vec = +_baseVec;
_vec set[0, (_vec select 0)-(_vecVar/2)+(random _vecVar)]; _vec set[0, (_vec select 0)-(_vecVar/2)+(random _vecVar)];
_vec set[1, (_vec select 1)-(_vecVar/2)+(random _vecVar)]; _vec set[1, (_vec select 1)-(_vecVar/2)+(random _vecVar)];
_vec set[2, (_vec select 2)-(_vecVar/2)+(random _vecVar)]; _vec set[2, (_vec select 2)-(_vecVar/2)+(random _vecVar)];
_fp = (_fragPower-(random (_fragPowerRandom))); _fp = (_fragPower-(random (_fragPowerRandom)));
_vel = [ _vel = [
(_vec select 0)*_fp, (_vec select 0)*_fp,
(_vec select 1)*_fp, (_vec select 1)*_fp,
(_vec select 2)*_fp (_vec select 2)*_fp
]; ];
_fragType = round (random ((count _fragTypes)-1)); _fragType = round (random ((count _fragTypes)-1));
_fragObj = (_fragTypes select _fragType) createVehicleLocal [0,0,10000]; _fragObj = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
// diag_log text format["fp: %1 %2", _fp, typeOf _fragObj]; // diag_log text format["fp: %1 %2", _fp, typeOf _fragObj];
_fragObj setPosASL _lastPos; _fragObj setPosASL _lastPos;
_fragObj setVectorDir _vec; _fragObj setVectorDir _vec;
_fragObj setVelocity _vel; _fragObj setVelocity _vel;
#ifdef DEBUG_MODE_FULL #ifdef DEBUG_MODE_FULL
GVAR(TOTALFRAGS) = GVAR(TOTALFRAGS) + 1; GVAR(TOTALFRAGS) = GVAR(TOTALFRAGS) + 1;
GVAR(traceFrags) = true; GVAR(traceFrags) = true;
#endif #endif
if(GVAR(traceFrags)) then { if(GVAR(traceFrags)) then {
[player, _fragObj, [1,0,0,1]] call FUNC(addTrack); [player, _fragObj, [1,0,0,1]] call FUNC(addTrack);
}; };
_fragCount = _fragCount + 1; _fragCount = _fragCount + 1;
_currentCount = _currentCount + 1; _currentCount = _currentCount + 1;
}; };
_fragArcs set[_dir, _currentCount]; _fragArcs set[_dir, _currentCount];
}; };
}; };
}; };
//}; //};
if(_fragCount > MAX_FRAG_COUNT) exitWith {}; if(_fragCount > MAX_FRAG_COUNT) exitWith {};
} forEach _objects; } forEach _objects;
if(_fragCount > MAX_FRAG_COUNT) exitWith {}; if(_fragCount > MAX_FRAG_COUNT) exitWith {};
_randomCount = (ceil((MAX_FRAG_COUNT-_fragCount)*0.1)) max 0; _randomCount = (ceil((MAX_FRAG_COUNT-_fragCount)*0.1)) max 0;
_sectorSize = 360 / (_randomCount max 1); _sectorSize = 360 / (_randomCount max 1);
// _doRandom = false; // _doRandom = false;
if(_doRandom) then { if(_doRandom) then {
for "_i" from 1 to _randomCount do { for "_i" from 1 to _randomCount do {
// Distribute evenly // Distribute evenly
_sectorOffset = 360 * (_i - 1) / (_randomCount max 1); _sectorOffset = 360 * (_i - 1) / (_randomCount max 1);
_randomDir = random(_sectorSize); _randomDir = random(_sectorSize);
_vec = [cos(_sectorOffset + _randomDir), sin(_sectorOffset + _randomDir), sin(30 - (random 45))]; _vec = [cos(_sectorOffset + _randomDir), sin(_sectorOffset + _randomDir), sin(30 - (random 45))];
_fp = (_fragPower-(random (_fragPowerRandom))); _fp = (_fragPower-(random (_fragPowerRandom)));
_vel = [ _vel = [
(_vec select 0)*_fp, (_vec select 0)*_fp,
(_vec select 1)*_fp, (_vec select 1)*_fp,
(_vec select 2)*_fp (_vec select 2)*_fp
]; ];
_fragType = round (random ((count _fragTypes)-1)); _fragType = round (random ((count _fragTypes)-1));
_fragObj = (_fragTypes select _fragType) createVehicleLocal [0,0,10000]; _fragObj = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
_fragObj setPosASL _lastPos; _fragObj setPosASL _lastPos;
_fragObj setVectorDir _vec; _fragObj setVectorDir _vec;
_fragObj setVelocity _vel; _fragObj setVelocity _vel;
#ifdef DEBUG_MODE_FULL #ifdef DEBUG_MODE_FULL
GVAR(TOTALFRAGS) = GVAR(TOTALFRAGS) + 1; GVAR(TOTALFRAGS) = GVAR(TOTALFRAGS) + 1;
GVAR(traceFrags) = true; GVAR(traceFrags) = true;
#endif #endif
if(GVAR(traceFrags)) then { if(GVAR(traceFrags)) then {
[player, _fragObj, [1,0.5,0,1]] call FUNC(addTrack); [player, _fragObj, [1,0.5,0,1]] call FUNC(addTrack);
}; };
_fragCount = _fragCount + 1; _fragCount = _fragCount + 1;
}; };
}; };
}; };
// #ifdef DEBUG_MODE_FULL // #ifdef DEBUG_MODE_FULL
// player sideChat format["total frags: %1", GVAR(TOTALFRAGS)]; // player sideChat format["total frags: %1", GVAR(TOTALFRAGS)];
// player sideChat format["tracks: %1", (count GVAR(trackedObjects))]; // player sideChat format["tracks: %1", (count GVAR(trackedObjects))];
// #endif // #endif
// _endTime = diag_tickTime; // _endTime = diag_tickTime;

View File

@ -3,12 +3,12 @@
private ["_ret"]; private ["_ret"];
_ret = true; _ret = true;
if(IS_ARRAY((_this select 0))) then { if(IS_ARRAY((_this select 0))) then {
_ret = false; _ret = false;
} else { } else {
if((_this select 0) in GVAR(trackedObjects)) then { if((_this select 0) in GVAR(trackedObjects)) then {
GVAR(trackedObjects) = GVAR(trackedObjects) - [(_this select 0)]; GVAR(trackedObjects) = GVAR(trackedObjects) - [(_this select 0)];
} else { } else {
_ret = false; _ret = false;
}; };
}; };
_ret _ret

View File

@ -3,27 +3,27 @@
private ["_initialData", "_currentCount", "_hpData", "_round", "_hpRound"]; private ["_initialData", "_currentCount", "_hpData", "_round", "_hpRound"];
//player sideChat format["f: %1 c: %2", (_this select 0), (count GVAR(spallHPData))]; //player sideChat format["f: %1 c: %2", (_this select 0), (count GVAR(spallHPData))];
if((_this select 0) <= (count GVAR(spallHPData))) then { if((_this select 0) <= (count GVAR(spallHPData))) then {
_initialData = GVAR(spallHPData) select (_this select 0); _initialData = GVAR(spallHPData) select (_this select 0);
if(!isNil "_initialData") then { if(!isNil "_initialData") then {
_hpRound = ((_this select 1) select 0) select 2; _hpRound = ((_this select 1) select 0) select 2;
_round = _initialData select 3; _round = _initialData select 3;
_hpDirect = ((_this select 1) select 0) select 10; _hpDirect = ((_this select 1) select 0) select 10;
if(_hpDirect && {_round == _hpRound}) then { if(_hpDirect && {_round == _hpRound}) then {
{ {
_hpData = _x; _hpData = _x;
_round = _initialData select 3; _round = _initialData select 3;
// diag_log text format["HPDUMP-------------------------------------"]; // diag_log text format["HPDUMP-------------------------------------"];
// { // {
// _hp = _x; // _hp = _x;
// diag_log text format["%1 --", _forEachIndex]; // diag_log text format["%1 --", _forEachIndex];
// { // {
// diag_log text format["%1: %2", _forEachIndex, _x]; // diag_log text format["%1: %2", _forEachIndex, _x];
// } forEach _hp; // } forEach _hp;
// } forEach (_this select 1); // } forEach (_this select 1);
[DFUNC(doSpall), 0, [_this, _forEachIndex]] call cba_fnc_addPerFrameHandler; [DFUNC(doSpall), 0, [_this, _forEachIndex]] call cba_fnc_addPerFrameHandler;
// player sideChat "WEEE"; // player sideChat "WEEE";
} forEach (_this select 1); } forEach (_this select 1);
}; };
}; };
}; };

View File

@ -12,29 +12,29 @@ _curPos = getPosASL _round;
_velocity = velocity _round; _velocity = velocity _round;
_velocityStep = [ _velocityStep = [
(_velocity select 0)*_delta, (_velocity select 0)*_delta,
(_velocity select 1)*_delta, (_velocity select 1)*_delta,
(_velocity select 2)*_delta (_velocity select 2)*_delta
]; ];
_forwardPos = [ _forwardPos = [
(_curPos select 0) + (_velocityStep select 0), (_curPos select 0) + (_velocityStep select 0),
(_curPos select 1) + (_velocityStep select 1), (_curPos select 1) + (_velocityStep select 1),
(_curPos select 2) + (_velocityStep select 2) (_curPos select 2) + (_velocityStep select 2)
]; ];
_intersectsWith = lineIntersectsWith [_curPos, _forwardPos]; _intersectsWith = lineIntersectsWith [_curPos, _forwardPos];
if(count _intersectsWith > 0) then { if(count _intersectsWith > 0) then {
// player sideChat format["inter: %1", _intersectsWith]; // player sideChat format["inter: %1", _intersectsWith];
{ {
if(!(_x in _foundObjects)) then { if(!(_x in _foundObjects)) then {
// diag_log text format["Adding HP: %1", _x]; // diag_log text format["Adding HP: %1", _x];
_index = (count GVAR(spallHPData)); _index = (count GVAR(spallHPData));
_hpId = _x addEventHandler ["hitPart", format["[%1, _this] call " + QUOTE(FUNC(spallHP)), _index]]; _hpId = _x addEventHandler ["hitPart", format["[%1, _this] call " + QUOTE(FUNC(spallHP)), _index]];
_foundObjects set[(count _foundObjects), _x]; _foundObjects set[(count _foundObjects), _x];
_foundObjectHPIds set[(count _foundObjectHPIds), _hpId]; _foundObjectHPIds set[(count _foundObjectHPIds), _hpId];
_data = [_hpId, _x, typeOf _round, _round, _curPos, _velocity, 0, _foundObjects, _foundObjectHPIds]; _data = [_hpId, _x, typeOf _round, _round, _curPos, _velocity, 0, _foundObjects, _foundObjectHPIds];
GVAR(spallHPData) set[_index, _data]; GVAR(spallHPData) set[_index, _data];
}; };
} forEach _intersectsWith; } forEach _intersectsWith;
}; };

View File

@ -1,5 +1,5 @@
#include "script_component.hpp" #include "script_component.hpp"
if(!GVAR(tracesStarted)) then { if(!GVAR(tracesStarted)) then {
GVAR(tracesStarted) = true; GVAR(tracesStarted) = true;
GVAR(traceID) = [FUNC(drawTraces), 0, []] call cba_fnc_addPerFrameHandler; GVAR(traceID) = [FUNC(drawTraces), 0, []] call cba_fnc_addPerFrameHandler;
}; };

View File

@ -1,5 +1,5 @@
#include "script_component.hpp" #include "script_component.hpp"
if(GVAR(tracesStarted)) then { if(GVAR(tracesStarted)) then {
GVAR(tracesStarted) = false; GVAR(tracesStarted) = false;
[GVAR(traceID)] call cba_fnc_removePerFrameHandler; [GVAR(traceID)] call cba_fnc_removePerFrameHandler;
}; };

View File

@ -12,41 +12,41 @@ _spallTrack = _params select 7;
_foundObjectHPIds = _params select 8; _foundObjectHPIds = _params select 8;
if (!alive _round) then { if (!alive _round) then {
[_this select 1] call cba_fnc_removePerFrameHandler; [_this select 1] call cba_fnc_removePerFrameHandler;
if(_time != time && {_round in GVAR(trackedObjects)} && {!(_round in GVAR(blackList))}) then { if(_time != time && {_round in GVAR(trackedObjects)} && {!(_round in GVAR(blackList))}) then {
GVAR(trackedObjects) = GVAR(trackedObjects) - [_round]; GVAR(trackedObjects) = GVAR(trackedObjects) - [_round];
_skip = getNumber (configFile >> "CfgAmmo" >> _type >> "ACE_FRAG_SKIP"); _skip = getNumber (configFile >> "CfgAmmo" >> _type >> "ACE_FRAG_SKIP");
if(_skip == 0) then { if(_skip == 0) then {
_explosive = getNumber (configFile >> "CfgAmmo" >> _type >> "explosive"); _explosive = getNumber (configFile >> "CfgAmmo" >> _type >> "explosive");
_indirectRange = getNumber (configFile >> "CfgAmmo" >> _type >> "indirectHitRange"); _indirectRange = getNumber (configFile >> "CfgAmmo" >> _type >> "indirectHitRange");
_force = getNumber (configFile >> "CfgAmmo" >> _type >> "ACE_FRAG_FORCE"); _force = getNumber (configFile >> "CfgAmmo" >> _type >> "ACE_FRAG_FORCE");
_fragPower = getNumber(configFile >> "CfgAmmo" >> _type >> "indirecthit")*(sqrt(_indirectRange)); _fragPower = getNumber(configFile >> "CfgAmmo" >> _type >> "indirecthit")*(sqrt(_indirectRange));
if((_explosive > 0.5 && {_indirectRange >= 4.5} && {_fragPower >= 35}) || {_force == 1} ) then { if((_explosive > 0.5 && {_indirectRange >= 4.5} && {_fragPower >= 35}) || {_force == 1} ) then {
[QGVAR(frag_eh), _params] call ace_common_fnc_serverEvent; [QGVAR(frag_eh), _params] call ace_common_fnc_serverEvent;
GVAR(trackedObjects) = GVAR(trackedObjects) - [_round]; GVAR(trackedObjects) = GVAR(trackedObjects) - [_round];
}; };
}; };
}; };
if(_doSpall) then { if(_doSpall) then {
GVAR(spallIsTrackingCount) = GVAR(spallIsTrackingCount) - 1; GVAR(spallIsTrackingCount) = GVAR(spallIsTrackingCount) - 1;
// diag_log text format["F: %1", _foundObjectHPIds]; // diag_log text format["F: %1", _foundObjectHPIds];
{ {
if(!isNil "_x") then { if(!isNil "_x") then {
_x removeEventHandler ["hitPart", _foundObjectHPIds select _forEachIndex]; _x removeEventHandler ["hitPart", _foundObjectHPIds select _forEachIndex];
}; };
} forEach _spallTrack; } forEach _spallTrack;
}; };
} else { } else {
if(!(_round in GVAR(trackedObjects)) || {_round in GVAR(blackList)}) then { if(!(_round in GVAR(trackedObjects)) || {_round in GVAR(blackList)}) then {
[_this select 1] call cba_fnc_removePerFrameHandler; [_this select 1] call cba_fnc_removePerFrameHandler;
if(_round in GVAR(blackList)) then { if(_round in GVAR(blackList)) then {
GVAR(blackList) = GVAR(blackList) - [_round]; GVAR(blackList) = GVAR(blackList) - [_round];
}; };
}; };
_params set[1, (getPosASL _round)]; _params set[1, (getPosASL _round)];
_params set[2, (velocity _round)]; _params set[2, (velocity _round)];
if(_doSpall) then { if(_doSpall) then {
[_round, 1, _spallTrack, _foundObjectHPIds] call FUNC(spallTrack); [_round, 1, _spallTrack, _foundObjectHPIds] call FUNC(spallTrack);
}; };
}; };

View File

@ -4,11 +4,11 @@ _tracerObj = _params select 0;
_index = _params select 1; _index = _params select 1;
if(alive _tracerObj && (count GVAR(traces)) > 0) then { if(alive _tracerObj && (count GVAR(traces)) > 0) then {
_data = GVAR(traces) select _index; _data = GVAR(traces) select _index;
_positions = _data select 4; _positions = _data select 4;
_objVel = velocity _tracerObj; _objVel = velocity _tracerObj;
_objTVel = sqrt((_objVel select 0)^2 + (_objVel select 1)^2 + (_objVel select 2)^2); _objTVel = sqrt((_objVel select 0)^2 + (_objVel select 1)^2 + (_objVel select 2)^2);
_positions set[(count _positions), [(getPos _tracerObj), _objTVel]]; _positions set[(count _positions), [(getPos _tracerObj), _objTVel]];
} else { } else {
[(_this select 1)] call cba_fnc_removePerFrameHandler; [(_this select 1)] call cba_fnc_removePerFrameHandler;
}; };

View File

@ -4,13 +4,13 @@
//#define DEBUG_ENABLED_FRAG //#define DEBUG_ENABLED_FRAG
#ifdef DEBUG_ENABLED_FRAG #ifdef DEBUG_ENABLED_FRAG
#define DEBUG_MODE_FULL #define DEBUG_MODE_FULL
#endif #endif
#ifdef DEBUG_SETTINGS_FRAG #ifdef DEBUG_SETTINGS_FRAG
#define DEBUG_SETTINGS DEBUG_SETTINGS_FRAG #define DEBUG_SETTINGS DEBUG_SETTINGS_FRAG
#endif #endif
#include "\z\ace\Addons\main\script_macros.hpp" #include "\z\ace\Addons\main\script_macros.hpp"
#define ACE_TRACE_DRAW_INC 1 #define ACE_TRACE_DRAW_INC 1

View File

@ -2,11 +2,11 @@
#include "\z\ace\Addons\main\script_mod.hpp" #include "\z\ace\Addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_GFORCES #ifdef DEBUG_ENABLED_GFORCES
#define DEBUG_MODE_FULL #define DEBUG_MODE_FULL
#endif #endif
#ifdef DEBUG_SETTINGS_GFORCES #ifdef DEBUG_SETTINGS_GFORCES
#define DEBUG_SETTINGS DEBUG_SETTINGS_GFORCES #define DEBUG_SETTINGS DEBUG_SETTINGS_GFORCES
#endif #endif
#include "\z\ace\Addons\main\script_macros.hpp" #include "\z\ace\Addons\main\script_macros.hpp"

View File

@ -1,42 +1,42 @@
class RscTitles{ class RscTitles{
#include "define.hpp" #include "define.hpp"
class RscACE_Goggles_BaseTitle{ class RscACE_Goggles_BaseTitle{
idd = -1; idd = -1;
onLoad = "uiNamespace setVariable ['ACE_Goggles_Display', _this select 0]"; onLoad = "uiNamespace setVariable ['ACE_Goggles_Display', _this select 0]";
onUnload = "uiNamespace setVariable ['ACE_Goggles_Display', displayNull]"; onUnload = "uiNamespace setVariable ['ACE_Goggles_Display', displayNull]";
fadeIn=0.5; fadeIn=0.5;
fadeOut=0.5; fadeOut=0.5;
movingEnable = false; movingEnable = false;
duration = 10e10; duration = 10e10;
name = "RscACE_Goggles_BaseTitle"; name = "RscACE_Goggles_BaseTitle";
class controls; class controls;
}; };
class RscACE_Goggles:RscACE_Goggles_BaseTitle{ class RscACE_Goggles:RscACE_Goggles_BaseTitle{
idd = 1044; idd = 1044;
name = "RscACE_Goggles"; name = "RscACE_Goggles";
class controls{ class controls{
class gogglesImage: RscPicture{ class gogglesImage: RscPicture{
idc = 10650; idc = 10650;
}; };
}; };
}; };
class RscACE_GogglesEffects:RscACE_Goggles_BaseTitle{ class RscACE_GogglesEffects:RscACE_Goggles_BaseTitle{
idd = 1045; idd = 1045;
onLoad = "uiNamespace setVariable ['ACE_Goggles_DisplayEffects', _this select 0]"; onLoad = "uiNamespace setVariable ['ACE_Goggles_DisplayEffects', _this select 0]";
onUnload = "uiNamespace setVariable ['ACE_Goggles_DisplayEffects', displayNull]"; onUnload = "uiNamespace setVariable ['ACE_Goggles_DisplayEffects', displayNull]";
name = "RscACE_GogglesEffects"; name = "RscACE_GogglesEffects";
fadeIn=0; fadeIn=0;
fadeOut=0.5; fadeOut=0.5;
class controls{ class controls{
class dirtImage: RscPicture { class dirtImage: RscPicture {
idc = 10660; idc = 10660;
}; };
class dustImage: RscPicture { class dustImage: RscPicture {
idc = 10662; idc = 10662;
}; };
}; };
}; };
}; };

View File

@ -3,279 +3,279 @@
#define COLOUR 8.0 #define COLOUR 8.0
class CfgPatches { class CfgPatches {
class ADDON { class ADDON {
units[] = {}; units[] = {};
weapons[] = {}; weapons[] = {};
requiredVersion = REQUIRED_VERSION; requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"}; requiredAddons[] = {"ace_common"};
author[] = {"Garth 'L-H' de Wet"}; author[] = {"Garth 'L-H' de Wet"};
authorUrl = "http://garth.snakebiteink.co.za/"; authorUrl = "http://garth.snakebiteink.co.za/";
VERSION_CONFIG; VERSION_CONFIG;
}; };
}; };
#include "CfgEventHandlers.hpp" #include "CfgEventHandlers.hpp"
#define COMBAT_GOGGLES ACE_Overlay = QUOTE(PATHTOF(textures\HUD\CombatGoggles.paa)); \ #define COMBAT_GOGGLES ACE_Overlay = QUOTE(PATHTOF(textures\HUD\CombatGoggles.paa)); \
ACE_OverlayCracked = QUOTE(PATHTOF(textures\HUD\CombatGogglesCracked.paa)); \ ACE_OverlayCracked = QUOTE(PATHTOF(textures\HUD\CombatGogglesCracked.paa)); \
ACE_Resistance = 2; \ ACE_Resistance = 2; \
ACE_Protection = 1; ACE_Protection = 1;
class CfgGlasses { class CfgGlasses {
class None { class None {
ACE_Color[] = {0,0,0}; ACE_Color[] = {0,0,0};
ACE_TintAmount=0; ACE_TintAmount=0;
ACE_Overlay = ""; ACE_Overlay = "";
ACE_OverlayDirt = "A3\Ui_f\data\igui\rsctitles\HealthTextures\dust_upper_ca.paa"; ACE_OverlayDirt = "A3\Ui_f\data\igui\rsctitles\HealthTextures\dust_upper_ca.paa";
ACE_OverlayCracked = QUOTE(PATHTOF(textures\HUD\Cracked.paa)); ACE_OverlayCracked = QUOTE(PATHTOF(textures\HUD\Cracked.paa));
ACE_Resistance = 0; ACE_Resistance = 0;
ACE_Protection = 0; ACE_Protection = 0;
ACE_DustPath = QUOTE(PATHTOF(textures\fx\dust\%1.paa)); ACE_DustPath = QUOTE(PATHTOF(textures\fx\dust\%1.paa));
}; };
class G_Combat:None { class G_Combat:None {
COMBAT_GOGGLES COMBAT_GOGGLES
}; };
class G_Diving { class G_Diving {
ACE_Overlay = QUOTE(PATHTOF(textures\HUD\DivingGoggles.paa)); ACE_Overlay = QUOTE(PATHTOF(textures\HUD\DivingGoggles.paa));
ACE_OverlayCracked = QUOTE(PATHTOF(textures\HUD\DivingGogglesCracked.paa)); ACE_OverlayCracked = QUOTE(PATHTOF(textures\HUD\DivingGogglesCracked.paa));
ACE_Resistance = 2; ACE_Resistance = 2;
ACE_Protection = 1; ACE_Protection = 1;
}; };
class G_Lowprofile:None { class G_Lowprofile:None {
ACE_TintAmount=COLOUR*2; ACE_TintAmount=COLOUR*2;
ACE_Resistance = 2; ACE_Resistance = 2;
ACE_Protection = 1; ACE_Protection = 1;
}; };
class G_Shades_Black:None { class G_Shades_Black:None {
ACE_TintAmount=COLOUR*2; ACE_TintAmount=COLOUR*2;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Shades_Blue:None{ class G_Shades_Blue:None{
ACE_Color[] = {0,0,1}; ACE_Color[] = {0,0,1};
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Shades_Green:None{ class G_Shades_Green:None{
ACE_Color[] = {0,1,0}; ACE_Color[] = {0,1,0};
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Shades_Red:None{ class G_Shades_Red:None{
ACE_Color[] = {1,0,0}; ACE_Color[] = {1,0,0};
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Spectacles:None{ class G_Spectacles:None{
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Spectacles_Tinted:None{ class G_Spectacles_Tinted:None{
ACE_TintAmount=COLOUR*2; ACE_TintAmount=COLOUR*2;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Sport_Blackred:None{ class G_Sport_Blackred:None{
ACE_Color[] = {1,0,0}; ACE_Color[] = {1,0,0};
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Sport_BlackWhite:None{ class G_Sport_BlackWhite:None{
ACE_Color[] = {0,0,1}; ACE_Color[] = {0,0,1};
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Sport_Blackyellow:None{ class G_Sport_Blackyellow:None{
ACE_TintAmount=COLOUR*2; ACE_TintAmount=COLOUR*2;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Sport_Checkered:None{ class G_Sport_Checkered:None{
ACE_TintAmount=COLOUR*2; ACE_TintAmount=COLOUR*2;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Sport_Greenblack:None{ class G_Sport_Greenblack:None{
ACE_TintAmount=COLOUR*2; ACE_TintAmount=COLOUR*2;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Sport_Red:None{ class G_Sport_Red:None{
ACE_TintAmount=COLOUR*2; ACE_TintAmount=COLOUR*2;
ACE_Color[] = {0,0,0}; ACE_Color[] = {0,0,0};
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Squares:None{ class G_Squares:None{
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Squares_Tinted:None{ class G_Squares_Tinted:None{
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Tactical_Black:None{ class G_Tactical_Black:None{
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Color[] = {0,0,-1.5}; ACE_Color[] = {0,0,-1.5};
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Tactical_Clear:None{ class G_Tactical_Clear:None{
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Color[] = {0,0,-1}; ACE_Color[] = {0,0,-1};
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Aviator:None{ class G_Aviator:None{
ACE_Color[] = {0,0,-1}; ACE_Color[] = {0,0,-1};
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Lady_Blue:None{ class G_Lady_Blue:None{
ACE_Color[] = {0,0,1}; ACE_Color[] = {0,0,1};
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Lady_Red:None{ class G_Lady_Red:None{
ACE_Color[] = {1,0,0}; ACE_Color[] = {1,0,0};
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Lady_Dark:None{ class G_Lady_Dark:None{
ACE_TintAmount=COLOUR*2; ACE_TintAmount=COLOUR*2;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class G_Lady_Mirror:None{ class G_Lady_Mirror:None{
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Resistance = 1; ACE_Resistance = 1;
}; };
class AV_ESS_blk:None{ class AV_ESS_blk:None{
COMBAT_GOGGLES COMBAT_GOGGLES
}; };
class G_Balaclava_blk; class G_Balaclava_blk;
class G_Balaclava_combat:G_Balaclava_blk { class G_Balaclava_combat:G_Balaclava_blk {
COMBAT_GOGGLES COMBAT_GOGGLES
}; };
class G_Balaclava_lowprofile:G_Balaclava_blk { class G_Balaclava_lowprofile:G_Balaclava_blk {
ACE_TintAmount=COLOUR*2; ACE_TintAmount=COLOUR*2;
ACE_Resistance = 2; ACE_Resistance = 2;
ACE_Protection = 1; ACE_Protection = 1;
}; };
class G_Bandanna_blk; class G_Bandanna_blk;
class G_Bandanna_shades:G_Bandanna_blk { class G_Bandanna_shades:G_Bandanna_blk {
ACE_TintAmount=COLOUR*2; ACE_TintAmount=COLOUR*2;
ACE_Resistance = 1; ACE_Resistance = 1;
ACE_Protection = 1; ACE_Protection = 1;
}; };
class G_Bandanna_sport:G_Bandanna_blk { class G_Bandanna_sport:G_Bandanna_blk {
ACE_Color[] = {1,0,0}; ACE_Color[] = {1,0,0};
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Resistance = 1; ACE_Resistance = 1;
ACE_Protection = 1; ACE_Protection = 1;
}; };
class G_Bandanna_aviator:G_Bandanna_blk { class G_Bandanna_aviator:G_Bandanna_blk {
ACE_Color[] = {0,0,-1}; ACE_Color[] = {0,0,-1};
ACE_TintAmount=COLOUR; ACE_TintAmount=COLOUR;
ACE_Resistance = 1; ACE_Resistance = 1;
ACE_Protection = 1; ACE_Protection = 1;
}; };
}; };
#include "RscTitles.hpp" #include "RscTitles.hpp"
class CfgMovesBasic { class CfgMovesBasic {
class ManActions { class ManActions {
GestureWipeFace[] = {"GestureWipeFace", "gesture"}; GestureWipeFace[] = {"GestureWipeFace", "gesture"};
}; };
}; };
class CfgGesturesMale { class CfgGesturesMale {
class States { class States {
class GestureFreezeStand; class GestureFreezeStand;
class GestureWipeFace: GestureFreezeStand { class GestureWipeFace: GestureFreezeStand {
file = QUOTE(PATHTOF(anim\WipeGlasses.rtm)); file = QUOTE(PATHTOF(anim\WipeGlasses.rtm));
canPullTrigger = 0; canPullTrigger = 0;
}; };
}; };
}; };
class CfgWeapons { class CfgWeapons {
class H_HelmetB; class H_HelmetB;
class H_CrewHelmetHeli_B:H_HelmetB { class H_CrewHelmetHeli_B:H_HelmetB {
ACE_Protection = 1; ACE_Protection = 1;
}; };
class H_PilotHelmetHeli_B:H_HelmetB { class H_PilotHelmetHeli_B:H_HelmetB {
ACE_Protection = 1; ACE_Protection = 1;
}; };
class H_PilotHelmetFighter_B:H_HelmetB { class H_PilotHelmetFighter_B:H_HelmetB {
ACE_Protection = 1; ACE_Protection = 1;
}; };
}; };
class RifleAssaultCloud { class RifleAssaultCloud {
ACE_Goggles_BulletCount = 4; ACE_Goggles_BulletCount = 4;
}; };
class MachineGunCloud { class MachineGunCloud {
ACE_Goggles_BulletCount = 3; ACE_Goggles_BulletCount = 3;
}; };
class SniperCloud { class SniperCloud {
ACE_Goggles_BulletCount = 1; ACE_Goggles_BulletCount = 1;
}; };
class ACE_Settings { class ACE_Settings {
class GVAR(showInThirdPerson) { class GVAR(showInThirdPerson) {
value = 0; value = 0;
typeName = "BOOL"; typeName = "BOOL";
isClientSetable = 1; isClientSetable = 1;
displayName = "$STR_ACE_Goggles_ShowInThirdPerson"; displayName = "$STR_ACE_Goggles_ShowInThirdPerson";
}; };
}; };
class CfgCloudlets { class CfgCloudlets {
class Default; class Default;
class ACERainEffect:Default { class ACERainEffect:Default {
interval = 0.001; interval = 0.001;
particleShape = "\A3\data_f\ParticleEffects\Universal\Refract"; particleShape = "\A3\data_f\ParticleEffects\Universal\Refract";
particleFSNtieth = 1; particleFSNtieth = 1;
particleFSIndex = 0; particleFSIndex = 0;
particleFSFrameCount = 1; particleFSFrameCount = 1;
particleFSLoop = 1; particleFSLoop = 1;
particleType = "Billboard"; particleType = "Billboard";
lifeTime = 0.5; lifeTime = 0.5;
rotationVelocity = 1; rotationVelocity = 1;
weight = 100; weight = 100;
volume = 0.000; volume = 0.000;
rubbing = 1.7; rubbing = 1.7;
size[] = {0.1}; size[] = {0.1};
color[] = {{1,1,1,1}}; color[] = {{1,1,1,1}};
animationSpeed[] = {0,1}; animationSpeed[] = {0,1};
randomDirectionPeriod = 0.2; randomDirectionPeriod = 0.2;
randomDirectionIntensity = 1.2; randomDirectionIntensity = 1.2;
positionVar[] = {2, 2, 2.5}; positionVar[] = {2, 2, 2.5};
sizeVar = 0.01; sizeVar = 0.01;
colorVar[] = {0, 0, 0, 0.1}; colorVar[] = {0, 0, 0, 0.1};
destroyOnWaterSurface = 1; destroyOnWaterSurface = 1;
}; };
}; };

View File

@ -22,12 +22,12 @@ _effects set [DIRT, true];
SETGLASSES(ace_player,_effects); SETGLASSES(ace_player,_effects);
if ([ace_player] call FUNC(isGogglesVisible)) then{ if ([ace_player] call FUNC(isGogglesVisible)) then{
_dirtImage = getText(ConfigFile >> "CfgGlasses" >> (goggles ace_player) >> "ACE_OverlayDirt"); _dirtImage = getText(ConfigFile >> "CfgGlasses" >> (goggles ace_player) >> "ACE_OverlayDirt");
if (_dirtImage != "") then { if (_dirtImage != "") then {
100 cutRsc["RscACE_GogglesEffects", "PLAIN",0.1, false]; 100 cutRsc["RscACE_GogglesEffects", "PLAIN",0.1, false];
(GETUVAR(GVAR(DisplayEffects),displayNull) displayCtrl 10660) ctrlSetText _dirtImage; (GETUVAR(GVAR(DisplayEffects),displayNull) displayCtrl 10660) ctrlSetText _dirtImage;
}; };
}; };
true true

View File

@ -16,10 +16,10 @@
#include "script_component.hpp" #include "script_component.hpp"
if (call FUNC(ExternalCamera)) exitWith {}; if (call FUNC(ExternalCamera)) exitWith {};
if ([ace_player] call FUNC(isGogglesVisible)) exitWith { if ([ace_player] call FUNC(isGogglesVisible)) exitWith {
100 cutRsc["RscACE_GogglesEffects", "PLAIN",2,false]; 100 cutRsc["RscACE_GogglesEffects", "PLAIN",2,false];
(uiNamespace getVariable ["ACE_Goggles_DisplayEffects", displayNull] displayCtrl 10662) ctrlSetText format[getText(ConfigFile >> "CfgGlasses" >> GVAR(Current) >> "ACE_DustPath"), GETDUSTT(DAMOUNT)+1]; (uiNamespace getVariable ["ACE_Goggles_DisplayEffects", displayNull] displayCtrl 10662) ctrlSetText format[getText(ConfigFile >> "CfgGlasses" >> GVAR(Current) >> "ACE_DustPath"), GETDUSTT(DAMOUNT)+1];
SETDUST(DAMOUNT,CLAMP(GETDUSTT(DAMOUNT)+1,0,1)); SETDUST(DAMOUNT,CLAMP(GETDUSTT(DAMOUNT)+1,0,1));
SETDUST(DBULLETS,0); SETDUST(DBULLETS,0);
}; };
if (GETVAR(ace_player,ACE_EyesDamaged,false)) exitWith {SETDUST(DACTIVE,false);SETDUST(DBULLETS,0);SETDUST(DAMOUNT,0);}; if (GETVAR(ace_player,ACE_EyesDamaged,false)) exitWith {SETDUST(DACTIVE,false);SETDUST(DBULLETS,0);SETDUST(DAMOUNT,0);};
@ -34,26 +34,26 @@ GVAR(PostProcessEyes) ppEffectEnable true;
SETDUST(DBULLETS,0); SETDUST(DBULLETS,0);
if (GVAR(DustHandler) != -1) then { // should be fixed in dev CBA if (GVAR(DustHandler) != -1) then { // should be fixed in dev CBA
[GVAR(DustHandler)] call CALLSTACK(cba_fnc_removePerFrameHandler); [GVAR(DustHandler)] call CALLSTACK(cba_fnc_removePerFrameHandler);
GVAR(DustHandler) = -1; GVAR(DustHandler) = -1;
}; };
GVAR(DustHandler) = [{ GVAR(DustHandler) = [{
if (diag_tickTime >= GETDUSTT(DTIME) + 3) then { if (diag_tickTime >= GETDUSTT(DTIME) + 3) then {
SETDUST(DAMOUNT,CLAMP(GETDUSTT(DAMOUNT)-1,0,2)); SETDUST(DAMOUNT,CLAMP(GETDUSTT(DAMOUNT)-1,0,2));
private "_amount"; private "_amount";
_amount = 1 - (GETDUSTT(DAMOUNT) * 0.125); _amount = 1 - (GETDUSTT(DAMOUNT) * 0.125);
if !(ace_player getVariable ["ACE_EyesDamaged", false]) then { if !(ace_player getVariable ["ACE_EyesDamaged", false]) then {
GVAR(PostProcessEyes) ppEffectAdjust[1, 1, 0, [0,0,0,0], [_amount,_amount,_amount,_amount],[1,1,1,0]]; GVAR(PostProcessEyes) ppEffectAdjust[1, 1, 0, [0,0,0,0], [_amount,_amount,_amount,_amount],[1,1,1,0]];
GVAR(PostProcessEyes) ppEffectCommit 0.5; GVAR(PostProcessEyes) ppEffectCommit 0.5;
}; };
if (GETDUSTT(DAMOUNT) <= 0) then { if (GETDUSTT(DAMOUNT) <= 0) then {
GVAR(PostProcessEyes) ppEffectAdjust[1, 1, 0, [0,0,0,0], [1,1,1,1],[1,1,1,0]]; GVAR(PostProcessEyes) ppEffectAdjust[1, 1, 0, [0,0,0,0], [1,1,1,1],[1,1,1,0]];
GVAR(PostProcessEyes) ppEffectCommit 2; GVAR(PostProcessEyes) ppEffectCommit 2;
[{GVAR(PostProcessEyes) ppEffectEnable false;}, [], 2, 0.5] call EFUNC(common,waitAndExecute); [{GVAR(PostProcessEyes) ppEffectEnable false;}, [], 2, 0.5] call EFUNC(common,waitAndExecute);
SETDUST(DACTIVE,false); SETDUST(DACTIVE,false);
SETDUST(DBULLETS,0); SETDUST(DBULLETS,0);
[GVAR(DustHandler)] call CALLSTACK(cba_fnc_removePerFrameHandler); [GVAR(DustHandler)] call CALLSTACK(cba_fnc_removePerFrameHandler);
GVAR(DustHandler) = -1; GVAR(DustHandler) = -1;
}; };
}; };
},0,[]] call CALLSTACK(cba_fnc_addPerFrameHandler); },0,[]] call CALLSTACK(cba_fnc_addPerFrameHandler);

View File

@ -26,29 +26,29 @@ call FUNC(removeGlassesEffect);
GVAR(EffectsActive) = true; GVAR(EffectsActive) = true;
if (_postProcessTintAmount != 0 && {GVAR(UsePP)}) then { if (_postProcessTintAmount != 0 && {GVAR(UsePP)}) then {
_postProcessColour set [3, _postProcessTintAmount/100]; _postProcessColour set [3, _postProcessTintAmount/100];
GVAR(PostProcess) ppEffectAdjust[0.9, 1.1, 0.004, _postProcessColour, [0,0,0,1],[0,0,0,0]]; GVAR(PostProcess) ppEffectAdjust[0.9, 1.1, 0.004, _postProcessColour, [0,0,0,1],[0,0,0,0]];
GVAR(PostProcess) ppEffectCommit 0; GVAR(PostProcess) ppEffectCommit 0;
GVAR(PostProcess) ppEffectEnable true; GVAR(PostProcess) ppEffectEnable true;
_postProcessColour set [3, _postProcessTintAmount/250]; _postProcessColour set [3, _postProcessTintAmount/250];
GVAR(PostProcess) ppEffectAdjust[0.9, 1.1, 0.004, _postProcessColour, [0,0,0,1],[0,0,0,0]]; GVAR(PostProcess) ppEffectAdjust[0.9, 1.1, 0.004, _postProcessColour, [0,0,0,1],[0,0,0,0]];
GVAR(PostProcess) ppEffectCommit 30; GVAR(PostProcess) ppEffectCommit 30;
}; };
_glassImagePath = getText(configFile >> "CfgGlasses" >> _glassesClassname >> "ACE_Overlay"); _glassImagePath = getText(configFile >> "CfgGlasses" >> _glassesClassname >> "ACE_Overlay");
if GETBROKEN then { if GETBROKEN then {
_glassImagePath = getText(configFile >> "CfgGlasses" >> _glassesClassname >> "ACE_OverlayCracked"); _glassImagePath = getText(configFile >> "CfgGlasses" >> _glassesClassname >> "ACE_OverlayCracked");
}; };
if (_glassImagePath != "") then { if (_glassImagePath != "") then {
150 cutRsc["RscACE_Goggles", "PLAIN",1, false]; 150 cutRsc["RscACE_Goggles", "PLAIN",1, false];
(GLASSDISPLAY displayCtrl 10650) ctrlSetText _glassImagePath; (GLASSDISPLAY displayCtrl 10650) ctrlSetText _glassImagePath;
}; };
if GETDIRT then { if GETDIRT then {
call FUNC(applyDirtEffect); call FUNC(applyDirtEffect);
}; };
if GETDUSTT(DACTIVE) then { if GETDUSTT(DACTIVE) then {
SETDUST(DAMOUNT,CLAMP(GETDUSTT(DAMOUNT)-1,0,2)); SETDUST(DAMOUNT,CLAMP(GETDUSTT(DAMOUNT)-1,0,2));
call FUNC(applyDust); call FUNC(applyDust);
}; };

View File

@ -17,30 +17,30 @@
#include "script_component.hpp" #include "script_component.hpp"
if (!alive ace_player) exitWith {}; if (!alive ace_player) exitWith {};
if (true) then { if (true) then {
// Detect if curator interface is open and disable effects // Detect if curator interface is open and disable effects
if (!isNull(findDisplay 312)) exitWith { if (!isNull(findDisplay 312)) exitWith {
if (GVAR(EffectsActive)) then { if (GVAR(EffectsActive)) then {
call FUNC(removeGlassesEffect); call FUNC(removeGlassesEffect);
}; };
}; };
call FUNC(checkGlasses); call FUNC(checkGlasses);
if !([ace_player] call FUNC(isGogglesVisible)) exitWith { if !([ace_player] call FUNC(isGogglesVisible)) exitWith {
if (GVAR(EffectsActive)) then { if (GVAR(EffectsActive)) then {
call FUNC(removeGlassesEffect); call FUNC(removeGlassesEffect);
}; };
}; };
if (call FUNC(externalCamera)) exitWith { if (call FUNC(externalCamera)) exitWith {
if (GVAR(EffectsActive)) then { if (GVAR(EffectsActive)) then {
call FUNC(removeGlassesEffect); call FUNC(removeGlassesEffect);
}; };
}; };
if !(GVAR(EffectsActive)) then { if !(GVAR(EffectsActive)) then {
[goggles ace_player] call FUNC(applyGlassesEffect); [goggles ace_player] call FUNC(applyGlassesEffect);
} else { } else {
if ([goggles ace_player] call FUNC(isDivingGoggles) && {underwater ace_player}) then { if ([goggles ace_player] call FUNC(isDivingGoggles) && {underwater ace_player}) then {
call FUNC(removeRainEffect); call FUNC(removeRainEffect);
call FUNC(removeDirtEffect); call FUNC(removeDirtEffect);
call FUNC(removeDustEffect); call FUNC(removeDustEffect);
}; };
}; };
}; };

View File

@ -23,12 +23,12 @@ _effects set [BROKEN, _broken];
SETGLASSES(ace_player,_effects); SETGLASSES(ace_player,_effects);
if ((stance ace_player) != "PRONE") then { if ((stance ace_player) != "PRONE") then {
ace_player playActionNow "gestureWipeFace"; ace_player playActionNow "gestureWipeFace";
}; };
[{ [{
if (cameraView == "INTERNAL") then { if (cameraView == "INTERNAL") then {
addCamShake [5, 1.75, 2]; addCamShake [5, 1.75, 2];
}; };
}, [], 0.3, 0] call EFUNC(common,waitAndExecute); }, [], 0.3, 0] call EFUNC(common,waitAndExecute);
call FUNC(removeDirtEffect); call FUNC(removeDirtEffect);

View File

@ -24,11 +24,11 @@ if (rain > 0.1) exitWith {true};
if ((stance _unit) != "PRONE") exitWith {true}; if ((stance _unit) != "PRONE") exitWith {true};
if (isClass(configFile >> "CfgWeapons" >> _weapon >> "GunParticles" >> "FirstEffect")) then { if (isClass(configFile >> "CfgWeapons" >> _weapon >> "GunParticles" >> "FirstEffect")) then {
_cloudType = getText(configFile >> "CfgWeapons" >> _weapon >> "GunParticles" >> "FirstEffect" >> "effectName"); _cloudType = getText(configFile >> "CfgWeapons" >> _weapon >> "GunParticles" >> "FirstEffect" >> "effectName");
} else { } else {
if (isClass(configFile >> "CfgWeapons" >> _weapon >> "GunParticles" >> "effect1")) then { if (isClass(configFile >> "CfgWeapons" >> _weapon >> "GunParticles" >> "effect1")) then {
_cloudType = getText(configFile >> "CfgWeapons" >> _weapon >> "GunParticles" >> "effect1" >> "effectName"); _cloudType = getText(configFile >> "CfgWeapons" >> _weapon >> "GunParticles" >> "effect1" >> "effectName");
}; };
}; };
if (_cloudType == "") exitWith {true}; if (_cloudType == "") exitWith {true};
@ -49,7 +49,7 @@ if (!_found) exitWith {};
_bullets = GETDUSTT(DBULLETS); _bullets = GETDUSTT(DBULLETS);
if ((diag_tickTime - GETDUSTT(DTIME)) > 1) then { if ((diag_tickTime - GETDUSTT(DTIME)) > 1) then {
_bullets = 0; _bullets = 0;
}; };
_bullets = _bullets + 1; _bullets = _bullets + 1;
@ -57,15 +57,15 @@ SETDUST(DBULLETS,_bullets);
SETDUST(DTIME,diag_tickTime); SETDUST(DTIME,diag_tickTime);
if (GETDUSTT(DAMOUNT) < 2) then { if (GETDUSTT(DAMOUNT) < 2) then {
private "_bulletsRequired"; private "_bulletsRequired";
_bulletsRequired = 100; _bulletsRequired = 100;
if (isNumber (ConfigFile >> _cloudType >> "ACE_Goggles_BulletCount")) then { if (isNumber (ConfigFile >> _cloudType >> "ACE_Goggles_BulletCount")) then {
_bulletsRequired = getNumber (ConfigFile >> _cloudType >> "ACE_Goggles_BulletCount"); _bulletsRequired = getNumber (ConfigFile >> _cloudType >> "ACE_Goggles_BulletCount");
}; };
if (_bulletsRequired <= _bullets) then { if (_bulletsRequired <= _bullets) then {
SETDUST(DACTIVE,true); SETDUST(DACTIVE,true);
call FUNC(applyDust); call FUNC(applyDust);
}; };
}; };
true true

View File

@ -16,10 +16,10 @@
private ["_effectIndex"]; private ["_effectIndex"];
_effectIndex = switch true do { _effectIndex = switch true do {
case (_this <= 0.04): {0}; case (_this <= 0.04): {0};
case (_this <= 0.06): {1}; case (_this <= 0.06): {1};
case (_this <= 0.09): {2}; case (_this <= 0.09): {2};
default {3}; default {3};
}; };
_effectIndex _effectIndex

View File

@ -23,14 +23,14 @@ _result = false;
if ((vehicle _unit) != _unit) exitWith {(cameraView != "GUNNER")}; if ((vehicle _unit) != _unit) exitWith {(cameraView != "GUNNER")};
if (_currentGlasses != "") then { if (_currentGlasses != "") then {
_position =(getPosASLW _unit); _position =(getPosASLW _unit);
if (surfaceIsWater _position && {((_position select 2) < 0.25)}) exitWith { if (surfaceIsWater _position && {((_position select 2) < 0.25)}) exitWith {
_result = ([_currentGlasses] call FUNC(isDivingGoggles)); _result = ([_currentGlasses] call FUNC(isDivingGoggles));
}; };
if (getNumber (ConfigFile >> "CfgGlasses" >> _currentGlasses >> "ACE_Resistance") == 0) exitWith { if (getNumber (ConfigFile >> "CfgGlasses" >> _currentGlasses >> "ACE_Resistance") == 0) exitWith {
_result = false; _result = false;
}; };
_result = !([_currentGlasses] call FUNC(isDivingGoggles)); _result = !([_currentGlasses] call FUNC(isDivingGoggles));
}; };
_result _result

View File

@ -8,8 +8,8 @@
* *
* Return Value: * Return Value:
* <ARRAY>: * <ARRAY>:
* 0: In rotorwash <BOOL> * 0: In rotorwash <BOOL>
* 1: Amount of rotor wash. <NUMBER> * 1: Amount of rotor wash. <NUMBER>
* *
* Example: * Example:
* if (([ace_player, 10] call ace_goggles_fnc_isInRotorWash) select 0) then { hint "Rotor wash"; }; * if (([ace_player, 10] call ace_goggles_fnc_isInRotorWash) select 0) then { hint "Rotor wash"; };
@ -22,25 +22,25 @@ private ["_heli", "_unit", "_result", "_radius"];
_unit = _this select 0; _unit = _this select 0;
_radius = 15; _radius = 15;
if (count _this > 1) then { if (count _this > 1) then {
_radius = _this select 1; _radius = _this select 1;
}; };
_result = [false, _radius + 2]; _result = [false, _radius + 2];
_heli = (getPosATL _unit) nearEntities [["Helicopter"], _radius]; _heli = (getPosATL _unit) nearEntities [["Helicopter"], _radius];
{ {
if !(_x isKindOf "ParachuteBase") then { if !(_x isKindOf "ParachuteBase") then {
if (isEngineOn _x) then { if (isEngineOn _x) then {
private "_distance"; private "_distance";
_distance = (_radius - (_unit distance _x)); _distance = (_radius - (_unit distance _x));
if (_distance != 0) then { if (_distance != 0) then {
_distance = _distance / _radius; _distance = _distance / _radius;
}; };
if (_distance < (_result select 1)) then { if (_distance < (_result select 1)) then {
_result = [true, _distance]; _result = [true, _distance];
}; };
}; };
}; };
false false
} count _heli; } count _heli;
_result _result

View File

@ -17,62 +17,62 @@
if (isNull(ace_player)) exitWith {}; if (isNull(ace_player)) exitWith {};
GVAR(FrameEvent) set [0, !(GVAR(FrameEvent) select 0)]; GVAR(FrameEvent) set [0, !(GVAR(FrameEvent) select 0)];
if (GVAR(FrameEvent) select 0) exitWith { if (GVAR(FrameEvent) select 0) exitWith {
if (vehicle ace_player != ace_player && {!([ace_player] call EFUNC(common,isTurnedOut))}) exitWith {(GVAR(FrameEvent) select 1) set [0, false]; }; if (vehicle ace_player != ace_player && {!([ace_player] call EFUNC(common,isTurnedOut))}) exitWith {(GVAR(FrameEvent) select 1) set [0, false]; };
GVAR(FrameEvent) set [1, ([ace_player] call FUNC(isInRotorWash))]; GVAR(FrameEvent) set [1, ([ace_player] call FUNC(isInRotorWash))];
}; };
private ["_rotorWash","_safe"]; private ["_rotorWash","_safe"];
_rotorWash = GVAR(FrameEvent) select 1; _rotorWash = GVAR(FrameEvent) select 1;
_safe = false; _safe = false;
if !(_rotorWash select 0) exitWith { if !(_rotorWash select 0) exitWith {
if (GVAR(PostProcessEyes_Enabled)) then { if (GVAR(PostProcessEyes_Enabled)) then {
GVAR(PostProcessEyes_Enabled) = false; GVAR(PostProcessEyes_Enabled) = false;
if (GVAR(DustHandler) != -1) then { // should be fixed in dev CBA if (GVAR(DustHandler) != -1) then { // should be fixed in dev CBA
[GVAR(DustHandler)] call CALLSTACK(cba_fnc_removePerFrameHandler); [GVAR(DustHandler)] call CALLSTACK(cba_fnc_removePerFrameHandler);
GVAR(DustHandler) = -1; GVAR(DustHandler) = -1;
}; };
GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0,0,0,0], [0,0,0,1],[1,1,1,0]]; GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0,0,0,0], [0,0,0,1],[1,1,1,0]];
GVAR(PostProcessEyes) ppEffectCommit 2; GVAR(PostProcessEyes) ppEffectCommit 2;
GVAR(DustHandler) = [{ GVAR(DustHandler) = [{
GVAR(PostProcessEyes) ppEffectEnable false; GVAR(PostProcessEyes) ppEffectEnable false;
GVAR(DustHandler) = -1; GVAR(DustHandler) = -1;
}, [], 2, 0.5] call EFUNC(common,waitAndExecute); }, [], 2, 0.5] call EFUNC(common,waitAndExecute);
}; };
}; };
if ((headgear ace_player) != "") then { if ((headgear ace_player) != "") then {
_safe = (getNumber (ConfigFile >> "CfgWeapons" >> (headgear ace_player) >> "ACE_Protection") == 1); _safe = (getNumber (ConfigFile >> "CfgWeapons" >> (headgear ace_player) >> "ACE_Protection") == 1);
}; };
if !(_safe) then { if !(_safe) then {
if !([ace_player] call FUNC(isGogglesVisible)) exitWith{}; if !([ace_player] call FUNC(isGogglesVisible)) exitWith{};
if (GETDUSTT(DAMOUNT) < 2) then { if (GETDUSTT(DAMOUNT) < 2) then {
if (!GETDUSTT(DACTIVE)) then { if (!GETDUSTT(DACTIVE)) then {
SETDUST(DACTIVE,true); SETDUST(DACTIVE,true);
call FUNC(ApplyDust); call FUNC(ApplyDust);
} else { } else {
if ((_rotorWash select 1) > 0.5) then { if ((_rotorWash select 1) > 0.5) then {
call FUNC(ApplyDust); call FUNC(ApplyDust);
}; };
}; };
}; };
_safe = (getNumber (ConfigFile >> "CfgGlasses" >> GVAR(Current) >> "ACE_Protection") == 1); _safe = (getNumber (ConfigFile >> "CfgGlasses" >> GVAR(Current) >> "ACE_Protection") == 1);
}; };
if (_safe) exitWith {}; if (_safe) exitWith {};
if ((_rotorWash select 1) <= 15) then { if ((_rotorWash select 1) <= 15) then {
private "_scale"; private "_scale";
_scale = 0.7; _scale = 0.7;
if ((_rotorWash select 1) != 0) then { if ((_rotorWash select 1) != 0) then {
_scale = CLAMP(0.3*(_rotorWash select 1),0.1,0.3); _scale = CLAMP(0.3*(_rotorWash select 1),0.1,0.3);
} else { } else {
_scale = 0.1; _scale = 0.1;
}; };
_scale = 1 - _scale; _scale = 1 - _scale;
if (GVAR(DustHandler) != -1) then { // should be fixed in dev CBA if (GVAR(DustHandler) != -1) then { // should be fixed in dev CBA
[GVAR(DustHandler)] call CALLSTACK(cba_fnc_removePerFrameHandler); [GVAR(DustHandler)] call CALLSTACK(cba_fnc_removePerFrameHandler);
GVAR(DustHandler) = -1; GVAR(DustHandler) = -1;
}; };
if !(ace_player getVariable ["ACE_EyesDamaged", false]) then { if !(ace_player getVariable ["ACE_EyesDamaged", false]) then {
GVAR(PostProcessEyes_Enabled) = true; GVAR(PostProcessEyes_Enabled) = true;
GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0,0,0,0], [_scale,_scale,_scale,_scale],[1,1,1,0]]; GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0,0,0,0], [_scale,_scale,_scale,_scale],[1,1,1,0]];
GVAR(PostProcessEyes) ppEffectCommit 0.5; GVAR(PostProcessEyes) ppEffectCommit 0.5;
GVAR(PostProcessEyes) ppEffectEnable true; GVAR(PostProcessEyes) ppEffectEnable true;
}; };
}; };

View File

@ -17,37 +17,37 @@
private ["_fnc_underCover"]; private ["_fnc_underCover"];
if (isNull(ace_player) || {!(alive ace_player)}) exitWith {}; if (isNull(ace_player) || {!(alive ace_player)}) exitWith {};
_fnc_underCover = { _fnc_underCover = {
private ["_pos", "_unit"]; private ["_pos", "_unit"];
_unit = (_this select 0); _unit = (_this select 0);
if (vehicle _unit != _unit && {!([_unit] call EFUNC(common,isTurnedOut))}) exitWith {true}; if (vehicle _unit != _unit && {!([_unit] call EFUNC(common,isTurnedOut))}) exitWith {true};
_pos = eyePos _unit; _pos = eyePos _unit;
((positionCameraToWorld [0,0,1] select 2) < ((positionCameraToWorld [0,0,0] select 2) - 0.4)) || {(lineIntersects [_pos, _pos vectorAdd [0,0,15], _unit])} ((positionCameraToWorld [0,0,1] select 2) < ((positionCameraToWorld [0,0,0] select 2) - 0.4)) || {(lineIntersects [_pos, _pos vectorAdd [0,0,15], _unit])}
}; };
if (!isNull(findDisplay 312)) exitWith { if (!isNull(findDisplay 312)) exitWith {
if (GVAR(RainActive)) then { if (GVAR(RainActive)) then {
call FUNC(RemoveRainEffect); call FUNC(RemoveRainEffect);
}; };
}; };
// Ignore if ace_player is under water // Ignore if ace_player is under water
if (!GVAR(EffectsActive) || {underwater ace_player}) exitWith{call FUNC(RemoveRainEffect);}; if (!GVAR(EffectsActive) || {underwater ace_player}) exitWith{call FUNC(RemoveRainEffect);};
if (GVAR(RainLastLevel) != rain) then { if (GVAR(RainLastLevel) != rain) then {
call FUNC(RemoveRainEffect); call FUNC(RemoveRainEffect);
GVAR(RainLastLevel) = rain; GVAR(RainLastLevel) = rain;
// Rain is happening // Rain is happening
if (GVAR(RainLastLevel) > 0.05 && {!([ace_player] call _fnc_underCover)}) then { if (GVAR(RainLastLevel) > 0.05 && {!([ace_player] call _fnc_underCover)}) then {
GVAR(RainActive) = true; GVAR(RainActive) = true;
GVAR(RainDrops) = "#particlesource" createVehicleLocal GetPos ace_player; GVAR(RainDrops) = "#particlesource" createVehicleLocal GetPos ace_player;
GVAR(RainDrops) setParticleClass "ACERainEffect"; GVAR(RainDrops) setParticleClass "ACERainEffect";
GVAR(RainDrops) setDropInterval (0.07 * (1.1 - GVAR(RainLastLevel))); GVAR(RainDrops) setDropInterval (0.07 * (1.1 - GVAR(RainLastLevel)));
GVAR(RainDrops) attachTo [vehicle ace_player,[0,0,0]]; GVAR(RainDrops) attachTo [vehicle ace_player,[0,0,0]];
}; };
}else{ }else{
if (GVAR(RainLastLevel) > 0.05) then { if (GVAR(RainLastLevel) > 0.05) then {
if (GVAR(RainActive) && {[ace_player] call _fnc_underCover}) exitWith { if (GVAR(RainActive) && {[ace_player] call _fnc_underCover}) exitWith {
call FUNC(RemoveRainEffect); call FUNC(RemoveRainEffect);
}; };
if (!GVAR(RainActive)) then { if (!GVAR(RainActive)) then {
GVAR(RainLastLevel) = -1; GVAR(RainLastLevel) = -1;
}; };
}; };
}; };

View File

@ -15,5 +15,5 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
if (!isNull(GETUVAR(GVAR(DisplayEffects),displayNull))) then { if (!isNull(GETUVAR(GVAR(DisplayEffects),displayNull))) then {
(GETUVAR(GVAR(DisplayEffects),displayNull) displayCtrl 10660) ctrlSetText ""; (GETUVAR(GVAR(DisplayEffects),displayNull) displayCtrl 10660) ctrlSetText "";
}; };

View File

@ -15,5 +15,5 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
if (!isNull(GETUVAR(GVAR(DisplayEffects),displayNull))) then { if (!isNull(GETUVAR(GVAR(DisplayEffects),displayNull))) then {
(GETUVAR(GVAR(DisplayEffects),displayNull) displayCtrl 10662) ctrlSetText ""; (GETUVAR(GVAR(DisplayEffects),displayNull) displayCtrl 10662) ctrlSetText "";
}; };

View File

@ -1,7 +1,7 @@
/* /*
* Author: Garth 'L-H' de Wet * Author: Garth 'L-H' de Wet
* Removes the glasses effect from the screen, removes dirt effect, removes rain effect, * Removes the glasses effect from the screen, removes dirt effect, removes rain effect,
* removes dust effect. Does not reset array (glasses will still be broken, dirty, ect.) * removes dust effect. Does not reset array (glasses will still be broken, dirty, ect.)
* *
* Arguments: * Arguments:
* None * None
@ -19,7 +19,7 @@ GVAR(EffectsActive) = false;
GVAR(PostProcess) ppEffectEnable false; GVAR(PostProcess) ppEffectEnable false;
if (!isNull(GLASSDISPLAY)) then { if (!isNull(GLASSDISPLAY)) then {
GLASSDISPLAY closeDisplay 0; GLASSDISPLAY closeDisplay 0;
}; };
call FUNC(removeDirtEffect); call FUNC(removeDirtEffect);

View File

@ -15,7 +15,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
if (!isNull (GVAR(RainDrops))) then { if (!isNull (GVAR(RainDrops))) then {
deleteVehicle (GVAR(RainDrops)); deleteVehicle (GVAR(RainDrops));
}; };
GVAR(RainActive) = false; GVAR(RainActive) = false;
GVAR(RainLastLevel) = 0; GVAR(RainLastLevel) = 0;

View File

@ -2,11 +2,11 @@
#include "\z\ace\Addons\main\script_mod.hpp" #include "\z\ace\Addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_HEARING #ifdef DEBUG_ENABLED_HEARING
#define DEBUG_MODE_FULL #define DEBUG_MODE_FULL
#endif #endif
#ifdef DEBUG_SETTINGS_HEARING #ifdef DEBUG_SETTINGS_HEARING
#define DEBUG_SETTINGS DEBUG_SETTINGS_HEARING #define DEBUG_SETTINGS DEBUG_SETTINGS_HEARING
#endif #endif
#include "\z\ace\Addons\main\script_macros.hpp" #include "\z\ace\Addons\main\script_macros.hpp"

View File

@ -19,9 +19,9 @@ for [{_i = 0},{_i < (count _this) - 1},{_i = _i + 1}] do {
_parentPath pushBack (_this select _i); _parentPath pushBack (_this select _i);
}; };
_actionName = if (count _this > 0) then { _actionName = if (count _this > 0) then {
_this select ((count _this) - 1); _this select ((count _this) - 1);
} else { } else {
"" ""
}; };
[_parentPath, _actionName] [_parentPath, _actionName]

View File

@ -1,19 +1,19 @@
/* /*
Author: Garth de Wet (LH) Author: Garth de Wet (LH)
Description: Description:
Adds an item to the select menu Adds an item to the select menu
Parameters: Parameters:
0: ARRAY/NUMBER - List container 0: ARRAY/NUMBER - List container
1: String - Display Name 1: String - Display Name
2: String - Picture 2: String - Picture
3: String/code - data 3: String/code - data
Returns: Returns:
ARRAY/Number ARRAY/Number
Example: Example:
*/ */
#include "script_component.hpp" #include "script_component.hpp"
@ -26,7 +26,7 @@ _picture = _this select 2;
_data = _this select 3; _data = _this select 3;
if (_picture == "" || _picture == "PictureThing") then { if (_picture == "" || _picture == "PictureThing") then {
_picture = QUOTE(PATHTOF(UI\dot_ca.paa)); _picture = QUOTE(PATHTOF(UI\dot_ca.paa));
}; };
_index = lbAdd [_container, _displayName]; _index = lbAdd [_container, _displayName];

View File

@ -1,18 +1,18 @@
/* /*
Author: Garth de Wet (LH) Author: Garth de Wet (LH)
Description: Description:
Depending on the passed value, either scrolls down through the list or up. Depending on the passed value, either scrolls down through the list or up.
Parameters: Parameters:
NUMBER - Amount to increase current interaction target NUMBER - Amount to increase current interaction target
Returns: Returns:
Nothing Nothing
Example: Example:
1 call FUNC(MoveDown); 1 call FUNC(MoveDown);
-1 call FUNC(MoveDown); -1 call FUNC(MoveDown);
*/ */
#include "script_component.hpp" #include "script_component.hpp"
@ -31,27 +31,27 @@ _dlgInteractionDialog = uiNamespace getVariable QGVAR(Flow_Display);
_top = GVAR(SelectedButton) - 2; _top = GVAR(SelectedButton) - 2;
_i = 0; _i = 0;
while {_i <= 4} do { while {_i <= 4} do {
_index =_i + _top; _index =_i + _top;
_ctrl = _dlgInteractionDialog displayCtrl (1200 + _i); _ctrl = _dlgInteractionDialog displayCtrl (1200 + _i);
if (_index >= 0 && {_index <= _count}) then { if (_index >= 0 && {_index <= _count}) then {
_action = GVAR(Buttons) select _index; _action = GVAR(Buttons) select _index;
_ctrl ctrlShow true; _ctrl ctrlShow true;
_ctrl ctrlSetText (_action select 5); _ctrl ctrlSetText (_action select 5);
_color = [1,1,1,1]; _color = [1,1,1,1];
if !([_target, _player] call (_action select 2)) then { if !([_target, _player] call (_action select 2)) then {
_color = [0.3,0.3,0.3,0.8]; _color = [0.3,0.3,0.3,0.8];
}; };
if (_i == 0 || _i == 4) then { if (_i == 0 || _i == 4) then {
_color set [3, 0.5]; _color set [3, 0.5];
}; };
if (_i == 1 || _i == 3) then { if (_i == 1 || _i == 3) then {
_color set [3, 0.75]; _color set [3, 0.75];
}; };
_ctrl ctrlSetTextColor _color; _ctrl ctrlSetTextColor _color;
}else{ }else{
_ctrl ctrlShow false; _ctrl ctrlShow false;
}; };
_i = _i + 1; _i = _i + 1;
}; };
_ctrl = _dlgInteractionDialog displayCtrl 1000; _ctrl = _dlgInteractionDialog displayCtrl 1000;
@ -60,7 +60,7 @@ _ctrl = _dlgInteractionDialog displayCtrl 1100;
_current = (GVAR(Buttons) select GVAR(SelectedButton)); _current = (GVAR(Buttons) select GVAR(SelectedButton));
_infoText = ""; _infoText = "";
if !([_target, _player] call (_current select 2)) then { if !([_target, _player] call (_current select 2)) then {
_infoText = "Unavailable"; _infoText = "Unavailable";
}; };
_ctrl ctrlSetText _infoText; _ctrl ctrlSetText _infoText;
_ctrl ctrlShow (_infoText != ""); _ctrl ctrlShow (_infoText != "");

View File

@ -13,12 +13,12 @@ _dlgInteractionDialog = uiNamespace getVariable QGVAR(Dialog);
/* /*
for "_a" from 0 to (_count - 1) do { for "_a" from 0 to (_count - 1) do {
_action = GVAR(Buttons) select _a; _action = GVAR(Buttons) select _a;
_ctrlInteractionDialog = _dlgInteractionDialog displayCtrl (10 + _a); _ctrlInteractionDialog = _dlgInteractionDialog displayCtrl (10 + _a);
_ctrlInteractionDialog ctrlShow true; _ctrlInteractionDialog ctrlShow true;
_ctrlInteractionDialog ctrlSetText (_action select 0); _ctrlInteractionDialog ctrlSetText (_action select 0);
_ctrlInteractionDialog ctrlEnable (call (_action select 2)); _ctrlInteractionDialog ctrlEnable (call (_action select 2));
}; };
*/ */
@ -27,27 +27,27 @@ _ctrlInteractionDialog = _dlgInteractionDialog displayCtrl 3;
GVAR(MainButton) = "(findDisplay 1713999) closeDisplay 1;"; GVAR(MainButton) = "(findDisplay 1713999) closeDisplay 1;";
if (_object isKindOf "Man") then { if (_object isKindOf "Man") then {
_ctrlInteractionDialog ctrlSetText (if (alive _object) then {name _object} else {_object getVariable ["ACE_Name", "Unknown"]}); _ctrlInteractionDialog ctrlSetText (if (alive _object) then {name _object} else {_object getVariable ["ACE_Name", "Unknown"]});
} else { } else {
_ctrlInteractionDialog ctrlSetText (getText (configFile >> "CfgVehicles" >> typeOf _object >> "displayName")); _ctrlInteractionDialog ctrlSetText (getText (configFile >> "CfgVehicles" >> typeOf _object >> "displayName"));
}; };
for "_index" from 0 to 9 do { for "_index" from 0 to 9 do {
_ctrlInteractionDialog = _dlgInteractionDialog displayCtrl (10 + _index); _ctrlInteractionDialog = _dlgInteractionDialog displayCtrl (10 + _index);
_ctrlInteractionDialog ctrlShow true; _ctrlInteractionDialog ctrlShow true;
_ctrlInteractionDialogIcon = _dlgInteractionDialog displayCtrl (20 + _index); _ctrlInteractionDialogIcon = _dlgInteractionDialog displayCtrl (20 + _index);
if (_index < _count) then { if (_index < _count) then {
_action = GVAR(Buttons) select _index; _action = GVAR(Buttons) select _index;
_ctrlInteractionDialog ctrlSetText (_action select 0); _ctrlInteractionDialog ctrlSetText (_action select 0);
_ctrlInteractionDialog ctrlEnable (call (_action select 2)); _ctrlInteractionDialog ctrlEnable (call (_action select 2));
_ctrlInteractionDialogIcon ctrlSetText (_action select 5); _ctrlInteractionDialogIcon ctrlSetText (_action select 5);
} else { } else {
_ctrlInteractionDialog ctrlSetText ""; _ctrlInteractionDialog ctrlSetText "";
_ctrlInteractionDialog ctrlEnable false; _ctrlInteractionDialog ctrlEnable false;
_ctrlInteractionDialogIcon ctrlSetText ""; _ctrlInteractionDialogIcon ctrlSetText "";
}; };
}; };

View File

@ -7,101 +7,101 @@ _house = _this select 0;
_door = _this select 1; _door = _this select 1;
_index = [ _index = [
"door_1", "door_1",
"door_2", "door_2",
"door_3", "door_3",
"door_4", "door_4",
"door_5", "door_5",
"door_6", "door_6",
"door_7", "door_7",
"door_8", "door_8",
"door_9", "door_9",
"door_10", "door_10",
"door_11", "door_11",
"door_12", "door_12",
"door_13", "door_13",
"Door_14", "Door_14",
"door_15", "door_15",
"door_16", "door_16",
"door_17", "door_17",
"door_18", "door_18",
"door_19", "door_19",
"door_20", "door_20",
"door_21", "door_21",
"door_22", "door_22",
"hatch_1", "hatch_1",
"hatch_2", "hatch_2",
"hatch_3", "hatch_3",
"hatch_4", "hatch_4",
"hatch_5", "hatch_5",
"hatch_6" "hatch_6"
] find toLower _door; ] find toLower _door;
if (_index == -1) exitWith {[[],""]}; if (_index == -1) exitWith {[[],""]};
_animations = [ _animations = [
["Door_1_rot", "Door_Handle_1_rot_1", "Door_Handle_1_rot_2"], ["Door_1_rot", "Door_Handle_1_rot_1", "Door_Handle_1_rot_2"],
["Door_2_rot", "Door_Handle_2_rot_1", "Door_Handle_2_rot_2"], ["Door_2_rot", "Door_Handle_2_rot_1", "Door_Handle_2_rot_2"],
["Door_3_rot", "Door_Handle_3_rot_1", "Door_Handle_3_rot_2"], ["Door_3_rot", "Door_Handle_3_rot_1", "Door_Handle_3_rot_2"],
["Door_4_rot", "Door_Handle_4_rot_1", "Door_Handle_4_rot_2"], ["Door_4_rot", "Door_Handle_4_rot_1", "Door_Handle_4_rot_2"],
["Door_5_rot", "Door_Handle_5_rot_1", "Door_Handle_5_rot_2"], ["Door_5_rot", "Door_Handle_5_rot_1", "Door_Handle_5_rot_2"],
["Door_6_rot", "Door_Handle_6_rot_1", "Door_Handle_6_rot_2"], ["Door_6_rot", "Door_Handle_6_rot_1", "Door_Handle_6_rot_2"],
["Door_7_rot", "Door_Handle_7_rot_1", "Door_Handle_7_rot_2"], ["Door_7_rot", "Door_Handle_7_rot_1", "Door_Handle_7_rot_2"],
["Door_8_rot", "Door_Handle_8_rot_1", "Door_Handle_8_rot_2"], ["Door_8_rot", "Door_Handle_8_rot_1", "Door_Handle_8_rot_2"],
["Door_9_rot", "Door_Handle_9_rot_1", "Door_Handle_9_rot_2"], ["Door_9_rot", "Door_Handle_9_rot_1", "Door_Handle_9_rot_2"],
["Door_10_rot", "Door_Handle_10_rot_1", "Door_Handle_10_rot_2"], ["Door_10_rot", "Door_Handle_10_rot_1", "Door_Handle_10_rot_2"],
["Door_11_rot", "Door_Handle_11_rot_1", "Door_Handle_11_rot_2"], ["Door_11_rot", "Door_Handle_11_rot_1", "Door_Handle_11_rot_2"],
["Door_12_rot", "Door_Handle_12_rot_1", "Door_Handle_12_rot_2"], ["Door_12_rot", "Door_Handle_12_rot_1", "Door_Handle_12_rot_2"],
["Door_13_rot", "Door_Handle_13_rot_1", "Door_Handle_13_rot_2"], ["Door_13_rot", "Door_Handle_13_rot_1", "Door_Handle_13_rot_2"],
["Door_14_rot", "Door_Handle_14_rot_1", "Door_Handle_14_rot_2"], ["Door_14_rot", "Door_Handle_14_rot_1", "Door_Handle_14_rot_2"],
["Door_15_rot", "Door_Handle_15_rot_1", "Door_Handle_15_rot_2"], ["Door_15_rot", "Door_Handle_15_rot_1", "Door_Handle_15_rot_2"],
["Door_16_rot", "Door_Handle_16_rot_1", "Door_Handle_16_rot_2"], ["Door_16_rot", "Door_Handle_16_rot_1", "Door_Handle_16_rot_2"],
["Door_17_rot", "Door_Handle_17_rot_1", "Door_Handle_17_rot_2"], ["Door_17_rot", "Door_Handle_17_rot_1", "Door_Handle_17_rot_2"],
["Door_18_rot", "Door_Handle_18_rot_1", "Door_Handle_18_rot_2"], ["Door_18_rot", "Door_Handle_18_rot_1", "Door_Handle_18_rot_2"],
["Door_19_rot", "Door_Handle_19_rot_1", "Door_Handle_19_rot_2"], ["Door_19_rot", "Door_Handle_19_rot_1", "Door_Handle_19_rot_2"],
["Door_20_rot", "Door_Handle_20_rot_1", "Door_Handle_20_rot_2"], ["Door_20_rot", "Door_Handle_20_rot_1", "Door_Handle_20_rot_2"],
["Door_21_rot", "Door_Handle_21_rot_1", "Door_Handle_21_rot_2"], ["Door_21_rot", "Door_Handle_21_rot_1", "Door_Handle_21_rot_2"],
["Door_22_rot", "Door_Handle_22_rot_1", "Door_Handle_22_rot_2"], ["Door_22_rot", "Door_Handle_22_rot_1", "Door_Handle_22_rot_2"],
["Hatch_1_rot"], ["Hatch_1_rot"],
["Hatch_2_rot"], ["Hatch_2_rot"],
["Hatch_3_rot"], ["Hatch_3_rot"],
["Hatch_4_rot"], ["Hatch_4_rot"],
["Hatch_5_rot"], ["Hatch_5_rot"],
["Hatch_6_rot"] ["Hatch_6_rot"]
] select _index; ] select _index;
_lockedVariable = [ _lockedVariable = [
["BIS_Disabled_Door_1", "Door_Handle_1_rot_1", "Door_Locked_1_rot"], ["BIS_Disabled_Door_1", "Door_Handle_1_rot_1", "Door_Locked_1_rot"],
["BIS_Disabled_Door_2", "Door_Handle_2_rot_1", "Door_Locked_2_rot"], ["BIS_Disabled_Door_2", "Door_Handle_2_rot_1", "Door_Locked_2_rot"],
["BIS_Disabled_Door_3", "Door_Handle_3_rot_1", "Door_Locked_3_rot"], ["BIS_Disabled_Door_3", "Door_Handle_3_rot_1", "Door_Locked_3_rot"],
["BIS_Disabled_Door_4", "Door_Handle_4_rot_1", "Door_Locked_4_rot"], ["BIS_Disabled_Door_4", "Door_Handle_4_rot_1", "Door_Locked_4_rot"],
["BIS_Disabled_Door_5", "Door_Handle_5_rot_1", "Door_Locked_5_rot"], ["BIS_Disabled_Door_5", "Door_Handle_5_rot_1", "Door_Locked_5_rot"],
["BIS_Disabled_Door_6", "Door_Handle_6_rot_1", "Door_Locked_6_rot"], ["BIS_Disabled_Door_6", "Door_Handle_6_rot_1", "Door_Locked_6_rot"],
["BIS_Disabled_Door_7", "Door_Handle_7_rot_1", "Door_Locked_7_rot"], ["BIS_Disabled_Door_7", "Door_Handle_7_rot_1", "Door_Locked_7_rot"],
["BIS_Disabled_Door_8", "Door_Handle_8_rot_1", "Door_Locked_8_rot"], ["BIS_Disabled_Door_8", "Door_Handle_8_rot_1", "Door_Locked_8_rot"],
["BIS_Disabled_Door_9", "Door_Handle_9_rot_1", "Door_Locked_9_rot"], ["BIS_Disabled_Door_9", "Door_Handle_9_rot_1", "Door_Locked_9_rot"],
["BIS_Disabled_Door_10", "Door_Handle_10_rot_1", "Door_Locked_10_rot"], ["BIS_Disabled_Door_10", "Door_Handle_10_rot_1", "Door_Locked_10_rot"],
["BIS_Disabled_Door_11", "Door_Handle_11_rot_1", "Door_Locked_11_rot"], ["BIS_Disabled_Door_11", "Door_Handle_11_rot_1", "Door_Locked_11_rot"],
["BIS_Disabled_Door_12", "Door_Handle_12_rot_1", "Door_Locked_12_rot"], ["BIS_Disabled_Door_12", "Door_Handle_12_rot_1", "Door_Locked_12_rot"],
["BIS_Disabled_Door_13", "Door_Handle_13_rot_1", "Door_Locked_13_rot"], ["BIS_Disabled_Door_13", "Door_Handle_13_rot_1", "Door_Locked_13_rot"],
["BIS_Disabled_Door_14", "Door_Handle_14_rot_1", "Door_Locked_14_rot"], ["BIS_Disabled_Door_14", "Door_Handle_14_rot_1", "Door_Locked_14_rot"],
["BIS_Disabled_Door_15", "Door_Handle_15_rot_1", "Door_Locked_15_rot"], ["BIS_Disabled_Door_15", "Door_Handle_15_rot_1", "Door_Locked_15_rot"],
["BIS_Disabled_Door_16", "Door_Handle_16_rot_1", "Door_Locked_16_rot"], ["BIS_Disabled_Door_16", "Door_Handle_16_rot_1", "Door_Locked_16_rot"],
["BIS_Disabled_Door_17", "Door_Handle_17_rot_1", "Door_Locked_17_rot"], ["BIS_Disabled_Door_17", "Door_Handle_17_rot_1", "Door_Locked_17_rot"],
["BIS_Disabled_Door_18", "Door_Handle_18_rot_1", "Door_Locked_18_rot"], ["BIS_Disabled_Door_18", "Door_Handle_18_rot_1", "Door_Locked_18_rot"],
["BIS_Disabled_Door_19", "Door_Handle_19_rot_1", "Door_Locked_19_rot"], ["BIS_Disabled_Door_19", "Door_Handle_19_rot_1", "Door_Locked_19_rot"],
["BIS_Disabled_Door_20", "Door_Handle_20_rot_1", "Door_Locked_20_rot"], ["BIS_Disabled_Door_20", "Door_Handle_20_rot_1", "Door_Locked_20_rot"],
["BIS_Disabled_Door_21", "Door_Handle_21_rot_1", "Door_Locked_21_rot"], ["BIS_Disabled_Door_21", "Door_Handle_21_rot_1", "Door_Locked_21_rot"],
["BIS_Disabled_Door_22", "Door_Handle_22_rot_1", "Door_Locked_22_rot"], ["BIS_Disabled_Door_22", "Door_Handle_22_rot_1", "Door_Locked_22_rot"],
["", ""], ["", ""],
["", ""], ["", ""],
["", ""], ["", ""],
["", ""], ["", ""],
["", ""], ["", ""],
["", ""] ["", ""]
] select _index; ] select _index;
[_animations, _lockedVariable] [_animations, _lockedVariable]

View File

@ -1,17 +1,17 @@
/* /*
Author: Garth de Wet (LH) Author: Garth de Wet (LH)
Description: Description:
Closes the Interaction menu Closes the Interaction menu
Parameters: Parameters:
Nothing Nothing
Returns: Returns:
Nothing Nothing
Example: Example:
call FUNC(hideMenu); call FUNC(hideMenu);
*/ */
#include "script_component.hpp" #include "script_component.hpp"

View File

@ -1,18 +1,18 @@
/* /*
Author(s): Author(s):
Garth de Wet (LH) Garth de Wet (LH)
Description: Description:
Hides the interaction helper text with the mouse buttons at the bottom middle of the screen Hides the interaction helper text with the mouse buttons at the bottom middle of the screen
Parameters: Parameters:
Nothing Nothing
Returns: Returns:
Nothing Nothing
Example: Example:
call FUNC(hideMouseHint); call FUNC(hideMouseHint);
*/ */
#include "script_component.hpp" #include "script_component.hpp"

View File

@ -43,8 +43,8 @@ _position1 = ATLToASL positionCameraToWorld [0, 0, _distance];
_position1 set [2, (_position1 select 2) - (getTerrainHeightASL _position1 min 0)]; _position1 set [2, (_position1 select 2) - (getTerrainHeightASL _position1 min 0)];
if (_vehicle in lineIntersectsWith [_position0, _position1] || {_player distance _vehicle < _distance}) then { if (_vehicle in lineIntersectsWith [_position0, _position1] || {_player distance _vehicle < _distance}) then {
true true
} else { } else {
["Not in Range"] call FUNC(addToTooltip); ["Not in Range"] call FUNC(addToTooltip);
false false
} }

View File

@ -10,12 +10,12 @@ _unit setVariable [QGVAR(assignedFireTeam), _team, true];
[_unit, format ["{_this assignTeam '%1'}", _team]] call EFUNC(common,execRemoteFnc); [_unit, format ["{_this assignTeam '%1'}", _team]] call EFUNC(common,execRemoteFnc);
if (_unit == ACE_player) then { if (_unit == ACE_player) then {
_message = if (_team == "MAIN") then { _message = if (_team == "MAIN") then {
localize "STR_ACE_Interaction_LeftTeam"; localize "STR_ACE_Interaction_LeftTeam";
} else { } else {
_team = localize format ["STR_ACE_Interaction_Team%1", _team]; _team = localize format ["STR_ACE_Interaction_Team%1", _team];
format [localize "STR_ACE_Interaction_JoinedTeam", _team]; format [localize "STR_ACE_Interaction_JoinedTeam", _team];
}; };
[_message] call EFUNC(common,displayTextStructured); [_message] call EFUNC(common,displayTextStructured);
}; };

View File

@ -11,9 +11,9 @@ _count = count GVAR(Buttons);
_index = call FUNC(getSelectedButton); _index = call FUNC(getSelectedButton);
_action = if (_index != -1 && {_index < _count}) then { _action = if (_index != -1 && {_index < _count}) then {
GVAR(Buttons) select _index GVAR(Buttons) select _index
} else { } else {
["", {}, {false}, 0, [], "", "", {false}, [], 0] ["", {}, {false}, 0, [], "", "", {false}, [], 0]
}; };
(findDisplay 1713999) closeDisplay 1; (findDisplay 1713999) closeDisplay 1;
@ -28,5 +28,5 @@ _exceptions = _action select 8;//
_distance = _action select 9; _distance = _action select 9;
if ((_distance == 0 || {[GVAR(Target), _distance] call FUNC(isInRange)}) && {[_target, _player] call _condition} && {[_target, _player] call _conditionShow}) then { if ((_distance == 0 || {[GVAR(Target), _distance] call FUNC(isInRange)}) && {[_target, _player] call _condition} && {[_target, _player] call _conditionShow}) then {
[_target, _player] call _statement; [_target, _player] call _statement;
}; };

View File

@ -10,35 +10,35 @@ _count = count GVAR(Buttons);
_index = _this; _index = _this;
_action = if (_index != -1 && {_index < _count}) then { _action = if (_index != -1 && {_index < _count}) then {
GVAR(Buttons) select _index GVAR(Buttons) select _index
} else { } else {
["", {}, {false}, 0, [], "", "", {false}, [], 0] ["", {}, {false}, 0, [], "", "", {false}, [], 0]
}; };
_subMenu = _action select 4; _subMenu = _action select 4;
// back // back
if (_index == -1) exitWith { if (_index == -1) exitWith {
call GVAR(MainButton); call GVAR(MainButton);
}; };
if (count _subMenu < 2) then { if (count _subMenu < 2) then {
(findDisplay 1713999) closeDisplay 1; (findDisplay 1713999) closeDisplay 1;
closeDialog 0; closeDialog 0;
_statement = _action select 1; _statement = _action select 1;
_condition = _action select 2; _condition = _action select 2;
_conditionShow = _action select 7; _conditionShow = _action select 7;
_exceptions = _action select 8;// _exceptions = _action select 8;//
_distance = _action select 9; _distance = _action select 9;
if ((_distance == 0 || {[GVAR(Target), _distance] call FUNC(isInRange)}) && {[_target, _player] call _condition} && {[_target, _player] call _conditionShow}) then { if ((_distance == 0 || {[GVAR(Target), _distance] call FUNC(isInRange)}) && {[_target, _player] call _condition} && {[_target, _player] call _conditionShow}) then {
[_target, _player] call _statement; [_target, _player] call _statement;
}; };
} else { } else {
if (_subMenu select 1 < 1) then { if (_subMenu select 1 < 1) then {
[_subMenu select 0] call FUNC(openSubMenu); [_subMenu select 0] call FUNC(openSubMenu);
} else { } else {
[_subMenu select 0] call FUNC(openSubMenuSelf); [_subMenu select 0] call FUNC(openSubMenuSelf);
}; };
}; };

View File

@ -18,40 +18,40 @@ _animations = _animations select 0;
if (count _animations == 0) exitWith {}; if (count _animations == 0) exitWith {};
if (_house animationPhase (_animations select 0) <= 0 && {_house getVariable [_lockedVariable select 0, 0] == 1}) exitWith { if (_house animationPhase (_animations select 0) <= 0 && {_house getVariable [_lockedVariable select 0, 0] == 1}) exitWith {
_lockedVariable set [0, _house]; _lockedVariable set [0, _house];
_lockedVariable spawn compile preprocessFileLineNumbers "\A3\Structures_F\scripts\LockedDoor_open.sqf"; _lockedVariable spawn compile preprocessFileLineNumbers "\A3\Structures_F\scripts\LockedDoor_open.sqf";
}; };
GVAR(isOpeningDoor) = true; GVAR(isOpeningDoor) = true;
playSound "ACE_Sound_Click"; playSound "ACE_Sound_Click";
[_house, _animations] spawn { [_house, _animations] spawn {
_house = _this select 0; _house = _this select 0;
_animations = _this select 1; _animations = _this select 1;
_phase = _house animationPhase (_animations select 0); _phase = _house animationPhase (_animations select 0);
_position = getPosASL ACE_player; _position = getPosASL ACE_player;
_time = time + 0.2; _time = time + 0.2;
_usedMouseWheel = false; _usedMouseWheel = false;
waitUntil { waitUntil {
if (inputAction "PrevAction" > 0 || {inputAction "NextAction" > 0}) then { if (inputAction "PrevAction" > 0 || {inputAction "NextAction" > 0}) then {
_usedMouseWheel = true; _usedMouseWheel = true;
}; };
_phase = _phase + (inputAction "PrevAction" / 12) min 1; _phase = _phase + (inputAction "PrevAction" / 12) min 1;
_phase = _phase - (inputAction "NextAction" / 12) max 0; _phase = _phase - (inputAction "NextAction" / 12) max 0;
{_house animate [_x, _phase]} forEach _animations; {_house animate [_x, _phase]} forEach _animations;
!GVAR(isOpeningDoor) || {getPosASL ACE_player distance _position > 1} !GVAR(isOpeningDoor) || {getPosASL ACE_player distance _position > 1}
}; };
if (!_usedMouseWheel && {time < _time} && {[ACE_player, objNull, []] call EFUNC(common,canInteractWith)}) then { if (!_usedMouseWheel && {time < _time} && {[ACE_player, objNull, []] call EFUNC(common,canInteractWith)}) then {
_phase = [0, 1] select (_house animationPhase (_animations select 0) < 0.5); _phase = [0, 1] select (_house animationPhase (_animations select 0) < 0.5);
{_house animate [_x, _phase]} forEach _animations; {_house animate [_x, _phase]} forEach _animations;
}; };
GVAR(isOpeningDoor) = false; GVAR(isOpeningDoor) = false;
}; };

View File

@ -1,43 +1,43 @@
/* /*
Author: Garth de Wet (LH) Author: Garth de Wet (LH)
Description: Description:
Opens the select menu UI and sets up the UI Opens the select menu UI and sets up the UI
Parameters: Parameters:
0: ARRAY - items 0: ARRAY - items
ARRAY ARRAY
0 = Text 0 = Text
1 = statement to execute 1 = statement to execute
2 = condition before execute 2 = condition before execute
3 = showDisabled 3 = showDisabled
4 = priority 4 = priority
5 = icon 5 = icon
6 = extra variables. Passed to the code. 6 = extra variables. Passed to the code.
1: Code - select action 1: Code - select action
2: Code - Cancel Action 2: Code - Cancel Action
Returns: Returns:
Nothing Nothing
Example: Example:
*/ */
#include "script_component.hpp" #include "script_component.hpp"
if (!(profileNamespace getVariable [QGVAR(FlowMenu), false])) then { if (!(profileNamespace getVariable [QGVAR(FlowMenu), false])) then {
GVAR(SelectAccept) = _this select 1; GVAR(SelectAccept) = _this select 1;
GVAR(SelectCancel) = _this select 2; GVAR(SelectCancel) = _this select 2;
buttonSetAction [8855, QUOTE( call GVAR(SelectCancel); )]; // cancel buttonSetAction [8855, QUOTE( call GVAR(SelectCancel); )]; // cancel
buttonSetAction [8860, QUOTE( (call compile (lbData [ARR_2(8866, lbCurSel 8866)])) call GVAR(SelectAccept); )]; // accept buttonSetAction [8860, QUOTE( (call compile (lbData [ARR_2(8866, lbCurSel 8866)])) call GVAR(SelectAccept); )]; // accept
lbSetCurSel [8866, 0]; lbSetCurSel [8866, 0];
}else{ }else{
_customActions = _this select 0; _customActions = _this select 0;
_count = count _customActions; _count = count _customActions;
if (_count == 0) exitWith {}; if (_count == 0) exitWith {};
_customActions call FUNC(sortOptionsByPriority); _customActions call FUNC(sortOptionsByPriority);
for "_i" from 0 to _count -1 do { for "_i" from 0 to _count -1 do {
_action = _customActions select _i; _action = _customActions select _i;
_action set [1, (_this select 1)]; _action set [1, (_this select 1)];
}; };
GVAR(Buttons) = _customActions; GVAR(Buttons) = _customActions;
[(_this select 2), true, true, false, ACE_player] call FUNC(initialiseInteraction); [(_this select 2), true, true, false, ACE_player] call FUNC(initialiseInteraction);
}; };

View File

@ -1,18 +1,18 @@
/* /*
Author: Garth de Wet (LH) Author: Garth de Wet (LH)
Description: Description:
Prepares the select menu for use. Prepares the select menu for use.
Parameters: Parameters:
0: TEXT - Header text 0: TEXT - Header text
1: TEXT - Approve button text 1: TEXT - Approve button text
Returns: Returns:
ARRAY/NUMBER - container object for use with AddSelectableItem. ARRAY/NUMBER - container object for use with AddSelectableItem.
Example: Example:
["Select Explosive", "Place"] call FUNC(prepareSelectMenu); ["Select Explosive", "Place"] call FUNC(prepareSelectMenu);
*/ */
#include "script_component.hpp" #include "script_component.hpp"
@ -21,7 +21,7 @@ closeDialog 0;
_header = _this select 0; _header = _this select 0;
_buttonText = _this select 1; _buttonText = _this select 1;
if (isNil "_buttonText" or {_buttonText == ""}) then { if (isNil "_buttonText" or {_buttonText == ""}) then {
_buttonText = localize "STR_ACE_Interaction_MakeSelection"; _buttonText = localize "STR_ACE_Interaction_MakeSelection";
}; };
createDialog "RscACE_SelectAnItem"; createDialog "RscACE_SelectAnItem";
ctrlSetText [8860, _buttonText]; ctrlSetText [8860, _buttonText];

View File

@ -2,19 +2,19 @@
#include "script_component.hpp" #include "script_component.hpp"
0 spawn { 0 spawn {
waitUntil {player getVariable ["ACE_Name", ""] != ""}; waitUntil {player getVariable ["ACE_Name", ""] != ""};
_name = player getVariable ["ACE_Name", ""]; _name = player getVariable ["ACE_Name", ""];
_name = toArray _name; _name = toArray _name;
_index = _name find (toArray "]" select 0); _index = _name find (toArray "]" select 0);
if (_index != -1) then { if (_index != -1) then {
for "_index" from 0 to _index do { for "_index" from 0 to _index do {
_name set [_index, -1]; _name set [_index, -1];
}; };
_name = _name - [-1]; _name = _name - [-1];
_name = toString _name; _name = toString _name;
player setVariable ["ACE_Name", _name, true]; player setVariable ["ACE_Name", _name, true];
}; };
}; };

View File

@ -1,20 +1,20 @@
/* /*
Author(s): Author(s):
Garth de Wet (LH) Garth de Wet (LH)
Description: Description:
Shows the interaction helper text with the mouse buttons at the bottom middle of the screen Shows the interaction helper text with the mouse buttons at the bottom middle of the screen
Parameters: Parameters:
0: STRING - Left click text 0: STRING - Left click text
1: STRING - Right click text 1: STRING - Right click text
3: STRING - (Optional) Scroll text 3: STRING - (Optional) Scroll text
Returns: Returns:
Nothing Nothing
Example: Example:
["Place Explosive", "Cancel"] call FUNC(showMouseHint); ["Place Explosive", "Cancel"] call FUNC(showMouseHint);
*/ */
#include "script_component.hpp" #include "script_component.hpp"
@ -25,7 +25,7 @@ _leftClick = _this select 0;
_rightClick = _this select 1; _rightClick = _this select 1;
_scroll = ""; _scroll = "";
if (count _this > 2) then { if (count _this > 2) then {
_scroll = _this select 2; _scroll = _this select 2;
}; };
(QGVAR(InteractionHelper) call BIS_fnc_rscLayer) cutRsc [QGVAR(InteractionHelper), "PLAIN",0.5, false]; (QGVAR(InteractionHelper) call BIS_fnc_rscLayer) cutRsc [QGVAR(InteractionHelper), "PLAIN",0.5, false];
@ -42,13 +42,13 @@ if (isNull _display) exitWith{};
(_display displayCtrl 1201) ctrlShow (_rightClick != ""); (_display displayCtrl 1201) ctrlShow (_rightClick != "");
if (_scroll == "") exitWith { if (_scroll == "") exitWith {
(_display displayCtrl 1002) ctrlShow false; (_display displayCtrl 1002) ctrlShow false;
(_display displayCtrl 1202) ctrlShow false; (_display displayCtrl 1202) ctrlShow false;
(_display displayCtrl 1001) ctrlSetPosition [21 * GUI_GRID_W, 18 * GUI_GRID_H, 8 * GUI_GRID_W, 1.5 * GUI_GRID_H]; (_display displayCtrl 1001) ctrlSetPosition [21 * GUI_GRID_W, 18 * GUI_GRID_H, 8 * GUI_GRID_W, 1.5 * GUI_GRID_H];
(_display displayCtrl 1201) ctrlSetPosition [20 * GUI_GRID_W, 18.5 * GUI_GRID_H, 1 * GUI_GRID_W, 1 * GUI_GRID_H]; (_display displayCtrl 1201) ctrlSetPosition [20 * GUI_GRID_W, 18.5 * GUI_GRID_H, 1 * GUI_GRID_W, 1 * GUI_GRID_H];
(_display displayCtrl 1001) ctrlCommit 0; (_display displayCtrl 1001) ctrlCommit 0;
(_display displayCtrl 1201) ctrlCommit 0; (_display displayCtrl 1201) ctrlCommit 0;
}; };
(_display displayCtrl 1002) ctrlSetText _scroll; (_display displayCtrl 1002) ctrlSetText _scroll;
showHUD false; showHUD false;

View File

@ -8,14 +8,14 @@ _count = count _actions;
_index = 0; _index = 0;
while {_index < _count - 1} do { while {_index < _count - 1} do {
_actionN = + _actions select _index; _actionN = + _actions select _index;
_actionM = + _actions select (_index + 1); _actionM = + _actions select (_index + 1);
if (_actionN select 3 < _actionM select 3) then { if (_actionN select 3 < _actionM select 3) then {
_actions set [_index, _actionM]; _actions set [_index, _actionM];
_actions set [_index + 1, _actionN]; _actions set [_index + 1, _actionN];
_index = 0; _index = 0;
} else { } else {
_index = _index + 1; _index = _index + 1;
}; };
}; };

View File

@ -5,9 +5,9 @@ disableSerialization;
_ctrl = ctrlParent (_this select 0) displayCtrl 40; _ctrl = ctrlParent (_this select 0) displayCtrl 40;
_ctrl ctrlSetPosition [ _ctrl ctrlSetPosition [
(_this select 1) + 0.01 * safezoneW, (_this select 1) + 0.01 * safezoneW,
(_this select 2) + 0.01 * safezoneH, (_this select 2) + 0.01 * safezoneH,
2.0 / 16 * safezoneW, 2.0 / 16 * safezoneW,
0.3 / 9 * safezoneH 0.3 / 9 * safezoneH
]; ];
_ctrl ctrlCommit 0; _ctrl ctrlCommit 0;

View File

@ -2,11 +2,11 @@
#include "\z\ace\Addons\main\script_mod.hpp" #include "\z\ace\Addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_INTERACTION #ifdef DEBUG_ENABLED_INTERACTION
#define DEBUG_MODE_FULL #define DEBUG_MODE_FULL
#endif #endif
#ifdef DEBUG_SETTINGS_INTERACTION #ifdef DEBUG_SETTINGS_INTERACTION
#define DEBUG_SETTINGS DEBUG_SETTINGS_INTERACTION #define DEBUG_SETTINGS DEBUG_SETTINGS_INTERACTION
#endif #endif
#include "\z\ace\Addons\main\script_macros.hpp" #include "\z\ace\Addons\main\script_macros.hpp"

View File

@ -1,35 +1,35 @@
#include "script_dialog_defines.hpp" #include "script_dialog_defines.hpp"
class ACE_ABOUT_DLG { class ACE_ABOUT_DLG {
idd = 114137; idd = 114137;
movingEnable = 0; movingEnable = 0;
onLoad = "with uiNameSpace do { ACE_ABOUT_DLG = _this select 0; };"; onLoad = "with uiNameSpace do { ACE_ABOUT_DLG = _this select 0; };";
onKeyDown = "if((_this select 1) == 1) then {ACE_ABOUT_STP = true;};"; onKeyDown = "if((_this select 1) == 1) then {ACE_ABOUT_STP = true;};";
class controlsBackground { class controlsBackground {
class Contents : RscStructuredText { class Contents : RscStructuredText {
idc = 1141371; idc = 1141371;
colorBackground[] = { 0, 0, 0, 0 }; colorBackground[] = { 0, 0, 0, 0 };
__SX(0.45); __SX(0.45);
__SY(0.25); __SY(0.25);
__SW(0.45); __SW(0.45);
__SH(0.6); __SH(0.6);
size = "0.025 * SafeZoneH"; size = "0.025 * SafeZoneH";
class Attributes { class Attributes {
font = "TahomaB"; font = "TahomaB";
color = "#C8C8C8"; color = "#C8C8C8";
align = "left"; align = "left";
valign = "middle"; valign = "middle";
shadow = true; shadow = true;
shadowColor = "#191970"; shadowColor = "#191970";
size = "1"; size = "1";
}; };
}; };
class ACE_ABOUT_NEXT : ACE_ABOUT_CTRL { //dummy visible class ACE_ABOUT_NEXT : ACE_ABOUT_CTRL { //dummy visible
idc = 1141372; idc = 1141372;
__SX(0.065); __SX(0.065);
__SW(0.03); __SW(0.03);
text = ""; text = "";
action = ""; action = "";
}; };
}; //controlsBackground }; //controlsBackground
}; };

View File

@ -1,8 +1,8 @@
class CfgFactionClasses { class CfgFactionClasses {
class NO_CATEGORY; class NO_CATEGORY;
class ACE: NO_CATEGORY { class ACE: NO_CATEGORY {
displayName = "ACE"; displayName = "ACE";
priority = 2; priority = 2;
side = 7; side = 7;
}; };
}; };

View File

@ -26,184 +26,184 @@ __cr_testers,
]; ];
_pkeynam = { //local function _pkeynam = { //local function
_shift = if (_shift > 0) then {42} else {0}; _shift = if (_shift > 0) then {42} else {0};
_ctrl = if (_ctrl > 0) then {56} else {0}; _ctrl = if (_ctrl > 0) then {56} else {0};
_alt = if (_alt > 0) then {29} else {0}; _alt = if (_alt > 0) then {29} else {0};
_keys = [_shift,_ctrl,_alt,_key]; _keys = [_shift,_ctrl,_alt,_key];
_keystrg = "^"; _keystrg = "^";
{ {
_mod = _x in [42,56,29]; _mod = _x in [42,56,29];
_knaml = call compile format["format['%2',%1]",(keyName _x),"%1"]; _knaml = call compile format["format['%2',%1]",(keyName _x),"%1"];
_knaml = [_knaml, " "] call CBA_fnc_split; _knaml = [_knaml, " "] call CBA_fnc_split;
_knam = "^"; _knam = "^";
{_k = _x; if (!_mod || (_k != (localize "STR_ACE_KN_LEFT") && _k != (localize "STR_ACE_KN_RIGHT"))) then {_knam = _knam + " " + _k}} forEach _knaml; {_k = _x; if (!_mod || (_k != (localize "STR_ACE_KN_LEFT") && _k != (localize "STR_ACE_KN_RIGHT"))) then {_knam = _knam + " " + _k}} forEach _knaml;
_knam = [_knam, "^ ", ""] call CBA_fnc_replace; _knam = [_knam, "^ ", ""] call CBA_fnc_replace;
_keystrg = _keystrg + "-" + _knam; _keystrg = _keystrg + "-" + _knam;
} forEach _keys; } forEach _keys;
_keystrg = [_keystrg, "^ ", ""] call CBA_fnc_replace; _keystrg = [_keystrg, "^ ", ""] call CBA_fnc_replace;
_keystrg = [_keystrg, "^-", ""] call CBA_fnc_replace; _keystrg = [_keystrg, "^-", ""] call CBA_fnc_replace;
_keystrg = [_keystrg, "^", "None"] call CBA_fnc_replace; _keystrg = [_keystrg, "^", "None"] call CBA_fnc_replace;
_keystrg _keystrg
}; };
_pkeys = { _pkeys = {
_pary = []; _pary = [];
_tpages = []; _tpages = [];
_cEvents = configFile/"CfgSettings"/"CBA"/"events"; _cEvents = configFile/"CfgSettings"/"CBA"/"events";
for "_i" from 0 to (count _cEvents) - 1 do { for "_i" from 0 to (count _cEvents) - 1 do {
_cSys = _cEvents select _i; _cSys = _cEvents select _i;
_tSys = configName _cSys; _tSys = configName _cSys;
if (isNumber ((_cSys select 0)/"key")) then { if (isNumber ((_cSys select 0)/"key")) then {
//format system name //format system name
_aSys = [_tSys, "_"] call CBA_fnc_split; _aSys = [_tSys, "_"] call CBA_fnc_split;
_tS = "^"; _tS = "^";
{if (_x != "ace" && _x != "sys") then {_tS = _tS + " " + _x}} forEach _aSys; {if (_x != "ace" && _x != "sys") then {_tS = _tS + " " + _x}} forEach _aSys;
_tS = [_tS, "^ ", ""] call CBA_fnc_replace; _tS = [_tS, "^ ", ""] call CBA_fnc_replace;
_tS = format["<t color='#99cccc'>%1:</t>",_tS]; _tS = format["<t color='#99cccc'>%1:</t>",_tS];
PUSH(_pary,_tS); PUSH(_pary,_tS);
for "_j" from 0 to (count _cSys) - 1 do { for "_j" from 0 to (count _cSys) - 1 do {
_c = _cSys select _j; _c = _cSys select _j;
_tC = configName _c; _tC = configName _c;
_tC = [_tC, "_", " "] call CBA_fnc_replace; _tC = [_tC, "_", " "] call CBA_fnc_replace;
//key //key
_key = getNumber (_c/"key"); _key = getNumber (_c/"key");
_shift = getNumber (_c/"shift"); _shift = getNumber (_c/"shift");
_ctrl = getNumber (_c/"ctrl"); _ctrl = getNumber (_c/"ctrl");
_alt = getNumber (_c/"alt"); _alt = getNumber (_c/"alt");
_keyn = [_key,_shift,_ctrl,_alt] call _pkeynam; _keyn = [_key,_shift,_ctrl,_alt] call _pkeynam;
_tC = format[" %1: %2",_tC,_keyn]; _tC = format[" %1: %2",_tC,_keyn];
PUSH(_pary,_tC); PUSH(_pary,_tC);
}; };
}; };
if (count _pary > 20) then { //split full page if (count _pary > 20) then { //split full page
PUSH(_tpages,_pary); PUSH(_tpages,_pary);
_pary = []; _pary = [];
}; };
}; };
if (count _pary > 0) then { //partial page if (count _pary > 0) then { //partial page
PUSH(_tpages,_pary); PUSH(_tpages,_pary);
_pary = []; _pary = [];
}; };
_tpages _tpages
}; };
//pages (make sure each will fit within 24 lines, word wrap is on) //pages (make sure each will fit within 24 lines, word wrap is on)
switch(_menu) do { switch(_menu) do {
case "MAIN": { //note: not all scripting commands available on main menu (not compiled yet?) case "MAIN": { //note: not all scripting commands available on main menu (not compiled yet?)
_fadet = 13; _fadet = 13;
_page1 = _pcredits; _page1 = _pcredits;
}; };
case "SING": { case "SING": {
_fadet = 20; //fade time _fadet = 20; //fade time
_color = [1,1,1,1]; _color = [1,1,1,1];
//_bcolor = [0,0,0,0.3]; //_bcolor = [0,0,0,0.3];
_page1 = _pcredits; _page1 = _pcredits;
_newpages = [] call _pkeys; _newpages = [] call _pkeys;
_pstart = 2; _pstart = 2;
_pcount = count _newpages; _pcount = count _newpages;
_pnext = _pstart + _pcount; _pnext = _pstart + _pcount;
}; };
case "MULT": { case "MULT": {
_fadet = 20; _fadet = 20;
_color = [1,1,1,1]; _color = [1,1,1,1];
//_bcolor = [0,0,0,0.3]; //_bcolor = [0,0,0,0.3];
_page1 = _pcredits; _page1 = _pcredits;
_newpages = [] call _pkeys; _newpages = [] call _pkeys;
_pstart = 2; _pstart = 2;
_pcount = count _newpages; _pcount = count _newpages;
_pnext = _pstart + _pcount; _pnext = _pstart + _pcount;
}; };
default {}; default {};
}; };
//main menu display //main menu display
if (typeName(_data select 0) == "DISPLAY") then { if (typeName(_data select 0) == "DISPLAY") then {
_display = _data select 0; _display = _data select 0;
}; };
if (typeName(_data select 0) == "CONTROL") then { if (typeName(_data select 0) == "CONTROL") then {
_control = _data select 0; _control = _data select 0;
_display = ctrlParent _control; _display = ctrlParent _control;
}; };
//dynamic pages //dynamic pages
_pnames = []; _pnames = [];
for "_x" from _pstart to _pnext - 1 do { for "_x" from _pstart to _pnext - 1 do {
_pnam = format ["_page%1",_x]; _pnam = format ["_page%1",_x];
PUSH(_pnames,_pnam); PUSH(_pnames,_pnam);
}; };
private _pnames; private _pnames;
for "_x" from 0 to _pcount - 1 do { for "_x" from 0 to _pcount - 1 do {
call compile format ["%1 = %2", _pnames select _x, _newpages select _x]; call compile format ["%1 = %2", _pnames select _x, _newpages select _x];
}; };
//get num pages //get num pages
_pages = 0; _pages = 0;
_run = true; _run = true;
while {_run} do { while {_run} do {
INC(_pages); INC(_pages);
if (isNil format ["_page%1", _pages]) exitWith {_pages = _pages - 1; _run = false}; if (isNil format ["_page%1", _pages]) exitWith {_pages = _pages - 1; _run = false};
}; };
if (_pages > 0) then { if (_pages > 0) then {
//Dialog //Dialog
createDialog "ACE_ABOUT_DLG"; createDialog "ACE_ABOUT_DLG";
_disp = uiNamespace getVariable "ACE_ABOUT_DLG"; _disp = uiNamespace getVariable "ACE_ABOUT_DLG";
_ctrl = _disp displayCtrl 1141371; _ctrl = _disp displayCtrl 1141371;
_next = _disp displayCtrl 1141372; _next = _disp displayCtrl 1141372;
if (_pages > 1) then {_next ctrlSetText "Next"}; if (_pages > 1) then {_next ctrlSetText "Next"};
_ctrl ctrlSetFade 1; _ctrl ctrlSetFade 1;
_ctrl ctrlCommit 0; _ctrl ctrlCommit 0;
_ctrl ctrlSetFade 0; _ctrl ctrlSetFade 0;
_ctrl ctrlCommit 3; _ctrl ctrlCommit 3;
ACE_ABOUT_INC = 0; ACE_ABOUT_INC = 0;
_input = { //local function _input = { //local function
_nesc = isNil "ACE_ABOUT_STP"; _nesc = isNil "ACE_ABOUT_STP";
if (_pages == 1) then {ACE_ABOUT_INC = 0}; //ignore special control if (_pages == 1) then {ACE_ABOUT_INC = 0}; //ignore special control
_unset = (ACE_ABOUT_INC == 0) && ACE_ABOUT_RUN; _unset = (ACE_ABOUT_INC == 0) && ACE_ABOUT_RUN;
if (_unset && _nesc) then {false} else {_fadet = _fadet + 5; true}; if (_unset && _nesc) then {false} else {_fadet = _fadet + 5; true};
}; };
//by default cycle //by default cycle
for "_p" from 1 to _pages do { for "_p" from 1 to _pages do {
_text = ""; _text = "";
_page = call compile format["_page%1",_p]; _page = call compile format["_page%1",_p];
_curPage = _p; _curPage = _p;
{ {
_text = _text + _x + "<br />"; _text = _text + _x + "<br />";
_ctrl ctrlSetStructuredText parseText _text; _ctrl ctrlSetStructuredText parseText _text;
if (call _input) exitWith {_p = _pages}; if (call _input) exitWith {_p = _pages};
if (_x != "") then {uisleep 0.8}; if (_x != "") then {uisleep 0.8};
} forEach _page; } forEach _page;
}; };
_run = true; _run = true;
while {if (isNil "ACE_ABOUT_STP") then {_run} else {false}} do { while {if (isNil "ACE_ABOUT_STP") then {_run} else {false}} do {
_ctrl ctrlSetFade 0; _ctrl ctrlSetFade 0;
_ctrl ctrlCommit 0; _ctrl ctrlCommit 0;
if (!isNil "_color") then {_ctrl ctrlSetTextColor _color}; if (!isNil "_color") then {_ctrl ctrlSetTextColor _color};
if (!isNil "_bcolor") then {_ctrl ctrlSetBackgroundColor _bcolor}; if (!isNil "_bcolor") then {_ctrl ctrlSetBackgroundColor _bcolor};
_curPage = _curPage + ACE_ABOUT_INC; _curPage = _curPage + ACE_ABOUT_INC;
if (_curPage > _pages) then {_curPage = 1}; if (_curPage > _pages) then {_curPage = 1};
if (_curPage <= 0) then {_curPage = 1}; if (_curPage <= 0) then {_curPage = 1};
ACE_ABOUT_INC = 0; ACE_ABOUT_INC = 0;
if (!ACE_ABOUT_RUN) then {ACE_ABOUT_RUN = true}; if (!ACE_ABOUT_RUN) then {ACE_ABOUT_RUN = true};
_text = ""; _text = "";
_page = call compile format ["_page%1",_curPage]; _page = call compile format ["_page%1",_curPage];
{_text = _text + _x + "<br />"} forEach _page; {_text = _text + _x + "<br />"} forEach _page;
_ctrl ctrlSetStructuredText parseText _text; _ctrl ctrlSetStructuredText parseText _text;
_ctrl ctrlSetFade 1; _ctrl ctrlSetFade 1;
_ctrl ctrlCommit _fadet; _ctrl ctrlCommit _fadet;
_time = time + _fadet + 2; _time = time + _fadet + 2;
waitUntil{uisleep 1; _run = call _input; _faded = time > _time; (_run || _faded)}; waitUntil{uisleep 1; _run = call _input; _faded = time > _time; (_run || _faded)};
}; //while RUN }; //while RUN
}; };
ACE_ABOUT_STP = Nil; ACE_ABOUT_STP = Nil;
ACE_ABOUT_RUN = Nil; ACE_ABOUT_RUN = Nil;

View File

@ -16,10 +16,10 @@ Waiver
Public Domain — Where the work or any of its elements is in the public domain under applicable law, that status is in no way affected by the license. Public Domain — Where the work or any of its elements is in the public domain under applicable law, that status is in no way affected by the license.
Other Rights — In no way are any of the following rights affected by the license: Other Rights — In no way are any of the following rights affected by the license:
- Your fair dealing or fair use rights, or other applicable copyright exceptions and limitations; - Your fair dealing or fair use rights, or other applicable copyright exceptions and limitations;
- The author's moral rights; - The author's moral rights;
- Rights other persons may have either in the work itself or in how the work is used, such as publicity or privacy rights. - Rights other persons may have either in the work itself or in how the work is used, such as publicity or privacy rights.
Notice — For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page. Notice — For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page.

View File

@ -4,11 +4,11 @@
// #define DEBUG_MODE_FULL // #define DEBUG_MODE_FULL
#ifdef DEBUG_ENABLED_CORE #ifdef DEBUG_ENABLED_CORE
#define DEBUG_MODE_FULL #define DEBUG_MODE_FULL
#endif #endif
#ifdef DEBUG_SETTINGS_CORE #ifdef DEBUG_SETTINGS_CORE
#define DEBUG_SETTINGS DEBUG_SETTINGS_CORE #define DEBUG_SETTINGS DEBUG_SETTINGS_CORE
#endif #endif
#include "\z\ace\addons\main\script_macros.hpp" #include "\z\ace\addons\main\script_macros.hpp"

View File

@ -1,38 +1,38 @@
#define true 1 #define true 1
#define false 0 #define false 0
#define private 0 #define private 0
#define protected 1 #define protected 1
#define public 2 #define public 2
#define TEast 0 #define TEast 0
#define TWest 1 #define TWest 1
#define TGuerrila 2 #define TGuerrila 2
#define TCivilian 3 #define TCivilian 3
#define TSideUnknown 4 #define TSideUnknown 4
#define TEnemy 5 #define TEnemy 5
#define TFriendly 6 #define TFriendly 6
#define TLogic 7 #define TLogic 7
#define VSoft 0 #define VSoft 0
#define VArmor 1 #define VArmor 1
#define VAir 2 #define VAir 2
#define LockNo 0 #define LockNo 0
#define LockCadet 1 #define LockCadet 1
#define LockYes 2 #define LockYes 2
#define ReadAndWrite 0 #define ReadAndWrite 0
#define ReadAndCreate 1 #define ReadAndCreate 1
#define ReadOnly 2 #define ReadOnly 2
#define ReadOnlyVerified 3 #define ReadOnlyVerified 3
#define WeaponNoSlot 0 // dummy weapons #define WeaponNoSlot 0 // dummy weapons
#define WeaponSlotPrimary 1 // primary weapons #define WeaponSlotPrimary 1 // primary weapons
#define WeaponSlotSecondary 16 // secondary weapons #define WeaponSlotSecondary 16 // secondary weapons
#define WeaponSlotItem 256 // items #define WeaponSlotItem 256 // items
#define WeaponSlotBinocular 4096 // binocular #define WeaponSlotBinocular 4096 // binocular
#define WeaponHardMounted 65536 #define WeaponHardMounted 65536
#define CanSeeRadar 1 #define CanSeeRadar 1
#define CanSeeRye 2 #define CanSeeRye 2

View File

@ -32,15 +32,15 @@ PERFORMANCE COUNTERS SECTION
#ifdef ENABLE_PERFORMANCE_COUNTERS #ifdef ENABLE_PERFORMANCE_COUNTERS
#define CBA_fnc_addPerFrameHandler { _ret = [(_this select 0), (_this select 1), (_this select 2), #function] call CBA_fnc_addPerFrameHandler; if(isNil "ACE_PFH_COUNTER" ) then { ACE_PFH_COUNTER=[]; }; ACE_PFH_COUNTER pushBack [[_ret, __FILE__, __LINE__], [(_this select 0), (_this select 1), (_this select 2)]]; _ret } #define CBA_fnc_addPerFrameHandler { _ret = [(_this select 0), (_this select 1), (_this select 2), #function] call CBA_fnc_addPerFrameHandler; if(isNil "ACE_PFH_COUNTER" ) then { ACE_PFH_COUNTER=[]; }; ACE_PFH_COUNTER pushBack [[_ret, __FILE__, __LINE__], [(_this select 0), (_this select 1), (_this select 2)]]; _ret }
#define CREATE_COUNTER(x) if(isNil "ACE_COUNTERS" ) then { ACE_COUNTERS=[]; }; GVAR(DOUBLES(x,counter))=[]; GVAR(DOUBLES(x,counter)) set[0, QUOTE(GVAR(DOUBLES(x,counter)))]; GVAR(DOUBLES(x,counter)) set[1, diag_tickTime]; ACE_COUNTERS pushBack GVAR(DOUBLES(x,counter)); #define CREATE_COUNTER(x) if(isNil "ACE_COUNTERS" ) then { ACE_COUNTERS=[]; }; GVAR(DOUBLES(x,counter))=[]; GVAR(DOUBLES(x,counter)) set[0, QUOTE(GVAR(DOUBLES(x,counter)))]; GVAR(DOUBLES(x,counter)) set[1, diag_tickTime]; ACE_COUNTERS pushBack GVAR(DOUBLES(x,counter));
#define BEGIN_COUNTER(x) if(isNil QUOTE(GVAR(DOUBLES(x,counter)))) then { CREATE_COUNTER(x) }; GVAR(DOUBLES(x,counter)) set[2, diag_tickTime]; #define BEGIN_COUNTER(x) if(isNil QUOTE(GVAR(DOUBLES(x,counter)))) then { CREATE_COUNTER(x) }; GVAR(DOUBLES(x,counter)) set[2, diag_tickTime];
#define END_COUNTER(x) GVAR(DOUBLES(x,counter)) pushBack [(GVAR(DOUBLES(x,counter)) select 2), diag_tickTime]; #define END_COUNTER(x) GVAR(DOUBLES(x,counter)) pushBack [(GVAR(DOUBLES(x,counter)) select 2), diag_tickTime];
#define DUMP_COUNTERS ([__FILE__, __LINE__] call ACE_DUMPCOUNTERS_FNC) #define DUMP_COUNTERS ([__FILE__, __LINE__] call ACE_DUMPCOUNTERS_FNC)
#else #else
#define CREATE_COUNTER(x) /* disabled */ #define CREATE_COUNTER(x) /* disabled */
#define BEGIN_COUNTER(x) /* disabled */ #define BEGIN_COUNTER(x) /* disabled */
#define END_COUNTER(x) /* disabled */ #define END_COUNTER(x) /* disabled */
#define DUMP_COUNTERS /* disabled */ #define DUMP_COUNTERS /* disabled */
#endif #endif

Some files were not shown because too many files have changed in this diff Show More