mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' of git@github.com:KoffeinFlummi/ACE3.git into aceSettings
This commit is contained in:
commit
99cf0a75ee
@ -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>
|
||||
|
@ -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; };
|
||||
};
|
||||
};
|
||||
};
|
@ -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;
|
||||
};
|
||||
};
|
@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -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;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -1,2 +0,0 @@
|
||||
#include "gui\define.hpp"
|
||||
#include "gui\weather_meter.hpp"
|
@ -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"
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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;
|
@ -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;
|
||||
|
||||
};
|
@ -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 "";
|
@ -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 "";
|
@ -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
|
@ -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';";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
@ -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;
|
||||
};
|
@ -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.
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -2,4 +2,4 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
QGVAR(CurrentTooltip) pushBack (_this select 0);
|
||||
GVAR(CurrentTooltip) pushBack (_this select 0);
|
||||
|
@ -15,7 +15,7 @@ class Extended_GetIn_EventHandlers {
|
||||
class ADDON {
|
||||
getIn = QUOTE(call FUNC(onGetin));
|
||||
};
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_GetOut_EventHandlers {
|
||||
|
1
addons/logistics_uavbattery/$PBOPREFIX$
Normal file
1
addons/logistics_uavbattery/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
||||
z\ace\addons\logistics_uavbattery
|
5
addons/logistics_uavbattery/CfgEventHandlers.hpp
Normal file
5
addons/logistics_uavbattery/CfgEventHandlers.hpp
Normal file
@ -0,0 +1,5 @@
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
};
|
||||
};
|
27
addons/logistics_uavbattery/CfgVehicles.hpp
Normal file
27
addons/logistics_uavbattery/CfgVehicles.hpp
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
15
addons/logistics_uavbattery/CfgWeapons.hpp
Normal file
15
addons/logistics_uavbattery/CfgWeapons.hpp
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
11
addons/logistics_uavbattery/README.md
Normal file
11
addons/logistics_uavbattery/README.md
Normal 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)
|
8
addons/logistics_uavbattery/XEH_preInit.sqf
Normal file
8
addons/logistics_uavbattery/XEH_preInit.sqf
Normal file
@ -0,0 +1,8 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
ADDON = false;
|
||||
|
||||
PREP(canRefuelUAV);
|
||||
PREP(refuelUAV);
|
||||
|
||||
ADDON = true;
|
17
addons/logistics_uavbattery/config.cpp
Normal file
17
addons/logistics_uavbattery/config.cpp
Normal 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"
|
19
addons/logistics_uavbattery/functions/fnc_canRefuelUAV.sqf
Normal file
19
addons/logistics_uavbattery/functions/fnc_canRefuelUAV.sqf
Normal 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}
|
34
addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf
Normal file
34
addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf
Normal 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);
|
@ -0,0 +1 @@
|
||||
#include "\z\ace\addons\logistics_uavbattery\script_component.hpp"
|
BIN
addons/logistics_uavbattery/models/ace_battery.p3d
Normal file
BIN
addons/logistics_uavbattery/models/ace_battery.p3d
Normal file
Binary file not shown.
79
addons/logistics_uavbattery/models/battery.rvmat
Normal file
79
addons/logistics_uavbattery/models/battery.rvmat
Normal 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};
|
||||
};
|
||||
};
|
BIN
addons/logistics_uavbattery/models/battery_co.paa
Normal file
BIN
addons/logistics_uavbattery/models/battery_co.paa
Normal file
Binary file not shown.
BIN
addons/logistics_uavbattery/models/battery_nohq.paa
Normal file
BIN
addons/logistics_uavbattery/models/battery_nohq.paa
Normal file
Binary file not shown.
BIN
addons/logistics_uavbattery/models/battery_smdi.paa
Normal file
BIN
addons/logistics_uavbattery/models/battery_smdi.paa
Normal file
Binary file not shown.
BIN
addons/logistics_uavbattery/models/default_as.paa
Normal file
BIN
addons/logistics_uavbattery/models/default_as.paa
Normal file
Binary file not shown.
12
addons/logistics_uavbattery/script_component.hpp
Normal file
12
addons/logistics_uavbattery/script_component.hpp
Normal 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"
|
78
addons/logistics_uavbattery/stringtable.xml
Normal file
78
addons/logistics_uavbattery/stringtable.xml
Normal 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>
|
BIN
addons/logistics_uavbattery/ui/UAV_battery.paa
Normal file
BIN
addons/logistics_uavbattery/ui/UAV_battery.paa
Normal file
Binary file not shown.
1
addons/logistics_wirecutter/$PBOPREFIX$
Normal file
1
addons/logistics_wirecutter/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
||||
z\ace\addons\logistics_wirecutter
|
6
addons/logistics_wirecutter/CfgEventHandlers.hpp
Normal file
6
addons/logistics_wirecutter/CfgEventHandlers.hpp
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
};
|
||||
};
|
12
addons/logistics_wirecutter/CfgSounds.hpp
Normal file
12
addons/logistics_wirecutter/CfgSounds.hpp
Normal 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[] = {};
|
||||
};
|
||||
};
|
19
addons/logistics_wirecutter/CfgVehicles.hpp
Normal file
19
addons/logistics_wirecutter/CfgVehicles.hpp
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
16
addons/logistics_wirecutter/CfgWeapons.hpp
Normal file
16
addons/logistics_wirecutter/CfgWeapons.hpp
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
11
addons/logistics_wirecutter/README.md
Normal file
11
addons/logistics_wirecutter/README.md
Normal 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)
|
12
addons/logistics_wirecutter/XEH_preInit.sqf
Normal file
12
addons/logistics_wirecutter/XEH_preInit.sqf
Normal 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;
|
18
addons/logistics_wirecutter/config.cpp
Normal file
18
addons/logistics_wirecutter/config.cpp
Normal 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"
|
18
addons/logistics_wirecutter/functions/fnc_canCutFence.sqf
Normal file
18
addons/logistics_wirecutter/functions/fnc_canCutFence.sqf
Normal 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)))}
|
23
addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf
Normal file
23
addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf
Normal 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);
|
@ -0,0 +1,4 @@
|
||||
// by commy2
|
||||
#include "script_component.hpp"
|
||||
|
||||
[ACE_player, "AmovPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation);
|
@ -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);
|
@ -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
|
40
addons/logistics_wirecutter/functions/fnc_isFence.sqf
Normal file
40
addons/logistics_wirecutter/functions/fnc_isFence.sqf
Normal 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
|
@ -0,0 +1 @@
|
||||
#include "\z\ace\addons\logistics_wirecutter\script_component.hpp"
|
12
addons/logistics_wirecutter/script_component.hpp
Normal file
12
addons/logistics_wirecutter/script_component.hpp
Normal 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"
|
BIN
addons/logistics_wirecutter/sound/wire_cut.ogg
Normal file
BIN
addons/logistics_wirecutter/sound/wire_cut.ogg
Normal file
Binary file not shown.
BIN
addons/logistics_wirecutter/sound/wire_cut_long.ogg
Normal file
BIN
addons/logistics_wirecutter/sound/wire_cut_long.ogg
Normal file
Binary file not shown.
50
addons/logistics_wirecutter/stringtable.xml
Normal file
50
addons/logistics_wirecutter/stringtable.xml
Normal 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>
|
BIN
addons/logistics_wirecutter/ui/item_wirecutter_ca.paa
Normal file
BIN
addons/logistics_wirecutter/ui/item_wirecutter_ca.paa
Normal file
Binary file not shown.
BIN
addons/logistics_wirecutter/ui/wirecutter_ca.paa
Normal file
BIN
addons/logistics_wirecutter/ui/wirecutter_ca.paa
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
17
addons/winddeflection/CfgEventHandlers.hpp
Normal file
17
addons/winddeflection/CfgEventHandlers.hpp
Normal 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) );
|
||||
};
|
||||
};
|
27
addons/winddeflection/CfgVehicles.h
Normal file
27
addons/winddeflection/CfgVehicles.h
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
11
addons/winddeflection/README.md
Normal file
11
addons/winddeflection/README.md
Normal 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)
|
15
addons/winddeflection/XEH_postInit.sqf
Normal file
15
addons/winddeflection/XEH_postInit.sqf
Normal 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;
|
||||
};
|
14
addons/winddeflection/XEH_preInit.sqf
Normal file
14
addons/winddeflection/XEH_preInit.sqf
Normal 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);
|
24
addons/winddeflection/config.cpp
Normal file
24
addons/winddeflection/config.cpp
Normal 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"
|
BIN
addons/winddeflection/data/module_icon.paa
Normal file
BIN
addons/winddeflection/data/module_icon.paa
Normal file
Binary file not shown.
64
addons/winddeflection/functions/fnc_handleFired.sqf
Normal file
64
addons/winddeflection/functions/fnc_handleFired.sqf
Normal 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;
|
19
addons/winddeflection/functions/fnc_initalizeModule.sqf
Normal file
19
addons/winddeflection/functions/fnc_initalizeModule.sqf
Normal 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);
|
||||
};
|
12
addons/winddeflection/functions/script_component.hpp
Normal file
12
addons/winddeflection/functions/script_component.hpp
Normal 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"
|
12
addons/winddeflection/script_component.hpp
Normal file
12
addons/winddeflection/script_component.hpp
Normal 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"
|
@ -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>
|
Loading…
Reference in New Issue
Block a user