Merge branch 'master' of git@github.com:KoffeinFlummi/ACE3.git into aceSettings

This commit is contained in:
Nicolás Badano 2015-02-03 00:45:29 -03:00
commit 99cf0a75ee
80 changed files with 822 additions and 1295 deletions

View File

@ -10,8 +10,8 @@ commy2
esteldunedain <nicolas.d.badano@gmail.com>
Felix Wiegand <koffeinflummi@gmail.com>
Garth "L-H" de Wet <garthofhearts@gmail.com>
Jo David
PabstMirror
bux578 <github@jonathandavid.de>
PabstMirror <pabstmirror@gmail.com>
# CONTRIBUTORS
11RDP-LoupVert <loupvert@11rdp.fr>

View File

@ -1,11 +0,0 @@
class CfgFunctions {
class CSE {
class WindDeflection {
file = "cse\cse_sys_ballistics\basicBallistics\functions";
class handleFired_DEFLECT { recompile = 1; };
class onWeatherMeterOpened_DEFLECT { recompile = 1; };
class weatherMeterOpenWindView_DEFLECT { recompile = 1; };
class weatherMeterOpenWeatherView_DEFLECT { recompile = 1; };
};
};
};

View File

@ -1,15 +0,0 @@
class CfgMagazines {
class Default;
class CA_magazine: Default{};
class cse_weather_meter: CA_magazine {
scope = 2;
value = 1;
count = 1;
type = 16;
displayName = "Weather Meter (GREEN)";
picture = "\cse\cse_sys_ballistics\basicBallistics\data\pocket_weather_meter_day_green.paa";
descriptionShort = "Provides information about weather and wind";
descriptionUse = "Provides information about humidity, wind speed, direction and strenght.";
mass = 5;
};
};

View File

@ -1,31 +0,0 @@
class CfgVehicles {
class Logic;
class Module_F: Logic {
class ArgumentsBaseUnits {
};
};
class cse_sys_winddeflection: Module_F {
scope = 2;
displayName = "Basic Ballistics [CSE]";
icon = "\cse\cse_main\data\cse_rifle_module.paa";
category = "cseModules";
function = "cse_fnc_initalizeModule_F";
functionPriority = 1;
isGlobal = 1;
isTriggerActivated = 0;
class Arguments {
class forAI {
displayName = "Enable for AI";
description = "Should the module be enabled for AI";
typeName = "BOOL";
defaultValue = 0;
};
class allowNonLocal {
displayName = "Non Local";
description = "Should the module be enabled for non local units";
typeName = "BOOL";
defaultValue = 0;
};
};
};
};

View File

@ -1,18 +0,0 @@
class CfgWeapons {
class Default;
class cse_weather_meter: Default {
author = "Combat Space Enhancement";
scope = 2;
displayName = "Weather Meter";
picture = "\cse\cse_sys_ballistics\basicBallistics\data\weatherMeter.paa";
descriptionShort = "Provides information about weather and wind";
descriptionUse = "Provides information about humidity, wind speed, direction and strenght.";
model = "\A3\weapons_F\ammo\mag_univ.p3d";
simulation = "Weapon";
class ItemInfo
{
mass = 10;
};
};
};

View File

@ -1,34 +0,0 @@
#define MENU_KEYBINDING 1
#define ACTION_KEYBINDING 2
#define CLIENT_SETTING 3
class Combat_Space_Enhancement {
class cfgModules {
class cse_sys_winddeflection {
init = "call compile preprocessFile 'cse\cse_sys_ballistics\basicBallistics\init_sys_winddeflection.sqf';";
name = "Wind Deflection";
class EventHandlers {
class CAManBase {
fired = "_this call cse_fnc_handleFired_DEFLECT; false";
};
};
class Configurations {
class check_wind_direction {
type = ACTION_KEYBINDING;
title = "Check Wind Direction";
description = "Displays a hint with the current wind direction and speed.";
value[] = {0,0,0,0};
onPressed = "[] call cse_fnc_checkWindDir_WIND;";
};
class open_weather_meter {
type = ACTION_KEYBINDING;
title = "Open the Weather Meter";
description = "When you have the weather meter in your inventory, pressing this key will open the menu, showing you the current weather information.";
value[] = {0,0,0,0};
onPressed = "if (([player,'cse_weather_meter'] call cse_fnc_hasMagazine)) then { createDialog 'cse_weather_meter'; }; ";
idd = 65423;
};
};
};
};
};

View File

@ -1,2 +0,0 @@
#include "gui\define.hpp"
#include "gui\weather_meter.hpp"

View File

@ -1,26 +0,0 @@
class CfgPatches {
class cse_sys_winddeflection {
units[] = {};
weapons[] = {};
requiredVersion = 1.0;
requiredAddons[] = {"cse_f_eh","cse_main"};
versionDesc = "CSE Wind Deflection";
version = "0.10.0_rc";
author[] = {"Combat Space Enhancement"};
authorUrl = "http://csemod.com";
};
};
class cse_sys_winddeflection {
class PreloadAddons {
class cse_sys_winddeflection {
list[] = {"cse_sys_winddeflection"};
};
};
};
#include "CfgAmmo.h"
#include "CfgVehicles.h"
#include "CfgMagazines.h"
#include "CfgFunctions.h"
#include "Combat_Space_Enhancement.h"
#include "GUI.h"

View File

@ -1,102 +0,0 @@
/**
* CSE fnc HandleFired DEFLECT.
* Handles wind deflection for projectiles.
* Is expected to be triggered by the fired eventhandler from BI.
*
* Params:
* 1. unit: Object - Object the event handler is assigned to
* 2. weapon: String - Fired weapon
* 3. muzzle: String - Muzzle that was used
* 4. mode: String - Current mode of the fired weapon
* 5. ammo: String - Ammo used
* 6. magazine: String - magazine name which was used
* 7. projectile: Object - Object of the projectile that was shot (Arma 2: OA and onwards)
*
* Author: Glowbal, Ruthberg
*
*/
if (isNil "CSE_DISABLE_HANDLE_DEFLECTION") then { CSE_DISABLE_HANDLE_DEFLECTION = false; };
if (CSE_DISABLE_HANDLE_DEFLECTION) exitWith { true };
private ["_unit", "_weapon", "_ammo", "_bullet", "_airFriction", "_index"];
_unit = _this select 0;
if (!CSE_WIND_DEFLECTION_EFFECT_AI_BB && !(isPlayer _unit)) exitWith {};
if (cse_AB_WindEnabled && (gunner _unit) getVariable ["cse_enabled_AdvancedBallistics", false]) exitWith {};
_bullet = _this select 5;
if (!isClass (configFile >> 'CfgPatches' >> 'CBA_main')) then {
_bullet = _this select 6; // with CBA magazine and projectile are reverted
};
if ((CSE_WIND_DEFLECTION_ALLOW_NON_LOCAL_BB || local _unit) && (_bullet isKindOf "BulletBase")) then {
_weapon = _this select 1;
_ammo = _this select 4;
_airFriction = getNumber(configFile >> "cfgAmmo" >> _ammo >> "airFriction");
_index = count cse_basicBallistics_bulletDatabase;
if (count cse_basicBallistics_bulletDatabaseFreeIndices > 0) then {
_index = cse_basicBallistics_bulletDatabaseFreeIndices select 0;
cse_basicBallistics_bulletDatabaseFreeIndices = cse_basicBallistics_bulletDatabaseFreeIndices - [_index];
};
cse_basicBallistics_bulletDatabase set[_index, [_bullet, _airFriction, _index]];
cse_basicBallistics_bulletDatabaseLastFrame set[_index, time];
cse_basicBallistics_bulletDatabaseOccupiedIndices pushBack _index;
if (count cse_basicBallistics_bulletDatabaseOccupiedIndices == 1) then {
["basicBallistics", "onEachFrame", {
private ["_bullet", "_airFriction", "_index", "_deltaT", "_bulletVelocity", "_bulletSpeed", "_trueVelocity", "_trueVelocity", "_dragRef", "_drag", "_accelRef", "_accel"];
{
_bullet = (cse_basicBallistics_bulletDatabase select _x) select 0;
_index = (cse_basicBallistics_bulletDatabase select _x) select 2;
if (!alive _bullet) then {
cse_basicBallistics_bulletDatabaseOccupiedIndices = cse_basicBallistics_bulletDatabaseOccupiedIndices - [_index];
cse_basicBallistics_bulletDatabaseFreeIndices pushBack _index;
};
} forEach cse_basicBallistics_bulletDatabaseOccupiedIndices;
if (count cse_basicBallistics_bulletDatabaseOccupiedIndices == 0) exitWith {
/// Resetting all the variables.
cse_basicBallistics_bulletDatabase = [];
cse_basicBallistics_bulletDatabaseLastFrame = [];
cse_basicBallistics_bulletDatabaseOccupiedIndices = [];
cse_basicBallistics_bulletDatabaseFreeIndices = [];
["basicBallistics", "onEachFrame"] call BIS_fnc_removeStackedEventHandler;
};
{
_bullet = (cse_basicBallistics_bulletDatabase select _x) select 0;
_airFriction = (cse_basicBallistics_bulletDatabase select _x) select 1;
_index = (cse_basicBallistics_bulletDatabase select _x) select 2;
_deltaT = time - (cse_basicBallistics_bulletDatabaseLastFrame select _index);
cse_basicBallistics_bulletDatabaseLastFrame set[_index, time];
_bulletVelocity = velocity _bullet;
_bulletSpeed = vectorMagnitude _bulletVelocity;
if (vectorMagnitude wind > 0) then {
_trueVelocity = _bulletVelocity vectorDiff wind;
_trueSpeed = vectorMagnitude _trueVelocity;
_dragRef = _deltaT * _airFriction * _bulletSpeed * _bulletSpeed;
_accelRef = (vectorNormalized _bulletVelocity) vectorMultiply (_dragRef);
_bulletVelocity = _bulletVelocity vectorDiff _accelRef;
_drag = _deltaT * _airFriction * _trueSpeed * _trueSpeed;
_accel = (vectorNormalized _trueVelocity) vectorMultiply (_drag);
_bulletVelocity = _bulletVelocity vectorAdd _accel;
};
_bullet setVelocity _bulletVelocity;
} forEach cse_basicBallistics_bulletDatabaseOccupiedIndices;
}] call BIS_fnc_addStackedEventHandler;
};
};
true;

