mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
@ -51,6 +51,7 @@ Bla1337
|
||||
BlackPixxel <blackpixxel96@gmail.com>
|
||||
BlackQwar
|
||||
Brakoviejo
|
||||
Brandon (TCVM) <brandondanyluk366@gmail.com>
|
||||
Brisse <brisse@outlook.com>
|
||||
Brostrom.A | Evul <andreas.brostrom.ce@gmail.com>
|
||||
BullHorn <bullhorn7@gmail.com>
|
||||
@ -60,6 +61,7 @@ Clon1998 <ps.patti1998@gmail.com>
|
||||
Codingboy
|
||||
Coren <coren4@gmail.com>
|
||||
Crusty
|
||||
C0kkie
|
||||
Dharma Bellamkonda <dharma.bellamkonda@gmail.com>
|
||||
Dimaslg <dimaslg@telecable.es>
|
||||
diwako
|
||||
|
@ -91,6 +91,7 @@
|
||||
<Chinesesimp>启用枪口初速变化</Chinesesimp>
|
||||
<French>Activer les variations de la vitesse initiale</French>
|
||||
<Polish>Aktywuj wariację prędkości wylotowej</Polish>
|
||||
<Russian>Вкл. вариацию начальной скорости</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_muzzleVelocityVariationEnabled_Description">
|
||||
<English>Simulates slight variations in muzzle velocity between each shot</English>
|
||||
@ -102,6 +103,7 @@
|
||||
<Chinesesimp>模拟每发子弹的枪口初速都略有不同</Chinesesimp>
|
||||
<French>Simule les légères variations</French>
|
||||
<Polish>Symuluje lekkie zmiany w prędkości wylotowej między każdym strzałem</Polish>
|
||||
<Russian>Имитирует небольшие изменения начальной скорости при каждом выстреле</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_DisplayName">
|
||||
<English>Enable Ammo Temperature Simulation</English>
|
||||
|
@ -47,8 +47,8 @@ if (!hasInterface) exitWith {};
|
||||
[QEGVAR(medical,pain), { // 0->1.0, 0.5->1.05, 1->1.1
|
||||
linearConversion [0, 1, (_this getVariable [QEGVAR(medical,pain), 0]), 1, 1.1, true];
|
||||
}] call FUNC(addDutyFactor);
|
||||
[QEGVAR(medical,bloodVolume), { // 100->1.0, 90->1.1, 80->1.2
|
||||
linearConversion [6, 0, (_this getVariable [QEGVAR(medical,bloodVolume), 100]), 1, 2, true];
|
||||
[QEGVAR(medical,bloodVolume), { // 6->1.0, 5->1.167, 4->1.33
|
||||
linearConversion [6, 0, (_this getVariable [QEGVAR(medical,bloodVolume), 6]), 1, 2, true];
|
||||
}] call FUNC(addDutyFactor);
|
||||
};
|
||||
if (["ACE_Dragging"] call EFUNC(common,isModLoaded)) then {
|
||||
|
@ -10,5 +10,6 @@ PREP_RECOMPILE_END;
|
||||
|
||||
GVAR(staminaBarWidth) = 10 * (((safezoneW / safezoneH) min 1.2) / 40);
|
||||
GVAR(dutyList) = [[], []];
|
||||
GVAR(setAnimExclusions) = [];
|
||||
|
||||
ADDON = true;
|
||||
|
@ -58,8 +58,9 @@ if (GVAR(ppeBlackoutLast) == 1) then {
|
||||
|
||||
// - Physical effects ---------------------------------------------------------
|
||||
if (GVAR(isSwimming)) exitWith {
|
||||
_unit setAnimSpeedCoef linearConversion [0.7, 0.9, _fatigue, 1, 0.5, true];
|
||||
|
||||
if (GVAR(setAnimExclusions) isEqualTo []) then {
|
||||
_unit setAnimSpeedCoef linearConversion [0.7, 0.9, _fatigue, 1, 0.5, true];
|
||||
};
|
||||
if ((isSprintAllowed _unit) && {_fatigue > 0.7}) then {
|
||||
[_unit, "blockSprint", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
|
||||
} else {
|
||||
@ -69,7 +70,10 @@ if (GVAR(isSwimming)) exitWith {
|
||||
};
|
||||
};
|
||||
if ((getAnimSpeedCoef _unit) != 1) then {
|
||||
_unit setAnimSpeedCoef 1;
|
||||
if (GVAR(setAnimExclusions) isEqualTo []) then {
|
||||
TRACE_1("reset",getAnimSpeedCoef _unit);
|
||||
_unit setAnimSpeedCoef 1;
|
||||
};
|
||||
};
|
||||
|
||||
if (_overexhausted) then {
|
||||
|
@ -11,6 +11,7 @@
|
||||
<Korean>ACE 고급 피로도</Korean>
|
||||
<French>ACE Fatigue Avancée</French>
|
||||
<Polish>ACE Zaawansowane Zmęczenie</Polish>
|
||||
<Russian>ACE Продвинутая усталость</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_PerformanceFactor">
|
||||
<English>Performance Factor</English>
|
||||
@ -22,6 +23,7 @@
|
||||
<Italian>Fattore Prestazione</Italian>
|
||||
<Chinese>體力值</Chinese>
|
||||
<Chinesesimp>体力值</Chinesesimp>
|
||||
<Russian>Фактор производительности</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_PerformanceFactor_Description">
|
||||
<English>Influences the overall performance of all players with no custom factor. Higher means better.</English>
|
||||
@ -33,6 +35,7 @@
|
||||
<Italian>Influenza qualsiasi prestazione di tutti i giocatori smuniti di un fattore personalizzato. Maggiore significa migliore.</Italian>
|
||||
<Chinese>影響所有玩家的體力表現,值越高代表體力越好</Chinese>
|
||||
<Chinesesimp>影响所有玩家的体力表现,值越高代表体力越好</Chinesesimp>
|
||||
<Russian>Влияет на общую производительность игроков, у которых не задано персональное значение.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_PerformanceFactor_EdenDescription">
|
||||
<English>Influences the overall performance of this unit. Higher means better.</English>
|
||||
@ -44,6 +47,7 @@
|
||||
<Italian>Influenza qualsiasi prestazione di questa unità. Maggiore significa migliore.</Italian>
|
||||
<Chinese>影響這個單位的體力表現,值越高代表體力越好</Chinese>
|
||||
<Chinesesimp>影响这个单位的体力表现,值越高代表体力越好</Chinesesimp>
|
||||
<Russian>Влияет на общую производительность юнита.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_RecoveryFactor">
|
||||
<English>Recovery Factor</English>
|
||||
@ -55,6 +59,7 @@
|
||||
<Italian>Fattore Recupero</Italian>
|
||||
<Chinese>回復值</Chinese>
|
||||
<Chinesesimp>回复值</Chinesesimp>
|
||||
<Russian>Фактор восстановления</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_RecoveryFactor_Description">
|
||||
<English>Changes how fast the player recovers when resting. Higher is faster.</English>
|
||||
@ -66,6 +71,7 @@
|
||||
<Italian>Determina in quanto tempo il giocatore recupera quando rilassato. Maggiore significa migliore.</Italian>
|
||||
<Chinese>決定玩家休息多久就能回復體力,值越高恢復越快</Chinese>
|
||||
<Chinesesimp>决定玩家休息多久就能回复体力,值越高恢复越快</Chinesesimp>
|
||||
<Russian>Изменяет скорость восстановления игрока во время отдыха. Чем выше, тем быстрее.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_LoadFactor">
|
||||
<English>Load Factor</English>
|
||||
@ -77,6 +83,7 @@
|
||||
<Italian>Fattore Caricamento</Italian>
|
||||
<Chinese>負重量</Chinese>
|
||||
<Chinesesimp>负重量</Chinesesimp>
|
||||
<Russian>Фактор нагрузки</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_LoadFactor_Description">
|
||||
<English>Increases or decreases how much weight influences the players performance. Zero means equipment weight has no performance influence.</English>
|
||||
@ -88,6 +95,7 @@
|
||||
<Italian>Incrementa o decrementa quanto il peso influenza le prestazioni dei giocatori. Zero significa che il peso dell'equipaggiamento non ha alcuna influenza nelle prestazioni.</Italian>
|
||||
<Chinese>增加或降低玩家所能承受的負重量. 如設定值為0, 代表裝備的重量將不會影響到玩家的體力表現</Chinese>
|
||||
<Chinesesimp>增加或降低玩家所能承受的负重量. 如设定值为0, 代表装备的重量将不会影响到玩家的体力表现</Chinesesimp>
|
||||
<Russian>Увеличивает или уменьшает вес, влияющий на производительность игроков. Ноль означает, что вес снаряжения не влияет на производительность</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_TerrainGradientFactor">
|
||||
<English>Terrain Gradient Factor</English>
|
||||
@ -99,6 +107,7 @@
|
||||
<Italian>Fattore Pendenza Terreno</Italian>
|
||||
<Chinese>地形陡峭影響值</Chinese>
|
||||
<Chinesesimp>地形陡峭影响值</Chinesesimp>
|
||||
<Russian>Фактор местности</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_TerrainGradientFactor_Description">
|
||||
<English>Sets how much steep terrain increases stamina loss. Higher means higher stamina loss.</English>
|
||||
@ -110,24 +119,29 @@
|
||||
<Italian>Stabilisce quanto la pendenza del terreno incrementa la perdita della stamina. Maggiore significa più stamina persa.</Italian>
|
||||
<Chinese>設定陡峭的地形將會影響多少體力的流失,值越高代表體力流失越快</Chinese>
|
||||
<Chinesesimp>设定陡峭的地形将会影响多少体力的流,失值越高代表体力流失越快</Chinesesimp>
|
||||
<Russian>Устанавливает, насколько крутая местность увеличивает потерю выносливости. Чем выше, тем быстрее теряется выносливость.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_SwayFactor">
|
||||
<English>Sway factor</English>
|
||||
<German>Verwacklungsfaktor</German>
|
||||
<Japanese>手ぶれ因数</Japanese>
|
||||
<Chinesesimp>抖动因数</Chinesesimp>
|
||||
<Chinese>抖動因素</Chinese>
|
||||
<French>Facteur de stabilisation</French>
|
||||
<Italian>Fattore di oscillazione</Italian>
|
||||
<Polish>Czynnik kołysania</Polish>
|
||||
<Russian>Фактор колебания прицела</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_SwayFactor_Description">
|
||||
<English>Influences the amount of weapon sway. Higher means more sway.</English>
|
||||
<German>Beeinflusst den Faktor, wie ruhig man eine Waffe halten kann. Ein höherer Wert bedeutet weniger Stabilisierung</German>
|
||||
<Japanese>武器を持つ手のぶれ度合いを設定します。 値が高ければ高いほど、手ぶれが強くなります。</Japanese>
|
||||
<Chinesesimp>影响手持武器的晃动程度,数值越高,抖动的越厉害.</Chinesesimp>
|
||||
<Chinese>影響手持武器晃動程度,數值越高抖動越厲害</Chinese>
|
||||
<French>Influence les mouvements de l'arme, une valeur plus élevée signifie plus de mouvements</French>
|
||||
<Italian>Influenza l'ammontare di oscillazione dell'arma. Maggiore significa più oscillazione.</Italian>
|
||||
<Polish>Wpływa na poziom kołysania broni. Większa ilość znaczy większe kołysanie.</Polish>
|
||||
<Russian>Влияет на колебания прицела оружия. Чем выше - тем больше.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_Enabled">
|
||||
<English>Enabled</English>
|
||||
@ -139,6 +153,7 @@
|
||||
<Italian>Abilitato</Italian>
|
||||
<Chinese>啟用</Chinese>
|
||||
<Chinesesimp>启用</Chinesesimp>
|
||||
<Russian>Включена</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_Enabled_Description">
|
||||
<English>Enables/disables Advanced Fatigue.</English>
|
||||
@ -150,6 +165,7 @@
|
||||
<Italian>Abilita/disabilita la Fatica Avanzata.</Italian>
|
||||
<Chinese>啟用/關閉進階體力.</Chinese>
|
||||
<Chinesesimp>启用/关闭进阶体力.</Chinesesimp>
|
||||
<Russian>Включает / Отключает Продвинутую усталость</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_EnableStaminaBar">
|
||||
<English>Show stamina bar</English>
|
||||
@ -161,6 +177,7 @@
|
||||
<Italian>Mostra barra stamina</Italian>
|
||||
<Chinese>顯示體力條</Chinese>
|
||||
<Chinesesimp>显示体力条</Chinesesimp>
|
||||
<Russian>Показать шкалу усталости</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_EnableStaminaBar_Description">
|
||||
<English>Shows the stamina bar.</English>
|
||||
@ -172,6 +189,7 @@
|
||||
<Italian>Mostra la barra della stamina.</Italian>
|
||||
<Chinese>顯示體力條</Chinese>
|
||||
<Chinesesimp>显示体力条</Chinesesimp>
|
||||
<Russian>Показывает шкалу усталости.</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -26,3 +26,8 @@ TRACE_1("Fired",_this);
|
||||
{
|
||||
_this call _x;
|
||||
} forEach ((_this select 0) getVariable "cba_xeh_fired");
|
||||
|
||||
// Call muzzle fired EH
|
||||
{
|
||||
_this call compile getText (_x >> "fired");
|
||||
} forEach (configProperties [configFile >> "CfgWeapons" >> "Throw" >> (_this select 2) >> "EventHandlers", "isClass _x", true]);
|
||||
|
@ -3,6 +3,7 @@
|
||||
<Package name="ai">
|
||||
<Key ID="STR_ACE_ai_GarrisonInvalidPosition">
|
||||
<English>Invalid position provided.</English>
|
||||
<German>Ungültige Position</German>
|
||||
<French>Position invalide fourni</French>
|
||||
<Japanese>位置が無効です。</Japanese>
|
||||
<Italian>Posizione invalida fornita.</Italian>
|
||||
@ -10,9 +11,11 @@
|
||||
<Chinesesimp>提供的位置无效。</Chinesesimp>
|
||||
<Korean>위치가 잘못되었습니다.</Korean>
|
||||
<Polish>Podano błędną pozycję.</Polish>
|
||||
<Russian>Указана неверная позиция</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ai_GarrisonNoUnits">
|
||||
<English>No units provided.</English>
|
||||
<German>Keine Einheit ausgewählt</German>
|
||||
<French>Aucune unité fourni</French>
|
||||
<Japanese>ユニットがありません。</Japanese>
|
||||
<Italian>Nessuna unità fornita.</Italian>
|
||||
@ -20,9 +23,11 @@
|
||||
<Chinesesimp>找不到可用的单位。</Chinesesimp>
|
||||
<Korean>병력이 없습니다.</Korean>
|
||||
<Polish>Nie podano żadnych jednostek.</Polish>
|
||||
<Russian>Не указаны юниты</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ai_GarrisonNotEnoughPos">
|
||||
<English>There aren't enough positions to place all units.</English>
|
||||
<German>Es gibt nicht genug Positionen, um alle Einheiten zu platzieren</German>
|
||||
<French>Il n'y a pas assez de positions pour placer toutes les unités</French>
|
||||
<Japanese>全ユニットを置くために十分な位置がありません。</Japanese>
|
||||
<Italian>Non ci sono abbastanza posizioni per piazzare tutte le unità.</Italian>
|
||||
@ -30,9 +35,11 @@
|
||||
<Chinesesimp>没有足够的位置能摆放所有单位。</Chinesesimp>
|
||||
<Korean>모든 병력을 배치 할 공간이 없습니다.</Korean>
|
||||
<Polish>Nie ma wystarczającej ilości pozycji, aby umieścić wszystkie jednostki.</Polish>
|
||||
<Russian>Недостаточно позиций для размещения всех юнитов</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ai_GarrisonNoBuilding">
|
||||
<English>No building found.</English>
|
||||
<German>Kein Gebäude gefunden</German>
|
||||
<French>Aucun bâtiment trouvé</French>
|
||||
<Japanese>建物がありません。</Japanese>
|
||||
<Italian>Nessun edificio trovato.</Italian>
|
||||
@ -40,6 +47,7 @@
|
||||
<Chinesesimp>没找到建筑物。</Chinesesimp>
|
||||
<Korean>건물이 없습니다.</Korean>
|
||||
<Polish>Nie znaleziono budynku.</Polish>
|
||||
<Russian>Здание не найдено</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
BIN
addons/apl/ACE_CSW_Bag.p3d
Normal file
BIN
addons/apl/ACE_CSW_Bag.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ACE_CSW_m3_tripod.p3d
Normal file
BIN
addons/apl/ACE_CSW_m3_tripod.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ACE_CSW_mortarBaseplate.p3d
Normal file
BIN
addons/apl/ACE_CSW_mortarBaseplate.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_csw_tripod_ags30.p3d
Normal file
BIN
addons/apl/ace_csw_tripod_ags30.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_csw_tripod_kord.p3d
Normal file
BIN
addons/apl/ace_csw_tripod_kord.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_csw_tripod_m122.p3d
Normal file
BIN
addons/apl/ace_csw_tripod_m122.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_csw_tripod_m220.p3d
Normal file
BIN
addons/apl/ace_csw_tripod_m220.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_csw_tripod_spg9.p3d
Normal file
BIN
addons/apl/ace_csw_tripod_spg9.p3d
Normal file
Binary file not shown.
95
addons/apl/data/csw_nsv.rvmat
Normal file
95
addons/apl/data/csw_nsv.rvmat
Normal file
@ -0,0 +1,95 @@
|
||||
ambient[]={1,1,1,1.000000};
|
||||
diffuse[]={1,1,1,1.000000};
|
||||
forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
|
||||
emmisive[]={0.000000,0.000000,0.000000,1.000000};
|
||||
specular[]={1,1,1,1.000000};
|
||||
specularPower=40.000000;
|
||||
PixelShaderID="super";
|
||||
VertexShaderID="super";
|
||||
class Stage1
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\csw_nsv_nohq.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage2
|
||||
{
|
||||
texture="a3\weapons_f\Data\DetailMaps\metal_detail_dt.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={8.0000,0.000000,0.000000};
|
||||
up[]={0.000000,8.0000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage3
|
||||
{
|
||||
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage4
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(1,1,1,1,AS)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage5
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\csw_nsv_smdi.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage6
|
||||
{
|
||||
texture = "#(ai,32,128,1)fresnel(3.38,5.33)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage7
|
||||
{
|
||||
texture="a3\data_f\env_land_co.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class StageTI {
|
||||
texture = "a3\data_f\default_vehicle_ti_ca.paa";
|
||||
};
|
BIN
addons/apl/data/csw_nsv_co.paa
Normal file
BIN
addons/apl/data/csw_nsv_co.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_nsv_nohq.paa
Normal file
BIN
addons/apl/data/csw_nsv_nohq.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_nsv_smdi.paa
Normal file
BIN
addons/apl/data/csw_nsv_smdi.paa
Normal file
Binary file not shown.
92
addons/apl/data/csw_spg9.rvmat
Normal file
92
addons/apl/data/csw_spg9.rvmat
Normal file
@ -0,0 +1,92 @@
|
||||
ambient[] = {1.0,1.0,1.0,1.0};
|
||||
diffuse[] = {1.0,1.0,1.0,1.0};
|
||||
forcedDiffuse[] = {0.0,0.0,0.0,0.0};
|
||||
emmisive[] = {0.0,0.0,0.0,1.0};
|
||||
specular[] = {0.545,0.545,0.545,1.0};
|
||||
specularPower = 100.0;
|
||||
PixelShaderID = "Super";
|
||||
VertexShaderID = "Super";
|
||||
class Stage1
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\csw_spg9_nohq.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,1.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage2
|
||||
{
|
||||
texture = "a3\weapons_f\Data\DetailMaps\metal_detail_dt.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {8.0,0.0,0.0};
|
||||
up[] = {0.0,2.0,0.0};
|
||||
dir[] = {0.0,0.0,1.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage3
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,1.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage4
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(1,1,1,1,AS)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,1.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage5
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\csw_spg9_smdi.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,1.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage6
|
||||
{
|
||||
texture = "#(ai,32,128,1)fresnel(1.89,1.02)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,1.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage7
|
||||
{
|
||||
texture="a3\data_f\env_land_co.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,1.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
BIN
addons/apl/data/csw_spg9_co.paa
Normal file
BIN
addons/apl/data/csw_spg9_co.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_spg9_nohq.paa
Normal file
BIN
addons/apl/data/csw_spg9_nohq.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_spg9_smdi.paa
Normal file
BIN
addons/apl/data/csw_spg9_smdi.paa
Normal file
Binary file not shown.
32
addons/apl/data/csw_tow_merge.rvmat
Normal file
32
addons/apl/data/csw_tow_merge.rvmat
Normal file
@ -0,0 +1,32 @@
|
||||
ambient[]={1.000000,1.000000,1.000000,1.000000};
|
||||
diffuse[]={1.000000,1.000000,1.000000,1.000000};
|
||||
forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
|
||||
emmisive[]={0.000000,0.000000,0.000000,1.000000};
|
||||
specular[]={0.3000000,0.3000000,0.3000000,1.000000};
|
||||
specularPower=100.000000;
|
||||
PixelShaderID="NormalMapSpecularDIMap";
|
||||
VertexShaderID="NormalMap";
|
||||
class Stage1
|
||||
{
|
||||
texture="z\ace\addons\apl\data\csw_tow_merge_nohq.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage2
|
||||
{
|
||||
texture="z\ace\addons\apl\data\csw_tow_merge_smdi.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
BIN
addons/apl/data/csw_tow_merge_co.paa
Normal file
BIN
addons/apl/data/csw_tow_merge_co.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_tow_merge_nohq.paa
Normal file
BIN
addons/apl/data/csw_tow_merge_nohq.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_tow_merge_smdi.paa
Normal file
BIN
addons/apl/data/csw_tow_merge_smdi.paa
Normal file
Binary file not shown.
32
addons/apl/data/csw_tripod_ags.rvmat
Normal file
32
addons/apl/data/csw_tripod_ags.rvmat
Normal file
@ -0,0 +1,32 @@
|
||||
ambient[] = {1.0,1.0,1.0,1.0};
|
||||
diffuse[] = {1.0,1.0,1.0,1.0};
|
||||
forcedDiffuse[] = {0.0,0.0,0.0,0.0};
|
||||
emmisive[] = {0.0,0.0,0.0,0.0};
|
||||
specular[] = {0.3,0.3,0.3,1.0};
|
||||
specularPower = 256.0;
|
||||
PixelShaderID = "NormalMapSpecularDIMap";
|
||||
VertexShaderID = "NormalMap";
|
||||
class Stage1
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\csw_tripod_ags_nohq.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage2
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\csw_tripod_ags_smdi.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
BIN
addons/apl/data/csw_tripod_ags_co.paa
Normal file
BIN
addons/apl/data/csw_tripod_ags_co.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_tripod_ags_nohq.paa
Normal file
BIN
addons/apl/data/csw_tripod_ags_nohq.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_tripod_ags_smdi.paa
Normal file
BIN
addons/apl/data/csw_tripod_ags_smdi.paa
Normal file
Binary file not shown.
98
addons/apl/data/m3tripod.rvmat
Normal file
98
addons/apl/data/m3tripod.rvmat
Normal file
@ -0,0 +1,98 @@
|
||||
#define _ARMA_
|
||||
|
||||
ambient[] = {1,1,1,1.0};
|
||||
diffuse[] = {1,1,1,1.0};
|
||||
forcedDiffuse[] = {0.0,0.0,0.0,0.0};
|
||||
emmisive[] = {0.0,0.0,0.0,1.0};
|
||||
specular[] = {1,1,1,1.0};
|
||||
specularPower = 40.0;
|
||||
PixelShaderID = "super";
|
||||
VertexShaderID = "super";
|
||||
class Stage1
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\m3tripod_nohq.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage2
|
||||
{
|
||||
texture = "a3\weapons_f\Data\DetailMaps\metal_detail_dt.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {8.0,0.0,0.0};
|
||||
up[] = {0.0,8.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage3
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage4
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(1,1,1,1,AS)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage5
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\m3tripod_SMDI.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage6
|
||||
{
|
||||
texture = "#(ai,32,128,1)fresnel(3.38,5.33)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage7
|
||||
{
|
||||
texture = "a3\data_f\env_land_co.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class StageTI
|
||||
{
|
||||
texture = "a3\data_f\default_vehicle_ti_ca.paa";
|
||||
};
|
BIN
addons/apl/data/m3tripod_co.paa
Normal file
BIN
addons/apl/data/m3tripod_co.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/m3tripod_nohq.paa
Normal file
BIN
addons/apl/data/m3tripod_nohq.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/m3tripod_smdi.paa
Normal file
BIN
addons/apl/data/m3tripod_smdi.paa
Normal file
Binary file not shown.
95
addons/apl/data/mortarBaseplate.rvmat
Normal file
95
addons/apl/data/mortarBaseplate.rvmat
Normal file
@ -0,0 +1,95 @@
|
||||
ambient[]={1,1,1,1.000000};
|
||||
diffuse[]={1,1,1,1.000000};
|
||||
forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
|
||||
emmisive[]={0.000000,0.000000,0.000000,1.000000};
|
||||
specular[]={1,1,1,1.000000};
|
||||
specularPower=40.000000;
|
||||
PixelShaderID="super";
|
||||
VertexShaderID="super";
|
||||
class Stage1
|
||||
{
|
||||
texture="z\ace\addons\apl\data\mortarBaseplate_nohq.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage2
|
||||
{
|
||||
texture="a3\weapons_f\Data\DetailMaps\metal_detail_dt.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={8.0000,0.000000,0.000000};
|
||||
up[]={0.000000,8.0000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage3
|
||||
{
|
||||
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage4
|
||||
{
|
||||
texture="z\ace\addons\apl\data\mortarBaseplate_as.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage5
|
||||
{
|
||||
texture="z\ace\addons\apl\data\mortarBaseplate_smdi.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage6
|
||||
{
|
||||
texture = "#(ai,32,128,1)fresnel(3.38,5.33)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage7
|
||||
{
|
||||
texture="a3\data_f\env_land_co.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class StageTI {
|
||||
texture = "a3\data_f\default_vehicle_ti_ca.paa";
|
||||
};
|
BIN
addons/apl/data/mortarBaseplate_as.paa
Normal file
BIN
addons/apl/data/mortarBaseplate_as.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/mortarBaseplate_co.paa
Normal file
BIN
addons/apl/data/mortarBaseplate_co.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/mortarBaseplate_nohq.paa
Normal file
BIN
addons/apl/data/mortarBaseplate_nohq.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/mortarBaseplate_smdi.paa
Normal file
BIN
addons/apl/data/mortarBaseplate_smdi.paa
Normal file
Binary file not shown.
98
addons/apl/data/static.rvmat
Normal file
98
addons/apl/data/static.rvmat
Normal file
@ -0,0 +1,98 @@
|
||||
#define _ARMA_
|
||||
|
||||
class StageTI
|
||||
{
|
||||
texture = "a3\weapons_f\ammoboxes\bags\data\backpacks_ti_ca.paa";
|
||||
};
|
||||
ambient[] = {1.0,1.0,1.0,1.0};
|
||||
diffuse[] = {1.0,1.0,1.0,1.0};
|
||||
forcedDiffuse[] = {0.0,0.0,0.0,0.0};
|
||||
emmisive[] = {0.0,0.0,0.0,1.0};
|
||||
specular[] = {0.0,0.0,0.0,1.0};
|
||||
specularPower = 0.0;
|
||||
PixelShaderID = "Super";
|
||||
VertexShaderID = "Super";
|
||||
class Stage1
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\static_nohq.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.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.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage3
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage4
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(1,1,1,1,AS)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage5
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(0,0,1,1,SMDI)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage6
|
||||
{
|
||||
texture = "#(ai,32,128,1)fresnel(1.58,0.71)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage7
|
||||
{
|
||||
texture = "a3\data\env2_co.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
BIN
addons/apl/data/static_co.paa
Normal file
BIN
addons/apl/data/static_co.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/static_nohq.paa
Normal file
BIN
addons/apl/data/static_nohq.paa
Normal file
Binary file not shown.
@ -11,6 +11,7 @@
|
||||
<Korean>숨김</Korean>
|
||||
<Chinese>隱藏</Chinese>
|
||||
<Chinesesimp>隐藏</Chinesesimp>
|
||||
<Russian>Спрятать</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonHideTooltip">
|
||||
<English>Hide interface</English>
|
||||
@ -22,6 +23,7 @@
|
||||
<Korean>인터페이스 숨기기</Korean>
|
||||
<Chinese>隱藏介面</Chinese>
|
||||
<Chinesesimp>隐藏介面</Chinesesimp>
|
||||
<Russian>Скрыть интерфейс</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonLoadoutsText">
|
||||
<English>Loadouts</English>
|
||||
@ -33,6 +35,7 @@
|
||||
<Korean>로드아웃</Korean>
|
||||
<Chinese>裝備</Chinese>
|
||||
<Chinesesimp>装备</Chinesesimp>
|
||||
<Russian>Комплекты</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonExportText">
|
||||
<English>Export</English>
|
||||
@ -44,6 +47,7 @@
|
||||
<Korean>내보내기</Korean>
|
||||
<Chinese>匯出</Chinese>
|
||||
<Chinesesimp>汇出</Chinesesimp>
|
||||
<Russian>Экспорт</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonImportText">
|
||||
<English>Import</English>
|
||||
@ -55,6 +59,7 @@
|
||||
<Korean>가져오기</Korean>
|
||||
<Chinese>匯入</Chinese>
|
||||
<Chinesesimp>汇入</Chinesesimp>
|
||||
<Russian>Импорт</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonCloseText">
|
||||
<English>Close</English>
|
||||
@ -66,6 +71,7 @@
|
||||
<Korean>닫기</Korean>
|
||||
<Chinese>關閉</Chinese>
|
||||
<Chinesesimp>关闭</Chinesesimp>
|
||||
<Russian>Закрыть</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_noVirtualItems">
|
||||
<English>No virtual item available</English>
|
||||
@ -77,6 +83,7 @@
|
||||
<Korean>가상장비 사용 불가</Korean>
|
||||
<Chinese>沒有可用的虛擬物品</Chinese>
|
||||
<Chinesesimp>没有可用的虚拟物品</Chinesesimp>
|
||||
<Russian>Виртуальный предмет недоступен</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonSaveText">
|
||||
<English>Save</English>
|
||||
@ -88,6 +95,7 @@
|
||||
<Korean>저장</Korean>
|
||||
<Chinese>保存</Chinese>
|
||||
<Chinesesimp>保存</Chinesesimp>
|
||||
<Russian>Сохранить</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonSaveTooltip">
|
||||
<English>Save the current loadout</English>
|
||||
@ -99,11 +107,13 @@
|
||||
<Korean>현재 로드아웃 저장</Korean>
|
||||
<Chinese>保存當前的裝備</Chinese>
|
||||
<Chinesesimp>保存当前的装备</Chinesesimp>
|
||||
<Russian>Сохранить текущий комплект экипировки</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonSaveTooltip_shiftClick">
|
||||
<English>[Shift+Click to save to mission defaults]</English>
|
||||
<Japanese>[Shift + クリック] でミッション標準として保存します</Japanese>
|
||||
<Polish>Shift + Klik aby zapisac jako domyślne dla misji </Polish>
|
||||
<Russian>[Shift+Клик, чтобы сохранить в настройках по умолчанию]</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonRenameText">
|
||||
<English>Rename</English>
|
||||
@ -115,6 +125,7 @@
|
||||
<Korean>이름바꾸기</Korean>
|
||||
<Chinese>重新命名</Chinese>
|
||||
<Chinesesimp>重新命名</Chinesesimp>
|
||||
<Russian>Переименовать</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonRenameTooltip">
|
||||
<English>Rename the selected loadout</English>
|
||||
@ -126,6 +137,7 @@
|
||||
<Korean>선택한 로드아웃의 이름 바꾸기</Korean>
|
||||
<Chinese>重新命名當前選擇的裝備</Chinese>
|
||||
<Chinesesimp>重新命名当前选择的装备</Chinesesimp>
|
||||
<Russian>Переименовать выбранный комплект экипировки</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonLoadText">
|
||||
<English>Load</English>
|
||||
@ -137,6 +149,7 @@
|
||||
<Korean>불러오기</Korean>
|
||||
<Chinese>載入</Chinese>
|
||||
<Chinesesimp>载入</Chinesesimp>
|
||||
<Russian>Загрузить</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonLoadTooltip">
|
||||
<English>Load the selected loadout</English>
|
||||
@ -148,6 +161,7 @@
|
||||
<Korean>선택한 로드아웃 불러오기</Korean>
|
||||
<Chinese>載入當前選擇的裝備</Chinese>
|
||||
<Chinesesimp>载入当前选择的装备</Chinesesimp>
|
||||
<Russian>Загрузить выбранный комплект экипировки</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonDeleteText">
|
||||
<English>Delete</English>
|
||||
@ -159,6 +173,7 @@
|
||||
<Korean>삭제</Korean>
|
||||
<Chinese>刪除</Chinese>
|
||||
<Chinesesimp>删除</Chinesesimp>
|
||||
<Russian>Удалить</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonDeleteTooltip">
|
||||
<English>Delete the selected loadout</English>
|
||||
@ -170,6 +185,7 @@
|
||||
<Korean>선택한 로드아웃 삭제하기</Korean>
|
||||
<Chinese>刪除當前選擇的裝備</Chinese>
|
||||
<Chinesesimp>删除当前选择的装备</Chinesesimp>
|
||||
<Russian>Удалить выбранный комплект экипировки</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_tabMyLoadoutsText">
|
||||
<English>My loadouts</English>
|
||||
@ -181,6 +197,7 @@
|
||||
<Korean>내 로드아웃</Korean>
|
||||
<Chinese>我的裝備</Chinese>
|
||||
<Chinesesimp>我的装备</Chinesesimp>
|
||||
<Russian>Мои комплекты</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_tabMyLoadoutsTooltip">
|
||||
<English>Loadouts saved in your profile</English>
|
||||
@ -192,6 +209,7 @@
|
||||
<Korean>프로필에 저장된 로드아웃</Korean>
|
||||
<Chinese>裝備已保存到你的設定檔中</Chinese>
|
||||
<Chinesesimp>装备已保存到你的设定档中</Chinesesimp>
|
||||
<Russian>Комплекты экипировки, сохраненные в вашем профиле</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_tabDefaultLoadoutsText">
|
||||
<English>Default loadouts</English>
|
||||
@ -203,6 +221,7 @@
|
||||
<Korean>기본 로드아웃</Korean>
|
||||
<Chinese>預設裝備</Chinese>
|
||||
<Chinesesimp>预设装备</Chinesesimp>
|
||||
<Russian>По умолчанию</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_tabDefaultLoadoutsTooltip">
|
||||
<English>Loadouts made available by the mission maker</English>
|
||||
@ -214,6 +233,7 @@
|
||||
<Korean>미션메이커가 허용한 로드아웃</Korean>
|
||||
<Chinese>任務作者提供的預設裝備</Chinese>
|
||||
<Chinesesimp>任务作者提供的预设装备</Chinesesimp>
|
||||
<Russian>Комплекты экипировки, предоставляемые создателем миссии</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_tabSharedLoadoutsText">
|
||||
<English>Public loadouts</English>
|
||||
@ -225,6 +245,7 @@
|
||||
<Korean>공용 로드아웃</Korean>
|
||||
<Chinese>公用裝備</Chinese>
|
||||
<Chinesesimp>公用装备</Chinesesimp>
|
||||
<Russian>Публичные комплекты</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_tabSharedLoadoutsTooltip">
|
||||
<English>Loadouts shared by you and other players</English>
|
||||
@ -236,6 +257,7 @@
|
||||
<Korean>플레이어들이 공유하는 로드아웃</Korean>
|
||||
<Chinese>由你與其他玩家分享的裝備配置</Chinese>
|
||||
<Chinesesimp>由你与其他玩家分享的装备配置</Chinesesimp>
|
||||
<Russian>Комплекты экипировки, опубликованные вами и другими игроками</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_sortByWeightText">
|
||||
<English>Sort by weight</English>
|
||||
@ -247,6 +269,7 @@
|
||||
<Korean>무게로 정렬</Korean>
|
||||
<Chinese>以重量排序</Chinese>
|
||||
<Chinesesimp>以重量排序</Chinesesimp>
|
||||
<Russian>Сортировка по весу</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_sortByAmountText">
|
||||
<English>Sort by amount</English>
|
||||
@ -258,6 +281,7 @@
|
||||
<Korean>갯수로 정렬</Korean>
|
||||
<Chinese>以數量排序</Chinese>
|
||||
<Chinesesimp>以数量排序</Chinesesimp>
|
||||
<Russian>Сортировка по количеству</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonShareTooltip">
|
||||
<English>Share or stop sharing the selected loadout</English>
|
||||
@ -269,6 +293,7 @@
|
||||
<Korean>선택한 로드아웃 공유 혹은 공유중지</Korean>
|
||||
<Chinese>開始/停止分享當前選擇的裝備</Chinese>
|
||||
<Chinesesimp>开始/停止分享当前选择的装备</Chinesesimp>
|
||||
<Russian>Открыть или закрыть общий доступ к комплекту экипировки</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonSharePrivateText">
|
||||
<English>Private</English>
|
||||
@ -280,6 +305,7 @@
|
||||
<Korean>개인</Korean>
|
||||
<Chinese>私用</Chinese>
|
||||
<Chinesesimp>私用</Chinesesimp>
|
||||
<Russian>Приватный</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonSharePublicText">
|
||||
<English>Public</English>
|
||||
@ -291,6 +317,7 @@
|
||||
<Korean>공용</Korean>
|
||||
<Chinese>公用</Chinese>
|
||||
<Chinesesimp>公用</Chinesesimp>
|
||||
<Russian>Публичный</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_exportDefaultError">
|
||||
<English>The default loadouts list is empty!</English>
|
||||
@ -302,6 +329,7 @@
|
||||
<Korean>기본 로드아웃 목록이 비어있습니다!</Korean>
|
||||
<Chinese>沒有預設的裝備清單!</Chinese>
|
||||
<Chinesesimp>没有预设的装备清单!</Chinesesimp>
|
||||
<Russian>Список комплекта экипировки пуст!</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_exportDefault">
|
||||
<English>Default loadouts list exported to clipboard</English>
|
||||
@ -313,6 +341,7 @@
|
||||
<Korean>클립보드에 기본 로드아웃 목록 내보내기</Korean>
|
||||
<Chinese>預設的裝備清單已匯出到剪貼簿中</Chinese>
|
||||
<Chinesesimp>预设的装备清单已汇出到剪贴簿中</Chinesesimp>
|
||||
<Russian>Список комплекта экипировки по умолчанию экспортирован в буфер</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_exportCurrent">
|
||||
<English>Current loadout exported to clipboard</English>
|
||||
@ -324,6 +353,7 @@
|
||||
<Korean>현재 로드아웃을 클립보드로 내보냈습니다.</Korean>
|
||||
<Chinese>當前的裝備已匯出到剪貼簿中</Chinese>
|
||||
<Chinesesimp>当前的装备已汇出到剪贴簿中</Chinesesimp>
|
||||
<Russian>Текущий список комплекта экипировки экспортирован в буфер</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_importFormatError">
|
||||
<English>Wrong format provided</English>
|
||||
@ -335,6 +365,7 @@
|
||||
<Korean>잘못된 형식 입력됨</Korean>
|
||||
<Chinese>提供的格式錯誤</Chinese>
|
||||
<Chinesesimp>提供的格式错误</Chinesesimp>
|
||||
<Russian>Неверный формат импорта</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_importedDefault">
|
||||
<English>Default loadouts list imported from clipboard</English>
|
||||
@ -346,6 +377,7 @@
|
||||
<Korean>클립보드에서 기본 로드아웃 가져오기</Korean>
|
||||
<Chinese>預設的裝備清單已從剪貼簿中匯入</Chinese>
|
||||
<Chinesesimp>预设的装备清单已从剪贴簿中汇入</Chinesesimp>
|
||||
<Russian>Список комплекта экипировки по умолчанию импортирован из буфера</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_importedCurrent">
|
||||
<English>Loadout imported from clipboard</English>
|
||||
@ -357,6 +389,7 @@
|
||||
<Korean>클립보드에서 로드아웃을 가져왔습니다.</Korean>
|
||||
<Chinese>裝備已從剪貼簿中匯入</Chinese>
|
||||
<Chinesesimp>装备已从剪贴簿中汇入</Chinesesimp>
|
||||
<Russian>Список комплекта экипировки импортирован из буфера</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_loadoutDeleted">
|
||||
<English>The following loadout was deleted:</English>
|
||||
@ -368,6 +401,7 @@
|
||||
<Korean>다음 로드아웃이 삭제됨 :</Korean>
|
||||
<Chinese>以下的裝備已被刪除:</Chinese>
|
||||
<Chinesesimp>以下的装备已被删除:</Chinesesimp>
|
||||
<Russian>Удален комплект экипировки:</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_loadoutUnshared">
|
||||
<English>The following loadout is not public anymore:</English>
|
||||
@ -379,6 +413,7 @@
|
||||
<Korean>다음 로드아웃이 더이상 공용이 아님:</Korean>
|
||||
<Chinese>以下的裝備已不再被分享:</Chinese>
|
||||
<Chinesesimp>以下的装备已不再被分享:</Chinesesimp>
|
||||
<Russian>Этот комплект экипировки больше не публичный:</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_saveEmptyNameBox">
|
||||
<English>The name field is empty!</English>
|
||||
@ -390,6 +425,7 @@
|
||||
<Korean>이름칸이 비었습니다!</Korean>
|
||||
<Chinese>名稱欄位為空!</Chinese>
|
||||
<Chinesesimp>名称栏位为空!</Chinesesimp>
|
||||
<Russian>Поле имени пустое!</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_saveAuthorError">
|
||||
<English>You are the author of this loadout</English>
|
||||
@ -401,6 +437,7 @@
|
||||
<Korean>이 로드아웃의 제작자입니다.</Korean>
|
||||
<Chinese>你是這個裝備的作者</Chinese>
|
||||
<Chinesesimp>你是这个装备的作者</Chinesesimp>
|
||||
<Russian>Вы автор этого комплекта экипировки</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_saveSharedError">
|
||||
<English>A loadout of yours with the same name is public</English>
|
||||
@ -412,6 +449,7 @@
|
||||
<Korean>같은 이름의 로드아웃이 공용에 있습니다.</Korean>
|
||||
<Chinese>已有相同名稱的裝備在公用分享區</Chinese>
|
||||
<Chinesesimp>已有相同名称的装备在公用分享区</Chinesesimp>
|
||||
<Russian>Ваш комплект экипировки с таким же именем является публичным</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_loadoutSaved">
|
||||
<English>The following loadout was saved:</English>
|
||||
@ -423,6 +461,7 @@
|
||||
<Korean>다음 로드아웃이 저장됨:</Korean>
|
||||
<Chinese>以下的裝備已被保存:</Chinese>
|
||||
<Chinesesimp>以下的装备已被保存:</Chinesesimp>
|
||||
<Russian>Сохранен комплект экипировки:</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_loadoutLoaded">
|
||||
<English>The following loadout was loaded:</English>
|
||||
@ -434,6 +473,7 @@
|
||||
<Korean>다음 로드아웃을 불러옴:</Korean>
|
||||
<Chinese>以下的裝備已被載入:</Chinese>
|
||||
<Chinesesimp>以下的装备已被载入:</Chinesesimp>
|
||||
<Russian>Загружен комплект экипировки:</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_renameExistError">
|
||||
<English>A loadout with the same name already exist!</English>
|
||||
@ -445,6 +485,7 @@
|
||||
<Korean>같은 이름의 로드아웃이 이미 존재합니다!</Korean>
|
||||
<Chinese>已有相同名稱的裝備!</Chinese>
|
||||
<Chinesesimp>已有相同名称的装备!</Chinesesimp>
|
||||
<Russian>Комплект с таким именем уже существует!</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_loadoutRenamed">
|
||||
<English>was renamed to</English>
|
||||
@ -456,6 +497,7 @@
|
||||
<Korean>이름이 다음과 같이 변경됨:</Korean>
|
||||
<Chinese>已被改名為</Chinese>
|
||||
<Chinesesimp>已被改名为</Chinesesimp>
|
||||
<Russian>был переименован в</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_invertCameraSetting">
|
||||
<English>Invert camera controls</English>
|
||||
@ -467,6 +509,7 @@
|
||||
<Korean>카메라 조종 반전</Korean>
|
||||
<Chinese>反轉攝影機控制</Chinese>
|
||||
<Chinesesimp>反转摄影机控制</Chinesesimp>
|
||||
<Russian>Инвертировать управление камерой</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_modIconsSetting">
|
||||
<English>Enable mod icons</English>
|
||||
@ -478,6 +521,7 @@
|
||||
<Korean>모드 아이콘 허가</Korean>
|
||||
<Chinese>啟用模組圖示</Chinese>
|
||||
<Chinesesimp>启用模组图示</Chinesesimp>
|
||||
<Russian>Включить иконки модов</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_fontHeightSetting">
|
||||
<English>Panel font height</English>
|
||||
@ -489,6 +533,7 @@
|
||||
<Korean>패널 폰트 높이</Korean>
|
||||
<Chinese>面板字體高度</Chinese>
|
||||
<Chinesesimp>面板字体高度</Chinesesimp>
|
||||
<Russian>Размер шрифта панели</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_allowDefaultLoadoutsSetting">
|
||||
<English>Allow default loadouts</English>
|
||||
@ -500,6 +545,7 @@
|
||||
<Korean>기본 로드아웃 허용</Korean>
|
||||
<Chinese>允許預設裝備</Chinese>
|
||||
<Chinesesimp>允许预设装备</Chinesesimp>
|
||||
<Russian>Разрешить комплекты по умолчанию</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_allowSharingSetting">
|
||||
<English>Allow loadout sharing</English>
|
||||
@ -511,6 +557,7 @@
|
||||
<Korean>로드아웃 공유 허용</Korean>
|
||||
<Chinese>允許分享裝備</Chinese>
|
||||
<Chinesesimp>允许分享装备</Chinesesimp>
|
||||
<Russian>Разрешить публикацию комплектов</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_printToRPTSetting">
|
||||
<English>Log missing / unavailable items</English>
|
||||
@ -522,6 +569,7 @@
|
||||
<Korean>누락 된 항목 / 사용 할 수 없는 항목 기록</Korean>
|
||||
<Chinese>記錄遺失/無法使用的項目</Chinese>
|
||||
<Chinesesimp>记录遗失/无法使用的项目</Chinesesimp>
|
||||
<Russian>Вести журнал недоступных предметов</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonCurrentMagTooltip">
|
||||
<English>Primary magazine</English>
|
||||
@ -533,6 +581,7 @@
|
||||
<German>Primärmagazin</German>
|
||||
<Chinese>主要武器彈匣</Chinese>
|
||||
<Chinesesimp>主要武器弹匣</Chinesesimp>
|
||||
<Russian>Основной магазин</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonCurrentMag2Tooltip">
|
||||
<English>Secondary magazine</English>
|
||||
@ -544,6 +593,7 @@
|
||||
<German>Sekundärmagazin</German>
|
||||
<Chinese>次要武器彈匣</Chinese>
|
||||
<Chinesesimp>次要武器弹匣</Chinesesimp>
|
||||
<Russian>Вторичный магазин</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_settingCategory">
|
||||
<English>ACE Arsenal</English>
|
||||
@ -555,6 +605,7 @@
|
||||
<Korean>ACE 아스날</Korean>
|
||||
<Chinese>ACE虛擬軍火庫</Chinese>
|
||||
<Chinesesimp>ACE虚拟军火库</Chinesesimp>
|
||||
<Russian>ACE Арсенал</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_defaultLoadoutsTooltip">
|
||||
<English>Allow the use of the default loadouts tab</English>
|
||||
@ -566,6 +617,7 @@
|
||||
<German>Erlaube die Nutzung des Standardausrüstungsreiters</German>
|
||||
<Chinese>允許使用預設的裝備</Chinese>
|
||||
<Chinesesimp>允许使用预设的装备</Chinesesimp>
|
||||
<Russian>Разрешить использование вкладки комплектов экипировки по умолчанию</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_modIconsTooltip">
|
||||
<English>Show / hide mod icons for the left panel</English>
|
||||
@ -577,6 +629,7 @@
|
||||
<German>Zeigt/Versteckt Mod-Symbole in der linken Leiste</German>
|
||||
<Chinese>在左面板中顯示/隱藏模組圖示</Chinese>
|
||||
<Chinesesimp>在左面板中显示/隐藏模组图示</Chinesesimp>
|
||||
<Russian>Показать / скрыть значки модов в левой панели</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_fontHeightTooltip">
|
||||
<English>Change the font height for text in the left / right panels</English>
|
||||
@ -588,6 +641,7 @@
|
||||
<German>Ändert die Schriftgröße für die linke/rechte Leiste</German>
|
||||
<Chinese>變更左/右面板中的字體高度</Chinese>
|
||||
<Chinesesimp>变更左/右面板中的字体高度</Chinesesimp>
|
||||
<Russian>Изменить размер шрифта для текста в левой / правой панелях</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_printToRPTTooltip">
|
||||
<English>Log missing / unavailable items in the RPT</English>
|
||||
@ -599,6 +653,7 @@
|
||||
<German>Fehlende Gegenstände werden in der RPT aufgezeichnet</German>
|
||||
<Chinese>記錄遺失/無法使用的項目到RPT檔案中</Chinese>
|
||||
<Chinesesimp>记录遗失/无法使用的项目到RPT档案中</Chinesesimp>
|
||||
<Russian>Вести журнал отсутствующих / недоступных предметов в RPT</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_CantOpenDisplay">
|
||||
<English>Unable to open ACE arsenal</English>
|
||||
@ -610,6 +665,7 @@
|
||||
<Chinese>無法開啟ACE虛擬軍火庫</Chinese>
|
||||
<Chinesesimp>无法开启ACE虚拟军火库</Chinesesimp>
|
||||
<Polish>Nie można otworzyć arsenału ACE</Polish>
|
||||
<Russian>Невозможно открыть ACE Арсенал</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_portLoadoutsText">
|
||||
<English>Import BI VA loadouts to ACE Arsenal</English>
|
||||
@ -621,6 +677,7 @@
|
||||
<Chinesesimp>汇入BI原厂虚拟军火库的装备到ACE虚拟军火库中</Chinesesimp>
|
||||
<Italian>Importa l'arsenale virtuale BI nell'arsenale ACE</Italian>
|
||||
<Polish>Importuj zestawy wyposażenia z wirtualnego arsenału BI do arsenału ACE</Polish>
|
||||
<Russian>Импорт комплектов из Арсенала BI в Арсенал ACE</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_portLoadoutsPlayerError">
|
||||
<English>No player unit available! Place a unit and mark it as "Player".</English>
|
||||
@ -632,6 +689,7 @@
|
||||
<Chinesesimp>没有可用的玩家单位!请摆放一个单位并设定成"玩家"。</Chinesesimp>
|
||||
<Italian>Non ci sono giocatori! Poisziona una unità e impostala come "Giocatore".</Italian>
|
||||
<Polish>Brak dostępnych jednostek gracza! Postaw jednostkę i oznacz ją jako "Gracz".</Polish>
|
||||
<Russian>Нет доступных игроков! Разместите юнит и отметьте его как «Игрок»</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_portLoadoutsLoadoutError">
|
||||
<English>No loadouts to import.</English>
|
||||
@ -643,6 +701,7 @@
|
||||
<Chinesesimp>没有装备被汇入。</Chinesesimp>
|
||||
<Italian>Non ci sono equipaggiamenti da importare.</Italian>
|
||||
<Polish>Brak zestawów wyposażenia do zaimportowania.</Polish>
|
||||
<Russian>Нет комплектов для импорта</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_Mission">
|
||||
<English>ACE Arsenal</English>
|
||||
@ -653,6 +712,7 @@
|
||||
<Chinesesimp>ACE虚拟军火库</Chinesesimp>
|
||||
<Italian>Arsenale ACE</Italian>
|
||||
<Polish>Arsenał ACE</Polish>
|
||||
<Russian>ACE Арсенал</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_ReturnToArsenal">
|
||||
<English>Return to ACE Arsenal.</English>
|
||||
@ -663,6 +723,7 @@
|
||||
<Chinesesimp>返回到ACE虚拟军火库。</Chinesesimp>
|
||||
<Italian>Torna all'arsenale ACE</Italian>
|
||||
<Polish>Wróć do arsenału ACE.</Polish>
|
||||
<Russian>Вернуться в ACE Арсенал</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_Mission_tooltip">
|
||||
<English>Use ACE Arsenal to try out different weapons and equipment.</English>
|
||||
@ -673,6 +734,7 @@
|
||||
<Chinesesimp>使用ACE虚拟军火库来尝试不同的武器与装备。</Chinesesimp>
|
||||
<Italian>Usa l'arsenale ACE per provare armi ed equipaggiamenti vari.</Italian>
|
||||
<Polish>Skorzystaj z arsenału ACE by wypróbować broń i ekwipunek.</Polish>
|
||||
<Russian>Используйте ACE Arsenal, чтобы опробовать различное оружие и снаряжение.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_Mission_overview">
|
||||
<English>Try weapons and equipment and create your own loadouts.</English>
|
||||
@ -683,33 +745,40 @@
|
||||
<Chinesesimp>尝试不同的武器与装备来组合你个人的装备配置。</Chinesesimp>
|
||||
<Italian>Prova armi ed equipaggiamenti e creai i tuoi equipaggiamenti personalizzati.</Italian>
|
||||
<Polish>Wypróbuj broń i ekwipunek i stwórz swoje własne zestawy wyposażenia.</Polish>
|
||||
<Russian>Опробуйте оружие и снаряжение, создавайте собственные комплекты экипировки.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonLoadoutsTooltip">
|
||||
<English>Open the loadouts screen</English>
|
||||
<German>Öffnet das Ausrüstungsmenü</German>
|
||||
<French>Affiche la page des équipements</French>
|
||||
<Chinese>開啟裝備選單</Chinese>
|
||||
<Chinesesimp>开启装备选单</Chinesesimp>
|
||||
<Japanese>装備画面を開く</Japanese>
|
||||
<Italian>Apri la pagina degli equipaggiamenti</Italian>
|
||||
<Polish>Otwórz ekran zestawów</Polish>
|
||||
<Russian>Открыть окно комплектов экипировки</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonExportTooltip">
|
||||
<English>Export current / default loadouts</English>
|
||||
<German>Exportiert aktuelles / standard Loadout</German>
|
||||
<French>Exporte l'équipement actuel ou la liste d'équipements de base</French>
|
||||
<Chinese>匯出當前/預設的裝備</Chinese>
|
||||
<Chinesesimp>汇出当前/预设的装备</Chinesesimp>
|
||||
<Japanese>現在/標準装備をエクスポートします</Japanese>
|
||||
<Italian>Esporta l'equipaggiamento attuale oppure la lista degli equipaggiamenti di base</Italian>
|
||||
<Polish>Eksportuj obecne / domyślne zestawy wyposażenia </Polish>
|
||||
<Russian>Экспорт комплектов экипировки</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonImportTooltip">
|
||||
<English>Import current / default loadouts</English>
|
||||
<German>Importiert aktuelles / standard Loadout</German>
|
||||
<French>Importer l'équipement actuel ou la liste d'équipements de base</French>
|
||||
<Chinese>匯入當前/預設的裝備</Chinese>
|
||||
<Chinesesimp>汇入当前/预设的装备</Chinesesimp>
|
||||
<Japanese>現在/標準装備をインポートします</Japanese>
|
||||
<Italian>Importa l'equipaggiamento attuale oppure la lista degli equipaggiamenti di base</Italian>
|
||||
<Polish>Importuj obecne / domyślne zestawy wyposażenia</Polish>
|
||||
<Russian>Импорт комплектов экипировки</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_statPotassium">
|
||||
<English>Potassium levels</English>
|
||||
@ -719,6 +788,7 @@
|
||||
<Chinese>鉀水平</Chinese>
|
||||
<Italian>Ilvello di potassio</Italian>
|
||||
<Polish>Poziomy potasu</Polish>
|
||||
<Russian>Уровень Калия</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_statMagnification">
|
||||
<English>Magnification</English>
|
||||
@ -742,6 +812,7 @@
|
||||
<Japanese>暗視装置への対応有無</Japanese>
|
||||
<Polish>Wsparcie noktowizyjne</Polish>
|
||||
<Italian>Supporto visore notturno</Italian>
|
||||
<Russian>Поддержка ночного видения</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_statVisionMode_supPrim">
|
||||
<English>Primary supported</English>
|
||||
@ -749,6 +820,7 @@
|
||||
<Japanese>プライマリが対応</Japanese>
|
||||
<Polish>Wspierane przez broń główną</Polish>
|
||||
<Italian>Primario supportato</Italian>
|
||||
<Russian>Поддерживается осн. прицелом</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_statVisionMode_supSec">
|
||||
<English>Secondary supported</English>
|
||||
@ -756,6 +828,7 @@
|
||||
<Japanese>セカンダリが対応</Japanese>
|
||||
<Polish>Wspierane przez broń drugorzędną</Polish>
|
||||
<Italian>Secondario supportato</Italian>
|
||||
<Russian>Поддерживается доп. прицелом</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_statVisionMode_IntPrim">
|
||||
<English>Primary integrated</English>
|
||||
@ -763,6 +836,7 @@
|
||||
<Japanese>プライマリに内蔵</Japanese>
|
||||
<Polish>Zintegrowane z bronią główną</Polish>
|
||||
<Italian>Primario integrato</Italian>
|
||||
<Russian>Интегрирован в осн. прицел</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_statVisionMode_NoSup">
|
||||
<English>Not Supported</English>
|
||||
@ -770,42 +844,51 @@
|
||||
<Japanese>セカンダリに内蔵</Japanese>
|
||||
<Polish>Nie wspierane</Polish>
|
||||
<Italian>Non supportato</Italian>
|
||||
<Russian>Не поддерживается</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_page">
|
||||
<English>Page</English>
|
||||
<German>Seite</German>
|
||||
<French>Page</French>
|
||||
<Japanese>ページ</Japanese>
|
||||
<Chinesesimp>页面</Chinesesimp>
|
||||
<Chinese>頁面</Chinese>
|
||||
<Italian>Pagina</Italian>
|
||||
<Polish>Strona</Polish>
|
||||
<Russian>Стр.</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_enableIdentityTabsSettings">
|
||||
<English>Enable the faces / voices / insignias tabs</English>
|
||||
<German>Aktiviere die Gesichter-, Stimmen- und Abzeichenübersicht</German>
|
||||
<French>Activer les onglets faces / voix / insignes</French>
|
||||
<Japanese>顔 / 声 / 記章タブを有効化</Japanese>
|
||||
<Chinesesimp>启用脸谱/声音/徽章/选项 </Chinesesimp>
|
||||
<Chinese>啟用臉譜/聲音/徽章選項</Chinese>
|
||||
<Italian>Abilita volti, voci e insegne</Italian>
|
||||
<Polish>Aktywuj zakładki twarz / głos / insygnia</Polish>
|
||||
<Russian>Включить вкладки Лиц / Голосов / Знаков различия</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonClearContainerTooltip">
|
||||
<English>Empty the selected container</English>
|
||||
<German>Aktuellen Container leeren</German>
|
||||
<French>Vider le conteneur selectionné</French>
|
||||
<Japanese>選択されたコンテナは空です</Japanese>
|
||||
<Chinesesimp>选择的箱子是空的</Chinesesimp>
|
||||
<Chinese>清空選擇的箱子</Chinese>
|
||||
<Italian>Svuota il contenitore selezionato</Italian>
|
||||
<Polish>Opróżnij wybrany pojemnik</Polish>
|
||||
<Russian>Очистить контейнер</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_exportedClassnameText">
|
||||
<English>Exported class name to clipboard</English>
|
||||
<German>Der Klassenname wurde in die Zwischenablage exportiert</German>
|
||||
<French>Nom de classe exporté dans le presse papier</French>
|
||||
<Japanese>クリップボードへクラスネームをエクスポート</Japanese>
|
||||
<Chinesesimp>将种类复制到剪贴板</Chinesesimp>
|
||||
<Chinese>輸出 class name 到剪貼簿上</Chinese>
|
||||
<Italian>Copiato il nome della classe negli appunti</Italian>
|
||||
<Polish>Wyeksportowano nazwę klasy do schowka</Polish>
|
||||
<Russian>Имя класса, экспортированного в буфер</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_Mode">
|
||||
<English>Mode</English>
|
||||
@ -841,9 +924,11 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_Blacklist">
|
||||
<English>Blacklist</English>
|
||||
<German>Blacklist</German>
|
||||
<Japanese>禁止リスト</Japanese>
|
||||
<Italian>Lista Nera</Italian>
|
||||
<Polish>Czarna lista (lista wykluczeń)</Polish>
|
||||
<Russian>Чёрный список</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_Items">
|
||||
<English>Items</English>
|
||||
@ -863,31 +948,41 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_AttributeExport_Tooltip">
|
||||
<English>Export current items list as an array for use in scripts</English>
|
||||
<German>Exportiert aktuelle Gegenstände als Array, um es in Scripten zu verwenden</German>
|
||||
<Japanese>スクリプト用に現在のアイテム リストをアレイでエクスポートします</Japanese>
|
||||
<Italian>Esporta l'attuale lista di elementi come un array, per essere usati negli script</Italian>
|
||||
<Polish>Eksportuj obecną listę przedmiotów jako tablicę do wykorzystania w skryptach</Polish>
|
||||
<Russian>Экспорт текущего списка предметов в виде массива для использования в скриптах</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_AttributeImport_Tooltip">
|
||||
<English>Import items list array from clipboard (should be the same format as export)</English>
|
||||
<German>Importiert alles aus der Zwischenablage (Sollte im gleichen Format sein, wie beim Exportieren)</German>
|
||||
<Polish>Zaimportuj listę przedmiotów ze schowka (lista musi być w tym samym formacie jak przy exporcie)</Polish>
|
||||
<Japanese>クリップボードからアイテムリストをアレイでインポートします (エクスポートと同じフォーマットである必要があります)</Japanese>
|
||||
<Russian>Импорт массива списка предметов из буфера (должен иметь тот же формат, что при экспорте)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_AttributeAddCompatible_DisplayName">
|
||||
<English>Add Compatible Items</English>
|
||||
<German>Füge kompatible Gegenstände hinzu</German>
|
||||
<Polish>Dodaj kompatybilne przedmioty</Polish>
|
||||
<Japanese>対応アイテムを追加</Japanese>
|
||||
<Russian>Добавить совместимые предметы</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_AttributeAddCompatible_Tooltip">
|
||||
<English>Will automatically add compatible attachments or magazines (based on selected category) for all weapons in current items list</English>
|
||||
<German>Es werden automatisch kompatible Aufsätze oder Magazine für alle ausgewählten Waffen hinzugefügt</German>
|
||||
<Polish>Automatycznie doda kompatybilne dodatki oraz magazynki (odpowiednio do każdej kategorii) dla wszystkich broni na liście</Polish>
|
||||
<Japanese>現在のアイテム リスト内にある全武器に対応するアタッチメントと弾倉 (選択したカテゴリに基づき) を自動的に追加します</Japanese>
|
||||
<Russian>Добавляет совместимые приспособления или магазины (в зависимости от выбранной категории) для всего оружия в текущем списке предметов</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_statTTL">
|
||||
<English>Time to live</English>
|
||||
<German>Lebenszeit</German>
|
||||
<French>Durée de vie</French>
|
||||
<Japanese>有効時間</Japanese>
|
||||
<Polish>Czas by żyć</Polish>
|
||||
<Italian>Scadenza (TTL)</Italian>
|
||||
<Russian>Время действия</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -604,15 +604,17 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={304.8, 406.4, 609.6};
|
||||
};
|
||||
class B_570x28_Ball: BulletBase {
|
||||
ACE_caliber = 5.7;
|
||||
ACE_caliber = 5.7; // https://bobp.cip-bobp.org/uploads/tdcc/tab-i/tabical-en-page7.pdf
|
||||
ACE_bulletLength = 21.6; // http://blog.thejustnation.org/2011/04/5-7x28mm-ammo-review/
|
||||
ACE_bulletMass = 2; // based on the SS190
|
||||
ACE_ballisticCoefficients[] = {0.177}; //http://m.delphiforums.com/autogun/messages/5267/7
|
||||
ACE_ammoTempMuzzleVelocityShifts[] = {-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
|
||||
ACE_ballisticCoefficients[] = {0.084}; // https://www.thefirearmblog.com/blog/2016/10/24/modern-personal-defense-weapon-calibers-4-6x30mm-hk/
|
||||
ACE_velocityBoundaries[] = {};
|
||||
ACE_standardAtmosphere = "ASM"; // 50/50 chance to get it right
|
||||
ACE_standardAtmosphere = "ICAO";
|
||||
ACE_dragModel = 7;
|
||||
ACE_muzzleVelocities[] = {716,776};
|
||||
ACE_barrelLengths[] = {264,407};
|
||||
ACE_muzzleVelocities[] = {716, 776}; // at 21°C, 715-775 m/s at 15°C according with the 50Rnd_570x28_SMG_03 initSpeed
|
||||
ACE_barrelLengths[] = {264, 407};
|
||||
airFriction = -0.002619; // default BI value -0.001412
|
||||
};
|
||||
class B_19mm_HE: BulletBase {
|
||||
tracerScale = 1;
|
||||
|
@ -75,6 +75,7 @@ class CfgWeapons {
|
||||
ACE_barrelTwist = 228.6; // 1:9 inch twist
|
||||
ACE_barrelLength = 407;
|
||||
ACE_twistDirection = 1;
|
||||
initSpeed = -1.083916; // 775 m/s according with the ACE_muzzleVelocities at 15°C, default BI value -1.1 (786 m/s)
|
||||
modes[] = {"Single"};
|
||||
};
|
||||
class SMG_03C_BASE: SMG_03_TR_BASE {
|
||||
|
@ -2283,47 +2283,57 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_statBarrelTwist">
|
||||
<English>Barrel twist</English>
|
||||
<German>Dralllänge</German>
|
||||
<Japanese>銃身の転度</Japanese>
|
||||
<Chinesesimp>膛线缠距</Chinesesimp>
|
||||
<Chinese>膛線扭度</Chinese>
|
||||
<Italian>Rigatura della canna</Italian>
|
||||
<Polish>Gwintowanie lufy</Polish>
|
||||
<Russian>Нарезы ствола</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_statBarrelLength">
|
||||
<English>Barrel length</English>
|
||||
<German>Lauflänge</German>
|
||||
<French>Longueur du canon</French>
|
||||
<Japanese>銃身長</Japanese>
|
||||
<Chinesesimp>身管长度</Chinesesimp>
|
||||
<Chinese>槍管長度</Chinese>
|
||||
<Italian>Lunghezza della canna</Italian>
|
||||
<Polish>Długość lufy</Polish>
|
||||
<Russian>Длина ствола</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_statBallisticCoef">
|
||||
<English>Ballistic coefficient</English>
|
||||
<German>Ballistischer Koeffizient</German>
|
||||
<French>Coefficient ballistique</French>
|
||||
<Japanese>弾道係数</Japanese>
|
||||
<Chinesesimp>弹道系数</Chinesesimp>
|
||||
<Chinese>彈道係數</Chinese>
|
||||
<Italian>Coefficente balistico</Italian>
|
||||
<Polish>Współczynnik balistyczny</Polish>
|
||||
<Russian>Баллистический коэффициент</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_statBulletMass">
|
||||
<English>Bullet mass</English>
|
||||
<German>Projektilgewicht</German>
|
||||
<French>Masse d'une balle</French>
|
||||
<Japanese>弾丸重量</Japanese>
|
||||
<Chinesesimp>弹头重量</Chinesesimp>
|
||||
<Chinese>彈頭重量</Chinese>
|
||||
<Italian>Massa del proiettile</Italian>
|
||||
<Polish>Masa pocisku</Polish>
|
||||
<Russian>Масса пули</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_statMuzzleVelocity">
|
||||
<English>Muzzle velocity</English>
|
||||
<German>Mündungsgeschwindigkeit</German>
|
||||
<French>Vitesse à la bouche</French>
|
||||
<Japanese>銃口初速</Japanese>
|
||||
<Chinesesimp>枪口初速</Chinesesimp>
|
||||
<Chinese>槍口初速</Chinese>
|
||||
<Italian>Velocità iniziale</Italian>
|
||||
<Polish>Prędkość wylotowa</Polish>
|
||||
<Russian>Начальная скорость</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -10,6 +10,7 @@
|
||||
<Japanese>捕虜</Japanese>
|
||||
<Korean>포로설정</Korean>
|
||||
<Polish>Jeńcy</Polish>
|
||||
<Russian>Пленные</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_SetCaptive">
|
||||
<English>Take Prisoner</English>
|
||||
@ -21,7 +22,7 @@
|
||||
<Italian>Arresta il prigioniero</Italian>
|
||||
<Portuguese>Tomar Prisioneiro</Portuguese>
|
||||
<Hungarian>Foglyul ejtés</Hungarian>
|
||||
<Russian>Взять в плен</Russian>
|
||||
<Russian>Арестовать</Russian>
|
||||
<Japanese>捕虜にする</Japanese>
|
||||
<Korean>포박하기</Korean>
|
||||
<Chinese>逮捕俘虜</Chinese>
|
||||
@ -37,7 +38,7 @@
|
||||
<Italian>Libera il prigioniero</Italian>
|
||||
<Portuguese>Libertar Prisioneiro</Portuguese>
|
||||
<Hungarian>Fogoly szabadon engedése</Hungarian>
|
||||
<Russian>Освободить пленника</Russian>
|
||||
<Russian>Освободить пленного</Russian>
|
||||
<Japanese>捕虜を解放する</Japanese>
|
||||
<Korean>풀어주기</Korean>
|
||||
<Chinese>釋放俘虜</Chinese>
|
||||
@ -53,7 +54,7 @@
|
||||
<Italian>Scorta il Prigioniero</Italian>
|
||||
<Portuguese>Escoltar Prisioneiro</Portuguese>
|
||||
<Hungarian>Fogoly kísérése</Hungarian>
|
||||
<Russian>Конвоировать пленника</Russian>
|
||||
<Russian>Конвоировать пленного</Russian>
|
||||
<Japanese>捕虜を移動させる</Japanese>
|
||||
<Korean>포로 호송하기</Korean>
|
||||
<Chinese>護送俘虜</Chinese>
|
||||
@ -85,7 +86,7 @@
|
||||
<Italian>Prima devi arrestarlo!</Italian>
|
||||
<Portuguese>Você deve tomá-lo como prisioneiro primeiro!</Portuguese>
|
||||
<Hungarian>Először foglyul kell ejtened őt!</Hungarian>
|
||||
<Russian>Вы должны сначала взять его в плен!</Russian>
|
||||
<Russian>Вы должны сначала арестовать его!</Russian>
|
||||
<Japanese>捕虜を取っている必要があります!</Japanese>
|
||||
<Korean>먼저 포로로 만들어야합니다!</Korean>
|
||||
<Chinese>你必須先逮捕他!</Chinese>
|
||||
@ -149,7 +150,7 @@
|
||||
<Portuguese>A algema plástica permite que você contenha prisioneiros.</Portuguese>
|
||||
<Italian>Fascetta per arrestare i prigionieri</Italian>
|
||||
<Hungarian>Gyorskötöző, emberek foglyulejtéséhez használható.</Hungarian>
|
||||
<Russian>Кабельные стяжки позволяют связывать пленников.</Russian>
|
||||
<Russian>Кабельные стяжки используются для связывания рук при аресте</Russian>
|
||||
<Japanese>ケーブル タイは捕虜を制圧できます。</Japanese>
|
||||
<Korean>케이블 타이는 포로를 구류시킬때 씁니다.</Korean>
|
||||
<Chinese>束線帶可以綁住俘虜</Chinese>
|
||||
@ -179,7 +180,7 @@
|
||||
<Portuguese>Parar de se render</Portuguese>
|
||||
<Czech>Přestat se vzdávat</Czech>
|
||||
<Polish>Podejmij walkę ponownie</Polish>
|
||||
<Russian>Прекратить сдачу в плен</Russian>
|
||||
<Russian>Прекратить сдаваться</Russian>
|
||||
<Hungarian>Megadás abbahagyása</Hungarian>
|
||||
<Italian>Smetti di arrenderti</Italian>
|
||||
<Japanese>投降をやめる</Japanese>
|
||||
@ -212,7 +213,7 @@
|
||||
<Portuguese>Sincroniza uma unidade para fazer com que ela se renda.</Portuguese>
|
||||
<French>Synchronise une unité pour la rendre captive.</French>
|
||||
<Hungarian>Egység szinkronizálása, hogy kapituláljon.</Hungarian>
|
||||
<Russian>Синхронизируйте с юнитами, чтобы заставить их сдаться в плен.</Russian>
|
||||
<Russian>Синхронизируйте с юнитами, чтобы заставить их сдаться.</Russian>
|
||||
<Italian>Sincronizza una unità per farla arrendere.</Italian>
|
||||
<Japanese>同期されたユニットを投降させます。</Japanese>
|
||||
<Korean>투항시키기 위해 동기화합니다.</Korean>
|
||||
@ -224,7 +225,7 @@
|
||||
<German>Einheit in Handschellen legen</German>
|
||||
<Polish>Skuj jednostkę</Polish>
|
||||
<Portuguese>Fazer unidade algemada</Portuguese>
|
||||
<Russian>Связать юнита</Russian>
|
||||
<Russian>Связать юниту руки</Russian>
|
||||
<Czech>Spoutat jednotku</Czech>
|
||||
<Italian>Metti manette all'unità</Italian>
|
||||
<Spanish>Hacer que la unidad esté esposada</Spanish>
|
||||
@ -239,7 +240,7 @@
|
||||
<German>Synchronisiere eine Einheit, um sie in Handschellen zu legen.</German>
|
||||
<Polish>Zsynchronizuj z jednostką, aby została skuta.</Polish>
|
||||
<Portuguese>Sincronizar uma unidade para deixá-la algemada.</Portuguese>
|
||||
<Russian>Синхронизируйте с юнитами, чтобы сделать их связанными.</Russian>
|
||||
<Russian>Синхронизируйте с юнитами, чтобы связать им руки.</Russian>
|
||||
<Czech>Synchronizovat s jednotkou, která má být v poutech.</Czech>
|
||||
<Italian>Sincronizza un'unità per metterle le manette.</Italian>
|
||||
<Spanish>Sincroniza una unidad para hacer que esté esposada.</Spanish>
|
||||
@ -274,7 +275,7 @@
|
||||
<Portuguese>Controla as configurações de rendição e abraçadeiras</Portuguese>
|
||||
<French>Contrôle les paramètres de la reddition et des Serflex</French>
|
||||
<Hungarian>Szabályozza a kapituláció és bilincselés beállításait</Hungarian>
|
||||
<Russian>Управляет настройками сдачи в плен и связывания</Russian>
|
||||
<Russian>Управляет настройками ареста и сдачи в плен</Russian>
|
||||
<Italian>Controlla le impostazioni per la resa e le manette</Italian>
|
||||
<Japanese>投降したユニットや拘束されたユニットの扱いを設定します。</Japanese>
|
||||
<Korean>투항과 케이블 타이에 관련한 설정</Korean>
|
||||
@ -290,7 +291,7 @@
|
||||
<Portuguese>Pode algemar o próprio lado</Portuguese>
|
||||
<French>Peut capturer sa propre faction</French>
|
||||
<Hungarian>Saját oldal megbilincselhető</Hungarian>
|
||||
<Russian>Связать союзника</Russian>
|
||||
<Russian>Можно связывать руки союзникам</Russian>
|
||||
<Italian>Puoi ammanettare unità alleate</Italian>
|
||||
<Japanese>拘束ユニットを自陣営へ</Japanese>
|
||||
<Korean>자기편을 포박 할 수 있습니다.</Korean>
|
||||
@ -306,7 +307,7 @@
|
||||
<Portuguese>Os jogadores podem algemar unidades do seu lado</Portuguese>
|
||||
<French>Les joueurs peuvent utiliser les Serflex sur leur propre camp</French>
|
||||
<Hungarian>A játékosok megkötözhetik-e a saját oldalukon lévő egységeket</Hungarian>
|
||||
<Russian>Разрешить игрокам связывать юнитов своей стороны</Russian>
|
||||
<Russian>Разрешить игрокам арестовывать юнитов своей стороны</Russian>
|
||||
<Italian>I giocatori possono ammanettare unità alleate</Italian>
|
||||
<Japanese>プレイヤーが拘束したユニットの陣営を自陣営に変更させます。</Japanese>
|
||||
<Korean>자기편에게 케이블타이를 사용할 수 있게합니다</Korean>
|
||||
@ -322,7 +323,7 @@
|
||||
<Portuguese>Permite rendição</Portuguese>
|
||||
<French>Permettre la reddition</French>
|
||||
<Hungarian>Kapituláció engedélyezése</Hungarian>
|
||||
<Russian>Сдаться в плен</Russian>
|
||||
<Russian>Разрешить сдаваться</Russian>
|
||||
<Italian>Permetti Resa</Italian>
|
||||
<Japanese>投降を許可</Japanese>
|
||||
<Korean>투항 활성화</Korean>
|
||||
@ -338,7 +339,7 @@
|
||||
<Portuguese>Jogadores podem se render depois de guardar sua arma</Portuguese>
|
||||
<French>Les joueurs peuvent se rendre après avoir rangé leur arme</French>
|
||||
<Hungarian>A játékosok megadhatják magukat a fegyverük elrakása után</Hungarian>
|
||||
<Russian>Игроки могут сдаться в плен после того, как уберут оружие</Russian>
|
||||
<Russian>Игроки могут сдаваться после того, как уберут оружие</Russian>
|
||||
<Italian>I giocatori possono arrendersi dopo aver messo via le proprie armi</Italian>
|
||||
<Japanese>プレイヤーは武器を収めたあと投降できるようにします。</Japanese>
|
||||
<Korean>비무장한 플레이어가 투항할 수 있게 합니다</Korean>
|
||||
@ -350,7 +351,7 @@
|
||||
<German>Benötigt Kapitulation</German>
|
||||
<Polish>Wymagaj kapitulacji</Polish>
|
||||
<Portuguese>Requer rendição</Portuguese>
|
||||
<Russian>Требовать пленения</Russian>
|
||||
<Russian>Требовать сдаться для ареста</Russian>
|
||||
<Spanish>Requiere rendición</Spanish>
|
||||
<Czech>Vzdávání vyžadováno</Czech>
|
||||
<Italian>Richiedi Resa</Italian>
|
||||
@ -365,7 +366,7 @@
|
||||
<German>Spieler müssen sich erst ergeben, bevor sie gefangen genommen werden können</German>
|
||||
<Polish>Wymagaj od graczy kapitulacji zanim będzie można ich zaaresztować</Polish>
|
||||
<Portuguese>Requer que jogadores se rendam antes de poderem ser presos</Portuguese>
|
||||
<Russian>Требуется, чтобы игрок сдался в плен прежде, чем его можно будет связать</Russian>
|
||||
<Russian>Требовать для ареста, чтобы игроки вначале сдавались</Russian>
|
||||
<Spanish>Requiere que los Jugadores se rindan antes de arrestarlos</Spanish>
|
||||
<Czech>Vyžaduje, aby se hráč nejdříve vzdal, poté může být spoután</Czech>
|
||||
<Italian>I giocatori devono arrendersi prima che possano essere arrestati</Italian>
|
||||
@ -380,7 +381,7 @@
|
||||
<German>Nur Ergeben</German>
|
||||
<Polish>Tylko kapitulacja</Polish>
|
||||
<Portuguese>Somente rendição </Portuguese>
|
||||
<Russian>Только сдавшийся в плен</Russian>
|
||||
<Russian>Только сдавшийся</Russian>
|
||||
<Spanish>Solo rendición</Spanish>
|
||||
<Czech>Pouze vzdávání</Czech>
|
||||
<Italian>Solo Resa</Italian>
|
||||
@ -414,6 +415,7 @@
|
||||
<Chinesesimp>设置在游标下的单位成俘虏状态。</Chinesesimp>
|
||||
<Korean>커서의 병력을 포박합니다.</Korean>
|
||||
<Polish>Ustawia jednostkę pod kursorem jako jeniec.</Polish>
|
||||
<Russian>Арестовывает указанный курсором юнит</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_requireSurrenderAi_name">
|
||||
<English>Require AI surrendering</English>
|
||||
@ -424,6 +426,7 @@
|
||||
<Chinesesimp>需要AI先行投降</Chinesesimp>
|
||||
<Korean>AI 항복 필요</Korean>
|
||||
<Polish>Wymaga poddania się przez SI</Polish>
|
||||
<Russian>Требовать ИИ сдаться для ареста</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_requireSurrenderAi_description">
|
||||
<English>Require AI to surrender before they can be arrested</English>
|
||||
@ -434,6 +437,7 @@
|
||||
<Chinesesimp>在逮捕AI之前该AI必须先进入投降状态。</Chinesesimp>
|
||||
<Korean>포박하기 전에 먼저 AI가 투항해야만 합니다.</Korean>
|
||||
<Polish>Wymaga poddania się przez SI zanim aresztowanie będzie możliwe</Polish>
|
||||
<Russian>Требовать для ареста, чтобы ИИ вначале сдавались</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -63,6 +63,11 @@ class CfgVehicles {
|
||||
GVAR(space) = 4;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
class Tank_F: Tank {};
|
||||
class UGV_02_Base_F: Tank_F {
|
||||
GVAR(space) = 0;
|
||||
GVAR(hasCargo) = 0;
|
||||
};
|
||||
|
||||
class Car_F;
|
||||
class Truck_F: Car_F {
|
||||
|
@ -11,5 +11,6 @@ PREP_RECOMPILE_END;
|
||||
GVAR(initializedItemClasses) = [];
|
||||
GVAR(initializedVehicleClasses) = [];
|
||||
GVAR(cargoHolderTypes) = ["Car", "Air", "Tank", "Ship", "Cargo_base_F", "Land_PaperBox_closed_F"];
|
||||
GVAR(disableParadropEffectsClasstypes) = ["Car_F"];
|
||||
|
||||
ADDON = true;
|
||||
|
@ -69,8 +69,10 @@ _itemObject setVelocity ((velocity _vehicle) vectorAdd ((vectorNormalized (vecto
|
||||
_item attachTo [_parachute, [0,0,1]];
|
||||
_parachute setVelocity _velocity;
|
||||
|
||||
private _light = "Chemlight_yellow" createVehicle [0,0,0];
|
||||
_light attachTo [_item, [0,0,0]];
|
||||
if ((GVAR(disableParadropEffectsClasstypes) findIf {_item isKindOf _x}) == -1) then {
|
||||
private _light = "Chemlight_yellow" createVehicle [0,0,0];
|
||||
_light attachTo [_item, [0,0,0]];
|
||||
};
|
||||
|
||||
}, [_itemObject], 0.7] call CBA_fnc_waitAndExecute;
|
||||
|
||||
@ -83,8 +85,10 @@ _itemObject setVelocity ((velocity _vehicle) vectorAdd ((vectorNormalized (vecto
|
||||
};
|
||||
|
||||
if (getPos _item select 2 < 1) then {
|
||||
private _smoke = "SmokeshellYellow" createVehicle [0,0,0];
|
||||
_smoke attachTo [_item, [0,0,0]];
|
||||
if ((GVAR(disableParadropEffectsClasstypes) findIf {_item isKindOf _x}) == -1) then {
|
||||
private _smoke = "SmokeshellYellow" createVehicle [0,0,0];
|
||||
_smoke attachTo [_item, [0,0,0]];
|
||||
};
|
||||
|
||||
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
||||
};
|
||||
|
@ -237,6 +237,7 @@
|
||||
<Chinesesimp>货物空间</Chinesesimp>
|
||||
<Polish>Przestrzeń ładunkowa</Polish>
|
||||
<Korean>화물 공간</Korean>
|
||||
<Russian>Грузовое пространство</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_space_edenDesc">
|
||||
<English>The cargo space available in this vehicle/container</English>
|
||||
@ -247,6 +248,7 @@
|
||||
<Chinesesimp>设定此载具/集装箱可装载多少货物</Chinesesimp>
|
||||
<Polish>Dostępna przestrzeń ładunkowa w tym pojeździe/kontenerze</Polish>
|
||||
<Korean>이 차량/컨테이너에서 사용가능한 화물 공간</Korean>
|
||||
<Russian>Грузовое пространство, доступное в этом транспортном средстве / контейнере</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_size_edenName">
|
||||
<English>Cargo Size</English>
|
||||
@ -257,6 +259,7 @@
|
||||
<Chinesesimp>货物的大小</Chinesesimp>
|
||||
<Polish>Wielkość ładunku</Polish>
|
||||
<Korean>화물 크기</Korean>
|
||||
<Russian>Размер груза</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_size_edenDesc">
|
||||
<English>The cargo space required to hold this object (-1 for unloadable)</English>
|
||||
@ -267,6 +270,7 @@
|
||||
<Chinesesimp>此货物会占掉多少空间(设定-1的话此货物就不能被装载)</Chinesesimp>
|
||||
<Polish>Wymagana przestrzeń ładunkowa dla tego obiektu (-1 dla niemożliwych do załadowania)</Polish>
|
||||
<Korean>이 화물을 적재하는데 필요한 공간 (-1=무조건 적재가능)</Korean>
|
||||
<Russian>Грузовое пространство, необходимое для размещения этого объекта (-1 для незагружаемого)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_paradropButton">
|
||||
<English>Airdrop</English>
|
||||
@ -278,6 +282,7 @@
|
||||
<Italian>Lancio Aereo</Italian>
|
||||
<Chinese>空投</Chinese>
|
||||
<Chinesesimp>空投</Chinesesimp>
|
||||
<Russian>Десантирование груза</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_unlevelFlightWarning">
|
||||
<English>Unlevel Flight</English>
|
||||
@ -289,6 +294,7 @@
|
||||
<Italian>Volo non Livellato</Italian>
|
||||
<Chinese>此架飛機並無保持水平飛行</Chinese>
|
||||
<Chinesesimp>此架飞机并无保持水平飞行</Chinesesimp>
|
||||
<Russian>Неподходящее положение</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_paradropTimeCoefficent">
|
||||
<English>Paradrop Time Coefficient</English>
|
||||
@ -300,6 +306,7 @@
|
||||
<Chinesesimp>空投时间系数</Chinesesimp>
|
||||
<Polish>Współczynnik czasu zrzutu</Polish>
|
||||
<Korean>공중 투하 시간 계수</Korean>
|
||||
<Russian>Коэффициент времени десантирования</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_paradropTimeCoefficent_description">
|
||||
<English>Modifier for how long it takes to paradrop a cargo item.</English>
|
||||
@ -311,18 +318,23 @@
|
||||
<Chinesesimp>设定空投所需消耗的时间.</Chinesesimp>
|
||||
<Polish>Modyfikator wskazujący jak dużo czasu potrzeba by zrzucić przedmiot na spadochronie.</Polish>
|
||||
<Korean>화물을 공중 투하 하는데 얼마나 걸리는 시간 설정</Korean>
|
||||
<Russian>Модификатор времени, необходимого для десантирования груза</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_loadTimeCoefficient">
|
||||
<English>Load Time Coefficient</English>
|
||||
<German>Ladezeitmultiplikator</German>
|
||||
<Japanese>積載時間の係数</Japanese>
|
||||
<Polish>Współczynnik czasu załadowania</Polish>
|
||||
<Italian>Coefficente Tempo Caricamento</Italian>
|
||||
<Russian>Коэффициент времени погрузки</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_loadTimeCoefficient_description">
|
||||
<English>Modifies how long it takes to load/unload items.\nTime, in seconds, is the size of the item multiplied by this value.</English>
|
||||
<German>Gibt an, wie lange das Laden / Entladen von Gegenständen dauern soll.\nZeit in Sekunden, die mit der Größe des Gegenstandes multipliziert wird.</German>
|
||||
<Japanese>アイテムの積み下ろし作業にかかる時間を編集できます。\nアイテムの大きさにこの値が乗法され、時間 (秒) を変更できます。</Japanese>
|
||||
<Polish>Modyfikuje, jak długo zajmuje załadowywanie/wyładowywanie przedmiotów. \nCzasem, w sekundach, jest wielkość przedmiotu razy jego wartość.</Polish>
|
||||
<Italian>Modifica quanto tempo ci impiega a caricare o scaricare gli oggetti.\n Tempo, in secondi, è la dimensione dell'oggetto moltiplicata per questo valore</Italian>
|
||||
<Russian>Изменяет время для загрузки/выгрузки предметов. \n Время (сек) - это размер предмета, умноженный на это значение.</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -11,6 +11,7 @@
|
||||
<Italian>Luce chimica</Italian>
|
||||
<Chinese>螢光棒</Chinese>
|
||||
<Chinesesimp>萤光棒</Chinesesimp>
|
||||
<Russian>Химсвет</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Action_Prepare">
|
||||
<English>Prepare %1</English>
|
||||
@ -22,6 +23,7 @@
|
||||
<Italian>Prepara %1</Italian>
|
||||
<Chinese>使用%1</Chinese>
|
||||
<Chinesesimp>使用%1</Chinesesimp>
|
||||
<Russian>Приготовить %1</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Action_Prepare_Done">
|
||||
<English>%1<br/>Prepared</English>
|
||||
@ -33,6 +35,7 @@
|
||||
<Italian>%1 <br/> Preparata</Italian>
|
||||
<Chinese>%1<br/>已使用</Chinese>
|
||||
<Chinesesimp>%1<br/>已使用</Chinesesimp>
|
||||
<Russian>%1<br/>Приготовлен</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Inventory_Full">
|
||||
<English>No inventory space</English>
|
||||
@ -60,6 +63,7 @@
|
||||
<Italian>[ACE] Luci chimiche</Italian>
|
||||
<Chinese>[ACE] 螢光棒</Chinese>
|
||||
<Chinesesimp>[ACE] 萤光棒</Chinesesimp>
|
||||
<Russian>[ACE] Химсвет</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Orange_DisplayName">
|
||||
<English>Chemlight (Orange)</English>
|
||||
@ -71,6 +75,7 @@
|
||||
<Italian>Luce chimica (Arancione)</Italian>
|
||||
<Chinese>螢光棒 (橘色)</Chinese>
|
||||
<Chinesesimp>萤光棒 (橘色)</Chinesesimp>
|
||||
<Russian>Химсвет (Оранжевый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Orange_DisplayNameShort">
|
||||
<English>Orange Light</English>
|
||||
@ -82,6 +87,7 @@
|
||||
<Italian>Luce Arancione</Italian>
|
||||
<Chinese>橘色光</Chinese>
|
||||
<Chinesesimp>橘色光</Chinesesimp>
|
||||
<Russian>Оранжевый свет</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Orange_DescriptionShort">
|
||||
<English>Type: Light - Orange<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -93,6 +99,7 @@
|
||||
<Italian>Tipo: Luce - Arancione<br/>Rimanenti: 1<br/>Usata in: Mano</Italian>
|
||||
<Chinese>類型: 光 - 橘色<br />發數: 1<br />使用於: 手</Chinese>
|
||||
<Chinesesimp>类型: 光 - 橘色<br />发数: 1<br />使用于: 手</Chinesesimp>
|
||||
<Russian>Тип: Свет - Оранжевый<br />1 штука<br />В руках</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_White_DisplayName">
|
||||
<English>Chemlight (White)</English>
|
||||
@ -104,6 +111,7 @@
|
||||
<Italian>Luce chimica (Bianca)</Italian>
|
||||
<Chinese>螢光棒 (白色)</Chinese>
|
||||
<Chinesesimp>萤光棒 (白色)</Chinesesimp>
|
||||
<Russian>Химсвет (Белый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_White_DisplayNameShort">
|
||||
<English>White Light</English>
|
||||
@ -115,6 +123,7 @@
|
||||
<Italian>Luce Bianca</Italian>
|
||||
<Chinese>白色光</Chinese>
|
||||
<Chinesesimp>白色光</Chinesesimp>
|
||||
<Russian>Белый свет</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_White_DescriptionShort">
|
||||
<English>Type: Light - White<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -126,6 +135,7 @@
|
||||
<Italian>Tipo: Luce - Bianca<br/>Rimanenti: 1<br/>Usata in: Mano</Italian>
|
||||
<Chinese>類型: 光 - 白色<br />發數: 1<br />使用於: 手</Chinese>
|
||||
<Chinesesimp>类型: 光 - 白色<br />发数: 1<br />使用于: 手</Chinesesimp>
|
||||
<Russian>Тип: Свет - Белый<br />1 штука<br />В руках</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiRed_DisplayName">
|
||||
<English>Chemlight (Hi Red)</English>
|
||||
@ -137,6 +147,7 @@
|
||||
<Italian>Luce chimica (Hi Rossa)</Italian>
|
||||
<Chinese>螢光棒 (超亮紅色)</Chinese>
|
||||
<Chinesesimp>萤光棒 (超亮红色)</Chinesesimp>
|
||||
<Russian>Химсвет (Ярко-Красный)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiRed_DisplayNameShort">
|
||||
<English>Red Hi Light</English>
|
||||
@ -148,6 +159,7 @@
|
||||
<Italian>Luce Hi Rossa</Italian>
|
||||
<Chinese>超亮紅色光</Chinese>
|
||||
<Chinesesimp>超亮红色光</Chinesesimp>
|
||||
<Russian>Яркий Красный свет</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiRed_DescriptionShort">
|
||||
<English>Type: Light - Red Hi (30 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -159,6 +171,7 @@
|
||||
<Italian>Tipo: Luce - Rossa Hi (30 minuti)<br />Rimanenti: 1<br/>Usata in: Mano</Italian>
|
||||
<Chinese>類型: 光 - 超亮紅色 (30分鐘)<br />發數: 1<br />使用於: 手</Chinese>
|
||||
<Chinesesimp>类型: 光 - 超亮红色 (30分钟)<br />发数: 1<br />使用于: 手</Chinesesimp>
|
||||
<Russian>Тип: Свет - Ярко-Красный (30 минут)<br />1 штука<br />В руках</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiYellow_DisplayName">
|
||||
<English>Chemlight (Hi Yellow)</English>
|
||||
@ -170,6 +183,7 @@
|
||||
<Italian>Luce chimica (Hi Gialla)</Italian>
|
||||
<Chinese>螢光棒 (超亮黃色)</Chinese>
|
||||
<Chinesesimp>萤光棒 (超亮黄色)</Chinesesimp>
|
||||
<Russian>Химсвет (Ярко-Желтый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiYellow_DisplayNameShort">
|
||||
<English>Yellow Hi Light</English>
|
||||
@ -181,6 +195,7 @@
|
||||
<Italian>Luce Hi Gialla</Italian>
|
||||
<Chinese>超亮黃色光</Chinese>
|
||||
<Chinesesimp>超亮黄色光</Chinesesimp>
|
||||
<Russian>Яркий Желтый свет</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiYellow_DescriptionShort">
|
||||
<English>Type: Light - Yellow Hi (30 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -192,6 +207,7 @@
|
||||
<Italian>Tipo: Luce - Gialla Hi (30 minuti)<br />Rimanenti: 1<br/>Usata in: Mano</Italian>
|
||||
<Chinese>類型: 光 - 超亮黃色 (30分鐘)<br />發數: 1<br />使用於: 手</Chinese>
|
||||
<Chinesesimp>类型: 光 - 超亮黄色 (30分钟)<br />发数: 1<br />使用于: 手</Chinesesimp>
|
||||
<Russian>Тип: Свет - Ярко-Желтый (30 минут)<br />1 штука<br />В руках</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiWhite_DisplayName">
|
||||
<English>Chemlight (Hi White)</English>
|
||||
@ -203,6 +219,7 @@
|
||||
<Italian>Luce chimica (Hi Bianca)</Italian>
|
||||
<Chinese>螢光棒 (超亮白色)</Chinese>
|
||||
<Chinesesimp>萤光棒 (超亮白色)</Chinesesimp>
|
||||
<Russian>Химсвет (Ярко-Белый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiWhite_DisplayNameShort">
|
||||
<English>White Hi Light</English>
|
||||
@ -214,6 +231,7 @@
|
||||
<Italian>Luce Hi Bianca</Italian>
|
||||
<Chinese>超亮白色光</Chinese>
|
||||
<Chinesesimp>超亮白色光</Chinesesimp>
|
||||
<Russian>Яркий Белый свет</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiWhite_DescriptionShort">
|
||||
<English>Type: Light - White Hi (30 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -225,6 +243,7 @@
|
||||
<Italian>Tipo: Luce - Bianca Hi (30 minuti)<br />Rimanenti: 1<br/>Usata in: Mano</Italian>
|
||||
<Chinese>類型: 光 - 超亮白色 (30分鐘)<br />發數: 1<br />使用於: 手</Chinese>
|
||||
<Chinesesimp>类型: 光 - 超亮白色 (30分钟)<br />发数: 1<br />使用于: 手</Chinesesimp>
|
||||
<Russian>Тип: Свет - Ярко-Белый (30 минут)<br />1 штука<br />В руках</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiBlue_DisplayName">
|
||||
<English>Chemlight (Hi Blue)</English>
|
||||
@ -232,6 +251,7 @@
|
||||
<Japanese>ケミライト (高輝度 青)</Japanese>
|
||||
<Polish>Świetlik (jaskrawy niebieski)</Polish>
|
||||
<Italian>Luce chimica (Hi Blu)</Italian>
|
||||
<Russian>Химсвет (Ярко-Синий)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiBlue_DisplayNameShort">
|
||||
<English>Blue Hi Light</English>
|
||||
@ -239,6 +259,7 @@
|
||||
<Japanese>高輝度の青色</Japanese>
|
||||
<Polish>Jaskrawe niebieskie światło</Polish>
|
||||
<Italian>Luce Hi Blu</Italian>
|
||||
<Russian>Яркий Синий свет</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiBlue_DescriptionShort">
|
||||
<English>Type: Light - Blue Hi (30 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -246,6 +267,7 @@
|
||||
<Japanese>種類: 照明 - 高輝度 青 (30分間)<br />装填数: 1<br />次で使用: 携帯</Japanese>
|
||||
<Polish>Typ: Światło - jaskrawe niebieskie (30 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
<Italian>Tipo: Luce - Hi blu (30 minuti)<br/>Rimanenti:1 <br/>Usata in: Mano</Italian>
|
||||
<Russian>Тип: Свет - Ярко-Синий (30 минут)<br />1 штука<br />В руках</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiGreen_DisplayName">
|
||||
<English>Chemlight (Hi Green)</English>
|
||||
@ -253,6 +275,7 @@
|
||||
<Japanese>ケミライト (高輝度 緑)</Japanese>
|
||||
<Polish>Świetlik (jaskrawy zielony)</Polish>
|
||||
<Italian>Luce chimica (Hi Verde)</Italian>
|
||||
<Russian>Химсвет (Ярко-Зеленый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiGreen_DisplayNameShort">
|
||||
<English>Green Hi Light</English>
|
||||
@ -260,6 +283,7 @@
|
||||
<Japanese>高輝度の青色</Japanese>
|
||||
<Polish>Jaskrawe zielone światło</Polish>
|
||||
<Italian>Luce Hi Verde</Italian>
|
||||
<Russian>Яркий Зеленый свет</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiGreen_DescriptionShort">
|
||||
<English>Type: Light - Green Hi (30 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -267,6 +291,7 @@
|
||||
<Japanese>種類: 照明 - 高輝度 緑 (30分間)<br />装填数: 1<br />次で使用: 携帯</Japanese>
|
||||
<Polish>Typ: Światło - jaskrawe zielone (30 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
<Italian>Tipo: Luce - Hi verde (30 minuti)<br/>Rimanenti: 1<br/>Usata in: Mano</Italian>
|
||||
<Russian>Тип: Свет - Ярко-Зеленый (30 минут)<br />1 штука<br />В руках</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_UltraHiOrange_DisplayName">
|
||||
<English>Chemlight (Ultra-Hi Orange)</English>
|
||||
@ -274,6 +299,7 @@
|
||||
<Japanese>ケミライト (高輝度 オレンジ)</Japanese>
|
||||
<Polish>Świetlik (ultra-jaskrawy pomarańczowy)</Polish>
|
||||
<Italian>Luce chimica (Ultra-Hi Arancione)</Italian>
|
||||
<Russian>Химсвет (Ультраяркий Оранжевый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_UltraHiOrange_DisplayNameShort">
|
||||
<English>Orange Ultra-Hi Light</English>
|
||||
@ -281,6 +307,7 @@
|
||||
<Japanese>ウルトラ高輝度のオレンジ色</Japanese>
|
||||
<Polish>Ultra-jaskrawe pomarańczowe światło</Polish>
|
||||
<Italian>Luce Ultra-Hi Arancione</Italian>
|
||||
<Russian>Ультраяркий Оранжевый свет</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_UltraHiOrange_DescriptionShort">
|
||||
<English>Type: Light - Orange Ultra-Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -288,6 +315,7 @@
|
||||
<Japanese>種類: 照明 - ウルトラ高輝度 オレンジ (5分間)<br />装填数: 1<br />次で使用: 携帯</Japanese>
|
||||
<Polish>Typ: Światło - ultra-jaskrawe pomarańczowe (30 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
<Italian>Tipo: Luce - Ultra-Hi (5 minuti)<br/>Rimanenti: 1<br/>Usata in: Mano</Italian>
|
||||
<Russian>Тип: Свет - Ультраяркий Оранжевый (5 минут)<br />1 штука<br />В руках</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_IR_DisplayName">
|
||||
<English>Chemlight (IR)</English>
|
||||
@ -299,6 +327,7 @@
|
||||
<Italian>Luce chimica (IR)</Italian>
|
||||
<Chinese>螢光棒 (紅外線)</Chinese>
|
||||
<Chinesesimp>萤光棒 (红外线)</Chinesesimp>
|
||||
<Russian>Химсвет (Инфракрасный)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_IR_DisplayNameShort">
|
||||
<English>IR Light</English>
|
||||
@ -310,6 +339,7 @@
|
||||
<Italian>Luce IR</Italian>
|
||||
<Chinese>紅外線光</Chinese>
|
||||
<Chinesesimp>红外线光</Chinesesimp>
|
||||
<Russian>Инфракрасный свет</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_IR_DescriptionShort">
|
||||
<English>Type: Light - Infrared<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -321,6 +351,7 @@
|
||||
<Italian>Tipo: Luce - Infrarossi<br />Usata in: Mano</Italian>
|
||||
<Chinese>類型: 光 - 紅外線<br />發數: 1<br />使用於: 手</Chinese>
|
||||
<Chinesesimp>类型: 光 - 红外线<br />发数: 1<br />使用于: 手</Chinesesimp>
|
||||
<Russian>Тип: Свет - Инфракрасный<br />1 штука<br />В руках</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Empty_DisplayName">
|
||||
<English>Chemlight Shield (Empty)</English>
|
||||
@ -332,6 +363,7 @@
|
||||
<Italian>Scudo Luce chimica (Vuoto)</Italian>
|
||||
<Chinese>螢光棒保護殼 (空)</Chinese>
|
||||
<Chinesesimp>萤光棒保护壳 (空)</Chinesesimp>
|
||||
<Russian>Контейнер для Химсвета (Пуст)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Empty_DescriptionShort">
|
||||
<English>Shield for chemlights. Combine with chemlight to prepare reading light.</English>
|
||||
@ -343,6 +375,7 @@
|
||||
<Italian>Scudo per luci chimiche. Combina con una luce chimica per una luce da lettura.</Italian>
|
||||
<Chinese>螢光棒的保護殼. 與螢光棒結合後可充當閱讀燈</Chinese>
|
||||
<Chinesesimp>萤光棒的保护壳. 与萤光棒结合后可充当阅读灯.</Chinesesimp>
|
||||
<Russian>Защитный контейнер для Химсвета. Объедините с Химсветом, чтобы подготовить Свет для чтения</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Green_DisplayName">
|
||||
<English>Chemlight Shield (Green)</English>
|
||||
@ -354,6 +387,7 @@
|
||||
<Italian>Scudo Luce Chimica (Verde)</Italian>
|
||||
<Chinese>螢光棒保護殼 (綠色)</Chinese>
|
||||
<Chinesesimp>萤光棒保护壳 (绿色)</Chinesesimp>
|
||||
<Russian>Контейнер для Химсвета (Зел)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Green_DescriptionShort">
|
||||
<English>Green reading light.</English>
|
||||
@ -365,6 +399,7 @@
|
||||
<Italian>Luce da lettura Verde.</Italian>
|
||||
<Chinese>綠色閱讀燈</Chinese>
|
||||
<Chinesesimp>绿色阅读灯。</Chinesesimp>
|
||||
<Russian>Ночник из Химсвета (Зеленый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Red_DisplayName">
|
||||
<English>Chemlight Shield (Red)</English>
|
||||
@ -376,6 +411,7 @@
|
||||
<Italian>Scudo Luce Chimica (Rossa)</Italian>
|
||||
<Chinese>螢光棒保護殼 (紅色)</Chinese>
|
||||
<Chinesesimp>萤光棒保护壳 (红色)</Chinesesimp>
|
||||
<Russian>Контейнер для Химсвета (Красн)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Red_DescriptionShort">
|
||||
<English>Red reading light.</English>
|
||||
@ -387,6 +423,7 @@
|
||||
<Italian>Luce da lettura Rossa.</Italian>
|
||||
<Chinese>紅色閱讀燈</Chinese>
|
||||
<Chinesesimp>红色阅读灯。</Chinesesimp>
|
||||
<Russian>Ночник из Химсвета (Красный)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Blue_DisplayName">
|
||||
<English>Chemlight Shield (Blue)</English>
|
||||
@ -398,6 +435,7 @@
|
||||
<Italian>Scudo Luce Chimica (Blu)</Italian>
|
||||
<Chinese>螢光棒保護殼 (藍色)</Chinese>
|
||||
<Chinesesimp>萤光棒保护壳 (蓝色)</Chinesesimp>
|
||||
<Russian>Контейнер для Химсвета (Син)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Blue_DescriptionShort">
|
||||
<English>Blue reading light.</English>
|
||||
@ -409,6 +447,7 @@
|
||||
<Italian>Luce da lettura Blu.</Italian>
|
||||
<Chinese>藍色閱讀燈</Chinese>
|
||||
<Chinesesimp>蓝色阅读灯。</Chinesesimp>
|
||||
<Russian>Ночник из Химсвета (Синий)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Yellow_DisplayName">
|
||||
<English>Chemlight Shield (Yellow)</English>
|
||||
@ -420,6 +459,7 @@
|
||||
<Italian>Scudo Luce Chimica (Gialla)</Italian>
|
||||
<Chinese>螢光棒保護殼 (黃色)</Chinese>
|
||||
<Chinesesimp>萤光棒保护壳 (黄色)</Chinesesimp>
|
||||
<Russian>Контейнер для Химсвета (Желт)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Yellow_DescriptionShort">
|
||||
<English>Yellow reading light.</English>
|
||||
@ -431,6 +471,7 @@
|
||||
<Italian>Luce da lettura Gialla.</Italian>
|
||||
<Chinese>黃色閱讀燈</Chinese>
|
||||
<Chinesesimp>黄色阅读灯。</Chinesesimp>
|
||||
<Russian>Ночник из Химсвета (Желтый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Orange_DisplayName">
|
||||
<English>Chemlight Shield (Orange)</English>
|
||||
@ -442,6 +483,7 @@
|
||||
<Italian>Scudo Luce Chimica (Arancione)</Italian>
|
||||
<Chinese>螢光棒保護殼 (橘色)</Chinese>
|
||||
<Chinesesimp>萤光棒保护壳 (橘色)</Chinesesimp>
|
||||
<Russian>Контейнер для Химсвета (Оранж)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Orange_DescriptionShort">
|
||||
<English>Orange reading light.</English>
|
||||
@ -453,6 +495,7 @@
|
||||
<Italian>Luce da lettura Arancione.</Italian>
|
||||
<Chinese>橘色閱讀燈</Chinese>
|
||||
<Chinesesimp>橘色阅读灯。</Chinesesimp>
|
||||
<Russian>Ночник из Химсвета (Оранжевый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_White_DisplayName">
|
||||
<English>Chemlight Shield (White)</English>
|
||||
@ -464,6 +507,7 @@
|
||||
<Italian>Scudo Luce Chimica (Bianca)</Italian>
|
||||
<Chinese>螢光棒保護殼 (白色)</Chinese>
|
||||
<Chinesesimp>萤光棒保护壳 (白色)</Chinesesimp>
|
||||
<Russian>Контейнер для Химсвета (Белый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_White_DescriptionShort">
|
||||
<English>White reading light.</English>
|
||||
@ -475,6 +519,7 @@
|
||||
<Italian>Luce da lettura Bianca.</Italian>
|
||||
<Chinese>白色閱讀燈</Chinese>
|
||||
<Chinesesimp>白色阅读灯。</Chinesesimp>
|
||||
<Russian>Ночник из Химсвета (Белый)</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -21,6 +21,9 @@ LOG("Adding ACE_Settings to CBA_settings");
|
||||
GVAR(cbaSettings_forcedSettings) = [];
|
||||
GVAR(cbaSettings_missionSettings) = [];
|
||||
GVAR(settings) = []; // will stay empty - for BWC?
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
GVAR(settingsMovedToSQF) = [];
|
||||
#endif
|
||||
|
||||
// Add Event Handlers:
|
||||
[QGVAR(setSetting), {
|
||||
@ -66,6 +69,13 @@ GVAR(settings) = []; // will stay empty - for BWC?
|
||||
false
|
||||
} count GVAR(runAtSettingsInitialized);
|
||||
GVAR(runAtSettingsInitialized) = nil; //cleanup
|
||||
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
INFO_1("checking settingsMovedToSQF [%1]",count GVAR(settingsMovedToSQF));
|
||||
{
|
||||
if (isNil _x) then { WARNING_1("setting [%1] NOT moved to sqf",_x); };
|
||||
} forEach GVAR(settingsMovedToSQF);
|
||||
#endif
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
private _start = diag_tickTime;
|
||||
@ -81,6 +91,10 @@ for "_index" from 0 to (_countOptions - 1) do {
|
||||
} else {
|
||||
WARNING_1("Setting [%1] - Already defined from somewhere else??",_varName);
|
||||
};
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
} else {
|
||||
GVAR(settingsMovedToSQF) pushBack configName _optionEntry;
|
||||
#endif
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -30,7 +30,7 @@ _target setVariable [QGVAR(owner), _unit, true];
|
||||
|
||||
// lock target object
|
||||
if (_lockTarget) then {
|
||||
private _canBeDisassembled = !([] isEqualTo getArray (_target call CBA_fnc_getObjectConfig >> "assembleInfo" >> "dissasembleTo"));
|
||||
private _canBeDisassembled = !([] isEqualTo getArray (_target call CBA_fnc_getObjectConfig >> "assembleInfo" >> "dissasembleTo")) && { !([false, true] select (_target getVariable [QEGVAR(csw,assemblyMode), 0])) };
|
||||
if (!isNull _unit) then {
|
||||
[QGVAR(lockVehicle), _target, _target] call CBA_fnc_targetEvent;
|
||||
if (_canBeDisassembled) then {
|
||||
|
@ -16,6 +16,7 @@
|
||||
*/
|
||||
|
||||
params ["_state"];
|
||||
TRACE_1("disableUserInput",_state);
|
||||
|
||||
if (_state) then {
|
||||
disableSerialization;
|
||||
|
@ -13,11 +13,11 @@
|
||||
* is the unit an EOD <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* isSpecialist = [player] call FUNC(isEOD);
|
||||
* [player] call ace_common_fnc_isEOD
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
|
||||
params ["_unit"];
|
||||
|
||||
_unit getVariable ["ACE_isEOD", _unit getUnitTrait "explosiveSpecialist"] // return
|
||||
(_unit getVariable ["ACE_isEOD", _unit getUnitTrait "explosiveSpecialist"]) in [1, true]
|
||||
|
@ -16,7 +16,8 @@
|
||||
* Public: Yes
|
||||
*/
|
||||
|
||||
params ["_id", "_disable"];
|
||||
params [["_id", "#", [""]], ["_disable", false, [false]]];
|
||||
TRACE_2("setDisableUserInputStatus",_id,_disable);
|
||||
|
||||
if (isNil QGVAR(DISABLE_USER_INPUT_COLLECTION)) then {
|
||||
GVAR(DISABLE_USER_INPUT_COLLECTION) = [];
|
||||
|
@ -10,6 +10,7 @@
|
||||
<Chinesesimp>通用</Chinesesimp>
|
||||
<Korean>일반</Korean>
|
||||
<Polish>Ogólny</Polish>
|
||||
<Russian>Общий</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACETeam">
|
||||
<English>ACE-Team</English>
|
||||
@ -27,7 +28,7 @@
|
||||
<Chinese>ACE-製作團隊</Chinese>
|
||||
<Chinesesimp>ACE-制作团队</Chinesesimp>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Advanced">
|
||||
<Key ID="STR_ACE_Common_Advanced">
|
||||
<English>Advanced</English>
|
||||
<Russian>Усложненный</Russian>
|
||||
<Polish>Zaawansowany</Polish>
|
||||
@ -410,7 +411,7 @@
|
||||
<Chinese>未知的</Chinese>
|
||||
<Chinesesimp>未知的</Chinesesimp>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Normal">
|
||||
<Key ID="STR_ACE_Common_Normal">
|
||||
<English>Normal</English>
|
||||
<German>Normal</German>
|
||||
<Italian>Normale</Italian>
|
||||
@ -506,30 +507,36 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBOsAction">
|
||||
<English>Check PBO Action</English>
|
||||
<German>PBO Überprüfung</German>
|
||||
<Italian>Controlla Azioni PBO</Italian>
|
||||
<Chinese>檢查PBO動作</Chinese>
|
||||
<Chinesesimp>检查PBO动作</Chinesesimp>
|
||||
<Japanese>PBO 検査の挙動</Japanese>
|
||||
<Korean>PBO 검사</Korean>
|
||||
<Polish>Sprawdź akcję PBO</Polish>
|
||||
<Russian>Действие при проверке PBO</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBOsCheckAll">
|
||||
<English>Check PBO All</English>
|
||||
<German>Alle PBOs überprüfen</German>
|
||||
<Italian>Controlla Tutti i PBO</Italian>
|
||||
<Chinese>檢查所有PBO</Chinese>
|
||||
<Chinesesimp>检查所有PBO</Chinesesimp>
|
||||
<Japanese>PBO 全てを検査</Japanese>
|
||||
<Korean>모든 PBO 검사</Korean>
|
||||
<Polish>Sprawdź wszystkie PBO</Polish>
|
||||
<Russian>Проверять все PBO</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBOsWhitelist">
|
||||
<English>Check PBO Whitelist</English>
|
||||
<German>PBO Whitelist</German>
|
||||
<Italian>Controlla Whitelist PBO</Italian>
|
||||
<Chinese>檢查PBO白名單</Chinese>
|
||||
<Chinesesimp>检查PBO白名单</Chinesesimp>
|
||||
<Japanese>許可リスト内の PBO を検査</Japanese>
|
||||
<Korean>검사 제외 PBO</Korean>
|
||||
<Polish>Sprawdź białą listę PBO</Polish>
|
||||
<Russian>Белый список для проверки PBO</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_SettingFeedbackIconsName">
|
||||
<English>Feedback icons</English>
|
||||
@ -998,11 +1005,13 @@
|
||||
<Chinese>啟用</Chinese>
|
||||
<Chinesesimp>启用</Chinesesimp>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Always">
|
||||
<Key ID="STR_ACE_Common_Always">
|
||||
<English>Always</English>
|
||||
<German>Immer</German>
|
||||
<Japanese>常に</Japanese>
|
||||
<Russian>Всегда</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Anywhere">
|
||||
<Key ID="STR_ACE_Common_Anywhere">
|
||||
<English>Anywhere</English>
|
||||
<Russian>Где угодно</Russian>
|
||||
<Polish>Wszędzie</Polish>
|
||||
@ -1010,13 +1019,13 @@
|
||||
<German>Überall</German>
|
||||
<Czech>Kdekoliv</Czech>
|
||||
<Portuguese>Qualquer lugar</Portuguese>
|
||||
<French>PArtout</French>
|
||||
<French>Partout</French>
|
||||
<Hungarian>Akárhol</Hungarian>
|
||||
<Italian>Ovunque</Italian>
|
||||
<Japanese>どこでも</Japanese>
|
||||
<Korean>어디서나</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Basic">
|
||||
<Key ID="STR_ACE_Common_Basic">
|
||||
<English>Basic</English>
|
||||
<Russian>Базовый</Russian>
|
||||
<Polish>Podstawowy</Polish>
|
||||
@ -1031,7 +1040,7 @@
|
||||
<Korean>기본</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Vehicle">
|
||||
<English>Medical vehicles</English>
|
||||
<English>Medical Vehicles</English>
|
||||
<Russian>В медицинском транспорте</Russian>
|
||||
<Polish>Pojazdy medyczne</Polish>
|
||||
<Spanish>Vehiculos médicos</Spanish>
|
||||
@ -1079,10 +1088,14 @@
|
||||
<Key ID="STR_ACE_Common_Confirm">
|
||||
<English>Confirm</English>
|
||||
<Japanese>確認</Japanese>
|
||||
<German>Bestätigen</German>
|
||||
<Russian>Подтвердить</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_Never">
|
||||
<English>Never</English>
|
||||
<Japanese>行わない</Japanese>
|
||||
<German>Nie</German>
|
||||
<Russian>Никогда</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_VehiclesOnly">
|
||||
<English>Vehicles only</English>
|
||||
@ -1260,6 +1273,7 @@
|
||||
<Japanese>音楽の音量低下を許可</Japanese>
|
||||
<Italian>Permesso di abbassare la musica</Italian>
|
||||
<Polish>Zezwól na przyciszanie muzyki</Polish>
|
||||
<Russian>Разрешить приглушение музыки</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_AllowFadeMusicTooltip">
|
||||
<English>Allow ACE scripts to turn down the music.</English>
|
||||
@ -1270,22 +1284,59 @@
|
||||
<Japanese>ACE スプリントへ音量低下を許可します。</Japanese>
|
||||
<Italian>Permetti agli script di ACEdi abbassare la musica.</Italian>
|
||||
<Polish>Zezwól skrypty ACE na przyciszanie muzyki.</Polish>
|
||||
<Russian>Позволить скриптам ACE приглушать музыку</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_FlagBlack">
|
||||
<English>Flag (ACE - Black)</English>
|
||||
<German>Flagge (Ace - Schwarz)</German>
|
||||
<Chinesesimp>旗帜(ACE-黑色):</Chinesesimp>
|
||||
<Chinese>旗幟(ACE-黑色)</Chinese>
|
||||
<Italian>Bandiera (ACE - Nera)</Italian>
|
||||
<Japanese>旗 (ACE - 黒)</Japanese>
|
||||
<Polish>Flaga (ACE - Czarna)</Polish>
|
||||
<Russian>Флаг (ACE - Черный)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_FlagWhite">
|
||||
<English>Flag (ACE - White)</English>
|
||||
<German>Flagge (Ace - Weiß)</German>
|
||||
<Chinesesimp>旗帜(ACE-白色):</Chinesesimp>
|
||||
<Chinese>旗幟(ACE-白色)</Chinese>
|
||||
<Italian>Bandiera (ACE - Bianca)</Italian>
|
||||
<Japanese>旗 (ACE - 白)</Japanese>
|
||||
<Polish>Flaga (ACE - Biała)</Polish>
|
||||
<Russian>Флаг (ACE - Белый)</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_playerOnly">
|
||||
<English>Players only</English>
|
||||
<Russian>Игроков</Russian>
|
||||
<Polish>Tylko dla graczy</Polish>
|
||||
<Spanish>Solo jugadores</Spanish>
|
||||
<German>Nur Spieler</German>
|
||||
<Czech>Pouze hráči</Czech>
|
||||
<Portuguese>Somente jogadores</Portuguese>
|
||||
<French>Joueur uniquement</French>
|
||||
<Hungarian>Csak játékosok</Hungarian>
|
||||
<Italian>Solo giocatori</Italian>
|
||||
<Japanese>プレイヤーのみ</Japanese>
|
||||
<Korean>플레이어만</Korean>
|
||||
<Chinesesimp>只限玩家</Chinesesimp>
|
||||
<Chinese>只限玩家</Chinese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_playersAndAI">
|
||||
<English>Players and AI</English>
|
||||
<Russian>Игроков и ботов</Russian>
|
||||
<Polish>Gracze oraz AI</Polish>
|
||||
<Spanish>Jugadores e IA</Spanish>
|
||||
<German>Spieler und KI</German>
|
||||
<Czech>Hráči a AI</Czech>
|
||||
<Portuguese>Jogadores e IA</Portuguese>
|
||||
<French>Joueurs et IA</French>
|
||||
<Hungarian>Játékosok és AI</Hungarian>
|
||||
<Italian>Giocatori ed IA</Italian>
|
||||
<Japanese>プレイヤーと AI</Japanese>
|
||||
<Korean>플레이어 및 인공지능</Korean>
|
||||
<Chinesesimp>玩家与AI</Chinesesimp>
|
||||
<Chinese>玩家與AI</Chinese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -11,14 +11,19 @@
|
||||
<German>ACE Durchzündung</German>
|
||||
<French>ACE Cook off</French>
|
||||
<Polish>ACE Samozapłon</Polish>
|
||||
<Russian>ACE Возгорание</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_enable_hd_name">
|
||||
<English>Damage handling and turret effects</English>
|
||||
<German>Schadensberechnung und Geschützturmeffekte</German>
|
||||
<Japanese>損傷処理と砲塔の効果</Japanese>
|
||||
<Russian>Обработка урона и эффектов срыва башни</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_enable_hd_tooltip">
|
||||
<English>Changes damage handling for cook off and turret explosion effects</English>
|
||||
<German>Ändert die Schadensberechnung für die Durchzündung und die Explosionseffekte des Geschützturmes</German>
|
||||
<Japanese>誘爆の損傷処理と砲塔の爆発効果を変更します。</Japanese>
|
||||
<Russian>Изменяет обработку урона для возгорания и эффекта срыва башни</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_generic_turret_wreck">
|
||||
<English>Wreck (Turret)</English>
|
||||
@ -45,6 +50,7 @@
|
||||
<Italian>Abilita esplosione cassa munizioni</Italian>
|
||||
<Chinese>開啟彈藥箱殉爆效果</Chinese>
|
||||
<Chinesesimp>开启弹药箱殉爆效果</Chinesesimp>
|
||||
<Russian>Разрешить возгорание ящиков с боеприпасами</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_enableBoxCookoff_tooltip">
|
||||
<English>Enables cooking off of ammo boxes.</English>
|
||||
@ -56,6 +62,7 @@
|
||||
<Italian>Abilita l'esplosione della cassa di munizioni. </Italian>
|
||||
<Chinese>開啟彈藥箱殉爆效果</Chinese>
|
||||
<Chinesesimp>开启弹药箱殉爆效果</Chinesesimp>
|
||||
<Russian>Активирует возгорание ящиков с боеприпасами</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_enableAmmoCookoff_name">
|
||||
<English>Enable Ammunition cook off</English>
|
||||
@ -67,6 +74,7 @@
|
||||
<Italian>Abilita Esplosione munizioni</Italian>
|
||||
<Chinese>開啟彈藥殉爆效果</Chinese>
|
||||
<Chinesesimp>开启弹药殉爆效果</Chinesesimp>
|
||||
<Russian>Разрешить детонацию боекомплекта</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_enableAmmoCookoff_tooltip">
|
||||
<English>Enables Ammunition cook off. Fires ammunition projectiles while vehicle is on fire and has ammunition.</English>
|
||||
@ -78,6 +86,7 @@
|
||||
<Chinese>開啟彈藥殉爆效果。當一台載有彈藥的載具起火時, 將會有殉爆的效果</Chinese>
|
||||
<Chinesesimp>开启弹药殉爆效果。当一台载有弹药的载具起火时, 将会有殉爆的效果。</Chinesesimp>
|
||||
<Korean>쿡오프 현상을 활성화 합니다. 이것은 탄약에 불이 붙어있는 동안 주변에 발사체를 발사합니다.</Korean>
|
||||
<Russian>Активирует возгорание и детонацию боекомплекта в горящей технике</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_ammoCookoffDuration_name">
|
||||
<English>Ammunition cook off duration</English>
|
||||
@ -89,6 +98,7 @@
|
||||
<Chinese>彈藥殉爆效果持續時間</Chinese>
|
||||
<Chinesesimp>弹药殉爆效果持续时间</Chinesesimp>
|
||||
<Korean>쿡오프 지속 시간</Korean>
|
||||
<Russian>Длительность возгорания боеприпасов</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_ammoCookoffDuration_tooltip">
|
||||
<English>Multiplier for how long cook off lasts [Setting to 0 will disable ammo cookoff]</English>
|
||||
@ -100,6 +110,7 @@
|
||||
<Chinese>設定彈藥殉爆效果會持續多久時間 [輸入0來關閉殉爆效果]</Chinese>
|
||||
<Chinesesimp>设定弹药殉爆效果会持续多久时间 [输入0来关闭殉爆效果]</Chinesesimp>
|
||||
<Korean>쿡오프 지속 시간의 배수 [0 이면 비활성]</Korean>
|
||||
<Russian>Множитель длительности возгорания [0 - отключает возгорание боеприпасов]</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_probabilityCoef_name">
|
||||
<English>Cook-off probability coefficient</English>
|
||||
@ -110,6 +121,7 @@
|
||||
<Chinesesimp>殉爆发生机率系数</Chinesesimp>
|
||||
<French>Coefficient de probabilité du cook off</French>
|
||||
<Polish>Współczynnik prawdopodobieństwa samozapłonu</Polish>
|
||||
<Russian>Коэффициент вероятности возгорания</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_probabilityCoef_tooltip">
|
||||
<English>Multiplier for cook-off probability. Higher value results in higher cook-off probability</English>
|
||||
@ -120,6 +132,7 @@
|
||||
<Chinesesimp>调整殉爆发生机率系数。值越高代表越容易发生殉爆。</Chinesesimp>
|
||||
<French>Multiplicateur pour la probabilité du cook off. Plus la valeur est élevée, plus la probabilité de cook off est haute.</French>
|
||||
<Polish>Mnożnik prawdopodobieństwa samozapłonu. Większa wartość oznacza większe prawdopodobieństwo samozapłonu</Polish>
|
||||
<Russian>Множитель коэффициента вероятности возгорания. Чем выше значение, тем выше вероятность.</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
1
addons/csw/$PBOPREFIX$
Normal file
1
addons/csw/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
||||
z\ace\addons\csw
|
38
addons/csw/Cfg3den.hpp
Normal file
38
addons/csw/Cfg3den.hpp
Normal file
@ -0,0 +1,38 @@
|
||||
class ctrlCombo;
|
||||
class Cfg3DEN {
|
||||
class Attributes {
|
||||
class Title;
|
||||
class Combo: Title {
|
||||
class Controls {
|
||||
class Title;
|
||||
class Value;
|
||||
};
|
||||
};
|
||||
class GVAR(assemblyModeControl): Combo {
|
||||
class Controls: Controls {
|
||||
class Title: Title {};
|
||||
class Value: Value {
|
||||
class Items {
|
||||
class Disable {
|
||||
text = "$STR_DISABLED";
|
||||
value = 0;
|
||||
};
|
||||
class Enable {
|
||||
text = "$STR_CONFIG_JOYSTICK_ENABLED";
|
||||
value = 1;
|
||||
};
|
||||
class EnableAndEmpty {
|
||||
text = CSTRING(eden_enableAndEmpty);
|
||||
value = 2;
|
||||
};
|
||||
class Default {
|
||||
text = "$STR_VEHICLE_DEFAULT";
|
||||
value = 3;
|
||||
default = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
15
addons/csw/CfgEventHandlers.hpp
Normal file
15
addons/csw/CfgEventHandlers.hpp
Normal file
@ -0,0 +1,15 @@
|
||||
class Extended_PreStart_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preStart));
|
||||
};
|
||||
};
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
};
|
||||
};
|
||||
class Extended_PostInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE( call COMPILE_FILE(XEH_postInit) );
|
||||
};
|
||||
};
|
86
addons/csw/CfgMagazineGroups.hpp
Normal file
86
addons/csw/CfgMagazineGroups.hpp
Normal file
@ -0,0 +1,86 @@
|
||||
class GVAR(groups) {
|
||||
// A3 .50 BMG (12.7x99mm)
|
||||
class GVAR(100Rnd_127x99_mag) {
|
||||
500Rnd_127x99_mag = 1;
|
||||
200Rnd_127x99_mag = 1;
|
||||
100Rnd_127x99_mag = 1;
|
||||
rhs_mag_100rnd_127x99_mag = 1;
|
||||
rhs_mag_200rnd_127x99_mag = 1;
|
||||
CUP_100Rnd_127x99_M = 1;
|
||||
};
|
||||
class GVAR(100Rnd_127x99_mag_red) {
|
||||
500Rnd_127x99_mag_Tracer_Red = 1;
|
||||
200Rnd_127x99_mag_Tracer_Red = 1;
|
||||
100Rnd_127x99_mag_Tracer_Red = 1;
|
||||
rhs_mag_100rnd_127x99_mag_Tracer_Red = 1;
|
||||
rhs_mag_200rnd_127x99_mag_Tracer_Red = 1;
|
||||
CUP_100Rnd_TE4_Red_Tracer_127x99_M = 1;
|
||||
};
|
||||
class GVAR(100Rnd_127x99_mag_green) {
|
||||
500Rnd_127x99_mag_Tracer_Green = 1;
|
||||
200Rnd_127x99_mag_Tracer_Green = 1;
|
||||
100Rnd_127x99_mag_Tracer_Green = 1;
|
||||
rhs_mag_100rnd_127x99_mag_Tracer_Green = 1;
|
||||
CUP_100Rnd_TE4_Green_Tracer_127x99_M = 1;
|
||||
};
|
||||
class GVAR(100Rnd_127x99_mag_yellow) {
|
||||
500Rnd_127x99_mag_Tracer_Yellow = 1;
|
||||
200Rnd_127x99_mag_Tracer_Yellow = 1;
|
||||
100Rnd_127x99_mag_Tracer_Yellow = 1;
|
||||
rhs_mag_100rnd_127x99_mag_Tracer_Yellow = 1;
|
||||
CUP_100Rnd_TE4_Yellow_Tracer_127x99_M = 1;
|
||||
};
|
||||
|
||||
// Soviet HMG (12.7x108mm)
|
||||
class GVAR(50Rnd_127x108_mag) {
|
||||
rhs_mag_127x108mm_50 = 1;
|
||||
rhs_mag_127x108mm_100 = 1;
|
||||
rhs_mag_127x108mm_150 = 1;
|
||||
rhs_mag_127x108mm_300 = 1;
|
||||
CUP_150Rnd_127x108_KORD_M = 1;
|
||||
CUP_50Rnd_127x108_KORD_M = 1;
|
||||
CUP_50Rnd_TE3_LRT5_127x107_DSHKM_M = 1; // not sure why cup uses 107 for the DSHKM?
|
||||
CUP_150Rnd_TE3_LRT5_127x107_DSHKM_M = 1;
|
||||
};
|
||||
|
||||
// A3 20mm GMG
|
||||
class GVAR(20Rnd_20mm_G_belt) {
|
||||
40Rnd_20mm_G_belt = 1;
|
||||
200Rnd_20mm_G_belt = 1;
|
||||
};
|
||||
|
||||
// A3 82mm mortar shells (Allows the normal mk6 to be reloaded from the mk6 ammo handling mags)
|
||||
class ACE_1Rnd_82mm_Mo_HE {
|
||||
ACE_1Rnd_82mm_Mo_HE = 1;
|
||||
8Rnd_82mm_Mo_shells = 1;
|
||||
rhs_12Rnd_m821_HE = 1;
|
||||
rhs_mag_3vo18_10 = 1;
|
||||
};
|
||||
class ACE_1Rnd_82mm_Mo_Smoke {
|
||||
ACE_1Rnd_82mm_Mo_Smoke = 1;
|
||||
8Rnd_82mm_Mo_Smoke_white = 1;
|
||||
rhs_mag_d832du_10 = 1;
|
||||
};
|
||||
class ACE_1Rnd_82mm_Mo_Illum {
|
||||
ACE_1Rnd_82mm_Mo_Illum = 1;
|
||||
8Rnd_82mm_Mo_Flare_white = 1;
|
||||
rhs_mag_3vs25m_10 = 1;
|
||||
};
|
||||
class ACE_1Rnd_82mm_Mo_HE_Guided {
|
||||
ACE_1Rnd_82mm_Mo_HE_Guided = 1;
|
||||
8Rnd_82mm_Mo_guided = 1;
|
||||
};
|
||||
class ACE_1Rnd_82mm_Mo_HE_LaserGuided {
|
||||
ACE_1Rnd_82mm_Mo_HE_LaserGuided = 1;
|
||||
8Rnd_82mm_Mo_LG = 1;
|
||||
};
|
||||
|
||||
// A3 Titans (Spike) - just use handheld magazines
|
||||
class Titan_AT {
|
||||
1Rnd_GAT_missiles = 1;
|
||||
};
|
||||
class Titan_AA {
|
||||
1Rnd_GAA_missiles = 1;
|
||||
};
|
||||
};
|
||||
|
65
addons/csw/CfgMagazines.hpp
Normal file
65
addons/csw/CfgMagazines.hpp
Normal file
@ -0,0 +1,65 @@
|
||||
class CfgMagazines {
|
||||
class 100Rnd_127x99_mag;
|
||||
class GVAR(100Rnd_127x99_mag): 100Rnd_127x99_mag {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
displayName = CSTRING(127x99_displayName);
|
||||
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
|
||||
picture = QPATHTOF(UI\ammoBox_50bmg_ca.paa);
|
||||
type = 256;
|
||||
mass = 96;
|
||||
ACE_isBelt = 1;
|
||||
};
|
||||
class 100Rnd_127x99_mag_Tracer_Red;
|
||||
class GVAR(100Rnd_127x99_mag_red): 100Rnd_127x99_mag_Tracer_Red {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
displayName = CSTRING(127x99_red_displayName);
|
||||
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
|
||||
picture = QPATHTOF(UI\ammoBox_50bmg_ca.paa);
|
||||
type = 256;
|
||||
mass = 96;
|
||||
ACE_isBelt = 1;
|
||||
};
|
||||
class 100Rnd_127x99_mag_Tracer_Green;
|
||||
class GVAR(100Rnd_127x99_mag_green): 100Rnd_127x99_mag_Tracer_Green {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
displayName = CSTRING(127x99_green_displayName);
|
||||
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
|
||||
picture = QPATHTOF(UI\ammoBox_50bmg_ca.paa);
|
||||
type = 256;
|
||||
mass = 96;
|
||||
ACE_isBelt = 1;
|
||||
};
|
||||
class 100Rnd_127x99_mag_Tracer_Yellow;
|
||||
class GVAR(100Rnd_127x99_mag_yellow): 100Rnd_127x99_mag_Tracer_Yellow {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
displayName = CSTRING(127x99_yellow_displayName);
|
||||
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
|
||||
picture = QPATHTOF(UI\ammoBox_50bmg_ca.paa);
|
||||
type = 256;
|
||||
mass = 96;
|
||||
ACE_isBelt = 1;
|
||||
};
|
||||
|
||||
class 50Rnd_127x108_Ball;
|
||||
class GVAR(50Rnd_127x108_mag): 50Rnd_127x108_Ball {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
displayName = CSTRING(127x108_displayName);
|
||||
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
|
||||
picture = QPATHTOF(UI\ammoBox_50bmg_ca.paa);
|
||||
type = 256;
|
||||
mass = 50;
|
||||
ACE_isBelt = 1;
|
||||
};
|
||||
|
||||
class 40Rnd_20mm_G_belt;
|
||||
class GVAR(20Rnd_20mm_G_belt): 40Rnd_20mm_G_belt {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
displayName = CSTRING(GMGBelt_displayName);
|
||||
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
|
||||
picture = QPATHTOF(UI\ammoBox_50bmg_ca.paa);
|
||||
type = 256;
|
||||
count = 20;
|
||||
mass = 96;
|
||||
ACE_isBelt = 1;
|
||||
};
|
||||
};
|
245
addons/csw/CfgVehicles.hpp
Normal file
245
addons/csw/CfgVehicles.hpp
Normal file
@ -0,0 +1,245 @@
|
||||
class CfgVehicles {
|
||||
class Man;
|
||||
class CAManBase: Man {
|
||||
class ACE_SelfActions {
|
||||
class GVAR(deploy) {
|
||||
displayName = CSTRING(PlaceTripod_displayName);
|
||||
condition = QUOTE(call FUNC(assemble_canDeployTripod));
|
||||
statement = QUOTE(call FUNC(assemble_deployTripod));
|
||||
exceptions[] = {};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
// Tripods:
|
||||
class ThingX;
|
||||
class GVAR(baseTripod): ThingX {
|
||||
side = 3;
|
||||
typicalCargo[] = {};
|
||||
armor = 500000;
|
||||
mapSize = 0.4;
|
||||
nameSound = "Bunker";
|
||||
accuracy = 1000;
|
||||
destrType = "DestructDefault";
|
||||
|
||||
EGVAR(dragging,canDrag) = 1;
|
||||
EGVAR(dragging,dragPosition)[] = {0, 2, 0};
|
||||
EGVAR(dragging,canCarry) = 1;
|
||||
EGVAR(dragging,carryPosition)[] = {0, 2, 0};
|
||||
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
displayName = CSTRING(genericTripod_displayName);
|
||||
selection = "";
|
||||
distance = 2.5;
|
||||
condition = "true";
|
||||
class GVAR(pickUp) {
|
||||
displayName = CSTRING(Pickup_displayName);
|
||||
condition = QUOTE(call FUNC(assemble_canPickupTripod));
|
||||
statement = QUOTE(call FUNC(assemble_pickupTripod));
|
||||
};
|
||||
class GVAR(mountWeapon) {
|
||||
displayName = CSTRING(MountWeapon_displayName);
|
||||
condition = QUOTE(call FUNC(assemble_canDeployWeapon));
|
||||
statement = QUOTE(call FUNC(assemble_deployWeapon));
|
||||
modifierFunction = QUOTE(call FUNC(assemble_deployWeaponModifier));
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
class GVAR(m3Tripod): GVAR(baseTripod) {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ACE_CSW_m3_tripod.p3d);
|
||||
displayName = CSTRING(m3Tripod_displayName);
|
||||
class ADDON {
|
||||
disassembleTo = QGVAR(m3CarryTripod);
|
||||
};
|
||||
};
|
||||
class GVAR(m3TripodLow): GVAR(m3Tripod) {
|
||||
class ADDON {
|
||||
disassembleTo = QGVAR(m3CarryTripodLow);
|
||||
};
|
||||
};
|
||||
class GVAR(kordTripod): GVAR(baseTripod) {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ace_csw_tripod_kord.p3d);
|
||||
displayName = CSTRING(kordTripod_displayName);
|
||||
class ADDON {
|
||||
disassembleTo = QGVAR(kordCarryTripod);
|
||||
};
|
||||
};
|
||||
class GVAR(kordTripodLow): GVAR(kordTripod) {
|
||||
class ADDON {
|
||||
disassembleTo = QGVAR(kordCarryTripodLow);
|
||||
};
|
||||
};
|
||||
class GVAR(sag30Tripod): GVAR(baseTripod) {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ace_csw_tripod_ags30.p3d);
|
||||
displayName = CSTRING(sag30Tripod_displayName);
|
||||
class ADDON {
|
||||
disassembleTo = QGVAR(sag30CarryTripod);
|
||||
};
|
||||
};
|
||||
class GVAR(m220Tripod): GVAR(baseTripod) {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ace_csw_tripod_m220.p3d);
|
||||
displayName = CSTRING(m220Tripod_displayName);
|
||||
class ADDON {
|
||||
disassembleTo = QGVAR(m220CarryTripod);
|
||||
};
|
||||
};
|
||||
class GVAR(spg9Tripod): GVAR(baseTripod) {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ace_csw_tripod_spg9.p3d);
|
||||
displayName = CSTRING(spg9_Tripod);
|
||||
class ADDON {
|
||||
disassembleTo = QGVAR(spg9CarryTripod);
|
||||
};
|
||||
};
|
||||
class GVAR(mortarBaseplate): GVAR(baseTripod) {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ACE_CSW_mortarBaseplate.p3d);
|
||||
displayName = CSTRING(mortarBaseplate_displayName);
|
||||
class ADDON {
|
||||
disassembleTo = QGVAR(carryMortarBaseplate);
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
// Static Weapons:
|
||||
class LandVehicle;
|
||||
class StaticWeapon: LandVehicle {
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
class GVAR(getIn) {
|
||||
displayName = CSTRING(GetIn_displayName);
|
||||
condition = QUOTE(call FUNC(canGetIn));
|
||||
statement = QUOTE(call FUNC(getIn));
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class StaticMGWeapon: StaticWeapon {};
|
||||
|
||||
class HMG_01_base_F: StaticMGWeapon {
|
||||
// ENABLE_CSW_ATTRIBUTE;
|
||||
class ADDON {
|
||||
enabled = 1;
|
||||
proxyWeapon = QGVAR(HMG_Static);
|
||||
magazineLocation = "_target selectionPosition 'magazine'";
|
||||
disassembleWeapon = QGVAR(staticHMGCarry); // carry weapon [CfgWeapons]
|
||||
disassembleTurret = QGVAR(m3TripodLow); // turret [CfgVehicles]
|
||||
desiredAmmo = 100;
|
||||
ammoLoadTime = 7;
|
||||
ammoUnloadTime = 5;
|
||||
};
|
||||
};
|
||||
|
||||
class HMG_01_high_base_F: HMG_01_base_F {
|
||||
class ADDON {
|
||||
enabled = 1;
|
||||
proxyWeapon = QGVAR(HMG_Static);
|
||||
magazineLocation = "_target selectionPosition 'magazine'";
|
||||
disassembleWeapon = QGVAR(staticHMGCarry); // carry weapon [CfgWeapons]
|
||||
disassembleTurret = QGVAR(m3Tripod); // turret [CfgVehicles]
|
||||
desiredAmmo = 100;
|
||||
ammoLoadTime = 7;
|
||||
ammoUnloadTime = 5;
|
||||
};
|
||||
};
|
||||
|
||||
class HMG_01_A_base_F: HMG_01_base_F {
|
||||
class ADDON {
|
||||
enabled = 0;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
class GMG_TriPod;
|
||||
class GMG_01_base_F: GMG_TriPod {
|
||||
// ENABLE_CSW_ATTRIBUTE;
|
||||
class ADDON {
|
||||
enabled = 1;
|
||||
proxyWeapon = QGVAR(GMG_20mm); // Weapon Proxy (Shorter Reload Time) [CfgWeapons]
|
||||
magazineLocation = "_target selectionPosition 'magazine'";
|
||||
disassembleWeapon = QGVAR(staticGMGCarry); // carry weapon [CfgWeapons]
|
||||
disassembleTurret = QGVAR(m3TripodLow); // turret [CfgVehicles]
|
||||
desiredAmmo = 40;
|
||||
ammoLoadTime = 7;
|
||||
ammoUnloadTime = 5;
|
||||
};
|
||||
};
|
||||
|
||||
class GMG_01_high_base_F: GMG_01_base_F {
|
||||
class ADDON {
|
||||
enabled = 1;
|
||||
proxyWeapon = QGVAR(GMG_20mm); // Weapon Proxy (Shorter Reload Time) [CfgWeapons]
|
||||
magazineLocation = "_target selectionPosition 'magazine'";
|
||||
disassembleWeapon = QGVAR(staticGMGCarry); // carry weapon [CfgWeapons]
|
||||
disassembleTurret = QGVAR(m3Tripod); // turret [CfgVehicles]
|
||||
desiredAmmo = 40;
|
||||
ammoLoadTime = 7;
|
||||
ammoUnloadTime = 5;
|
||||
};
|
||||
};
|
||||
|
||||
class GMG_01_A_base_F: GMG_01_base_F {
|
||||
class ADDON {
|
||||
enabled = 0;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
class AT_01_base_F: StaticMGWeapon {
|
||||
// ENABLE_CSW_ATTRIBUTE;
|
||||
class ADDON {
|
||||
enabled = 1;
|
||||
proxyWeapon = QGVAR(Titan_AT_Static);
|
||||
magazineLocation = "_target selectionPosition 'magazine'";
|
||||
disassembleWeapon = QGVAR(staticATCarry); // carry weapon [CfgWeapons]
|
||||
disassembleTurret = QGVAR(m3Tripod); // turret [CfgVehicles]
|
||||
desiredAmmo = 40;
|
||||
ammoLoadTime = 15; // 4 rounds per minute
|
||||
ammoUnloadTime = 10;
|
||||
};
|
||||
};
|
||||
|
||||
class AA_01_base_F: StaticMGWeapon {
|
||||
// ENABLE_CSW_ATTRIBUTE;
|
||||
class ADDON {
|
||||
enabled = 1;
|
||||
proxyWeapon = QGVAR(Titan_AA_Static); // Weapon Proxy (Shorter Reload Time) [CfgWeapons]
|
||||
magazineLocation = "_target selectionPosition 'magazine'";
|
||||
disassembleWeapon = QGVAR(staticAACarry); // carry weapon [CfgWeapons]
|
||||
disassembleTurret = QGVAR(m3Tripod); // turret [CfgVehicles]
|
||||
desiredAmmo = 40;
|
||||
ammoLoadTime = 15; // 4 rounds per minute
|
||||
ammoUnloadTime = 10;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
class StaticMortar: StaticWeapon {};
|
||||
class Mortar_01_base_F: StaticMortar {
|
||||
// ENABLE_CSW_ATTRIBUTE;
|
||||
class ADDON {
|
||||
enabled = 1;
|
||||
magazineLocation = "";
|
||||
disassembleWeapon = QGVAR(staticMortarCarry); // carry weapon [CfgWeapons]
|
||||
disassembleTurret = QGVAR(mortarBaseplate); // turret [CfgVehicles]
|
||||
desiredAmmo = 1;
|
||||
ammoLoadTime = 3;
|
||||
ammoUnloadTime = 3;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
294
addons/csw/CfgWeapons.hpp
Normal file
294
addons/csw/CfgWeapons.hpp
Normal file
@ -0,0 +1,294 @@
|
||||
class CfgWeapons {
|
||||
class Launcher;
|
||||
class Launcher_Base_F: Launcher {
|
||||
class WeaponSlotsInfo;
|
||||
};
|
||||
|
||||
|
||||
// Tripods:
|
||||
class GVAR(m3CarryTripod): Launcher_Base_F {
|
||||
class ADDON {
|
||||
type = "mount";
|
||||
deployTime = 4;
|
||||
pickupTime = 4;
|
||||
deploy = QGVAR(m3Tripod);
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
mass = 440;
|
||||
};
|
||||
displayName = CSTRING(m3TripodFolded_displayName);
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||
modes[] = {};
|
||||
picture = QPATHTOF(UI\Tripod_Icon.paa);
|
||||
};
|
||||
class GVAR(m3CarryTripodLow): GVAR(m3CarryTripod) {
|
||||
class ADDON: ADDON {
|
||||
deploy = QGVAR(m3TripodLow);
|
||||
};
|
||||
displayName = CSTRING(m3TripodLowFolded_displayName);
|
||||
};
|
||||
|
||||
class GVAR(kordCarryTripod): Launcher_Base_F {
|
||||
class ADDON {
|
||||
type = "mount";
|
||||
deployTime = 4;
|
||||
pickupTime = 4;
|
||||
deploy = QGVAR(kordTripod);
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
mass = 350;
|
||||
};
|
||||
displayName = CSTRING(kordTripodFolded_displayName);
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||
modes[] = {};
|
||||
picture = QPATHTOF(UI\Tripod_Icon.paa);
|
||||
};
|
||||
|
||||
class GVAR(kordCarryTripodLow): GVAR(kordCarryTripod) {
|
||||
class ADDON: ADDON {
|
||||
deploy = QGVAR(kordTripodLow);
|
||||
};
|
||||
displayName = CSTRING(kordTripodFoldedLow_displayName);
|
||||
};
|
||||
|
||||
class GVAR(m220CarryTripod): Launcher_Base_F {
|
||||
class ADDON {
|
||||
type = "mount";
|
||||
deployTime = 10;
|
||||
pickupTime = 6;
|
||||
deploy = QGVAR(m220Tripod);
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
mass = 210;
|
||||
};
|
||||
displayName = CSTRING(m220TripodFolded_displayName);
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||
modes[] = {};
|
||||
picture = QPATHTOF(UI\Tripod_Icon.paa);
|
||||
};
|
||||
|
||||
class GVAR(spg9CarryTripod): Launcher_Base_F {
|
||||
class ADDON {
|
||||
type = "mount";
|
||||
deployTime = 5;
|
||||
pickupTime = 3;
|
||||
deploy = QGVAR(spg9Tripod);
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
mass = 260;
|
||||
};
|
||||
displayName = CSTRING(spg9_TripodFolded);
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||
modes[] = {};
|
||||
picture = QPATHTOF(UI\Tripod_Icon.paa);
|
||||
};
|
||||
|
||||
class GVAR(sag30CarryTripod): Launcher_Base_F {
|
||||
class ADDON {
|
||||
type = "mount";
|
||||
deployTime = 4;
|
||||
pickupTime = 4;
|
||||
deploy = QGVAR(sag30Tripod);
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
mass = 260;
|
||||
};
|
||||
displayName = CSTRING(sag30TripodFolded_displayName);
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||
modes[] = {};
|
||||
picture = QPATHTOF(UI\Tripod_Icon.paa);
|
||||
};
|
||||
|
||||
class GVAR(carryMortarBaseplate): Launcher_Base_F {
|
||||
class ADDON {
|
||||
type = "mount";
|
||||
deployTime = 2;
|
||||
pickupTime = 2;
|
||||
deploy = QGVAR(mortarBaseplate);
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
mass = 290; // M3A1 baseblate weight
|
||||
};
|
||||
displayName = CSTRING(mortarBaseplateBag_displayName);
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||
modes[] = {};
|
||||
picture = QPATHTOF(UI\Tripod_Icon.paa); // todo
|
||||
};
|
||||
|
||||
|
||||
|
||||
// Weapons:
|
||||
class GVAR(staticATCarry): Launcher_Base_F {
|
||||
class ADDON {
|
||||
type = "weapon";
|
||||
deployTime = 15;
|
||||
pickupTime = 20;
|
||||
class assembleTo {
|
||||
GVAR(m3Tripod) = "B_static_AT_F";
|
||||
};
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
mass = 320; // 9M113 Konkurs Weight
|
||||
};
|
||||
displayName = CSTRING(StaticATBag_displayName);
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||
modes[] = {};
|
||||
picture = QPATHTOF(UI\StaticAT_Icon.paa);
|
||||
};
|
||||
|
||||
class GVAR(staticAACarry): GVAR(staticATCarry) {
|
||||
class ADDON {
|
||||
type = "weapon";
|
||||
deployTime = 15;
|
||||
pickupTime = 20;
|
||||
class assembleTo {
|
||||
GVAR(m3Tripod) = "B_static_AA_F";
|
||||
};
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
mass = 320;
|
||||
};
|
||||
displayName = CSTRING(StaticAABag_displayName);
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||
modes[] = {};
|
||||
picture = QPATHTOF(UI\StaticAT_Icon.paa);
|
||||
};
|
||||
|
||||
class GVAR(staticHMGCarry): Launcher_Base_F {
|
||||
class ADDON {
|
||||
type = "weapon";
|
||||
deployTime = 7;
|
||||
pickupTime = 10;
|
||||
class assembleTo {
|
||||
GVAR(m3Tripod) = "B_HMG_01_high_F";
|
||||
GVAR(m3TripodLow) = "B_HMG_01_F";
|
||||
};
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
mass = 840;
|
||||
};
|
||||
displayName = CSTRING(StaticHMGBag_displayName);
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||
modes[] = {};
|
||||
picture = QPATHTOF(UI\StaticHGMG_Icon.paa);
|
||||
};
|
||||
|
||||
class GVAR(staticGMGCarry): Launcher_Base_F {
|
||||
class ADDON {
|
||||
type = "weapon";
|
||||
deployTime = 5;
|
||||
pickupTime = 6;
|
||||
class assembleTo {
|
||||
GVAR(m3Tripod) = "B_GMG_01_high_F";
|
||||
GVAR(m3TripodLow) = "B_GMG_01_F";
|
||||
};
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
mass = 780;
|
||||
};
|
||||
displayName = CSTRING(StaticGMGBag_displayName);
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||
modes[] = {};
|
||||
picture = QPATHTOF(UI\StaticHGMG_Icon.paa);
|
||||
};
|
||||
|
||||
|
||||
class GVAR(staticMortarCarry): Launcher_Base_F {
|
||||
class ADDON {
|
||||
type = "weapon";
|
||||
deployTime = 20;
|
||||
pickupTime = 25;
|
||||
class assembleTo {
|
||||
GVAR(mortarBaseplate) = "B_Mortar_01_F";
|
||||
};
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
mass = 620; // M252 Mortar Weight
|
||||
};
|
||||
displayName = CSTRING(mk6MortarBag_displayName);
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||
modes[] = {};
|
||||
picture = QPATHTOF(UI\StaticHGMG_Icon.paa);
|
||||
};
|
||||
|
||||
// Proxy Weapons
|
||||
CREATE_CSW_PROXY(HMG_Static);
|
||||
CREATE_CSW_PROXY(GMG_20mm);
|
||||
|
||||
class missiles_titan_static;
|
||||
class EGVAR(javelin,Titan_Static): missiles_titan_static {}; // if ace_javelin does not exist, this will just inherit from the base weapon
|
||||
class GVAR(Titan_AT_Static): EGVAR(javelin,Titan_Static) {
|
||||
EGVAR(javelin,enabled) = 1; // needs to be explicitly enabled
|
||||
magazineReloadTime = 0.5;
|
||||
};
|
||||
class GVAR(Titan_AA_Static) : missiles_titan_static {
|
||||
magazineReloadTime = 0.5;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
class GVAR(staticAutoHMGCarry): Launcher_Base_F {
|
||||
class ADDON {
|
||||
type = "weapon";
|
||||
deployTime = 4;
|
||||
pickupTime = 4;
|
||||
class assembleTo {
|
||||
GVAR(m3Tripod) = GVAR(staticAutoHMGWeapon);
|
||||
};
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
mass = 840;
|
||||
};
|
||||
|
||||
displayName = CSTRING(StaticAutoHMGBag_displayName);
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||
modes[] = {};
|
||||
picture = QPATHTOF(UI\StaticHGMG_Icon.paa);
|
||||
};
|
||||
|
||||
|
||||
class GVAR(staticAutoGMGCarry): Launcher_Base_F {
|
||||
class GVAR(options) {
|
||||
assembleTo = QGVAR(staticAutoGMGWeapon);
|
||||
baseTripod = QGVAR(m3Tripod);
|
||||
type = "weapon";
|
||||
};
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
mass = 780;
|
||||
};
|
||||
|
||||
displayName = CSTRING(StaticAutoGMGBag_displayName);
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
|
||||
modes[] = {};
|
||||
picture = QPATHTOF(UI\StaticHGMG_Icon.paa);
|
||||
};
|
||||
|
||||
*/
|
||||
};
|
||||
|
12
addons/csw/README.md
Normal file
12
addons/csw/README.md
Normal file
@ -0,0 +1,12 @@
|
||||
ace_csw
|
||||
===============
|
||||
|
||||
Crew Served Weapons - Static weapons that are served by multiple people
|
||||
|
||||
|
||||
## Maintainers
|
||||
|
||||
The people responsible for merging changes to this component or answering potential questions.
|
||||
|
||||
- [TCVM](https://github.com/TheCandianVendingMachine)
|
||||
|
BIN
addons/csw/UI/StaticAT_Icon.paa
Normal file
BIN
addons/csw/UI/StaticAT_Icon.paa
Normal file
Binary file not shown.
BIN
addons/csw/UI/StaticHGMG_Icon.paa
Normal file
BIN
addons/csw/UI/StaticHGMG_Icon.paa
Normal file
Binary file not shown.
BIN
addons/csw/UI/Tripod_Icon.paa
Normal file
BIN
addons/csw/UI/Tripod_Icon.paa
Normal file
Binary file not shown.
BIN
addons/csw/UI/ammoBox_50bmg_ca.paa
Normal file
BIN
addons/csw/UI/ammoBox_50bmg_ca.paa
Normal file
Binary file not shown.
34
addons/csw/XEH_PREP.hpp
Normal file
34
addons/csw/XEH_PREP.hpp
Normal file
@ -0,0 +1,34 @@
|
||||
TRACE_1("",QUOTE(ADDON));
|
||||
|
||||
PREP(aceRearmGetCarryMagazines);
|
||||
|
||||
PREP(ai_handleFired);
|
||||
|
||||
PREP(assemble_canDeployTripod);
|
||||
PREP(assemble_canDeployWeapon);
|
||||
PREP(assemble_canPickupTripod);
|
||||
PREP(assemble_canPickupWeapon);
|
||||
PREP(assemble_deployTripod);
|
||||
PREP(assemble_deployWeapon);
|
||||
PREP(assemble_deployWeaponModifier);
|
||||
PREP(assemble_pickupTripod);
|
||||
PREP(assemble_pickupWeapon);
|
||||
|
||||
PREP(canGetIn);
|
||||
PREP(getIn);
|
||||
|
||||
PREP(proxyWeapon);
|
||||
|
||||
PREP(reload_actionsLoad);
|
||||
PREP(reload_actionsUnload);
|
||||
PREP(reload_canLoadMagazine);
|
||||
PREP(reload_canUnloadMagazine);
|
||||
PREP(reload_getLoadableMagazines);
|
||||
PREP(reload_getVehicleMagazine);
|
||||
PREP(reload_handleAddTurretMag);
|
||||
PREP(reload_handleRemoveTurretMag);
|
||||
PREP(reload_handleReturnAmmo);
|
||||
PREP(reload_loadMagazine);
|
||||
|
||||
PREP(staticWeaponInit);
|
||||
PREP(staticWeaponInit_unloadExtraMags);
|
26
addons/csw/XEH_postInit.sqf
Normal file
26
addons/csw/XEH_postInit.sqf
Normal file
@ -0,0 +1,26 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
GVAR(vehicleMagCache) = call CBA_fnc_createNamespace;
|
||||
|
||||
["ace_settingsInitialized", {
|
||||
TRACE_3("settingsInit",GVAR(defaultAssemblyMode),GVAR(handleExtraMagazines),GVAR(ammoHandling));
|
||||
["StaticWeapon", "init", LINKFUNC(staticWeaponInit), true, [], true] call CBA_fnc_addClassEventHandler;
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
|
||||
// Event handlers:
|
||||
[QGVAR(disableVanillaAssembly), {
|
||||
params ["_staticWeapon"];
|
||||
TRACE_1("disableVanillaAssembly eh",_staticWeapon);
|
||||
_staticWeapon enableWeaponDisassembly false;
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
[QGVAR(addTurretMag), LINKFUNC(reload_handleAddTurretMag)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(removeTurretMag), LINKFUNC(reload_handleRemoveTurretMag)] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(returnAmmo), LINKFUNC(reload_handleReturnAmmo)] call CBA_fnc_addEventHandler;
|
||||
|
||||
|
||||
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
call compile preprocessFileLineNumbers QPATHTOF(dev\checkStaticWeapons.sqf);
|
||||
#endif
|
14
addons/csw/XEH_preInit.sqf
Normal file
14
addons/csw/XEH_preInit.sqf
Normal file
@ -0,0 +1,14 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
ADDON = false;
|
||||
|
||||
PREP_RECOMPILE_START;
|
||||
#include "XEH_PREP.hpp"
|
||||
PREP_RECOMPILE_END;
|
||||
|
||||
#include "initSettings.sqf"
|
||||
|
||||
GVAR(initializedStaticTypes) = [];
|
||||
|
||||
ADDON = true;
|
||||
|
3
addons/csw/XEH_preStart.sqf
Normal file
3
addons/csw/XEH_preStart.sqf
Normal file
@ -0,0 +1,3 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
#include "XEH_PREP.hpp"
|
24
addons/csw/config.cpp
Normal file
24
addons/csw/config.cpp
Normal file
@ -0,0 +1,24 @@
|
||||
#include "script_component.hpp"
|
||||
#include "script_config_macros_csw.hpp"
|
||||
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
name = COMPONENT_NAME;
|
||||
units[] = {};
|
||||
weapons[] = {"ace_csw_carryTripod", "ace_csw_staticATWeapon"};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_interaction"};
|
||||
author = ECSTRING(common,ACETeam);
|
||||
authors[] = {"TCVM"};
|
||||
url = ECSTRING(main,URL);
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
};
|
||||
|
||||
#include "Cfg3den.hpp"
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
#include "CfgMagazines.hpp"
|
||||
#include "CfgMagazineGroups.hpp"
|
||||
|
69
addons/csw/data/model.cfg
Normal file
69
addons/csw/data/model.cfg
Normal file
@ -0,0 +1,69 @@
|
||||
class CfgSkeletons {
|
||||
class Default {
|
||||
isDiscrete = 1;
|
||||
skeletonInherit = "";
|
||||
skeletonBones[] = {};
|
||||
};
|
||||
class ACE_CSW_Tripod_Skeleton: Default {};
|
||||
class ACE_CSW_M3_Tripod_Skeleton: Default {};
|
||||
class ace_csw_tripod_ags30_Skeleton: Default {};
|
||||
class ace_csw_tripod_kord_Skeleton: Default {};
|
||||
class ace_csw_tripod_m122_Skeleton: Default {};
|
||||
class ace_csw_tripod_m220_Skeleton: Default {};
|
||||
class ace_csw_tripod_spg9_Skeleton: Default {};
|
||||
class ACE_CSW_WeaponBag_Skeleton: Default {};
|
||||
class ACE_CSW_mortarBaseplate_Skeleton: Default {};
|
||||
};
|
||||
class CfgModels {
|
||||
class Default {
|
||||
sectionsInherit = "";
|
||||
sections[] = {};
|
||||
skeletonName = "";
|
||||
};
|
||||
class ACE_CSW_Tripod : Default {
|
||||
sectionsInherit = "";
|
||||
sections[] = {};
|
||||
skeletonName = "ACE_CSW_Tripod_Skeleton";
|
||||
};
|
||||
class ACE_CSW_M3_Tripod : Default {
|
||||
sectionsInherit = "";
|
||||
sections[] = {};
|
||||
skeletonName = "ACE_CSW_M3_Tripod_Skeleton";
|
||||
};
|
||||
class ace_csw_tripod_ags30 : Default {
|
||||
sectionsInherit = "";
|
||||
sections[] = {};
|
||||
skeletonName = "ace_csw_tripod_ags30_Skeleton";
|
||||
};
|
||||
class ace_csw_tripod_kord : Default {
|
||||
sectionsInherit = "";
|
||||
sections[] = {};
|
||||
skeletonName = "ace_csw_tripod_kord_Skeleton";
|
||||
};
|
||||
class ace_csw_tripod_m122 : Default {
|
||||
sectionsInherit = "";
|
||||
sections[] = {};
|
||||
skeletonName = "ace_csw_tripod_m122_Skeleton";
|
||||
};
|
||||
class ace_csw_tripod_m220 : Default {
|
||||
sectionsInherit = "";
|
||||
sections[] = {};
|
||||
skeletonName = "ace_csw_tripod_m220_Skeleton";
|
||||
};
|
||||
class ace_csw_tripod_spg9 : Default {
|
||||
sectionsInherit = "";
|
||||
sections[] = {};
|
||||
skeletonName = "ace_csw_tripod_spg9_Skeleton";
|
||||
};
|
||||
class ACE_CSW_Bag: Default {
|
||||
sectionsInherit = "";
|
||||
sections[] = {};
|
||||
skeletonName = "ACE_CSW_WeaponBag_Skeleton";
|
||||
};
|
||||
class ACE_CSW_mortarBaseplate: Default {
|
||||
sectionsInherit = "";
|
||||
sections[] = {};
|
||||
skeletonName = "ACE_CSW_mortarBaseplate_Skeleton";
|
||||
};
|
||||
};
|
||||
|
76
addons/csw/dev/checkStaticWeapons.sqf
Normal file
76
addons/csw/dev/checkStaticWeapons.sqf
Normal file
@ -0,0 +1,76 @@
|
||||
#define DEBUG_MODE_FULL
|
||||
#include "\z\ace\addons\csw\script_component.hpp"
|
||||
|
||||
// Dev only function to search for weapons used by static weapons
|
||||
// and check if their magazinese are compatible
|
||||
INFO("Checking static weapons");
|
||||
|
||||
private _staticWeaponConfigs = configProperties [configFile >> "CfgVehicles", "(isClass _x) && {(configName _x) isKindOf 'StaticWeapon'}", true];
|
||||
private _staticPublic = _staticWeaponConfigs select {(getNumber (_x >> "scope")) == 2};
|
||||
INFO_2("Static Weapons [%1] - CSW Enabled [%2]",count _staticPublic, {(getNumber (_x >> "ace_csw" >> "enabled")) == 1} count _staticPublic);
|
||||
|
||||
INFO("------ Checking static weapons inheritance ------");
|
||||
private _explicitBases = [];
|
||||
private _inherited = [];
|
||||
{
|
||||
private _config = _x;
|
||||
private _configEnabled = (getNumber (_config >> "ace_csw" >> "enabled")) == 1;
|
||||
if (_configEnabled) then {
|
||||
private _configExplicit = (count configProperties [_config, "configName _x == 'ace_csw'", false]) == 1;
|
||||
if (_configExplicit) then {
|
||||
_explicitBases pushBack (configName _config);
|
||||
_inherited pushBack [];
|
||||
} else {
|
||||
if ((getNumber (_config >> "scope")) < 2) exitWith {};
|
||||
private _parent = inheritsFrom _config;
|
||||
while {isClass _parent} do {
|
||||
private _className = configName _parent;
|
||||
private _index = _explicitBases findIf {_className == _x};
|
||||
if (_index > -1) exitWith {
|
||||
(_inherited select _index) pushBack (configName _config);
|
||||
};
|
||||
_parent = inheritsFrom _parent;
|
||||
};
|
||||
};
|
||||
};
|
||||
} forEach _staticWeaponConfigs;
|
||||
{
|
||||
INFO_2("%1 inherited by %2",_x,_inherited select _forEachIndex);
|
||||
} forEach _explicitBases;
|
||||
|
||||
|
||||
|
||||
|
||||
INFO("------ Logging static magazines with no carry version -------");
|
||||
private _hash = [] call CBA_fnc_hashCreate;
|
||||
// private _logAll = true; // logs all possible weapon magazines (even if not used in a static weapon)
|
||||
private _logAll = false;
|
||||
{
|
||||
private _vehicleType = configName _x;
|
||||
private _turretConfig = [_vehicleType, [0]] call CBA_fnc_getTurret;
|
||||
private _weapons = getArray (_turretConfig >> "weapons");
|
||||
private _loadedMags = getArray (_turretConfig >> "magazines");
|
||||
{
|
||||
private _weapMags = getArray (configFile >> "CfgWeapons" >> _x >> "magazines");
|
||||
{
|
||||
private _xMag = _x;
|
||||
private _groups = "getNumber (_x >> _xMag) == 1" configClasses (configFile >> QGVAR(groups));
|
||||
private _carryMag = configName (_groups param [0, configNull]);
|
||||
if ((_carryMag == "") && {_logAll || {_xMag in _loadedMags}}) then {
|
||||
private _vehs = [_hash, _xMag] call CBA_fnc_hashGet;
|
||||
if (isNil "_vehs") then {_vehs = [];};
|
||||
if (_xMag in _loadedMags) then {
|
||||
_vehs pushBack _vehicleType;
|
||||
};
|
||||
[_hash, _xMag, _vehs] call CBA_fnc_hashSet;
|
||||
};
|
||||
} forEach _weapMags;
|
||||
} forEach _weapons;
|
||||
} forEach _staticWeaponConfigs;
|
||||
|
||||
[_hash, {
|
||||
//IGNORE_PRIVATE_WARNING ["_key", "_value"];
|
||||
INFO_2("[%1] has no carry varient - Used in %2",_key,_value);
|
||||
}] call CBA_fnc_hashEachPair;
|
||||
|
||||
INFO("------ End -------");
|
50
addons/csw/functions/fnc_aceRearmGetCarryMagazines.sqf
Normal file
50
addons/csw/functions/fnc_aceRearmGetCarryMagazines.sqf
Normal file
@ -0,0 +1,50 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Helper function for ace_rearm; Gets magazines that should be loaded by csw
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Vehicle <OBJECT>
|
||||
* 1: Specific Turret or pass bool to check all turrets <ARRAY><BOOL>(default: true)
|
||||
*
|
||||
* Return Value:
|
||||
* [0: compatible veh mags, 1: carry mags] <ARRAY>
|
||||
*
|
||||
* Example:
|
||||
* [cursorObject, [0]] call ace_csw_fnc_aceRearmGetCarryMagazines
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_vehicle", ["_targetTurret", true, [[], true]]];
|
||||
|
||||
if (!(_vehicle isKindOf "StaticWeapon")) exitWith { [[],[]] }; // limit to statics for now
|
||||
// Assembly mode: [0=disabled, 1=enabled, 2=enabled&unload, 3=default]
|
||||
if ((GVAR(ammoHandling) == 0) && {!([false, true, true, GVAR(defaultAssemblyMode)] select (_vehicle getVariable [QGVAR(assemblyMode), 3]))}) exitWith { [[],[]] };
|
||||
|
||||
private _turretMagsCSW = [];
|
||||
private _allCarryMags = [];
|
||||
{
|
||||
private _turretPath = _x;
|
||||
if ((_targetTurret isEqualTo true) || {_turretPath isEqualTo _targetTurret}) then {
|
||||
{
|
||||
private _weapon = _x;
|
||||
{
|
||||
private _xMag = _x;
|
||||
private _carryMag = GVAR(vehicleMagCache) getVariable _xMag;
|
||||
if (isNil "_carryMag") then {
|
||||
private _groups = "getNumber (_x >> _xMag) == 1" configClasses (configFile >> QGVAR(groups));
|
||||
_carryMag = configName (_groups param [0, configNull]);
|
||||
GVAR(vehicleMagCache) setVariable [_x, _carryMag];
|
||||
TRACE_2("setting cache",_xMag,_carryMag);
|
||||
};
|
||||
if (_carryMag != "") then {
|
||||
_turretMagsCSW pushBackUnique _xMag;
|
||||
_allCarryMags pushBackUnique _carryMag;
|
||||
};
|
||||
} forEach ([_weapon] call CBA_fnc_compatibleMagazines);
|
||||
} forEach (_vehicle weaponsTurret _turretPath);
|
||||
};
|
||||
} forEach (allTurrets _vehicle);
|
||||
|
||||
[_turretMagsCSW, _allCarryMags]
|
96
addons/csw/functions/fnc_ai_handleFired.sqf
Normal file
96
addons/csw/functions/fnc_ai_handleFired.sqf
Normal file
@ -0,0 +1,96 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Initializes weapon to disable weapon disassembling
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Weapon <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [weapon] call ace_csw_fnc_ai_handleFired
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_staticWeapon", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_gunner"];
|
||||
TRACE_8("firedEH:",_staticWeapon, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _gunner);
|
||||
|
||||
if ((!local _gunner) || {[_gunner] call EFUNC(common,isPlayer)}) exitWith {};
|
||||
if (someAmmo _staticWeapon) exitWith {};
|
||||
|
||||
TRACE_2("need ammo",someAmmo _staticWeapon,magazinesAllTurrets _staticWeapon);
|
||||
|
||||
private _turretPath = [_gunner] call EFUNC(common,getTurretIndex);
|
||||
private _reloadSource = objNull;
|
||||
private _reloadMag = "";
|
||||
private _reloadNeededAmmo = -1;
|
||||
|
||||
// Find if there is anything we can reload with
|
||||
{
|
||||
scopeName "findSource";
|
||||
private _xSource = _x;
|
||||
|
||||
private _cswMagazines = [];
|
||||
{
|
||||
if (isClass (configFile >> QGVAR(groups) >> _x)) then { _cswMagazines pushBackUnique _x; };
|
||||
} forEach (if (_xSource isKindOf "CaManBase") then {magazines _x} else {magazineCargo _x});
|
||||
TRACE_2("",_xSource,_cswMagazines);
|
||||
|
||||
private _compatibleMags = [_magazine] + ([_weapon] call CBA_fnc_compatibleMagazines); // Check current mag first
|
||||
|
||||
{
|
||||
private _xWeaponMag = _x;
|
||||
{
|
||||
if ((getNumber (configFile >> QGVAR(groups) >> _x >> _xWeaponMag)) == 1) then {
|
||||
private _loadInfo = [_staticWeapon, _turretPath, _reloadMag, objNull] call FUNC(reload_canLoadMagazine);
|
||||
if (_loadInfo select 0) then {
|
||||
_reloadMag = _x;
|
||||
_reloadSource = _xSource;
|
||||
_reloadNeededAmmo = _loadInfo select 2;
|
||||
TRACE_3("found mag",_reloadMag,_reloadSource,_x);
|
||||
breakOut "findSource";
|
||||
};
|
||||
};
|
||||
} forEach _cswMagazines;
|
||||
} forEach _compatibleMags;
|
||||
} forEach ([_gunner] + (_staticWeapon nearEntities [["groundWeaponHolder", "ReammoBox_F"], 10]));
|
||||
if (_reloadMag == "") exitWith {TRACE_1("could not find mag",_reloadMag);};
|
||||
|
||||
// Figure out what we can add from the magazines we have
|
||||
private _bestAmmoToSend = -1;
|
||||
{
|
||||
_x params ["_xMag", "_xAmmo"];
|
||||
TRACE_2("",_xMag,_xAmmo);
|
||||
if (_xMag == _reloadMag) then {
|
||||
if ((_bestAmmoToSend == -1) || {(_xAmmo > _bestAmmoToSend) && {_xAmmo <= _reloadNeededAmmo}}) then {
|
||||
_bestAmmoToSend = _xAmmo;
|
||||
};
|
||||
};
|
||||
} forEach (if (_reloadSource isKindOf "CaManBase") then {magazinesAmmo _reloadSource} else {magazinesAmmoCargo _reloadSource});
|
||||
TRACE_4("",_reloadSource,_reloadMag,_reloadNeededAmmo,_bestAmmoToSend);
|
||||
if (_bestAmmoToSend == -1) exitWith {ERROR("No ammo");};
|
||||
|
||||
// Remove the mag from the source
|
||||
if (_reloadSource isKindOf "CaManBase") then {
|
||||
[_reloadSource, _reloadMag, _bestAmmoToSend] call EFUNC(common,removeSpecificMagazine);
|
||||
} else {
|
||||
[_reloadSource, _reloadMag, 1, _bestAmmoToSend] call CBA_fnc_removeMagazineCargo;
|
||||
};
|
||||
|
||||
private _timeToLoad = 1;
|
||||
if (!isNull(configFile >> "CfgVehicles" >> (typeOf _staticWeapon) >> QUOTE(ADDON) >> "ammoLoadTime")) then {
|
||||
_timeToLoad = getNumber(configFile >> "CfgVehicles" >> (typeOf _staticWeapon) >> QUOTE(ADDON) >> "ammoLoadTime");
|
||||
};
|
||||
|
||||
TRACE_1("Reloading in progress",_timeToLoad);
|
||||
[{
|
||||
params ["_staticWeapon", "_turretPath", "_gunner", "_reloadMag", "_bestAmmoToSend"];
|
||||
if ((!alive _staticWeapon) || {!alive _gunner} || {(_staticWeapon distance _gunner) > 10}) exitWith {TRACE_1("invalid state",_this);};
|
||||
|
||||
// Reload the static weapon
|
||||
TRACE_5("calling addTurretMag event",_staticWeapon, _turretPath, _gunner, _reloadMag, _bestAmmoToSend);
|
||||
[QGVAR(addTurretMag), _this] call CBA_fnc_globalEvent;
|
||||
}, [_staticWeapon, _turretPath, _gunner, _reloadMag, _bestAmmoToSend], _timeToLoad] call CBA_fnc_waitAndExecute;
|
21
addons/csw/functions/fnc_assemble_canDeployTripod.sqf
Normal file
21
addons/csw/functions/fnc_assemble_canDeployTripod.sqf
Normal file
@ -0,0 +1,21 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: TCVM
|
||||
* Checks if the player can deploy the tripod.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Can deploy <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [player] call ace_csw_fnc_canDeployTripod
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_player"];
|
||||
|
||||
(getText(configFile >> "CfgWeapons" >> (secondaryWeapon _player) >> QUOTE(ADDON) >> "type") == "mount")
|
||||
|
25
addons/csw/functions/fnc_assemble_canDeployWeapon.sqf
Normal file
25
addons/csw/functions/fnc_assemble_canDeployWeapon.sqf
Normal file
@ -0,0 +1,25 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: TCVM
|
||||
* Checks if you can deploy a weapon on the tripod
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Target Tripod <OBJECT>
|
||||
* 0: Player <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Wether or not you can deploy the weapon <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [cursorObject, player] call ace_csw_fnc_assemble_canDeployWeapon
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_target", "_player", "", "_carryWeaponClassname"];
|
||||
if (isNil "_carryWeaponClassname") then { _carryWeaponClassname = secondaryWeapon _player };
|
||||
|
||||
// If the current launcher has a config-value that defines the tripod, it is a CSW
|
||||
(alive _target) &&
|
||||
{(getText(configFile >> "CfgWeapons" >> _carryWeaponClassname >> QUOTE(ADDON) >> "assembleTo" >> (typeOf _target))) != ""}
|
||||
|
22
addons/csw/functions/fnc_assemble_canPickupTripod.sqf
Normal file
22
addons/csw/functions/fnc_assemble_canPickupTripod.sqf
Normal file
@ -0,0 +1,22 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: TCVM
|
||||
* Checks if the player can pick-up the tripod.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Tripod <OBJECT>
|
||||
* 1: Unit <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Can pickup <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [tripod, player] call ace_csw_fnc_assemble_canPickupTripod
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_tripod", "_player"];
|
||||
|
||||
((secondaryWeapon _player) isEqualTo "") && {alive _tripod}
|
||||
|
26
addons/csw/functions/fnc_assemble_canPickupWeapon.sqf
Normal file
26
addons/csw/functions/fnc_assemble_canPickupWeapon.sqf
Normal file
@ -0,0 +1,26 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: TCVM
|
||||
* If the CSW is mounted or in use this will not allow you to dismount the weapon
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Static Weapon <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Can Dismount <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [cursorObject] call ace_csw_fnc_assemble_canPickupWeapon
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_staticWeapon"];
|
||||
|
||||
// Assembly mode: [0=disabled, 1=enabled, 2=enabled&unload, 3=default]
|
||||
private _assemblyMode = [false, true, true, GVAR(defaultAssemblyMode)] select (_staticWeapon getVariable [QGVAR(assemblyMode), 3]);
|
||||
private _notCrewed = (crew _staticWeapon) isEqualTo [];
|
||||
private _deadCrew = !(alive (gunner _staticWeapon)); // need to eject body???
|
||||
|
||||
_assemblyMode && {_notCrewed || _deadCrew}
|
||||
|
72
addons/csw/functions/fnc_assemble_deployTripod.sqf
Normal file
72
addons/csw/functions/fnc_assemble_deployTripod.sqf
Normal file
@ -0,0 +1,72 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: TCVM
|
||||
* Deploys the tripod
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [player] call ace_csw_fnc_assemble_deployTripod
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
[{
|
||||
params ["_player"];
|
||||
TRACE_1("assemble_deployTripod",_player);
|
||||
|
||||
// Remove the tripod from the launcher slot
|
||||
private _secondaryWeaponClassname = secondaryWeapon _player;
|
||||
_player removeWeaponGlobal (secondaryWeapon _player);
|
||||
|
||||
private _onFinish = {
|
||||
params ["_args"];
|
||||
_args params ["_player", "_secondaryWeaponClassname"];
|
||||
TRACE_2("deployTripod finish",_player,_secondaryWeaponClassname);
|
||||
|
||||
private _tripodClassname = getText(configFile >> "CfgWeapons" >> _secondaryWeaponClassname >> QUOTE(ADDON) >> "deploy");
|
||||
|
||||
// Create a tripod
|
||||
private _cswTripod = createVehicle [_tripodClassname, [0, 0, 0], [], 0, "NONE"];
|
||||
// Because the tripod can be a "full weapon" we disable any data that will allow it to be loaded
|
||||
_cswTripod setVariable [QGVAR(assemblyMode), 2, true]; // Explicitly set enabled&unload assembly mode and broadcast
|
||||
if (!GVAR(defaultAssemblyMode)) then {
|
||||
TRACE_1("global disableVanillaAssembly event",_cswTripod); // handles it being assembled when setting is disabled
|
||||
[QGVAR(disableVanillaAssembly), [_cswTripod]] call CBA_fnc_globalEvent;
|
||||
};
|
||||
|
||||
private _posATL = _player getRelPos [2, 0];
|
||||
_posATL set [2, ((getPosATL _player) select 2) + 0.5];
|
||||
|
||||
_cswTripod setDir (direction _player);
|
||||
_cswTripod setPosATL _posATL;
|
||||
_cswTripod setVectorUp (surfaceNormal _posATL);
|
||||
|
||||
[_player, "PutDown"] call EFUNC(common,doGesture);
|
||||
|
||||
// drag after deploying
|
||||
if ((missionNamespace getVariable [QGVAR(dragAfterDeploying), false]) && {["ACE_dragging"] call EFUNC(common,isModLoaded)}) then {
|
||||
if ([_player, _cswTripod] call EFUNC(dragging,canCarry)) then {
|
||||
TRACE_1("starting carry",_cswTripod);
|
||||
[_player, _cswTripod] call EFUNC(dragging,startCarry);
|
||||
} else {
|
||||
TRACE_1("cannot carry",_cswTripod);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
private _onFailure = {
|
||||
params ["_args"];
|
||||
_args params ["_player", "_secondaryWeaponClassname"];
|
||||
TRACE_2("deployTripod failure",_player,_secondaryWeaponClassname);
|
||||
|
||||
_player addWeaponGlobal _secondaryWeaponClassname;
|
||||
};
|
||||
|
||||
private _deployTime = getNumber(configFile >> "CfgWeapons" >> _secondaryWeaponClassname >> QUOTE(ADDON) >> "deployTime");
|
||||
[TIME_PROGRESSBAR(_deployTime), [_player, _secondaryWeaponClassname], _onFinish, _onFailure, localize LSTRING(PlaceTripod_progressBar)] call EFUNC(common,progressBar);
|
||||
}, _this] call CBA_fnc_execNextFrame;
|
77
addons/csw/functions/fnc_assemble_deployWeapon.sqf
Normal file
77
addons/csw/functions/fnc_assemble_deployWeapon.sqf
Normal file
@ -0,0 +1,77 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: TCVM
|
||||
* Deploys the current CSW
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [player] call ace_csw_fnc_assemble_deployWeapon
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
[{
|
||||
params ["_tripod", "_player", "", "_carryWeaponClassname"];
|
||||
if (isNil "_carryWeaponClassname") then { _carryWeaponClassname = secondaryWeapon _player };
|
||||
TRACE_3("assemble_deployWeapon_carryWeaponClassname",_tripod,_player,_carryWeaponClassname);
|
||||
|
||||
private _tripodClassname = typeOf _tripod;
|
||||
_player removeWeaponGlobal _carryWeaponClassname;
|
||||
|
||||
private _assembledClassname = getText(configfile >> "CfgWeapons" >> _carryWeaponClassname >> QUOTE(ADDON) >> "assembleTo" >> _tripodClassname);
|
||||
private _deployTime = getNumber(configfile >> "CfgWeapons" >> _carryWeaponClassname >> QUOTE(ADDON) >> "deployTime");
|
||||
if (!isClass (configFile >> "CfgVehicles" >> _assembledClassname)) exitWith {ERROR_1("bad static classname [%1]",_assembledClassname);};
|
||||
|
||||
TRACE_4("",_carryWeaponClassname,_tripodClassname,_assembledClassname,_deployTime);
|
||||
|
||||
private _onFinish = {
|
||||
params ["_args"];
|
||||
_args params ["_tripod", "_player", "_assembledClassname"];
|
||||
TRACE_3("deployWeapon finish",_tripod,_player,_assembledClassname);
|
||||
|
||||
private _tripodPos = getPosATL _tripod;
|
||||
private _tripodDir = getDir _tripod;
|
||||
deleteVehicle _tripod;
|
||||
|
||||
_tripodPos set [2, (_tripodPos select 2) + 0.1];
|
||||
// Delay a frame so tripod has a chance to be deleted
|
||||
[{
|
||||
params ["_assembledClassname", "_tripodDir", "_tripodPos"];
|
||||
private _csw = createVehicle [_assembledClassname, [0, 0, 0], [], 0, "NONE"];
|
||||
// Assembly mode: [0=disabled, 1=enabled, 2=enabled&unload, 3=default]
|
||||
_csw setVariable [QGVAR(assemblyMode), 2, true]; // Explicitly set advanced assembly mode + unload, and broadcast
|
||||
if (!GVAR(defaultAssemblyMode)) then {
|
||||
TRACE_1("global disableVanillaAssembly event",_csw); // handles it being assembled when setting is disabled
|
||||
[QGVAR(disableVanillaAssembly), [_csw]] call CBA_fnc_globalEvent;
|
||||
};
|
||||
_csw setDir _tripodDir;
|
||||
_csw setPosATL _tripodPos;
|
||||
if ((_tripodPos select 2) < 0.5) then {
|
||||
_csw setVectorUp (surfaceNormal _tripodPos);
|
||||
};
|
||||
TRACE_2("csw placed",_csw,_assembledClassname);
|
||||
}, [_assembledClassname, _tripodDir, _tripodPos]] call CBA_fnc_execNextFrame;
|
||||
};
|
||||
|
||||
private _onFailure = {
|
||||
params ["_args"];
|
||||
_args params ["", "_player", "", "_carryWeaponClassname"];
|
||||
TRACE_2("deployWeapon failure",_player,_carryWeaponClassname);
|
||||
|
||||
_player addWeaponGlobal _carryWeaponClassname;
|
||||
};
|
||||
|
||||
private _codeCheck = {
|
||||
params ["_args"];
|
||||
_args params ["_tripod"];
|
||||
!isNull _tripod;
|
||||
};
|
||||
|
||||
[TIME_PROGRESSBAR(_deployTime), [_tripod, _player, _assembledClassname, _carryWeaponClassname], _onFinish, _onFailure, localize LSTRING(AssembleCSW_progressBar), _codeCheck] call EFUNC(common,progressBar);
|
||||
}, _this] call CBA_fnc_execNextFrame;
|
||||
|
28
addons/csw/functions/fnc_assemble_deployWeaponModifier.sqf
Normal file
28
addons/csw/functions/fnc_assemble_deployWeaponModifier.sqf
Normal file
@ -0,0 +1,28 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Modifies interaction for deploying weapon
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Target <OBJECT>
|
||||
* 1: Player <OBJECT>
|
||||
* 2: Args <ANY>
|
||||
* 3: Action Data <ARRAY>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [cursorObject, player, [], []] call ace_csw_fnc_assemble_deployWeaponModifier
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_target", "_player", "", "_actionData"];
|
||||
|
||||
private _carryWeaponClassname = secondaryWeapon _player;
|
||||
private _assembleTo = (getText(configFile >> "CfgWeapons" >> _carryWeaponClassname >> QUOTE(ADDON) >> "assembleTo" >> (typeOf _target)));
|
||||
private _icon = getText (configFile >> "CfgVehicles" >> _assembleTo >> "picture");
|
||||
TRACE_2("",_assembleTo,_icon);
|
||||
|
||||
_actionData set [2, _icon];
|
47
addons/csw/functions/fnc_assemble_pickupTripod.sqf
Normal file
47
addons/csw/functions/fnc_assemble_pickupTripod.sqf
Normal file
@ -0,0 +1,47 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: TCVM
|
||||
* Picks up the tripod and adds it to the player launcher slot
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Tripod <OBJECT>
|
||||
* 1: Unit <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [tripod, player] call ace_csw_fnc_assemble_pickupTripod
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
[{
|
||||
params ["_tripod", "_player"];
|
||||
TRACE_2("assemble_pickupTripod",_tripod,_player);
|
||||
|
||||
private _tripodClassname = getText(configFile >> "CfgVehicles" >> (typeof _tripod) >> QUOTE(ADDON) >> "disassembleTo");
|
||||
private _pickupTime = getNumber(configFile >> "CfgWeapons" >> _tripodClassname >> QUOTE(ADDON) >> "pickupTime");
|
||||
|
||||
private _onFinish = {
|
||||
params ["_args"];
|
||||
_args params ["_tripod", "_player", "_tripodClassname"];
|
||||
TRACE_3("assemble_pickupTripod finish",_tripod,_player,_tripodClassname);
|
||||
|
||||
deleteVehicle _tripod;
|
||||
_player addWeaponGlobal _tripodClassname;
|
||||
[_player, "PutDown"] call EFUNC(common,doGesture);
|
||||
};
|
||||
|
||||
private _condition = {
|
||||
params ["_args"];
|
||||
_args params ["_tripod", "_player"];
|
||||
|
||||
!(isNull _tripod) && { (secondaryWeapon _player) isEqualTo "" }
|
||||
|
||||
};
|
||||
|
||||
TRACE_3("",_pickupTime,typeOf _tripod,_tripodClassname);
|
||||
[TIME_PROGRESSBAR(_pickupTime), [_tripod, _player, _tripodClassname], _onFinish, {}, localize LSTRING(PickupTripod_progressBar), _condition] call EFUNC(common,progressBar);
|
||||
}, _this] call CBA_fnc_execNextFrame;
|
||||
|
96
addons/csw/functions/fnc_assemble_pickupWeapon.sqf
Normal file
96
addons/csw/functions/fnc_assemble_pickupWeapon.sqf
Normal file
@ -0,0 +1,96 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: TCVM
|
||||
* Dismounts the weapon from the tripod and drops its backpack beside
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Static Weapon <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [weapon] call ace_csw_fnc_assemble_pickupWeapon
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
[{
|
||||
params ["_staticWeapon", "_player"];
|
||||
TRACE_2("assemble_pickupWeapon",_staticWeapon,_player);
|
||||
|
||||
private _onDisassembleFunc = getText(configFile >> "CfgVehicles" >> (typeOf _staticWeapon) >> QUOTE(ADDON) >> "disassembleFunc");
|
||||
private _carryWeaponClassname = getText(configFile >> "CfgVehicles" >> (typeOf _staticWeapon) >> QUOTE(ADDON) >> "disassembleWeapon");
|
||||
private _turretClassname = getText(configFile >> "CfgVehicles" >> (typeOf _staticWeapon) >> QUOTE(ADDON) >> "disassembleTurret");
|
||||
private _pickupTime = getNumber(configFile >> "CfgWeapons" >> _carryWeaponClassname >> QUOTE(ADDON) >> "pickupTime");
|
||||
TRACE_4("",typeOf _staticWeapon,_carryWeaponClassname,_turretClassname,_pickupTime);
|
||||
if (!isClass (configFile >> "CfgWeapons" >> _carryWeaponClassname)) exitWith {ERROR_1("bad weapon classname [%1]",_carryWeaponClassname);};
|
||||
// Turret classname can equal nothing if the deploy bag is the "whole" weapon. e.g Kornet, Metis, other ATGMs
|
||||
if (!(_turretClassname isEqualTo "") && {!isClass (configFile >> "CfgVehicles" >> _turretClassname)}) exitWith {ERROR_1("bad turret classname [%1]",_turretClassname);};
|
||||
|
||||
private _onFinish = {
|
||||
params ["_args"];
|
||||
_args params ["_staticWeapon", "_player", "_carryWeaponClassname", "_turretClassname", "_onDisassembleFunc"];
|
||||
TRACE_4("disassemble finish",_staticWeapon,_player,_carryWeaponClassname,_turretClassname);
|
||||
|
||||
private _weaponPos = getPosATL _staticWeapon;
|
||||
_weaponPos set [2, (_weaponPos select 2) + 0.1];
|
||||
private _weaponDir = getDir _staticWeapon;
|
||||
|
||||
LOG("remove ammo");
|
||||
{
|
||||
_x params ["_xMag", "", "_xAmmo"];
|
||||
|
||||
private _carryMag = GVAR(vehicleMagCache) getVariable _xMag;
|
||||
if (isNil "_carryMag") then {
|
||||
private _groups = "getNumber (_x >> _xMag) == 1" configClasses (configFile >> QGVAR(groups));
|
||||
_carryMag = configName (_groups param [0, configNull]);
|
||||
GVAR(vehicleMagCache) setVariable [_xMag, _carryMag];
|
||||
TRACE_2("setting cache",_xMag,_carryMag);
|
||||
};
|
||||
if ((_xAmmo > 0) && {_carryMag != ""}) then {
|
||||
TRACE_2("Removing ammo",_xMag,_carryMag);
|
||||
[_player, _carryMag, _xAmmo] call FUNC(reload_handleReturnAmmo);
|
||||
};
|
||||
} forEach (magazinesAllTurrets _staticWeapon);
|
||||
|
||||
if !(_turretClassname isEqualTo "") then {
|
||||
private _cswTripod = createVehicle [_turretClassname, [0, 0, 0], [], 0, "NONE"];
|
||||
// Delay a frame so weapon has a chance to be deleted
|
||||
[{
|
||||
params ["_cswTripod", "_weaponDir", "_weaponPos"];
|
||||
_cswTripod setDir _weaponDir;
|
||||
_cswTripod setPosATL _weaponPos;
|
||||
_cswTripod setVelocity [0, 0, -0.05];
|
||||
_cswTripod setVectorUp (surfaceNormal _weaponPos);
|
||||
}, [_cswTripod, _weaponDir, _weaponPos]] call CBA_fnc_execNextFrame;
|
||||
[_cswTripod, _staticWeapon] call (missionNamespace getVariable _onDisassembleFunc);
|
||||
};
|
||||
|
||||
[{
|
||||
params ["_player", "_weaponPos", "_carryWeaponClassname"];
|
||||
if ((alive _player) && {(secondaryWeapon _player) == ""}) exitWith {
|
||||
_player addWeapon _carryWeaponClassname;
|
||||
};
|
||||
private _weaponRelPos = _weaponPos getPos RELATIVE_DIRECTION(90);
|
||||
private _weaponHolder = createVehicle ["groundWeaponHolder", [0, 0, 0], [], 0, "NONE"];
|
||||
_weaponHolder setDir random [0, 180, 360];
|
||||
_weaponHolder setPosATL [_weaponRelPos select 0, _weaponRelPos select 1, _weaponPos select 2];
|
||||
_weaponHolder addWeaponCargoGlobal [_carryWeaponClassname, 1];
|
||||
}, [_player, _weaponPos, _carryWeaponClassname]] call CBA_fnc_execNextFrame;
|
||||
|
||||
LOG("delete weapon");
|
||||
deleteVehicle _staticWeapon;
|
||||
|
||||
LOG("end");
|
||||
};
|
||||
|
||||
private _condition = {
|
||||
params ["_args"];
|
||||
_args params ["_staticWeapon"];
|
||||
((crew _staticWeapon) isEqualTo []) && (alive _staticWeapon)
|
||||
};
|
||||
|
||||
[TIME_PROGRESSBAR(_pickupTime), [_staticWeapon, _player, _carryWeaponClassname, _turretClassname, _onDisassembleFunc], _onFinish, {}, localize LSTRING(DisassembleCSW_progressBar), _condition] call EFUNC(common,progressBar);
|
||||
}, _this] call CBA_fnc_execNextFrame;
|
||||
|
28
addons/csw/functions/fnc_canGetIn.sqf
Normal file
28
addons/csw/functions/fnc_canGetIn.sqf
Normal file
@ -0,0 +1,28 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: TCVM
|
||||
* Checks if the player can get in the weapon
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Static Weapon <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [cursorObject] call ace_csw_fnc_canGetIn
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
// hide this action if quick mount is enabled
|
||||
if ((missionNamespace getVariable [QEGVAR(quickmount,enabled), false]) && {(missionNamespace getVariable [QEGVAR(quickmount,enableMenu), -1]) in [1, 3]}) exitWith {
|
||||
false
|
||||
};
|
||||
|
||||
params ["_staticWeapon"];
|
||||
|
||||
alive _staticWeapon
|
||||
&& {!(alive (gunner _staticWeapon))}
|
||||
&& {(locked _staticWeapon) < 2}
|
||||
&& {0.3 < ((vectorUp _staticWeapon) select 2)}
|
24
addons/csw/functions/fnc_getIn.sqf
Normal file
24
addons/csw/functions/fnc_getIn.sqf
Normal file
@ -0,0 +1,24 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: TCVM
|
||||
* An action for the player to get in the CSW
|
||||
* Due to the fact that the default static weapons "Get In" memory point is at the front of
|
||||
* the gun and can't be acssesed from the back, I am implementing this to get around that issue.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Static Weapon <OBJECT>
|
||||
* 1: Unit <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [cursorObject, player] call ace_csw_fnc_getIn
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_staticWeapon", "_player"];
|
||||
TRACE_2("getIn",_staticWeapon,_player);
|
||||
|
||||
_player moveInTurret [_staticWeapon, [0]];
|
44
addons/csw/functions/fnc_proxyWeapon.sqf
Normal file
44
addons/csw/functions/fnc_proxyWeapon.sqf
Normal file
@ -0,0 +1,44 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: Brandon (TCVM), PabstMirror
|
||||
* Handles the use of proxy weapons to fix engine-reload times
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Weapon <OBJECT>
|
||||
* 1: Turret <ARRAY>
|
||||
* 2: Proxy weapon needed <BOOL>
|
||||
* 2: Weapon should be emptied <BOOL>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [weapon, [0], true, false] call ace_csw_fnc_proxyWeapon
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_staticWeapon", "_turret", "_needed", "_emptyWeapon"];
|
||||
TRACE_4("proxyWeapon",_staticWeapon,_turret,_needed,_emptyWeapon);
|
||||
|
||||
if (_staticWeapon getVariable [format [QGVAR(proxyHandled_%1), _turret], false]) exitWith { TRACE_1("already handled",typeOf _staticWeapon); };
|
||||
|
||||
private _typeOf = typeOf _staticWeapon;
|
||||
private _proxyWeapon = getText(configFile >> "CfgVehicles" >> _typeOf >> "ace_csw" >> "proxyWeapon");
|
||||
|
||||
TRACE_2("",_typeOf,_proxyWeapon);
|
||||
if (_proxyWeapon == "") exitWith {};
|
||||
|
||||
private _currentWeapon = (_staticWeapon weaponsTurret [0]) param [0, "#none"];
|
||||
if ((missionNamespace getVariable [_proxyWeapon, objNull]) isEqualType {}) then { // check if string is a function
|
||||
TRACE_1("Calling proxyWeapon function",_proxyWeapon);
|
||||
// This function may replace magazines or do other things to the static weapon
|
||||
_proxyWeapon = [_staticWeapon, _turret, _currentWeapon, _needed, _emptyWeapon] call (missionNamespace getVariable _proxyWeapon);
|
||||
_needed = _proxyWeapon != "";
|
||||
};
|
||||
if (!_needed) exitWith { TRACE_2("not needed",_needed,_proxyWeapon); };
|
||||
|
||||
TRACE_2("swapping to proxy weapon",_currentWeapon,_proxyWeapon);
|
||||
_staticWeapon removeWeaponTurret [_currentWeapon, _turret];
|
||||
_staticWeapon addWeaponTurret [_proxyWeapon, _turret];
|
||||
_staticWeapon setVariable [format [QGVAR(proxyHandled_%1), _turret], true, true];
|
56
addons/csw/functions/fnc_reload_actionsLoad.sqf
Normal file
56
addons/csw/functions/fnc_reload_actionsLoad.sqf
Normal file
@ -0,0 +1,56 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Gets sub actions for what the player can load into the static weapon
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Static Weapon <OBJECT>
|
||||
* 1: Player <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Actions <ARRAY>
|
||||
*
|
||||
* Example:
|
||||
* [cursorObject, player] call ace_csw_fnc_reload_actionsLoad
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_vehicle", "_player"];
|
||||
|
||||
private _actions = [];
|
||||
private _loadableMagazines = [_vehicle, _player] call FUNC(reload_getLoadableMagazines);
|
||||
|
||||
private _statement = {
|
||||
params ["_target", "_player", "_params"];
|
||||
_params params ["_carryMag", "_turretPath"];
|
||||
|
||||
[_target, _turretPath, _carryMag, _player] call FUNC(reload_loadMagazine);
|
||||
};
|
||||
|
||||
private _condition = {
|
||||
params ["_target", "_player", "_params"];
|
||||
_params params ["_carryMag", "_turretPath"];
|
||||
|
||||
([_target, _turretPath, _carryMag, _player] call FUNC(reload_canLoadMagazine)) select 0
|
||||
};
|
||||
|
||||
{
|
||||
_x params ["_carryMag", "_turretPath", "_loadInfo"];
|
||||
_loadInfo params ["", "", "", "_isBeltLinking"];
|
||||
|
||||
private _displayName = getText (configFile >> "CfgMagazines" >> _carryMag >> "displayName");
|
||||
private _picture = getText (configFile >> "CfgMagazines" >> _carryMag >> "picture");
|
||||
private _text = if (_isBeltLinking) then {
|
||||
format [localize LSTRING(actionLink), _displayName];
|
||||
} else {
|
||||
format [localize LSTRING(loadX), _displayName];
|
||||
};
|
||||
|
||||
private _action = [format ["load_%1", _forEachIndex], _text, _picture, _statement, _condition, {}, _x] call EFUNC(interact_menu,createAction);
|
||||
_actions pushBack [_action, [], _vehicle];
|
||||
} forEach _loadableMagazines;
|
||||
|
||||
TRACE_1("loadActions",count _actions);
|
||||
_actions
|
||||
|
81
addons/csw/functions/fnc_reload_actionsUnload.sqf
Normal file
81
addons/csw/functions/fnc_reload_actionsUnload.sqf
Normal file
@ -0,0 +1,81 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Gets sub actions for what the player can load into the static weapon
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Target <OBJECT>
|
||||
* 1: Player <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Actions <ARRAY>
|
||||
*
|
||||
* Example:
|
||||
* [cursorObject, player] call ace_csw_fnc_reload_actionsUnload
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_vehicle", "_player"];
|
||||
|
||||
private _statement = {
|
||||
params ["_target", "_player", "_params"];
|
||||
_params params ["_vehMag", "_turretPath", "_carryMag"];
|
||||
TRACE_5("starting unload",_target,_turretPath,_player,_carryMag,_vehMag);
|
||||
|
||||
private _timeToUnload = 1;
|
||||
if (!isNull(configFile >> "CfgVehicles" >> (typeOf _target) >> QUOTE(ADDON) >> "ammoUnloadTime")) then {
|
||||
_timeToUnload = getNumber(configFile >> "CfgVehicles" >> (typeOf _target) >> QUOTE(ADDON) >> "ammoUnloadTime");
|
||||
};
|
||||
|
||||
[
|
||||
TIME_PROGRESSBAR(_timeToUnload),
|
||||
[_target, _turretPath, _player, _carryMag, _vehMag],
|
||||
{
|
||||
(_this select 0) params ["_target", "_turretPath", "", "_carryMag", "_vehMag"];
|
||||
TRACE_5("unload progressBar finish",_target,_turretPath,_carryMag,_vehMag,_player);
|
||||
[QGVAR(removeTurretMag), [_target, _turretPath, _carryMag, _vehMag, _player]] call CBA_fnc_globalEvent;
|
||||
},
|
||||
{TRACE_1("unload progressBar fail",_this);},
|
||||
format [localize LSTRING(unloadX), getText (configFile >> "CfgMagazines" >> _carryMag >> "displayName")],
|
||||
{(_this select 0) call FUNC(reload_canUnloadMagazine)},
|
||||
["isNotInside"]
|
||||
] call EFUNC(common,progressBar);
|
||||
};
|
||||
|
||||
private _condition = {
|
||||
params ["_target", "_player", "_params"];
|
||||
_params params ["_vehMag", "_turretPath", "_carryMag"];
|
||||
[_target, _turretPath, _player, _carryMag, _vehMag] call FUNC(reload_canUnloadMagazine)
|
||||
};
|
||||
|
||||
private _actions = [];
|
||||
private _handeledMagTypes = [];
|
||||
|
||||
// Go through magazines on static weapon and check if any are unloadable
|
||||
{
|
||||
_x params ["_xMag", "_xTurret", "_xAmmo"];
|
||||
|
||||
if ((_xAmmo > 0) && {!(_xMag in _handeledMagTypes)}) then {
|
||||
_handeledMagTypes pushBack _xMag;
|
||||
private _carryMag = GVAR(vehicleMagCache) getVariable _xMag;
|
||||
|
||||
if (isNil "_carryMag") then {
|
||||
private _groups = "getNumber (_x >> _xMag) == 1" configClasses (configFile >> QGVAR(groups));
|
||||
_carryMag = configName (_groups param [0, configNull]);
|
||||
GVAR(vehicleMagCache) setVariable [_xMag, _carryMag];
|
||||
TRACE_2("setting cache",_xMag,_carryMag);
|
||||
};
|
||||
if (_carryMag == "") exitWith {};
|
||||
|
||||
private _displayName = getText (configFile >> "CfgMagazines" >> _carryMag >> "displayName");
|
||||
private _text = format [LLSTRING(unloadX), _displayName];
|
||||
private _picture = getText (configFile >> "CfgMagazines" >> _carryMag >> "picture");
|
||||
private _action = [format ["unload_%1", _forEachIndex], _text, _picture, _statement, _condition, {}, [_xMag, _xTurret, _carryMag]] call EFUNC(interact_menu,createAction);
|
||||
_actions pushBack [_action, [], _vehicle];
|
||||
};
|
||||
} forEach (magazinesAllTurrets _vehicle);
|
||||
|
||||
TRACE_1("unloadActions",count _actions);
|
||||
_actions
|
||||
|
59
addons/csw/functions/fnc_reload_canLoadMagazine.sqf
Normal file
59
addons/csw/functions/fnc_reload_canLoadMagazine.sqf
Normal file
@ -0,0 +1,59 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: PabstMirror & TCVM
|
||||
* Tests if unit can load a magazine into a static weapon.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Static Weapon <OBJECT>
|
||||
* 1: Turret Path <ARRAY>
|
||||
* 2: Carryable Magazine <STRING>
|
||||
* 3: Player <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* [CanLoad<BOOL>, LoadedMag<STRING>, AmmoNeeded<NUMBER>, IsBeltLinking<BOOL>]<ARRAY>
|
||||
*
|
||||
* Example:
|
||||
* [cursorObject, [0], "ACE_csw_100Rnd_127x99_mag_red", player] call ace_csw_fnc_reload_canLoadMagazine
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_vehicle", "_turret", "_carryMag", ["_unit", objNull]];
|
||||
// TRACE_4("reload_canLoadMagazine",_vehicle,_turret,_carryMag,_unit);
|
||||
|
||||
// Handle disassembled or deleted
|
||||
if (!alive _vehicle) exitWith { [false, "", -1, false] };
|
||||
// Verify unit has carry magazine
|
||||
if ((!isNull _unit) && {((_vehicle distance _unit) > 5) || {((magazines _unit) findIf {_x == _carryMag}) == -1}}) exitWith { [false, "", -2, false] };
|
||||
|
||||
private _desiredAmmo = getNumber (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> QUOTE(ADDON) >> "desiredAmmo");
|
||||
if (_desiredAmmo == 0) then { _desiredAmmo = 100; };
|
||||
private _ammoNeeded = _desiredAmmo min getNumber (configFile >> "CfgMagazines" >> _carryMag >> "count"); // assume it needs full carry mag
|
||||
private _loadedMag = "";
|
||||
private _isBeltLinking = false;
|
||||
|
||||
scopeName "main";
|
||||
{
|
||||
_x params ["_xMag", "_xTurret", "_xAmmo"];
|
||||
if (_xTurret isEqualTo _turret) then {
|
||||
if (_loadedMag != "") exitWith { [false, _loadedMag, -3, false] breakOut "main"; }; // Exit if static has multiple mags
|
||||
_loadedMag = _xMag;
|
||||
if (_xAmmo > 0) then {
|
||||
// There is a magazine with ammo loaded in the turret (are there any multi-muzzle static weapons??), see if we can add to this mag
|
||||
if (getNumber (configFile >> QGVAR(groups) >> _carryMag >> _xMag) != 1) exitWith {
|
||||
[false, _loadedMag, -4, false] breakOut "main"; // Carry mag cannot be added to existing vehicle mag (e.g. red to green tracers)
|
||||
};
|
||||
if (getNumber (configFile >> "CfgMagazines" >> _carryMag >> "ACE_isBelt") == 0) exitWith {
|
||||
[false, _loadedMag, -5, false] breakOut "main"; // Non-linkable mag loaded, can't add any more
|
||||
};
|
||||
private _maxMagazineAmmo = _desiredAmmo min getNumber (configFile >> "CfgMagazines" >> _xMag >> "count");
|
||||
if (_xAmmo >= _maxMagazineAmmo) exitWith {
|
||||
[false, _loadedMag, -6, false] breakOut "main"; // Already at capicity
|
||||
};
|
||||
_ammoNeeded = _maxMagazineAmmo - _xAmmo;
|
||||
_isBeltLinking = true;
|
||||
};
|
||||
};
|
||||
} forEach (magazinesAllTurrets _vehicle);
|
||||
|
||||
[true, _loadedMag, _ammoNeeded, _isBeltLinking]
|
33
addons/csw/functions/fnc_reload_canUnloadMagazine.sqf
Normal file
33
addons/csw/functions/fnc_reload_canUnloadMagazine.sqf
Normal file
@ -0,0 +1,33 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Tests if unit can unload a magazine from a static weapon.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Static Weapon <OBJECT>
|
||||
* 1: Turret Path <ARRAY>
|
||||
* 2: Player <OBJECT>
|
||||
* 3: Carryable Magazine <STRING>
|
||||
* 4: Vehicle Magazine <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [cursorTarget, [0], player, "ACE_csw_100Rnd_127x99_mag_red", "200Rnd_127x99_mag_Tracer_Red"] call ace_csw_fnc_reload_canUnloadMagazine
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_vehicle", "_turretPath", "_unit", "_carryMag", "_vehMag"];
|
||||
|
||||
// handle disassembled or deleted
|
||||
if ((!alive _vehicle) || {(_vehicle distance _unit) > 5}) exitWith {false};
|
||||
|
||||
private _return = false;
|
||||
{
|
||||
_x params ["_xMag", "_xTurret", "_xAmmo"];
|
||||
if ((_xMag == _vehMag) && {_xTurret isEqualTo _turretPath} && {_xAmmo > 0}) exitWith { _return = true };
|
||||
} forEach (magazinesAllTurrets _vehicle);
|
||||
|
||||
_return
|
52
addons/csw/functions/fnc_reload_getLoadableMagazines.sqf
Normal file
52
addons/csw/functions/fnc_reload_getLoadableMagazines.sqf
Normal file
@ -0,0 +1,52 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Gets magazines that the player is carrying that can be loaded into the static weapon
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Vehicle <OBJECT>
|
||||
* 1: Player <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Mags <ARRAY>
|
||||
* [Carry Magazine <STRING>, Turret Path <ARRAY>, Ammo Needed <NUMBER>]
|
||||
*
|
||||
* Example:
|
||||
* [cursorObject, player] call ace_csw_fnc_reload_getLoadableMagazines
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_vehicle", "_player"];
|
||||
|
||||
private _carriedMagazines = [];
|
||||
|
||||
{
|
||||
if (isClass (configFile >> QGVAR(groups) >> _x)) then {
|
||||
_carriedMagazines pushBackUnique _x;
|
||||
};
|
||||
} forEach (magazines _player);
|
||||
|
||||
if (_carriedMagazines isEqualTo []) exitWith { [] }; // fast exit if no carry mags
|
||||
|
||||
private _loadInfo = [];
|
||||
private _return = [];
|
||||
// Go through turrets and find weapons that we could reload
|
||||
{
|
||||
private _turretPath = _x;
|
||||
{
|
||||
private _weapon = _x;
|
||||
{
|
||||
private _carryMag = _x;
|
||||
private _carryGroup = configFile >> QGVAR(groups) >> _carryMag;
|
||||
{
|
||||
if (((getNumber (_carryGroup >> _x)) == 1) && {_loadInfo = [_vehicle, _turretPath, _carryMag, _player] call FUNC(reload_canLoadMagazine); _loadInfo select 0}) exitWith {
|
||||
_return pushBack [_carryMag, _turretPath, _loadInfo];
|
||||
};
|
||||
} forEach ([_weapon] call CBA_fnc_compatibleMagazines);
|
||||
} forEach _carriedMagazines;
|
||||
} forEach (_vehicle weaponsTurret _turretPath);
|
||||
} forEach (allTurrets _vehicle);
|
||||
// Note: these nested forEach's looks terrible, but most only have one element
|
||||
|
||||
_return
|
45
addons/csw/functions/fnc_reload_getVehicleMagazine.sqf
Normal file
45
addons/csw/functions/fnc_reload_getVehicleMagazine.sqf
Normal file
@ -0,0 +1,45 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Finds the best vehicle magazines to create from a carryable magazine for a given weapon.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Weapon <STRING>
|
||||
* 1: Magazine that is carryable <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* Vehicle Magazine <STRING>
|
||||
*
|
||||
* Example:
|
||||
* [cursorObject, [0], "ace_csw_100Rnd_127x99_mag"] call ace_csw_fnc_reload_getVehicleMagazine
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_vehicle", "_turret", "_carryMag"];
|
||||
TRACE_3("reload_getVehicleMagazine",_vehicle,_turret,_carryMag);
|
||||
|
||||
private _carryGroupCfg = configFile >> QGVAR(groups) >> _carryMag;
|
||||
private _desiredAmmo = getNumber (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> QUOTE(ADDON) >> "desiredAmmo");
|
||||
if (_desiredAmmo == 0) then { _desiredAmmo = 100; };
|
||||
|
||||
private _bestMag = "#";
|
||||
private _bestMagCount = -1;
|
||||
|
||||
{
|
||||
private _weapon = _x;
|
||||
{
|
||||
if ((getNumber (_carryGroupCfg >> _x)) == 1) then {
|
||||
private _xAmmo = getNumber (configFile >> "CfgMagazines" >> _x >> "ammo");
|
||||
if (((_xAmmo >= _bestMagCount) && {_bestMagCount < _desiredAmmo}) || {(_xAmmo >= _desiredAmmo) && {_xAmmo < _bestMagCount}}) then {
|
||||
_bestMag = _x;
|
||||
_bestMagCount = _xAmmo;
|
||||
};
|
||||
};
|
||||
} forEach (getArray (configFile >> "CfgWeapons" >> _weapon >> "magazines"));
|
||||
} forEach (_vehicle weaponsTurret _turret);
|
||||
TRACE_3("best fit",_desiredAmmo,_bestMag,_bestMagCount);
|
||||
|
||||
if (_bestMag == "#") then { ERROR_1("veh mag not found for %1",_carryMag); };
|
||||
|
||||
_bestMag
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user