Merged main

This commit is contained in:
johnb432 2024-02-04 10:52:44 +01:00
commit c927c0e05c
96 changed files with 337 additions and 205 deletions

View File

@ -126,6 +126,7 @@ Keithen <Keithen.Neu@gmail.com>
Kllrt <kllrtik@gmail.com>
KokaKolaA3
Krzyciu
LAxemann
legman <juicemelon@msn.com>
Legolasindar "Viper" <legolasindar@gmail.com>
licht-im-Norden87 <lichtimnorden87@gmail.com>

View File

@ -29,7 +29,7 @@
<Russian>Открыть грузовой отсек</Russian>
<Italian>Apri la rampa di carico</Italian>
<Portuguese>Abrir porta de carga</Portuguese>
<Japanese>カーゴ ドアを開く</Japanese>
<Japanese>貨物室ドアを 開く</Japanese>
<Korean>화물칸 개방</Korean>
<Chinese>開啟貨艙門</Chinese>
<Chinesesimp>开启货舱门</Chinesesimp>
@ -46,7 +46,7 @@
<Russian>Закрыть грузовой отсек</Russian>
<Italian>Chiudi la rampa di carico</Italian>
<Portuguese>Fechar porta de carga</Portuguese>
<Japanese>カーゴ ドアを閉じる</Japanese>
<Japanese>貨物室ドアを 閉じる</Japanese>
<Korean>화물칸 폐쇄</Korean>
<Chinese>關閉貨艙門</Chinese>
<Chinesesimp>关闭货舱门</Chinesesimp>

View File

@ -613,7 +613,7 @@
<French>Le set d'équipement suivant a été supprimé :</French>
<German>Folgende Ausrüstung wurde entfernt:</German>
<Polish>Następujący zestaw został skasowany:</Polish>
<Japanese>次の装備は削除されました:</Japanese>
<Japanese>装備を削除しました:</Japanese>
<Italian>Il seguente equipaggiamento è stato eliminato:</Italian>
<Korean>다음 로드아웃이 삭제됨 :</Korean>
<Chinese>以下的裝備已被刪除:</Chinese>
@ -629,7 +629,7 @@
<French>Le set d'équipement suivant n'est plus public :</French>
<German>Folgende Ausrüstung ist nicht mehr öffentlich:</German>
<Polish>Następujący zestaw nie jest już publiczny:</Polish>
<Japanese>次の装備は非公開になりました:</Japanese>
<Japanese>装備を非公開にしました:</Japanese>
<Italian>Il seguente equipaggiamento non è più pubblico:</Italian>
<Korean>다음 로드아웃이 더이상 공용이 아님:</Korean>
<Chinese>以下的裝備已不再被分享:</Chinese>
@ -645,7 +645,7 @@
<French>Le champ "nom" est vide !</French>
<German>Das Feld "Name" ist leer!</German>
<Polish>Pole nazwy jest puste!</Polish>
<Japanese>名前が空です!</Japanese>
<Japanese>名前が空です!</Japanese>
<Italian>Il campo del nome è vuoto!</Italian>
<Korean>이름칸이 비었습니다!</Korean>
<Chinese>名稱欄位為空!</Chinese>
@ -677,7 +677,7 @@
<French>Un de vos sets d'équipement ayant le même nom est public.</French>
<German>Eine deiner Ausrüstungen mit dem gleichen Namen ist öffentlich</German>
<Polish>Jeden z Twoich zestawów nazwany tak samo jest już publiczny</Polish>
<Japanese>あなたの装備は既に公開されているものと同名で</Japanese>
<Japanese>あなたのものと同じ名前の装備が既に公開されていま</Japanese>
<Italian>Un tuo equipaggiamento con lo stesso nome è pubblico</Italian>
<Korean>같은 이름의 로드아웃이 공용에 있습니다.</Korean>
<Chinese>已有相同名稱的裝備在公用分享區</Chinese>
@ -693,7 +693,7 @@
<French>Le set d'équipement suivant a été enregistré :</French>
<German>Folgende Ausrüstung wurde gespeichert:</German>
<Polish>Następujący zestaw został zapisany:</Polish>
<Japanese>次の装備は保存されました:</Japanese>
<Japanese>装備を保存しました:</Japanese>
<Italian>Il seguente equipaggiamento è stato salvato:</Italian>
<Korean>다음 로드아웃이 저장됨:</Korean>
<Chinese>以下的裝備已被保存:</Chinese>
@ -709,7 +709,7 @@
<French>Le set d'équipement suivant a été chargé :</French>
<German>Folgene Ausrüstung wurde geladen:</German>
<Polish>Następujący zestaw został wczytany:</Polish>
<Japanese>次の装備が読み込みされました:</Japanese>
<Japanese>装備を読み込みました:</Japanese>
<Italian>Il seguente equipaggiamento è stato caricato:</Italian>
<Korean>다음 로드아웃을 불러옴:</Korean>
<Chinese>以下的裝備已被載入:</Chinese>
@ -725,7 +725,7 @@
<French>Un set d'équipement ayant le même nom existe déjà !</French>
<German>Eine Ausrüstung mit dem gleichen Namen existiert bereits!</German>
<Polish>Zestaw z tą nazwą już istnieje!</Polish>
<Japanese>既にその名前は装備に使われています!</Japanese>
<Japanese>既に同じ名前の装備が存在しています!</Japanese>
<Italian>Un equipaggiamento con lo stesso nome è gia esistente!</Italian>
<Korean>같은 이름의 로드아웃이 이미 존재합니다!</Korean>
<Chinese>已有相同名稱的裝備!</Chinese>
@ -741,7 +741,7 @@
<French>a été renommé en</French>
<German>wurde umbenannt in</German>
<Polish>zmienił nazwę na</Polish>
<Japanese>次の名前に変更されました</Japanese>
<Japanese>を次の名前に変更しました:</Japanese>
<Italian>È stato rinominato in</Italian>
<Korean>이름이 다음과 같이 변경됨:</Korean>
<Chinese>已被改名為</Chinese>
@ -1181,7 +1181,7 @@
<English>Nightvision Support</English>
<Spanish>Soporte de visión nocturna</Spanish>
<German>Nachtsicht Unterstützung</German>
<Japanese>暗視装置への対応有無</Japanese>
<Japanese>暗視装置への対応</Japanese>
<Polish>Wsparcie noktowizyjne</Polish>
<Italian>Supporto visore notturno</Italian>
<Russian>Поддержка ночного видения</Russian>
@ -1240,9 +1240,11 @@
</Key>
<Key ID="STR_ACE_Arsenal_statVisionMode_ti">
<English>Thermal integrated</English>
<Japanese>熱画像装置内蔵</Japanese>
</Key>
<Key ID="STR_ACE_Arsenal_statVisionMode_intPrimTi">
<English>Thermal &amp; Primary integrated</English>
<Japanese>熱画像装置内蔵・プライマリに内蔵</Japanese>
</Key>
<Key ID="STR_ACE_Arsenal_statVisionMode_NoSup">
<English>Not Supported</English>
@ -1263,7 +1265,7 @@
<Key ID="STR_ACE_Arsenal_statVisionModeGeneric">
<English>Vision Mode</English>
<German>Sichtmodus</German>
<Japanese>ビジョン モード</Japanese>
<Japanese>映像モード</Japanese>
<Italian>Modalità Visiva</Italian>
<Chinese>視覺模式</Chinese>
<Chinesesimp>视觉模式</Chinesesimp>
@ -1501,7 +1503,7 @@
<Spanish>Añade automáticamente accesorios o cargadores (de la categoría seleccionada) a todas las armas de la lista de objetos</Spanish>
<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>
<Japanese>現在のアイテムリスト内全武器に対応する アタッチメントと弾倉(選択したカテゴリに基づく)を自動的に追加します</Japanese>
<Russian>Добавляет совместимые приспособления или магазины (в зависимости от выбранной категории) для всего оружия в текущем списке предметов</Russian>
<Portuguese>Irá automaticamente adicionar acessórios ou carregadores (baseado na categoria selecionada) para todas as armas na lista de itens atual</Portuguese>
<French>Ajoute automatiquement des accessoires ou des chargeurs compatibles (en fonction de la catégorie sélectionnée), pour toutes les armes de la liste actuelle.</French>

View File