View File

@ -1,26 +0,0 @@
/**
* fn_onWeatherMeterOpened_DEFLECT.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
if (isnil "CSE_WEATHER_METER_CURRENT_SCREEN_DEFLECT") then {
CSE_WEATHER_METER_CURRENT_SCREEN_DEFLECT = "WIND_VIEW";
};
if (isnil "CSE_WEATHER_METER_IS_OPEN_DEFLECT") then {
CSE_WEATHER_METER_IS_OPEN_DEFLECT = false;
};
while { CSE_WEATHER_METER_IS_OPEN_DEFLECT } do {
switch (CSE_WEATHER_METER_CURRENT_SCREEN_DEFLECT) do {
case "WEATHER_VIEW": {[] call cse_fnc_weatherMeterOpenWeatherView_DEFLECT;};
case "WIND_VIEW": { [] call cse_fnc_weatherMeterOpenWindView_DEFLECT;};
default {};
};
uisleep 1;
};

View File

@ -1,28 +0,0 @@
/**
* fn_weatherMeterOpenWeatherView_DEFLECT.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_display","_backgroundCtrl","_categoryCtrl","_lineOneCtrl", "_lineTwoCtrl","_LineThreeCtrl", "_textLineOne","_textLineTwo"];
disableSerialization;
_display = uiNamespace getvariable "cse_weather_meter";
_backgroundCtrl = _display displayCtrl 1;
_categoryCtrl = _display displayCtrl 10;
_lineOneCtrl = _display displayCtrl 11;
_lineTwoCtrl = _display displayCtrl 12;
_LineThreeCtrl = _display displayCtrl 13;
_categoryCtrl ctrlSetText (localize "STR_CSE_WEATHER_METER_WEATHER_CATEGORY");
_textLineOne = format [ localize "STR_CSE_WEATHER_METER_WEATHER_HUMIDITY", floor (humidity * 100)];
_lineOneCtrl ctrlSetText _textLineOne;
_lineTwoCtrl ctrlSetText "";
_LineThreeCtrl ctrlSetText "";

View File

@ -1,29 +0,0 @@
/**
* fn_weatherMeterOpenWindView_DEFLECT.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
private ["_display","_backgroundCtrl","_categoryCtrl","_lineOneCtrl", "_lineTwoCtrl","_LineThreeCtrl", "_textLineOne","_textLineTwo"];
disableSerialization;
_display = uiNamespace getvariable "cse_weather_meter";
_backgroundCtrl = _display displayCtrl 1;
_categoryCtrl = _display displayCtrl 10;
_lineOneCtrl = _display displayCtrl 11;
_lineTwoCtrl = _display displayCtrl 12;
_LineThreeCtrl = _display displayCtrl 13;
_categoryCtrl ctrlSetText (localize "STR_CSE_WEATHER_METER_WIND_CATEGORY");
_textLineOne = format [ localize "STR_CSE_WEATHER_METER_WIND_SPEED", (wind distance [0,0,0])];
_textLineTwo = format [ localize "STR_CSE_WEATHER_METER_WIND_DIRECTION", windDir];
_lineOneCtrl ctrlSetText _textLineOne;
_lineTwoCtrl ctrlSetText _textLineTwo;
_LineThreeCtrl ctrlSetText "";

View File

@ -1,797 +0,0 @@
#ifndef CSE_DEFINE_H
#define CSE_DEFINE_H
// define.hpp
#define true 1
#define false 0
#define CT_STATIC 0
#define CT_BUTTON 1
#define CT_EDIT 2
#define CT_SLIDER 3
#define CT_COMBO 4
#define CT_LISTBOX 5
#define CT_TOOLBOX 6
#define CT_CHECKBOXES 7
#define CT_PROGRESS 8
#define CT_HTML 9
#define CT_STATIC_SKEW 10
#define CT_ACTIVETEXT 11
#define CT_TREE 12
#define CT_STRUCTURED_TEXT 13
#define CT_CONTEXT_MENU 14
#define CT_CONTROLS_GROUP 15
#define CT_SHORTCUTBUTTON 16
#define CT_XKEYDESC 40
#define CT_XBUTTON 41
#define CT_XLISTBOX 42
#define CT_XSLIDER 43
#define CT_XCOMBO 44
#define CT_ANIMATED_TEXTURE 45
#define CT_OBJECT 80
#define CT_OBJECT_ZOOM 81
#define CT_OBJECT_CONTAINER 82
#define CT_OBJECT_CONT_ANIM 83
#define CT_LINEBREAK 98
#define CT_ANIMATED_USER 99
#define CT_MAP 100
#define CT_MAP_MAIN 101
#define CT_LISTNBOX 102
// Static styles
#define ST_POS 0x0F
#define ST_HPOS 0x03
#define ST_VPOS 0x0C
#define ST_LEFT 0x00
#define ST_RIGHT 0x01
#define ST_CENTER 0x02
#define ST_DOWN 0x04
#define ST_UP 0x08
#define ST_VCENTER 0x0c
#define ST_TYPE 0xF0
#define ST_SINGLE 0
#define ST_MULTI 16
#define ST_TITLE_BAR 32
#define ST_PICTURE 48
#define ST_FRAME 64
#define ST_BACKGROUND 80
#define ST_GROUP_BOX 96
#define ST_GROUP_BOX2 112
#define ST_HUD_BACKGROUND 128
#define ST_TILE_PICTURE 144
#define ST_WITH_RECT 160
#define ST_LINE 176
#define ST_SHADOW 0x100
#define ST_NO_RECT 0x200 // this style works for CT_STATIC in conjunction with ST_MULTI
#define ST_KEEP_ASPECT_RATIO 0x800
#define ST_TITLE ST_TITLE_BAR + ST_CENTER
// Slider styles
#define SL_DIR 0x400
#define SL_VERT 0
#define SL_HORZ 0x400
#define SL_TEXTURES 0x10
// Listbox styles
#define LB_TEXTURES 0x10
#define LB_MULTI 0x20
#define FontCSE "PuristaMedium"
class cse_gui_backgroundBase {
type = CT_STATIC;
idc = -1;
style = ST_PICTURE;
colorBackground[] = {0,0,0,0};
colorText[] = {1, 1, 1, 1};
font = FontCSE;
text = "";
sizeEx = 0.032;
};
class cse_gui_editBase
{
access = 0;
type = 2;
x = 0;
y = 0;
h = 0.04;
w = 0.2;
colorBackground[] =
{
0,
0,
0,
1
};
colorText[] =
{
0.95,
0.95,
0.95,
1
};
colorSelection[] =
{
"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])",
"(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])",
"(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])",
1
};
autocomplete = "";
text = "";
size = 0.2;
style = "0x00 + 0x40";
font = "PuristaMedium";
shadow = 2;
sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
colorDisabled[] =
{
1,
1,
1,
0.25
};
};
class cse_gui_buttonBase {
idc = -1;
type = 16;
style = ST_LEFT;
text = "";
action = "";
x = 0.0;
y = 0.0;
w = 0.25;
h = 0.04;
size = 0.03921;
sizeEx = 0.03921;
color[] = {1.0, 1.0, 1.0, 1};
color2[] = {1.0, 1.0, 1.0, 1};
/*colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.5])"};
colorbackground2[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.4};
colorDisabled[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.25};
colorFocused[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_A',0.8])", 0.8};
colorBackgroundFocused[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.8};
*/
colorBackground[] = {1,1,1,0.95};
colorbackground2[] = {1,1,1,0.95};
colorDisabled[] = {1,1,1,0.6};
colorFocused[] = {1,1,1,1};
colorBackgroundFocused[] = {1,1,1,1};
periodFocus = 1.2;
periodOver = 0.8;
default = false;
class HitZone {
left = 0.00;
top = 0.00;
right = 0.00;
bottom = 0.00;
};
class ShortcutPos {
left = 0.00;
top = 0.00;
w = 0.00;
h = 0.00;
};
class TextPos {
left = 0.002;
top = 0.0004;
right = 0.0;
bottom = 0.00;
};
textureNoShortcut = "";
animTextureNormal = "cse\cse_gui\data\buttonNormal_gradient_top.paa";
animTextureDisabled = "cse\cse_gui\data\buttonDisabled_gradient.paa";
animTextureOver = "cse\cse_gui\data\buttonNormal_gradient_top.paa";
animTextureFocused = "cse\cse_gui\data\buttonNormal_gradient_top.paa";
animTexturePressed = "cse\cse_gui\data\buttonNormal_gradient_top.paa";
animTextureDefault = "cse\cse_gui\data\buttonNormal_gradient_top.paa";
period = 0.5;
font = FontCSE;
soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick",0.09,1};
soundPush[] = {"\A3\ui_f\data\sound\RscButton\soundPush",0.0,0};
soundEnter[] = {"\A3\ui_f\data\sound\RscButton\soundEnter",0.07,1};
soundEscape[] = {"\A3\ui_f\data\sound\RscButton\soundEscape",0.09,1};
class Attributes {
font = FontCSE;
color = "#E5E5E5";
align = "center";
shadow = "true";
};
class AttributesImage {
font = FontCSE;
color = "#E5E5E5";
align = "left";
shadow = "true";
};
};
class cse_gui_RscProgress {
type = 8;
style = 0;
colorFrame[] = {1,1,1,0.7};
colorBar[] = {1,1,1,0.7};
texture = "#(argb,8,8,3)color(1,1,1,0.7)";
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "10 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "0.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
};
class cse_gui_staticBase {
idc = -1;
type = CT_STATIC;
x = 0.0;
y = 0.0;
w = 0.183825;
h = 0.104575;
style = ST_LEFT;
font = FontCSE;
sizeEx = 0.03921;
colorText[] = {0.95, 0.95, 0.95, 1.0};
colorBackground[] = {0, 0, 0, 0};
text = "";
};
class RscListBox;
class cse_gui_listBoxBase : RscListBox{
type = CT_LISTBOX;
style = ST_MULTI;
font = FontCSE;
sizeEx = 0.03921;
color[] = {1, 1, 1, 1};
colorText[] = {0.543, 0.5742, 0.4102, 1.0};
colorScrollbar[] = {0.95, 0.95, 0.95, 1};
colorSelect[] = {0.95, 0.95, 0.95, 1};
colorSelect2[] = {0.95, 0.95, 0.95, 1};
colorSelectBackground[] = {0, 0, 0, 1};
colorSelectBackground2[] = {0.543, 0.5742, 0.4102, 1.0};
colorDisabled[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.25};
period = 1.2;
rowHeight = 0.03;
colorBackground[] = {0, 0, 0, 1};
maxHistoryDelay = 1.0;
autoScrollSpeed = -1;
autoScrollDelay = 5;
autoScrollRewind = 0;
soundSelect[] = {"",0.1,1};
soundExpand[] = {"",0.1,1};
soundCollapse[] = {"",0.1,1};
class ListScrollBar {
arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
autoScrollDelay = 5;
autoScrollEnabled = 0;
autoScrollRewind = 0;
autoScrollSpeed = -1;
border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa";
color[] = {1,1,1,0.6};
colorActive[] = {1,1,1,1};
colorDisabled[] = {1,1,1,0.3};
height = 0;
scrollSpeed = 0.06;
shadow = 0;
thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";
width = 0;
};
class ScrollBar {
color[] = {1, 1, 1, 0.6};
colorActive[] = {1, 1, 1, 1};
colorDisabled[] = {1, 1, 1, 0.3};
thumb = "";
arrowFull = "";
arrowEmpty = "";
border = "";
};
};
class cse_gui_listNBox {
access = 0;
type = CT_LISTNBOX;// 102;
style =ST_MULTI;
w = 0.4;
h = 0.4;
font = FontCSE;
sizeEx = 0.031;
autoScrollSpeed = -1;
autoScrollDelay = 5;
autoScrollRewind = 0;
arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)";
arrowFull = "#(argb,8,8,3)color(1,1,1,1)";
columns[] = {0.0};
color[] = {1, 1, 1, 1};
rowHeight = 0.03;
colorBackground[] = {0, 0, 0, 0.2};
colorText[] = {1,1, 1, 1.0};
colorScrollbar[] = {0.95, 0.95, 0.95, 1};
colorSelect[] = {0.95, 0.95, 0.95, 1};
colorSelect2[] = {0.95, 0.95, 0.95, 1};
colorSelectBackground[] = {0, 0, 0, 0.0};
colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.5};
colorActive[] = {0,0,0,1};
colorDisabled[] = {0,0,0,0.3};
rows = 1;
drawSideArrows = 0;
idcLeft = -1;
idcRight = -1;
maxHistoryDelay = 1;
soundSelect[] = {"", 0.1, 1};
period = 1;
shadow = 2;
class ScrollBar {
arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)";
arrowFull = "#(argb,8,8,3)color(1,1,1,1)";
border = "#(argb,8,8,3)color(1,1,1,1)";
color[] = {1,1,1,0.6};
colorActive[] = {1,1,1,1};
colorDisabled[] = {1,1,1,0.3};
thumb = "#(argb,8,8,3)color(1,1,1,1)";
};
class ListScrollBar {
arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
autoScrollDelay = 5;
autoScrollEnabled = 0;
autoScrollRewind = 0;
autoScrollSpeed = -1;
border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa";
color[] = {1,1,1,0.6};
colorActive[] = {1,1,1,1};
colorDisabled[] = {1,1,1,0.3};
height = 0;
scrollSpeed = 0.06;
shadow = 0;
thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";
width = 0;
};
};
class RscCombo;
class cse_gui_comboBoxBase: RscCombo {
idc = -1;
type = 4;
style = "0x10 + 0x200";
x = 0;
y = 0;
w = 0.3;
h = 0.035;
color[] = {0,0,0,0.6};
colorActive[] = {1,0,0,1};
colorBackground[] = {0,0,0,1};
colorDisabled[] = {1,1,1,0.25};
colorScrollbar[] = {1,0,0,1};
colorSelect[] = {0,0,0,1};
colorSelectBackground[] = {1,1,1,0.7};
colorText[] = {1,1,1,1};
arrowEmpty = "";
arrowFull = "";
wholeHeight = 0.45;
font = FontCSE;
sizeEx = 0.031;
soundSelect[] = {"\A3\ui_f\data\sound\RscCombo\soundSelect",0.1,1};
soundExpand[] = {"\A3\ui_f\data\sound\RscCombo\soundExpand",0.1,1};
soundCollapse[] = {"\A3\ui_f\data\sound\RscCombo\soundCollapse",0.1,1};
maxHistoryDelay = 1.0;
class ScrollBar
{
color[] = {0.3,0.3,0.3,0.6};
colorActive[] = {0.3,0.3,0.3,1};
colorDisabled[] = {0.3,0.3,0.3,0.3};
thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";
arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
border = "";
};
class ComboScrollBar {
arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
autoScrollDelay = 5;
autoScrollEnabled = 0;
autoScrollRewind = 0;
autoScrollSpeed = -1;
border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa";
color[] = {0.3,0.3,0.3,0.6};
colorActive[] = {0.3,0.3,0.3,1};
colorDisabled[] = {0.3,0.3,0.3,0.3};
height = 0;
scrollSpeed = 0.06;
shadow = 0;
thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";
width = 0;
};
};
class cse_gui_mapBase {
moveOnEdges = 1;
x = "SafeZoneXAbs";
y = "SafeZoneY + 1.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
w = "SafeZoneWAbs";
h = "SafeZoneH - 1.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
type = 100; // Use 100 to hide markers
style = 48;
shadow = 0;
ptsPerSquareSea = 5;
ptsPerSquareTxt = 3;
ptsPerSquareCLn = 10;
ptsPerSquareExp = 10;
ptsPerSquareCost = 10;
ptsPerSquareFor = 9;
ptsPerSquareForEdge = 9;
ptsPerSquareRoad = 6;
ptsPerSquareObj = 9;
showCountourInterval = 0;
scaleMin = 0.001;
scaleMax = 1.0;
scaleDefault = 0.16;
maxSatelliteAlpha = 0.85;
alphaFadeStartScale = 0.35;
alphaFadeEndScale = 0.4;
colorBackground[] = {0.969,0.957,0.949,1.0};
colorSea[] = {0.467,0.631,0.851,0.5};
colorForest[] = {0.624,0.78,0.388,0.5};
colorForestBorder[] = {0.0,0.0,0.0,0.0};
colorRocks[] = {0.0,0.0,0.0,0.3};
colorRocksBorder[] = {0.0,0.0,0.0,0.0};
colorLevels[] = {0.286,0.177,0.094,0.5};
colorMainCountlines[] = {0.572,0.354,0.188,0.5};
colorCountlines[] = {0.572,0.354,0.188,0.25};
colorMainCountlinesWater[] = {0.491,0.577,0.702,0.6};
colorCountlinesWater[] = {0.491,0.577,0.702,0.3};
colorPowerLines[] = {0.1,0.1,0.1,1.0};
colorRailWay[] = {0.8,0.2,0.0,1.0};
colorNames[] = {0.1,0.1,0.1,0.9};
colorInactive[] = {1.0,1.0,1.0,0.5};
colorOutside[] = {0.0,0.0,0.0,1.0};
colorTracks[] = {0.84,0.76,0.65,0.15};
colorTracksFill[] = {0.84,0.76,0.65,1.0};
colorRoads[] = {0.7,0.7,0.7,1.0};
colorRoadsFill[] = {1.0,1.0,1.0,1.0};
colorMainRoads[] = {0.9,0.5,0.3,1.0};
colorMainRoadsFill[] = {1.0,0.6,0.4,1.0};
colorGrid[] = {0.1,0.1,0.1,0.6};
colorGridMap[] = {0.1,0.1,0.1,0.6};
colorText[] = {1, 1, 1, 0.85};
font = "PuristaMedium";
sizeEx = 0.0270000;
stickX[] = {0.20, {"Gamma", 1.00, 1.50} };
stickY[] = {0.20, {"Gamma", 1.00, 1.50} };
onMouseButtonClick = "";
onMouseButtonDblClick = "";
fontLabel = "PuristaMedium";
sizeExLabel = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
fontGrid = "TahomaB";
sizeExGrid = 0.02;
fontUnits = "TahomaB";
sizeExUnits = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
fontNames = "PuristaMedium";
sizeExNames = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8) * 2";
fontInfo = "PuristaMedium";
sizeExInfo = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
fontLevel = "TahomaB";
sizeExLevel = 0.02;
text = "#(argb,8,8,3)color(1,1,1,1)";
class ActiveMarker {
color[] = {0.30, 0.10, 0.90, 1.00};
size = 50;
};
class Legend
{
x = "SafeZoneX + ( ((safezoneW / safezoneH) min 1.2) / 40)";
y = "SafeZoneY + safezoneH - 4.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
h = "3.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
font = "PuristaMedium";
sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
colorBackground[] = {1,1,1,0.5};
color[] = {0,0,0,1};
};
class Task
{
icon = "\A3\ui_f\data\map\mapcontrol\taskIcon_CA.paa";
iconCreated = "\A3\ui_f\data\map\mapcontrol\taskIconCreated_CA.paa";
iconCanceled = "\A3\ui_f\data\map\mapcontrol\taskIconCanceled_CA.paa";
iconDone = "\A3\ui_f\data\map\mapcontrol\taskIconDone_CA.paa";
iconFailed = "\A3\ui_f\data\map\mapcontrol\taskIconFailed_CA.paa";
color[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_A',0.8])"};
colorCreated[] = {1,1,1,1};
colorCanceled[] = {0.7,0.7,0.7,1};
colorDone[] = {0.7,1,0.3,1};
colorFailed[] = {1,0.3,0.2,1};
size = 27;
importance = 1;
coefMin = 1;
coefMax = 1;
};
class Waypoint
{
icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa";
color[] = {0,0,0,1};
size = 20;
importance = "1.2 * 16 * 0.05";
coefMin = 0.900000;
coefMax = 4;
};
class WaypointCompleted
{
icon = "\A3\ui_f\data\map\mapcontrol\waypointCompleted_ca.paa";
color[] = {0,0,0,1};
size = 20;
importance = "1.2 * 16 * 0.05";
coefMin = 0.900000;
coefMax = 4;
};
class CustomMark
{
icon = "\A3\ui_f\data\map\mapcontrol\custommark_ca.paa";
size = 24;
importance = 1;
coefMin = 1;
coefMax = 1;
color[] = {0,0,0,1};
};
class Command
{
icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa";
size = 18;
importance = 1;
coefMin = 1;
coefMax = 1;
color[] = {1,1,1,1};
};
class Bush
{
icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa";
color[] = {0.45,0.64,0.33,0.4};
size = "14/2";
importance = "0.2 * 14 * 0.05 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class Rock
{
icon = "\A3\ui_f\data\map\mapcontrol\rock_ca.paa";
color[] = {0.1,0.1,0.1,0.8};
size = 12;
importance = "0.5 * 12 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class SmallTree
{
icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa";
color[] = {0.45,0.64,0.33,0.4};
size = 12;
importance = "0.6 * 12 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class Tree
{
icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa";
color[] = {0.45,0.64,0.33,0.4};
size = 12;
importance = "0.9 * 16 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class busstop
{
icon = "\A3\ui_f\data\map\mapcontrol\busstop_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class fuelstation
{
icon = "\A3\ui_f\data\map\mapcontrol\fuelstation_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class hospital
{
icon = "\A3\ui_f\data\map\mapcontrol\hospital_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class church
{
icon = "\A3\ui_f\data\map\mapcontrol\church_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class lighthouse
{
icon = "\A3\ui_f\data\map\mapcontrol\lighthouse_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class power
{
icon = "\A3\ui_f\data\map\mapcontrol\power_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class powersolar
{
icon = "\A3\ui_f\data\map\mapcontrol\powersolar_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class powerwave
{
icon = "\A3\ui_f\data\map\mapcontrol\powerwave_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class powerwind
{
icon = "\A3\ui_f\data\map\mapcontrol\powerwind_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class quay
{
icon = "\A3\ui_f\data\map\mapcontrol\quay_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class shipwreck
{
icon = "\A3\ui_f\data\map\mapcontrol\shipwreck_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class transmitter
{
icon = "\A3\ui_f\data\map\mapcontrol\transmitter_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class watertower
{
icon = "\A3\ui_f\data\map\mapcontrol\watertower_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {1,1,1,1};
};
class Cross
{
icon = "\A3\ui_f\data\map\mapcontrol\Cross_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {0,0,0,1};
};
class Chapel
{
icon = "\A3\ui_f\data\map\mapcontrol\Chapel_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1.0;
color[] = {0,0,0,1};
};
class Bunker
{
icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa";
size = 14;
importance = "1.5 * 14 * 0.05";
coefMin = 0.25;
coefMax = 4;
color[] = {0,0,0,1};
};
class Fortress
{
icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa";
size = 16;
importance = "2 * 16 * 0.05";
coefMin = 0.25;
coefMax = 4;
color[] = {0,0,0,1};
};
class Fountain
{
icon = "\A3\ui_f\data\map\mapcontrol\fountain_ca.paa";
size = 11;
importance = "1 * 12 * 0.05";
coefMin = 0.25;
coefMax = 4;
color[] = {0,0,0,1};
};
class Ruin
{
icon = "\A3\ui_f\data\map\mapcontrol\ruin_ca.paa";
size = 16;
importance = "1.2 * 16 * 0.05";
coefMin = 1;
coefMax = 4;
color[] = {0,0,0,1};
};
class Stack
{
icon = "\A3\ui_f\data\map\mapcontrol\stack_ca.paa";
size = 20;
importance = "2 * 16 * 0.05";
coefMin = 0.9;
coefMax = 4;
color[] = {0,0,0,1};
};
class Tourism
{
icon = "\A3\ui_f\data\map\mapcontrol\tourism_ca.paa";
size = 16;
importance = "1 * 16 * 0.05";
coefMin = 0.7;
coefMax = 4;
color[] = {0,0,0,1};
};
class ViewTower
{
icon = "\A3\ui_f\data\map\mapcontrol\viewtower_ca.paa";
size = 16;
importance = "2.5 * 16 * 0.05";
coefMin = 0.5;
coefMax = 4;
color[] = {0,0,0,1};
};
};
#endif

View File

@ -1,101 +0,0 @@
class cse_weather_meter {
idd = 65423;
movingEnable = 1;
onLoad = "uiNamespace setVariable ['cse_weather_meter', _this select 0];CSE_WEATHER_METER_IS_OPEN_DEFLECT = true; NUL = [] spawn cse_fnc_onWeatherMeterOpened_DEFLECT;";
onUnload = "CSE_WEATHER_METER_IS_OPEN_DEFLECT = false; ";
class controlsBackground {
class backgroundImg: cse_gui_backgroundBase{
idc = 1;
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
x = "0 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "15 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "30 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
text = "cse\cse_sys_ballistics\basicBallistics\data\pocket_weather_meter_day_green.paa";
moving = 1;
};
};
class controls {
class labelTextMenu : cse_gui_staticBase {
idc = 10;
x = "4.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "19 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "6.5 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)";
text = "CATEGORY NAME";
colorBackground[] = {0,0,0,0.0};
colorText[] = {0.0, 0.0, 0.0, 1.0};
style = ST_CENTER;
};
class labelTextLineOne : labelTextMenu {
idc = 11;
x = "4.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "20 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "6.5 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "0.6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.6)";
text = "";
style = ST_LEFT;
};
class labelTextLineTwo : labelTextLineOne {
idc = 12;
y = "20.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
text = "";
};
class labelTextLineThree : labelTextLineOne {
idc = 13;
y = "21.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
text = "";
};
class actionClose : cse_gui_buttonBase {
idc = 30;
text = "";
x = "4.25 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "28.6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "0.5 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "0.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.0)";
animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.0)";
animTextureOver = "#(argb,8,8,3)color(1,1,1,0)";
animTextureFocused = "#(argb,8,8,3)color(1,1,1,0)";
animTexturePressed = "#(argb,8,8,3)color(1,1,1,0)";
animTextureDefault = "#(argb,8,8,3)color(1,1,1,0)";
color[] = {1, 1, 1, 1};
color2[] = {0,0,0, 1};
colorBackgroundFocused[] = {1,1,1,1};
colorBackground[] = {1,1,1,1};
colorbackground2[] = {1,1,1,1};
colorDisabled[] = {0.5,0.5,0.5,0.8};
colorFocused[] = {0,0,0,1};
periodFocus = 1;
periodOver = 1;
action = "closedialog 0;";
};
class actionButtonLeft : actionClose {
idc = 31;
text = "";
x = "4.25 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "23 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "1.75 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
action = "[] call cse_fnc_weatherMeterOpenWindView_DEFLECT; CSE_WEATHER_METER_CURRENT_SCREEN_DEFLECT = 'WIND_VIEW';";
};
class actionButtonRight : actionButtonLeft {
idc = 32;
text = "";
x = "9.25 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "23 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "1.75 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
action = "[] call cse_fnc_weatherMeterOpenWeatherView_DEFLECT; CSE_WEATHER_METER_CURRENT_SCREEN_DEFLECT = 'WEATHER_VIEW';";
};
};
};

View File

@ -1,53 +0,0 @@
CSE_WIND_DEFLECTION_EFFECT_AI_BB = false;
CSE_WIND_DEFLECTION_ALLOW_NON_LOCAL_BB = false;
private ["_args"];
_args = _this;
{
if (_x select 0 == "forAI") then {
CSE_WIND_DEFLECTION_EFFECT_AI_BB = _x select 1;
};
if (_x select 0 == "allowNonLocal") then {
CSE_WIND_DEFLECTION_ALLOW_NON_LOCAL_BB = _x select 1;
};
}foreach _args;
cse_basicBallistics_bulletDatabase = [];
cse_basicBallistics_bulletDatabaseLastFrame = [];
cse_basicBallistics_bulletDatabaseOccupiedIndices = [];
cse_basicBallistics_bulletDatabaseFreeIndices = [];
if (hasInterface) then {
cse_fnc_checkWindDir_WIND = {
private ["_windDir","_windSpeed"];
if (vehicle player == player && [player] call cse_fnc_canInteract) then {
if(windDir >= 340 && windDir <= 360 || windDir >= 0 && windDir <= 20) then {_windDir = "North";};
if(windDir >= 20 && windDir <= 60) then {_windDir = "North East";};
if(windDir >= 60 && windDir <= 110) then {_windDir = "East";};
if(windDir >= 110 && windDir <= 160) then {_windDir = "South East";};
if(windDir >= 160 && windDir <= 200) then {_windDir = "South";};
if(windDir >= 200 && windDir <= 250) then {_windDir = "South West";};
if(windDir >= 250 && windDir <= 290) then {_windDir = "West";};
if(windDir >= 290 && windDir <= 340) then {_windDir = "North West";};
hintSilent ("Wind Direction: "+ _windDir + "\nWind Strength: " + str floor(wind distance [0,0,0]) + "m/s");
sleep 4;
hintSilent "";
};
};
//["check_wind_direction", (["check_wind_direction","action",[0,0,0,0]] call cse_fnc_getKeyBindingFromProfile_F), cse_fnc_checkWindDir_WIND] call cse_fnc_addKeyBindingForAction_F;
//["check_wind_direction","action","Check Wind Direction","Displays a hint with the current wind direction and speed."] call cse_fnc_settingsDefineDetails_F;
//["open_weather_meter", (["open_weather_meter","menu",[0,0,0,0]] call cse_fnc_getKeyBindingFromProfile_F), {if (([player,'cse_weather_meter'] call cse_fnc_hasMagazine)) then { createDialog "cse_weather_meter"; }; }, 65423] call cse_fnc_addKeyBindingForMenu_F;
//["open_weather_meter","menu","Open the Weather Meter","When you have the weather meter in your inventory, pressing this key will open the menu, showing you the current weather information. "] call cse_fnc_settingsDefineDetails_F;
waituntil{!isnil "cse_gui"};
_entries = [
["Weather Meter", {([player,'cse_weather_meter'] call cse_fnc_hasMagazine)}, "cse\cse_sys_ballistics\basicBallistics\data\icon_weather_meter.paa", { closeDialog 0; createDialog "cse_weather_meter"; }, "Use Weather Meter"]
];
["ActionMenu","equipment", _entries ] call cse_fnc_addMultipleEntriesToRadialCategory_F;
};

View File

@ -1,10 +0,0 @@
Legacy Module for cse_sys_windDeflection.
by Glowbal. Modifications by Ruthberg.
This module has been integrated into cse_sys_ballistics as part of the CSE project restructure.
The module will stay available to allow for backwards compatibilty. All functionality will remain the same as in previous CSE versions.
------------
Adjustments made:
- Improved ballistics calculation based upon Ruthberg's advancedBallistics code.
- Adjusted paths to direct to cse\cse_sys_ballistics\basicBallistics instead of cse\cse_sys_windDeflection.

View File

@ -137,3 +137,8 @@ GVAR(OldPlayerTurret) = [ACE_player] call FUNC(getTurretIndex);
[QGVAR(StateArrested),false,true,QUOTE(ADDON)] call FUNC(defineVariable);
[QGVAR(carriedBy),objNull,false,QUOTE(ADDON)] call FUNC(defineVariable);
[QGVAR(carriedObj),objNull,false,QUOTE(ADDON)] call FUNC(defineVariable);
["VehicleSetFuel", {
PARAMS_2(_vehicle,_fuelLevel);
_vehicle setFuel _fuelLevel;
}] call FUNC(addEventhandler);

View File

@ -60,7 +60,15 @@ if (count GVAR(GForces) > 0) then {
_classCoef = ACE_player getVariable ["ACE_GForceCoef",
getNumber (configFile >> "CfgVehicles" >> (typeOf ACE_player) >> "ACE_GForceCoef")];
_suitCoef = getNumber (configFile >> "CfgWeapons" >> (uniform ACE_player) >> "ACE_GForceCoef");
_suitCoef = if ((uniform ACE_player) != "") then {
getNumber (configFile >> "CfgWeapons" >> (uniform ACE_player) >> "ACE_GForceCoef")
} else {
1
};
//Fix "Error Zero divisor"
if (_classCoef == 0) then {_classCoef = 0.001};
if (_suitCoef == 0) then {_suitCoef = 0.001};
_gBlackOut = MAXVIRTUALG / _classCoef + MAXVIRTUALG / _suitCoef - MAXVIRTUALG;
_gRedOut = MINVIRTUALG / _classCoef;

View File

@ -2,4 +2,4 @@
#include "script_component.hpp"
QGVAR(CurrentTooltip) pushBack (_this select 0);
GVAR(CurrentTooltip) pushBack (_this select 0);

View File

@ -15,7 +15,7 @@ class Extended_GetIn_EventHandlers {
class ADDON {
getIn = QUOTE(call FUNC(onGetin));
};
}
};
};
class Extended_GetOut_EventHandlers {

View File

@ -0,0 +1 @@
z\ace\addons\logistics_uavbattery

View File

@ -0,0 +1,5 @@
class Extended_PreInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preInit));
};
};

View File

@ -0,0 +1,27 @@
class CfgVehicles {
class Helicopter_Base_F;
class UAV_01_base_F: Helicopter_Base_F {
class ACE_Actions {
class GVAR(RefuelUAV) {
displayName = "$STR_ACE_logistics_uavbattery_Recharge";
distance = 4;
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRefuelUAV));
statement = QUOTE([ARR_2(_player, _target)] call FUNC(refuelUAV));
showDisabled = 0; \
priority = 1.245; \
icon = QUOTE(PATHTOF(ui\UAV_battery.paa));
};
};
};
// Misc box content
class Box_NATO_Support_F;
class ACE_Box_Misc: Box_NATO_Support_F {
class TransportItems {
class _xx_ACE_UAVBattery {
count = 6;
name = "ACE_UAVBattery";
};
};
};
};

View File

@ -0,0 +1,15 @@
class CfgWeapons {
class InventoryItem_Base_F;
class ACE_ItemCore;
class ACE_UAVBattery: ACE_ItemCore {
scope = 2;
displayName = "$STR_ACE_logistics_uavbattery_Battery_Name";
descriptionShort = "$STR_ACE_logistics_uavbattery_Battery_Description";
model = QUOTE(PATHTOF(models\ace_battery.p3d));
picture = QUOTE(PATHTOF(ui\UAV_battery.paa));
class ItemInfo: InventoryItem_Base_F {
mass = 20;
};
};
};

View File

@ -0,0 +1,11 @@
ace_logistics_uavbattery
===========
Adds an item `ACE_UAVBattery` that allows refueling/recharging of the "Dartar" quadcopter UAVs.
## Maintainers
The people responsible for merging changes to this component or answering potential questions.
- [PabstMirror](https://github.com/PabstMirror)

View File

@ -0,0 +1,8 @@
#include "script_component.hpp"
ADDON = false;
PREP(canRefuelUAV);
PREP(refuelUAV);
ADDON = true;

View File

@ -0,0 +1,17 @@
#include "script_component.hpp"
class CfgPatches {
class ADDON {
units[] = {};
weapons[] = {"ACE_UAVBattery"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common", "ace_interaction"};
author[] = {"marc_book"};
authorUrl = "";
VERSION_CONFIG;
};
};
#include "CfgEventHandlers.hpp"
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"

View File

@ -0,0 +1,19 @@
/* fnc_refuel.sqf
*
* Author: marc_book (modified by PabstMirror)
*
* Tests if unit can refuel the target UAV
*
* Argument:
* 0: OBJECT - Player unit
* 1: OBJECT - UAV to test
*
* Return value:
* BOOL
*/
#include "script_component.hpp"
PARAMS_2(_caller,_target);
("ACE_UAVBattery" in (items _caller)) && {(fuel _target) < 1} && {(speed _target) < 1} && {!(isEngineOn _target)} && {(_target distance _caller) <= 4}

View File

@ -0,0 +1,34 @@
/* fnc_refuel.sqf
*
* Author: marc_book (modified by PabstMirror)
*
* Starts refueling/recharging the 'Dartar' UAVs
*
* Argument:
* 0: OBJECT - Player unit
* 1: OBJECT - UAV
*
* Return value:
* NOTHING
*/
#include "script_component.hpp"
PARAMS_2(_caller,_target);
if (!(_this call FUNC(canRefuelUAV))) exitWith {};
_onFinish = {
EXPLODE_2_PVT((_this select 0),_caller,_target);
_caller removeItem "ACE_UAVBattery";
["VehicleSetFuel", [_target], [_target, 1]] call EFUNC(common,targetEvent); //setFuel is local
};
_onFailure = {
EXPLODE_2_PVT((_this select 0),_caller,_target);
[_caller, "AmovPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation);
};
[_caller, "AinvPknlMstpSnonWnonDr_medic5", 0] call EFUNC(common,doAnimation);
[10, [_caller, _target], _onFinish, _onFailure, (localize "STR_ACE_logistics_uavbattery_Battery_Recharge"), {(_this select 0) call FUNC(canRefuelUAV)}] call EFUNC(common,progressBar);

View File

@ -0,0 +1 @@
#include "\z\ace\addons\logistics_uavbattery\script_component.hpp"

Binary file not shown.

View File

@ -0,0 +1,79 @@
ambient[]={1,1,1,1};
diffuse[]={1,1,1,1};
forcedDiffuse[]={0,0,0,0};
emmisive[]={0,0,0,1};
specular[]={0.01,0.01,0.01,1}; //amount of glossiness - the higher the number, the higher the glossiness
specularPower=500; //area of glossiness - the higher the number, the smaller the area
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1 {
texture="z\ace\addons\logistics_uavbattery\models\battery_nohq.paa";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2 {
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,dt)";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3 {
texture="#(argb,8,8,3)color(0,0,0,0,mc)";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage4 {
texture="z\ace\addons\logistics_uavbattery\models\default_as.paa";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,1};
};
};
class Stage5 {
texture="z\ace\addons\logistics_uavbattery\models\battery_smdi.paa";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage6 {
texture="#(ai,64,64,1)fresnel(4.7,1.2)";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,0};
};
};
class Stage7 {
texture="a3\data_f\env_land_ca.paa";
uvSource="tex";
class uvTransform {
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,0};
};
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,12 @@
#define COMPONENT logistics_uavbattery
#include "\z\ace\addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_LOGISTICS_UAVBATTERY
#define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_LOGISTICS_UAVBATTERY
#define DEBUG_SETTINGS DEBUG_SETTINGS_LOGISTICS_UAVBATTERY
#endif
#include "\z\ace\addons\main\script_macros.hpp"

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2014-12-21 -->
<Project name="ACE">
<Package name="logistics_uavbattery">
<Key ID="STR_ACE_logistics_uavbattery_Full">
<English>Drone is full</English>
<German>Drohne ist voll</German>
<Spanish>El VANT está lleno</Spanish>
<French>L'UAV est chargé</French>
<Polish>Dron jest naładowany</Polish>
<Hungarian>A drón fel van töltve</Hungarian>
<Czech>Dron je nabitý</Czech>
<Portuguese>O VANT está cheio</Portuguese>
<Italian>Il drone è pieno</Italian>
<Russian>БПЛА заполнен</Russian>
</Key>
<Key ID="STR_ACE_logistics_uavbattery_NoBattery">
<English>You need a UAV Battery</English>
<German>Du brauchst eine UAV-Batterie</German>
<Spanish>Necesitas una batería para VANT</Spanish>
<French>Pas de batterie UAV</French>
<Polish>Potrzebujesz baterii UAV</Polish>
<Hungarian>Szükséged van egy UAV akkumulátorra</Hungarian>
<Czech>Potřebuješ UAV-Baterii</Czech>
<Portuguese>Você precisa de uma Bateria para VANT</Portuguese>
<Italian>Hai bisogno di una Batteria UAV</Italian>
<Russian>Требуется аккумулятор БПЛА</Russian>
</Key>
<Key ID="STR_ACE_logistics_uavbattery_Recharge">
<English>Recharge</English>
<German>Aufladen</German>
<Spanish>Recargar</Spanish>
<French>Recharger</French>
<Polish>Naładuj</Polish>
<Hungarian>Feltöltés</Hungarian>
<Czech>Dobít</Czech>
<Portuguese>Recarregar</Portuguese>
<Italian>Ricarica</Italian>
<Russian>Подзарядить</Russian>
</Key>
<Key ID="STR_ACE_logistics_uavbattery_Battery_Name">
<English>UAV Battery</English>
<German>UAV-Batterie</German>
<Spanish>Batería para VANT</Spanish>
<French>Batterie UAV</French>
<Polish>Bateria UAV</Polish>
<Hungarian>UAV akkumulátor</Hungarian>
<Czech>UAV-Baterie</Czech>
<Portuguese>Bateria para VANT</Portuguese>
<Italian>Batteria UAV</Italian>
<Russian>Аккумулятор БПЛА</Russian>
</Key>
<Key ID="STR_ACE_logistics_uavbattery_Battery_Description">
<English>Used to refuel Carried UAV's</English>
<German>Verwendet zum Aufladen von tragbaren UAV's</German>
<Spanish>Usada para reabastecer el VANT</Spanish>
<French>Utilisée pour recharger l'UAV</French>
<Polish>Używana do naładowania UAV</Polish>
<Hungarian>Hordozható UAV-ok működéséhez való akkumulátor</Hungarian>
<Czech>Používané k dobíjení UAV</Czech>
<Portuguese>Usada para reabastecer VANT</Portuguese>
<Italian>Usata per ricaricare la Batteria dell'UAV</Italian>
<Russian>Используется для подзарядки БПЛА</Russian>
</Key>
<Key ID="STR_ACE_logistics_uavbattery_Battery_Recharge">
<English>Recharging ...</English>
<German>Aufladen ...</German>
<Spanish>Recargando ...</Spanish>
<French>Rechargement ...</French>
<Polish>Ładowanie ...</Polish>
<Hungarian>Akku feltöltése ...</Hungarian>
<Czech>Dobíjení ...</Czech>
<Portuguese>Recarregando ...</Portuguese>
<Italian>In ricarica ...</Italian>
<Russian>Подзаряжаем ...</Russian>
</Key>
</Package>
</Project>

Binary file not shown.

View File

@ -0,0 +1 @@
z\ace\addons\logistics_wirecutter

View File

@ -0,0 +1,6 @@
class Extended_PreInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preInit));
};
};

View File

@ -0,0 +1,12 @@
class CfgSounds {
class ACE_Wirecutter_sound {
name = "ACE_wirecutter_sound";
sound[] = {QUOTE(PATHTOF(sound\wire_cut.ogg)), "db-0", 1};
titles[] = {};
};
class ACE_Wirecutter_sound_long {
name = "ACE_wirecutter_sound_long";
sound[] = {QUOTE(PATHTOF(sound\wire_cut_long.ogg)), "db-0", 1};
titles[] = {};
};
};

View File

@ -0,0 +1,19 @@
class CfgVehicles {
class Man;
class CAManBase: Man {
class ACE_SelfActions {
class ACE_Equipment {
class GVAR(CutFence) {
displayName = "$STR_ACE_logistics_wirecutter_CutFence";
condition = QUOTE([_player] call FUNC(canCutFence));
statement = QUOTE([_player] call FUNC(cutDownFence));
exceptions[] = {};
showDisabled = 1;
priority = 0;
icon = PATHTOF(UI\wirecutter_ca.paa);
hotkey = "C";
};
};
};
};
};

View File

@ -0,0 +1,16 @@
class CfgWeapons {
class InventoryItem_Base_F;
class ACE_ItemCore;
class ACE_wirecutter: ACE_ItemCore {
author = "$STR_ACE_Core_ACETeam";
displayName = "$STR_ACE_logistics_wirecutter_wirecutterName";
descriptionShort = "$STR_ACE_logistics_wirecutter_wirecutterDescription";
model = "\A3\weapons_F\ammo\mag_univ.p3d";
picture = QUOTE(PATHTOF(ui\item_wirecutter_ca.paa));
scope = 2;
class ItemInfo: InventoryItem_Base_F {
mass = 100;
};
};
};

View File

@ -0,0 +1,11 @@
ace_logistics_wirecutter
===========
Adds an item `ACE_wirecutter` that allows cutting of fences in A3 and AiA maps.
## Maintainers
The people responsible for merging changes to this component or answering potential questions.
- [PabstMirror](https://github.com/PabstMirror)

View File

@ -0,0 +1,12 @@
#include "script_component.hpp"
ADDON = false;
PREP(canCutFence);
PREP(cutDownFence);
PREP(cutDownFenceAbort);
PREP(cutDownFenceCallback);
PREP(getNearestFence);
PREP(isFence);
ADDON = true;

View File

@ -0,0 +1,18 @@
#include "script_component.hpp"
class CfgPatches {
class ADDON {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common", "ace_interaction"};
author[] = {"gpgpgpgp", "PabstMirror"};
authorUrl = "";
VERSION_CONFIG;
};
};
#include "CfgEventHandlers.hpp"
#include "CfgVehicles.hpp"
#include "CfgSounds.hpp"
#include "CfgWeapons.hpp"

View File

@ -0,0 +1,18 @@
/* fnc_canCutFence.sqf
*
* Author: PabstMirror
*
* Condition check if player is able to cut a fence.
* Checks for "ACE_wirecutter" item and if there is a nearby fence.
*
* Argument:
* 0: OBJECT - Unit to check condition for (player)
*
* Return value:
* BOOL
*/
#include "script_component.hpp"
PARAMS_1(_unit);
("ACE_wirecutter" in (items _unit)) && {!(isNull ([_unit] call FUNC(getNearestFence)))}

View File

@ -0,0 +1,23 @@
// by gpgpgpgp, edited by commy2
#include "script_component.hpp"
PARAMS_1(_unit);
if (_unit != ACE_player) exitWith {};
_fenceObject = [ACE_player] call FUNC(getNearestFence);
if (isNull _fenceObject) exitWith {};
_timeToCut = 5;
if !([ACE_player] call EFUNC(common,isEngineer)) then {
_timeToCut = _timeToCut + 5;
};
[ACE_player, "AinvPknlMstpSnonWnonDr_medic5", 0] call EFUNC(common,doAnimation);
if (_timeToCut > 4.5) then {
playSound "ACE_wirecutter_sound_long";
} else {
playSound "ACE_wirecutter_sound";
};
[_timeToCut, [_fenceObject], {(_this select 0) call FUNC(cutDownFenceCallback)}, {(_this select 0) call FUNC(cutDownFenceAbort)}, localize "STR_ACE_logistics_wirecutter_CuttingFence"] call EFUNC(common,progressBar);

View File

@ -0,0 +1,4 @@
// by commy2
#include "script_component.hpp"
[ACE_player, "AmovPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation);

View File

@ -0,0 +1,7 @@
#include "script_component.hpp"
PARAMS_1(_fenceObject);
_fenceObject setdamage 1;
[localize "STR_ACE_logistics_wirecutter_FenceCut"] call EFUNC(common,displayTextStructured);
[ACE_player, "AmovPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation);

View File

@ -0,0 +1,25 @@
/* fnc_getNearestFence.sqf
*
* Author: PabstMirror
*
* Gets nearest fence within 5 meters to the unit.
*
* Argument:
* 0: OBJECT - Unit to search for fence objects arround
*
* Return value:
* OBJECT - Nearest object that is a fence, objNull if none found.
*/
#include "script_component.hpp"
private "_nearestFence";
PARAMS_1(_unit);
_nearestFence = objNull;
{
if ((isNull _nearestFence) && {[_x] call FUNC(isFence)}) then {
_nearestFence = _x;
};
} forEach nearestObjects [_unit, [], 5];
_nearestFence

View File

@ -0,0 +1,40 @@
/* fnc_isFence.sqf
*
* Author: PabstMirror
*
* Checks if object is a fence. Should work on any fence type, even (typeof == "").
* Call is fairly expensive because of all of the string checking.
*
* Argument:
* 0: OBJECT - Ojbect to test
*
* Return value:
* BOOL
*/
#include "script_component.hpp"
//find is case sensitive, so keep everything lowercase
#define FENCE_A3_TYPENAMES ["land_net_fence_4m_f", "land_net_fence_8m_f", "land_net_fenced_8m_f", "land_new_wiredfence_5m_f", "land_new_wiredfence_10m_dam_f", "land_new_wiredfence_10m_f", "land_pipe_fence_4m_f", "land_pipe_fence_4mnolc_f", "land_sportground_fence_f", "land_wired_fence_4m_f", "land_wired_fence_4md_f", "land_wired_fence_8m_f", "land_wired_fence_8md_f", "land_razorwire_f"]
#define FENCE_A3_P3DS ["mil_wiredfence_f.p3d"]
#define FENCE_AIA_TYPENAMES []
#define FENCE_AIA_P3DS ["wall_indfnc_3.p3d", "wall_indfnc_9.p3d", "wall_indfnc_corner.p3d", "pletivo_wired.p3d", "wall_fen1_5.p3d"]
private ["_typeOf", "_returnValue"];
PARAMS_1(_object);
_typeOf = toLower (typeOf _object);
_returnValue = false;
if (_typeOf != "") then {
_returnValue = _typeOf in (FENCE_A3_TYPENAMES + FENCE_AIA_TYPENAMES);
} else {
_typeOf = toLower (str _object); //something like "123201: wall_indfnc_9.p3d"
{
if ((_typeOf find _x) != -1) then {
_returnValue = true;
};
} forEach (FENCE_A3_P3DS + FENCE_AIA_P3DS);
};
_returnValue

View File

@ -0,0 +1 @@
#include "\z\ace\addons\logistics_wirecutter\script_component.hpp"

View File

@ -0,0 +1,12 @@
#define COMPONENT logistics_wirecutter
#include "\z\ace\addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_LOGISTICS_WIRECUTTER
#define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_LOGISTICS_WIRECUTTER
#define DEBUG_SETTINGS DEBUG_SETTINGS_LOGISTICS_WIRECUTTER
#endif
#include "\z\ace\addons\main\script_macros.hpp"

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Edited with tabler - 2014-12-21 -->
<Project name="ACE">
<Package name="Wirecutter">
<Key ID="STR_ACE_logistics_wirecutter_wirecutterName">
<English>Wirecutter</English>
<German>Drahtschneider</German>
<Spanish>Wirecutter</Spanish>
</Key>
<Key ID="STR_ACE_logistics_wirecutter_wirecutterDescription">
<English>Wirecutter</English>
</Key>
<Key ID="STR_ACE_logistics_wirecutter_CutFence">
<English>Cut Fence</English>
<German>Zaun schneiden</German>
<Spanish>Cortar alambrado</Spanish>
<Polish>Przetnij płot</Polish>
<Czech>Přestřihnout plot</Czech>
<French>Cisailler Clôture</French>
<Portuguese>Cortar Cerca</Portuguese>
<Italian>Taglia</Italian>
<Hungarian>Drótkerítés átvágása</Hungarian>
<Russian>Вырезать забор</Russian>
</Key>
<Key ID="STR_ACE_logistics_wirecutter_CuttingFence">
<English>Cutting Fences / Wires ...</English>
<German>Zaun / Draht schneiden ...</German>
<Spanish>Cortando alambrado / cables ...</Spanish>
<Polish>Przecinanie płotu / drutów ...</Polish>
<Czech>Přestřihnout plot / dráty ...</Czech>
<French>Cisaille l'obstacle ...</French>
<Portuguese>Cortando Cerca / Arame ...</Portuguese>
<Italian>Sto tagliando ...</Italian>
<Hungarian>Drótok elvágása ...</Hungarian>
<Russian>Вырезаем забор / провода ...</Russian>
</Key>
<Key ID="STR_ACE_logistics_wirecutter_FenceCut">
<English>Fence cut</English>
<German>Zaun geschnitten</German>
<Spanish>Alambrado cortado</Spanish>
<Polish>Płot przecięty</Polish>
<Czech>Plot přestřižen</Czech>
<French>Clôture cisaillée</French>
<Portuguese>Cerca cortada</Portuguese>
<Italian>Fatto!</Italian>
<Hungarian>Drótkerítés átvágva</Hungarian>
<Russian>Забор вырезан</Russian>
</Key>
</Package>
</Project>

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,17 @@
class Extended_PreInit_EventHandlers {
class ADDON {
init = QUOTE( call compile preprocessFileLineNumbers PATHTOF(XEH_preInit.sqf) );
};
};
class Extended_PostInit_EventHandlers {
class ADDON {
init = QUOTE( call compile preprocessFileLineNumbers PATHTOF(XEH_postInit.sqf) );
};
};
class Extended_Fired_Eventhandlers {
class CaManBase {
fired = QUOTE( call FUNC(handleFired) );
};
};

View File

@ -0,0 +1,27 @@
class CfgVehicles {
// TODO Stringtable usage
class Logic;
class Module_F: Logic {
class ArgumentsBaseUnits {
};
};
class GVAR(Module): Module_F {
scope = 2;
displayName = "Wind Deflection [ACE]";
icon = QUOTE(PATHTOF(data\module_icon.paa));
category = "ACE";
function = FUNC(enableModule);
functionPriority = 1;
isGlobal = 1;
isTriggerActivated = 0;
class Arguments {
class forAI {
displayName = "Enable for AI";
description = "Should the module be enabled for AI";
typeName = "BOOL";
defaultValue = 0;
};
};
};
};

View File

@ -0,0 +1,11 @@
ace_winddeflection
===============
Wind deflection for projectiles/bullets.
## Maintainers
The people responsible for merging changes to this component or answering potential questions.
- [Glowbal](https://github.com/Glowbal)
- [Ruthberg] (http://github.com/Ulteq)

View File

@ -0,0 +1,15 @@
/**
* XEH_postInit.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
#include "script_component.hpp"
if (isnil QGVAR(EnableForAI)) then {
GVAR(EnableForAI) = false;
};

View File

@ -0,0 +1,14 @@
/**
* XEH_preInit.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
#include "script_component.hpp"
PREP(handleFired);
PREP(initalizeModule);

View File

@ -0,0 +1,24 @@
#include "script_component.hpp"
class CfgPatches {
class ADDON {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_common", "ACE_weather"};
versionDesc = "ACE Wind Deflection";
version = VERSION;
author[] = {$STR_ACE_Core_ACETeam, "Glowbal", "Ruthberg"};
authorUrl = "http://csemod.com";
};
};
class CfgAddons {
class PreloadAddons {
class ADDON {
list[] = {QUOTE(ADDON)};
};
};
};
#include "CfgVehicles.h"

Binary file not shown.

View File

@ -0,0 +1,64 @@
/**
* fnc HandleFired.
* Handles wind deflection for projectiles.
* Is expected to be triggered by the fired eventhandler from BI.
*
* Params:
* 1. unit: Object - Object the event handler is assigned to
* 2. weapon: String - Fired weapon
* 3. muzzle: String - Muzzle that was used
* 4. mode: String - Current mode of the fired weapon
* 5. ammo: String - Ammo used
* 6. magazine: String - magazine name which was used
* 7. projectile: Object - Object of the projectile that was shot (Arma 2: OA and onwards)
*
* Author: Glowbal, Ruthberg
*
*/
#include "script_component.hpp"
private ["_unit", "_weapon", "_ammo", "_bullet", "_airFriction", "_index"];
_unit = _this select 0;
if (_unit distance ACE_player > 3000) exitWith {false}; // Large enough distance to not simulate any wind deflection.
if (!GVAR(EnableForAI) && !([_unit] call EFUNC(common,isPlayer))) exitWith {false};
_bullet = _this select 6;
if (_bullet isKindOf "BulletBase") then {
[{
private ["_bullet", "_airFriction", "_args", "_deltaT", "_bulletVelocity", "_bulletSpeed", "_trueVelocity", "_trueVelocity", "_dragRef", "_drag", "_accelRef", "_accel"];
_args = _this select 0;
_bullet = _args select 0;
_airFriction = _args select 1;
_time = _args select 2;
if (!alive _bullet) exitwith {
[_this select 1] call cba_fnc_removePerFrameHandler;
};
_deltaT = time - _time;
_args set[2, time];
_bulletVelocity = velocity _bullet;
_bulletSpeed = vectorMagnitude _bulletVelocity;
if (vectorMagnitude ACE_wind > 0) then {
_trueVelocity = _bulletVelocity vectorDiff ACE_wind;
_trueSpeed = vectorMagnitude _trueVelocity;
_dragRef = _deltaT * _airFriction * _bulletSpeed * _bulletSpeed;
_accelRef = (vectorNormalized _bulletVelocity) vectorMultiply (_dragRef);
_bulletVelocity = _bulletVelocity vectorDiff _accelRef;
_drag = _deltaT * _airFriction * _trueSpeed;
_accel = _trueVelocity vectorMultiply (_drag);
_bulletVelocity = _bulletVelocity vectorAdd _accel;
};
_bullet setVelocity _bulletVelocity;
// TODO expand with advanced ballistics functionality.
}, 0, [_bullet, getNumber(configFile >> "cfgAmmo" >> (_this select 4) >> "airFriction"), time]] call CBA_fnc_addPerFrameHandler;
};
true;

View File

@ -0,0 +1,19 @@
/**
* fnc_initalizeModule.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
#include "script_component.hpp"
if (!hasInterface) exitwith {}; // No need for this module on HC or dedicated server.
private ["_logic"];
_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param;
if (!isNull _logic) then {
[_logic, QGVAR(EnableForAI), "forAI" ] call EFUNC(common,readBooleanParameterFromModule);
};

View File

@ -0,0 +1,12 @@
#define COMPONENT windDeflection
#include "\z\ace\addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_WINDDEFLECTION
#define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_WINDDEFLECTION
#define DEBUG_SETTINGS DEBUG_SETTINGS_WINDDEFLECTION
#endif
#include "\z\ace\addons\main\script_macros.hpp"

View File

@ -0,0 +1,12 @@
#define COMPONENT winddeflection
#include "\z\ace\addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_WINDDEFLECTION
#define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_WINDDEFLECTION
#define DEBUG_SETTINGS DEBUG_SETTINGS_WINDDEFLECTION
#endif
#include "\z\ace\addons\main\script_macros.hpp"

View File

@ -1,32 +1,32 @@
<?xml version="1.0" encoding="utf-8" ?>
<Project name="Combat Space Enhancement">
<Package name="cse_sys_winddeflection">
<Project name="ACE">
<Package name="WindDeflection">
<Container ID="Weather_Meter">
<Key ID="STR_CSE_WEATHER_METER_WIND_CATEGORY">
<Key ID="STR_ACE_WEATHER_METER_WIND_CATEGORY">
<Original>Wind Information</Original>
<English>Wind Information</English>
<Polish>Informacje o wietrze</Polish>
<Spanish>Información del viento</Spanish>
</Key>
<Key ID="STR_CSE_WEATHER_METER_WIND_DIRECTION">
<Key ID="STR_ACE_WEATHER_METER_WIND_DIRECTION">
<Original>Direction: %1</Original>
<English>Direction: %1</English>
<Polish>Kierunek: %1</Polish>
<Spanish>Dirección: %1</Spanish>
</Key>
<Key ID="STR_CSE_WEATHER_METER_WIND_SPEED">
<Key ID="STR_ACE_WEATHER_METER_WIND_SPEED">
<Original>Speed: %1 m/s</Original>
<English>Speed: %1 m/s</English>
<Polish>Prędkość: %1</Polish>
<Spanish>Velocidad: %1 m/s</Spanish>
</Key>
<Key ID="STR_CSE_WEATHER_METER_WEATHER_CATEGORY">
<Key ID="STR_ACE_WEATHER_METER_WEATHER_CATEGORY">
<Original>Weather Information</Original>
<English>Weather Information</English>
<Polish>Informacje o pogodzie</Polish>
<Spanish>Información Meteorológica</Spanish>
</Key>
<Key ID="STR_CSE_WEATHER_METER_WEATHER_HUMIDITY">
<Key ID="STR_ACE_WEATHER_METER_WEATHER_HUMIDITY">
<Original>Humidity: %1%</Original>
<English>Humidity: %1%</English>
<Polish>Wilgotność: %1</Polish>