From 33dc7e3dbd27f7c408f54a453749b193c05ebba1 Mon Sep 17 00:00:00 2001 From: Will/KJW <100206101+SpicyBagpipes@users.noreply.github.com> Date: Thu, 6 Jun 2024 12:49:15 +0100 Subject: [PATCH 1/6] Hit Reactions - Add weapon dropping on arm hit (#9539) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create fnc_checkWeaponDrop.sqf * Update fnc_checkWeaponDrop.sqf * Create XEH_postInit.sqf * Update XEH_postInit.sqf * Update XEH_postInit.sqf * Update fnc_checkWeaponDrop.sqf * fix spelling issue * Update initSettings.sqf Add weaponDropEnabled setting * Update stringtable.xml * Update fnc_checkWeaponDrop.sqf * Update initSettings.sqf Forgot a bracket * Add weapon drop chance setting * Update XEH_postInit.sqf * Update CfgEventHandlers.hpp actually make it run postinit * Update XEH_PREP.hpp * Update stringtable.xml * Update initSettings.sqf No need, set chance to 0 * Update XEH_postInit.sqf already comparing against chance, can just set to 0 * Update initSettings.sqf * Update stringtable.xml * Update XEH_postInit.sqf * add arm hit chance fix weapon thing too * Update stringtable.xml * Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com> * Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com> * appearance stuff * Update addons/hitreactions/initSettings.sqf Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com> * Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf Co-authored-by: Jouni Järvinen * kjw's poor arithmetic * Update fnc_checkWeaponDrop.sqf wrong check * remove systemchat debug whoops * Update fnc_checkWeaponDrop.sqf * Update XEH_postInit.sqf * Update fnc_checkWeaponDrop.sqf * Early exit, wait for clear * Make default setting 0 * Update script_component.hpp * Update XEH_postInit.sqf * Update script_component.hpp * Update XEH_postInit.sqf * Update XEH_postInit.sqf * Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf * Update XEH_postInit.sqf Unsure if exitWith in postInit is proper? Seems better than nesting all of that in another scope imo * Update XEH_preInit.sqf * Update fnc_checkWeaponDrop.sqf * Update addons/hitreactions/XEH_preInit.sqf Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com> * Update hitreactions.md * Update hitreactions.md * Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> * Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> * Update addons/hitreactions/initSettings.sqf * Update XEH_postInit.sqf * Update addons/hitreactions/XEH_postInit.sqf Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> * Update addons/hitreactions/XEH_postInit.sqf Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> * Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> * Update addons/hitreactions/functions/fnc_checkWeaponDrop.sqf Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> * Update XEH_postInit.sqf * Update XEH_postInit.sqf * Update fnc_checkWeaponDrop.sqf * Spacing fixes * Update addons/hitreactions/XEH_postInit.sqf Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> * Take _hitEntity into account if exists * Update fnc_checkWeaponDrop.sqf _didHitGun will no longer ever be true * Minor component cleanup * Removed gun hits, added double hit detection * Decouple AI and player probabilities * Tweaks and fixes * Update XEH_PREP.hpp * Add missing param * Fixed bugged state AI are in after using TakeWeapon * Fixes and cleanup * Made API clear, moved undroppable to config entry * Update fnc_checkWeaponDrop.sqf * Check for Zeus RC and avoid `setUnitLoadout` * Expand `addWeapon`'s capabilities * Cleaned up `addWeapon` * Removed weapon replacement as it's apparently not necessary * Defined undefined variable --------- Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com> Co-authored-by: Jouni Järvinen Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> --- addons/hitreactions/ACE_Settings.hpp | 1 - addons/hitreactions/CfgEventHandlers.hpp | 7 +- addons/hitreactions/XEH_PREP.hpp | 2 +- addons/hitreactions/XEH_postInit.sqf | 86 +++++++++++++++++++ addons/hitreactions/XEH_preInit.sqf | 12 +++ .../functions/fnc_checkWeaponDrop.sqf | 33 +++++++ addons/hitreactions/initSettings.inc.sqf | 21 ++++- addons/hitreactions/script_component.hpp | 2 + addons/hitreactions/stringtable.xml | 6 ++ docs/wiki/feature/hitreactions.md | 3 + docs/wiki/framework/hitreactions-framework.md | 32 +++++++ 11 files changed, 201 insertions(+), 4 deletions(-) create mode 100644 addons/hitreactions/XEH_postInit.sqf create mode 100644 addons/hitreactions/functions/fnc_checkWeaponDrop.sqf create mode 100644 docs/wiki/framework/hitreactions-framework.md diff --git a/addons/hitreactions/ACE_Settings.hpp b/addons/hitreactions/ACE_Settings.hpp index 90c1445eba..78a510a141 100644 --- a/addons/hitreactions/ACE_Settings.hpp +++ b/addons/hitreactions/ACE_Settings.hpp @@ -1,4 +1,3 @@ - class ACE_Settings { class GVAR(minDamageToTrigger) { movedToSQF = 1; diff --git a/addons/hitreactions/CfgEventHandlers.hpp b/addons/hitreactions/CfgEventHandlers.hpp index eecf08c69d..b737b7bcbf 100644 --- a/addons/hitreactions/CfgEventHandlers.hpp +++ b/addons/hitreactions/CfgEventHandlers.hpp @@ -1,4 +1,3 @@ - class Extended_PreStart_EventHandlers { class ADDON { init = QUOTE(call COMPILE_SCRIPT(XEH_preStart)); @@ -11,6 +10,12 @@ class Extended_PreInit_EventHandlers { }; }; +class Extended_PostInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_SCRIPT(XEH_postInit)); + }; +}; + class Extended_Hit_EventHandlers { class CAManBase { class ADDON { diff --git a/addons/hitreactions/XEH_PREP.hpp b/addons/hitreactions/XEH_PREP.hpp index 7701b8ef19..eea48dcaa8 100644 --- a/addons/hitreactions/XEH_PREP.hpp +++ b/addons/hitreactions/XEH_PREP.hpp @@ -1,3 +1,3 @@ - +PREP(checkWeaponDrop); PREP(fallDown); PREP(getRandomAnimation); diff --git a/addons/hitreactions/XEH_postInit.sqf b/addons/hitreactions/XEH_postInit.sqf new file mode 100644 index 0000000000..d45d4f3df2 --- /dev/null +++ b/addons/hitreactions/XEH_postInit.sqf @@ -0,0 +1,86 @@ +#include "script_component.hpp" + +["ace_firedNonPlayer", { + if (GVAR(weaponDropChanceArmHitPlayer) + GVAR(weaponDropChanceArmHitAI) == 0) exitWith {}; + + (_this select 6) addEventHandler ["HitPart", { + params ["", "_entity", "", "", "", "", "_selections"]; + + [_entity, _selections] call FUNC(checkWeaponDrop); + }]; +}] call CBA_fnc_addEventHandler; + +["ace_firedPlayer", { + if (GVAR(weaponDropChanceArmHitPlayer) + GVAR(weaponDropChanceArmHitAI) == 0) exitWith {}; + + (_this select 6) addEventHandler ["HitPart", { + params ["", "_entity", "", "", "", "", "_selections"]; + + [_entity, _selections] call FUNC(checkWeaponDrop); + }]; +}] call CBA_fnc_addEventHandler; + +[QGVAR(dropWeapon), { + params ["_unit"]; + + if !(_unit getVariable [QGVAR(canDropWeapon), true]) exitWith {}; + + // Prevents AI from losing both primary and pistol when being shot with their pistol out + _unit setVariable [QGVAR(canDropWeapon), false]; + + private _weapon = currentWeapon _unit; + private _thrownWeapon = _unit call EFUNC(common,throwWeapon); + + [{ + params ["_unit"]; + + _unit setVariable [QGVAR(canDropWeapon), nil]; + }, _unit, 0.5] call CBA_fnc_waitAndExecute; + + if (_unit call EFUNC(common,isPlayer)) exitWith {}; // Don't make players pick their own weapons up + + // Wait before executing, as otherwise the unit would pick up the weapon immediately + [{ + [{ + (_this select 0) params ["_unit", "_weapon", "_thrownWeapon", "_timeout"]; + + // If the unit has been deleted or dead, if the weapon doesn't exist anymore or if it's been too long, stop + if (!alive _unit || {!local _unit} || {isNull _thrownWeapon} || {CBA_missionTime >= _timeout}) exitWith { + (_this select 1) call CBA_fnc_removePerFrameHandler; + }; + + // Don't pick up weapon when unit is unconscious + if (lifeState _unit == "INCAPACITATED") exitWith {}; + + // If the unit has no essential weapons, force them to get their weapon, otherwise wait until no enemies are present + if !( + (primaryWeapon _unit == "" && {handgunWeapon _unit == ""}) || + {(_unit distance (_unit findNearestEnemy _unit)) > missionNamespace getVariable [QGVAR(safePickupDistance), DEFAULT_PICKUP_DISTANCE]} + ) exitWith {}; + + // If the unit is too far away, make them move closer + if (_unit distance _thrownWeapon >= 4) exitWith { + private _pos = getPosATL _thrownWeapon; + + _unit setDestination [_pos, "LEADER PLANNED", true]; + _unit doMove _pos; + }; + + (_this select 1) call CBA_fnc_removePerFrameHandler; + + _unit action ["TakeWeapon", _thrownWeapon, _weapon]; + + // Make the unit switch weapons + [{ + (_this select 0) hasWeapon (_this select 1) + }, { + params ["_unit", "_weapon"]; + + if (!alive _unit || {!local _unit} || {primaryWeapon _unit != _weapon}) exitWith {}; + + // Switch to the primary weapon, if it was picked up + _unit selectWeapon _weapon; + }, [_unit, _weapon], 5] call CBA_fnc_waitUntilAndExecute; + }, 5, _this] call CBA_fnc_addPerFrameHandler; + }, [_unit, _weapon, _thrownWeapon, CBA_missionTime + 300], random [2, 3, 4]] call CBA_fnc_waitAndExecute; +}] call CBA_fnc_addEventHandler; diff --git a/addons/hitreactions/XEH_preInit.sqf b/addons/hitreactions/XEH_preInit.sqf index 894773534a..9aa0acea0e 100644 --- a/addons/hitreactions/XEH_preInit.sqf +++ b/addons/hitreactions/XEH_preInit.sqf @@ -9,3 +9,15 @@ PREP_RECOMPILE_END; #include "initSettings.inc.sqf" ADDON = true; + +GVAR(armSelections) = [ + "leftshoulder", + "rightshoulder", + "lefthand", + "leftforearm", + "leftarmroll", + "rightforearm", + "rightarmroll", + "righthand", + "rightarm" +]; diff --git a/addons/hitreactions/functions/fnc_checkWeaponDrop.sqf b/addons/hitreactions/functions/fnc_checkWeaponDrop.sqf new file mode 100644 index 0000000000..ad4e7c4a41 --- /dev/null +++ b/addons/hitreactions/functions/fnc_checkWeaponDrop.sqf @@ -0,0 +1,33 @@ +#include "..\script_component.hpp" +/* + * Author: KJW + * Checks if an entity should drop their weapon based on projectile hit info. + * + * Arguments: + * 0: Entity that was hit + * 1: Selection names that were hit + * + * Return Value: + * None + * + * Example: + * [player, []] call ace_hitreactions_fnc_checkWeaponDrop + * + * Public: No + */ + +params ["_entity", "_selections"]; + +// Make sure entity is a unit +if !(_entity isKindOf "CAManBase") exitWith {}; + +// Don't throw weapon if unit is unconscious or dead +if !(lifeState _entity in ["HEALTHY", "INJURED"]) exitWith {}; + +if (random 1 >= ([GVAR(weaponDropChanceArmHitAI), GVAR(weaponDropChanceArmHitPlayer)] select (_entity call EFUNC(common,isPlayer)))) exitWith {}; + +if (_selections findAny GVAR(armSelections) == -1) exitWith {}; + +if (getNumber ((currentWeapon _entity) call CBA_fnc_getItemConfig >> QGVAR(undroppable)) == 1) exitWith {}; + +[QGVAR(dropWeapon), _entity, _entity] call CBA_fnc_targetEvent; diff --git a/addons/hitreactions/initSettings.inc.sqf b/addons/hitreactions/initSettings.inc.sqf index 2ca4ceaeac..2f51a25647 100644 --- a/addons/hitreactions/initSettings.inc.sqf +++ b/addons/hitreactions/initSettings.inc.sqf @@ -1,9 +1,28 @@ private _category = [LELSTRING(common,categoryUncategorized), QUOTE(COMPONENT_BEAUTIFIED)]; [ - QGVAR(minDamageToTrigger), "SLIDER", + QGVAR(minDamageToTrigger), + "SLIDER", LSTRING(minDamageToTrigger_displayName), _category, [-1, 1, 0.1, 1], 1 ] call CBA_fnc_addSetting; + +[ + QGVAR(weaponDropChanceArmHitPlayer), + "SLIDER", + LSTRING(weaponDropChanceArmHitPlayer_displayName), + _category, + [0, 1, 0, 2, true], + 1 +] call CBA_fnc_addSetting; + +[ + QGVAR(weaponDropChanceArmHitAI), + "SLIDER", + LSTRING(weaponDropChanceArmHitAI_displayName), + _category, + [0, 1, 0, 2, true], + 1 +] call CBA_fnc_addSetting; diff --git a/addons/hitreactions/script_component.hpp b/addons/hitreactions/script_component.hpp index dccbef24f7..dd407a914b 100644 --- a/addons/hitreactions/script_component.hpp +++ b/addons/hitreactions/script_component.hpp @@ -15,3 +15,5 @@ #endif #include "\z\ace\addons\main\script_macros.hpp" + +#define DEFAULT_PICKUP_DISTANCE 8 diff --git a/addons/hitreactions/stringtable.xml b/addons/hitreactions/stringtable.xml index b07e9be9a0..8ff2316dec 100644 --- a/addons/hitreactions/stringtable.xml +++ b/addons/hitreactions/stringtable.xml @@ -17,5 +17,11 @@ Düşmeyi tetikleyen min hasar Daño mínimo para provocar la caída + + Player Weapon Drop Chance (Arm Hit) + + + AI Weapon Drop Chance (Arm Hit) + diff --git a/docs/wiki/feature/hitreactions.md b/docs/wiki/feature/hitreactions.md index 7d12c1cb12..a84d1c0b78 100644 --- a/docs/wiki/feature/hitreactions.md +++ b/docs/wiki/feature/hitreactions.md @@ -18,3 +18,6 @@ version: ### 1.1 Falling under fire If a unit is shot while running it falls to the ground in a prone position, the area where the shot lands does not matters. Note that the shot needs to inflict a certain amount of damage to make the unit fall, a small cut won't make the unit stumble. + +### 1.2 Weapon dropping +If a unit's arm is shot it will cause the gun to be dropped based on the chance set. The default is 0. diff --git a/docs/wiki/framework/hitreactions-framework.md b/docs/wiki/framework/hitreactions-framework.md new file mode 100644 index 0000000000..ca3ff93f5b --- /dev/null +++ b/docs/wiki/framework/hitreactions-framework.md @@ -0,0 +1,32 @@ +--- +layout: wiki +title: Hit Reactions Framework +description: Explains how to set-up weapons with ACE3 hit reactions system. +group: framework +order: 5 +parent: wiki +mod: ace +version: + major: 3 + minor: 18 + patch: 0 +--- + +## 1. Config Values + +```cpp +class CfgWeapons { + class MyWeapon { + ace_hitreactions_undroppable = 1; // Prevents weapon from being dropped + }; +}; +``` + +## 2. Mission Variables + +### 2.1 Safe pickup distance for AI + +Allows 3rd party mods to set the distance between AI and the nearest hostile that is considered safe to go pickup a dropped weapon. +```sqf +ace_hitreactions_safePickupDistance = 10; // default is 8 +``` From 565d64d50ed775dafbbefafe05457577e955712b Mon Sep 17 00:00:00 2001 From: Mike-MF Date: Thu, 6 Jun 2024 22:12:49 +0100 Subject: [PATCH 2/6] Reaction Forces Compatibility (#10016) * Reaction Forces Compatibility * Fix Desert Eagle Name, add RAM 1500 variants * Mortars, Drone and lower cased Ram because thats how baer likes it --- addons/compat_rf/$PBOPREFIX$ | 1 + addons/compat_rf/CfgWeapons.hpp | 42 ++++ .../CfgVehicles.hpp | 12 + .../config.cpp | 21 ++ .../script_component.hpp | 3 + .../compat_rf_realisticnames/Attachments.hpp | 41 ++++ .../compat_rf_realisticnames/CfgMagazines.hpp | 24 ++ .../compat_rf_realisticnames/CfgVehicles.hpp | 134 +++++++++++ .../compat_rf_realisticnames/CfgWeapons.hpp | 111 +++++++++ .../compat_rf_realisticnames/config.cpp | 23 ++ .../script_component.hpp | 3 + .../compat_rf_realisticnames/stringtable.xml | 221 ++++++++++++++++++ addons/compat_rf/config.cpp | 18 ++ addons/compat_rf/script_component.hpp | 6 + 14 files changed, 660 insertions(+) create mode 100644 addons/compat_rf/$PBOPREFIX$ create mode 100644 addons/compat_rf/CfgWeapons.hpp create mode 100644 addons/compat_rf/compat_rf_nouniformrestrictions/CfgVehicles.hpp create mode 100644 addons/compat_rf/compat_rf_nouniformrestrictions/config.cpp create mode 100644 addons/compat_rf/compat_rf_nouniformrestrictions/script_component.hpp create mode 100644 addons/compat_rf/compat_rf_realisticnames/Attachments.hpp create mode 100644 addons/compat_rf/compat_rf_realisticnames/CfgMagazines.hpp create mode 100644 addons/compat_rf/compat_rf_realisticnames/CfgVehicles.hpp create mode 100644 addons/compat_rf/compat_rf_realisticnames/CfgWeapons.hpp create mode 100644 addons/compat_rf/compat_rf_realisticnames/config.cpp create mode 100644 addons/compat_rf/compat_rf_realisticnames/script_component.hpp create mode 100644 addons/compat_rf/compat_rf_realisticnames/stringtable.xml create mode 100644 addons/compat_rf/config.cpp create mode 100644 addons/compat_rf/script_component.hpp diff --git a/addons/compat_rf/$PBOPREFIX$ b/addons/compat_rf/$PBOPREFIX$ new file mode 100644 index 0000000000..78e6f45daf --- /dev/null +++ b/addons/compat_rf/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_rf diff --git a/addons/compat_rf/CfgWeapons.hpp b/addons/compat_rf/CfgWeapons.hpp new file mode 100644 index 0000000000..d1daa7c710 --- /dev/null +++ b/addons/compat_rf/CfgWeapons.hpp @@ -0,0 +1,42 @@ +class CfgWeapons { + // Ballistics + class Pistol_Base_F; + class hgun_Glock19_RF: Pistol_Base_F { + ace_barrelTwist = 254; + ace_barrelLength = 102; + ace_twistDirection = 1; + }; + + class hgun_DEagle_RF: Pistol_Base_F { + ace_barrelTwist = 482; + ace_barrelLength = 127; + ace_twistDirection = 1; + }; + + class Rifle_Long_Base_F; + class srifle_h6_base_rf: Rifle_Long_Base_F { + ace_barrelTwist = 228.6; + ace_barrelLength = 460; + ace_twistDirection = 1; + }; + + class Rifle_Base_F; + class arifle_ash12_base_RF: Rifle_Base_F { + ace_barrelTwist = 228.6; + ace_barrelLength = 400; + ace_twistDirection = 1; + }; + + class arifle_ash12_LR_base_RF: arifle_ash12_base_RF { + ace_barrelLength = 450; + }; + + // Hearing + class H_HelmetIA; + class H_HelmetIA_sb_arid_RF: H_HelmetIA { + ace_hearing_protection = 0.75; + }; + class H_HelmetIA_sb_digital_RF: H_HelmetIA { + ace_hearing_protection = 0.75; + }; +}; diff --git a/addons/compat_rf/compat_rf_nouniformrestrictions/CfgVehicles.hpp b/addons/compat_rf/compat_rf_nouniformrestrictions/CfgVehicles.hpp new file mode 100644 index 0000000000..553c199ee6 --- /dev/null +++ b/addons/compat_rf/compat_rf_nouniformrestrictions/CfgVehicles.hpp @@ -0,0 +1,12 @@ +// Generated using ace_nouniformrestrictions_fnc_exportConfig +class CfgVehicles { + class B_Helipilot_F; + class C_Helipilot_Green_UniformHolder_RF; + + class C_Helipilot_Rescue_UniformHolder_RF: B_Helipilot_F { + modelSides[] = {6}; + }; + class B_Helipilot_Green_UniformHolder_RF: C_Helipilot_Green_UniformHolder_RF { + modelSides[] = {6}; + }; +}; diff --git a/addons/compat_rf/compat_rf_nouniformrestrictions/config.cpp b/addons/compat_rf/compat_rf_nouniformrestrictions/config.cpp new file mode 100644 index 0000000000..2de1cf9673 --- /dev/null +++ b/addons/compat_rf/compat_rf_nouniformrestrictions/config.cpp @@ -0,0 +1,21 @@ +#include "script_component.hpp" + +class CfgPatches { + class SUBADDON { + name = COMPONENT_NAME; + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = { + "RF_Data_Loadorder", + "ace_nouniformrestrictions" + }; + skipWhenMissingDependencies = 1; + author = ECSTRING(common,ACETeam); + authors[] = {"Mike"}; + url = ECSTRING(main,URL); + VERSION_CONFIG; + }; +}; + +#include "CfgVehicles.hpp" diff --git a/addons/compat_rf/compat_rf_nouniformrestrictions/script_component.hpp b/addons/compat_rf/compat_rf_nouniformrestrictions/script_component.hpp new file mode 100644 index 0000000000..0b98185fa0 --- /dev/null +++ b/addons/compat_rf/compat_rf_nouniformrestrictions/script_component.hpp @@ -0,0 +1,3 @@ +#define SUBCOMPONENT nouniformrestrictions +#define SUBCOMPONENT_BEAUTIFIED No Uniform Restrictions +#include "..\script_component.hpp" diff --git a/addons/compat_rf/compat_rf_realisticnames/Attachments.hpp b/addons/compat_rf/compat_rf_realisticnames/Attachments.hpp new file mode 100644 index 0000000000..6f6f4f9a17 --- /dev/null +++ b/addons/compat_rf/compat_rf_realisticnames/Attachments.hpp @@ -0,0 +1,41 @@ +class optic_MRD; +class optic_MRD_khk_RF: optic_MRD { + displayName = SUBCSTRING(optic_mrd_khk_Name); +}; +class optic_MRD_tan_RF: optic_MRD { + displayName = SUBCSTRING(optic_mrd_tan_Name); +}; + +class optic_ACO_grn; +class optic_ACO_grn_desert_RF: optic_ACO_grn { + displayName = SUBCSTRING(optic_aco_grn_desert_Name); +}; +class optic_ACO_grn_wood_RF: optic_ACO_grn { + displayName = SUBCSTRING(optic_aco_grn_wood_Name); +}; + +class optic_Aco; +class optic_ACO_desert_RF: optic_Aco { + displayName = SUBCSTRING(optic_aco_desert_Name); +}; +class optic_ACO_wood_RF: optic_Aco { + displayName = SUBCSTRING(optic_aco_wood_Name); +}; + +class ItemCore; +class optic_rds_RF: ItemCore { + displayName = SUBCSTRING(optic_rds_Name); +}; + +class optic_VRCO_RF: ItemCore { + displayName = SUBCSTRING(optic_vrco_Name); +}; +class optic_VRCO_tan_RF: optic_VRCO_RF { + displayName = SUBCSTRING(optic_vrco_tan_Name); +}; +class optic_VRCO_khk_RF: optic_VRCO_RF { + displayName = SUBCSTRING(optic_vrco_khk_Name); +}; +class optic_VRCO_pistol_RF: optic_VRCO_RF { + displayName = SUBCSTRING(optic_vrco_Name); +}; diff --git a/addons/compat_rf/compat_rf_realisticnames/CfgMagazines.hpp b/addons/compat_rf/compat_rf_realisticnames/CfgMagazines.hpp new file mode 100644 index 0000000000..52231bcf07 --- /dev/null +++ b/addons/compat_rf/compat_rf_realisticnames/CfgMagazines.hpp @@ -0,0 +1,24 @@ +class CfgMagazines { + class CA_Magazine; + class 1Rnd_RC40_shell_RF: CA_Magazine { + displayName = SUBCSTRING(rc40_Name); + }; + class 1Rnd_RC40_HE_shell_RF: 1Rnd_RC40_shell_RF { + displayName = SUBCSTRING(rc40_he_Name); + }; + class 1Rnd_RC40_SmokeWhite_shell_RF: 1Rnd_RC40_shell_RF { + displayName = SUBCSTRING(rc40_white_Name); + }; + class 1Rnd_RC40_SmokeBlue_shell_RF: 1Rnd_RC40_shell_RF { + displayName = SUBCSTRING(rc40_blue_Name); + }; + class 1Rnd_RC40_SmokeRed_shell_RF: 1Rnd_RC40_shell_RF { + displayName = SUBCSTRING(rc40_red_Name); + }; + class 1Rnd_RC40_SmokeGreen_shell_RF: 1Rnd_RC40_shell_RF { + displayName = SUBCSTRING(rc40_green_Name); + }; + class 1Rnd_RC40_SmokeOrange_shell_RF: 1Rnd_RC40_shell_RF { + displayName = SUBCSTRING(rc40_orange_Name); + }; +}; diff --git a/addons/compat_rf/compat_rf_realisticnames/CfgVehicles.hpp b/addons/compat_rf/compat_rf_realisticnames/CfgVehicles.hpp new file mode 100644 index 0000000000..016a569c50 --- /dev/null +++ b/addons/compat_rf/compat_rf_realisticnames/CfgVehicles.hpp @@ -0,0 +1,134 @@ +class CfgVehicles { + class Heli_light_03_dynamicLoadout_base_F; + class B_Heli_light_03_dynamicLoadout_RF: Heli_light_03_dynamicLoadout_base_F { + displayName = SUBCSTRING(heli_light_03_Name); + }; + + class Heli_light_03_unarmed_base_F; + class B_Heli_light_03_unarmed_RF: Heli_light_03_unarmed_base_F { + displayName = SUBCSTRING(heli_light_03_unarmed_Name); + }; + + class I_Heli_light_03_dynamicLoadout_RF; + class I_E_Heli_light_03_dynamicLoadout_RF: I_Heli_light_03_dynamicLoadout_RF { + displayName = SUBCSTRING(heli_light_03_Name); + }; + + class I_Heli_light_03_unarmed_RF; + class I_E_Heli_light_03_unarmed_RF: I_Heli_light_03_unarmed_RF { + displayName = SUBCSTRING(heli_light_03_unarmed_Name); + }; + + class Heli_EC_01A_base_RF; + class Heli_EC_01A_military_base_RF: Heli_EC_01A_base_RF { + displayName = SUBCSTRING(ec_01a_military_Name); + }; + + class Helicopter_Base_H; + class Heli_EC_01_base_RF: Helicopter_Base_H { + displayName = SUBCSTRING(ec_01_base_Name); + }; + + class Heli_EC_01_civ_base_RF: Heli_EC_01_base_RF { + displayName = SUBCSTRING(ec_01_Name); + }; + + class Heli_EC_01A_civ_base_RF: Heli_EC_01A_base_RF { + displayName = SUBCSTRING(ec_01a_Name); + }; + + class Heli_EC_02_base_RF: Heli_EC_01_base_RF { + displayName = SUBCSTRING(ec_02_Name); + }; + + class Heli_EC_03_base_RF: Heli_EC_01_base_RF { + displayName = SUBCSTRING(ec_03_Name); + }; + + class Heli_EC_04_base_RF: Heli_EC_01_base_RF { + displayName = SUBCSTRING(ec_04_Name); + }; + + // Typhoon + class O_Truck_03_fuel_F; + class C_Truck_03_water_rf: O_Truck_03_fuel_F { + displayName = SUBCSTRING(truck_03_water_Name); + }; + + // RAM 1500 (Pickup) + class Offroad_01_unarmed_base_F; + class Pickup_01_base_rf: Offroad_01_unarmed_base_F { + displayName = SUBCSTRING(pickup_01_Name); + }; + class Pickup_fuel_base_rf: Pickup_01_base_rf { + displayName = SUBCSTRING(pickup_01_fuel_Name); + }; + class Pickup_service_base_rf: Pickup_01_base_rf { + displayName = SUBCSTRING(pickup_01_service_Name); + }; + class Pickup_repair_base_rf: Pickup_service_base_rf { + displayName = SUBCSTRING(pickup_01_repair_Name); + }; + class Pickup_comms_base_rf: Pickup_service_base_rf { + displayName = SUBCSTRING(pickup_01_comms_Name); + }; + class Pickup_repair_ig_base_rf: Pickup_repair_base_rf { + displayName = SUBCSTRING(pickup_01_repair_Name); + }; + class Pickup_01_hmg_base_rf: Pickup_01_base_rf { + displayName = SUBCSTRING(pickup_01_hmg_Name); + }; + class Pickup_01_mmg_base_rf: Pickup_01_base_rf { + displayName = SUBCSTRING(pickup_01_mmg_Name); + }; + class Pickup_01_mrl_base_rf: Pickup_01_base_rf { + displayName = SUBCSTRING(pickup_01_mrl_Name); + }; + class Pickup_01_aat_base_rf: Pickup_01_base_rf { + displayName = SUBCSTRING(pickup_01_aa_Name); + }; + class Pickup_covered_base_rf: Pickup_service_base_rf { + displayName = SUBCSTRING(pickup_01_covered_Name); + }; + + class C_IDAP_Pickup_rf; + class C_IDAP_Pickup_water_rf: C_IDAP_Pickup_rf { + displayName = SUBCSTRING(pickup_01_water_Name); + }; + + class StaticMortar; + class CommandoMortar_base_RF: StaticMortar { + displayName = SUBCSTRING(commando_Name); + }; + + class StaticMGWeapon; + class TwinMortar_base_RF: StaticMGWeapon { + displayName = SUBCSTRING(twinmortar_Name); + }; + + class Helicopter_Base_F; + class UAV_RC40_Base_RF: Helicopter_Base_F { + displayName = SUBCSTRING(rc40_base_Name); + }; + class UAV_RC40_Base_Sensor_RF: UAV_RC40_Base_RF { + displayName = SUBCSTRING(rc40_Name); + }; + class UAV_RC40_Base_HE_RF: UAV_RC40_Base_RF { + displayName = SUBCSTRING(rc40_he_Name); + }; + class UAV_RC40_Base_SmokeWhite_RF: UAV_RC40_Base_HE_RF { + displayName = SUBCSTRING(rc40_white_Name); + }; + class UAV_RC40_Base_SmokeBlue_RF: UAV_RC40_Base_HE_RF { + displayName = SUBCSTRING(rc40_blue_Name); + }; + class UAV_RC40_Base_SmokeRed_RF: UAV_RC40_Base_HE_RF { + displayName = SUBCSTRING(rc40_red_Name); + }; + class UAV_RC40_Base_SmokeGreen_RF: UAV_RC40_Base_HE_RF { + displayName = SUBCSTRING(rc40_green_Name); + }; + class UAV_RC40_Base_SmokeOrange_RF: UAV_RC40_Base_HE_RF { + displayName = SUBCSTRING(rc40_orange_Name); + }; +}; diff --git a/addons/compat_rf/compat_rf_realisticnames/CfgWeapons.hpp b/addons/compat_rf/compat_rf_realisticnames/CfgWeapons.hpp new file mode 100644 index 0000000000..c2d9003f11 --- /dev/null +++ b/addons/compat_rf/compat_rf_realisticnames/CfgWeapons.hpp @@ -0,0 +1,111 @@ +class CfgWeapons { + #include "Attachments.hpp" + + class Pistol_Base_F; + class hgun_Glock19_RF: Pistol_Base_F { + displayName = SUBCSTRING(glock19_Name); + }; + class hgun_Glock19_khk_RF: hgun_Glock19_RF { + displayName = SUBCSTRING(glock19_khk_Name); + }; + class hgun_Glock19_Tan_RF: hgun_Glock19_RF { + displayName = SUBCSTRING(glock19_tan_Name); + }; + class hgun_Glock19_auto_RF: hgun_Glock19_RF { + displayName = SUBCSTRING(glock19_auto_Name); + }; + class hgun_Glock19_auto_khk_RF: hgun_Glock19_auto_RF { + displayName = SUBCSTRING(glock19_auto_khk_Name); + }; + class hgun_Glock19_auto_Tan_RF: hgun_Glock19_auto_RF { + displayName = SUBCSTRING(glock19_auto_tan_Name); + }; + + class hgun_DEagle_RF: Pistol_Base_F { + displayName = SUBCSTRING(deagle_Name); + }; + class hgun_DEagle_classic_RF: hgun_DEagle_RF { + displayName = SUBCSTRING(deagle_classic_Name); + }; + class hgun_DEagle_bronze_RF: hgun_DEagle_RF { + displayName = SUBCSTRING(deagle_bronze_Name); + }; + class hgun_DEagle_copper_RF: hgun_DEagle_RF { + displayName = SUBCSTRING(deagle_copper_Name); + }; + class hgun_DEagle_gold_RF: hgun_DEagle_RF { + displayName = SUBCSTRING(deagle_gold_Name); + }; + + class srifle_h6_base_rf; + class srifle_h6_tan_rf: srifle_h6_base_rf { + displayName = SUBCSTRING(h6_tan_Name); + }; + class srifle_h6_oli_rf: srifle_h6_tan_rf { + displayName = SUBCSTRING(h6_oli_Name); + }; + class srifle_h6_blk_rf: srifle_h6_tan_rf { + displayName = SUBCSTRING(h6_blk_Name); + }; + class srifle_h6_digi_rf: srifle_h6_tan_rf { + displayName = SUBCSTRING(h6_digi_Name); + }; + class srifle_h6_gold_rf: srifle_h6_tan_rf { + displayName = SUBCSTRING(h6_gold_Name); + }; + + class srifle_DMR_01_F; + class srifle_DMR_01_black_RF: srifle_DMR_01_F { + displayName = SUBCSTRING(dmr_01_black_Name); + }; + class srifle_DMR_01_tan_RF: srifle_DMR_01_black_RF { + displayName = SUBCSTRING(dmr_01_tan_Name); + }; + + class SMG_01_F; + class SMG_01_black_RF: SMG_01_F { + displayName = SUBCSTRING(smg_01_black_Name); + }; + + class arifle_ash12_base_RF; + class arifle_ash12_blk_RF: arifle_ash12_base_RF { + displayName = SUBCSTRING(ash12_blk_Name); + }; + class arifle_ash12_desert_RF: arifle_ash12_base_RF { + displayName = SUBCSTRING(ash12_desert_Name); + }; + class arifle_ash12_urban_RF: arifle_ash12_base_RF { + displayName = SUBCSTRING(ash12_urban_Name); + }; + class arifle_ash12_wood_RF: arifle_ash12_base_RF { + displayName = SUBCSTRING(ash12_wood_Name); + }; + + class arifle_ash12_GL_base_RF; + class arifle_ash12_GL_blk_RF: arifle_ash12_GL_base_RF { + displayName = SUBCSTRING(ash12_gl_blk_Name); + }; + class arifle_ash12_GL_desert_RF: arifle_ash12_GL_blk_RF { + displayName = SUBCSTRING(ash12_gl_desert_Name); + }; + class arifle_ash12_GL_urban_RF: arifle_ash12_GL_blk_RF { + displayName = SUBCSTRING(ash12_gl_urban_Name); + }; + class arifle_ash12_GL_wood_RF: arifle_ash12_GL_blk_RF { + displayName = SUBCSTRING(ash12_gl_wood_Name); + }; + + class arifle_ash12_LR_base_RF; + class arifle_ash12_LR_blk_RF: arifle_ash12_LR_base_RF { + displayName = SUBCSTRING(ash12_lr_blk_Name); + }; + class arifle_ash12_LR_desert_RF: arifle_ash12_LR_blk_RF { + displayName = SUBCSTRING(ash12_lr_desert_Name); + }; + class arifle_ash12_LR_urban_RF: arifle_ash12_LR_blk_RF { + displayName = SUBCSTRING(ash12_lr_urban_Name); + }; + class arifle_ash12_LR_wood_RF: arifle_ash12_LR_blk_RF { + displayName = SUBCSTRING(ash12_lr_wood_Name); + }; +}; diff --git a/addons/compat_rf/compat_rf_realisticnames/config.cpp b/addons/compat_rf/compat_rf_realisticnames/config.cpp new file mode 100644 index 0000000000..47003c4a42 --- /dev/null +++ b/addons/compat_rf/compat_rf_realisticnames/config.cpp @@ -0,0 +1,23 @@ +#include "script_component.hpp" + +class CfgPatches { + class SUBADDON { + name = COMPONENT_NAME; + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = { + "RF_Data_Loadorder", + "ace_realisticnames" + }; + skipWhenMissingDependencies = 1; + author = ECSTRING(common,ACETeam); + authors[] = {"Mike", "Marc"}; + url = ECSTRING(main,URL); + VERSION_CONFIG; + }; +}; + +#include "CfgMagazines.hpp" +#include "CfgWeapons.hpp" +#include "CfgVehicles.hpp" diff --git a/addons/compat_rf/compat_rf_realisticnames/script_component.hpp b/addons/compat_rf/compat_rf_realisticnames/script_component.hpp new file mode 100644 index 0000000000..b8d0682fa4 --- /dev/null +++ b/addons/compat_rf/compat_rf_realisticnames/script_component.hpp @@ -0,0 +1,3 @@ +#define SUBCOMPONENT realisticnames +#define SUBCOMPONENT_BEAUTIFIED Realistic Names +#include "..\script_component.hpp" diff --git a/addons/compat_rf/compat_rf_realisticnames/stringtable.xml b/addons/compat_rf/compat_rf_realisticnames/stringtable.xml new file mode 100644 index 0000000000..dfd7c8fd07 --- /dev/null +++ b/addons/compat_rf/compat_rf_realisticnames/stringtable.xml @@ -0,0 +1,221 @@ + + + + + EOTech MRDS (Khaki) + + + EOTech MRDS (Tan) + + + C-More Railway (Green, Desert) + + + C-More Railway (Green, Woodland) + + + C-More Railway (Red, Desert) + + + C-More Railway (Red, Woodland) + + + Aimpoint Micro R-1 Reflex + + + Vortex Spitfire Prism + + + Vortex Spitfire Prism (Tan) + + + Vortex Spitfire Prism (Khaki) + + + Glock 19X + + + Glock 19X (Khaki) + + + Glock 19X (Tan) + + + Glock 19X Auto + + + Glock 19X Auto (Khaki) + + + Glock 19X Auto (Tan) + + + Desert Eagle Mark XIX L5 + + + Desert Eagle Mark XIX L5 (Classic) + + + Desert Eagle Mark XIX L5 (Bronze) + + + Desert Eagle Mark XIX L5 (Copper) + + + Desert Eagle Mark XIX L5 (Gold) + + + Hera H6 (Tan) + + + Hera H6 (Olive) + + + Hera H6 (Black) + + + Hera H6 (Digital) + + + Hera H6 (Gold) + + + VS-121 (Black) + + + VS-121 (Tan) + + + Vector SMG (Black) + + + ASh-12 (Black) + + + ASh-12 (Desert) + + + ASh-12 (Urban) + + + ASh-12 (Woodland) + + + ASh-12 GL (Black) + + + ASh-12 GL (Desert) + + + ASh-12 GL (Urban) + + + ASh-12 GL (Woodland) + + + ASh-12 LR (Black) + + + ASh-12 LR (Desert) + + + ASh-12 LR (Urban) + + + ASh-12 LR (Woodland) + + + AW159 Wildcat + + + AW159 Wildcat (Unarmed) + + + H225M Super Cougar HADR + + + H225M Super Cougar Transport + + + H225 Super Puma Transport + + + H225 Super Puma VIP + + + H225M Super Cougar SOCAT + + + H225M Super Cougar CSAR + + + H225 Super Puma SAR + + + Typhoon Water + + + Ram 1500 + + + Ram 1500 (Fuel) + + + Ram 1500 (Services) + + + Ram 1500 (Repair) + + + Ram 1500 (Comms) + + + Ram 1500 (HMG) + + + Ram 1500 (MMG) + + + Ram 1500 (MRL) + + + Ram 1500 (AA) + + + Ram 1500 (Covered) + + + Ram 1500 (Water) + + + RSG60 + + + AMOS + + + Drone40 + + + Drone40 Scout + + + Drone40 HE + + + Drone40 Smoke (White) + + + Drone40 Smoke (Blue) + + + Drone40 Smoke (Red) + + + Drone40 Smoke (Green) + + + Drone40 Smoke (Orange) + + + diff --git a/addons/compat_rf/config.cpp b/addons/compat_rf/config.cpp new file mode 100644 index 0000000000..ab6fb94275 --- /dev/null +++ b/addons/compat_rf/config.cpp @@ -0,0 +1,18 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + name = COMPONENT_NAME; + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"RF_Data_Loadorder"}; + skipWhenMissingDependencies = 1; + author = ECSTRING(common,ACETeam); + authors[] = {"Mike"}; + url = ECSTRING(main,URL); + VERSION_CONFIG; + }; +}; + +#include "CfgWeapons.hpp" diff --git a/addons/compat_rf/script_component.hpp b/addons/compat_rf/script_component.hpp new file mode 100644 index 0000000000..2cc45da490 --- /dev/null +++ b/addons/compat_rf/script_component.hpp @@ -0,0 +1,6 @@ +#define COMPONENT compat_rf +#define COMPONENT_BEAUTIFIED Reaction Forces Compatibility + +#include "\z\ace\addons\main\script_mod.hpp" + +#include "\z\ace\addons\main\script_macros.hpp" From 130348d3a59397c89bf31c540d83be2ce651fd9d Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 9 Jun 2024 18:20:17 -0500 Subject: [PATCH 3/6] Hit Reactions - Prevent AI's hitpart EH running on all clients (#10057) also dynamically add ehs --- addons/hitreactions/XEH_postInit.sqf | 42 ++++++++++++++---------- addons/hitreactions/XEH_preInit.sqf | 4 +-- addons/hitreactions/initSettings.inc.sqf | 6 ++-- 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/addons/hitreactions/XEH_postInit.sqf b/addons/hitreactions/XEH_postInit.sqf index d45d4f3df2..2750ae1159 100644 --- a/addons/hitreactions/XEH_postInit.sqf +++ b/addons/hitreactions/XEH_postInit.sqf @@ -1,27 +1,35 @@ #include "script_component.hpp" -["ace_firedNonPlayer", { - if (GVAR(weaponDropChanceArmHitPlayer) + GVAR(weaponDropChanceArmHitAI) == 0) exitWith {}; - (_this select 6) addEventHandler ["HitPart", { - params ["", "_entity", "", "", "", "", "_selections"]; - - [_entity, _selections] call FUNC(checkWeaponDrop); - }]; -}] call CBA_fnc_addEventHandler; - -["ace_firedPlayer", { - if (GVAR(weaponDropChanceArmHitPlayer) + GVAR(weaponDropChanceArmHitAI) == 0) exitWith {}; - - (_this select 6) addEventHandler ["HitPart", { - params ["", "_entity", "", "", "", "", "_selections"]; - - [_entity, _selections] call FUNC(checkWeaponDrop); - }]; +[QGVAR(updateFiredEHs), { + TRACE_2("updateFiredEH",GVAR(weaponDropChanceArmHitPlayer),GVAR(weaponDropChanceArmHitAI)); + if (GVAR(weaponDropChanceArmHitPlayer) + GVAR(weaponDropChanceArmHitAI) == 0) then { + if (isNil QGVAR(firedEHs)) exitWith {}; + { + _x call CBA_fnc_removeEventHandler; + } forEach GVAR(firedEHs); + GVAR(firedEHs) = nil; + TRACE_1("removed EHs",GVAR(firedEHs)); + } else { + if (!isNil QGVAR(firedEHs)) exitWith {}; + private _firedEH = { + if (!local (_this select 0)) exitWith {}; + (_this select 6) addEventHandler ["HitPart", { + params ["", "_entity", "", "", "", "", "_selections"]; + [_entity, _selections] call FUNC(checkWeaponDrop); + }]; + }; + GVAR(firedEHs) = []; + { + GVAR(firedEHs) pushBack [_x, [_x, _firedEH] call CBA_fnc_addEventHandler]; + } forEach ["ace_firedNonPlayer", "ace_firedPlayer"]; + TRACE_1("added EHs",GVAR(firedEHs)); + }; }] call CBA_fnc_addEventHandler; [QGVAR(dropWeapon), { params ["_unit"]; + TRACE_1("dropWeaponEH",_unit); if !(_unit getVariable [QGVAR(canDropWeapon), true]) exitWith {}; diff --git a/addons/hitreactions/XEH_preInit.sqf b/addons/hitreactions/XEH_preInit.sqf index 9aa0acea0e..296279c7eb 100644 --- a/addons/hitreactions/XEH_preInit.sqf +++ b/addons/hitreactions/XEH_preInit.sqf @@ -8,8 +8,6 @@ PREP_RECOMPILE_END; #include "initSettings.inc.sqf" -ADDON = true; - GVAR(armSelections) = [ "leftshoulder", "rightshoulder", @@ -21,3 +19,5 @@ GVAR(armSelections) = [ "righthand", "rightarm" ]; + +ADDON = true; diff --git a/addons/hitreactions/initSettings.inc.sqf b/addons/hitreactions/initSettings.inc.sqf index 2f51a25647..820f664767 100644 --- a/addons/hitreactions/initSettings.inc.sqf +++ b/addons/hitreactions/initSettings.inc.sqf @@ -15,7 +15,8 @@ private _category = [LELSTRING(common,categoryUncategorized), QUOTE(COMPONENT_BE LSTRING(weaponDropChanceArmHitPlayer_displayName), _category, [0, 1, 0, 2, true], - 1 + 1, + {[QGVAR(updateFiredEHs)] call CBA_fnc_localEvent} ] call CBA_fnc_addSetting; [ @@ -24,5 +25,6 @@ private _category = [LELSTRING(common,categoryUncategorized), QUOTE(COMPONENT_BE LSTRING(weaponDropChanceArmHitAI_displayName), _category, [0, 1, 0, 2, true], - 1 + 1, + {[QGVAR(updateFiredEHs)] call CBA_fnc_localEvent} ] call CBA_fnc_addSetting; From 97bc371f5c55373d809d1a5144d9b462874d7392 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 9 Jun 2024 18:20:39 -0500 Subject: [PATCH 4/6] Common - Add `addPlayerEH` for adding EHs to ace_player (#10056) * Common - Add `addPlayerEH` for adding EHs to ace_player * Update fnc_addPlayerEH.sqf * convert ui to use new func --- addons/common/XEH_PREP.hpp | 1 + addons/common/functions/fnc_addPlayerEH.sqf | 61 +++++++++++++++++++ addons/ui/XEH_PREP.hpp | 1 - addons/ui/XEH_clientInit.sqf | 2 +- .../ui/functions/fnc_handlePlayerChanged.sqf | 32 ---------- 5 files changed, 63 insertions(+), 34 deletions(-) create mode 100644 addons/common/functions/fnc_addPlayerEH.sqf delete mode 100644 addons/ui/functions/fnc_handlePlayerChanged.sqf diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp index 68fdaaf77d..5a2893eeaf 100644 --- a/addons/common/XEH_PREP.hpp +++ b/addons/common/XEH_PREP.hpp @@ -265,6 +265,7 @@ PREP(_handleRequestAllSyncedEvents); PREP(addActionEventHandler); PREP(addActionMenuEventHandler); PREP(addMapMarkerCreatedEventHandler); +PREP(addPlayerEH); PREP(removeActionEventHandler); PREP(removeActionMenuEventHandler); diff --git a/addons/common/functions/fnc_addPlayerEH.sqf b/addons/common/functions/fnc_addPlayerEH.sqf new file mode 100644 index 0000000000..81d030fb62 --- /dev/null +++ b/addons/common/functions/fnc_addPlayerEH.sqf @@ -0,0 +1,61 @@ +#include "..\script_component.hpp" +/* + * Author: PabstMirror + * Adds event handler just to ACE_player + * + * Arguments: + * 0: Key + * 1: Event Type + * 2: Event Code + * 3: Ignore Virtual Units (spectators, virtual zeus, uav RC) (default: false) + * + * Return Value: + * None + * + * Example: + * ["example", "FiredNear", {systemChat str _this}] call ace_common_fnc_addPlayerEH + * + * Public: Yes +*/ +params [["_key", "", [""]], ["_type", "", [""]], ["_code", {}, [{}]], ["_ignoreVirtual", false, [false]]]; +TRACE_3("addPlayerEH",_key,_type,_ignoreVirtual); + +if (isNil QGVAR(playerEventsHash)) then { // first-run init + GVAR(playerEventsHash) = createHashMap; + ["unit", { + params ["_newPlayer", "_oldPlayer"]; + // uav check only applies to direct controlling UAVs from zeus, no effect on normal UAV operation + private _isVirutal = (unitIsUAV _newPlayer) || {getNumber (configOf _newPlayer >> "isPlayableLogic") == 1}; + + TRACE_4("",_newPlayer,_oldPlayer,_isVirutal,count GVAR(playerEventsHash)); + { + _y params ["_type", "_code", "_ignoreVirtual"]; + + private _oldEH = _oldPlayer getVariable [_x, -1]; + if (_oldEH != -1) then { + _oldPlayer removeEventHandler [_type, _oldEH]; + _oldPlayer setVariable [_x, nil]; + }; + + _oldEH = _newPlayer getVariable [_x, -1]; + if (_oldEH != -1) then { continue }; // if respawned then var and EH already exists + if (_ignoreVirtual && _isVirutal) then { continue }; + + private _newEH = _newPlayer addEventHandler [_type, _code]; + _newPlayer setVariable [_x, _newEH]; + } forEach GVAR(playerEventsHash); + }, false] call CBA_fnc_addPlayerEventHandler; +}; + + +_key = format [QGVAR(playerEvents_%1), toLower _key]; +if (_key in GVAR(playerEventsHash)) exitWith { ERROR_1("bad key %1",_this); }; + +GVAR(playerEventsHash) set [_key, [_type, _code, _ignoreVirtual]]; + +if (isNull ACE_player) exitWith {}; +if (_ignoreVirtual && {(unitIsUAV ACE_player) || {getNumber (configOf ACE_player >> "isPlayableLogic") == 1}}) exitWith {}; + +// Add event now +private _newEH = ACE_player addEventHandler [_type, _code]; +ACE_player setVariable [_key, _newEH]; diff --git a/addons/ui/XEH_PREP.hpp b/addons/ui/XEH_PREP.hpp index f7edabcc3f..436e59361c 100644 --- a/addons/ui/XEH_PREP.hpp +++ b/addons/ui/XEH_PREP.hpp @@ -1,5 +1,4 @@ PREP(compileConfigUI); -PREP(handlePlayerChanged); PREP(handleSpeedIndicator); PREP(moduleInit); PREP(onAnimChanged); diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index 1ef328b176..d7f1df73fb 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -48,4 +48,4 @@ GVAR(elementsSet) = call CBA_fnc_createNamespace; }] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler; -["unit", LINKFUNC(handlePlayerChanged), true] call CBA_fnc_addPlayerEventHandler; +[QUOTE(ADDON), "AnimChanged", LINKFUNC(onAnimChanged)] call EFUNC(common,addPlayerEH); diff --git a/addons/ui/functions/fnc_handlePlayerChanged.sqf b/addons/ui/functions/fnc_handlePlayerChanged.sqf deleted file mode 100644 index 94f317a18c..0000000000 --- a/addons/ui/functions/fnc_handlePlayerChanged.sqf +++ /dev/null @@ -1,32 +0,0 @@ -#include "..\script_component.hpp" -/* - * Author: veteran29 - * Handles switching units. - * - * Arguments: - * 0: New Unit - * 1: Old Unit - * - * Return Value: - * None - * - * Example: - * [newbob, oldbob] call ace_ui_fnc_handlePlayerChanged - * - * Public: No - */ -params ["_newUnit", "_oldUnit"]; -TRACE_2("unit changed",_newUnit,_oldUnit); - -if (!isNull _oldUnit) then { - _oldUnit removeEventHandler ["AnimChanged", _oldUnit getVariable [QGVAR(animHandler), -1]]; - _oldUnit setVariable [QGVAR(animHandler), nil]; - TRACE_1("remove old",_oldUnit getVariable QGVAR(animHandler)); -}; - -// Don't add a new EH if the unit respawned -if (_newUnit getVariable [QGVAR(animHandler), -1] == -1) then { - private _animHandler = _newUnit addEventHandler ["AnimChanged", LINKFUNC(onAnimChanged)]; - TRACE_1("add new",_animHandler); - _newUnit setVariable [QGVAR(animHandler), _animHandler]; -}; From 46e840b5a2896c041d733dbe986bb8d345631717 Mon Sep 17 00:00:00 2001 From: Apricot <50947830+Apricot-ale@users.noreply.github.com> Date: Mon, 10 Jun 2024 08:21:00 +0900 Subject: [PATCH 5/6] Translations and Compat - Improve Japanese and CDLC WS/RF localization (#10058) * Update Japanese * rename smoke * Leo2SG * Rename FAL Para to FAL OSW Para * Fix wood as woodland in japanese * change camo to aaf camo in jp * Rename RF R1 to equalize with WS R1 * Add dedicated name config VRCO-S * Add stringtable for VRCO-S --- .../compat_rf_realisticnames/Attachments.hpp | 2 +- .../compat_rf_realisticnames/stringtable.xml | 78 ++++++++++++++++++- .../compat_ws_realisticnames/stringtable.xml | 68 ++++++++++++---- addons/cookoff/stringtable.xml | 16 +++- addons/grenades/stringtable.xml | 1 + addons/hitreactions/stringtable.xml | 4 +- addons/medical_treatment/stringtable.xml | 4 + addons/realisticnames/stringtable.xml | 23 ++++-- addons/zeus/stringtable.xml | 11 ++- 9 files changed, 179 insertions(+), 28 deletions(-) diff --git a/addons/compat_rf/compat_rf_realisticnames/Attachments.hpp b/addons/compat_rf/compat_rf_realisticnames/Attachments.hpp index 6f6f4f9a17..9915ad1d44 100644 --- a/addons/compat_rf/compat_rf_realisticnames/Attachments.hpp +++ b/addons/compat_rf/compat_rf_realisticnames/Attachments.hpp @@ -37,5 +37,5 @@ class optic_VRCO_khk_RF: optic_VRCO_RF { displayName = SUBCSTRING(optic_vrco_khk_Name); }; class optic_VRCO_pistol_RF: optic_VRCO_RF { - displayName = SUBCSTRING(optic_vrco_Name); + displayName = SUBCSTRING(optic_vrco_pistol_Name); }; diff --git a/addons/compat_rf/compat_rf_realisticnames/stringtable.xml b/addons/compat_rf/compat_rf_realisticnames/stringtable.xml index dfd7c8fd07..994739faff 100644 --- a/addons/compat_rf/compat_rf_realisticnames/stringtable.xml +++ b/addons/compat_rf/compat_rf_realisticnames/stringtable.xml @@ -3,219 +3,295 @@ EOTech MRDS (Khaki) + EOTech MRDS (カーキ) EOTech MRDS (Tan) + EOTech MRDS (タン) C-More Railway (Green, Desert) + C-More レイルウェイ (グリーン、砂漠迷彩) C-More Railway (Green, Woodland) + C-More レイルウェイ (グリーン、森林迷彩) C-More Railway (Red, Desert) + C-More レイルウェイ (グリーン、砂漠迷彩) C-More Railway (Red, Woodland) + C-More レイルウェイ (グリーン、森林迷彩) - Aimpoint Micro R-1 Reflex + Aimpoint Micro R-1 + Aimpoint マイクロ R-1 Vortex Spitfire Prism + Vortex スピットファイア プリズム Vortex Spitfire Prism (Tan) + Vortex スピットファイア プリズム (タン) Vortex Spitfire Prism (Khaki) + Vortex スピットファイア プリズム (カーキ) + + + Vortex Spitfire Prism (Pistol) + Vortex スピットファイア プリズム (ピストル用) Glock 19X + グロック 19X Glock 19X (Khaki) + グロック 19X (カーキ) Glock 19X (Tan) + グロック 19X (タン) Glock 19X Auto + グロック 19X オート Glock 19X Auto (Khaki) + グロック 19X オート (カーキ) Glock 19X Auto (Tan) + グロック 19X オート (タン) Desert Eagle Mark XIX L5 + デザートイーグル Mark XIX L5 Desert Eagle Mark XIX L5 (Classic) + デザートイーグル Mark XIX L5 (クラシック) Desert Eagle Mark XIX L5 (Bronze) + デザートイーグル Mark XIX L5 (ブロンズ) Desert Eagle Mark XIX L5 (Copper) + デザートイーグル Mark XIX L5 (カッパー) Desert Eagle Mark XIX L5 (Gold) + デザートイーグル Mark XIX L5 (ゴールド) Hera H6 (Tan) + ヘラ H6 (タン) Hera H6 (Olive) + ヘラ H6 (オリーブ) Hera H6 (Black) + ヘラ H6 (ブラック) Hera H6 (Digital) + ヘラ H6 (AAF迷彩) Hera H6 (Gold) + ヘラ H6 (ゴールド) VS-121 (Black) + VS-121 (ブラック) VS-121 (Tan) + VS-121 (タン) Vector SMG (Black) + ベクター SMG (ブラック) ASh-12 (Black) + ASh-12 (ブラック) ASh-12 (Desert) + ASh-12 (砂漠迷彩) ASh-12 (Urban) + ASh-12 (市街地迷彩) ASh-12 (Woodland) + ASh-12 (森林迷彩) ASh-12 GL (Black) + ASh-12 GL (ブラック) ASh-12 GL (Desert) + ASh-12 GL (砂漠迷彩) ASh-12 GL (Urban) + ASh-12 GL (市街地迷彩) ASh-12 GL (Woodland) + ASh-12 GL (森林迷彩) ASh-12 LR (Black) + ASh-12 LR (ブラック) ASh-12 LR (Desert) + ASh-12 LR (砂漠迷彩) ASh-12 LR (Urban) + ASh-12 LR (市街地迷彩) ASh-12 LR (Woodland) + ASh-12 LR (森林迷彩) AW159 Wildcat + AW159 ワイルドキャット AW159 Wildcat (Unarmed) + AW159 ワイルドキャット (非武装) H225M Super Cougar HADR + H225M シュペル クーガー HADR H225M Super Cougar Transport + H225M シュペル クーガー 輸送 H225 Super Puma Transport + H225 シュペル ピューマ 輸送 H225 Super Puma VIP + H225 シュペル ピューマ VIP H225M Super Cougar SOCAT + H225M シュペル クーガー SOCAT H225M Super Cougar CSAR + H225M シュペル クーガー CSAR H225 Super Puma SAR + H225 シュペル ピューマ SAR Typhoon Water + タイフーン 給水 Ram 1500 + ラム 1500 Ram 1500 (Fuel) + ラム 1500 (燃料) Ram 1500 (Services) + ラム 1500 (サービス) Ram 1500 (Repair) + ラム 1500 (修理) Ram 1500 (Comms) + ラム 1500 (通信) Ram 1500 (HMG) + ラム 1500 (HMG) Ram 1500 (MMG) + ラム 1500 (MMG) Ram 1500 (MRL) + ラム 1500 (MRL) Ram 1500 (AA) + ラム 1500 (対空) Ram 1500 (Covered) + ラム 1500 (カバー) Ram 1500 (Water) + ラム 1500 (給水) RSG60 + RSG60 AMOS + AMOS Drone40 + ドローン40 Drone40 Scout + ドローン40 偵察 Drone40 HE + ドローン40 榴弾 Drone40 Smoke (White) + ドローン40 発煙 (白) Drone40 Smoke (Blue) + ドローン40 発煙 (青) Drone40 Smoke (Red) + ドローン40 発煙 (赤) Drone40 Smoke (Green) + ドローン40 発煙 (緑) Drone40 Smoke (Orange) + ドローン40 発煙 (橙) diff --git a/addons/compat_ws/compat_ws_realisticnames/stringtable.xml b/addons/compat_ws/compat_ws_realisticnames/stringtable.xml index 26504b497f..30b53b7926 100644 --- a/addons/compat_ws/compat_ws_realisticnames/stringtable.xml +++ b/addons/compat_ws/compat_ws_realisticnames/stringtable.xml @@ -26,7 +26,7 @@ AA-12 (뱀 위장) AA12 (Schlange) AA12 (Serpe) - AA12 (ヘビ柄) + AA12 (ヘビ柄迷彩) AA12 (Змея) AA12 (Serpiente) @@ -45,7 +45,7 @@ 갈릴 ARM (낡음) Galil ARM (Alt) Galil ARM (Vecchio) - ガリル ARM (使い古し) + ガリル ARM (古びた) Galil ARM (Старый) Galil ARM (Ancien) Galil ARM (Vieja) @@ -65,7 +65,7 @@ GLX-160 (뱀 위장) GLX 160 (Schlange) GLX-160 (Serpe) - GLX 160 (ヘビ柄) + GLX 160 (ヘビ柄迷彩) GLX 160 (Змея) GLX 160 (Serpiente) @@ -94,7 +94,7 @@ GLX-160 (위장) GLX 160 (Tarn) GLX-160 (Mimetica) - GLX 160 (迷彩) + GLX 160 (AAF迷彩) GLX 160 (Камуфляж) GLX 160 (Camo) GLX 160 (Camo) @@ -124,7 +124,7 @@ Mk.14 Mod 1 EBR (뱀 위장) Mk14 Mod 1 EBR (Schlange) Mk14 Mod 1 EBR (Serpe) - Mk14 Mod 1 EBR (ヘビ柄) + Mk14 Mod 1 EBR (ヘビ柄迷彩) Mk14 Mod 1 EBR (Змея) Mk14 Mod 1 EBR (Serpiente) @@ -142,7 +142,7 @@ 벡터 SS-77 (위장) Vektor SS-77 (Tarn) Vektor SS-77 (Mimetica) - ヴェクター SS-77 (迷彩) + ヴェクター SS-77 (AAF迷彩) Vektor SS-77 (Камуфляж) Vektor SS-77 (Camo) Vektor SS-77 (Camo) @@ -192,7 +192,7 @@ 벡터 SS-77 단축형 (뱀 위장) Vektor SS-77 Compact (Schlange) Vektor SS-77 Compatto (Serpe) - ヴェクター SS-77 コンパクト (ヘビ柄) + ヴェクター SS-77 コンパクト (ヘビ柄迷彩) Vektor SS-77 Compact (змея) Vektor SS-77 Compacta (Serpiente) @@ -201,7 +201,7 @@ FN FAL 50.00 (목재) FN FAL 50.00 (Holz) FN FAL 50.00 (Legno) - FN FAL 50.00 (森林迷彩) + FN FAL 50.00 (木製) FN FAL 50.00 (лесной) FN FAL 50.00 (Bois) FN FAL 50.00 (Madera) @@ -211,7 +211,7 @@ FN FAL 50.00 GL (목재) FN FAL 50.00 GL (Holz) FN FAL 50.00 GL (Legno) - FN FAL 50.00 GL (森林迷彩) + FN FAL 50.00 GL (木製) FN FAL 50.00 GL (лесной) FN FAL 50.00 GL (Bois) FN FAL 50.00 GL (Madera) @@ -257,17 +257,19 @@ FN FAL 50.00 (Jungla) - FN FAL 50.00 Para + FN FAL OSW Para + FN FAL OSW パラ - FN FAL 50.00 Para (Snake) + FN FAL OSW Para (Snake) + FN FAL OSW パラ (ヘビ柄迷彩) Vektor R4 벡터 R4 Vektor R4 Vektor R4 - ヴェクター R5 + ヴェクター R4 Vektor R4 Vektor R4 Vektor R4 @@ -297,7 +299,7 @@ 벡터 R5 카빈 (뱀 위장) Vektor R5 Carbine (Schlange) Vektor R5 Carabina (Serpe) - ヴェクター R5 カービン (ヘビ柄) + ヴェクター R5 カービン (ヘビ柄迷彩) Vektor R5 Carbine (Змея) Vektor R5 Carabina (Serpiente) @@ -306,7 +308,7 @@ 벡터 R5 카빈 GL (뱀 위장) Vektor R5 Carbine GL (Schlange) Vektor R5 Carabina GL (Serpe) - ヴェクター R5 カービン GL (ヘビ柄) + ヴェクター R5 カービン GL (ヘビ柄迷彩) Vektor R5 Carbine GL (Змея) Vektor R5 Carabina GL (Serpiente) @@ -456,117 +458,155 @@ GM6 Lynx (Snake) + GM6 リンクス (ヘビ柄迷彩) RPG-32 (Sand) + RPG-32 (サンド) ELCAN SpecterOS (Hex) + ELCAN SpecterOS (六角形迷彩) EOTech XPS3 (Snake) + EOTech XPS3 (ヘビ柄迷彩) EOTech XPS3 SMG (Snake) + EOTech XPS3 SMG (ヘビ柄迷彩) Leupold Mark 4 HAMR (Arid) + Leupold Mark 4 HAMR (乾燥地帯迷彩) Leupold Mark 4 HAMR (Lush) + Leupold Mark 4 HAMR (緑地迷彩) Leupold Mark 4 HAMR (Sand) + Leupold Mark 4 HAMR (サンド) Leupold Mark 4 HAMR (Snake) + Leupold Mark 4 HAMR (ヘビ柄迷彩) Aimpoint Micro R-1 (High, Black) + Aimpoint マイクロ R-1 (ハイマウント、ブラック) Aimpoint Micro R-1 (High, Khaki) + Aimpoint マイクロ R-1 (ハイマウント、カーキ) Aimpoint Micro R-1 (High, Sand) + Aimpoint マイクロ R-1 (ハイマウント、サンド) Aimpoint Micro R-1 (High, Snake) + Aimpoint マイクロ R-1 (ハイマウント、ヘビ柄迷彩) Aimpoint Micro R-1 (High, Arid) + Aimpoint マイクロ R-1 (ハイマウント、乾燥地帯迷彩) Aimpoint Micro R-1 (High, Lush) + Aimpoint マイクロ R-1 (ハイマウント、緑地迷彩) Aimpoint Micro R-1 (High, Black/Sand) + Aimpoint マイクロ R-1 (ハイマウント、ブラック/サンド) Aimpoint Micro R-1 (Low, Black) + Aimpoint マイクロ R-1 (ローマウント、ブラック) Aimpoint Micro R-1 (Low, Khaki) + Aimpoint マイクロ R-1 (ローマウント、カーキ) Aimpoint Micro R-1 (Low, Sand) + Aimpoint マイクロ R-1 (ローマウント、サンド) Aimpoint Micro R-1 (Low, Snake) + Aimpoint マイクロ R-1 (ローマウント、ヘビ柄迷彩) Aimpoint Micro R-1 (Low, Arid) + Aimpoint マイクロ R-1 (ローマウント、乾燥地帯迷彩) Aimpoint Micro R-1 (Low, Lush) + Aimpoint マイクロ R-1 (ローマウント、緑地迷彩) Burris XTR II (Snake) + Burris XTR II (ヘビ柄迷彩) Badger IFV (ATGM) + バジャー IFV (ATGM) Badger IFV (Command) + バジャー IFV (指揮) Badger IFV (Mortar) + バジャー IFV (迫撃砲) KamAZ (Zu-23-2) + KamAZ (Zu-23-2) KamAZ Cargo + KamAZ 貨物 KamAZ Repair + KamAZ 修理 KamAZ Racing + KamAZ レース仕様 KamAZ Ammo + KamAZ 弾薬 KamAZ Flatbed + KamAZ フラットベッド AW101 Merlin + AW101 マーリン BM-2T Stalker (Bumerang-BM) + BM-2T ストーカー (ブーメランク-BM) Otokar ARMA (HMG) + オトカ アルマ (HMG) Otokar ARMA (Unarmed) + オトカ アルマ (非武装) Ka-60 Kasatka (UP) + Ka-60 カサートカ (UP) Ka-60 Kasatka (UP, Unarmed) + Ka-60 カサートカ (UP、非武装) diff --git a/addons/cookoff/stringtable.xml b/addons/cookoff/stringtable.xml index c068edb811..504dc797ac 100644 --- a/addons/cookoff/stringtable.xml +++ b/addons/cookoff/stringtable.xml @@ -18,21 +18,27 @@ Enable vehicle cook-off fire + 車両の誘爆火災を有効化 Enables vehicle cook-off fire effects.\nThis doesn't include ammunition detonations. + 車両の誘爆火災エフェクトを有効化します。\nこれには弾薬の爆発は含まれません。 Vehicle cook-off fire duration multiplier + 車両の誘爆火災の持続時間倍率 Multiplier for how long vehicle cook-off fire lasts.\nSetting to 0 will disable vehicle cook-off fire. + 車両の誘爆火災の持続時間をどのくらいの長さにするかの倍率。\n0に設定すると車両の誘爆火災が無効化されます。 Vehicle cook-off fire probability multiplier + 車両の誘爆火災の可能性倍率 Multiplier for vehicle cook-off fire probability. Higher value results in higher cook-off probability.\nSetting to 0 will disable vehicle cook-off fire. + 車両の誘爆火災がどのくらいの可能性で発生するかの倍率。高い数値は高い誘爆の可能性につながります。\n0に設定すると車両の誘爆火災が無効化されます。 Destroy vehicles after cook-off @@ -49,7 +55,7 @@ Controls whether vehicles will always be destroyed after cooking off. - 誘爆後に車両を破壊するかどうかを設定する。 + 誘爆の終了後に車両を必ず完全破壊するかどうかを設定します。 Kontroluje, czy pojazdy będą zawsze niszczone po samozapłonie. Steuert, ob Fahrzeuge nach dem Durchzünden immer zerstört werden. Determina se veicoli saranno sempre distrutti dall'esplosione delle munizioni. @@ -61,9 +67,11 @@ Enable vehicle ammo cook-off + 車両弾薬の誘爆を有効化 Enables cooking off of vehicle ammunition. Fires ammunition projectiles while vehicle has ammunition remaining.\nThis doesn't include fire effects. + 車両弾薬の誘爆を有効化します。車両に積載されたままの弾薬と弾頭が発射されます。\nこれには火災エフェクトは含まれません。 Enable ammo box cook-off @@ -82,16 +90,19 @@ Enables cooking off of ammo boxes.\nThis doesn't include fire effects. + 弾薬箱の誘爆を有効化します。\nこれには火災エフェクトは含まれません。 Ammo cook-off duration multiplier + 弾薬の誘爆の持続時間倍率 Multiplier for how long ammunition cook-off lasts, for both vehicles and ammo boxes.\nSetting to 0 will disable ammo cook-off for both vehicles and ammo boxes. + 弾薬の誘爆の持続時間をどのくらいの長さにするかの倍率。車両弾薬と弾薬箱どちらにも影響します。\n0に設定すると弾薬の誘爆が無効化されます。 Enable ammo removal during cook-off - 誘爆中の弾薬除去を有効/無効にする + 誘爆による弾薬の除去を有効化 Retirer les munitions durant l'auto-inflammation Aktiviert/Deaktiviert Entfernung der Munition beim Durchzünden Abilita rimozione munizioni dopo l'esplosione @@ -105,6 +116,7 @@ Removes all ammo during cook-off. Retire des munitions des véhicules durant une auto-inflammation. Entfernt Munition während dem Durchzünden der Munition eines Fahrzeuges. + 誘爆によって全ての弾薬を除去します。 diff --git a/addons/grenades/stringtable.xml b/addons/grenades/stringtable.xml index ec009fa2ba..eab327d8cf 100644 --- a/addons/grenades/stringtable.xml +++ b/addons/grenades/stringtable.xml @@ -105,6 +105,7 @@ Can't roll this grenade, switched to %1 + この手榴弾は転がせません、 %1 に切り替えます M84 Stun Grenade diff --git a/addons/hitreactions/stringtable.xml b/addons/hitreactions/stringtable.xml index 8ff2316dec..a3f2717451 100644 --- a/addons/hitreactions/stringtable.xml +++ b/addons/hitreactions/stringtable.xml @@ -6,7 +6,7 @@ Danno Minimo per far cadere 觸發倒下前最低需受到多少傷害 触发倒下前最低需受到多少伤害 - 崩れ落ちるまでの最低損傷値 + 転倒が発生するダメージの最低値 넘어질 때 발생하는 최소 피해량 Mindestschaden, um Sturz auszulösen Minimalne obrażenie, żeby aktywować spadanie @@ -19,9 +19,11 @@ Player Weapon Drop Chance (Arm Hit) + プレイヤーが武器を落とす確率 (腕部への被弾) AI Weapon Drop Chance (Arm Hit) + AIが武器を落とす確率 (腕部への被弾) diff --git a/addons/medical_treatment/stringtable.xml b/addons/medical_treatment/stringtable.xml index 477c18d019..a8bf4159a8 100644 --- a/addons/medical_treatment/stringtable.xml +++ b/addons/medical_treatment/stringtable.xml @@ -79,6 +79,7 @@ Enabled & Can Diagnose Death/Cardiac Arrest [Directly] + 有効 & 死亡/心停止状態を診断可能 [直接的に] Advanced Medication @@ -4158,6 +4159,7 @@ %1 is unconscious + %1 は意識がない %1 is not responsive, taking shallow gasps and convulsing @@ -4173,6 +4175,7 @@ %1 is in cardiac arrest + %1 は心停止している %1 is not responsive, motionless and cold @@ -4188,6 +4191,7 @@ %1 is dead + %1 は死亡している You checked %1 diff --git a/addons/realisticnames/stringtable.xml b/addons/realisticnames/stringtable.xml index 47c5f27c68..f01104ebab 100644 --- a/addons/realisticnames/stringtable.xml +++ b/addons/realisticnames/stringtable.xml @@ -46,7 +46,7 @@ XM312 (Alta) XM312 (Magasított) XM312 (Alto) - XM312 (高) + XM312 (ハイマウント) XM312 (높음) XM312重機槍 (高射腳架) XM312(高) @@ -97,7 +97,7 @@ XM307 (Alta) XM307 (Magasított) XM307 (Alto) - XM307 (高) + XM307 (ハイマウント) XM307 (높음) XM307榴彈機槍 (高射腳架) XM307(高) @@ -556,7 +556,7 @@ Leopard 2SG Leopard 2SG Leopard 2SG - レオパルト 2SG + レオパルト2SG 레오파르트 2SG "豹2型新加坡版"主戰坦克 "豹"2 新加坡版 @@ -701,6 +701,7 @@ KamAZ Water KamAZ Água + KamAZ 給水 KamAZ MRL @@ -1662,10 +1663,12 @@ CZ 581 CZ 581 + CZ 581 CZ 581 (Sawed-Off) CZ 581 (Cano serrado) + CZ 581 (ソードオフ) FNX-45 Tactical (Green) @@ -2333,7 +2336,7 @@ Scorpion Evo 3 A1 Scorpion Evo 3 A1 Scorpion Evo 3 A1 - スコーピオン エボ 3 A1 + スコーピオン Evo 3 A1 스콜피온 에보 3 A1 "蠍式"Evo 3 A1衝鋒槍 Evo 3 A1 "蝎" @@ -2384,7 +2387,7 @@ Stoner 99 LMG Stoner 99 LMG Stoner 99 LMG - ストーナー 99 LMG + ストーナー99 LMG 스토너 99 LMG 斯通納99輕機槍 斯通纳 99 @@ -3071,14 +3074,17 @@ Type 115 (Black) Type 115 (Preto) + Type 115 (ブラック) Type 115 (Green Hex) Type 115 (Verde Hex) + Type 115 (緑六角形迷彩) Type 115 (Hex) Type 115 (Hex) + Type 115 (六角形迷彩) QBZ-95-1 (Black) @@ -3675,7 +3681,7 @@ Polaris DAGOR (light) Polaris DAGOR (leicht) - ポラリス DAGOR (軽) + ポラリス DAGOR (軽装) "北極星"先進佈署越野車 (輕型) "北极星"(轻型) Polaris DAGOR (leggero) @@ -3867,14 +3873,17 @@ UTG Defender 126 UTG Defender 126 + UTG ディフェンダー 126 EOTech MRDS EOTech MRDS + EOTech MRDS EOTech MRDS (Black) EOTech MRDS (Preto) + EOTech MRDS (ブラック) Leupold Mark 4 HAMR @@ -4308,7 +4317,7 @@ KAHLES Helia (Tan) KAHLES Helia (Tan) KAHLES Helia(沙色) - KAHLES Helia (タン) + KAHLES ヘリア (タン) KAHLES Helia (Tan) KAHLES Helia (Marroncino) KAHLES Helia (пустынный) diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index a1ae4d554e..aaa9fdd8c4 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -1500,7 +1500,7 @@ Fill from top to bottom Von oben nach unten befüllen Remplir de haut en bas - 上から下まで占拠 + 上から下へと占拠 Riempi dall'alto al basso 由上而下進行填滿 由上而下进行填满 @@ -2005,30 +2005,37 @@ +MAJ pour forcer (Disponible uniquement sur les alignements N/S ou E/O) +SHIFT zum Erzwingen (Kann nur nach N/S oder E/W legen) +SHIFT per forzare (Può piazzare solo N/S o E/O - +SHIFTキー で強制的に敷設 (北/南または東/西方向にのみ配置可能) + =+SHIFTキー で強制的に敷設 (北/南または東/西方向にのみ配置可能) +SHIFT на принудительное (может укладываться только на Север/Юг или Восток/Запад) +SHIFT para forzar (Puede solo colocar en N/S or E/O) Forces the spectator interface preventing the player from closing it with the Escape key + 観戦インターフェイスを強制し、ユーザーがEscキーでも閉じられないようにします。 Hide player + プレイヤーを隠す Hides the player by making them invisible, invulnerable, muted, and removing them from their group + 透明化、無敵化、ミュート、グループからの除外を行いプレーヤーを隠します Sets the sides that are available to spectate + 指定の陣営を観戦可能に設定します White Hot + 白=熱源 Black Hot + 黒=熱源 Toggle All + 全てを切り替え From d66c3904d03ab5086c31e88d7fd41428b5800d6a Mon Sep 17 00:00:00 2001 From: Nilia119 <88453817+Nilia119@users.noreply.github.com> Date: Mon, 10 Jun 2024 01:21:36 +0200 Subject: [PATCH 6/6] Translation - Add Missing German (#9975) * Added Missing German Translation * Improved German Translation * Update Medical_treatment * Update Medical_treatment stringtable.xml * Update addons/common/stringtable.xml Co-authored-by: BaerMitUmlaut * Update stringtable.xml * Update stringtable.xml * Update stringtable.xml * Update stringtable.xml * Update addons/arsenal/stringtable.xml --------- Co-authored-by: BaerMitUmlaut Co-authored-by: Mike-MF --- addons/arsenal/stringtable.xml | 2 ++ addons/cargo/stringtable.xml | 5 +++++ addons/common/stringtable.xml | 3 +++ .../compat_cup_weapons_csw/stringtable.xml | 17 +++++++++++++++++ .../stringtable.xml | 2 ++ addons/fieldmanual/stringtable.xml | 4 ++++ addons/hearing/stringtable.xml | 2 ++ addons/killtracker/stringtable.xml | 5 ++++- addons/maptools/stringtable.xml | 18 ++++++++++++++++++ addons/medical_treatment/stringtable.xml | 4 ++++ addons/medical_vitals/stringtable.xml | 3 +++ addons/overheating/stringtable.xml | 6 ++++++ 12 files changed, 70 insertions(+), 1 deletion(-) diff --git a/addons/arsenal/stringtable.xml b/addons/arsenal/stringtable.xml index 25ce1f75ae..cf858ec24d 100644 --- a/addons/arsenal/stringtable.xml +++ b/addons/arsenal/stringtable.xml @@ -1245,6 +1245,7 @@ Интегрирован тепловизор. 열화상 내장 Thermique intégrée + Thermal integriert Térmica integrada @@ -1254,6 +1255,7 @@ Интегрирован тепловизор и осн.прицел. 열화상과 주무기 내장 Thermique et primaire intégrés + Thermal und in Primärwaffe integriert Térmica y Primaria integrada diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index e74fd742c2..4e8d707f61 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -40,6 +40,7 @@ 配置する 배치하기 Déployer + Aufstellen Desplegar @@ -288,6 +289,7 @@ Загружаем %1 в %2... %1을(를) %2에 싣는 중... Chargement %1 dans %2... + %1 wird in %2 geladen... Unloading %1 from %2... @@ -297,6 +299,7 @@ Выгружаем %1 из %2... %1을(를) %2(으)로부터 내리는 중... Déchargement %1 de %2... + %1 wird von %2 entladen... %1<br/>could not be loaded @@ -587,6 +590,7 @@ 配置機能を有効化 배치 활성화 Permettre le placement + Aktiviere Aufbauen Habilitar despliegue @@ -596,6 +600,7 @@ 配置機能を介して貨物アイテムを降ろすことが出来るかどうかを制御します。 배치 방법을 통해 화물 아이템을 내릴 수 있는지 여부를 제어합니다. Contrôler si les éléments de cargaison peuvent être déchargés via la méthode de déploiement. + Steuert, ob Frachtgegenstände über die Aufbaumethode entladen werden können. Controla si los objetos de la carga pueden ser descargados mediante el método de despliegue. diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index f49e2cedde..96ad037cc1 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -1834,6 +1834,7 @@ 무기 흔들림 Oscillation de l'arme Колебание оружия + Waffen schwanken Oscilación del arma Oscillazione arma @@ -1843,6 +1844,7 @@ 무기 흔들림 추가 Activer l'oscillation de l'arme Включить колебание оружия + Aktiviere Waffen schwanken Habilitar oscilación del arma Abilita oscillazione arma @@ -1852,6 +1854,7 @@ 흔들림 계수, 자세, 피로도, 건강 상태 등의 요인에 영향을 받는 무기 흔들림을 활성화합니다.\n이 설정을 비활성화하면 바닐라 또는 다른 모드의 흔들림으로 대체됩니다. Active l'oscillation de l'arme influencé par les facteurs d'oscillation, tels que la position, la fatigue et l'état de santé.\nLa désactivation de ce paramètre reportera l'oscillation à vanilla ou à d'autres mods. Активируйте колебание оружия в зависимости от таких факторов, как стойка, усталость и состояние здоровья.\nОтключение этого параметра приведет к переносу раскачивания на vanilla или другие моды. + Ermöglicht die Beeinflussung des Waffen-Schwankens durch Beeinflussungsfaktoren wie Haltung, Müdigkeit und Gesundheitszustand.\nDie Deaktivierung dieser Einstellung erlaubt die Beeinflussung durch Vanilla oder andere Mods. Habilita la oscilación del arma afectado por factores como la postura, la fatiga y la condición médica.\nDeshabilitar esta opción hará que el comportamiento de la oscilación venga definido por Vanilla o por otros mods. Abilita l'oscillazione ACE, influenzata da fattori come postura, fatica e condizione medica.\nDisabilitare questa impostazione farà controllare l'oscillazione al gioco vanilla o altre mod. diff --git a/addons/compat_cup_weapons/compat_cup_weapons_csw/stringtable.xml b/addons/compat_cup_weapons/compat_cup_weapons_csw/stringtable.xml index 4ce86a2606..112c335638 100644 --- a/addons/compat_cup_weapons/compat_cup_weapons_csw/stringtable.xml +++ b/addons/compat_cup_weapons/compat_cup_weapons_csw/stringtable.xml @@ -6,6 +6,7 @@ [CSW] AGS30 ベルト [CSW] Лента AGS 30 [CSW] AGS-30 벨트 + [CSW] AGS30 Gurt [CSW] Cinta de AGS30 @@ -13,6 +14,7 @@ [CSW] Mk19 ベルト [CSW] Лента Mk19 [CSW] Mk.19 벨트 + [CSW] MK19 Gurt [CSW] Cinta de MK19 @@ -20,6 +22,7 @@ [CSW] TOW チューブ [CSW] Туба TOW [CSW] TOW 튜브 + [CSW] TOW Rohr [CSW] Tubo de TOW @@ -27,6 +30,7 @@ [CSW] TOW2 チューブ [CSW] Туба TOW-2 [CSW] TOW2 튜브 + [CSW] TOW2 Rohr [CSW] Tubo de TOW2 @@ -34,6 +38,7 @@ [CSW] PG-9 砲弾 [CSW] Снаряд ПГ-9 [CSW] PG-9 대전차고폭탄 + [CSW] PG-9 Rakete [CSW] Carga de PG-9 @@ -41,6 +46,7 @@ [CSW] OG-9 砲弾 [CSW] Снаряд OГ-9 [CSW] OG-9 고폭파편탄 + [CSW] OG-9 Rakete [CSW] Carga de OG-9 @@ -49,6 +55,7 @@ [CSW] M1 HE [CSW] M1 고폭탄 [CSW] M1 HE + [CSW] M1 HE [CSW] HE de M1 @@ -57,6 +64,7 @@ [CSW] M84 Дымовая [CSW] M84 연막탄 [CSW] M84 Fumigène + [CSW] M84 Rauch [CSW] Humo M84 @@ -65,6 +73,7 @@ [CSW] M60A2 WP [CSW] M60A2 백린연막탄 [CSW] M60A2 WP + [CSW] M60A2 WP [CSW] M60A2 WP @@ -73,6 +82,7 @@ [CSW] M67 AT Laser Guided [CSW] M67 레이저유도 대전차탄 [CSW] M67 AT Guidé laser + [CSW] M67 AT Lasergelenkt [CSW] AT Guiado por Láser M67 @@ -81,6 +91,7 @@ [CSW] M314 Осветительная [CSW] M314 조명탄 [CSW] M314 Illumination + [CSW] M314 Beleuchtung [CSW] Iluminación M314 @@ -89,6 +100,7 @@ [CSW] 3OF56 HE [CSW] 3OF56 고폭탄 [CSW] 3OF56 HE + [CSW] 3OF56 HE [CSW] HE de 3OF56 @@ -97,6 +109,7 @@ [CSW] 3OF69M Laser Guided [CSW] 3OF69M 레이저유도탄 [CSW] 3OF69M Guidé laser + [CSW] 3OF69M Lasergelenkt [CSW] 3OF69M Guiado por Láser @@ -105,6 +118,7 @@ [CSW] 122mm WP [CSW] 122mm 백린탄 [CSW] 122mm WP + [CSW] 122mm WP [CSW] WP de 122mm @@ -113,6 +127,7 @@ [CSW] D-462 Дымовая [CSW] D-462 연막탄 [CSW] D-462 Fumigène + [CSW] D-462 Rauch [CSW] Humo D-462 @@ -121,6 +136,7 @@ [CSW] S-463 Осветительная [CSW] S-463 조명탄 [CSW] S-463 Eclairante + [CSW] S-463 Beleuchtung [CSW] Iluminación S-463 @@ -129,6 +145,7 @@ [CSW] BK-6M HEAT [CSW] BK-6M 대전차고폭탄 [CSW] BK-6M HEAT + [CSW] BK-6M HEAT [CSW] BK-6M HEAT diff --git a/addons/compat_cup_weapons/compat_cup_weapons_nightvision/stringtable.xml b/addons/compat_cup_weapons/compat_cup_weapons_nightvision/stringtable.xml index e3166d6f42..e1afbe21c8 100644 --- a/addons/compat_cup_weapons/compat_cup_weapons_nightvision/stringtable.xml +++ b/addons/compat_cup_weapons/compat_cup_weapons_nightvision/stringtable.xml @@ -51,6 +51,7 @@ AN/PVS-15 (설상, 백색광) AN/PVS-15 (Белый, БФ) AN/PVS-15 (Blanc, WP) + AN/PVS-15 (Winter, WP) AN/PVS-15 (Blancas, WP) @@ -92,6 +93,7 @@ GPNVG (설상, 백색광) AN/PVS-15 (Белый, БФ) GPNVG (Blanc, WP) + GPNVG (Winter, WP) GPNVG (Blancas, WP) diff --git a/addons/fieldmanual/stringtable.xml b/addons/fieldmanual/stringtable.xml index 98756c4910..78b7ad6fe8 100644 --- a/addons/fieldmanual/stringtable.xml +++ b/addons/fieldmanual/stringtable.xml @@ -245,6 +245,7 @@ 傷口が開くのを防ぐ Предотвратить повторное открытие ран Empêcher la réouverture des plaies + Verhindert, dass sich Wunden wieder öffnen Prevenir la reapertura de heridas @@ -254,6 +255,7 @@ O %3Kit Cirúrgico%4 é utilizado para prevenir a reabertura de feridas após a aplicação de bandagens. A depender das configurações, ele também pode remover traumas e pode requerir %3Suturas%4 adicionais para fechar feridas. Suturas são consumíveis, tal como as bandagens, e não são substituem o Kit Cirúrgico.<br/><br/>%3Uso:%4<br/>%2Utilize [%3%13%4] ou [%3%14%4] e selecione %3Tratamento Avançado%4.<br/>%2Selecione %3Usar Kit Cirúrgico%4. Un %3Kit Chirurgico%4 è usato per impedire che ferite bendate si riaprano. A seconda delle impostazioni, può anche azzerare danni o potrebbe richiedere %3Suture%4 aggiuntive per chiudere ferite. Suture sono consumabili proprio come bende, non sono un sostituto per un Kit Chirurgico.<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%13%4] o [%3%14%4] e seleziona %3Trattamenti Avanzati%4.<br/>%2Seleziona %3Usa Kit Chirurgico%4. %3手術キット%4は包帯を巻いた傷口が再度開いて出血するのを防ぎます。設定によっては、負傷を取り除いたり、傷口を閉じるのに%3糸付縫合針%4を必要としたりします。糸付縫合針は消耗品で包帯のように使用され、手術キットを代替するものではありません。<br/><br/>%3使用方法:%4<br/>%2[%3%13%4] または [%3%14%4] を使って%3高度な治療%4を選択する。<br/>%2%3手術キット%4を選択して使用します。 + Ein %3Chirurgisches Kit%4 wird verwendet, um zu verhindern, dass sich Wunden nach dem Verbinden wieder öffnen. Abhängig von den Einstellungen kann es auch Traumata beseitigen und erfordert möglicherweise zusätzliche %3Nähte%4, um Wunden zu schließen. Nahtmaterial ist, ähnlich wie Bandagen, Verbrauchsmaterial und kein Ersatz für das Chirurgie-Set.<br/><br/>%3Verwendung:%4<br/>%2Verwenden Sie [%3%13%4] oder [%3% 14%4] und wählen Sie %3Erweiterte Behandlung%4.<br/>%2Wählen Sie %3Chirurgisches Kit verwenden%4. El %3Kit Quirúrgico%4 se usa para prevenir la reapertura de heridas despues de ser vendadas. Dependiendo de las opciones, tambien puede curar traumatismos y puede requerir %3Sutura%4 adicional para cerrar las heridas. Las Suturas son consumibles, al igual que las vendas, y no son un reemplazo para el Kit Quirúgico.<br/><br/>%3Uso:%4<br/>%2Usar [%3%13%4] o [%3%14%4] y seleccionar %3Tratamientos Avanzados%4.<br/>%2Seleccionar %3Usar Kit Quirúgico%4. @@ -265,6 +267,7 @@ 出血を止める Остановить кровотечение Arrêter les saignements + Stoppt Blutung Parar Sangrado @@ -274,6 +277,7 @@ O %3Torniquete%4 interrompe o sangramento temporariamente, para que feridas possam ser enfaixadas. Seu uso é restrito aos membros.<br/><br/>%3Uso:%4<br/>%2Utilize [%3%13%4] ou [%3%14%4] e selecione um membro afetado.<br/>%2Selecione %3Aplicar Torniquete%4. Un %3Laccio Emostatico%4 ferma emorragie temporaneamente in modo da poter bendare ferite con calma. Utilizzabile su arti.<br/><br/>%3Utilizzo:%4<br/>%2Usa [%3%13%4] o [%3%14%4] e seleziona un arto afflitto.<br/>%2Seleziona %3Applica Laccio Emostatico%4. %3止血帯%4は一時的に出血を止め、その間に傷に包帯を巻くことができます。四肢にのみ使用できます。<br/><br/>%3使用方法:%4<br/>%2[%3%13%4] または [%3%14%4] を使って使用したい四肢を選択します。<br/>%2%3止血帯を巻く%4を選択して使用します。 + Ein %3Tourniquet%4 stoppt die Blutung vorübergehend, sodass eine oder mehrere Wunden verbunden werden können. Kann nur an Gliedmaßen verwendet werden.<br/><br/>%3Verwendung:%4<br/>%2Verwenden Sie [%3%13%4] oder [%3%14%4] und wählen Sie ein betroffenes Glied aus.< br/>%2Wählen Sie %3Tourniquet anwenden%4. El %3Torniquete%4 para temporalmente el sangrado hasta que la herida sea vendada. Sólo puede ser usado en extremidades.<br/><br/>%3Uso:%4<br/>%2Usar [%3%13%4] o [%3%14%4] y seleccionar la extremidad afectada.<br/>%2Seleccionar %3Aplicar Torniquete%4. diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index ff912a75d1..5b7c3da063 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -370,12 +370,14 @@ Metti/Togli tappi 귀마개 토글 Mettre/enlever les bouchons + Ohrstöpsel einsetzen/herausnehmen Poner/quitar tapones Only units with heavy weapons Uniquement les unités dotées d'armes lourdes Только юниты с тяжелым вооружением + Nur Einheiten mit schweren Waffen 重火器を装備したユニットのみ Sólo unidades con armas pesadas Solo a unità con armi pesanti diff --git a/addons/killtracker/stringtable.xml b/addons/killtracker/stringtable.xml index 63196a442e..5b2f8f9de8 100644 --- a/addons/killtracker/stringtable.xml +++ b/addons/killtracker/stringtable.xml @@ -9,12 +9,13 @@ ACE キルトラッカー ACE 킬트래커 ACE Suivi des morts + ACE Abschüsse ACE Contador de Muertes ACE Killed Events ACE キルイベント - ACE Abgeschossene Ereignisse + ACE Abschusszähler ACE Eventi di Morte ACE Licznik Zabójstw ACE 击杀事件 @@ -104,6 +105,7 @@ プレイヤーに殺害されたAIユニットを追跡 플레이어가 죽인 AI 트래킹 Suivi de l'IA tuée par les joueurs + Zähle vom Spieler getöteten KI-Einheiten Cuenta las unidades de IA matadas por el jugador @@ -114,6 +116,7 @@ ミッションデブリーフィングのキルトラッカーに殺害されたAIが表示されるかどうかを定義します。 사후강평 중 살해된 AI가 킬트래킹에 표시되는지 여부를 정의합니다. Définit si les IA tuées seront affichées dans le tracker pendant le débriefing de la mission. + Legt fest, ob getötete KIs während des Endbildschirms der Mission in den Abschüssen angezeigt werden. Define si las IAs matadas se mostrarán en el contador de muertes en el debiefring de la misión. diff --git a/addons/maptools/stringtable.xml b/addons/maptools/stringtable.xml index f71cc8489f..7e1d0cee97 100644 --- a/addons/maptools/stringtable.xml +++ b/addons/maptools/stringtable.xml @@ -42,6 +42,7 @@ Tavola di calcolo Графическая доска Planche traçante + Wurfparabel Kartenwerkzeug Tablero de Trazado @@ -51,6 +52,7 @@ La tavola di calcolo è uno strumento utilizzato per dirigere fuoco di artiglieria a corto raggio. Графическая доска - это картографический инструмент, предназначенный для использования при ведении непрямого огня с малой дистанции. Une planche traçante est un outil cartographique conçu pour diriger des tirs indirects à courte distance. + Das Wurfparabel-Kartenwerkzeug ist ein Werkzeug, das für die Steuerung indirekten Feuers auf kurze Distanz entwickelt wurde. El Tablero de Trazado es una herramienta de mapa utilizada para dirigir fuego indirecto de corto alcance. @@ -277,6 +279,7 @@ Canali ammessi su tavola di calcolo Разрешить создание каналов на миллиметровой доске. Canaux autorisés sur la planche traçante + Wurfparabel Kartenwerkzeug erlaubte Kanäle Permitir Canales de Dibujado de Tablero de Trazado @@ -286,6 +289,7 @@ Canali in cui si può disegnare sulla tavola di calcolo. Каналы, в которых включено рисование на миллиметровой доске. Canaux dans lesquels vous pouvez dessiner sur le planche traçante + Kanäle, in denen das Zeichnen mit dem Wurfparabel-Kartenwerkzeug auf der Karte erlaubt ist. Canales en los que el tablero de trazado está habilitado. @@ -295,6 +299,7 @@ Comunicazioni Dirette (solo linee) Разрешать только прямую связь (только полилинии) Communications directes uniquement (lignes uniquement) + Nur direkte Kommunikation zulassen (nur Polylinien) Permitir Sólo Comunicaciones Directas (Sólo Polylineas) @@ -304,6 +309,7 @@ Comunicazioni dirette/gruppo (linee e marker) Разрешить прямую/групповую связь (полилинии и групповые маркеры) Autoriser les communications directes/de groupe (polylignes et marqueurs de groupe) + Direkte/Gruppenkommunikation zulassen (Polylinien und Gruppenmarkierungen) Permitir Comunicaciones Directas/Grupales (Polylineas y Marcadores de Grupo) @@ -313,6 +319,7 @@ Tavola di calcolo Миллиметровая доска Planche traçante + Wurfparabel Kartenwerkzeug Tablero de Trazado @@ -322,6 +329,7 @@ Acrilico tavola di calcolo Миллиметровая доска акрилловая Planche traçante Acrylique + Wurfparabel Kartenwerkzeug Acryl Tablero de Trazado Acrílico @@ -331,6 +339,7 @@ Righello tavola di calcolo Линейка для миллиметровой доски Règle de la planche traçante + Wurfparabel Kartenwerkzeug Lineal Regla de Tablero de Trazado @@ -340,6 +349,7 @@ Su tavola di calcolo К миллиметровой доске. Sur la planche traçante + Zum Wurfparabel Kartenwerkzeug A Tablero de Trazado @@ -349,6 +359,7 @@ Su acrilico tavola di calcolo К миллиметровой доске акрилловой Sur la planche traçante Acrylique + Zum Wurfparabel Kartenwerkzeug Acryl A Tablero de Trazado Acrílico @@ -358,6 +369,7 @@ Su righello tavola di calcolo К линейке миллиметровой доски. Sur la règle de la planche traçante + Zum Wurfparabel Kartenwerkzeug Lineal A Regla de Tablero de Trazado @@ -367,6 +379,7 @@ Cancella tutti i disegni dalla tavola Сотрите все маркеры с миллиметровой доски. Effacer tous les dessins de la planche traçante + Alle Markierungen vom Wurfparabel Kartenwerkzeug entfernen Borrar todas las marcas del Tablero de Trazado @@ -376,6 +389,7 @@ Mostra tavola di calcolo Показать миллиметровую доску. Afficher la planche traçante + Zeige Wurfparabel Kartenwerkzeug Mostrar Tablero de Trazado @@ -385,6 +399,7 @@ Nascondi tavola di calcolo Скрыть миллиметровую доску. Masquer la planche traçante + Verstecke Wurfparabel Kartenwerkzeug Ocultar Tablero de Trazado @@ -394,6 +409,7 @@ Mostra/Nascondi Righello Переключить линейку миллиметровой доски. Afficher/masquer la règle + Schalte das Lineal des Wurfparabel-Kartenwerkzeuges um Alternar Regla de Tablero de Trazado @@ -445,6 +461,7 @@ Su Вверх Monter + Nach oben Arriba @@ -454,6 +471,7 @@ Su strumento cartografico К инструментам карты Outil cartographique + Zum Kartenwerkzeug A Herramienta de Mapa diff --git a/addons/medical_treatment/stringtable.xml b/addons/medical_treatment/stringtable.xml index a8bf4159a8..6e093e8c5f 100644 --- a/addons/medical_treatment/stringtable.xml +++ b/addons/medical_treatment/stringtable.xml @@ -5044,6 +5044,7 @@ 鎮痛剤を投与 진통제 투여 Administrer des analgésiques + Verabreiche Schmerztabletten Administrar Analgésicos @@ -5053,6 +5054,7 @@ 鎮痛剤を投与しています・・・ 진통제 투여 중... Administration d'analgésiques... + Verabreiche Schmerztablette... Administrando Analgésicos... @@ -5062,6 +5064,7 @@ 軽度から中程度の痛みに対処するために使用される市販の鎮痛薬。 가벼운 통증부터 중간 정도의 통증을 퇴치하는 데 사용되는 일반의약품 진통제입니다. Analgésique sans ordonnance utilisé pour lutter contre les douleurs légères à modérées. + Rezeptfreies Analgetikum zur Bekämpfung leichter bis mittelschwerer Schmerzen. Analgésico sin receta médica usado para aplacar dolores de ligeros a moderados. @@ -5071,6 +5074,7 @@ 軽度から中程度の痛みに対処するために使用される市販の鎮痛薬。 가벼운 통증부터 중간 정도의 통증을 퇴치하는 데 사용되는 일반의약품 진통제입니다. Analgésique sans ordonnance utilisé pour lutter contre les douleurs légères à modérées. + Rezeptfreies Analgetikum zur Bekämpfung leichter bis mittelschwerer Schmerzen. Analgésico sin receta médica usado para aplacar dolores de ligeros a moderados. diff --git a/addons/medical_vitals/stringtable.xml b/addons/medical_vitals/stringtable.xml index 54c19f53fa..2fe7336dc0 100644 --- a/addons/medical_vitals/stringtable.xml +++ b/addons/medical_vitals/stringtable.xml @@ -9,6 +9,7 @@ バイタル 생명 Paramètres vitaux + Vitalwerte Vitales @@ -18,6 +19,7 @@ SpO2シミュレーションを有効化 산소포화도 시뮬레이션 활성화 Activer la simulation de la SpO2 + SpO2-Simulation aktivieren Habilitar Simulación SpO2 @@ -27,6 +29,7 @@ 酸素飽和度シミュレーションを有効にし、身体活動や標高に基づいて変動する心拍数と酸素要求量の機能を提供します。 気道管理に必要です。 산소포화도 시뮬레이션을 활성화하여 신체 활동과 고도에 따라 다양한 심박수와 산소 요구량을 제공합니다. 기도 관리에 필요합니다. Permet de simuler la saturation en oxygène, de modifier la fréquence cardiaque et la consommation d'oxygène en fonction de l'activité physique et de l'altitude. Nécessaire pour la gestion des voies respiratoires. + Aktiviert die Simulation der Sauerstoffsättigung und bietet variable Herzfrequenz und Sauerstoffbedarf basierend auf körperlicher Aktivität und Geländehöhe. Erforderlich für das Atemwegsmanagement. Habilita la saturación de oxígeno, utilizando la demanda de oxígeno y ritmo cardíaco basado en la actividad física y la altitud. Requerido para el Manejo de las Vías Aéreas. diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index 8676ff67bb..ef20ae9e81 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -882,6 +882,7 @@ 노리쇠 방식 Тип болта Type d'obturateur + Art des Verschlusses Tipo de Cerrojo @@ -891,6 +892,7 @@ 오픈 볼트 Открыть болт Obturateur ouvert + Offener Verschluss Cerrojo Abierto @@ -900,6 +902,7 @@ 클로즈드 볼트 Закрыть болт Obturateur fermé + Geschlossener Verschluss Cerrojo Cerrado @@ -909,6 +912,7 @@ 총열 방식 Тип ствола Type de canon + Lauftyp Tipo de Cañón @@ -918,6 +922,7 @@ 제거 불가 Несъемный Inamovible + Nicht entfernbar No-Desmontable @@ -927,6 +932,7 @@ 신속 교체 Быстросъемный Changement rapide + Schnellwechsel Cambiado Rápido