@ -64,6 +64,8 @@ if ([_item, _vehicle] call FUNC(canLoadItemIn)) then {
[objNull, _item, true] call EFUNC(common,claim);
[[LSTRING(loadingFailed), [_item, true] call FUNC(getNameItem)], 3] call EFUNC(common,displayTextStructured);
// Fix cancelling loading a carried item
if (!isNull attachedTo _item) then {
detach _item;
@ -85,6 +87,9 @@ if ([_item, _vehicle] call FUNC(canLoadItemIn)) then {
true // return
} else {
// Unlock the object
[objNull, _item, true] call EFUNC(common,claim);
[[LSTRING(loadingFailed), [_item, true] call FUNC(getNameItem)], 3] call EFUNC(common,displayTextStructured);
// Fix cancelling loading a carried item

View File

@ -48,7 +48,7 @@
</Key>
<Key ID="STR_ACE_Cargo_clearedCustomName">
<English>Custom name has been cleared.</English>
<Japanese>カスタムネームが削除されました。</Japanese>
<Japanese>カスタムが削除されました。</Japanese>
<French>Le nom personnalisé a été supprimé.</French>
<Russian>Пользовательское название удалено.</Russian>
<German>Eigener Name wurde gelöscht.</German>
@ -108,7 +108,7 @@
<Spanish>Carga</Spanish>
<Italian>Carico</Italian>
<French>Cargaison</French>
<Japanese>カーゴ</Japanese>
<Japanese>貨物</Japanese>
<Korean>화물</Korean>
<Chinese>貨物</Chinese>
<Chinesesimp>货物</Chinesesimp>
@ -124,7 +124,7 @@
<Spanish>Menu de carga</Spanish>
<Italian>Menù del Carico</Italian>
<French>Menu de cargaison</French>
<Japanese>カーゴ メニュー</Japanese>
<Japanese>貨物メニュー</Japanese>
<Korean>화물 메뉴</Korean>
<Chinese>貨物選單</Chinese>
<Chinesesimp>货物菜单</Chinesesimp>
@ -140,7 +140,7 @@
<Spanish>Espacio de carga restante: %1</Spanish>
<Italian>Spazio di carico rimanente: %1</Italian>
<French>Espace de chargement restant : %1</French>
<Japanese>カーゴの空き容量: %1</Japanese>
<Japanese>貨物室の空き容量: %1</Japanese>
<Korean>선적 공간 남음: %1</Korean>
<Chinese>貨物剩餘空間: %1</Chinese>
<Chinesesimp>货物剩余空间:%1</Chinesesimp>
@ -156,7 +156,7 @@
<Spanish>Habilitar carga</Spanish>
<Italian>Abilita Carico</Italian>
<French>Activer la cargaison</French>
<Japanese>カーゴを有効化</Japanese>
<Japanese>貨物を有効化</Japanese>
<Korean>화물 활성화</Korean>
<Chinese>啟用貨物裝載</Chinese>
<Chinesesimp>启用货物装载</Chinesesimp>
@ -172,7 +172,7 @@
<Czech>Umožňuje naložit předměty do nákladového prostoru vozidla</Czech>
<Italian>Abilita il modulo di caricamento nel carico</Italian>
<French>Active la possibilité de charger du matériel dans un module de fret (véhicule/container).</French>
<Japanese>カーゴ モジュールで積み込みを有効化</Japanese>
<Japanese>貨物積載モジュールを有効化</Japanese>
<Korean>화물 모듈을 활성화합니다</Korean>
<Chinese>啟用貨物裝載功能</Chinese>
<Chinesesimp>启用货物装载功能</Chinesesimp>
@ -187,7 +187,7 @@
<Spanish>Ajustes de carga</Spanish>
<Italian>Impostazioni Carico</Italian>
<French>Paramètres de cargaison</French>
<Japanese>カーゴ設定</Japanese>
<Japanese>貨物設定</Japanese>
<Korean>화물 설정</Korean>
<Chinese>貨物設定</Chinese>
<Chinesesimp>货物设定</Chinesesimp>
@ -203,7 +203,7 @@
<Czech>Konfigurace nákladního modulu</Czech>
<Italian>Configura le impostazioni del modulo carico</Italian>
<French>Configure les paramètres du module de cargaison.</French>
<Japanese>カーゴ モジュールの設定を構成</Japanese>
<Japanese>貨物モジュールの設定を変更します</Japanese>
<Korean>화물 모듈의 환경 설정을 바꿉니다</Korean>
<Chinese>配置貨物模塊設定</Chinese>
<Chinesesimp>配置货物模块设定</Chinesesimp>
@ -219,7 +219,7 @@
<Italian>%1&lt;br/&gt;caricato su&lt;br/&gt;%2</Italian>
<Hungarian>%1&lt;br/&gt;berakodva ide:&lt;br/&gt;%2</Hungarian>
<Russian>%1&lt;br/&gt;загружен в&lt;br/&gt;%2</Russian>
<Japanese>%1 &lt;br/&gt;%2 へ&lt;br/&gt;積み込まれました</Japanese>
<Japanese>%1 &lt;br/&gt;%2 に&lt;br/&gt;積み込みました</Japanese>
<Korean>%1은(는)&lt;br/&gt;%2 에 실림</Korean>
<Chinese>%1&lt;br/&gt;裝載至&lt;br/&gt;%2</Chinese>
<Chinesesimp>%1&lt;br/&gt;装载至&lt;br/&gt;%2</Chinesesimp>
@ -235,7 +235,7 @@
<Italian>Hai scaricato&lt;br/&gt;%1 da&lt;br/&gt;%2</Italian>
<Hungarian>1%&lt;br/&gt;kirakodva ebből:&lt;br/&gt;%2</Hungarian>
<Russian>%1&lt;br/&gt;разгружен из&lt;br/&gt;%2</Russian>
<Japanese>%1 &lt;br/&gt;%2 から&lt;br/&gt;降ろされました</Japanese>
<Japanese>%1 &lt;br/&gt;%2 から&lt;br/&gt;降ろしました</Japanese>
<Korean>%1은(는)&lt;br/&gt;%2에서 내려짐</Korean>
<Chinese>&lt;br/&gt;%2卸載&lt;br/&gt;%1</Chinese>
<Chinesesimp>&lt;br/&gt;%2卸载&lt;br/&gt;%1</Chinesesimp>
@ -243,10 +243,12 @@
<Key ID="STR_ACE_Cargo_LoadingItem">
<English>Loading %1 into %2...</English>
<Spanish>Cargando %1 en %2...</Spanish>
<Japanese>%1 を %2 に積み込んでいます・・・</Japanese>
</Key>
<Key ID="STR_ACE_Cargo_UnloadingItem">
<English>Unloading %1 from %2...</English>
<Spanish>Descargando %1 de %2...</Spanish>
<Japanese>%1 を %2 から降ろしています・・・</Japanese>
</Key>
<Key ID="STR_ACE_Cargo_LoadingFailed">
<English>%1&lt;br/&gt;could not be loaded</English>
@ -285,7 +287,7 @@
<German>Kann nicht entladen werden</German>
<Italian>Impossibile da scaricare</Italian>
<French>Ne peut pas être déchargé</French>
<Japanese>降ろせません</Japanese>
<Japanese>荷降ろし不可能です</Japanese>
<Korean>하역할 수가 없습니다</Korean>
</Key>
<Key ID="STR_ACE_Cargo_SizeMenu">
@ -293,12 +295,12 @@
<German>Frachtgröße: %1</German>
<Italian>Dimensione Carico: %1</Italian>
<French>Encombrement fret: %1</French>
<Japanese>カーゴ サイズ: %1</Japanese>
<Japanese>貨物のサイズ: %1</Japanese>
<Korean>화물 크기: %1</Korean>
</Key>
<Key ID="STR_ACE_Cargo_customName_edenName">
<English>Custom Name</English>
<Japanese>カスタムネーム</Japanese>
<Japanese>カスタム</Japanese>
<French>Nom personnalisé</French>
<German>Eigener Name</German>
<Italian>Nome Personalizzato</Italian>
@ -311,7 +313,7 @@
</Key>
<Key ID="STR_ACE_Cargo_customName_edenDesc">
<English>Set a custom cargo name used in the cargo interface.</English>
<Japanese>カーゴ一覧で使用されるカスタムネームを設定します。</Japanese>
<Japanese>貨物インターフェイスで使用されるカスタム名を設定します。</Japanese>
<French>Définit un nom de fret personnalisé qui sera visible dans le menu de cargaison.</French>
<Russian>Установить пользовательское имя груза, используемое в интерфейсе погрузки.</Russian>
<German>Definiere eigenen Frachtnamen, welcher im Frachtraum genutzt wird.</German>
@ -326,7 +328,7 @@
<English>Cargo Space</English>
<German>Frachtraum</German>
<Italian>Spazio di Carico</Italian>
<Japanese>カーゴ スペース</Japanese>
<Japanese>貨物室の容量</Japanese>
<Chinese>貨物空間</Chinese>
<Chinesesimp>货物空间</Chinesesimp>
<Polish>Przestrzeń ładunkowa</Polish>
@ -342,7 +344,7 @@
<English>The cargo space available in this vehicle/container</English>
<German>Verfügbarer Frachtraum in diesem Fahrzeug/Container</German>
<Italian>Lo spazio disponibile in questo veicolo/container</Italian>
<Japanese>この車両/コンテナでカーゴ スペースを使えるようにします</Japanese>
<Japanese>この車両/コンテナで使用可能な貨物室の容量</Japanese>
<Chinese>設定此載具/集裝箱可裝載多少貨物</Chinese>
<Chinesesimp>设定此载具/集装箱可装载多少货物</Chinesesimp>
<Polish>Dostępna przestrzeń ładunkowa w tym pojeździe/kontenerze</Polish>
@ -357,7 +359,7 @@
<English>Cargo Size</English>
<German>Frachtgröße</German>
<Italian>Dimensioni nel Carico</Italian>
<Japanese>カーゴ サイズ</Japanese>
<Japanese>貨物のサイズ</Japanese>
<Chinese>貨物的大小</Chinese>
<Chinesesimp>货物的大小</Chinesesimp>
<Polish>Wielkość ładunku</Polish>
@ -373,7 +375,7 @@
<English>The cargo space required to hold this object (-1 for not loadable)</English>
<German>Frachtraumgröße, welche zum Einladen dieses Objektes benötigt wird (-1 nicht einladbar)</German>
<Italian>Lo spazio di carico necessario per contenere questo oggetto (-1 per non caricabile)</Italian>
<Japanese>オブジェクトを積載するのに必要なカーゴ スペース (-1 で積載不可にします)</Japanese>
<Japanese>このオブジェクトの積載に必要な貨物室の容量 (-1 で積載不可に)</Japanese>
<Chinese>此貨物會佔掉多少空間(設定-1的話此貨物就不能被裝載)</Chinese>
<Chinesesimp>此货物会占掉多少空间(设定 -1 的话此货物就不能被装载)</Chinesesimp>
<Polish>Wymagana przestrzeń ładunkowa dla tego obiektu (-1 dla niemożliwych do załadowania)</Polish>
@ -432,7 +434,7 @@
<Key ID="STR_ACE_Cargo_paradropTimeCoefficent_description">
<English>Modifier for how long it takes to paradrop a cargo item.</English>
<German>Beeinflusst die zusätzliche Zeit für Türlastabwürfe.</German>
<Japanese>カーゴ アイテムを空中投下するまでの時間を変更します。</Japanese>
<Japanese>貨物の空中投下に掛かる時間を変更します。</Japanese>
<Italian>Modifica quanto tempo viene impiegato per paracadutare oggetti dal carico.</Italian>
<French>Modifie le temps nécessaire au paralargage d'une cargaison.</French>
<Chinese>設定空投所需消耗的時間</Chinese>
@ -447,7 +449,7 @@
<Key ID="STR_ACE_Cargo_loadTimeCoefficient">
<English>Load Time Coefficient</English>
<German>Ladezeitmultiplikator</German>
<Japanese>積載所要時間係数</Japanese>
<Japanese>積載所要時間係数</Japanese>
<Polish>Współczynnik czasu załadowania</Polish>
<Italian>Coefficente Tempo Caricamento</Italian>
<Russian>Коэф. времени погрузки</Russian>
@ -462,7 +464,7 @@
<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>
<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 il tempo impiegato per caricare o scaricare gli oggetti.\nIl tempo, in secondi, equivale alla dimensione dell'oggetto moltiplicata per questo valore</Italian>
<Russian>Изменяет время для загрузки/выгрузки предметов. \n Время (сек) - это размер предмета, умноженный на это значение.</Russian>
@ -477,7 +479,7 @@
<Key ID="STR_ACE_Cargo_openAfterUnload">
<English>Reopen Cargo Menu</English>
<Turkish>Kargo Menüsünü Tekrar Aç</Turkish>
<Japanese>カーゴ メニューを再度開く</Japanese>
<Japanese>貨物メニューを再度開く</Japanese>
<French>Rouvrir le menu de cargaison</French>
<Russian>Переоткрыть меню погрузки</Russian>
<German>Frachtmenü erneut öffnen</German>
@ -491,7 +493,7 @@
<Key ID="STR_ACE_Cargo_openAfterUnload_description">
<English>Reopen the Cargo Menu after successful unload.</English>
<Turkish>Başarılı bir yük indirmeden sonra Kargo Menüsünü tekrar göster.</Turkish>
<Japanese>カーゴを降ろした後に再びカーゴ メニューを開きます。</Japanese>
<Japanese>貨物を降ろした後に再び貨物メニューを開きます。</Japanese>
<French>Réouvre le menu de cargaison après un déchargement réussi.</French>
<Russian>Переоткрыть меню погрузки после успешной выгрузки.</Russian>
<German>Frachtmenü erneut öffnen, nach erfolgreichen Entladen.</German>
@ -507,7 +509,7 @@
<Korean>화물 내린 후 운반</Korean>
<Russian>Нести после выгрузки</Russian>
<Spanish>Llevar encima tras la descarga</Spanish>
<Japanese>荷降ろし後の運搬</Japanese>
<Japanese>荷降ろし後に持ち運ぶ</Japanese>
<Polish>Niesienie Po Rozładowaniu</Polish>
<German>Nach dem Entladen tragen</German>
<Italian>Trasporta dopo aver Scaricato</Italian>
@ -519,7 +521,7 @@
<Korean>화물 아이템을 내린 후 들거나 끌지 여부를 결정합니다.</Korean>
<Russian>Нужно ли переносить или тащить предметы после их выгрузки.</Russian>
<Spanish>Controla si los objetos de carga son llevados encima o arrastrados despues de la descarga.</Spanish>
<Japanese>荷降ろし後、貨物アイテムを運ぶか引きずるかを制御する。</Japanese>
<Japanese>荷降ろし後、貨物を運ぶか引きずるかを制御する。</Japanese>
<Polish>Kontroluje, czy przedmioty z ładunku są przenoszone lub ciągnięte po ich wyładowaniu.</Polish>
<German>Steuert, ob Objekte nach dem Entladen getragen oder gezogen werden.</German>
<Italian>Determina se un oggetto verrà subito trasportato o trascinato dopo essere stato scaricato.</Italian>

View File

@ -1641,7 +1641,7 @@
<French>Renommer</French>
<German>Umbenennen</German>
<Polish>Zmień nazwę</Polish>
<Japanese></Japanese>
<Japanese>前変更</Japanese>
<Italian>Rinomina</Italian>
<Korean>이름 바꾸기</Korean>
<Chinese>重新命名</Chinese>

View File

@ -0,0 +1,66 @@
#define VOLUME 2
#define PITCH 1
#define SHOTSOUND(type,dist,N,maxDistance)\
class GVAR(TRIPLES(type,dist,N)) {\
sound[] = {QPATHTOF(sounds\type\DOUBLES(dist,N).wss), VOLUME, PITCH, maxDistance};\
titles[] = {};\
}
#define SHOTSOUNDCLASS(type,dist,maxDistance)\
SHOTSOUND(type,dist,1,maxDistance);\
SHOTSOUND(type,dist,2,maxDistance);\
SHOTSOUND(type,dist,3,maxDistance)
#define SHOTSOUNDCLASSTYPE(type,maxDistance)\
SHOTSOUNDCLASS(type,close,maxDistance);\
SHOTSOUNDCLASS(type,mid,maxDistance);\
SHOTSOUNDCLASS(type,far,maxDistance)
// Allows other mods to change sounds for cook-off
class CfgSounds {
// These macros set up the sounds for the various classes
SHOTSOUNDCLASSTYPE(shotbullet,1250);
SHOTSOUNDCLASSTYPE(shotrocket,1600);
SHOTSOUNDCLASSTYPE(shotshell,1300);
// Missiles use the same sounds as rockets
class GVAR(shotmissile_close_1): GVAR(shotrocket_close_1) {};
class GVAR(shotmissile_close_2): GVAR(shotrocket_close_2) {};
class GVAR(shotmissile_close_3): GVAR(shotrocket_close_3) {};
class GVAR(shotmissile_mid_1): GVAR(shotrocket_mid_1) {};
class GVAR(shotmissile_mid_2): GVAR(shotrocket_mid_2) {};
class GVAR(shotmissile_mid_3): GVAR(shotrocket_mid_3) {};
class GVAR(shotmissile_far_1): GVAR(shotrocket_far_1) {};
class GVAR(shotmissile_far_2): GVAR(shotrocket_far_2) {};
class GVAR(shotmissile_far_3): GVAR(shotrocket_far_3) {};
// Submunitions have the same sound as bullets, but a higher maxDistance
class GVAR(shotsubmunitions_close_1): GVAR(shotbullet_close_1) {
sound[] = {QPATHTOF(sounds\shotbullet\close_1.wss), VOLUME, PITCH, 1600};
};
class GVAR(shotsubmunitions_close_2): GVAR(shotbullet_close_2) {
sound[] = {QPATHTOF(sounds\shotbullet\close_2.wss), VOLUME, PITCH, 1600};
};
class GVAR(shotsubmunitions_close_3): GVAR(shotbullet_close_3) {
sound[] = {QPATHTOF(sounds\shotbullet\close_3.wss), VOLUME, PITCH, 1600};
};
class GVAR(shotsubmunitions_mid_1): GVAR(shotbullet_far_1) {
sound[] = {QPATHTOF(sounds\shotbullet\mid_1.wss), VOLUME, PITCH, 1600};
};
class GVAR(shotsubmunitions_mid_2): GVAR(shotbullet_mid_2) {
sound[] = {QPATHTOF(sounds\shotbullet\mid_2.wss), VOLUME, PITCH, 1600};
};
class GVAR(shotsubmunitions_mid_3): GVAR(shotbullet_mid_3) {
sound[] = {QPATHTOF(sounds\shotbullet\mid_3.wss), VOLUME, PITCH, 1600};
};
class GVAR(shotsubmunitions_far_1): GVAR(shotbullet_far_1) {
sound[] = {QPATHTOF(sounds\shotbullet\far_1.wss), VOLUME, PITCH, 1600};
};
class GVAR(shotsubmunitions_far_2): GVAR(shotbullet_far_2) {
sound[] = {QPATHTOF(sounds\shotbullet\far_2.wss), VOLUME, PITCH, 1600};
};
class GVAR(shotsubmunitions_far_3): GVAR(shotbullet_far_3) {
sound[] = {QPATHTOF(sounds\shotbullet\far_3.wss), VOLUME, PITCH, 1600};
};
};

View File

@ -76,3 +76,42 @@ if (isServer) then {
[QGVAR(detonateAmmunition), [_vehicle, false, objNull, objNull, (random MAX_AMMO_DETONATION_START_DELAY) max MIN_AMMO_DETONATION_START_DELAY]] call CBA_fnc_serverEvent;
};
}, nil, ["CAManBase", "StaticWeapon"]] call CBA_fnc_addClassEventHandler;
if (hasInterface) then {
// Plays a sound locally, so that different sounds can be used for various distances
[QGVAR(playCookoffSound), {
params ["_object", "_sound"];
if (isNull _object) exitWith {};
private _distance = _object distance (positionCameraToWorld [0, 0, 0]);
TRACE_3("",_object,_sound,_maxDistance);
// 3 classes of distances: close, mid and far, each having different sound files
private _classDistance = switch (true) do {
case (_distance < DISTANCE_CLOSE): {"close"};
case (_distance < DISTANCE_MID): {"mid"};
default {"far"};
};
_sound = format [QGVAR(%1_%2_%3), _sound, _classDistance, floor (random 3) + 1];
TRACE_1("",_sound);
// Allows other mods to change sounds for cook-off
_sound = getArray (configFile >> "CfgSounds" >> _sound >> "sound");
if (_sound isEqualTo []) exitWith {};
_sound params ["_sound", "_volume", "_pitch", "_maxDistance"];
if (_distance > _maxDistance) exitWith {};
// Make sure file exists, so RPT isn't spammed with non-existent entry errors
if (!fileExists _sound) exitWith {};
// Obeys speed of sound and takes doppler effects into account
playSound3D [_sound, objNull, insideBuilding _object >= 0.5, getPosASL _object, _volume, _pitch + (random 0.2) - 0.1, _maxDistance, 0, true];
}] call CBA_fnc_addEventHandler;
};

View File

@ -21,4 +21,5 @@ class CfgPatches {
#include "CfgAmmo.hpp"
#include "CfgCloudlets.hpp"
#include "CfgSFX.hpp"
#include "CfgSounds.hpp"
#include "CfgVehicles.hpp"

View File

@ -25,12 +25,12 @@ params ["_object", ["_destroyWhenFinished", false], ["_killer", objNull], ["_ins
if (isNull _object) exitWith {};
private _vehicleAmmo = _object getVariable QGVAR(cookoffMagazines);
private _objectAmmo = _object getVariable QGVAR(cookoffMagazines);
if (isNil "_vehicleAmmo") then {
_vehicleAmmo = _object call FUNC(getVehicleAmmo);
if (isNil "_objectAmmo") then {
_objectAmmo = _object call FUNC(getVehicleAmmo);
_object setVariable [QGVAR(cookoffMagazines), _vehicleAmmo];
_object setVariable [QGVAR(cookoffMagazines), _objectAmmo];
// TODO: When setMagazineTurretAmmo and magazineTurretAmmo are fixed (https://feedback.bistudio.com/T79689),
// we can add gradual ammo removal during cook-off
@ -43,7 +43,7 @@ if (isNil "_vehicleAmmo") then {
};
};
_vehicleAmmo params ["_magazines", "_totalAmmo"];
_objectAmmo params ["_magazines", "_totalAmmo"];
// If the cook-off has finished, clean up the effects and destroy the object
if (_magazines isEqualTo [] || {_totalAmmo <= 0}) exitWith {
@ -140,16 +140,14 @@ private _fnc_spawnProjectile = {
switch (_simType) do {
case "shotbullet": {
private _sound = selectRandom [QPATHTO_R(sounds\light_crack_close.wss), QPATHTO_R(sounds\light_crack_close_filtered.wss), QPATHTO_R(sounds\heavy_crack_close.wss), QPATHTO_R(sounds\heavy_crack_close_filtered.wss)];
playSound3D [_sound, objNull, false, getPosASL _object, 2, 1, 1250];
[QGVAR(playCookoffSound), [_object, _simType]] call CBA_fnc_globalEvent;
if (random 1 < 0.6) then {
[_object, _ammo, _speed, true] call _fnc_spawnProjectile;
};
};
case "shotshell": {
private _sound = selectRandom [QPATHTO_R(sounds\heavy_crack_close.wss), QPATHTO_R(sounds\heavy_crack_close_filtered.wss)];
playSound3D [_sound, objNull, false, getPosASL _object, 2, 1, 1300];
[QGVAR(playCookoffSound), [_object, _simType]] call CBA_fnc_globalEvent;
if (random 1 < 0.15) then {
[_object, _ammo, _speed, true] call _fnc_spawnProjectile;
@ -166,8 +164,7 @@ switch (_simType) do {
case "shotmissile";
case "shotsubmunitions": {
if (random 1 < 0.1) then {
private _sound = selectRandom [QPATHTO_R(sounds\cannon_crack_close.wss), QPATHTO_R(sounds\cannon_crack_close_filtered.wss)];
playSound3D [_sound, objNull, false, getPosASL _object, 3, 1, 1600];
[QGVAR(playCookoffSound), [_object, _simType]] call CBA_fnc_globalEvent;
[_object, _ammo, _speed, random 1 < 0.3] call _fnc_spawnProjectile;
} else {

View File

@ -4,7 +4,7 @@
* Gets all magazines inside of a vehicle.
*
* Arguments:
* 0: Vehicle <OBJECT>
* 0: Object <OBJECT>
*
* Return Value:
* 0: Ammo array <ARRAY>
@ -19,8 +19,8 @@
* Public: No
*/
params ["_vehicle"];
TRACE_1("getVehicleAmmo",_vehicle);
params ["_object"];
TRACE_1("getVehicleAmmo",_object);
private _ammoToDetonate = [];
private _totalAmmo = 0;
@ -45,7 +45,7 @@ private _ammo = "";
_ammoToDetonate pushBack [_magazine, _count, true];
_totalAmmo = _totalAmmo + _count;
};
} forEach (magazinesAllTurrets [_vehicle, true]);
} forEach (magazinesAllTurrets [_object, true]);
// Get ammo from cargo space
{
@ -55,14 +55,14 @@ private _ammo = "";
_ammoToDetonate pushBack [_magazine, _count, false];
_totalAmmo = _totalAmmo + _count;
};
} forEach (magazinesAmmoCargo _vehicle);
} forEach (magazinesAmmoCargo _object);
// Get ammo from transportAmmo / ace_rearm
private _configVehicle = configOf _vehicle;
private _configVehicle = configOf _object;
private _configSupply = (getNumber (_configVehicle >> "transportAmmo")) max (getNumber (_configVehicle >> QEGVAR(rearm,defaultSupply)));
if (_vehicle getVariable [QEGVAR(rearm,isSupplyVehicle), _configSupply > 0]) then {
TRACE_1("transportAmmo vehicle - adding virtual ammo",typeOf _vehicle);
if (_object getVariable [QEGVAR(rearm,isSupplyVehicle), _configSupply > 0]) then {
TRACE_1("transportAmmo vehicle - adding virtual ammo",typeOf _object);
_ammoToDetonate pushBack ["2000Rnd_65x39_belt", 2000, false];
_totalAmmo = _totalAmmo + 2000;

View File

@ -38,3 +38,6 @@
// Common commander hatch defines for default vehicles
#define DEFAULT_COMMANDER_HATCHES ["osa_poklop_commander", "hatch_commander_axis"]
#define DISTANCE_CLOSE 235
#define DISTANCE_MID 952

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -465,7 +465,7 @@
<Italian>Scorta d'acqua</Italian>
<Chinese>飲用水補給</Chinese>
<Chinesesimp>饮用水补给</Chinesesimp>
<Japanese>水資源</Japanese>
<Japanese>水資源</Japanese>
<Russian>Водные ресурсы</Russian>
<Polish>Źródło wody</Polish>
<Korean>식수 보급량</Korean>
@ -478,7 +478,7 @@
<Italian>La quantità di acqua disponibile per interazioni ACE Razioni da Campo di sorgenti d'acqua (-1 nessuna, -10 infinita)</Italian>
<Chinese>水源可供補充飲用水的次數(-1為關閉-10為無限次</Chinese>
<Chinesesimp>水源可供取水的次数(-1为关闭-10为无限次</Chinesesimp>
<Japanese>ACE フィールド レーションで利用できる水源の量を設定できます。(-1で無効化、-10で無限)</Japanese>
<Japanese>ACE フィールド レーションで利用できる水源の資源量を設定できます。(-1で無効化、-10で無限)</Japanese>
<Russian>Количество воды, доступной для использования в ACE Полевые рационы. (-1 - отключено, -10 - бесконечно)</Russian>
<Polish>Ilość wody dostępnej dla Akcji ACE Źródła wody (-1 wyłączone, -10 nieskończone)</Polish>
<Korean>ACE 전투식량 물 근처 행동에서 얼마나 물을 얻어 갈 수 있는지를 정합니다 (-1은 비활성화, -10은 무한대)</Korean>

View File

@ -1,4 +1,3 @@
class Extended_PreStart_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_SCRIPT(XEH_preStart));

View File

@ -92,7 +92,7 @@ class CfgVehicles {
};
class ACE_PlottingBoard {
displayName = CSTRING(ShowPlottingBoard);
condition = QUOTE(GVAR(plottingBoard_Shown) < 1 && {call FUNC(canUsePlottingBoard)});
condition = QUOTE(GVAR(plottingBoard_Shown) == 0 && {call FUNC(canUsePlottingBoard)});
statement = QUOTE(GVAR(plottingBoard_Shown) = 1);
EXCEPTIONS;
showDisabled = 0;
@ -127,7 +127,7 @@ class CfgVehicles {
};
class ACE_PlottingBoardAlign {
displayName = CSTRING(AlignTo);
condition = QUOTE(GVAR(plottingBoard_Shown) > 0);
condition = QUOTE(GVAR(plottingBoard_Shown) != 0);
statement = "";
EXCEPTIONS;
showDisabled = 0;
@ -141,7 +141,7 @@ class CfgVehicles {
class ACE_PlottingBoardAlignBoardMaptool {
displayName = CSTRING(ToMapToolLabel);
condition = QUOTE(GVAR(mapTool_Shown) > 0 && GVAR(plottingBoard_angle) != GVAR(mapTool_angle));
condition = QUOTE(GVAR(mapTool_Shown) != 0 && GVAR(plottingBoard_angle) != GVAR(mapTool_angle));
statement = QUOTE(GVAR(plottingBoard_angle) = GVAR(mapTool_angle));
EXCEPTIONS;
showDisabled = 0;
@ -163,7 +163,7 @@ class CfgVehicles {
class ACE_PlottingBoardAlignAcrylicMaptool {
displayName = CSTRING(ToMapToolLabel);
condition = QUOTE(GVAR(mapTool_Shown) > 0 && GVAR(plottingBoard_acrylicAngle) != GVAR(mapTool_angle));
condition = QUOTE(GVAR(mapTool_Shown) != 0 && GVAR(plottingBoard_acrylicAngle) != GVAR(mapTool_angle));
statement = QUOTE(GVAR(plottingBoard_acrylicAngle) = GVAR(mapTool_angle));
EXCEPTIONS;
showDisabled = 0;
@ -185,7 +185,7 @@ class CfgVehicles {
class ACE_PlottingBoardAlignRulerMaptool {
displayName = CSTRING(ToMapToolLabel);
condition = QUOTE(GVAR(mapTool_Shown) > 0 && GVAR(plottingBoard_rulerAngle) != GVAR(mapTool_angle));
condition = QUOTE(GVAR(mapTool_Shown) != 0 && GVAR(plottingBoard_rulerAngle) != GVAR(mapTool_angle));
statement = QUOTE(GVAR(plottingBoard_rulerAngle) = GVAR(mapTool_angle));
EXCEPTIONS;
showDisabled = 0;

View File

@ -25,13 +25,16 @@ GVAR(plottingBoard_isRotating) = -1;
GVAR(plottingBoard_moveToMouse) = true; // used to display it in center of screen when opened
GVAR(plottingBoard_markers) = createHashMap;
//Install the event handers for the map tools on the main in-game map
[{!isNull findDisplay 12},
{
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["MouseMoving", {_this call FUNC(handleMouseMove);}];
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["MouseButtonDown", {[1, _this] call FUNC(handleMouseButton);}];
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["MouseButtonUp", {[0, _this] call FUNC(handleMouseButton)}];
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", {call FUNC(updateMapToolMarkers); call FUNC(openMapGpsUpdate);}];
// Install the event handers for the map tools on the main in-game map
[{
!isNull findDisplay 12
}, {
private _map = (findDisplay 12) displayCtrl 51;
_map ctrlAddEventHandler ["MouseMoving", LINKFUNC(handleMouseMove)];
_map ctrlAddEventHandler ["MouseButtonDown", {[1, _this] call FUNC(handleMouseButton);}];
_map ctrlAddEventHandler ["MouseButtonUp", {[0, _this] call FUNC(handleMouseButton)}];
_map ctrlAddEventHandler ["Draw", {call FUNC(updateMapToolMarkers); call FUNC(openMapGpsUpdate);}];
}, []] call CBA_fnc_waitUntilAndExecute;
["visibleMap", {

View File

@ -1,21 +1,22 @@
#include "..\script_component.hpp"
/*
* Author: esteldunedain
* Returns the equivalent of 100m in screen coordinates
* Returns the equivalent of 100m in screen coordinates.
*
* Arguments:
* None
*
* Return Value:
* None
* Map scale <NUMBER>
*
* Example:
* call ACE_maptools_fnc_calculateMapScale
* call ace_maptools_fnc_calculateMapScale
*
* Public: No
*/
private _pos = ((findDisplay 12) displayCtrl 51) ctrlMapScreenToWorld [0.5, 0.5];
private _screenOffset = ((findDisplay 12) displayCtrl 51) posWorldToScreen [(_pos select 0) + 100, (_pos select 1)];
private _mapCtrl = (findDisplay 12) displayCtrl 51;
private _pos = _mapCtrl ctrlMapScreenToWorld [0.5, 0.5];
private _screenOffset = _mapCtrl posWorldToScreen (_pos vectorAdd [100, 0]);
(_screenOffset select 0) - 0.5

View File

@ -1,16 +1,16 @@
#include "..\script_component.hpp"
/*
* Author: esteldunedain
* canUseMapGPS
* Returns if the GPS on the map can be used.
*
* Arguments:
* None
*
* Return Value:
* Boolean <BOOL>
* GPS can be used <BOOL>
*
* Example:
* call ACE_maptools_fnc_canUseMapGPS
* call ace_maptools_fnc_canUseMapGPS
*
* Public: No
*/

View File

@ -1,23 +1,23 @@
#include "..\script_component.hpp"
/*
* Author: esteldunedain
* canUseMapTools
* Returns if the map tools can be used.
*
* Arguments:
* None
*
* Return Value:
* Boolean <BOOL>
* Map tools can be used <BOOL>
*
* Example:
* call ACE_maptools_fnc_canUseMapTools
* call ace_maptools_fnc_canUseMapTools
*
* Public: No
*/
visibleMap &&
{alive ACE_player} &&
{"ACE_MapTools" in (ACE_player call EFUNC(common,uniqueItems))} &&
{!GVAR(mapTool_isDragging)} &&
{!GVAR(mapTool_isRotating)} &&
{getUnitLoadout ACE_player param [9, []] param [0, ""] != ""}
{ACE_player getSlotItemName TYPE_MAP != ""} &&
{[ACE_player, "ACE_MapTools"] call EFUNC(common,hasItem)}

View File

@ -17,6 +17,6 @@
visibleMap &&
{alive ACE_player} &&
{[ACE_player, "ACE_PlottingBoard"] call EFUNC(common,hasItem)} &&
{!GVAR(plottingBoard_isDragging)} &&
{GVAR(plottingBoard_isRotating) == -1}
{GVAR(plottingBoard_isRotating) == -1} &&
{[ACE_player, "ACE_PlottingBoard"] call EFUNC(common,hasItem)}

View File

@ -4,63 +4,71 @@
* Prevents the cursor from entering the roamer when drawing lines and records the positions
*
* Arguments:
* 0: The Map <CONTROL>
* 0: Map control <CONTROL>
* 1: Roamer Width <NUMBER>
*
* Return Value:
* None
*
* Example:
* [map, 300] call ace_maptools_fnc_drawLinesOnRoamer
* [CONTROL, 300] call ace_maptools_fnc_drawLinesOnRoamer
*
* Public: No
*/
if (!GVAR(drawStraightLines)) exitWith {};
params ["_theMap", "_roamerWidth"];
params ["_mapCtrl", "_roamerWidth"];
GVAR(mapTool_pos) params ["_roamerPosX", "_roamerPosY"];
private _posCenter = [_roamerPosX, _roamerPosY, 0];
private _posTopRight = [
_roamerPosX + (cos GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (sin GVAR(mapTool_angle)) * DIST_TOP_TO_CENTER_PERC * _roamerWidth,
_roamerPosY + (-sin GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (cos GVAR(mapTool_angle)) * DIST_TOP_TO_CENTER_PERC * _roamerWidth,
0];
_roamerPosX + (cos GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (sin GVAR(mapTool_angle)) * DIST_TOP_TO_CENTER_PERC * _roamerWidth,
_roamerPosY + (-sin GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (cos GVAR(mapTool_angle)) * DIST_TOP_TO_CENTER_PERC * _roamerWidth,
0
];
private _posTopLeft = [
_roamerPosX + (-cos GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (sin GVAR(mapTool_angle)) * DIST_TOP_TO_CENTER_PERC * _roamerWidth,
_roamerPosY + (sin GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (cos GVAR(mapTool_angle)) * DIST_TOP_TO_CENTER_PERC * _roamerWidth,
0];
_roamerPosX + (-cos GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (sin GVAR(mapTool_angle)) * DIST_TOP_TO_CENTER_PERC * _roamerWidth,
_roamerPosY + (sin GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (cos GVAR(mapTool_angle)) * DIST_TOP_TO_CENTER_PERC * _roamerWidth,
0
];
private _posBottomLeft = [
_roamerPosX + (-cos GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (sin GVAR(mapTool_angle)) * DIST_BOTTOM_TO_CENTER_PERC * _roamerWidth,
_roamerPosY + (sin GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (cos GVAR(mapTool_angle)) * DIST_BOTTOM_TO_CENTER_PERC * _roamerWidth,
0];
_roamerPosX + (-cos GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (sin GVAR(mapTool_angle)) * DIST_BOTTOM_TO_CENTER_PERC * _roamerWidth,
_roamerPosY + (sin GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (cos GVAR(mapTool_angle)) * DIST_BOTTOM_TO_CENTER_PERC * _roamerWidth,
0
];
private _posBottomRight = [
_roamerPosX + (cos GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (sin GVAR(mapTool_angle)) * DIST_BOTTOM_TO_CENTER_PERC * _roamerWidth,
_roamerPosY + (-sin GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (cos GVAR(mapTool_angle)) * DIST_BOTTOM_TO_CENTER_PERC * _roamerWidth,
0];
_roamerPosX + (cos GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (sin GVAR(mapTool_angle)) * DIST_BOTTOM_TO_CENTER_PERC * _roamerWidth,
_roamerPosY + (-sin GVAR(mapTool_angle)) * DIST_LEFT_TO_CENTER_PERC * _roamerWidth + (cos GVAR(mapTool_angle)) * DIST_BOTTOM_TO_CENTER_PERC * _roamerWidth,
0
];
private _fnc_Distance = { // Get distance point _p is from a line made from _a to _b (uses 3d array commands, but z should be 0)
private _fnc_distance = { // Get distance point _p is from a line made from _a to _b (uses 3d array commands, but z should be 0)
// Ref: https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line#Vector_formulation
params ["_a", "_b", "_p"];
private _n = _b vectorDiff _a;
private _pa = _a vectorDiff _p;
private _c = _n vectorMultiply ((_pa vectorDotProduct _n) / (_n vectorDotProduct _n));
private _d = _pa vectorDiff _c;
sqrt (_d vectorDotProduct _d);
sqrt (_d vectorDotProduct _d)
};
private _currentMousePos = _theMap ctrlMapScreenToWorld getMousePosition;
private _currentMousePos = _mapCtrl ctrlMapScreenToWorld getMousePosition;
_currentMousePos set [2, 0];
// Break the roamer rectangle into 4 triangle, one for each side
switch (true) do {
case (_currentMousePos inPolygon [_posCenter, _posTopLeft, _posBottomLeft]): { // Left
private _distanceToRoamerLine = ([_posTopLeft, _posBottomLeft, _currentMousePos] call _fnc_Distance);
_currentMousePos = _currentMousePos vectorAdd ([_distanceToRoamerLine, (GVAR(mapTool_angle) - 90) ,0] call CBA_fnc_polar2vect);
private _distanceToRoamerLine = [_posTopLeft, _posBottomLeft, _currentMousePos] call _fnc_distance;
_currentMousePos = _currentMousePos vectorAdd ([_distanceToRoamerLine, GVAR(mapTool_angle) - 90, 0] call CBA_fnc_polar2vect);
if (GVAR(freeDrawingData) isEqualTo []) then { // We start drawing on the line
GVAR(freeDrawingData) = ["left", _currentMousePos, _currentMousePos];
} else {
@ -68,17 +76,21 @@ switch (true) do {
if ((_currentMousePos distance2d _posTopLeft) < ((GVAR(freeDrawingData) select 1) distance2d _posTopLeft)) then {
GVAR(freeDrawingData) set [1, _currentMousePos];
};
if ((_currentMousePos distance2d _posBottomLeft) < ((GVAR(freeDrawingData) select 2) distance2d _posBottomLeft)) then {
GVAR(freeDrawingData) set [2, _currentMousePos];
};
};
};
private _screenPosOfCorrectedPos = _theMap ctrlMapWorldToScreen _currentMousePos;
private _screenPosOfCorrectedPos = _mapCtrl ctrlMapWorldToScreen _currentMousePos;
setMousePosition _screenPosOfCorrectedPos;
};
case (_currentMousePos inPolygon [_posCenter, _posTopLeft, _posTopRight]): { // Top
private _distanceToRoamerLine = ([_posTopLeft, _posTopRight, _currentMousePos] call _fnc_Distance);
_currentMousePos = _currentMousePos vectorAdd ([_distanceToRoamerLine, (GVAR(mapTool_angle) + 0) ,0] call CBA_fnc_polar2vect);
private _distanceToRoamerLine = [_posTopLeft, _posTopRight, _currentMousePos] call _fnc_distance;
_currentMousePos = _currentMousePos vectorAdd ([_distanceToRoamerLine, GVAR(mapTool_angle), 0] call CBA_fnc_polar2vect);
if (GVAR(freeDrawingData) isEqualTo []) then { // We start drawing on the line
GVAR(freeDrawingData) = ["top", _currentMousePos, _currentMousePos];
} else {
@ -86,17 +98,21 @@ switch (true) do {
if ((_currentMousePos distance2d _posTopLeft) < ((GVAR(freeDrawingData) select 1) distance2d _posTopLeft)) then {
GVAR(freeDrawingData) set [1, _currentMousePos];
};
if ((_currentMousePos distance2d _posTopRight) < ((GVAR(freeDrawingData) select 2) distance2d _posTopRight)) then {
GVAR(freeDrawingData) set [2, _currentMousePos];
};
};
};
private _screenPosOfCorrectedPos = _theMap ctrlMapWorldToScreen _currentMousePos;
private _screenPosOfCorrectedPos = _mapCtrl ctrlMapWorldToScreen _currentMousePos;
setMousePosition _screenPosOfCorrectedPos;
};
case (_currentMousePos inPolygon [_posCenter, _posTopRight, _posBottomRight]): { // Right
private _distanceToRoamerLine = ([_posTopRight, _posBottomRight, _currentMousePos] call _fnc_Distance);
_currentMousePos = _currentMousePos vectorAdd ([_distanceToRoamerLine, (GVAR(mapTool_angle) + 90) ,0] call CBA_fnc_polar2vect);
private _distanceToRoamerLine = [_posTopRight, _posBottomRight, _currentMousePos] call _fnc_distance;
_currentMousePos = _currentMousePos vectorAdd ([_distanceToRoamerLine, GVAR(mapTool_angle) + 90, 0] call CBA_fnc_polar2vect);
if (GVAR(freeDrawingData) isEqualTo []) then { // We start drawing on the line
GVAR(freeDrawingData) = ["right", _currentMousePos, _currentMousePos];
} else {
@ -104,17 +120,21 @@ switch (true) do {
if ((_currentMousePos distance2d _posTopRight) < ((GVAR(freeDrawingData) select 1) distance2d _posTopRight)) then {
GVAR(freeDrawingData) set [1, _currentMousePos];
};
if ((_currentMousePos distance2d _posBottomRight) < ((GVAR(freeDrawingData) select 2) distance2d _posBottomRight)) then {
GVAR(freeDrawingData) set [2, _currentMousePos];
};
};
};
private _screenPosOfCorrectedPos = _theMap ctrlMapWorldToScreen _currentMousePos;
private _screenPosOfCorrectedPos = _mapCtrl ctrlMapWorldToScreen _currentMousePos;
setMousePosition _screenPosOfCorrectedPos;
};
case (_currentMousePos inPolygon [_posCenter, _posBottomLeft, _posBottomRight]): { // Bottom
private _distanceToRoamerLine = ([_posBottomLeft, _posBottomRight, _currentMousePos] call _fnc_Distance);
_currentMousePos = _currentMousePos vectorAdd ([_distanceToRoamerLine, (GVAR(mapTool_angle) + 180) ,0] call CBA_fnc_polar2vect);
private _distanceToRoamerLine = [_posBottomLeft, _posBottomRight, _currentMousePos] call _fnc_distance;
_currentMousePos = _currentMousePos vectorAdd ([_distanceToRoamerLine, GVAR(mapTool_angle) + 180, 0] call CBA_fnc_polar2vect);
if (GVAR(freeDrawingData) isEqualTo []) then { // We start drawing on the line
GVAR(freeDrawingData) = ["bottom", _currentMousePos, _currentMousePos];
} else {
@ -122,23 +142,26 @@ switch (true) do {
if ((_currentMousePos distance2d _posBottomLeft) < ((GVAR(freeDrawingData) select 1) distance2d _posBottomLeft)) then {
GVAR(freeDrawingData) set [1, _currentMousePos];
};
if ((_currentMousePos distance2d _posBottomRight) < ((GVAR(freeDrawingData) select 2) distance2d _posBottomRight)) then {
GVAR(freeDrawingData) set [2, _currentMousePos];
};
};
};
private _screenPosOfCorrectedPos = _theMap ctrlMapWorldToScreen _currentMousePos;
private _screenPosOfCorrectedPos = _mapCtrl ctrlMapWorldToScreen _currentMousePos;
setMousePosition _screenPosOfCorrectedPos;
};
};
#ifdef DEBUG_MODE_FULL
_theMap drawIcon ['iconStaticMG',[1,0,0,1],_posTopRight,24,24,getDir player,'1,1',1,0.03,'TahomaB','right'];
_theMap drawIcon ['iconStaticMG',[1,0,0,1],_posTopLeft,24,24,getDir player,'-1,1',1,0.03,'TahomaB','right'];
_theMap drawIcon ['iconStaticMG',[1,0,0,1],_posBottomLeft,24,24,getDir player,'-1,-1',1,0.03,'TahomaB','right'];
_theMap drawIcon ['iconStaticMG',[1,0,0,1],_posBottomRight,24,24,getDir player,'1,-1',1,0.03,'TahomaB','right'];
_mapCtrl drawIcon ['iconStaticMG',[1,0,0,1],_posTopRight,24,24,getDir player,'1,1',1,0.03,'TahomaB','right'];
_mapCtrl drawIcon ['iconStaticMG',[1,0,0,1],_posTopLeft,24,24,getDir player,'-1,1',1,0.03,'TahomaB','right'];
_mapCtrl drawIcon ['iconStaticMG',[1,0,0,1],_posBottomLeft,24,24,getDir player,'-1,-1',1,0.03,'TahomaB','right'];
_mapCtrl drawIcon ['iconStaticMG',[1,0,0,1],_posBottomRight,24,24,getDir player,'1,-1',1,0.03,'TahomaB','right'];
if (GVAR(freeDrawingData) isNotEqualTo []) then {
_theMap drawIcon ['iconStaticMG',[0,0,1,1],GVAR(freeDrawingData) select 1,24,24,getDir player,'1,-1',1,0.03,'TahomaB','right'];
_theMap drawIcon ['iconStaticMG',[0,0,1,1],GVAR(freeDrawingData) select 2,24,24,getDir player,'1,-1',1,0.03,'TahomaB','right'];
_mapCtrl drawIcon ['iconStaticMG',[0,0,1,1],GVAR(freeDrawingData) select 1,24,24,getDir player,'1,-1',1,0.03,'TahomaB','right'];
_mapCtrl drawIcon ['iconStaticMG',[0,0,1,1],GVAR(freeDrawingData) select 2,24,24,getDir player,'1,-1',1,0.03,'TahomaB','right'];
};
#endif

View File

@ -8,7 +8,7 @@
* 1: Parameters of the mouse button event <ARRAY>
*
* Return Value:
* True if event was handled <BOOL>
* None
*
* Example:
* [0, []] call ace_maptools_fnc_handleMouseButton
@ -80,13 +80,11 @@ if (_dir != 1) then {
if (GVAR(mapTool_isDragging) || GVAR(mapTool_isRotating)) then {
GVAR(mapTool_isDragging) = false;
GVAR(mapTool_isRotating) = false;
_handled = true;
};
if (GVAR(plottingBoard_isDragging) || GVAR(plottingBoard_isRotating) > -1) then {
GVAR(plottingBoard_isDragging) = false;
GVAR(plottingBoard_isRotating) = -1;
_handled = true;
};
} else {
// If clicking
@ -125,8 +123,6 @@ if (_dir != 1) then {
// Start dragging
GVAR(mapTool_isDragging) = true;
};
_handled = true;
};
};
};
@ -170,11 +166,7 @@ if (_dir != 1) then {
// Start dragging
GVAR(plottingBoard_isDragging) = true;
};
_handled = true;
};
};
};
};
_handled

View File

@ -5,10 +5,11 @@
*
* Arguments:
* 0: Map control <CONTROL>
* 1: Mouse position on screen coordinates <ARRAY>
* 1: Mouse x position <NUMBER>
* 2: Mouse y position <NUMBER>
*
* Return Value:
* If the event was handled <BOOL>
* None
*
* Example:
* [CONTROL, [0, 5]] call ace_maptools_fnc_handleMouseMove
@ -24,9 +25,7 @@ if (isNull ACE_player || {
private _uniqueItems = ACE_player call EFUNC(common,uniqueItems);
!(("ACE_MapTools" in _uniqueItems) || {"ACE_PlottingBoard" in _uniqueItems})
}) exitWith {
false
};
}) exitWith {};
// If map tools not shown, then exit
if (GVAR(mapTool_Shown) == 0 && {GVAR(plottingBoard_Shown) == 0}) exitWith {false};
@ -36,8 +35,6 @@ private _mousePosition = _mapCtrl ctrlMapScreenToWorld [_mousePosX, _mousePosY];
// Map tools - translation
if (GVAR(mapTool_isDragging)) exitWith {
GVAR(mapTool_pos) = GVAR(mapTool_startPos) vectorAdd _mousePosition vectorDiff GVAR(mapTool_startDragPos);
true
};
// Map tools - rotation
@ -47,15 +44,11 @@ if (GVAR(mapTool_isRotating)) exitWith {
private _angle = (_pos select 0) atan2 (_pos select 1);
GVAR(mapTool_angle) = ((GVAR(mapTool_startAngle) + _angle - GVAR(mapTool_startDragAngle)) % 360 + 360) % 360;
true
};
// Plotting board - translation
if (GVAR(plottingBoard_isDragging)) exitWith {
GVAR(plottingBoard_pos) = GVAR(plottingBoard_startPos) vectorAdd _mousePosition vectorDiff GVAR(plottingBoard_startDragPos);
true
};
// Plotting board - rotation
@ -70,8 +63,4 @@ if (GVAR(plottingBoard_isRotating) > -1) exitWith {
case 1: {GVAR(plottingBoard_acrylicAngle) = _returnAngle};
case 2: {GVAR(plottingBoard_rulerAngle) = _returnAngle};
};
true
};
false

View File

@ -30,7 +30,7 @@ if (_deleted) exitWith {
};
// Do not process non-local or already processed markers, don't check if the plotting board isn't shown
if (!_local || {GVAR(plottingBoard_Shown) < 1} || {QUOTE(ADDON) in _marker}) exitWith {};
if (!_local || {GVAR(plottingBoard_Shown) == 0} || {QUOTE(ADDON) in _marker}) exitWith {};
// Check if the channel the marker was made in can be marked on the plotting board
private _continue = true;

View File

@ -4,32 +4,32 @@
* Return true if the position is inside the map marker (to allow dragging).
*
* Arguments:
* 0: x Position (in meters) <NUMBER>
* 1: y Position (in meters) <NUMBER>
* 0: x position (in meters) <NUMBER>
* 1: y position (in meters) <NUMBER>
*
* Return Value:
* Boolean <BOOL>
* Is inside map tool <BOOL>
*
* Example:
* [0, 5] call ACE_maptools_fnc_isInsideMapTool
* [0, 5] call ace_maptools_fnc_isInsideMapTool
*
* Public: No
*/
if (GVAR(mapTool_Shown) == 0) exitWith {false};
private _textureWidth = [TEXTURE_WIDTH_IN_M, TEXTURE_WIDTH_IN_M / 2] select (GVAR(mapTool_Shown) - 1);
private _pos = [_this select 0, _this select 1, 0];
private _relPos = _pos vectorDiff [GVAR(mapTool_pos) select 0, GVAR(mapTool_pos) select 1, 0];
private _dirVector = [sin(GVAR(mapTool_angle)), cos(GVAR(mapTool_angle)), 0];
private _relPos = _this vectorDiff GVAR(mapTool_pos);
private _dirVector = [sin GVAR(mapTool_angle), cos GVAR(mapTool_angle)];
// Projection of the relative position over the longitudinal axis of the map tool
private _lambdaLong = _dirVector vectorDotProduct _relPos;
if (_lambdaLong < DIST_BOTTOM_TO_CENTER_PERC * _textureWidth) exitWith {false};
// Projection of the relative position over the trasversal axis of the map tool
private _lambdaTrasAbs = vectorMagnitude (_relPos vectorDiff (_dirVector vectorMultiply _lambdaLong));
if (_lambdaLong > DIST_TOP_TO_CENTER_PERC * _textureWidth) exitWith {false};
if (_lambdaTrasAbs > DIST_LEFT_TO_CENTER_PERC * _textureWidth) exitWith {false};
true
// Projection of the relative position over the transversal axis of the map tool
private _lambdaTransAbs = vectorMagnitude (_relPos vectorDiff (_dirVector vectorMultiply _lambdaLong));
_lambdaTransAbs <= DIST_LEFT_TO_CENTER_PERC * _textureWidth

View File

@ -4,8 +4,8 @@
* Return if the position is inside the map marker (to allow dragging) or not.
*
* Arguments:
* 0: x Position (in meters) <NUMBER>
* 1: y Position (in meters) <NUMBER>
* 0: x position (in meters) <NUMBER>
* 1: y position (in meters) <NUMBER>
*
* Return Value:
* Where in the plotting board it is <NUMBER>
@ -30,9 +30,11 @@ private _isRuler = if (GVAR(plottingBoard_Shown) == 2) then {
private _dirRightVector = [_dirVector select 1, -(_dirVector select 0)];
private _rulerAng = acos (_rulerVector vectorCos _relPos);
if (cos _rulerAng > 0 && {tan (_rulerAng) * _dist < PLOTTINGBOARD_RULERHALFWIDTH}) exitWith {true};
if (cos _rulerAng > 0 && {(tan _rulerAng) * _dist < PLOTTINGBOARD_RULERHALFWIDTH}) exitWith {true};
_dist > PLOTTINGBOARD_RULERINNERCIRCLE && {_dist < PLOTTINGBOARD_RULEROUTERCIRCLE && {abs (_rulerAng * DEGTOMILS) < PLOTTINGBOAR_RULEROUTERHALFANGLE}}
} else {
false
};
if (_isRuler) exitWith {2};

View File

@ -1,34 +1,39 @@
#include "..\script_component.hpp"
/*
* Author: esteldunedain, PabstMirror
* update gps display, called from main map's draw
* Update GPS display, called from main map's draw.
*
* Arguments:
* 0: Map ctrl <CONTROL>
* 0: Map control <CONTROL>
*
* Return Value:
* None
*
* Example:
* [findDisplay 12 displayCtrl 51] call ACE_maptools_fnc_openMapGpsUpdate;
* [findDisplay 12 displayCtrl 51] call ace_maptools_fnc_openMapGpsUpdate;
*
* Public: No
*/
params ["_mapCtrl"];
private _mapDisplay = ctrlParent _mapCtrl;
if ((!GVAR(mapGpsShow)) || {!(call FUNC(canUseMapGPS))}) exitWith {
if (!GVAR(mapGpsShow) || {!(call FUNC(canUseMapGPS))}) exitWith {
(_mapDisplay displayCtrl 913589) ctrlShow false;
};
(_mapDisplay displayCtrl 913589) ctrlShow true;
if (CBA_missionTime < GVAR(mapGpsNextUpdate)) exitWith {};
GVAR(mapGpsNextUpdate) = CBA_missionTime + 0.5;
private _ctrl = _mapDisplay displayCtrl 913590;
_ctrl ctrlSetText str (round (getDir ACE_player)); // Set Heading
_ctrl = _mapDisplay displayCtrl 913591;
_ctrl ctrlSetText str (round ((getPosASL ACE_player) select 2) + EGVAR(common,mapAltitude)); // Set Altitude
_ctrl = _mapDisplay displayCtrl 913592;
_ctrl ctrlSetText mapGridPosition ACE_player; // Set grid cords

View File

@ -27,6 +27,7 @@ if (GVAR(plottingBoard_Shown) == 0) then {
} forEach GVAR(plottingBoard_markers);
} else {
if !([ACE_player, "ACE_PlottingBoard"] call EFUNC(common,hasItem)) exitWith {};
if (GVAR(plottingBoard_moveToMouse)) then {
GVAR(plottingBoard_pos) = _mapCtrl ctrlMapScreenToWorld getMousePosition;
GVAR(plottingBoard_moveToMouse) = false; // we only need to do this once after opening the map tool
@ -90,7 +91,7 @@ if (GVAR(plottingBoard_Shown) == 0) then {
} forEach GVAR(plottingBoard_markers);
};
if ((GVAR(mapTool_Shown) > 0) && {[ACE_player, "ACE_MapTools"] call EFUNC(common,hasItem)}) then {
if ((GVAR(mapTool_Shown) != 0) && {[ACE_player, "ACE_MapTools"] call EFUNC(common,hasItem)}) then {
// Open map tools in center of screen when toggled to be shown
if (GVAR(mapTool_moveToMouse)) then {
GVAR(mapTool_pos) = _mapCtrl ctrlMapScreenToWorld getMousePosition;

View File

@ -1,4 +1,4 @@
private _category = format ["ACE %1", localize LSTRING(Name)];
private _category = format ["ACE %1", LLSTRING(Name)];
[
QGVAR(rotateModifierKey), "LIST",

View File

@ -18,17 +18,17 @@
#define DEGTOMILS 17.7777778
#define TEXTURE_WIDTH_IN_M 6205
#define CENTER_OFFSET_Y_PERC 0.1606
#define CONSTANT_SCALE 0.2
#define TEXTURE_WIDTH_IN_M 6205
#define CENTER_OFFSET_Y_PERC 0.1606
#define CONSTANT_SCALE 0.2
#define DIST_BOTTOM_TO_CENTER_PERC -0.33
#define DIST_TOP_TO_CENTER_PERC 0.65
#define DIST_LEFT_TO_CENTER_PERC 0.30
#define DIST_TOP_TO_CENTER_PERC 0.65
#define DIST_LEFT_TO_CENTER_PERC 0.30
#define PLOTTINGBOARD_DRAWRANGE 3000
#define PLOTTINGBOARD_TEXTUREWIDTH 6000
#define PLOTTINGBOARD_RULERCENTER 450
#define PLOTTINGBOARD_RULERHALFWIDTH 100
#define PLOTTINGBOARD_DRAWRANGE 3000
#define PLOTTINGBOARD_TEXTUREWIDTH 6000
#define PLOTTINGBOARD_RULERCENTER 450
#define PLOTTINGBOARD_RULERHALFWIDTH 100
#define PLOTTINGBOARD_RULERINNERCIRCLE 2900
#define PLOTTINGBOARD_RULEROUTERCIRCLE 3000
#define PLOTTINGBOARD_RULEROUTERHALFANGLE 100

View File

@ -1390,7 +1390,7 @@
<French>Définit s'il s'agit d'un véhicule sanitaire.</French>
<Portuguese>Se o objeto será ou não um veículo médico</Portuguese>
<Russian>Будет ли объект считаться медицинским транспортом.</Russian>
<Japanese>対象が医療車両であるかどうか。</Japanese>
<Japanese>車両をを医療車両として割り当てます</Japanese>
<Korean>이 물체는 의료 차량이 됩니다.</Korean>
<Chinesesimp>是否使该载具为医疗载具?</Chinesesimp>
<Chinese>是否使該載具為醫療載具?</Chinese>
@ -1491,7 +1491,7 @@
<French>Est un véhicule sanitaire</French>
<Hungarian>Orvosi jármű-e</Hungarian>
<Italian>È Veicolo Medico</Italian>
<Japanese>医療車両</Japanese>
<Japanese>医療車両とする</Japanese>
<Korean>의료 차량</Korean>
<Chinesesimp>是医疗载具</Chinesesimp>
<Chinese>是醫療載具</Chinese>
@ -1508,7 +1508,7 @@
<French>Est une installation sanitaire</French>
<Hungarian>Orvosi létesítmény-e</Hungarian>
<Italian>È Struttura Medica</Italian>
<Japanese>医療施設</Japanese>
<Japanese>医療施設とする</Japanese>
<Korean>의료시설</Korean>
<Chinesesimp>是医疗设施</Chinesesimp>
<Chinese>是醫療設施</Chinese>
@ -1525,7 +1525,7 @@
<French>Définit l'objet comme étant une installation sanitaire.</French>
<Hungarian>Egy objektum orvosi létesítményként való regisztrálása</Hungarian>
<Italian>Registra un oggetto come struttura medica</Italian>
<Japanese>オブジェクトを医療施設として割り当て</Japanese>
<Japanese>オブジェクトを医療施設として割り当てます</Japanese>
<Korean>물체를 의료시설로 등록합니다</Korean>
<Chinesesimp>指定一个物体作为医疗设施</Chinesesimp>
<Chinese>指定一個物件作為醫療設施</Chinese>

View File

@ -651,7 +651,7 @@
<Key ID="STR_ACE_Rearm_rearmCargo_edenName">
<English>Rearm Cargo</English>
<German>Munitionsvorrat</German>
<Japanese>再武装用カーゴ</Japanese>
<Japanese>再武装用資源積載量</Japanese>
<Polish>Ładunek Dozbrajający</Polish>
<Italian>Munizioni Caricate</Italian>
<Russian>Боеприпасы для перевооружения</Russian>
@ -666,7 +666,7 @@
<Key ID="STR_ACE_Rearm_rearmCargo_edenDesc">
<English>The cargo for rearming (-1 disable)</English>
<German>Der Munitionsvorrat, zum Aufmunitionieren von Fahrzeugen (-1 deaktiviert)</German>
<Japanese>カーゴからの再武装 (-1 で無効)</Japanese>
<Japanese>再武装に使用する資源の積載量 (-1 で補給無効)</Japanese>
<Polish>Ładunek do dozbrajania (-1 wyłączy)</Polish>
<Italian>Il carico di munizioni per poter riarmare (-1 per disabilitarlo)</Italian>
<Russian>Объем боеприпасов для перевооружения (-1 для отмены)</Russian>

View File

@ -553,7 +553,7 @@
<Russian>Время взаимодействия со шлангом</Russian>
<Spanish>Tiempo de interacción con la Bomba/Manguera</Spanish>
<Italian>Tempo di interazione Pompa/Pistola</Italian>
<Japanese>ポンプホースのインタラクション所要時間</Japanese>
<Japanese>ポンプ/ホースのインタラクション所要時間</Japanese>
<Polish>Czas Interakcji z Pompą/Wężem</Polish>
<German>Interaktionszeit zwischen Pumpe und Schlauch</German>
<French>Temps d'interaction pompe/tuyau</French>
@ -574,7 +574,7 @@
<English>Fuel Cargo Volume</English>
<German>Tankvolumen</German>
<Russian>Объем топлива для заправки</Russian>
<Japanese>貯油</Japanese>
<Japanese>給油用燃料積載</Japanese>
<Italian>Capacità di Carico Carburante</Italian>
<Chinese>儲油量</Chinese>
<Chinesesimp>储油量</Chinesesimp>
@ -591,7 +591,7 @@
<English>The fuel volume available for refueling (-1 disable, -10 if infinite)</English>
<German>Das Tankvolumen, welches zum Nachtanken verfügbar ist (-1 deaktiviert, -10 unendlich)</German>
<Russian>Объем топлива, доступный для заправки других машин (-1 отключить, -10 если неограничен)</Russian>
<Japanese>給油用の貯油量を設定できます (-1で無効、-10で無限)</Japanese>
<Japanese>給油に使用する燃料の積載量 (-1で補給無効、-10で無限補給)</Japanese>
<Italian>La capacità di carburante disponibile al rifornimento altrui (-1 disabilita, -10 se infinito)</Italian>
<Chinese>設定有多少油料可供載具進行加油(-1時關閉-10為無限油量)</Chinese>
<Chinesesimp>设定有多少油料可供载具进行加油(-1时关闭-10为无限油量</Chinesesimp>

View File

@ -390,7 +390,7 @@
<Czech>Přidat náhradní díly do vozidla (vyžaduje úložný prostor)?</Czech>
<Italian>Aggiungi parti di ricambio ai veicoli (richiede spazio nel carico)?</Italian>
<French>Ajoute des pièces de rechange aux véhicules (nécessite le système de cargaison).</French>
<Japanese>車両へ予備部品を追加しますか? (カーゴ コンポーネントが必要)</Japanese>
<Japanese>車両へ予備部品を追加しますか? (貨物室が必要)</Japanese>
<Korean>차량에 예비 부품을 더합니까?(짐칸 요소 필요)</Korean>
<Chinesesimp>添加载具备件(需相关货物组件)?</Chinesesimp>
<Chinese>添加載具備件 (需相關貨物組件)?</Chinese>
@ -1622,7 +1622,7 @@
<Czech>Přiřaďte opraváresnké vozidlo</Czech>
<Italian>Assegna Veicolo Riparazioni</Italian>
<French>Affecter véhicule(s) de réparation</French>
<Japanese>修理車両として指定</Japanese>
<Japanese>修理車両に割り当て</Japanese>
<Korean>정비 차량 등록</Korean>
<Chinesesimp>指定维修载具</Chinesesimp>
<Chinese>指定維修載具</Chinese>
@ -1652,7 +1652,7 @@
<Czech>Seznam vozidel, která budou klasifikována jako opravárenská, oddělit čárkami.</Czech>
<Italian>Lista di Veicoli che verranno considerati veicoli riparazioni, separati da virgole.</Italian>
<French>Liste de véhicules qui seront classés comme véhicules de réparation, séparés par des virgules.</French>
<Japanese>修理車両に指定される車両のリスト。カンマで区切ります。</Japanese>
<Japanese>修理車両に割り当てる車両のリスト。カンマで区切ります。</Japanese>
<Korean>목록내 차량은 정비 차량으로 분류됩니다. 쉼표로 구분합니다.</Korean>
<Chinesesimp>载具名单,把载具名称输入在这边即可定义其为维修载具。每个载具使用逗号以做区隔。</Chinesesimp>
<Chinese>載具名單,把載具名稱輸入在這邊即可定義其為維修載具。每個載具使用逗號以做區隔。</Chinese>
@ -1667,7 +1667,7 @@
<Czech>Opravárenské vozidlo</Czech>
<Italian>È Veicolo Riparazioni</Italian>
<French>Est un véhicule de réparation</French>
<Japanese>修理車両する</Japanese>
<Japanese>修理車両する</Japanese>
<Korean>은 정비 차량이다</Korean>
<Chinesesimp>是维修载具</Chinesesimp>
<Chinese>是維修載具</Chinese>
@ -1682,7 +1682,7 @@
<Czech>Je vozidlo klasifikováno jako opravárenské?</Czech>
<Italian>Il veicolo è classificato dome veicolo riparazioni?</Italian>
<French>Définit s'il s'agit d'un véhicule de réparation.</French>
<Japanese>車両を修理車両に指定しますか?</Japanese>
<Japanese>車両を修理車両として割り当てます</Japanese>
<Korean>이 차량을 정비 차량으로 분류합니까?</Korean>
<Chinesesimp>此载具是维修载具吗?</Chinesesimp>
<Chinese>此載具是維修載具嗎?</Chinese>
@ -1712,7 +1712,7 @@
<Czech>Přiřaďte opravárenské zařízení</Czech>
<Italian>Assegna Struttura Riparazioni</Italian>
<French>Affecter atelier(s) de réparation</French>
<Japanese>修理施設とする</Japanese>
<Japanese>修理施設に割り当て</Japanese>
<Korean>정비 시설 등록</Korean>
<Chinesesimp>指定维修设施</Chinesesimp>
<Chinese>指定維修設施</Chinese>
@ -1742,7 +1742,7 @@
<Czech>Seznam objektů, které budou klasifikovány jako opravárenské zařízení, oddělit čárkami.</Czech>
<Italian>Lista di oggetti che verranno classificati come strutture riparazioni, separati da virgole.</Italian>
<French>Liste d'objets qui seront classés comme ateliers de réparation, séparés par des virgules.</French>
<Japanese>修理施設に指定されるオブジェクトのリスト。カンマで区切ります。</Japanese>
<Japanese>修理施設に割り当てるオブジェクトのリスト。カンマで区切ります。</Japanese>
<Korean>목록내 시설은 정비 시설으로 분류됩니다. 쉼표로 구분합니다.</Korean>
<Chinesesimp>设施名单,把设施名称输入在这边即可定义其为维修设施。每个设施使用逗号以做区隔。</Chinesesimp>
<Chinese>設施名單,把設施名稱輸入在這邊即可定義其為維修設施。每個設施使用逗號以做區隔。</Chinese>
@ -1772,7 +1772,7 @@
<Czech>Je objekt klasifikován jako opravárenské zařízení?</Czech>
<Italian>L'oggetto è classificato come struttura riparazioni?</Italian>
<French>Définit l'objet comme étant un atelier de réparation.</French>
<Japanese>オブジェクトを修理施設として指定しますか?</Japanese>
<Japanese>オブジェクトを修理施設として割り当てます</Japanese>
<Korean>이 시설을 정비 시설로 분류합니까?</Korean>
<Chinesesimp>此设施是维修设施吗?</Chinesesimp>
<Chinese>此設施是維修設施嗎?</Chinese>
@ -2054,7 +2054,7 @@
<Key ID="STR_ACE_Repair_editorLoadedTracks_tooltip">
<English>Number of spare tracks in cargo.</English>
<German>Anzahl der Ersatzketten im Laderaum.</German>
<Japanese>カーゴ内の予備履帯の数を指定</Japanese>
<Japanese>貨物室内の予備履帯の数を指定</Japanese>
<Italian>Numero dei cingoli di scorta nel carico.</Italian>
<Chinese>設定載具在貨艙內攜帶的備用履帶數量</Chinese>
<Chinesesimp>设定载具在货舱内携带的备用履带数量。</Chinesesimp>
@ -2084,7 +2084,7 @@
<Key ID="STR_ACE_Repair_editorLoadedWheels_tooltip">
<English>Number of spare wheels in cargo.</English>
<German>Anzahl der Ersatzreifen im Laderaum.</German>
<Japanese>カーゴ内の予備タイヤの数を指定</Japanese>
<Japanese>貨物室内の予備タイヤの数を指定</Japanese>
<Italian>Numero delle ruote di scorta nel cargo.</Italian>
<Chinese>設定載具在貨艙內攜帶的備用輪胎數量</Chinese>
<Chinesesimp>设定载具在货舱内携带的备用轮胎数量。</Chinesesimp>

View File

@ -998,7 +998,7 @@
<German>Einheit muss ein Fahrzeug mit Ladekapazität sein</German>
<Spanish>La unidad debe ser un vehículo con espacio de carga</Spanish>
<French>L'unité doit être un véhicule muni d'un espace de stockage.</French>
<Japanese>ユニットはカーゴのある車両である必要があります</Japanese>
<Japanese>ユニットは貨物室のある車両である必要があります</Japanese>
<Korean>대상이 반드시 화물을 실을 수 있는 차량이어야 합니다</Korean>
<Chinesesimp>单位必须是载具且有载货空间</Chinesesimp>
<Chinese>單位必須是載具且有載貨空間</Chinese>
@ -1013,7 +1013,7 @@
<German>Einheit muss freie Ladekapazität haben</German>
<Spanish>La unidad debe tener espacio de carga disponible</Spanish>
<French>L'unité doit avoir de l'espace de chargement disponible.</French>
<Japanese>ユニットのカーゴには空きがありません</Japanese>
<Japanese>ユニットの貨物室に空きが必要です</Japanese>
<Korean>대상의 화물공간이 남아 있어야 합니다</Korean>
<Chinesesimp>单位必须有剩余的载货空间</Chinesesimp>
<Chinese>單位必須有剩餘的載貨空間</Chinese>
@ -1180,7 +1180,7 @@
<French>Cargaison :</French>
<Russian>Груз:</Russian>
<Czech>Náklad:</Czech>
<Japanese>カーゴ:</Japanese>
<Japanese>貨物:</Japanese>
<Polish>Ładunek:</Polish>
<German>Ladung:</German>
<Korean>화물:</Korean>
@ -1303,7 +1303,7 @@
<English>Load into Cargo</English>
<German>In Frachtraum laden</German>
<Italian>Carica nel carico</Italian>
<Japanese>カーゴへ積載</Japanese>
<Japanese>貨物室へ積載</Japanese>
<Chinese>裝載到貨物中</Chinese>
<Chinesesimp>装载到货物中</Chinesesimp>
<Korean>화물 싣기</Korean>
@ -1318,7 +1318,7 @@
<English>Unload from cargo</English>
<German>Aus Frachtraum ausladen</German>
<Italian>Scarica dal carico</Italian>
<Japanese>カーゴから降ろす</Japanese>
<Japanese>貨物室から降ろす</Japanese>
<Korean>화물 내리기</Korean>
</Key>
<Key ID="STR_ACE_Zeus_ModuleToggleNVG_DisplayName">
@ -1901,7 +1901,7 @@
<Key ID="STR_ACE_Zeus_moduleCargoParadrop_DisplayName">
<English>Paradrop Cargo</English>
<German>Ladung abwerfen (Fallschirm)</German>
<Japanese>カーゴを空中投下</Japanese>
<Japanese>貨物を空中投下</Japanese>
<Polish>Zrzut ładunku (cargo)</Polish>
<Russian>Десантировать груз</Russian>
<Portuguese>Soltar carga de paraquedas</Portuguese>
@ -1917,7 +1917,7 @@
<Key ID="STR_ACE_Zeus_paradrop_noCargoLoaded">
<English>No cargo loaded</English>
<German>Keine Ladung geladen</German>
<Japanese>カーゴは積載されていません</Japanese>
<Japanese>貨物は積載されていません</Japanese>
<Polish>Niczego nie załadowano do cargo</Polish>
<Russian>Грузовой отсек пуст</Russian>
<Portuguese>Nenhuma carga carregada</Portuguese>

View File

@ -0,0 +1 @@
forfiles /s /m *.wav /c "DeWSSDos -wss/0 -P -V -Y @path @FNAME.wss"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.