mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' into pike
This commit is contained in:
commit
65b34e9fc9
25
.github/ISSUE_TEMPLATE.md
vendored
25
.github/ISSUE_TEMPLATE.md
vendored
@ -1,25 +0,0 @@
|
||||
**Arma 3 Version:** `x.xx` (stable / rc / dev)
|
||||
**CBA Version:** `3.x.x` (stable / dev + commit hash)
|
||||
**ACE3 Version:** `3.x.x` (stable / dev + commit hash)
|
||||
|
||||
**Mods:**
|
||||
```
|
||||
- CBA_A3
|
||||
- ace
|
||||
```
|
||||
|
||||
**Description:**
|
||||
- Add a detailed description of the error. This makes it easier for us to fix the issue.
|
||||
|
||||
**Steps to reproduce:**
|
||||
- Add the steps needed to reproduce the issue.
|
||||
|
||||
**Where did the issue occur?**
|
||||
- Dedicated / Self-Hosted Multiplayer / Singleplayer / Editor (Singleplayer) / Editor (Multiplayer) / Virtual Arsenal
|
||||
|
||||
**Additional information:**
|
||||
- Provide any additional information that will help us solve this issue.
|
||||
|
||||
**RPT log file:**
|
||||
- Add a link ([gist](https://gist.github.com) or [pastebin](http://pastebin.com)) to the client and/or server RPT file. An instruction to find your RPT files can be found [here](https://community.bistudio.com/wiki/Crash_Files#Arma_3).
|
||||
- If possible at the time the bug is encountered, go to Options and select "ACE Debug To Clipboard", this will print extensive debug information to the RPT file and copy it to clipboard.
|
52
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
52
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@ -0,0 +1,52 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: kind/bug
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
<!--
|
||||
🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨
|
||||
|
||||
I ACKNOWLEDGE THE FOLLOWING BEFORE PROCEEDING:
|
||||
1. If I delete this entire template or parts of it and go my own path, the team may close my issue without further explanation or engagement.
|
||||
2. If I list multiple bugs/concerns in this one issue, the team may close my issue without further explanation or engagement.
|
||||
3. If I write an issue that has duplicates, the team may close my issue without further explanation or engagement (and without necessarily spending time to find the exact duplicate ID number).
|
||||
4. If I leave the title incomplete when filing the issue, the team may close my issue without further explanation or engagement.
|
||||
5. If I file something completely blank in the body, the team may close my issue without further explanation or engagement.
|
||||
6. If I file an issue without collecting logs (RPT file, etc...), the team may close my issue without further explanation or engagement.
|
||||
|
||||
All good? Then proceed and fill out the items below.
|
||||
-->
|
||||
|
||||
**Mods (complete and add to the following information):**
|
||||
- **Arma 3:** `x.xx` [e.g. 1.00 stable, rc, dev]
|
||||
- **CBA:** `3.x.x` [e.g. 3.0.0 stable, commit hash]
|
||||
- **ACE3:** `3.x.x` [eg. 3.0.0 stable, commit hash]
|
||||
<!-- Make sure to reproduce the issue with only CBA and ACE3 on a newly created mission! -->
|
||||
|
||||
**Description:**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**Steps to reproduce:**
|
||||
_Follow [https://ace3mod.com/img/wiki/user/issue_flowchart.png](this flowchart)!_
|
||||
|
||||
1. _Go to ..._
|
||||
2. _Click ..._
|
||||
3. _See ..._
|
||||
|
||||
**Expected behavior:**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Where did the issue occur?**
|
||||
- Dedicated / Self-Hosted Multiplayer / Singleplayer / Editor (Singleplayer) / Editor (Multiplayer) / Virtual Arsenal
|
||||
|
||||
**Log Files:**
|
||||
- Link to ([gist](https://gist.github.com) or [pastebin](http://pastebin.com)) to the client and/or server RPT file. An instruction to find your RPT files can be found [here](https://community.bistudio.com/wiki/Crash_Files#Arma_3).
|
||||
|
||||
**Additional context:**
|
||||
Add any other context about the problem here.
|
||||
|
||||
**Screenshots:**
|
||||
If applicable, add screenshots to help explain your problem.
|
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@ -0,0 +1 @@
|
||||
blank_issues_enabled: false
|
20
.github/ISSUE_TEMPLATE/enhancement-request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/enhancement-request.md
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Enhancement request
|
||||
about: Suggest an improvement for this project
|
||||
title: ''
|
||||
labels: kind/enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your enhancement related to a problem?**
|
||||
A clear and concise description of what the enhancement entails. Ex. [...] would improve user experience.
|
||||
|
||||
**Solution you'd like:**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Alternatives you've considered:**
|
||||
A clear and concise description of any alternative solutions or ideas you've considered.
|
||||
|
||||
**Additional context:**
|
||||
Add any other context or screenshots about the enhancement here.
|
12
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
12
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: kind/feature request, status/invalid
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
### Do not post feature requests here!
|
||||
|
||||
Learn how to make a feature request [here](https://ace3mod.com/wiki/user/how-to-make-a-feature-request.html).
|
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -3,3 +3,4 @@
|
||||
- Each change in a separate line
|
||||
- Include documentation if applicable
|
||||
- Respect the [Development Guidelines](https://ace3mod.com/wiki/development/)
|
||||
- Follow title standard `Component - Add|Fix|Improve|Change|Make|Remove bananas`
|
||||
|
42
.github/release-drafter.yml
vendored
Normal file
42
.github/release-drafter.yml
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
branches:
|
||||
- master
|
||||
- release-drafter # for testing edits to this configuration
|
||||
|
||||
name-template: 'Version $NEXT_PATCH_VERSION'
|
||||
tag-template: 'v$NEXT_PATCH_VERSION'
|
||||
|
||||
categories:
|
||||
- title: '**ADDED:**'
|
||||
labels:
|
||||
- 'kind/feature request'
|
||||
- 'kind/added feature'
|
||||
- title: '**FIXED:**'
|
||||
labels:
|
||||
- 'kind/bug fix'
|
||||
- title: '**IMPROVED:**'
|
||||
labels:
|
||||
- 'kind/enhancement'
|
||||
- 'kind/optimization'
|
||||
- title: '**CHANGED:**'
|
||||
labels:
|
||||
- 'kind/cleanup'
|
||||
- 'area/compatibility'
|
||||
- title: '**TRANSLATIONS:**'
|
||||
labels:
|
||||
- 'area/translations'
|
||||
|
||||
exclude-labels:
|
||||
- 'ignore changelog'
|
||||
|
||||
change-template: '- $TITLE (#$NUMBER)'
|
||||
template: |
|
||||
_Requires CBA version X.Y.Z or later and Arma 3 version X.Y or later._
|
||||
|
||||
## Change Log Summary
|
||||
|
||||
$CHANGES
|
||||
|
||||
replacers:
|
||||
# Category titles
|
||||
- search: '/\#\# (\*\*(ADDED|FIXED|IMPROVED|CHANGED|TRANSLATIONS):\*\*)/g'
|
||||
replace: '$1'
|
1
.github/stale.yml
vendored
1
.github/stale.yml
vendored
@ -14,6 +14,7 @@ exemptLabels:
|
||||
- status/cherrypick
|
||||
- status/merge on release
|
||||
- sticky
|
||||
- help wanted
|
||||
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: status/stale
|
||||
|
48
.github/workflows/arma.yml
vendored
Normal file
48
.github/workflows/arma.yml
vendored
Normal file
@ -0,0 +1,48 @@
|
||||
name: Arma
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
validate:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the source code
|
||||
uses: actions/checkout@master
|
||||
- name: Validate SQF
|
||||
run: python3 tools/sqf_validator.py
|
||||
- name: Validate Config
|
||||
run: python3 tools/config_style_checker.py
|
||||
- name: Validate Stringtables
|
||||
run: python3 tools/stringtable_validator.py
|
||||
- name: Check Strings
|
||||
run: python3 tools/check_strings.py
|
||||
- name: Check for BOM
|
||||
uses: arma-actions/bom-check@master
|
||||
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the source code
|
||||
uses: actions/checkout@master
|
||||
- name: Lint (sqflint)
|
||||
uses: arma-actions/sqflint@master
|
||||
continue-on-error: true # No failure due to many false-positives
|
||||
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the source code
|
||||
uses: actions/checkout@master
|
||||
- name: Build using HEMTT
|
||||
uses: arma-actions/hemtt@master
|
||||
with:
|
||||
command: build --release --ci
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v2-preview
|
||||
with:
|
||||
name: ace3-${{ github.sha }}-nobin
|
||||
path: releases/ace3_*.zip
|
24
.github/workflows/documentation.yml
vendored
Normal file
24
.github/workflows/documentation.yml
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
name: Documentation
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
update:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the source code
|
||||
uses: actions/checkout@master
|
||||
- name: Install Python packages
|
||||
run: |
|
||||
pip3 install wheel
|
||||
pip3 install setuptools
|
||||
pip3 install pygithub
|
||||
pip3 install pygithub3
|
||||
- name: Deploy
|
||||
if: github.repository == 'acemod/ACE3' && ! contains(github.event.head_commit.message, '[ci skip]')
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.DOCS_TOKEN }}
|
||||
run: python3 tools/deploy.py
|
31
.github/workflows/extensions.yml
vendored
Normal file
31
.github/workflows/extensions.yml
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
name: Extensions
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'extensions/*'
|
||||
- 'extensions/*/*'
|
||||
- 'extensions/*/*/*'
|
||||
- 'extensions/*/*/*/*'
|
||||
- 'extensions/*/*/*/*/*'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ${{ matrix. os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [windows-latest]
|
||||
|
||||
steps:
|
||||
- name: Checkout the source code
|
||||
uses: actions/checkout@master
|
||||
- name: Build
|
||||
shell: cmd
|
||||
run: |
|
||||
cd extensions/build
|
||||
cmake .. && cmake --build .
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@master
|
||||
with:
|
||||
name: ace3_extensions-${{ matrix.os }}-debug
|
||||
path: extensions/build
|
16
.github/workflows/release-drafter.yml
vendored
Normal file
16
.github/workflows/release-drafter.yml
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
name: Release Drafter
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
draft:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Release Drafter
|
||||
if: github.repository == 'acemod/ACE3'
|
||||
uses: release-drafter/release-drafter@v5
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
@ -1,20 +0,0 @@
|
||||
# No issues and PRs without labels
|
||||
issues=false
|
||||
pr-wo-labels=false
|
||||
|
||||
# Issues are disabled, don't fetch them
|
||||
max-issues=0
|
||||
|
||||
# Label filters
|
||||
exclude-labels=by design,can't reproduce,duplicate,question,invalid,wontfix,ignore changelog
|
||||
|
||||
# Tag is created before generating changelog for release candidates
|
||||
unreleased=false
|
||||
|
||||
# No section labels, we only want a list of merged PRs (label separation only works for Issues)
|
||||
simple-list=true
|
||||
|
||||
# Misc
|
||||
author=false
|
||||
compare-link=false
|
||||
header-label=## Change Log Summary
|
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,8 +1,10 @@
|
||||
@*
|
||||
*.zip
|
||||
release/*
|
||||
releases/*
|
||||
hemtt
|
||||
hemtt.exe
|
||||
tools/temp
|
||||
tools/armake.exe
|
||||
*.cache
|
||||
*.pbo
|
||||
texHeaders.bin
|
||||
|
24
AUTHORS.txt
24
AUTHORS.txt
@ -6,8 +6,10 @@
|
||||
# request, preferably including an email address.
|
||||
|
||||
# CORE TEAM
|
||||
Brandon (TCVM) <brandondanyluk366@gmail.com>
|
||||
bux578 <github@jonathandavid.de>
|
||||
commy2
|
||||
Dahlgren
|
||||
esteldunedain <nicolas.d.badano@gmail.com>
|
||||
Felix Wiegand <koffeinflummi@gmail.com>
|
||||
Garth "L-H" de Wet <garthofhearts@gmail.com>
|
||||
@ -17,11 +19,13 @@ Janus
|
||||
jokoho482 <jokoho482@gmail.com>
|
||||
Jonpas <jonpas33@gmail.com>
|
||||
Kieran
|
||||
mharis001 <mhariszakar@gmail.com>
|
||||
NouberNou
|
||||
PabstMirror <pabstmirror@gmail.com>
|
||||
Ruthberg <ulteq@web.de>
|
||||
SilentSpike <SilentSpike100@gmail.com>
|
||||
tpM
|
||||
veteran29
|
||||
ViperMaul
|
||||
VKing <kauestad@gmail.com>
|
||||
Walter Pearce <jaynus@gmail.com>
|
||||
@ -40,11 +44,13 @@ Aleksey EpMAK Yermakov <epmak777@gmail.com>
|
||||
Alganthe <alganthe@live.fr>
|
||||
Andrea "AtixNeon" Verano <veranoandrea88@gmail.com>
|
||||
Anthariel <Contact@storm-simulation.com>
|
||||
Arcanum417 <lubos.len@gmail.com>
|
||||
Anton
|
||||
Arkhir <wonsz666@gmail.com >
|
||||
Asgar Serran <piechottaf@web.de>
|
||||
BaerMitUmlaut
|
||||
Bamse <bamsis@gmail.com>
|
||||
Barman75
|
||||
Bla1337
|
||||
BlackPixxel <blackpixxel96@gmail.com>
|
||||
BlackQwar
|
||||
@ -58,6 +64,8 @@ Clon1998 <ps.patti1998@gmail.com>
|
||||
Codingboy
|
||||
Coren <coren4@gmail.com>
|
||||
Crusty
|
||||
C0kkie
|
||||
dgibso29 <gibson@earringpranks.com>
|
||||
Dharma Bellamkonda <dharma.bellamkonda@gmail.com>
|
||||
Dimaslg <dimaslg@telecable.es>
|
||||
diwako
|
||||
@ -67,16 +75,19 @@ Dudakov aka [OMCB]Kaban <dudakov.s@gmail.com>
|
||||
Drofseh <drofseh@gmail.com>
|
||||
Dslyecxi <dslyecxi@gmail.com>
|
||||
Eclipser <jms@modeemi.fi>
|
||||
Elgin675
|
||||
ElTyranos
|
||||
eRazeri
|
||||
evromalarkey <evromalarkey@gmail.com>
|
||||
F3 Project <alanr@ferstaberinde.com>
|
||||
Falke75
|
||||
Fatal <tahakocalgs@gmail.com>
|
||||
Ferenczi
|
||||
Ferenzi
|
||||
FFAAMOD <modffaa@gmail.com>
|
||||
Filip Basara <filip.basara93@googlemail.com>
|
||||
fr89k <kaschitoku@web.de>
|
||||
Fragment
|
||||
FreeZbe <freeseb@gmail.com>
|
||||
geraldbolso1899
|
||||
Ghost
|
||||
@ -97,6 +108,7 @@ Karneck <dschultz26@hotmail.com>
|
||||
Kavinsky <nmunozfernandez@gmail.com>
|
||||
Keithen <Keithen.Neu@gmail.com>
|
||||
Kllrt <kllrtik@gmail.com>
|
||||
KokaKolaA3
|
||||
legman <juicemelon@msn.com>
|
||||
Legolasindar "Viper" <legolasindar@gmail.com>
|
||||
licht-im-Norden87 <lichtimnorden87@gmail.com>
|
||||
@ -106,19 +118,22 @@ Luigi "Luigium" Myrini <luigium@outlook.fr>
|
||||
Macusercom <macusercom@gmail.com>
|
||||
MarcBook
|
||||
meat <p.humberdroz@gmail.com>
|
||||
mharis001 <mhariszakar@gmail.com>
|
||||
Michail Nikolaev
|
||||
MikeMatrix <m.braun92@gmail.com>
|
||||
mjc4wilton <mjc4wilton@gmail.com>
|
||||
nic547 <nic547@outlook.com>
|
||||
nikolauska <nikolauska1@gmail.com>
|
||||
nomisum <nomisum@gmail.com>
|
||||
OnkelDisMaster <onkeldismaster@gmail.com>
|
||||
Orbis2358 <mgkid3310@naver.com>
|
||||
oscarmolinadev
|
||||
Panisher (Tushino Serious Games) <panisher333@gmail.com>
|
||||
PaxJaromeMalues <seemax1991@gmail.com>
|
||||
PiZZADOX <509thParachuteInfantry@gmail.com>
|
||||
Phyma <sethramstrom@gmail.com>
|
||||
pokertour
|
||||
Professor <lukas.trneny@wo.cz>
|
||||
Pterolatypus <pterolatypus@gmail.com>
|
||||
QuickDagger
|
||||
rakowozz
|
||||
ramius86 <pasini86@hotmail.com>
|
||||
@ -126,8 +141,12 @@ Raspu86
|
||||
Riccardo Petricca <petriccarcc@gmail.com>
|
||||
Robert Boklahánics <bokirobi@gmail.com>
|
||||
ruPaladin <happyworm24@rambler.ru>
|
||||
Rutger "RedBery" Meijering <c.redbery@gmail.com>
|
||||
Schwaggot <tom.ryan@posteo.de>
|
||||
shukari
|
||||
simon84 <badguy360th@gmail.com>
|
||||
Skengman2
|
||||
Smith <smitt14ua@gmail.com>
|
||||
Sniperwolf572 <tenga6@gmail.com>
|
||||
System98
|
||||
SzwedzikPL <szwedzikpl@gmail.com>
|
||||
@ -141,6 +160,9 @@ Tuupertunut
|
||||
Valentin Torikian <valentin.torikian@gmail.com>
|
||||
voiper
|
||||
VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com>
|
||||
Walthzer <walthzer.69@gmail.com>
|
||||
Winter <simon@agius-muscat.net>
|
||||
xrufix
|
||||
Zakant <Zakant@gmx.de>
|
||||
zGuba
|
||||
Fyuran <dankemedic@hotmail.com>
|
||||
|
91
Makefile
91
Makefile
@ -1,91 +0,0 @@
|
||||
VERSION = $(shell cat "VERSION")
|
||||
PREFIX = ace
|
||||
BIN = @ace
|
||||
ZIP = ace3
|
||||
FLAGS = -i include -w unquoted-string -w redefinition-wo-undef
|
||||
VERSION_FILES = README.md docs/README_DE.md docs/README_PL.md mod.cpp
|
||||
|
||||
MAJOR = $(word 1, $(subst ., ,$(VERSION)))
|
||||
MINOR = $(word 2, $(subst ., ,$(VERSION)))
|
||||
PATCH = $(word 3, $(subst ., ,$(VERSION)))
|
||||
BUILD = $(word 4, $(subst ., ,$(VERSION)))
|
||||
VERSION_S = $(MAJOR).$(MINOR).$(PATCH)
|
||||
GIT_HASH = $(shell git log -1 --pretty=format:"%H" | head -c 8)
|
||||
|
||||
ifeq ($(OS), Windows_NT)
|
||||
ARMAKE = ./tools/armake.exe # Downloaded via make.ps (rename armake_wXY.exe otherwise)
|
||||
else
|
||||
ARMAKE = armake
|
||||
endif
|
||||
|
||||
$(BIN)/addons/$(PREFIX)_%.pbo: addons/%
|
||||
@mkdir -p $(BIN)/addons
|
||||
@echo " PBO $@"
|
||||
@${ARMAKE} build ${FLAGS} -f -e "version=$(GIT_HASH)" $< $@
|
||||
|
||||
$(BIN)/optionals/$(PREFIX)_%.pbo: optionals/%
|
||||
@mkdir -p $(BIN)/optionals
|
||||
@echo " PBO $@"
|
||||
@${ARMAKE} build ${FLAGS} -f -e "version=$(GIT_HASH)" $< $@
|
||||
|
||||
# Shortcut for building single addons (eg. "make <component>.pbo")
|
||||
%.pbo:
|
||||
"$(MAKE)" $(MAKEFLAGS) $(patsubst %, $(BIN)/addons/$(PREFIX)_%, $@)
|
||||
|
||||
all: $(patsubst addons/%, $(BIN)/addons/$(PREFIX)_%.pbo, $(wildcard addons/*)) \
|
||||
$(patsubst optionals/%, $(BIN)/optionals/$(PREFIX)_%.pbo, $(wildcard optionals/*))
|
||||
|
||||
filepatching:
|
||||
"$(MAKE)" $(MAKEFLAGS) FLAGS="-w unquoted-string -p"
|
||||
|
||||
$(BIN)/keys/%.biprivatekey:
|
||||
@mkdir -p $(BIN)/keys
|
||||
@echo " KEY $@"
|
||||
@${ARMAKE} keygen -f $(patsubst $(BIN)/keys/%.biprivatekey, $(BIN)/keys/%, $@)
|
||||
|
||||
$(BIN)/addons/$(PREFIX)_%.pbo.$(PREFIX)_$(VERSION)-$(GIT_HASH).bisign: $(BIN)/addons/$(PREFIX)_%.pbo $(BIN)/keys/$(PREFIX)_$(VERSION).biprivatekey
|
||||
@echo " SIG $@"
|
||||
@${ARMAKE} sign -f -s $@ $(BIN)/keys/$(PREFIX)_$(VERSION).biprivatekey $<
|
||||
|
||||
$(BIN)/optionals/$(PREFIX)_%.pbo.$(PREFIX)_$(VERSION)-$(GIT_HASH).bisign: $(BIN)/optionals/$(PREFIX)_%.pbo $(BIN)/keys/$(PREFIX)_$(VERSION).biprivatekey
|
||||
@echo " SIG $@"
|
||||
@${ARMAKE} sign -f -s $@ $(BIN)/keys/$(PREFIX)_$(VERSION).biprivatekey $<
|
||||
|
||||
signatures: $(patsubst addons/%, $(BIN)/addons/$(PREFIX)_%.pbo.$(PREFIX)_$(VERSION)-$(GIT_HASH).bisign, $(wildcard addons/*)) \
|
||||
$(patsubst optionals/%, $(BIN)/optionals/$(PREFIX)_%.pbo.$(PREFIX)_$(VERSION)-$(GIT_HASH).bisign, $(wildcard optionals/*))
|
||||
|
||||
extensions: $(wildcard extensions/*/*)
|
||||
cd extensions/build && cmake .. && make
|
||||
find ./extensions/build/ \( -name "*.so" -o -name "*.dll" \) -exec cp {} ./ \;
|
||||
|
||||
extensions-win64: $(wildcard extensions/*/*)
|
||||
cd extensions/build && CXX=$(eval $(which g++-w64-mingw-i686)) cmake .. && make
|
||||
|
||||
version:
|
||||
@echo " VER $(VERSION)"
|
||||
$(shell sed -i -r -s 's/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/$(VERSION)/g' $(VERSION_FILES))
|
||||
$(shell sed -i -r -s 's/[0-9]+\.[0-9]+\.[0-9]+/$(VERSION_S)/g' $(VERSION_FILES))
|
||||
@echo -e "#define MAJOR $(MAJOR)\n#define MINOR $(MINOR)\n#define PATCHLVL $(PATCH)\n#define BUILD $(BUILD)" > "addons/main/script_version.hpp"
|
||||
$(shell sed -i -r -s 's/ACE_VERSION_MAJOR [0-9]+/ACE_VERSION_MAJOR $(MAJOR)/g' extensions/CMakeLists.txt)
|
||||
$(shell sed -i -r -s 's/ACE_VERSION_MINOR [0-9]+/ACE_VERSION_MINOR $(MINOR)/g' extensions/CMakeLists.txt)
|
||||
$(shell sed -i -r -s 's/ACE_VERSION_REVISION [0-9]+/ACE_VERSION_REVISION $(PATCH)/g' extensions/CMakeLists.txt)
|
||||
|
||||
commit:
|
||||
@echo " GIT commit release preparation"
|
||||
@git add -A
|
||||
@git diff-index --quiet HEAD || git commit -am "Prepare release $(VERSION_S)" -q
|
||||
|
||||
push: commit
|
||||
@echo " GIT push release preparation"
|
||||
@git push -q
|
||||
|
||||
release: clean version commit
|
||||
@"$(MAKE)" $(MAKEFLAGS) signatures
|
||||
@echo " ZIP $(ZIP)_$(VERSION_S).zip"
|
||||
@cp *.dll mod.cpp README.md docs/README_DE.md docs/README_PL.md AUTHORS.txt LICENSE logo_ace3_ca.paa meta.cpp $(BIN)
|
||||
@zip -qr $(ZIP)_$(VERSION_S).zip $(BIN)
|
||||
|
||||
clean:
|
||||
rm -rf $(BIN) $(ZIP)_*.zip
|
||||
|
||||
.PHONY: all filepatching signatures extensions extensions-win64 version commit push release clean
|
@ -4,7 +4,7 @@
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/acemod/ACE3/releases/latest">
|
||||
<img src="https://img.shields.io/badge/Version-3.12.5-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
<img src="https://img.shields.io/badge/Version-3.13.5-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/issues">
|
||||
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
|
||||
@ -19,7 +19,7 @@
|
||||
<img src="https://img.shields.io/badge/License-GPLv2-red.svg?style=flat-square" alt="ACE3 License">
|
||||
</a>
|
||||
<a href="https://slackin.ace3mod.com/">
|
||||
<img src="https://slackin.ace3mod.com/badge.svg?style=flat-square&label=Slack" alt="ACE3 Slack">
|
||||
<img src="https://img.shields.io/badge/Slack-Join-darkviolet.svg?style=flat-square" alt="ACE3 Slack">
|
||||
</a>
|
||||
<a href="https://circleci.com/gh/acemod/ACE3">
|
||||
<img src="https://circleci.com/gh/acemod/ACE3.svg?style=svg" alt="ACE3 Build Status">
|
||||
|
BIN
ace_artillerytables.dll
Normal file
BIN
ace_artillerytables.dll
Normal file
Binary file not shown.
BIN
ace_artillerytables_x64.dll
Normal file
BIN
ace_artillerytables_x64.dll
Normal file
Binary file not shown.
BIN
ace_medical.dll
BIN
ace_medical.dll
Binary file not shown.
Binary file not shown.
@ -7,12 +7,12 @@ class Extended_PreStart_EventHandlers {
|
||||
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE( call COMPILE_FILE(XEH_preInit) );
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PostInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE( call COMPILE_FILE(XEH_postInit) );
|
||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||
};
|
||||
};
|
||||
|
@ -22,6 +22,9 @@ if (!hasInterface) exitWith {};
|
||||
["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler;
|
||||
["ace_firedPlayerNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler;
|
||||
|
||||
// Register Perframe Handler
|
||||
[FUNC(handleFirePFH), GVAR(simulationInterval)] call CBA_fnc_addPerFrameHandler;
|
||||
|
||||
//Add warnings for missing compat PBOs (only if AB is on)
|
||||
{
|
||||
_x params ["_modPBO", "_compatPBO"];
|
||||
|
@ -20,5 +20,8 @@ class CfgPatches {
|
||||
#include "ACE_Settings.hpp"
|
||||
|
||||
class ACE_Extensions {
|
||||
extensions[] += {"ace_advanced_ballistics"};
|
||||
class ace_advanced_ballistics {
|
||||
windows = 1;
|
||||
client = 1;
|
||||
};
|
||||
};
|
||||
|
@ -12,7 +12,7 @@
|
||||
* muzzle velocity shift - m/s <NUMBER>
|
||||
*
|
||||
* Example:
|
||||
* [[], 5] call ace_advanced_ballistics_fnc_calcilateAmmoTemperatureVelocityShift
|
||||
* [[], 5] call ace_advanced_ballistics_fnc_calculateAmmoTemperatureVelocityShift
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
@ -15,12 +15,11 @@
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
private _deleted = false;
|
||||
{
|
||||
_x params ["_bullet","_caliber","_bulletTraceVisible","_index"];
|
||||
|
||||
if (!alive _bullet) then {
|
||||
GVAR(allBullets) deleteAt (GVAR(allBullets) find _x);
|
||||
} else {
|
||||
if (alive _bullet) then {
|
||||
private _bulletVelocity = velocity _bullet;
|
||||
private _bulletPosition = getPosASL _bullet;
|
||||
|
||||
@ -29,11 +28,12 @@
|
||||
};
|
||||
|
||||
_bullet setVelocity (_bulletVelocity vectorAdd (parseSimpleArray ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6", _index, _bulletVelocity, _bulletPosition, wind, ASLToATL(_bulletPosition) select 2, CBA_missionTime toFixed 6])));
|
||||
} else {
|
||||
GVAR(allBullets) set [_forEachIndex, objNull];
|
||||
_deleted = true;
|
||||
};
|
||||
nil
|
||||
} count +GVAR(allBullets);
|
||||
} forEach GVAR(allBullets);
|
||||
|
||||
if (GVAR(allBullets) isEqualTo []) then {
|
||||
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
||||
GVAR(BulletPFH) = nil;
|
||||
if (_deleted) then {
|
||||
GVAR(allBullets) = GVAR(allBullets) - [objNull];
|
||||
};
|
||||
|
@ -27,7 +27,7 @@ private _abort = !local _unit;
|
||||
if (_abort) then {
|
||||
private _bulletVelocity = velocity _projectile;
|
||||
private _muzzleVelocity = vectorMagnitude _bulletVelocity;
|
||||
|
||||
|
||||
private _maxRange = uiNamespace getVariable format[QGVAR(maxRange_%1), _ammo];
|
||||
if (isNil "_maxRange") then {
|
||||
private _airFriction = getNumber(configFile >> "CfgAmmo" >> _ammo >> "airFriction");
|
||||
@ -40,12 +40,12 @@ if (_abort) then {
|
||||
uiNamespace setVariable [format[QGVAR(maxRange_%1), _ammo], _maxRange];
|
||||
};
|
||||
if (ACE_player distance _unit > _maxRange && {ACE_player distance ((getPosASL _unit) vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply _maxRange)) > _maxRange}) exitWith {};
|
||||
|
||||
|
||||
private _ammoCount = (_unit ammo _muzzle) + 1;
|
||||
private _tracersEvery = getNumber(configFile >> "CfgMagazines" >> _magazine >> "tracersEvery");
|
||||
private _lastRoundsTracer = getNumber(configFile >> "CfgMagazines" >> _magazine >> "lastRoundsTracer");
|
||||
if (_ammoCount <= _lastRoundsTracer || {_tracersEvery > 0 && {(_ammoCount - _lastRoundsTracer) % _tracersEvery == 0}}) exitWith { _abort = false };
|
||||
|
||||
|
||||
if (GVAR(bulletTraceEnabled) && {_muzzleVelocity > BULLET_TRACE_MIN_VELOCITY} && {cameraView == "GUNNER"}) then {
|
||||
if (currentWeapon ACE_player == binocular ACE_player) exitWith { _abort = false };
|
||||
if (currentWeapon ACE_player == primaryWeapon ACE_player && {count primaryWeaponItems ACE_player > 2}) then {
|
||||
@ -89,7 +89,7 @@ if (GVAR(muzzleVelocityVariationEnabled)) then {
|
||||
private _seed = 0.5 * (_time + _ammoCount) * (_time + _ammoCount + 1) + _ammoCount;
|
||||
// Generate normally distributed random number (via Box–Muller transform)
|
||||
private _z = sqrt(-2.0 * ln(0.00000001 max (-_seed random 1))) * cos(_seed random 360);
|
||||
|
||||
|
||||
_muzzleVelocity = _muzzleVelocity * (_z * _muzzleVelocityVariationSD + 1);
|
||||
};
|
||||
|
||||
@ -123,7 +123,3 @@ GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000;
|
||||
"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _ammoCount, _airFriction, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _stabilityFactor, _twistDirection, _transonicStabilityCoef, getPosASL _projectile, _bulletVelocity, EGVAR(common,mapLatitude), EGVAR(weather,currentTemperature), EGVAR(common,mapAltitude), EGVAR(weather,currentHumidity), EGVAR(weather,currentOvercast), CBA_missionTime toFixed 6];
|
||||
|
||||
GVAR(allBullets) pushBack [_projectile, _caliber, _bulletTraceVisible, GVAR(currentbulletID)];
|
||||
|
||||
if (isNil QGVAR(BulletPFH)) then {
|
||||
GVAR(BulletPFH) = [FUNC(handleFirePFH), GVAR(simulationInterval), []] call CBA_fnc_addPerFrameHandler;
|
||||
};
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: Ruthberg
|
||||
* Initializes the advanced ballistics dll extension with terrain data
|
||||
* Initializes the advanced ballistics extension with terrain data
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
|
@ -6,7 +6,7 @@
|
||||
<Polish>Pokaż inf. o wietrze</Polish>
|
||||
<Italian>Mostra indicazioni del vento</Italian>
|
||||
<Russian>Показать информацию о ветре</Russian>
|
||||
<French>Afficher les info sur le vent</French>
|
||||
<French>Afficher les infos sur le vent</French>
|
||||
<Spanish>Mostrar información del viento</Spanish>
|
||||
<German>Windinformationen anzeigen</German>
|
||||
<Hungarian>Széladatok mutatása</Hungarian>
|
||||
@ -16,10 +16,11 @@
|
||||
<Korean>바람의 정보를 표시</Korean>
|
||||
<Chinese>顯示風況</Chinese>
|
||||
<Chinesesimp>显示风况</Chinesesimp>
|
||||
<Turkish>Rüzgar bilgilerini göster</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_ProtractorKey">
|
||||
<English>Show Protractor</English>
|
||||
<Polish>Pokaż kątomierz</Polish>
|
||||
<Polish>Pokaż protraktor</Polish>
|
||||
<Italian>Mostra il rapportatore</Italian>
|
||||
<Russian>Показать транспортир</Russian>
|
||||
<French>Afficher le rapporteur</French>
|
||||
@ -32,6 +33,7 @@
|
||||
<Korean>각도기 표시</Korean>
|
||||
<Chinese>顯示量角器</Chinese>
|
||||
<Chinesesimp>显示量角器</Chinesesimp>
|
||||
<Turkish>Açı Ölçeri Göster</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_DisplayName">
|
||||
<English>Advanced Ballistics</English>
|
||||
@ -48,6 +50,7 @@
|
||||
<Korean>고급 탄도학</Korean>
|
||||
<Chinese>先進彈道系統</Chinese>
|
||||
<Chinesesimp>先进弹道系统</Chinesesimp>
|
||||
<Turkish>Gelişmiş Balistik</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_enabled_DisplayName">
|
||||
<English>Advanced Ballistics</English>
|
||||
@ -60,10 +63,11 @@
|
||||
<Hungarian>Fejlett ballisztika</Hungarian>
|
||||
<Russian>Продвинутая баллистика</Russian>
|
||||
<Italian>Balistica Avanzata</Italian>
|
||||
<Japanese>アドバンスド バリスティックス</Japanese>
|
||||
<Japanese>アドバンスド バリスティックスを有効化</Japanese>
|
||||
<Korean>고급 탄도학</Korean>
|
||||
<Chinese>先進彈道系統</Chinese>
|
||||
<Chinesesimp>先进弹道系统</Chinesesimp>
|
||||
<Turkish>Gelişmiş Balistik</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_enabled_Description">
|
||||
<English>Enables advanced ballistics</English>
|
||||
@ -71,8 +75,8 @@
|
||||
<Spanish>Activa la balística avanzada</Spanish>
|
||||
<German>Aktiviert die erweiterte Ballistik</German>
|
||||
<Czech>Aktivuje pokročilou balistiku</Czech>
|
||||
<Portuguese>Ativa balística avançada</Portuguese>
|
||||
<French>Activer la balistique avancée</French>
|
||||
<Portuguese>Ativa a balística avançada</Portuguese>
|
||||
<French>Active la balistique avancée.</French>
|
||||
<Hungarian>Engedélyezi a fejlett ballisztikát</Hungarian>
|
||||
<Russian>Включает продвинутую баллистику</Russian>
|
||||
<Italian>Abilita Balistica Avanzata</Italian>
|
||||
@ -80,28 +84,39 @@
|
||||
<Korean>고급 탄도학을 적용합니다</Korean>
|
||||
<Chinese>啟用先進彈道系統</Chinese>
|
||||
<Chinesesimp>启用先进弹道系统</Chinesesimp>
|
||||
<Turkish>Gelişmiş balistiği etkinleştir</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_muzzleVelocityVariationEnabled_DisplayName">
|
||||
<English>Enable Muzzle Velocity Variation</English>
|
||||
<Spanish>Activar variación de velocidad inicial</Spanish>
|
||||
<German>Variation der Mündungsgeschwindigkeit aktivieren</German>
|
||||
<Japanese>銃口初速の変動を有効化する</Japanese>
|
||||
<Japanese>銃口初速の変動を有効化</Japanese>
|
||||
<Italian>Abilita Variazione Velocità Volata</Italian>
|
||||
<Korean>총구속도 변화적용</Korean>
|
||||
<Chinese>啟用槍口初速變化</Chinese>
|
||||
<Chinesesimp>启用枪口初速变化</Chinesesimp>
|
||||
<French>Activer les variations de la vitesse initiale</French>
|
||||
<French>Activer la variation de vitesse initiale</French>
|
||||
<Polish>Aktywuj wariację prędkości wylotowej</Polish>
|
||||
<Russian>Вкл. вариацию начальной скорости</Russian>
|
||||
<Portuguese>Ativar Variação de Velocidade no Freio de boca </Portuguese>
|
||||
<Czech>Povoluje variantu rychlosti ústí</Czech>
|
||||
<Turkish>Namlu Hızı Değişimini Etkinleştir</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_muzzleVelocityVariationEnabled_Description">
|
||||
<English>Simulates slight variations in muzzle velocity between each shot</English>
|
||||
<Spanish>Simula variaciones ligeras de velocidad entre cada disparo</Spanish>
|
||||
<German>Simuliert leichte Variationen der Mündungsgeschwindigkeit zwischen jedem Schuss.</German>
|
||||
<Japanese>発射毎の銃口初速の変動をシミュレートします。</Japanese>
|
||||
<Italian>Simula lievi variazioni della velocità della volata tra un colpo e l'altro</Italian>
|
||||
<Korean>각 사격 사이에 총구속도 변화를 시뮬레이션 합니다.</Korean>
|
||||
<Chinese>模擬每發子彈的槍口初速都略有不同</Chinese>
|
||||
<Chinesesimp>模拟每发子弹的枪口初速都略有不同</Chinesesimp>
|
||||
<French>Simule les légères variations</French>
|
||||
<French>Simule de légères variations de vitesse initiale entre chaque tir.</French>
|
||||
<Polish>Symuluje lekkie zmiany w prędkości wylotowej między każdym strzałem</Polish>
|
||||
<Russian>Имитирует небольшие изменения начальной скорости при каждом выстреле</Russian>
|
||||
<Portuguese>Simula pequenas variações na velocidade do Freio de Boca entre cada tiro</Portuguese>
|
||||
<Czech>Simuluje malé odchylky v úsťové rychlosti mezi jednotlivými výstřely</Czech>
|
||||
<Turkish>Her atış arasında namlu çıkış hızındaki küçük değişiklikleri simüle eder</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_DisplayName">
|
||||
<English>Enable Ammo Temperature Simulation</English>
|
||||
@ -110,14 +125,15 @@
|
||||
<German>Simulation der Munitionstemperatur aktivieren</German>
|
||||
<Czech>Povolit simulaci teploty munice</Czech>
|
||||
<Portuguese>Ativar simulação de temperatura de munição</Portuguese>
|
||||
<French>Active la simulation de la température</French>
|
||||
<French>Activer la simulation de la température</French>
|
||||
<Hungarian>Lőszer-hő szimuláció engedélyezése</Hungarian>
|
||||
<Russian>Симуляция температуры для боеприпасов</Russian>
|
||||
<Italian>Abilita simulazione della temperatura delle munizioni</Italian>
|
||||
<Japanese>弾薬温度のシミュレーションを有効化する</Japanese>
|
||||
<Japanese>弾薬温度のシミュレーションを有効化</Japanese>
|
||||
<Korean>탄약 온도 구현 적용</Korean>
|
||||
<Chinese>啟用彈藥溫度模擬系統</Chinese>
|
||||
<Chinesesimp>启用弹药温度模拟系统</Chinesesimp>
|
||||
<Turkish>Cephane Sıcaklık Simülasyonunu Etkinleştir</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_Description">
|
||||
<English>Muzzle velocity varies with ammo temperature</English>
|
||||
@ -126,7 +142,7 @@
|
||||
<German>Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit</German>
|
||||
<Czech>Úsťová rychlost je závislá na teplotě munice</Czech>
|
||||
<Portuguese>A velocidade de saída varia com a temperatura da munição</Portuguese>
|
||||
<French>La température de la munition influe sur la vélocité intiale</French>
|
||||
<French>La vitesse initiale varie en fonction de la température des munitions.</French>
|
||||
<Hungarian>A kezdősebesség a lőszer hőmérsékletétől függően változó</Hungarian>
|
||||
<Russian>Начальная скорость пули зависит от температуры</Russian>
|
||||
<Italian>La velocità dello sparo varia a seconda della temperatura delle munizioni</Italian>
|
||||
@ -134,6 +150,7 @@
|
||||
<Korean>탄약 온도에 비례해 총구 속도가 달라집니다</Korean>
|
||||
<Chinese>子彈初速將隨彈藥溫度而有所變化</Chinese>
|
||||
<Chinesesimp>子弹初速将随弹药温度而有所变化</Chinesesimp>
|
||||
<Turkish>Mermi çıkış hızı cephane sıcaklığına göre değişir</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_DisplayName">
|
||||
<English>Enable Barrel Length Simulation</English>
|
||||
@ -146,10 +163,11 @@
|
||||
<Hungarian>Csőhossz-szimuláció engedélyezése</Hungarian>
|
||||
<Russian>Симуляция длины ствола</Russian>
|
||||
<Italian>Abilita simulazione della lunghezza della canna</Italian>
|
||||
<Japanese>銃身長のシミュレーションを有効化する</Japanese>
|
||||
<Japanese>銃身長のシミュレーションを有効化</Japanese>
|
||||
<Korean>총열 길이 구현 적용</Korean>
|
||||
<Chinese>啟用槍管長度模擬系統</Chinese>
|
||||
<Chinesesimp>启用枪管长度模拟系统</Chinesesimp>
|
||||
<Turkish>Namlu Uzunluğu Simülasyonunu Etkinleştir</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_Description">
|
||||
<English>Muzzle velocity varies with barrel length</English>
|
||||
@ -158,7 +176,7 @@
|
||||
<German>Lauflänge beeinflusst Mündungsgeschwindigkeit</German>
|
||||
<Czech>Úsťová rychlost je závislá na délce hlavně</Czech>
|
||||
<Portuguese>A velocidade de saída caria com o comprimento do cano</Portuguese>
|
||||
<French>La longueur du canon influe sur la vélocité initale</French>
|
||||
<French>La vitesse initiale varie en fonction de la longueur du canon.</French>
|
||||
<Hungarian>A kezdősebesség a cső hosszától függően változó</Hungarian>
|
||||
<Russian>Начальная скорость пули зависит от длины ствола</Russian>
|
||||
<Italian>La velocità di sparo varia a seconda della lunghezza della canna</Italian>
|
||||
@ -166,6 +184,7 @@
|
||||
<Korean>총구 속도가 총열에 비례해 달라집니다</Korean>
|
||||
<Chinese>子彈初速將隨槍管長度而有所變化</Chinese>
|
||||
<Chinesesimp>子弹初速将随枪管长度而有所变化</Chinesesimp>
|
||||
<Turkish>Mermi çıkış hızı namlu uzunluğuna göre değişir</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_DisplayName">
|
||||
<English>Enable Bullet Trace Effect</English>
|
||||
@ -174,14 +193,15 @@
|
||||
<German>Geschossspureffekt aktivieren</German>
|
||||
<Czech>Povolit efekt trasírek</Czech>
|
||||
<Portuguese>Ativa efeito traçante de projétil</Portuguese>
|
||||
<French>Activer l'effet balle traçante</French>
|
||||
<French>Activer l'effet de balle traçante</French>
|
||||
<Hungarian>Nyomkövető-effekt engedélyezése</Hungarian>
|
||||
<Russian>Следы пуль</Russian>
|
||||
<Italian>Abilita effetto dei Proiettili Traccianti</Italian>
|
||||
<Japanese>弾丸の軌跡エフェクトを有効化する</Japanese>
|
||||
<Japanese>弾丸の軌跡エフェクトを有効化</Japanese>
|
||||
<Korean>예광탄 효과 적용</Korean>
|
||||
<Chinese>啟用曳光彈效果</Chinese>
|
||||
<Chinesesimp>启用曳光弹效果</Chinesesimp>
|
||||
<Turkish>İzli Mermi Etkisini Etkinleştir</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_Description">
|
||||
<English>Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics)</English>
|
||||
@ -190,7 +210,7 @@
|
||||
<German>Aktiviere Geschossspureffekt für hohe Kaliber (bei Benutzung von Optiken mit starker Vergrößerung)</German>
|
||||
<Czech>Aktivuje efekt trasírek z vysokokaliberních zbraní (viditelné pouze skrze výkonnou optiku)</Czech>
|
||||
<Portuguese>Ativa o efeito traçante de projétil para projéteis de alto calibre (somente visível quando observado por miras telescópicas)</Portuguese>
|
||||
<French>Active une tracante pour les munitions de gros calibre (seulement visible en utilisant des optiques avancées)</French>
|
||||
<French>Active un effet de balle traçante pour les munitions de gros calibre (seulement visible en utilisant une optique à fort grossissement).</French>
|
||||
<Hungarian>Engedélyezi a nagy kaliberű lövedékek nyomának vizuális követését (csak nagy teljesítményű optikán keresztül látható)</Hungarian>
|
||||
<Russian>Включает эффект следов пуль для больших калибров (видны только через мощную оптику)</Russian>
|
||||
<Italian>Abilita effetto dei proiettili traccianti di alto calibro (visibile solo attraverso ottiche ad alto potenziale)</Italian>
|
||||
@ -198,6 +218,7 @@
|
||||
<Korean>대구경 탄환에 예광탄 효과를 적용합니다(오직 고성능 조준경 사용시에만 보입니다)</Korean>
|
||||
<Chinese>啟用曳光彈效果給大口徑子彈 (只有透過高倍率光學瞄鏡才能看到)</Chinese>
|
||||
<Chinesesimp>启用曳光弹效果给大口径子弹 (只有透过高倍率光学瞄镜才能看到)</Chinesesimp>
|
||||
<Turkish>Yüksek kalibreli mermilere mermi izleme efekti sağlar (yalnızca yüksek güçlü optiklerden bakıldığında görülebilir)</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_DisplayName">
|
||||
<English>Simulation Interval</English>
|
||||
@ -210,7 +231,7 @@
|
||||
<Hungarian>Szimuláció intervalluma</Hungarian>
|
||||
<Russian>Интервал симуляции</Russian>
|
||||
<Italian>Intervallo Simulazione</Italian>
|
||||
<Japanese>シミュレーションの間隔</Japanese>
|
||||
<Japanese>シミュレーション間隔</Japanese>
|
||||
<Korean>구현 간격</Korean>
|
||||
<Chinese>模擬間隔</Chinese>
|
||||
<Chinesesimp>模拟间隔</Chinesesimp>
|
||||
@ -222,11 +243,11 @@
|
||||
<German>Definiert das Intervall zwischen den einzelnen Simulationsschritten</German>
|
||||
<Czech>Určuje interval mezi každým výpočtem</Czech>
|
||||
<Portuguese>Define o intervalo entre cada cálculo</Portuguese>
|
||||
<French>Définit un intervalle de calcul entre deux simulations</French>
|
||||
<French>Définit l'intervalle entre chacune des étapes de calcul.</French>
|
||||
<Hungarian>Meghatározza a számítási lépések közötti időintervallumot</Hungarian>
|
||||
<Russian>Определяет временной интервал между вычислениями</Russian>
|
||||
<Italian>Definisce l'intervallo tra ogni step di calcolo</Italian>
|
||||
<Japanese>各計算毎の間隔を定義します。</Japanese>
|
||||
<Japanese>各シミュレーション毎の間隔を定義します。</Japanese>
|
||||
<Korean>각 계산 단위의 간격을 정의합니다</Korean>
|
||||
<Chinese>定義每個模擬計算之間的時間間隔</Chinese>
|
||||
<Chinesesimp>定义每个模拟计算之间的时间间隔</Chinesesimp>
|
||||
@ -237,7 +258,7 @@
|
||||
<Spanish>Radio de simulación</Spanish>
|
||||
<German>Simulationsradius</German>
|
||||
<Czech>Rozsah simulace</Czech>
|
||||
<Portuguese>Raio de simulação</Portuguese>
|
||||
<Portuguese>Raio da simulação</Portuguese>
|
||||
<French>Rayon de simulation</French>
|
||||
<Hungarian>Szimuláció hatóköre</Hungarian>
|
||||
<Russian>Радиус симуляции</Russian>
|
||||
@ -246,6 +267,7 @@
|
||||
<Korean>구현 범위</Korean>
|
||||
<Chinese>模擬半徑</Chinese>
|
||||
<Chinesesimp>模拟半径</Chinesesimp>
|
||||
<Turkish>Similasyon Yarıçapı</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_Description">
|
||||
<English>Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles</English>
|
||||
@ -254,7 +276,7 @@
|
||||
<German>Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird</German>
|
||||
<Czech>Určuje oblast kolem hráče (v metrech), kde je pokročilá balistika použita na projektil</Czech>
|
||||
<Portuguese>Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis</Portuguese>
|
||||
<French>Définit le rayon autour du joueur (en mètres) d'application de la balistique avancée</French>
|
||||
<French>Définit le rayon autour du joueur (en mètres), dans lequel la balistique avancée est appliquée aux projectiles.</French>
|
||||
<Hungarian>Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékek fejlett ballisztikát használnak</Hungarian>
|
||||
<Russian>Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам</Russian>
|
||||
<Italian>Definisce il raggio attorno al giocatore (in metri) per cui la Balistica Avanzata è applicata ai proiettili</Italian>
|
||||
@ -262,14 +284,15 @@
|
||||
<Korean>플레이어 주위의 발사체를 고급 탄도학으로 정의하는 범위를 정합니다(미터)</Korean>
|
||||
<Chinese>以玩家的半徑距離(公尺)定義先進彈道系統啟用範圍</Chinese>
|
||||
<Chinesesimp>以玩家的半径距离(公尺)定义先进弹道系统启用范围</Chinesesimp>
|
||||
<Turkish>Mermilere gelişmiş balistik uygulandığı oyuncunun etrafındaki yarıçapı (metre cinsinden) tanımlar</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_Description">
|
||||
<English>This module enables advanced ballistics simulation - meaning the trajectory of projectiles is influenced by variables like air temperature, atmospheric pressure, humidity, gravity, the type of ammunition and the weapon from which it was fired.</English>
|
||||
<German>Dieses Modul aktiviert die Erweiterte Ballisitk. Die Flugbahn eines Geschosses wird nun von Einflüssen wie z.B Temperatur, Luftdruck, Luftfeuchtigkeit, Schwerkraft, Geschossart sowie der Waffe aus dem es gefeuert wird, beeinflusst.</German>
|
||||
<Polish>Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki.</Polish>
|
||||
<Czech>Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice.</Czech>
|
||||
<Portuguese>Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa.</Portuguese>
|
||||
<French>Ce module active la simulation de balistique avancée - les projectiles sont influencés par des variables comme le vent, la température, la pression atmosphérique, l'humidité, la gravité, le type de munition et l'arme avec laquelles ils sont tirés.</French>
|
||||
<Portuguese>Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, a gravidade, a arma no qual o disparo é realizado e o tipo de munição.</Portuguese>
|
||||
<French>Ce module permet une simulation balistique avancée ; c'est à dire que la trajectoire des projectiles est influencée par des facteurs tels que la température de l'air, la pression atmosphérique, l'humidité, la gravité, le type de munition et l'arme depuis laquelle elle est tirée.</French>
|
||||
<Hungarian>Ez a modul engedélyezi a fejlett ballisztikai szimulációt - a lövedékek röppályáját befolyásolni fogja a levegő hőmérséklete, légnyomás, páratartalom, gravitáció, a lövedék fajtája, valamint a fegyver, amiből kilőtték a lövedéket.</Hungarian>
|
||||
<Russian>Этот модуль включает симуляцию продвинутой баллистики - при этом на траекторию полета снаряда влияют различные параметры, такие как температура воздуха, атмосферное давление, влажность, гравитация, тип боеприпаса и оружия, из которого произвели выстрел.</Russian>
|
||||
<Spanish>Este módulo permite la simulación balística avanzada - es decir, la trayectoria de los proyectiles está influenciada por variables como la temperatura del aire, la presión atmosférica, la humedad, la gravedad, el tipo de municiones y el arma desde el que fue disparada.</Spanish>
|
||||
@ -278,6 +301,7 @@
|
||||
<Korean>이 모듈은 고급 탄도학을 적용시킵니다 - 이는 발사체의 궤적이 기온, 대기압, 습도, 중력, 탄환의 종류와 어느 무기에서 발사되는지에 따라 영향을 받습니다.</Korean>
|
||||
<Chinese>該模塊實現先進的彈道仿真 - 這意味著子彈的軌跡是由空氣溫度、大氣壓力、濕度、重力、彈藥類型以及射擊的武器所影響</Chinese>
|
||||
<Chinesesimp>该模块实现先进的弹道仿真 - 这意味着子弹的轨迹是由空气温度、大气压力、湿度、重力、弹药类型以及射击的武器所影响</Chinesesimp>
|
||||
<Turkish>Bu modül gelişmiş balistik simülasyonunu etkinleştirir - yani mermilerin gidişatını hava sıcaklığı, atmosfer basıncı, nem, yerçekimi, mühimmat türü ve ateşlendiği silah gibi durumlar etkiler.</Turkish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,6 +1,24 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
[missionNamespace, "ACE_setCustomAimCoef", QUOTE(ADDON), {
|
||||
private _unit = ACE_player;
|
||||
private _fatigue = _unit getVariable [QGVAR(aimFatigue), 0];
|
||||
|
||||
switch (stance _unit) do {
|
||||
case ("CROUCH"): {
|
||||
(1.0 + _fatigue ^ 2 * 0.1) * GVAR(swayFactor)
|
||||
};
|
||||
case ("PRONE"): {
|
||||
(1.0 + _fatigue ^ 2 * 2.0) * GVAR(swayFactor)
|
||||
};
|
||||
default {
|
||||
(1.5 + _fatigue ^ 2 * 3.0) * GVAR(swayFactor)
|
||||
};
|
||||
};
|
||||
}] call EFUNC(common,arithmeticSetSource);
|
||||
|
||||
["ace_settingsInitialized", {
|
||||
if (!GVAR(enabled)) exitWith {};
|
||||
|
||||
@ -29,8 +47,8 @@ if (!hasInterface) exitWith {};
|
||||
[QEGVAR(medical,pain), { // 0->1.0, 0.5->1.05, 1->1.1
|
||||
linearConversion [0, 1, (_this getVariable [QEGVAR(medical,pain), 0]), 1, 1.1, true];
|
||||
}] call FUNC(addDutyFactor);
|
||||
[QEGVAR(medical,bloodVolume), { // 100->1.0, 90->1.1, 80->1.2
|
||||
linearConversion [100, 0, (_this getVariable [QEGVAR(medical,bloodVolume), 100]), 1, 2, true];
|
||||
[QEGVAR(medical,bloodVolume), { // 6->1.0, 5->1.167, 4->1.33
|
||||
linearConversion [6, 0, (_this getVariable [QEGVAR(medical,bloodVolume), 6]), 1, 2, true];
|
||||
}] call FUNC(addDutyFactor);
|
||||
};
|
||||
if (["ACE_Dragging"] call EFUNC(common,isModLoaded)) then {
|
||||
|
@ -10,5 +10,6 @@ PREP_RECOMPILE_END;
|
||||
|
||||
GVAR(staminaBarWidth) = 10 * (((safezoneW / safezoneH) min 1.2) / 40);
|
||||
GVAR(dutyList) = [[], []];
|
||||
GVAR(setAnimExclusions) = [];
|
||||
|
||||
ADDON = true;
|
||||
|
@ -27,6 +27,7 @@ params ["_unit", "_fatigue", "_speed", "_overexhausted"];
|
||||
// - Audible effects ----------------------------------------------------------
|
||||
GVAR(lastBreath) = GVAR(lastBreath) + 1;
|
||||
if (_fatigue > 0.4 && {GVAR(lastBreath) > (_fatigue * -10 + 9)} && {!underwater _unit}) then {
|
||||
if (!isGameFocused) exitWith {};
|
||||
switch (true) do {
|
||||
case (_fatigue < 0.6): {
|
||||
playSound (QGVAR(breathLow) + str(floor random 6));
|
||||
@ -58,8 +59,9 @@ if (GVAR(ppeBlackoutLast) == 1) then {
|
||||
|
||||
// - Physical effects ---------------------------------------------------------
|
||||
if (GVAR(isSwimming)) exitWith {
|
||||
_unit setAnimSpeedCoef linearConversion [0.7, 0.9, _fatigue, 1, 0.5, true];
|
||||
|
||||
if (GVAR(setAnimExclusions) isEqualTo []) then {
|
||||
_unit setAnimSpeedCoef linearConversion [0.7, 0.9, _fatigue, 1, 0.5, true];
|
||||
};
|
||||
if ((isSprintAllowed _unit) && {_fatigue > 0.7}) then {
|
||||
[_unit, "blockSprint", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
|
||||
} else {
|
||||
@ -69,7 +71,10 @@ if (GVAR(isSwimming)) exitWith {
|
||||
};
|
||||
};
|
||||
if ((getAnimSpeedCoef _unit) != 1) then {
|
||||
_unit setAnimSpeedCoef 1;
|
||||
if (GVAR(setAnimExclusions) isEqualTo []) then {
|
||||
TRACE_1("reset",getAnimSpeedCoef _unit);
|
||||
_unit setAnimSpeedCoef 1;
|
||||
};
|
||||
};
|
||||
|
||||
if (_overexhausted) then {
|
||||
@ -88,14 +93,7 @@ if (_overexhausted) then {
|
||||
};
|
||||
};
|
||||
|
||||
switch (stance _unit) do {
|
||||
case ("CROUCH"): {
|
||||
[_unit, QUOTE(ADDON), (1.0 + _fatigue ^ 2 * 0.1) * GVAR(swayFactor)] call EFUNC(common,setAimCoef);
|
||||
};
|
||||
case ("PRONE"): {
|
||||
[_unit, QUOTE(ADDON), (1.0 + _fatigue ^ 2 * 2.0) * GVAR(swayFactor)] call EFUNC(common,setAimCoef);
|
||||
};
|
||||
default {
|
||||
[_unit, QUOTE(ADDON), (1.5 + _fatigue ^ 2 * 3.0) * GVAR(swayFactor)] call EFUNC(common,setAimCoef);
|
||||
};
|
||||
};
|
||||
_unit setVariable [QGVAR(aimFatigue), _fatigue];
|
||||
|
||||
private _aimCoef = [missionNamespace, "ACE_setCustomAimCoef", "max"] call EFUNC(common,arithmeticGetResult);
|
||||
_unit setCustomAimCoef _aimCoef;
|
||||
|
@ -25,10 +25,12 @@ _posAndSize set [2, _stamina * GVAR(staminaBarWidth)];
|
||||
_staminaBarContainer ctrlSetPosition _posAndSize;
|
||||
|
||||
// - Opacity ------------------------------------------------------------------
|
||||
if (_stamina >= 0.8) then {
|
||||
_staminaBarContainer ctrlSetFade (0.9 + 0.1 * (_stamina - 0.8) / 0.2);
|
||||
} else {
|
||||
_staminaBarContainer ctrlSetFade (0.9 * _stamina / 0.8);
|
||||
if (GVAR(fadeStaminaBar)) then {
|
||||
if (_stamina >= 0.8) then {
|
||||
_staminaBarContainer ctrlSetFade (0.9 + 0.1 * (_stamina - 0.8) / 0.2);
|
||||
} else {
|
||||
_staminaBarContainer ctrlSetFade (0.9 * _stamina / 0.8);
|
||||
};
|
||||
};
|
||||
|
||||
// - Color --------------------------------------------------------------------
|
||||
|
@ -4,8 +4,14 @@
|
||||
[LSTRING(Enabled), LSTRING(Enabled_Description)],
|
||||
LSTRING(DisplayName),
|
||||
true,
|
||||
true,
|
||||
{[QGVAR(enabled), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
||||
true, {
|
||||
if (!_this) then {
|
||||
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
|
||||
_staminaBarContainer ctrlSetFade 1;
|
||||
_staminaBarContainer ctrlCommit 0;
|
||||
};
|
||||
[QGVAR(enabled), _this] call EFUNC(common,cbaSettings_settingChanged)
|
||||
},
|
||||
true // Needs mission restart
|
||||
] call CBA_Settings_fnc_init;
|
||||
|
||||
@ -24,6 +30,21 @@
|
||||
}
|
||||
] call CBA_Settings_fnc_init;
|
||||
|
||||
[
|
||||
QGVAR(fadeStaminaBar),
|
||||
"CHECKBOX",
|
||||
[LSTRING(FadeStaminaBar), LSTRING(FadeStaminaBar_Description)],
|
||||
LSTRING(DisplayName),
|
||||
true,
|
||||
false, {
|
||||
if (!_this && GVAR(enabled) && GVAR(enableStaminaBar)) then {
|
||||
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
|
||||
_staminaBarContainer ctrlSetFade 0;
|
||||
_staminaBarContainer ctrlCommit 0;
|
||||
};
|
||||
}
|
||||
] call CBA_Settings_fnc_init;
|
||||
|
||||
[
|
||||
QGVAR(performanceFactor),
|
||||
"SLIDER",
|
||||
|
@ -3,17 +3,23 @@
|
||||
<Package name="Advanced_Fatigue">
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_DisplayName">
|
||||
<English>ACE Advanced Fatigue</English>
|
||||
<Spanish>ACE Fatiga Avanzada</Spanish>
|
||||
<German>ACE Erweiterte Ausdauer</German>
|
||||
<Chinese>ACE 進階疲勞</Chinese>
|
||||
<Chinesesimp>ACE 进阶疲劳</Chinesesimp>
|
||||
<Japanese>ACE アドバンスド ファティーグ</Japanese>
|
||||
<Italian>ACE Fatica Avanzata</Italian>
|
||||
<Korean>ACE 고급 피로도</Korean>
|
||||
<French>ACE Fatigue Avancée</French>
|
||||
<French>ACE Fatigue avancée</French>
|
||||
<Polish>ACE Zaawansowane Zmęczenie</Polish>
|
||||
<Russian>ACE Продвинутая усталость</Russian>
|
||||
<Portuguese>ACE Fadiga Avançada</Portuguese>
|
||||
<Czech>ACE Pokročilá únava</Czech>
|
||||
<Turkish>ACE Gelişmiş Yorgunluk</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_PerformanceFactor">
|
||||
<English>Performance Factor</English>
|
||||
<Spanish>Factor de rendimiento</Spanish>
|
||||
<German>Leistungsfaktor</German>
|
||||
<Japanese>パフォーマンス因数</Japanese>
|
||||
<Polish>Współczynnik wydolności</Polish>
|
||||
@ -22,31 +28,44 @@
|
||||
<Italian>Fattore Prestazione</Italian>
|
||||
<Chinese>體力值</Chinese>
|
||||
<Chinesesimp>体力值</Chinesesimp>
|
||||
<Russian>Фактор производительности</Russian>
|
||||
<Portuguese>Fator de Performance</Portuguese>
|
||||
<Czech>Faktor výkonu</Czech>
|
||||
<Turkish>Performans Faktörü</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_PerformanceFactor_Description">
|
||||
<English>Influences the overall performance of all players with no custom factor. Higher means better.</English>
|
||||
<Spanish>Afecta al rendimiento general de todos los jugadores sin opciones personalizadas. Más alto significa mejor</Spanish>
|
||||
<German>Beinflusst die Leistungsfähigkeit aller Spieler ohne eigenen Leistungsfaktor. Ein höherer Wert bedeutet bessere Leistung.</German>
|
||||
<Japanese>個別の因数を設定されていない、全てのプレイヤーのあらゆるパフォーマンスに影響を与えます。 値が高ければ高いほど、良い効果が得られます。</Japanese>
|
||||
<Polish>Wpływa na ogólną wydolność organizmu u wszystkich graczy bez ustawionego niestandardowego współczynnika. Więcej znaczy lepiej.</Polish>
|
||||
<Korean>모든 성능이 임의로 설정된 값 없이 영향받습니다. 값이 클수록 더 나은 성능을 발휘합니다</Korean>
|
||||
<French>Influence les performances générales de tous les joueurs sans facteurs personalisés. Une valeur plus élevée implique de meilleures performances.</French>
|
||||
<French>Impacte la performance globale de tous les joueurs n'ayant pas de facteur personnalisé.\nPlus la valeur est élevée, plus le joueur est performant.</French>
|
||||
<Italian>Influenza qualsiasi prestazione di tutti i giocatori smuniti di un fattore personalizzato. Maggiore significa migliore.</Italian>
|
||||
<Chinese>影響所有玩家的體力表現,值越高代表體力越好</Chinese>
|
||||
<Chinesesimp>影响所有玩家的体力表现,值越高代表体力越好</Chinesesimp>
|
||||
<Russian>Влияет на общую производительность игроков, у которых не задано персональное значение.</Russian>
|
||||
<Portuguese>Influencia na performance geral de todos os jogadores sem nenhum fator personalizado. Quanto maior, melhor.</Portuguese>
|
||||
<Czech>Ovlivňuje celkový výkon všech hráčů bez vlastního faktoru. Vyšší znamená lépe.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_PerformanceFactor_EdenDescription">
|
||||
<English>Influences the overall performance of this unit. Higher means better.</English>
|
||||
<Spanish>Afecta al rendimiento de esta unidad. Más alto significa mejor</Spanish>
|
||||
<German>Beinflusst die Leistungsfähigkeit dieser Einheit. Ein höherer Wert bedeutet bessere Leistung.</German>
|
||||
<Japanese>このユニットのあらゆるパフォーマンスに影響を与えます。 値が高ければ高いほど、良い効果が得られます。</Japanese>
|
||||
<Polish>Wpływa na ogólną wydolność tej jednostki. Więcej znaczy lepiej.</Polish>
|
||||
<Korean>모든 성능이 이 단위로 영향을 받습니다. 값이 클수록 더 나은 성능을 발휘합니다</Korean>
|
||||
<French>Influence les performances générales de cette unité. Une valeur plus élevée implique de meilleures performances.</French>
|
||||
<French>Impacte la performance globale de cette unité.\nPlus la valeur est élevée, plus l'unité est performante.</French>
|
||||
<Italian>Influenza qualsiasi prestazione di questa unità. Maggiore significa migliore.</Italian>
|
||||
<Chinese>影響這個單位的體力表現,值越高代表體力越好</Chinese>
|
||||
<Chinesesimp>影响这个单位的体力表现,值越高代表体力越好</Chinesesimp>
|
||||
<Russian>Влияет на общую производительность юнита.</Russian>
|
||||
<Portuguese>Influencia na performance geral dessa unidade. Quanto maior, melhor.</Portuguese>
|
||||
<Czech>Ovlivňuje celkový výkon této jednotky. Vyšší znamená lépe.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_RecoveryFactor">
|
||||
<English>Recovery Factor</English>
|
||||
<Spanish>Factor de recuperación</Spanish>
|
||||
<German>Erholungsfaktor</German>
|
||||
<Japanese>回復因数</Japanese>
|
||||
<Polish>Współczynnik regeneracji</Polish>
|
||||
@ -55,42 +74,59 @@
|
||||
<Italian>Fattore Recupero</Italian>
|
||||
<Chinese>回復值</Chinese>
|
||||
<Chinesesimp>回复值</Chinesesimp>
|
||||
<Russian>Фактор восстановления</Russian>
|
||||
<Portuguese>Fator de Recuperação</Portuguese>
|
||||
<Czech>Faktor zotavení</Czech>
|
||||
<Turkish>Kurtarma Faktörü</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_RecoveryFactor_Description">
|
||||
<English>Changes how fast the player recovers when resting. Higher is faster.</English>
|
||||
<Spanish>Modifica cómo de rápido se recupera el jugador cuando descansa. Más alto significa mejor</Spanish>
|
||||
<German>Ändert, wie schnell ein Spieler Ausdauer regeneriert. Ein höherer Wert bedeutet eine schnellere Regeneration.</German>
|
||||
<Japanese>プレイヤーが休憩をとる際に、どのくらいの速度でスタミナ回復するかを設定します。 値が高ければ高いほど、早くなります。</Japanese>
|
||||
<Polish>Wpływa na czas regeneracji podczas postoju. Więcej znaczy szybciej.</Polish>
|
||||
<Korean>얼마나 빨리 회복하는지를 바꿉니다. 값이 클수록 더 나은 성능을 발휘합니다</Korean>
|
||||
<French>Change la vitesse à laquelle les joueurs récupèrent leur endurance lorsqu'ils se reposent. Une valeur plus élevée implique une récupération plus rapide.</French>
|
||||
<French>Modifie la vitesse à laquelle le joueur récupère lorsqu'il se repose.\nPlus la valeur est élevée, plus la récupération est rapide.</French>
|
||||
<Italian>Determina in quanto tempo il giocatore recupera quando rilassato. Maggiore significa migliore.</Italian>
|
||||
<Chinese>決定玩家休息多久就能回復體力,值越高恢復越快</Chinese>
|
||||
<Chinesesimp>决定玩家休息多久就能回复体力,值越高恢复越快</Chinesesimp>
|
||||
<Russian>Изменяет скорость восстановления игрока во время отдыха. Чем выше, тем быстрее.</Russian>
|
||||
<Portuguese>Altera o quão rápido um jogador recupera quando descansando. Quanto maior, mais rápido.</Portuguese>
|
||||
<Czech>Mění, jak rychle se hráč zotaví, když odpočívá. Vyšší je rychlejší.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_LoadFactor">
|
||||
<English>Load Factor</English>
|
||||
<Spanish>Factor de carga</Spanish>
|
||||
<German>Gewichtsfaktor</German>
|
||||
<Japanese>重量因数</Japanese>
|
||||
<Polish>Współczynnik masy ekwipunku</Polish>
|
||||
<Korean>부담 요인</Korean>
|
||||
<French>Facteur d'encombrement</French>
|
||||
<French>Facteur de charge</French>
|
||||
<Italian>Fattore Caricamento</Italian>
|
||||
<Chinese>負重量</Chinese>
|
||||
<Chinesesimp>负重量</Chinesesimp>
|
||||
<Russian>Фактор нагрузки</Russian>
|
||||
<Portuguese>Fator de Carga</Portuguese>
|
||||
<Czech>Faktor zatížení</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_LoadFactor_Description">
|
||||
<English>Increases or decreases how much weight influences the players performance. Zero means equipment weight has no performance influence.</English>
|
||||
<Spanish>Aumenta o disminuye cuanto influye el peso en el rendimiento del jugador. Cero significa que el peso no influye en el rendimiento</Spanish>
|
||||
<German>Erhöht oder verringert, wie viel Einfluss das Ausrüstungsgewicht auf die Leistung hat. Null heißt, dass es keinen Einfluss hat.</German>
|
||||
<Japanese>装備重量がプレイヤーのパフォーマンスにもたらす影響を増減させます。 値をゼロに設定した場合、装備重量はパフォーマンスに影響を与えません。</Japanese>
|
||||
<Polish>Zmniejsza lub zwiększa wpływ ciężaru ekwipunku na wydolność gracza. Zero oznacza kompletny brak wpływu na wydolność.</Polish>
|
||||
<Korean>플레이어가 무게에 따라 얼마나 영향받는지를 증가시키거나 감소시킵니다. 0의 경우 플레이어가 장비 무게에 영향받지 않습니다.</Korean>
|
||||
<French>Augmente ou réduit l'influence que le poids à sur les performances des joueurs. Zéro implique que le poids de l'équipement n'a pas d'influence sur les performances.</French>
|
||||
<French>Augmente ou diminue l'influence du poids sur les performances du joueur.\nUne valeur nulle indique que le poids de l'équipement n'a aucun impact sur les performances.</French>
|
||||
<Italian>Incrementa o decrementa quanto il peso influenza le prestazioni dei giocatori. Zero significa che il peso dell'equipaggiamento non ha alcuna influenza nelle prestazioni.</Italian>
|
||||
<Chinese>增加或降低玩家所能承受的負重量. 如設定值為0, 代表裝備的重量將不會影響到玩家的體力表現</Chinese>
|
||||
<Chinesesimp>增加或降低玩家所能承受的负重量. 如设定值为0, 代表装备的重量将不会影响到玩家的体力表现</Chinesesimp>
|
||||
<Russian>Увеличивает или уменьшает вес, влияющий на производительность игроков. Ноль означает, что вес снаряжения не влияет на производительность</Russian>
|
||||
<Portuguese>Aumenta ou diminui o quanto o peso influencia a performance do jogador. Zero significa que o peso não tem impacto algum na performance.</Portuguese>
|
||||
<Czech>Zvyšuje nebo snižuje, jak velká váha ovlivňuje výkon hráče. Nulová hodnota znamená, že hmotnost zařízení nemá žádný vliv na výkon.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_TerrainGradientFactor">
|
||||
<English>Terrain Gradient Factor</English>
|
||||
<Spanish>Factor de inclinación del terreno</Spanish>
|
||||
<German>Terrainsteigungsfaktor</German>
|
||||
<Japanese>地形勾配因数</Japanese>
|
||||
<Polish>Współczynnik terenu</Polish>
|
||||
@ -99,71 +135,101 @@
|
||||
<Italian>Fattore Pendenza Terreno</Italian>
|
||||
<Chinese>地形陡峭影響值</Chinese>
|
||||
<Chinesesimp>地形陡峭影响值</Chinesesimp>
|
||||
<Russian>Фактор местности</Russian>
|
||||
<Portuguese>Fator de Inclinação do Terreno</Portuguese>
|
||||
<Czech>Faktor stoupání terénu</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_TerrainGradientFactor_Description">
|
||||
<English>Sets how much steep terrain increases stamina loss. Higher means higher stamina loss.</English>
|
||||
<Spanish>Modifica cuanto afecta la inclinación al cansansio. Más alto significa más cansancio</Spanish>
|
||||
<German>Beeinflusst, wie stark Steigungen den Ausdauerverbrauch erhöhen. Ein höherer Wert erhöht den Ausdauerverbrauch.</German>
|
||||
<Japanese>急勾配の地形がどれだけスタミナ消費を増大させるかを設定します。 値が高ければ高いほど、スタミナ消費が大きくなります。</Japanese>
|
||||
<Polish>Wpływa na to w jakim stopniu stromy teren wpływa na utratę wytrzymałości. Więcej oznacza szybszą utratę wytrzymałości.</Polish>
|
||||
<Korean>경사도에 따라 얼마나 피로해지는지를 정합니다. 값이 클수록 더 많은 피로를 유발합니다.</Korean>
|
||||
<French>Configure l'influence de l'inclinaison du terrain sur la perte d'endurance. Une valeur plus élevée implique une perte d'endurance plus importante.</French>
|
||||
<French>Définit à quel point un terrain escarpé réduit l'endurance du joueur.\nPlus la valeur est élevée, moins le joueur est endurant.</French>
|
||||
<Italian>Stabilisce quanto la pendenza del terreno incrementa la perdita della stamina. Maggiore significa più stamina persa.</Italian>
|
||||
<Chinese>設定陡峭的地形將會影響多少體力的流失,值越高代表體力流失越快</Chinese>
|
||||
<Chinesesimp>设定陡峭的地形将会影响多少体力的流,失值越高代表体力流失越快</Chinesesimp>
|
||||
<Russian>Устанавливает, насколько крутая местность увеличивает потерю выносливости. Чем выше, тем быстрее теряется выносливость.</Russian>
|
||||
<Portuguese>Define o quanto que um terreno íngrime aumenta na perda de estamina. Quanto maior, maior a perda de estamina.</Portuguese>
|
||||
<Czech>Nastavuje, o kolik strmý terén zvyšuje ztrátu výdrže. Vyšší znamená vyšší ztrátu výdrže.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_SwayFactor">
|
||||
<English>Sway factor</English>
|
||||
<Spanish>Factor de balanceo de mira</Spanish>
|
||||
<German>Verwacklungsfaktor</German>
|
||||
<Japanese>手ぶれ因数</Japanese>
|
||||
<Chinesesimp>抖动因数</Chinesesimp>
|
||||
<Chinese>抖動因素</Chinese>
|
||||
<French>Facteur de stabilisation</French>
|
||||
<French>Facteur de tremblement</French>
|
||||
<Italian>Fattore di oscillazione</Italian>
|
||||
<Polish>Czynnik kołysania</Polish>
|
||||
<Russian>Фактор колебания прицела</Russian>
|
||||
<Portuguese>Fator de Balanço de Mira</Portuguese>
|
||||
<Czech>Faktor kývání</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_SwayFactor_Description">
|
||||
<English>Influences the amount of weapon sway. Higher means more sway.</English>
|
||||
<Spanish>Afecta al la estabilidad de la mira. Más alto significa más balanceo</Spanish>
|
||||
<German>Beeinflusst den Faktor, wie ruhig man eine Waffe halten kann. Ein höherer Wert bedeutet weniger Stabilisierung</German>
|
||||
<Japanese>武器を持つ手のぶれ度合いを設定します。 値が高ければ高いほど、手ぶれが強くなります。</Japanese>
|
||||
<Chinesesimp>影响手持武器的晃动程度,数值越高,抖动的越厉害.</Chinesesimp>
|
||||
<Chinese>影響手持武器晃動程度,數值越高抖動越厲害</Chinese>
|
||||
<French>Influence les mouvements de l'arme, une valeur plus élevée signifie plus de mouvements</French>
|
||||
<French>Influe sur l'amplitude du tremblement de l'arme. Une valeur plus élevée signifie plus de tremblement.</French>
|
||||
<Italian>Influenza l'ammontare di oscillazione dell'arma. Maggiore significa più oscillazione.</Italian>
|
||||
<Polish>Wpływa na poziom kołysania broni. Większa ilość znaczy większe kołysanie.</Polish>
|
||||
<Russian>Влияет на колебания прицела оружия. Чем выше - тем больше.</Russian>
|
||||
<Portuguese>Influencia a quantidade de balanço da mira da arma. Quanto maior, mais balanço.</Portuguese>
|
||||
<Czech>Ovlivňuje množství kývání zbraní. Vyšší znamená více kývání.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_Enabled">
|
||||
<English>Enabled</English>
|
||||
<Spanish>Activada</Spanish>
|
||||
<German>Aktiv</German>
|
||||
<Japanese>アドバンスド ファティーグを有効化する</Japanese>
|
||||
<Japanese>アドバンスド ファティーグを有効化</Japanese>
|
||||
<Polish>Włączone</Polish>
|
||||
<Korean>활성화</Korean>
|
||||
<French>Activé</French>
|
||||
<Italian>Abilitato</Italian>
|
||||
<Chinese>啟用</Chinese>
|
||||
<Chinesesimp>启用</Chinesesimp>
|
||||
<Russian>Включена</Russian>
|
||||
<Portuguese>Ativado</Portuguese>
|
||||
<Czech>Povoleno</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_Enabled_Description">
|
||||
<English>Enables/disables Advanced Fatigue.</English>
|
||||
<Spanish>Activa/desactiva la fatiga avanzada</Spanish>
|
||||
<German>Aktiviert/deaktiviert Advanced Fatigue.</German>
|
||||
<Japanese>アドバンスド ファティーグを有効化します。</Japanese>
|
||||
<Polish>Włącza/wyłącza zaawansowaną wytrzymałość</Polish>
|
||||
<Korean>고급 피로도 활성화/비활성화</Korean>
|
||||
<French>Active/désactive la fatigue avancée.</French>
|
||||
<French>Active/Désactive la fatigue avancée.</French>
|
||||
<Italian>Abilita/disabilita la Fatica Avanzata.</Italian>
|
||||
<Chinese>啟用/關閉進階體力.</Chinese>
|
||||
<Chinesesimp>启用/关闭进阶体力.</Chinesesimp>
|
||||
<Russian>Включает / Отключает Продвинутую усталость</Russian>
|
||||
<Portuguese>Ativa/Desativa Fadiga Avançada.</Portuguese>
|
||||
<Czech>Aktivuje / deaktivuje Pokročilou únavu.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_EnableStaminaBar">
|
||||
<English>Show stamina bar</English>
|
||||
<Spanish>Mostrar barra de cansancio</Spanish>
|
||||
<German>Zeige Ausdauerleiste</German>
|
||||
<Japanese>スタミナバーを表示する</Japanese>
|
||||
<Japanese>スタミナバーを表示</Japanese>
|
||||
<Polish>Pokaż pasek wytrzymałości</Polish>
|
||||
<Korean>피로도 막대</Korean>
|
||||
<French>Afficher la barre d'endurance</French>
|
||||
<Italian>Mostra barra stamina</Italian>
|
||||
<Chinese>顯示體力條</Chinese>
|
||||
<Chinesesimp>显示体力条</Chinesesimp>
|
||||
<Russian>Показать шкалу усталости</Russian>
|
||||
<Portuguese>Exibir barra de estamina</Portuguese>
|
||||
<Czech>Zobrazit lištu výdrže</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_EnableStaminaBar_Description">
|
||||
<English>Shows the stamina bar.</English>
|
||||
<Spanish>Muestra la barra de cansancio</Spanish>
|
||||
<German>Zeigt die Ausdauerleiste an.</German>
|
||||
<Japanese>スタミナバーを表示します。</Japanese>
|
||||
<Polish>Pokazuje pasek wytrzymałości.</Polish>
|
||||
@ -172,6 +238,36 @@
|
||||
<Italian>Mostra la barra della stamina.</Italian>
|
||||
<Chinese>顯示體力條</Chinese>
|
||||
<Chinesesimp>显示体力条</Chinesesimp>
|
||||
<Russian>Показывает шкалу усталости.</Russian>
|
||||
<Portuguese>Exibe a barra de estamina.</Portuguese>
|
||||
<Czech>Zobrazuje lištu výdrže</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_FadeStaminaBar">
|
||||
<English>Fade Stamina bar automatically</English>
|
||||
<Spanish>Desvanecer la barra de cansancio</Spanish>
|
||||
<Russian>Скрыть шкалу усталости автоматически</Russian>
|
||||
<German>Blende Ausdauerleiste automatisch aus</German>
|
||||
<Chinese>體力條自動淡去</Chinese>
|
||||
<Italian>Dissolvenza automatica della barra della stamina</Italian>
|
||||
<Czech>Automaticky schovat lištu výdrže</Czech>
|
||||
<French>Fondu automatique de la barre d'endurance</French>
|
||||
<Japanese>自動的にスタミナバーを非表示</Japanese>
|
||||
<Polish>Chowaj pasek wytrzymałości automatycznie</Polish>
|
||||
<Portuguese>Barra de stamina some automaticamente</Portuguese>
|
||||
<Turkish>Dayanıklılık çubuğunu otomatik olarak soldur</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_FadeStaminaBar_Description">
|
||||
<English>Adjusts transparency of the bar based on stamina status.</English>
|
||||
<Spanish>Ajusta la ocultación progresiva de la barra de cansancio</Spanish>
|
||||
<Russian>Регулирует прозрачность шкалы в зависимости от статуса выносливости.</Russian>
|
||||
<German>Passt die Transparenz der Ausdauerleiste abhängig vom Ausdauerstatus an.</German>
|
||||
<Chinese>依照目前的體力程度調整體力條之透明度</Chinese>
|
||||
<Italian>Regola la trasparenza della barra in base allo stato di affaticamento.</Italian>
|
||||
<Czech>Upravuje průhlednost lišty v závislosti na současném stavu výdrže</Czech>
|
||||
<French>Règle la transparence de la barre en fonction de l'état d'endurance.</French>
|
||||
<Japanese>スタミナの状態に応じて、自動的にバーの透明度を調整します。</Japanese>
|
||||
<Polish>Dostosowuje przezroczystość paska na podstawie stanu wytrzymałości.</Polish>
|
||||
<Portuguese>Ajusta a transparência da barra baseado no status da stamina</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -53,7 +53,7 @@ for "_i" from 0.05 to 1.45 step 0.1 do {
|
||||
if (lineIntersects [_prevTrajASL, _newTrajASL]) then { // Checks the "VIEW" LOD
|
||||
_cross = 2; // 2: View LOD Block (Red)
|
||||
} else {
|
||||
if (!((lineIntersectsSurfaces [_prevTrajASL, _newTrajASL, _activeThrowable, ACE_player, true, 1, "GEOM", "FIRE"]) isEqualTo [])) then {
|
||||
if !((lineIntersectsSurfaces [_prevTrajASL, _newTrajASL, _activeThrowable, ACE_player, true, 1, "GEOM", "FIRE"]) isEqualTo []) then {
|
||||
_cross = 3; // 3: GEOM/FIRE LOD Block (Yellow) - pass a3 bulding glass, but blocked on some CUP glass
|
||||
};
|
||||
};
|
||||
|
@ -26,3 +26,8 @@ TRACE_1("Fired",_this);
|
||||
{
|
||||
_this call _x;
|
||||
} forEach ((_this select 0) getVariable "cba_xeh_fired");
|
||||
|
||||
// Call muzzle fired EH
|
||||
{
|
||||
_this call compile getText (_x >> "fired");
|
||||
} forEach (configProperties [configFile >> "CfgWeapons" >> "Throw" >> (_this select 2) >> "EventHandlers", "isClass _x", true]);
|
||||
|
@ -3,6 +3,7 @@
|
||||
<Package name="Advanced_Throwing">
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Category">
|
||||
<English>Advanced Throwing</English>
|
||||
<Spanish>Lanzamiento Avanzado</Spanish>
|
||||
<Russian>Улучшенный бросок гранат</Russian>
|
||||
<Japanese>アドバンスド スローイング</Japanese>
|
||||
<Polish>Zaawansowane rzucanie</Polish>
|
||||
@ -12,9 +13,13 @@
|
||||
<Italian>Lancio Avanzato</Italian>
|
||||
<Chinese>進階投擲</Chinese>
|
||||
<Chinesesimp>进阶投掷</Chinesesimp>
|
||||
<Portuguese>Arremesso Avançado</Portuguese>
|
||||
<Czech>Pokročilé házení</Czech>
|
||||
<Turkish>Gelişmiş Fırlatma</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Module_Description">
|
||||
<English>Allows changing advanced throwing behaviour.</English>
|
||||
<Spanish>Permite modificar el comportamiento del lanzamiento avanzado</Spanish>
|
||||
<Russian>Позволяет настраивать поведение улучшенного броска гранат.</Russian>
|
||||
<Japanese>アドバンスド スローイングの動作挙動を変更します。</Japanese>
|
||||
<Polish>Zezwala na zmianę zachowania zaawansowanego trybu rzucania.</Polish>
|
||||
@ -24,21 +29,28 @@
|
||||
<Italian>Permette il cambiamento della modalità di tiro.</Italian>
|
||||
<Chinese>允許使用更多不同的投擲方式</Chinese>
|
||||
<Chinesesimp>允许使用更多不同的投掷方式</Chinesesimp>
|
||||
<Portuguese>Permite mudar o comportamento do arremesso avançado.</Portuguese>
|
||||
<Czech>Umožňuje změnit pokročilé chování při házení.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Enable_DisplayName">
|
||||
<English>Enable Advanced Throwing</English>
|
||||
<Spanish>Activar Lanzamiento Avanzado</Spanish>
|
||||
<Russian>Включить улучшенный бросок</Russian>
|
||||
<Japanese>アドバンスド スローイングを有効化する</Japanese>
|
||||
<Japanese>アドバンスド スローイングを有効化</Japanese>
|
||||
<Polish>Aktywuj zaawansowane rzucanie</Polish>
|
||||
<German>Aktiviere erweitertes Wurfsystem</German>
|
||||
<Korean>고급 투척 활성화 </Korean>
|
||||
<French>Active le lancé amélioré</French>
|
||||
<French>Activer le lancé amélioré</French>
|
||||
<Italian>Abilita Lancio Avanzato</Italian>
|
||||
<Chinese>啟用進階投擲</Chinese>
|
||||
<Chinesesimp>启用进阶投掷</Chinesesimp>
|
||||
<Portuguese>Ativa o Arremesso Avançado</Portuguese>
|
||||
<Czech>Povolit pokročilé házení</Czech>
|
||||
<Turkish>Gelişmiş Fırlatmayı Etkinleştir</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Enable_Description">
|
||||
<English>Enables advanced throwing system.</English>
|
||||
<Spanish>Activa el Lanzamiento Avanzado</Spanish>
|
||||
<Russian>Включает систему улучшенного броска.</Russian>
|
||||
<Japanese>アドバンスド スローイングを有効化します。</Japanese>
|
||||
<Polish>Aktywuje system zaawansowanego rzucania.</Polish>
|
||||
@ -48,11 +60,15 @@
|
||||
<Italian>Abilita il sistema di lancio avanzato.</Italian>
|
||||
<Chinese>啟用進階投擲系統</Chinese>
|
||||
<Chinesesimp>启用进阶投掷系统</Chinesesimp>
|
||||
<Portuguese>Ativa o sistema de Arremesso Avançado.</Portuguese>
|
||||
<Czech>Umožňuje pokročilý systém házení.</Czech>
|
||||
<Turkish>Gelişmiş fırlatma sistemini etkinleştirir.</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_ShowThrowArc_DisplayName">
|
||||
<English>Show Throw Arc</English>
|
||||
<Spanish>Mostrar Arco de Lanzamiento</Spanish>
|
||||
<Russian>Показать траекторию броска</Russian>
|
||||
<Japanese>投てき軌道を表示する</Japanese>
|
||||
<Japanese>投てき軌道を表示</Japanese>
|
||||
<Polish>Pokaż trasę lotu</Polish>
|
||||
<German>Zeige Wurfbogen</German>
|
||||
<Korean>투척 궤적 표시</Korean>
|
||||
@ -60,23 +76,30 @@
|
||||
<Italian>Mostra Arco di Tiro</Italian>
|
||||
<Chinese>顯示投擲軌道</Chinese>
|
||||
<Chinesesimp>显示投掷轨道</Chinesesimp>
|
||||
<Portuguese>Mostrar o Arco de Arremesso</Portuguese>
|
||||
<Czech>Zobrazit oblouk vrhu </Czech>
|
||||
<Turkish>Atış Yayını Göster</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_ShowThrowArc_Description">
|
||||
<English>Enables visualization of the throw arc (where throwable will fly).</English>
|
||||
<Spanish>Activa la visualización del arco de lanzamiento (donde irá el objeto lanzado)</Spanish>
|
||||
<Russian>Включает визуализацию траектории броска (как полетит граната).</Russian>
|
||||
<Japanese>投てき軌道 (投てき物がどこに飛ぶか) の表示を有効化します。</Japanese>
|
||||
<Polish>Wyświetla wizualizację trasy przelotu granatu.</Polish>
|
||||
<German>Aktiviert die Visualisierung des Wurfbogens (wohin das Objekt geworfen werden wird).</German>
|
||||
<Korean>투척 궤도를 시각화 합니다(투척물이 어디로 갈지)</Korean>
|
||||
<French>Active la visualisation de l'arc de lancé (où l'objet lancé va atterrir).</French>
|
||||
<French>Active la visualisation de l'arc de lancé (la trajectoire de vol de l'objet).</French>
|
||||
<Italian>Abilita la visualizzazione dell'arco del tiro (dove l'oggetto lanciabile volerà).</Italian>
|
||||
<Chinese>顯示投擲軌道幫助投擲</Chinese>
|
||||
<Chinesesimp>显示投掷轨道帮助投掷</Chinesesimp>
|
||||
<Portuguese>Permite a visualização do Arco de Arremesso por onde o objeto será jogado.</Portuguese>
|
||||
<Czech>Zapíná vizualizaci oblouku vrhu (kam bude předmět hozen).</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_ShowMouseControls_DisplayName">
|
||||
<English>Show Throwing Mouse Controls</English>
|
||||
<Spanish>Mostrar controles de ratón de lanzamiento</Spanish>
|
||||
<Russian>Показывать управление мышью</Russian>
|
||||
<Japanese>投てきのマウス操作を表示する</Japanese>
|
||||
<Japanese>投てきのマウス操作を表示</Japanese>
|
||||
<Polish>Pokaż podpowiedzi sterowania myszą</Polish>
|
||||
<German>Zeige Maussteuerung beim Werfen</German>
|
||||
<Korean>마우스 조작 표시</Korean>
|
||||
@ -84,81 +107,102 @@
|
||||
<Italian>Mostra Comandi Mouse Lancio</Italian>
|
||||
<Chinese>顯示滑鼠投擲控制提示</Chinese>
|
||||
<Chinesesimp>显示滑鼠投掷控制提示</Chinesesimp>
|
||||
<Portuguese>Mostrar os controles de mouse para Arremesso</Portuguese>
|
||||
<Czech>Zobrazit ovládání házení myší</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_ShowMouseControls_Description">
|
||||
<English>Enables visual cues for mouse controls when throwable is prepared.</English>
|
||||
<Spanish>Activa muestras visuales para los controles del ratón cuando el objeto lanzable está preparado</Spanish>
|
||||
<Russian>Включает отображение подсказок по управлению мышью, когда граната подготовлена.</Russian>
|
||||
<Japanese>投てき物を構える時、マウス操作の説明表示を有効化します。</Japanese>
|
||||
<Polish>Wyświetla podpowiedzi sterowania myszą kiedy obiekt miotany jest w ręku.</Polish>
|
||||
<German>Aktiviert visuelle Hinweise zur Maussteuerung, wenn ein Objekt zum Werfen vorbereitet wird.</German>
|
||||
<Korean>투척물을 준비시 마우스 조작을 시각화해서 보여줍니다</Korean>
|
||||
<French>Active les aides visuels pour les controles à la souris lorsqu'un lancé est préparé.</French>
|
||||
<French>Active les aides visuelles pour les contrôles à la souris lorsqu'un lancé est préparé.</French>
|
||||
<Italian>Abilita la visualizzazione dei controlli del mouse quando l'oggetto lanciabile è pronto.</Italian>
|
||||
<Chinese>開啟後會在準備投擲時, 顯示滑鼠相關操作</Chinese>
|
||||
<Chinesesimp>开启后会在准备投掷时, 显示滑鼠相关操作</Chinesesimp>
|
||||
<Portuguese>Ativa as dicas visuais dos controles do mouse quando um arremessável é preparado.</Portuguese>
|
||||
<Czech>Zapíná popisky pro ovládání myší, když je házený předmět připraven.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUp_DisplayName">
|
||||
<English>Enable Throwables Pick Up</English>
|
||||
<Spanish>Habilitar recoger objetos lanzados</Spanish>
|
||||
<Russian>Включить подбор гранат</Russian>
|
||||
<Japanese>投てき物の拾い上げを有効化する</Japanese>
|
||||
<Japanese>投てき物の拾い上げを有効化</Japanese>
|
||||
<Polish>Zezwól na podnoszenie obiektów miotanych</Polish>
|
||||
<German>Aktiviere Aufheben von Wurfobjekten</German>
|
||||
<Korean>투척물 줍기 활성화</Korean>
|
||||
<French>Active la récupération des objets lancés</French>
|
||||
<French>Permettre le ramassage d'objets lançables</French>
|
||||
<Italian>Abilita Raccogli Oggetti</Italian>
|
||||
<Chinese>啟用可撿取地面投擲物</Chinese>
|
||||
<Chinesesimp>启用可捡取地面投掷物</Chinesesimp>
|
||||
<Portuguese>Permitir pegar arremessáveis</Portuguese>
|
||||
<Czech>Zapnout zdvihání házených předmětů</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUp_Description">
|
||||
<English>Enables ability to pick up throwables from the ground.</English>
|
||||
<Spanish>Activa la habilidad de coger objetos lanzados del suelo</Spanish>
|
||||
<Russian>Включает возможность подбирать гранаты с земли.</Russian>
|
||||
<Japanese>地面に落ちている投てき物を拾い上げる機能を有効化します。</Japanese>
|
||||
<Polish>Umożliwia podnoszenie obiektów miotanych z ziemi.</Polish>
|
||||
<German>Aktiviert die Möglichkeit, geworfene Objekte wieder vom Boden aufzuheben.</German>
|
||||
<Korean>땅에 떨어진 투척물을 주울 수 있게 해줍니다.</Korean>
|
||||
<French>Active la capacité de récupérer les objets lancés sur le sol.</French>
|
||||
<French>Active la possibilité de ramasser des objets lançables du sol.</French>
|
||||
<Italian>Abilita la possibilità di raccogliere un oggetto lanciabile da terra.</Italian>
|
||||
<Chinese>啟用後, 可撿取地面上的投擲物</Chinese>
|
||||
<Chinesesimp>启用后, 可捡取地面上的投掷物</Chinesesimp>
|
||||
<Portuguese>Permite que objetos arremessados sejam pegos do chão. (ACE Menu de Interação)</Portuguese>
|
||||
<Czech>Zapíná schopnost zvednutí házených předmětů ze země.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUpAttached_DisplayName">
|
||||
<English>Enable Attached Throwables Pick Up</English>
|
||||
<Spanish>Activar coger objetos lanzables que se enganchan</Spanish>
|
||||
<Russian>Включить подбор прикрепленных гранат</Russian>
|
||||
<Japanese>取り付けられた投てき物の拾い上げを有効化する</Japanese>
|
||||
<Japanese>取り付けられた投てき物の拾い上げを有効化</Japanese>
|
||||
<Polish>Zezwól na podnoszenie przyczepionych obiektów miotanych</Polish>
|
||||
<German>Aktiviere erneute Aufnahme befestigter Wurfobjekte</German>
|
||||
<Korean>부착 투척물 줍기 활성화</Korean>
|
||||
<French>Active le ramassage d'objets lançables attachés</French>
|
||||
<French>Activer le ramassage d'objets lançables attachés</French>
|
||||
<Italian>Abilita Raccogli Oggetti Lanciabili da altri Oggetti</Italian>
|
||||
<Chinese>啟用可撿取附著投擲物</Chinese>
|
||||
<Chinesesimp>启用可捡取附着投掷物</Chinesesimp>
|
||||
<Portuguese>Permitir pegar arremessáveis fixados</Portuguese>
|
||||
<Czech>Zapnout zdvihání připnutých předmětů.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUpAttached_Description">
|
||||
<English>Enables ability to pick up throwables from attached objects.</English>
|
||||
<Spanish>Activa la habilidad de lanzar objetos enganchados</Spanish>
|
||||
<Russian>Включает возможность подбирать гранаты, прикрепленные к объектам.</Russian>
|
||||
<Japanese>取り付けられた投てき物を、取り付け先から拾い上げる機能を有効化します。</Japanese>
|
||||
<Japanese>取り付けられた投てき物を拾い上げる機能を有効化します。</Japanese>
|
||||
<Polish>Umożliwia podnoszenie obiektów miotanych przyczepionych do innych obiektów.</Polish>
|
||||
<German>Aktiviert die Möglichkeit, befestigte Wurfobjekte erneut aufzunehmen.</German>
|
||||
<Korean>부착된 투척물을 주울 수 있게 해줍니다.</Korean>
|
||||
<French>Active la capacité à ramasser les objets lançables attaché à d'autres objets.</French>
|
||||
<French>Active la possibilité de ramasser des objets lançables attachés à d'autres objets.</French>
|
||||
<Italian>Abilita la possibilità di raccogliere gli oggetti lanciabili dagli altri oggetti. </Italian>
|
||||
<Chinese>啟用後, 可撿取附著在物件上的投擲物</Chinese>
|
||||
<Chinesesimp>启用后, 可捡取附着在物件上的投掷物</Chinesesimp>
|
||||
<Portuguese>Permite que arremessáveis fixados em objetos sejam pegos.</Portuguese>
|
||||
<Czech>Zapíná schopnost zvednutí předmětů z objektů ke kterým jsou připnuté.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Prepare">
|
||||
<English>Prepare/Change Throwable</English>
|
||||
<Spanish>Preparar/Cambiar objetos lanzables</Spanish>
|
||||
<Russian>Подготовить/заменить гранату</Russian>
|
||||
<Japanese>投てき物の準備/変更</Japanese>
|
||||
<Polish>Przygotuj/zmień ob. miotany</Polish>
|
||||
<German>Wurfobjekt vorbereiten/wechseln</German>
|
||||
<Korean>투척물 준비/변경</Korean>
|
||||
<French>Préparer/changer d'objet</French>
|
||||
<French>Préparer/Changer d'objet lançable</French>
|
||||
<Italian>Prepara/Cambia Oggetto lanciabile</Italian>
|
||||
<Chinese>準備/變更投擲物</Chinese>
|
||||
<Chinesesimp>准备/变更投掷物</Chinesesimp>
|
||||
<Portuguese>Preparar/Mudar Arremessável</Portuguese>
|
||||
<Czech>Připravit/změnit házený předmět</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_dropModeHold">
|
||||
<English>Throwable Drop Mode (Hold)</English>
|
||||
<Spanish>Modo soltar objeto lanzable (Mantener pulsado)</Spanish>
|
||||
<Russian>Режим броска гранаты (удерживать)</Russian>
|
||||
<Japanese>投てきモード (押している間)</Japanese>
|
||||
<Polish>Tryb upuszczania ob. miotanego (przytrzymaj)</Polish>
|
||||
@ -168,9 +212,12 @@
|
||||
<Italian>Modalità Oggetto Gettabile (Mantenere)</Italian>
|
||||
<Chinese>投擲模式 (按住)</Chinese>
|
||||
<Chinesesimp>投掷模式 (按住)</Chinesesimp>
|
||||
<Portuguese>Modo de Arremesso (Segurar)</Portuguese>
|
||||
<Czech>Mód puštění (Držet)</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_DropModeToggle">
|
||||
<English>Throwable Drop Mode (Toggle)</English>
|
||||
<Spanish>Modo soltar objeto lanzable (interruptor)</Spanish>
|
||||
<Russian>Режим броска гранаты (переключить)</Russian>
|
||||
<Japanese>投てきモード (切り替え)</Japanese>
|
||||
<Polish>Tryb upuszczania ob. miotanego (przełącz)</Polish>
|
||||
@ -180,21 +227,27 @@
|
||||
<Italian>Modalità Oggetto lanciabile Gettabile (Interruttore)</Italian>
|
||||
<Chinese>投擲模式 (切換)</Chinese>
|
||||
<Chinesesimp>投掷模式 (切换)</Chinesesimp>
|
||||
<Portuguese>Modo de Arremesso (Alternar)</Portuguese>
|
||||
<Czech>Mód puštění (Přepnout)</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Primed">
|
||||
<English>Primed</English>
|
||||
<Spanish>Preparado</Spanish>
|
||||
<Russian>Подготовлена</Russian>
|
||||
<Japanese>点火</Japanese>
|
||||
<Polish>Odbezpieczony</Polish>
|
||||
<German>Scharf gemacht</German>
|
||||
<Korean>뇌관 작동</Korean>
|
||||
<French>Amorcer</French>
|
||||
<French>amorcée</French>
|
||||
<Italian>Armato</Italian>
|
||||
<Chinese>引信開始燃燒</Chinese>
|
||||
<Chinesesimp>引信开始燃烧</Chinesesimp>
|
||||
<Portuguese>Preparado</Portuguese>
|
||||
<Czech>Odjištěný</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Throw">
|
||||
<English>Throw</English>
|
||||
<Spanish>Lanzar</Spanish>
|
||||
<Russian>Бросить</Russian>
|
||||
<Japanese>投げる</Japanese>
|
||||
<Polish>Rzuć</Polish>
|
||||
@ -204,33 +257,45 @@
|
||||
<Italian>Lanciare</Italian>
|
||||
<Chinese>投擲</Chinese>
|
||||
<Chinesesimp>投掷</Chinesesimp>
|
||||
<Portuguese>Arremessar</Portuguese>
|
||||
<Czech>Hodit</Czech>
|
||||
<Turkish>At</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_ChangeMode">
|
||||
<English>(Scroll) Change Mode</English>
|
||||
<Spanish>(Scroll) Cambiar Modo</Spanish>
|
||||
<Russian>(Скролл) Изменить режим</Russian>
|
||||
<Japanese>(スクロール) モード変更</Japanese>
|
||||
<Polish>(Kółko m.) zmień tryb</Polish>
|
||||
<German>(Scrollen) Modus wechseln</German>
|
||||
<Korean>(마우스 휠) 모드 변경</Korean>
|
||||
<French>(Molette souris) Changer de mode</French>
|
||||
<French>(Défilement) Changer de mode</French>
|
||||
<Italian>(Scorrere) Cambio Modalità</Italian>
|
||||
<Chinese>(滾輪) 變更模式</Chinese>
|
||||
<Chinesesimp>(滚轮) 变更模式</Chinesesimp>
|
||||
<Portuguese>(Roda do Mouse) Alternar modo</Portuguese>
|
||||
<Czech>(Scrollovat) Změnit mód</Czech>
|
||||
<Turkish>(Tekerlek) Modu Değiştir</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Extend">
|
||||
<English>(Scroll) Extend</English>
|
||||
<Spanish>(Scroll) Extender</Spanish>
|
||||
<Russian>(Скролл) Увеличить</Russian>
|
||||
<Japanese>(スクロール) 腕を伸ばす</Japanese>
|
||||
<Polish>(Kółko m.) przedłuż</Polish>
|
||||
<German>(Scrollen) Erweitern</German>
|
||||
<Korean>(마우스 휠) 연장</Korean>
|
||||
<French>(Molette souris) Etendre</French>
|
||||
<French>(Défilement) Étendre</French>
|
||||
<Italian>(Scorrere) Estendere</Italian>
|
||||
<Chinese>(滾輪) 延長</Chinese>
|
||||
<Chinesesimp>(滚轮) 延长</Chinesesimp>
|
||||
<Portuguese>(Roda do Mouse) Extender</Portuguese>
|
||||
<Czech>(Scrollovat) Oddálit</Czech>
|
||||
<Turkish>(Tekerlek) Uzat</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Cook">
|
||||
<English>(Click) Cook</English>
|
||||
<Spanish>(Click) Cebar</Spanish>
|
||||
<Russian>(Клик) Подготовить</Russian>
|
||||
<Japanese>(クリック) 点火する</Japanese>
|
||||
<Polish>(Kliknięcie) Odbezpiecz</Polish>
|
||||
@ -240,9 +305,13 @@
|
||||
<Italian>(Click) Arma</Italian>
|
||||
<Chinese>(點擊) 提早拉開引信</Chinese>
|
||||
<Chinesesimp>(点击) 提早拉开引信</Chinesesimp>
|
||||
<Portuguese>(Clique) Cozinhar</Portuguese>
|
||||
<Czech>(Klik) Odjistit</Czech>
|
||||
<Turkish>(Tıkla) Cook</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_PickUp">
|
||||
<English>Pick Up</English>
|
||||
<Spanish>Coger</Spanish>
|
||||
<Russian>Подобрать</Russian>
|
||||
<Japanese>拾い上げる</Japanese>
|
||||
<Polish>Podnieś</Polish>
|
||||
@ -252,6 +321,9 @@
|
||||
<Italian>Raccogli</Italian>
|
||||
<Chinese>撿取</Chinese>
|
||||
<Chinesesimp>捡取</Chinesesimp>
|
||||
<Portuguese>Pegar</Portuguese>
|
||||
<Czech>Zvednout</Czech>
|
||||
<Turkish>Al</Turkish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -19,6 +19,6 @@ class Extended_PostInit_EventHandlers {
|
||||
|
||||
class Extended_DisplayLoad_EventHandlers {
|
||||
class RscDisplayCurator {
|
||||
ADDON = QUOTE(call FUNC(drawCuratorGarrisonPathing));
|
||||
ADDON = QUOTE(call FUNC(initDisplayCurator));
|
||||
};
|
||||
};
|
||||
|
@ -1,4 +1,5 @@
|
||||
PREP(drawCuratorGarrisonPathing);
|
||||
PREP(garrison);
|
||||
PREP(unGarrison);
|
||||
PREP(garrisonMove);
|
||||
PREP(initDisplayCurator);
|
||||
PREP(unGarrison);
|
||||
|
@ -1,54 +1,56 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: alganthe
|
||||
* Add draw3D eh to the curator interface.
|
||||
* Draws AI garrison pathing while the Zeus display is open.
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return value:
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_ai_fnc_drawCuratorGarrisonPathing
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
*/
|
||||
|
||||
addMissionEventHandler ["Draw3D", {
|
||||
if (findDisplay 312 isEqualTo displayNull) exitWith {
|
||||
removeMissionEventHandler ["Draw3D", _thisEventHandler];
|
||||
};
|
||||
if (isNull findDisplay 312) exitWith {
|
||||
removeMissionEventHandler ["Draw3D", _thisEventHandler];
|
||||
};
|
||||
|
||||
private _unitMoveList = missionNameSpace getVariable [QGVAR(garrison_unitMoveList), []];
|
||||
{
|
||||
_x params ["_unit", "_pos"];
|
||||
private _unitMoveList = missionNameSpace getVariable [QGVAR(garrison_unitMoveList), []];
|
||||
|
||||
switch (true) do {
|
||||
case (surfaceIsWater (getPos _unit) && {surfaceIsWater _pos}) : {
|
||||
for "_i" from 0 to 3 do {
|
||||
drawLine3D [_unit modelToWorldVisualWorld [0,0,1], (AGLtoASL _pos), [1,0,0,1]];
|
||||
};
|
||||
drawIcon3D ["\a3\ui_f\data\map\groupicons\waypoint.paa", [1,0,0,1], (AGLtoASL _pos), 0.75, 0.75, 0.75];
|
||||
};
|
||||
|
||||
case (!surfaceIsWater (getPos _unit) && {!surfaceIsWater _pos}) : {
|
||||
for "_i" from 0 to 3 do {
|
||||
drawLine3D [_unit modelToWorldVisual [0,0,1], _pos, [1,0,0,1]];
|
||||
};
|
||||
drawIcon3D ["\a3\ui_f\data\map\groupicons\waypoint.paa", [1,0,0,1], _pos, 0.75, 0.75, 0.75];
|
||||
};
|
||||
|
||||
case (!surfaceIsWater (getPos _unit) && {surfaceIsWater _pos}) : {
|
||||
for "_i" from 0 to 3 do {
|
||||
drawLine3D [_unit modelToWorldVisual [0,0,1], (AGLToASL _pos), [1,0,0,1]];
|
||||
};
|
||||
drawIcon3D ["\a3\ui_f\data\map\groupicons\waypoint.paa", [1,0,0,1], (AGLtoASL _pos), 0.75, 0.75, 0.75];
|
||||
};
|
||||
|
||||
case (surfaceIsWater (getPos _unit) && {!surfaceIsWater _pos}) : {
|
||||
for "_i" from 0 to 3 do {
|
||||
drawLine3D [_unit modelToWorldVisualWorld [0,0,1], _pos, [1,0,0,1]];
|
||||
};
|
||||
drawIcon3D ["\a3\ui_f\data\map\groupicons\waypoint.paa", [1,0,0,1], _pos, 0.75, 0.75, 0.75];
|
||||
{
|
||||
_x params ["_unit", "_pos"];
|
||||
|
||||
switch (true) do {
|
||||
case (surfaceIsWater (getPos _unit) && {surfaceIsWater _pos}) : {
|
||||
for "_i" from 0 to 3 do {
|
||||
drawLine3D [_unit modelToWorldVisualWorld [0,0,1], (AGLtoASL _pos), [1,0,0,1]];
|
||||
};
|
||||
drawIcon3D ["\a3\ui_f\data\map\groupicons\waypoint.paa", [1,0,0,1], (AGLtoASL _pos), 0.75, 0.75, 0.75];
|
||||
};
|
||||
} forEach _unitMoveList;
|
||||
}];
|
||||
|
||||
case (!surfaceIsWater (getPos _unit) && {!surfaceIsWater _pos}) : {
|
||||
for "_i" from 0 to 3 do {
|
||||
drawLine3D [_unit modelToWorldVisual [0,0,1], _pos, [1,0,0,1]];
|
||||
};
|
||||
drawIcon3D ["\a3\ui_f\data\map\groupicons\waypoint.paa", [1,0,0,1], _pos, 0.75, 0.75, 0.75];
|
||||
};
|
||||
|
||||
case (!surfaceIsWater (getPos _unit) && {surfaceIsWater _pos}) : {
|
||||
for "_i" from 0 to 3 do {
|
||||
drawLine3D [_unit modelToWorldVisual [0,0,1], (AGLToASL _pos), [1,0,0,1]];
|
||||
};
|
||||
drawIcon3D ["\a3\ui_f\data\map\groupicons\waypoint.paa", [1,0,0,1], (AGLtoASL _pos), 0.75, 0.75, 0.75];
|
||||
};
|
||||
|
||||
case (surfaceIsWater (getPos _unit) && {!surfaceIsWater _pos}) : {
|
||||
for "_i" from 0 to 3 do {
|
||||
drawLine3D [_unit modelToWorldVisualWorld [0,0,1], _pos, [1,0,0,1]];
|
||||
};
|
||||
drawIcon3D ["\a3\ui_f\data\map\groupicons\waypoint.paa", [1,0,0,1], _pos, 0.75, 0.75, 0.75];
|
||||
};
|
||||
};
|
||||
} forEach _unitMoveList;
|
||||
|
18
addons/ai/functions/fnc_initDisplayCurator.sqf
Normal file
18
addons/ai/functions/fnc_initDisplayCurator.sqf
Normal file
@ -0,0 +1,18 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: mharis001
|
||||
* Initializes the Zeus display.
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_ai_fnc_initDisplayCurator
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
addMissionEventHandler ["Draw3D", {call FUNC(drawCuratorGarrisonPathing)}];
|
@ -1,45 +1,69 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="ai">
|
||||
<Key ID="STR_ACE_ai_GarrisonInvalidPosition">
|
||||
<Package name="AI">
|
||||
<Key ID="STR_ACE_AI_GarrisonInvalidPosition">
|
||||
<English>Invalid position provided.</English>
|
||||
<French>Position invalide fourni</French>
|
||||
<German>Ungültige Position</German>
|
||||
<French>Position invalide fournie.</French>
|
||||
<Japanese>位置が無効です。</Japanese>
|
||||
<Italian>Posizione invalida fornita.</Italian>
|
||||
<Chinese>提供的位置無效</Chinese>
|
||||
<Chinesesimp>提供的位置无效。</Chinesesimp>
|
||||
<Korean>위치가 잘못되었습니다.</Korean>
|
||||
<Polish>Podano błędną pozycję.</Polish>
|
||||
<Russian>Указана неверная позиция</Russian>
|
||||
<Portuguese>Posição inválida fornecida.</Portuguese>
|
||||
<Spanish>Posición inválida proporcionada</Spanish>
|
||||
<Czech>Pozice není validní.</Czech>
|
||||
<Turkish>Geçersiz Konum</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ai_GarrisonNoUnits">
|
||||
<Key ID="STR_ACE_AI_GarrisonNoUnits">
|
||||
<English>No units provided.</English>
|
||||
<French>Aucune unité fourni</French>
|
||||
<German>Keine Einheit ausgewählt</German>
|
||||
<French>Aucune unité fournie.</French>
|
||||
<Japanese>ユニットがありません。</Japanese>
|
||||
<Italian>Nessuna unità fornita.</Italian>
|
||||
<Chinese>找不到可用的單位</Chinese>
|
||||
<Chinesesimp>找不到可用的单位。</Chinesesimp>
|
||||
<Korean>병력이 없습니다.</Korean>
|
||||
<Polish>Nie podano żadnych jednostek.</Polish>
|
||||
<Russian>Не указаны юниты</Russian>
|
||||
<Portuguese>Nenhuma unidade fornecida.</Portuguese>
|
||||
<Spanish>No hay unidades proporcionadas.</Spanish>
|
||||
<Czech>Nejsou k dispozici žádné jednotky.</Czech>
|
||||
<Turkish>Hiçbir Birim Bulunamadı</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ai_GarrisonNotEnoughPos">
|
||||
<Key ID="STR_ACE_AI_GarrisonNotEnoughPos">
|
||||
<English>There aren't enough positions to place all units.</English>
|
||||
<French>Il n'y a pas assez de positions pour placer toutes les unités</French>
|
||||
<German>Es gibt nicht genug Positionen, um alle Einheiten zu platzieren</German>
|
||||
<French>Il n'y a pas assez de positions pour placer toutes les unités.</French>
|
||||
<Japanese>全ユニットを置くために十分な位置がありません。</Japanese>
|
||||
<Italian>Non ci sono abbastanza posizioni per piazzare tutte le unità.</Italian>
|
||||
<Chinese>沒有足夠的位置能擺放所有單位</Chinese>
|
||||
<Chinesesimp>没有足够的位置能摆放所有单位。</Chinesesimp>
|
||||
<Korean>모든 병력을 배치 할 공간이 없습니다.</Korean>
|
||||
<Polish>Nie ma wystarczającej ilości pozycji, aby umieścić wszystkie jednostki.</Polish>
|
||||
<Russian>Недостаточно позиций для размещения всех юнитов</Russian>
|
||||
<Portuguese>Não há posições suficientes para colocar todas as unidades.</Portuguese>
|
||||
<Spanish>No hay suficientes posiciones para colocar todas las unidades.</Spanish>
|
||||
<Czech>Není dostatek pozic pro všechny jednotky.</Czech>
|
||||
<Turkish>Tüm birimleri yerleştirmek için yeterli konum yok.</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ai_GarrisonNoBuilding">
|
||||
<Key ID="STR_ACE_AI_GarrisonNoBuilding">
|
||||
<English>No building found.</English>
|
||||
<French>Aucun bâtiment trouvé</French>
|
||||
<German>Kein Gebäude gefunden</German>
|
||||
<French>Aucun bâtiment trouvé.</French>
|
||||
<Japanese>建物がありません。</Japanese>
|
||||
<Italian>Nessun edificio trovato.</Italian>
|
||||
<Chinese>沒找到建築物</Chinese>
|
||||
<Chinesesimp>没找到建筑物。</Chinesesimp>
|
||||
<Korean>건물이 없습니다.</Korean>
|
||||
<Polish>Nie znaleziono budynku.</Polish>
|
||||
<Russian>Здание не найдено</Russian>
|
||||
<Portuguese>Nenhuma construção encontrada.</Portuguese>
|
||||
<Spanish>No se ha encontrado ningún edificio.</Spanish>
|
||||
<Czech>Nenalezena žádná budova.</Czech>
|
||||
<Turkish>Bir yapı bulunamadı</Turkish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,6 +1,6 @@
|
||||
class CfgAmmo {
|
||||
class BulletBase;
|
||||
class B_20mm : BulletBase {
|
||||
class B_20mm: BulletBase {
|
||||
hit = 80;
|
||||
indirectHit = 12;
|
||||
indirectHitRange = 2; //2;
|
||||
@ -15,8 +15,8 @@ class CfgAmmo {
|
||||
model = "\A3\Weapons_f\Data\bullettracer\tracer_red";
|
||||
};
|
||||
|
||||
class ACE_20mm_HE : B_20mm {};
|
||||
class ACE_20mm_AP : B_20mm {
|
||||
class ACE_20mm_HE: B_20mm {};
|
||||
class ACE_20mm_AP: B_20mm {
|
||||
hit = 50;
|
||||
indirectHit = 12;
|
||||
indirectHitRange = 0.3; //2;
|
||||
@ -39,9 +39,9 @@ class CfgAmmo {
|
||||
|
||||
// also adjust tracer, "muh lightshow"; also adjust splash damage radius
|
||||
class Gatling_30mm_HE_Plane_CAS_01_F: BulletBase {
|
||||
hit = 80; // default: 180
|
||||
hit = 70; // default: 180
|
||||
indirectHit = 12; // default: 4
|
||||
indirectHitRange = 3; // default: 3
|
||||
indirectHitRange = 4; // default: 3
|
||||
caliber = 1.4; // default: 5
|
||||
deflecting = 3; // default: 5
|
||||
fuseDistance = 3; // default: 10
|
||||
@ -49,6 +49,44 @@ class CfgAmmo {
|
||||
timeToLive = 40; // default: 6
|
||||
};
|
||||
|
||||
// adjust damage and splash damage, AP Rounds
|
||||
class ACE_Gatling_30mm_AP_Plane_CAS_01_F: Gatling_30mm_HE_Plane_CAS_01_F {
|
||||
explosive = 0.05; // default: 0.4
|
||||
caliber = 5; // default: 5
|
||||
deflecting = 8; // default: 5
|
||||
hit = 110; // default: 180
|
||||
indirectHit = 2.5; // default: 4
|
||||
indirectHitRange = 1; // default: 3
|
||||
fuseDistance = 0.2; // default: 10
|
||||
};
|
||||
|
||||
// adds submunition logic, enabling multiple rounds per frame
|
||||
class ACE_Gatling_30mm_Sub_HEI: SubmunitionBullet {
|
||||
submunitionAmmo = "Gatling_30mm_HE_Plane_CAS_01_F";
|
||||
weaponType = "cannon";
|
||||
submunitionConeType[] = {"poissondisccenter", 3};
|
||||
submunitionConeAngle = 0.056; // in degrees, 0.055 ~= 0.001 mils minute, but present
|
||||
model = "\A3\Weapons_f\Data\bullettracer\tracer_red.p3d";
|
||||
triggerTime = 0.005;
|
||||
ACE_caliber = 1.4;
|
||||
};
|
||||
|
||||
class ACE_Gatling_30mm_Sub_AP: ACE_Gatling_30mm_Sub_HEI {
|
||||
submunitionAmmo = "ACE_Gatling_30mm_AP_Plane_CAS_01_F";
|
||||
ACE_caliber = 1.4;
|
||||
};
|
||||
|
||||
class ACE_Gatling_30mm_Sub_CM41: ACE_Gatling_30mm_Sub_HEI {
|
||||
submunitionAmmo[] = {"ACE_Gatling_30mm_AP_Plane_CAS_01_F",0.8,"Gatling_30mm_HE_Plane_CAS_01_F",0.2};
|
||||
ACE_caliber = 1.4;
|
||||
};
|
||||
|
||||
class ACE_Gatling_30mm_Sub_CM51: ACE_Gatling_30mm_Sub_HEI {
|
||||
submunitionAmmo[] = {"ACE_Gatling_30mm_AP_Plane_CAS_01_F",0.83,"Gatling_30mm_HE_Plane_CAS_01_F",0.17};
|
||||
ACE_caliber = 1.4;
|
||||
};
|
||||
|
||||
|
||||
// adjust damage and splash damage, closer to bluefor gatling with same caliber
|
||||
class Cannon_30mm_HE_Plane_CAS_02_F: Gatling_30mm_HE_Plane_CAS_01_F {
|
||||
hit = 70; // default: 150
|
||||
|
@ -9,9 +9,3 @@ class Extended_PreInit_EventHandlers {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PostInit_EventHandlers {
|
||||
class ADDON {
|
||||
clientInit = QUOTE(call COMPILE_FILE(XEH_postInitClient));
|
||||
};
|
||||
};
|
||||
|
@ -2,9 +2,36 @@ class CfgMagazines {
|
||||
// shoot helper object to tripple rof
|
||||
class VehicleMagazine;
|
||||
class 1000Rnd_Gatling_30mm_Plane_CAS_01_F: VehicleMagazine {
|
||||
ammo = "ACE_Gatling_30mm_Sub_CM51";
|
||||
displayName = CSTRING(GatlingDescriptionCM51);
|
||||
displayNameShort = CSTRING(GatlingDescriptionShortCM51);
|
||||
count = 1170;
|
||||
};
|
||||
|
||||
class ACE_1000Rnd_Gatling_30mm_Plane_CAS_HEI: 1000Rnd_Gatling_30mm_Plane_CAS_01_F {
|
||||
ammo = "ACE_Gatling_30mm_Sub_HEI";
|
||||
displayName = CSTRING(GatlingDescriptionHEI);
|
||||
displayNameShort = CSTRING(GatlingDescriptionShortHEI);
|
||||
};
|
||||
|
||||
class ACE_1000Rnd_Gatling_30mm_Plane_CAS_AP: 1000Rnd_Gatling_30mm_Plane_CAS_01_F {
|
||||
ammo = "ACE_Gatling_30mm_Sub_AP";
|
||||
displayName = CSTRING(GatlingDescriptionAP);
|
||||
displayNameShort = CSTRING(GatlingDescriptionShortAP);
|
||||
};
|
||||
|
||||
class ACE_1000Rnd_Gatling_30mm_Plane_CAS_CM41: 1000Rnd_Gatling_30mm_Plane_CAS_01_F {
|
||||
ammo = "ACE_Gatling_30mm_Sub_CM41";
|
||||
displayName = CSTRING(GatlingDescriptionCM41);
|
||||
displayNameShort = CSTRING(GatlingDescriptionShortCM41);
|
||||
};
|
||||
|
||||
class ACE_1000Rnd_Gatling_30mm_Plane_CAS_CM51: 1000Rnd_Gatling_30mm_Plane_CAS_01_F {
|
||||
ammo = "ACE_Gatling_30mm_Sub_CM51";
|
||||
displayName = CSTRING(GatlingDescriptionCM51);
|
||||
displayNameShort = CSTRING(GatlingDescriptionShortCM51);
|
||||
};
|
||||
|
||||
// an extended magazine for the comanche
|
||||
class 300Rnd_20mm_shells;
|
||||
class ACE_500Rnd_20mm_shells_Comanche: 300Rnd_20mm_shells {
|
||||
|
@ -2,7 +2,7 @@ class Mode_FullAuto;
|
||||
|
||||
class CfgWeapons {
|
||||
class RocketPods;
|
||||
class ACE_AIR_SAFETY : RocketPods {
|
||||
class ACE_AIR_SAFETY: RocketPods {
|
||||
CanLock = 0;
|
||||
displayName = "SAFE";
|
||||
displayNameMagazine = "SAFE";
|
||||
@ -16,8 +16,21 @@ class CfgWeapons {
|
||||
magazineReloadTime = 0.1;
|
||||
};
|
||||
|
||||
// bigger mag for comanche
|
||||
class CannonCore;
|
||||
// Fix attrocious A-10 Cannon Dispersion; Add high ROF capability
|
||||
class Gatling_30mm_Plane_CAS_01_F: CannonCore {
|
||||
magazines[] += {"ACE_1000Rnd_Gatling_30mm_Plane_CAS_HEI","ACE_1000Rnd_Gatling_30mm_Plane_CAS_AP","ACE_1000Rnd_Gatling_30mm_Plane_CAS_CM41","ACE_1000Rnd_Gatling_30mm_Plane_CAS_CM51"};
|
||||
class LowROF: Mode_FullAuto {
|
||||
multiplier = 3;
|
||||
burst = 1;
|
||||
burstRangeMax = 1;
|
||||
reloadtime = 0.046;
|
||||
dispersion = 0.0046; //0.279508497 = 0.25 * sqrt(0.8^-1); (80%, 5mil. https://en.wikipedia.org/wiki/GAU-8_Avenger#Accuracy) - Luke
|
||||
magazines[] = {"1000Rnd_Gatling_30mm_Plane_CAS_01_F", "ACE_1000Rnd_Gatling_30mm_Plane_CAS_CM"};
|
||||
|
||||
};
|
||||
};
|
||||
// bigger mag for comanche
|
||||
class gatling_20mm: CannonCore {
|
||||
magazines[] += {"ACE_500Rnd_20mm_shells_Comanche"};
|
||||
|
||||
|
@ -3,8 +3,8 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
|
||||
|
||||
class Turrets: Turrets {
|
||||
class MainTurret: MainTurret {
|
||||
weapons[] = {"ACE_gatling_20mm_Comanche", "missiles_DAGR", "missiles_ASRAAM"};
|
||||
magazines[] = {"ACE_500Rnd_20mm_shells_Comanche", "4Rnd_AAA_missiles", "24Rnd_PG_missiles"};
|
||||
weapons[] = {"ACE_gatling_20mm_Comanche", "missiles_DAGR", "missiles_ASRAAM", "Laserdesignator_mounted"};
|
||||
magazines[] = {"ACE_500Rnd_20mm_shells_Comanche", "4Rnd_AAA_missiles", "24Rnd_PG_missiles", "Laserbatteries"};
|
||||
turretInfoType = "Rsc_ACE_Helo_UI_Turret";
|
||||
|
||||
|
||||
@ -119,9 +119,8 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
|
||||
class Heli_Attack_01_dynamicLoadout_base_F: Heli_Attack_01_base_F {
|
||||
class Turrets: Turrets {
|
||||
class MainTurret: MainTurret {
|
||||
weapons[] = {"ACE_gatling_20mm_Comanche"};
|
||||
magazines[] = {"ACE_500Rnd_20mm_shells_Comanche"};
|
||||
weapons[] = {"ACE_gatling_20mm_Comanche", "Laserdesignator_mounted"};
|
||||
magazines[] = {"ACE_500Rnd_20mm_shells_Comanche", "Laserbatteries"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -1,29 +0,0 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
private _cfgAction = configFile >> "CfgActions" >> "Eject";
|
||||
GVAR(ejectActionParams) = [
|
||||
[
|
||||
"", // will be set with setUserActionText
|
||||
{
|
||||
params ["_vehicle", "_unit"];
|
||||
private _preserveEngineOn = (_unit == driver _vehicle) && {isEngineOn _vehicle};
|
||||
moveOut _unit;
|
||||
if (_preserveEngineOn) then {
|
||||
// vehicle is local to last driver, no need to care
|
||||
_vehicle engineOn true;
|
||||
};
|
||||
},
|
||||
nil,
|
||||
getNumber (_cfgAction >> "priority"),
|
||||
false,
|
||||
true,
|
||||
getText (_cfgAction >> "shortcut"),
|
||||
'[_this, _target] call DFUNC(canShowEject)'
|
||||
],
|
||||
getText (_cfgAction >> "text"),
|
||||
getText (_cfgAction >> "textDefault")
|
||||
];
|
||||
|
||||
["Helicopter", "initPost", LINKFUNC(initEjectAction)] call CBA_fnc_addClassEventHandler;
|
@ -6,4 +6,41 @@ PREP_RECOMPILE_START;
|
||||
#include "XEH_PREP.hpp"
|
||||
PREP_RECOMPILE_END;
|
||||
|
||||
if (hasInterface) then {
|
||||
["CBA_settingsInitialized", {
|
||||
private _ejectAction = configFile >> "CfgActions" >> "Eject";
|
||||
private _hideEjectAction = missionNamespace getVariable [QEGVAR(vehicles,hideEjectAction), false];
|
||||
|
||||
private _text = getText (_ejectAction >> "text");
|
||||
if (_hideEjectAction) then {
|
||||
_text = format ["<t color='#808080'>%1</t>", _text];
|
||||
};
|
||||
|
||||
GVAR(ejectActionParams) = [
|
||||
[
|
||||
"", // will be set with setUserActionText
|
||||
{
|
||||
params ["_vehicle", "_unit"];
|
||||
private _preserveEngineOn = (_unit == driver _vehicle) && {isEngineOn _vehicle};
|
||||
moveOut _unit;
|
||||
if (_preserveEngineOn) then {
|
||||
// vehicle is local to last driver, no need to care
|
||||
_vehicle engineOn true;
|
||||
};
|
||||
},
|
||||
nil,
|
||||
[getNumber (_ejectAction >> "priority"), -999] select _hideEjectAction,
|
||||
false,
|
||||
true,
|
||||
getText (_ejectAction >> "shortcut"),
|
||||
'[_this, _target] call DFUNC(canShowEject)'
|
||||
],
|
||||
_text,
|
||||
getText (_ejectAction >> "textDefault")
|
||||
];
|
||||
|
||||
["Helicopter", "InitPost", LINKFUNC(initEjectAction), nil, nil, true] call CBA_fnc_addClassEventHandler;
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
};
|
||||
|
||||
ADDON = true;
|
||||
|
@ -16,6 +16,7 @@
|
||||
<Korean>XM301</Korean>
|
||||
<Chinese>XM301</Chinese>
|
||||
<Chinesesimp>XM301</Chinesesimp>
|
||||
<Turkish>XM301</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Aircraft_OpenCargoRamp">
|
||||
<English>Open Cargo Door</English>
|
||||
@ -32,6 +33,7 @@
|
||||
<Korean>화물칸 개방</Korean>
|
||||
<Chinese>開啟貨艙門</Chinese>
|
||||
<Chinesesimp>开启货舱门</Chinesesimp>
|
||||
<Turkish>Kargo kapısını aç</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Aircraft_CloseCargoRamp">
|
||||
<English>Close Cargo Door</English>
|
||||
@ -48,6 +50,103 @@
|
||||
<Korean>화물칸 폐쇄</Korean>
|
||||
<Chinese>關閉貨艙門</Chinese>
|
||||
<Chinesesimp>关闭货舱门</Chinesesimp>
|
||||
<Turkish>Kargo kapısını kapat</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Aircraft_GatlingDescriptionHEI">
|
||||
<English>30mm High-Explosive Incendiary</English>
|
||||
<Spanish>30mm Alto Explosivo Incendiaria</Spanish>
|
||||
<Chinese>30毫米高爆燃燒彈</Chinese>
|
||||
<French>30 mm High-Explosive Incendiary</French>
|
||||
<Polish>30mm Odłamkowo-Burzące - Zapalające</Polish>
|
||||
<Turkish>30mm Yüksek Patlayıcı </Turkish>
|
||||
<German>30mm Hochexplosiv/Brandladung</German>
|
||||
<Japanese>30mm 焼夷りゅう弾</Japanese>
|
||||
<Czech>30mm Tříštivo-trhavá zápalná střela</Czech>
|
||||
<Russian>30мм Осколочно-Фугасный Зажигательный</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Aircraft_GatlingDescriptionShortHEI">
|
||||
<English>30mm HEI</English>
|
||||
<Spanish>30mm AEI</Spanish>
|
||||
<Chinese>30毫米高爆燃燒</Chinese>
|
||||
<French>30 mm HEI</French>
|
||||
<Polish>30mm OB-Z</Polish>
|
||||
<Turkish>30mm HEI</Turkish>
|
||||
<German>30mm HEB</German>
|
||||
<Japanese>30mm HEI</Japanese>
|
||||
<Czech>30mm HEI</Czech>
|
||||
<Russian>30мм ОФЗ</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Aircraft_GatlingDescriptionAP">
|
||||
<English>30mm DU Armor Piercing</English>
|
||||
<Spanish>30mm UE Perforante de Blindaje</Spanish>
|
||||
<Chinese>30毫米貧化鈾穿甲彈 </Chinese>
|
||||
<French>30 mm UA Armor Piercing</French>
|
||||
<Polish>30mm Zubożony Uran - Przebijające</Polish>
|
||||
<Turkish>30mm DU Zırh Delici</Turkish>
|
||||
<German>30mm abgereichertes panzerbrechendes Uraniumgeschoss</German>
|
||||
<Japanese>30mm DU 徹甲弾</Japanese>
|
||||
<Czech>30mm Protipancéřová střela z ochuzeného Uranu</Czech>
|
||||
<Russian>30мм ОУ Бронебойный Снаряд</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Aircraft_GatlingDescriptionShortAP">
|
||||
<English>30mm DU AP</English>
|
||||
<Spanish>30mm UE AP</Spanish>
|
||||
<Chinese>30毫米貧鈾穿甲</Chinese>
|
||||
<French>30 mm UA AP</French>
|
||||
<Polish>30mm ZU-P</Polish>
|
||||
<Turkish>30mm DU AP</Turkish>
|
||||
<German>30mm DU-PB</German>
|
||||
<Japanese>30mm DU AP</Japanese>
|
||||
<Czech>30 mm DU AP</Czech>
|
||||
<Russian>30мм ОУ БС</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Aircraft_GatlingDescriptionCM41">
|
||||
<English>30mm Combat Mix 4:1 DU:HEI</English>
|
||||
<Spanish>30mm Mezcla de Combate 4:1 UE:AEI</Spanish>
|
||||
<Chinese>30毫米戰鬥混合彈4:1 穿甲:高爆</Chinese>
|
||||
<French>30 mm Mix de Combat 4:1 UA:HEI</French>
|
||||
<Polish>30mm Mieszanka bojowa 4:1 ZU:OB-Z</Polish>
|
||||
<Turkish>30mm Combat Mix 4:1 DU:HEI</Turkish>
|
||||
<German>30mm Kampfmischung 4:1 DU:HEB</German>
|
||||
<Japanese>30mm コンバット ミックス 4:1 DU:HEI</Japanese>
|
||||
<Czech>30mm Bojový Mix 4:1 DU:HEI</Czech>
|
||||
<Russian>30мм Смешанное боепитание 4:1 ОУ:ОФЗ</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Aircraft_GatlingDescriptionShortCM41">
|
||||
<English>30mm CM 4:1</English>
|
||||
<Spanish>30mm MC 4:1</Spanish>
|
||||
<Chinese>30毫米 穿高混合 4:1</Chinese>
|
||||
<French>30 mm MdC 4:1</French>
|
||||
<Polish>30mm MB 4:1</Polish>
|
||||
<Turkish>30mm CM 4:1</Turkish>
|
||||
<German>30mm KM 4:1</German>
|
||||
<Japanese>30mm CM 4:1</Japanese>
|
||||
<Czech>30mm BM 4:1</Czech>
|
||||
<Russian>30мм СБ 4:1</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Aircraft_GatlingDescriptionCM51">
|
||||
<English>30mm Combat Mix 5:1 DU:HEI</English>
|
||||
<Spanish>30mm Mezcla de Combate 5:1 UE:AEI</Spanish>
|
||||
<Chinese>30毫米戰鬥混合彈5:1 穿甲:高爆</Chinese>
|
||||
<French>30 mm Mix de Combat 5:1 UA:HEI</French>
|
||||
<Polish>30mm Mieszanka bojowa 5:1 ZU:OB-Z</Polish>
|
||||
<Turkish>30mm Combat Mix 5:1 DU:HEI</Turkish>
|
||||
<German>30mm Kampfmischung 5:1 DU:HEB</German>
|
||||
<Japanese>30mm コンバット ミックス 5:1 DU:HEI</Japanese>
|
||||
<Czech>30mm Bojový Mix 5:1 DU:HEI</Czech>
|
||||
<Russian>30мм Смешанное боепитание 5:1 ОУ:ОФЗ</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Aircraft_GatlingDescriptionShortCM51">
|
||||
<English>30mm CM 5:1</English>
|
||||
<Spanish>30mm MC 5:1</Spanish>
|
||||
<Chinese>30毫米 穿高混合 5:1</Chinese>
|
||||
<French>30 mm MdC 5:1</French>
|
||||
<Polish>30mm MB 5:1</Polish>
|
||||
<Turkish>30mm CM 5:1</Turkish>
|
||||
<German>30mm KM 5:1</German>
|
||||
<Japanese>30mm CM 5:1</Japanese>
|
||||
<Czech>30mm BM 5:1</Czech>
|
||||
<Russian>30мм СБ 5:1</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
BIN
addons/apl/ACE_CSW_Bag.p3d
Normal file
BIN
addons/apl/ACE_CSW_Bag.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ACE_CSW_m3_tripod.p3d
Normal file
BIN
addons/apl/ACE_CSW_m3_tripod.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ACE_CSW_mortarBaseplate.p3d
Normal file
BIN
addons/apl/ACE_CSW_mortarBaseplate.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_csw_tripod_ags30.p3d
Normal file
BIN
addons/apl/ace_csw_tripod_ags30.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_csw_tripod_kord.p3d
Normal file
BIN
addons/apl/ace_csw_tripod_kord.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_csw_tripod_m122.p3d
Normal file
BIN
addons/apl/ace_csw_tripod_m122.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_csw_tripod_m220.p3d
Normal file
BIN
addons/apl/ace_csw_tripod_m220.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_csw_tripod_spg9.p3d
Normal file
BIN
addons/apl/ace_csw_tripod_spg9.p3d
Normal file
Binary file not shown.
95
addons/apl/data/csw_nsv.rvmat
Normal file
95
addons/apl/data/csw_nsv.rvmat
Normal file
@ -0,0 +1,95 @@
|
||||
ambient[]={1,1,1,1.000000};
|
||||
diffuse[]={1,1,1,1.000000};
|
||||
forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
|
||||
emmisive[]={0.000000,0.000000,0.000000,1.000000};
|
||||
specular[]={1,1,1,1.000000};
|
||||
specularPower=40.000000;
|
||||
PixelShaderID="super";
|
||||
VertexShaderID="super";
|
||||
class Stage1
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\csw_nsv_nohq.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage2
|
||||
{
|
||||
texture="a3\weapons_f\Data\DetailMaps\metal_detail_dt.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={8.0000,0.000000,0.000000};
|
||||
up[]={0.000000,8.0000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage3
|
||||
{
|
||||
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage4
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(1,1,1,1,AS)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage5
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\csw_nsv_smdi.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage6
|
||||
{
|
||||
texture = "#(ai,32,128,1)fresnel(3.38,5.33)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage7
|
||||
{
|
||||
texture="a3\data_f\env_land_co.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class StageTI {
|
||||
texture = "a3\data_f\default_vehicle_ti_ca.paa";
|
||||
};
|
BIN
addons/apl/data/csw_nsv_co.paa
Normal file
BIN
addons/apl/data/csw_nsv_co.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_nsv_nohq.paa
Normal file
BIN
addons/apl/data/csw_nsv_nohq.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_nsv_smdi.paa
Normal file
BIN
addons/apl/data/csw_nsv_smdi.paa
Normal file
Binary file not shown.
92
addons/apl/data/csw_spg9.rvmat
Normal file
92
addons/apl/data/csw_spg9.rvmat
Normal file
@ -0,0 +1,92 @@
|
||||
ambient[] = {1.0,1.0,1.0,1.0};
|
||||
diffuse[] = {1.0,1.0,1.0,1.0};
|
||||
forcedDiffuse[] = {0.0,0.0,0.0,0.0};
|
||||
emmisive[] = {0.0,0.0,0.0,1.0};
|
||||
specular[] = {0.545,0.545,0.545,1.0};
|
||||
specularPower = 100.0;
|
||||
PixelShaderID = "Super";
|
||||
VertexShaderID = "Super";
|
||||
class Stage1
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\csw_spg9_nohq.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,1.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage2
|
||||
{
|
||||
texture = "a3\weapons_f\Data\DetailMaps\metal_detail_dt.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {8.0,0.0,0.0};
|
||||
up[] = {0.0,2.0,0.0};
|
||||
dir[] = {0.0,0.0,1.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage3
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,1.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage4
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(1,1,1,1,AS)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,1.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage5
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\csw_spg9_smdi.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,1.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage6
|
||||
{
|
||||
texture = "#(ai,32,128,1)fresnel(1.89,1.02)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,1.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage7
|
||||
{
|
||||
texture="a3\data_f\env_land_co.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,1.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
BIN
addons/apl/data/csw_spg9_co.paa
Normal file
BIN
addons/apl/data/csw_spg9_co.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_spg9_nohq.paa
Normal file
BIN
addons/apl/data/csw_spg9_nohq.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_spg9_smdi.paa
Normal file
BIN
addons/apl/data/csw_spg9_smdi.paa
Normal file
Binary file not shown.
32
addons/apl/data/csw_tow_merge.rvmat
Normal file
32
addons/apl/data/csw_tow_merge.rvmat
Normal file
@ -0,0 +1,32 @@
|
||||
ambient[]={1.000000,1.000000,1.000000,1.000000};
|
||||
diffuse[]={1.000000,1.000000,1.000000,1.000000};
|
||||
forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
|
||||
emmisive[]={0.000000,0.000000,0.000000,1.000000};
|
||||
specular[]={0.3000000,0.3000000,0.3000000,1.000000};
|
||||
specularPower=100.000000;
|
||||
PixelShaderID="NormalMapSpecularDIMap";
|
||||
VertexShaderID="NormalMap";
|
||||
class Stage1
|
||||
{
|
||||
texture="z\ace\addons\apl\data\csw_tow_merge_nohq.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage2
|
||||
{
|
||||
texture="z\ace\addons\apl\data\csw_tow_merge_smdi.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
BIN
addons/apl/data/csw_tow_merge_co.paa
Normal file
BIN
addons/apl/data/csw_tow_merge_co.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_tow_merge_nohq.paa
Normal file
BIN
addons/apl/data/csw_tow_merge_nohq.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_tow_merge_smdi.paa
Normal file
BIN
addons/apl/data/csw_tow_merge_smdi.paa
Normal file
Binary file not shown.
32
addons/apl/data/csw_tripod_ags.rvmat
Normal file
32
addons/apl/data/csw_tripod_ags.rvmat
Normal file
@ -0,0 +1,32 @@
|
||||
ambient[] = {1.0,1.0,1.0,1.0};
|
||||
diffuse[] = {1.0,1.0,1.0,1.0};
|
||||
forcedDiffuse[] = {0.0,0.0,0.0,0.0};
|
||||
emmisive[] = {0.0,0.0,0.0,0.0};
|
||||
specular[] = {0.3,0.3,0.3,1.0};
|
||||
specularPower = 256.0;
|
||||
PixelShaderID = "NormalMapSpecularDIMap";
|
||||
VertexShaderID = "NormalMap";
|
||||
class Stage1
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\csw_tripod_ags_nohq.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage2
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\csw_tripod_ags_smdi.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
BIN
addons/apl/data/csw_tripod_ags_co.paa
Normal file
BIN
addons/apl/data/csw_tripod_ags_co.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_tripod_ags_nohq.paa
Normal file
BIN
addons/apl/data/csw_tripod_ags_nohq.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/csw_tripod_ags_smdi.paa
Normal file
BIN
addons/apl/data/csw_tripod_ags_smdi.paa
Normal file
Binary file not shown.
98
addons/apl/data/m3tripod.rvmat
Normal file
98
addons/apl/data/m3tripod.rvmat
Normal file
@ -0,0 +1,98 @@
|
||||
#define _ARMA_
|
||||
|
||||
ambient[] = {1,1,1,1.0};
|
||||
diffuse[] = {1,1,1,1.0};
|
||||
forcedDiffuse[] = {0.0,0.0,0.0,0.0};
|
||||
emmisive[] = {0.0,0.0,0.0,1.0};
|
||||
specular[] = {1,1,1,1.0};
|
||||
specularPower = 40.0;
|
||||
PixelShaderID = "super";
|
||||
VertexShaderID = "super";
|
||||
class Stage1
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\m3tripod_nohq.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage2
|
||||
{
|
||||
texture = "a3\weapons_f\Data\DetailMaps\metal_detail_dt.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {8.0,0.0,0.0};
|
||||
up[] = {0.0,8.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage3
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage4
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(1,1,1,1,AS)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage5
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\m3tripod_SMDI.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage6
|
||||
{
|
||||
texture = "#(ai,32,128,1)fresnel(3.38,5.33)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage7
|
||||
{
|
||||
texture = "a3\data_f\env_land_co.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class StageTI
|
||||
{
|
||||
texture = "a3\data_f\default_vehicle_ti_ca.paa";
|
||||
};
|
BIN
addons/apl/data/m3tripod_co.paa
Normal file
BIN
addons/apl/data/m3tripod_co.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/m3tripod_nohq.paa
Normal file
BIN
addons/apl/data/m3tripod_nohq.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/m3tripod_smdi.paa
Normal file
BIN
addons/apl/data/m3tripod_smdi.paa
Normal file
Binary file not shown.
95
addons/apl/data/mortarBaseplate.rvmat
Normal file
95
addons/apl/data/mortarBaseplate.rvmat
Normal file
@ -0,0 +1,95 @@
|
||||
ambient[]={1,1,1,1.000000};
|
||||
diffuse[]={1,1,1,1.000000};
|
||||
forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
|
||||
emmisive[]={0.000000,0.000000,0.000000,1.000000};
|
||||
specular[]={1,1,1,1.000000};
|
||||
specularPower=40.000000;
|
||||
PixelShaderID="super";
|
||||
VertexShaderID="super";
|
||||
class Stage1
|
||||
{
|
||||
texture="z\ace\addons\apl\data\mortarBaseplate_nohq.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage2
|
||||
{
|
||||
texture="a3\weapons_f\Data\DetailMaps\metal_detail_dt.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={8.0000,0.000000,0.000000};
|
||||
up[]={0.000000,8.0000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage3
|
||||
{
|
||||
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage4
|
||||
{
|
||||
texture="z\ace\addons\apl\data\mortarBaseplate_as.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage5
|
||||
{
|
||||
texture="z\ace\addons\apl\data\mortarBaseplate_smdi.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage6
|
||||
{
|
||||
texture = "#(ai,32,128,1)fresnel(3.38,5.33)";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class Stage7
|
||||
{
|
||||
texture="a3\data_f\env_land_co.paa";
|
||||
uvSource="tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[]={1.000000,0.000000,0.000000};
|
||||
up[]={0.000000,1.000000,0.000000};
|
||||
dir[]={0.000000,0.000000,0.000000};
|
||||
pos[]={0.000000,0.000000,0.000000};
|
||||
};
|
||||
};
|
||||
class StageTI {
|
||||
texture = "a3\data_f\default_vehicle_ti_ca.paa";
|
||||
};
|
BIN
addons/apl/data/mortarBaseplate_as.paa
Normal file
BIN
addons/apl/data/mortarBaseplate_as.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/mortarBaseplate_co.paa
Normal file
BIN
addons/apl/data/mortarBaseplate_co.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/mortarBaseplate_nohq.paa
Normal file
BIN
addons/apl/data/mortarBaseplate_nohq.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/mortarBaseplate_smdi.paa
Normal file
BIN
addons/apl/data/mortarBaseplate_smdi.paa
Normal file
Binary file not shown.
98
addons/apl/data/static.rvmat
Normal file
98
addons/apl/data/static.rvmat
Normal file
@ -0,0 +1,98 @@
|
||||
#define _ARMA_
|
||||
|
||||
class StageTI
|
||||
{
|
||||
texture = "a3\weapons_f\ammoboxes\bags\data\backpacks_ti_ca.paa";
|
||||
};
|
||||
ambient[] = {1.0,1.0,1.0,1.0};
|
||||
diffuse[] = {1.0,1.0,1.0,1.0};
|
||||
forcedDiffuse[] = {0.0,0.0,0.0,0.0};
|
||||
emmisive[] = {0.0,0.0,0.0,1.0};
|
||||
specular[] = {0.0,0.0,0.0,1.0};
|
||||
specularPower = 0.0;
|
||||
PixelShaderID = "Super";
|
||||
VertexShaderID = "Super";
|
||||
class Stage1
|
||||
{
|
||||
texture = "z\ace\addons\apl\data\static_nohq.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage2
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage3
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage4
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(1,1,1,1,AS)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage5
|
||||
{
|
||||
texture = "#(argb,8,8,3)color(0,0,1,1,SMDI)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage6
|
||||
{
|
||||
texture = "#(ai,32,128,1)fresnel(1.58,0.71)";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
||||
class Stage7
|
||||
{
|
||||
texture = "a3\data\env2_co.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform
|
||||
{
|
||||
aside[] = {1.0,0.0,0.0};
|
||||
up[] = {0.0,1.0,0.0};
|
||||
dir[] = {0.0,0.0,0.0};
|
||||
pos[] = {0.0,0.0,0.0};
|
||||
};
|
||||
};
|
BIN
addons/apl/data/static_co.paa
Normal file
BIN
addons/apl/data/static_co.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/static_nohq.paa
Normal file
BIN
addons/apl/data/static_nohq.paa
Normal file
Binary file not shown.
85
addons/arsenal/ACE_Arsenal_Sorts.hpp
Normal file
85
addons/arsenal/ACE_Arsenal_Sorts.hpp
Normal file
@ -0,0 +1,85 @@
|
||||
class GVAR(sorts) {
|
||||
class sortBase {
|
||||
scope = 1;
|
||||
displayName = "";
|
||||
tabs[] = {{}, {}};
|
||||
statement = "";
|
||||
condition = "true";
|
||||
};
|
||||
|
||||
class ACE_alphabetically: sortBase {
|
||||
scope = 2;
|
||||
displayName = "$STR_a3_rscdisplayarsenal_sort_alphabet";
|
||||
tabs[] = {{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}, {0,1,2,3,4,5,6,7}};
|
||||
statement = QUOTE({});
|
||||
};
|
||||
|
||||
class ACE_mod: sortBase {
|
||||
scope = 2;
|
||||
displayName = "$STR_a3_rscdisplayarsenal_sort_mod";
|
||||
tabs[] = {{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}, {0,1,2,3,4,5,6,7}};
|
||||
statement = QUOTE(_this call FUNC(sortStatement_mod));
|
||||
};
|
||||
|
||||
class ACE_mass: sortBase {
|
||||
scope = 2;
|
||||
displayName = CSTRING(sortByWeightText);
|
||||
tabs[] = {{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}, {0,1,2,3,4,5,6,7}};
|
||||
statement = QUOTE(_this call FUNC(sortStatement_mass));
|
||||
};
|
||||
|
||||
class ACE_amount: sortBase {
|
||||
scope = 2;
|
||||
displayName = CSTRING(sortByAmountText);
|
||||
tabs[] = {{}, {0,1,2,3,4,5,6,7}};
|
||||
statement = QUOTE(_this call FUNC(sortStatement_amount));
|
||||
condition = QUOTE(_this select 0); // Only show for containers
|
||||
};
|
||||
|
||||
class ACE_load: sortBase {
|
||||
scope = 2;
|
||||
displayName = CSTRING(sortByLoadText);
|
||||
tabs[] = {{3,4,5}, {}};
|
||||
statement = QUOTE(getContainerMaxLoad (_this select 1));
|
||||
};
|
||||
|
||||
class ACE_accuracy: sortBase {
|
||||
scope = 2;
|
||||
displayName = CSTRING(sortByAccuracyText);
|
||||
tabs[] = {{0,1}, {}};
|
||||
statement = QUOTE(_this call FUNC(sortStatement_accuracy));
|
||||
};
|
||||
|
||||
class ACE_rateOfFire: sortBase {
|
||||
scope = 2;
|
||||
displayName = CSTRING(sortByRateOfFireText);
|
||||
tabs[] = {{0,1}, {}};
|
||||
statement = QUOTE(_this call FUNC(sortStatement_rateOfFire));
|
||||
};
|
||||
|
||||
class ACE_scopeMag: sortBase {
|
||||
scope = 2;
|
||||
displayName = CSTRING(sortByMagnificationText);
|
||||
tabs[] = {{}, {0}};
|
||||
statement = QUOTE(_this call FUNC(sortStatement_scopeMag));
|
||||
};
|
||||
|
||||
class ACE_magCount: sortBase {
|
||||
scope = 2;
|
||||
displayName = CSTRING(sortByMagCountText);
|
||||
tabs[] = {{}, {4}};
|
||||
statement = QUOTE(_this call FUNC(sortStatement_magCount));
|
||||
};
|
||||
|
||||
class ACE_protectionBallistic: sortBase {
|
||||
scope = 2;
|
||||
displayName = CSTRING(sortByProtectionBallistic);
|
||||
tabs[] = {{3,4,6}, {}};
|
||||
statement = QUOTE([ARR_3(_this, 1000000, 1000)] call FUNC(sortStatement_protection));
|
||||
};
|
||||
|
||||
class ACE_protectionExplosive: ACE_protectionBallistic {
|
||||
displayName = CSTRING(sortByProtectionExplosive);
|
||||
statement = QUOTE([ARR_3(_this, 1000, 1000000)] call FUNC(sortStatement_protection));
|
||||
};
|
||||
};
|
@ -115,8 +115,17 @@ class GVAR(stats) {
|
||||
stats[] = {"ammo"};
|
||||
displayName = CSTRING(statTTL);
|
||||
showText = 1;
|
||||
textStatement= QUOTE(call FUNC(statTextStatement_smokeChemTTL));
|
||||
textStatement = QUOTE(call FUNC(statTextStatement_smokeChemTTL));
|
||||
condition = QUOTE((configName (_this select 1)) isKindOf [ARR_2('smokeShell', configFile >> 'CfgMagazines')]);
|
||||
tabs[] = {{}, {5}};
|
||||
};
|
||||
class ACE_explosionTime: statBase {
|
||||
scope = 2;
|
||||
priority = 3;
|
||||
displayName = CSTRING(StatExplosionTime);
|
||||
showText = 1;
|
||||
textStatement = QUOTE(call FUNC(statTextStatement_explosionTime));
|
||||
condition = QUOTE(true);
|
||||
tabs[] = {{}, {5}};
|
||||
};
|
||||
};
|
||||
|
@ -55,7 +55,7 @@ class Cfg3DEN {
|
||||
};
|
||||
class Category: ctrlToolboxPictureKeepAspect {
|
||||
idc = IDC_ATTRIBUTE_CATEGORY;
|
||||
onToolBoxSelChanged = QUOTE([ctrlParentControlsGroup (_this select 0)] call FUNC(attributeAddItems));
|
||||
onToolBoxSelChanged = QUOTE([ARR_2(ctrlParentControlsGroup (_this select 0), _this select 1)] call FUNC(attributeCategory));
|
||||
x = QUOTE(5 * ATTRIBUTE_W);
|
||||
y = QUOTE(15 * ATTRIBUTE_H);
|
||||
w = QUOTE(125 * ATTRIBUTE_W);
|
||||
@ -129,7 +129,14 @@ class Cfg3DEN {
|
||||
};
|
||||
class SearchButton: ctrlButtonPicture {
|
||||
idc = IDC_ATTRIBUTE_SEARCH_BUTTON;
|
||||
onButtonClick = QUOTE(((ctrlParentControlsGroup (_this select 0)) controlsGroupCtrl IDC_ATTRIBUTE_SEARCHBAR) ctrlSetText ''; [ctrlParentControlsGroup (_this select 0)] call FUNC(attributeAddItems));
|
||||
onButtonClick = QUOTE( \
|
||||
params ['_searchButton']; \
|
||||
private _controlsGroup = ctrlParentControlsGroup _searchButton; \
|
||||
private _searchBar = _controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_SEARCHBAR; \
|
||||
_searchBar ctrlSetText ''; \
|
||||
ctrlSetFocus _searchBar; \
|
||||
[_controlsGroup] call FUNC(attributeAddItems); \
|
||||
);
|
||||
text = "\a3\Ui_f\data\GUI\RscCommon\RscButtonSearch\search_start_ca.paa";
|
||||
x = QUOTE(5 * ATTRIBUTE_W);
|
||||
y = QUOTE(101.83 * ATTRIBUTE_H);
|
||||
@ -140,9 +147,16 @@ class Cfg3DEN {
|
||||
class SearchBar: ctrlEdit {
|
||||
idc = IDC_ATTRIBUTE_SEARCHBAR;
|
||||
onKeyUp = QUOTE([ctrlParentControlsGroup (_this select 0)] call FUNC(attributeAddItems));
|
||||
onMouseButtonClick = QUOTE( \
|
||||
params [ARR_2('_searchBar','_button')]; \
|
||||
if (_button != 1) exitWith {}; \
|
||||
_searchBar ctrlSetText ''; \
|
||||
ctrlSetFocus _searchBar; \
|
||||
[ctrlParentControlsGroup _searchBar] call FUNC(attributeAddItems); \
|
||||
);
|
||||
x = QUOTE(11 * ATTRIBUTE_W);
|
||||
y = QUOTE(101.83 * ATTRIBUTE_H);
|
||||
w = QUOTE(55 * ATTRIBUTE_W);
|
||||
w = QUOTE(40 * ATTRIBUTE_W);
|
||||
h = QUOTE(5 * ATTRIBUTE_H);
|
||||
};
|
||||
class ClearButton: ctrlButton {
|
||||
@ -162,6 +176,27 @@ class Cfg3DEN {
|
||||
tooltip = CSTRING(AttributeExport_Tooltip);
|
||||
x = QUOTE(79 * ATTRIBUTE_W);
|
||||
};
|
||||
class ImportButton: ClearButton {
|
||||
idc = IDC_ATTRIBUTE_IMPORT_BUTTON;
|
||||
onButtonClick = QUOTE([ctrlParentControlsGroup (_this select 0)] call FUNC(attributeImport));
|
||||
text = CSTRING(buttonImportText);
|
||||
tooltip = CSTRING(AttributeImport_Tooltip);
|
||||
x = QUOTE(53 * ATTRIBUTE_W);
|
||||
};
|
||||
class AddCompatible: ctrlButton {
|
||||
idc = IDC_ATTRIBUTE_ADD_COMPATIBLE;
|
||||
style = ST_CENTER;
|
||||
onButtonClick = QUOTE([ctrlParentControlsGroup (_this select 0)] call FUNC(attributeAddCompatible));
|
||||
text = CSTRING(AttributeAddCompatible_DisplayName);
|
||||
tooltip = CSTRING(AttributeAddCompatible_Tooltip);
|
||||
font = "RobotoCondensedLight";
|
||||
x = QUOTE(98.75 * ATTRIBUTE_W);
|
||||
y = QUOTE(10.5 * ATTRIBUTE_H);
|
||||
w = QUOTE(31.25 * ATTRIBUTE_W);
|
||||
h = QUOTE(4 * ATTRIBUTE_H);
|
||||
sizeEx = QUOTE(4 * ATTRIBUTE_H);
|
||||
colorBackground[] = {0, 0, 0, 0.5};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -13,7 +13,7 @@ class Display3DEN {
|
||||
};
|
||||
class aceArsenal: virtualArsenal {
|
||||
text = "ACE Arsenal";
|
||||
action = QUOTE(call FUNC(open3DEN));
|
||||
action = QUOTE(call DFUNC(open3DEN));
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -21,12 +21,12 @@ class Display3DEN {
|
||||
class MenuStrip: ctrlMenuStrip {
|
||||
class Items {
|
||||
class Tools {
|
||||
items[] += {"ACE_arsenal_portVALoadouts"};
|
||||
items[] += {QGVAR(portVALoadouts)};
|
||||
};
|
||||
class ACE_arsenal_portVALoadouts {
|
||||
class GVAR(portVALoadouts) {
|
||||
text = CSTRING(portLoadoutsText);
|
||||
picture = QPATHTOEF(common,data\logo_ace3_ca.paa);
|
||||
action = "call ace_arsenal_fnc_portVALoadouts;";
|
||||
action = QUOTE(call DFUNC(portVALoadouts););
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -9,7 +9,6 @@ class RscDisplayMain: RscStandardDisplay {
|
||||
|
||||
class Controls: Controls {
|
||||
class Bootcamp;
|
||||
class VRTraining;
|
||||
class Arsenal;
|
||||
class GVAR(mission): Arsenal {
|
||||
idc = -1;
|
||||
|
@ -1,10 +1,15 @@
|
||||
PREP(addDefaultLoadout);
|
||||
PREP(addListBoxItem);
|
||||
PREP(addSort);
|
||||
PREP(addRightPanelButton);
|
||||
PREP(addStat);
|
||||
PREP(addVirtualItems);
|
||||
PREP(attributeAddCompatible);
|
||||
PREP(attributeAddItems);
|
||||
PREP(attributeCategory);
|
||||
PREP(attributeClear);
|
||||
PREP(attributeDblClick);
|
||||
PREP(attributeImport);
|
||||
PREP(attributeInit);
|
||||
PREP(attributeKeyDown);
|
||||
PREP(attributeLoad);
|
||||
@ -23,10 +28,12 @@ PREP(buttonLoadoutsShare);
|
||||
PREP(buttonStats);
|
||||
PREP(buttonStatsPage);
|
||||
PREP(clearSearchbar);
|
||||
PREP(compileSorts);
|
||||
PREP(compileStats);
|
||||
PREP(fillLeftPanel);
|
||||
PREP(fillLoadoutsList);
|
||||
PREP(fillRightPanel);
|
||||
PREP(fillSort);
|
||||
PREP(handleLoadoutsSearchbar);
|
||||
PREP(handleMouse);
|
||||
PREP(handleScrollWheel);
|
||||
@ -56,11 +63,20 @@ PREP(removeVirtualItems);
|
||||
PREP(scanConfig);
|
||||
PREP(showItem);
|
||||
PREP(sortPanel);
|
||||
PREP(sortStatement_accuracy);
|
||||
PREP(sortStatement_amount);
|
||||
PREP(sortStatement_magCount);
|
||||
PREP(sortStatement_mass);
|
||||
PREP(sortStatement_mod);
|
||||
PREP(sortStatement_protection);
|
||||
PREP(sortStatement_rateOfFire);
|
||||
PREP(sortStatement_scopeMag);
|
||||
PREP(statBarStatement_accuracy);
|
||||
PREP(statBarStatement_default);
|
||||
PREP(statBarStatement_impact);
|
||||
PREP(statBarStatement_rateOfFIre);
|
||||
PREP(statTextStatement_accuracy);
|
||||
PREP(statTextStatement_explosionTime);
|
||||
PREP(statTextStatement_mass);
|
||||
PREP(statTextStatement_rateOfFire);
|
||||
PREP(statTextStatement_scopeMag);
|
||||
|
@ -1,10 +1,14 @@
|
||||
#include "script_component.hpp"
|
||||
#include "defines.hpp"
|
||||
|
||||
GVAR(currentBox) = objNull;
|
||||
|
||||
GVAR(EH_ID) = 0;
|
||||
GVAR(lastSearchTextLeft) = "";
|
||||
GVAR(lastSearchTextRight) = "";
|
||||
GVAR(lastSearchTextLoadouts) = "";
|
||||
GVAR(lastSortLeft) = "";
|
||||
GVAR(lastSortRight) = "";
|
||||
|
||||
[QGVAR(initBox), {_this call FUNC(initBox)}] call CBA_fnc_addEventHandler;
|
||||
[QGVAR(removeBox), {_this call FUNC(removeBox)}] call CBA_fnc_addEventHandler;
|
||||
@ -24,7 +28,7 @@ GVAR(lastSearchTextLoadouts) = "";
|
||||
[QGVAR(loadoutUnshared), {
|
||||
params ["_contentPanelCtrl" , "_playerName", "_loadoutName"];
|
||||
|
||||
if (!(isNil QGVAR(currentLoadoutsTab)) && {GVAR(currentLoadoutsTab) == IDC_buttonSharedLoadouts}) then {
|
||||
if (!isNil QGVAR(currentLoadoutsTab) && {GVAR(currentLoadoutsTab) == IDC_buttonSharedLoadouts}) then {
|
||||
|
||||
private _dataToCheck = _playerName + _loadoutName;
|
||||
|
||||
@ -52,7 +56,7 @@ GVAR(lastSearchTextLoadouts) = "";
|
||||
params ["_contentPanelCtrl" ,"_loadoutArgs"];
|
||||
_loadoutArgs params ["_playerName", "_loadoutName", "_loadoutData"];
|
||||
|
||||
if (!(isNil QGVAR(currentLoadoutsTab)) && {GVAR(currentLoadoutsTab) == IDC_buttonSharedLoadouts}) then {
|
||||
if (!isNil QGVAR(currentLoadoutsTab) && {GVAR(currentLoadoutsTab) == IDC_buttonSharedLoadouts}) then {
|
||||
|
||||
private _curSelData =_contentPanelCtrl lnbData [(lnbCurSelRow _contentPanelCtrl), 1];
|
||||
([_loadoutData] call FUNC(verifyLoadout)) params ["_loadout", "_nullItemsAmount", "_unavailableItemsAmount"];
|
||||
|
@ -8,14 +8,11 @@ PREP_RECOMPILE_START;
|
||||
PREP_RECOMPILE_END;
|
||||
|
||||
// Arsenal
|
||||
GVAR(modList) = ["","curator","kart","heli","mark","expansion","expansionpremium"];
|
||||
|
||||
[QGVAR(camInverted), "CHECKBOX", localize LSTRING(invertCameraSetting), localize LSTRING(settingCategory), false] call CBA_Settings_fnc_init;
|
||||
[QGVAR(enableModIcons), "CHECKBOX", [LSTRING(modIconsSetting), LSTRING(modIconsTooltip)], localize LSTRING(settingCategory), true] call CBA_Settings_fnc_init;
|
||||
[QGVAR(fontHeight), "SLIDER", [LSTRING(fontHeightSetting), LSTRING(fontHeightTooltip)], localize LSTRING(settingCategory), [1, 10, 4.5, 1]] call CBA_Settings_fnc_init;
|
||||
[QGVAR(enableIdentityTabs), "CHECKBOX", localize LSTRING(enableIdentityTabsSettings), localize LSTRING(settingCategory), true, true] call CBA_Settings_fnc_init;
|
||||
|
||||
|
||||
// Arsenal loadouts
|
||||
[QGVAR(allowDefaultLoadouts), "CHECKBOX", [LSTRING(allowDefaultLoadoutsSetting), LSTRING(defaultLoadoutsTooltip)], localize LSTRING(settingCategory), true, true] call CBA_Settings_fnc_init;
|
||||
[QGVAR(allowSharedLoadouts), "CHECKBOX", localize LSTRING(allowSharingSetting), localize LSTRING(settingCategory), true, true] call CBA_Settings_fnc_init;
|
||||
@ -59,5 +56,19 @@ GVAR(modList) = ["","curator","kart","heli","mark","expansion","expansionpremium
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
call FUNC(compileStats);
|
||||
call FUNC(compileSorts);
|
||||
|
||||
[QUOTE(ADDON), {!isNil QGVAR(camera)}] call CBA_fnc_registerFeatureCamera;
|
||||
|
||||
// Compatibility with CBA scripted optics and dispoable framework
|
||||
[QGVAR(displayOpened), {
|
||||
"cba_optics_arsenalOpened" call CBA_fnc_localEvent;
|
||||
"cba_disposable_arsenalOpened" call CBA_fnc_localEvent;
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
[QGVAR(displayClosed), {
|
||||
"cba_optics_arsenalClosed" call CBA_fnc_localEvent;
|
||||
"cba_disposable_arsenalClosed" call CBA_fnc_localEvent;
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
ADDON = true;
|
||||
|
@ -8,15 +8,17 @@ class CfgPatches {
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_common"};
|
||||
author = ECSTRING(common,ACETeam);
|
||||
authors[] = {"alganthe", "mharis001"};
|
||||
authors[] = {"alganthe", "mharis001", "SynixeBrett"};
|
||||
url = ECSTRING(main,URL);
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
};
|
||||
|
||||
#include "ui\RscAttributes.hpp"
|
||||
#include "ui\RscCustomArsenalButton.hpp"
|
||||
#include "Display3DEN.hpp"
|
||||
#include "Cfg3DEN.hpp"
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "RscDisplayMain.hpp"
|
||||
#include "ACE_Arsenal_Sorts.hpp"
|
||||
#include "ACE_Arsenal_Stats.hpp"
|
||||
|
BIN
addons/arsenal/data/iconCustom.paa
Normal file
BIN
addons/arsenal/data/iconCustom.paa
Normal file
Binary file not shown.
@ -79,7 +79,7 @@
|
||||
#define IDC_iconBackgroundVoice 2034
|
||||
#define IDC_buttonVoice 2035
|
||||
#define IDC_iconBackgroundInsigna 2036
|
||||
#define IDC_buttonInsigna 2037
|
||||
#define IDC_buttonInsignia 2037
|
||||
#define IDC_iconBackgroundOptic 21
|
||||
#define IDC_buttonOptic 22
|
||||
#define IDC_iconBackgroundItemAcc 23
|
||||
@ -162,6 +162,8 @@
|
||||
#define IDC_ATTRIBUTE_SEARCHBAR 8106
|
||||
#define IDC_ATTRIBUTE_CLEAR_BUTTON 8107
|
||||
#define IDC_ATTRIBUTE_EXPORT_BUTTON 8108
|
||||
#define IDC_ATTRIBUTE_IMPORT_BUTTON 8109
|
||||
#define IDC_ATTRIBUTE_ADD_COMPATIBLE 8110
|
||||
|
||||
#define SYMBOL_ITEM_NONE "−"
|
||||
#define SYMBOL_ITEM_REMOVE "×"
|
||||
@ -170,10 +172,12 @@
|
||||
#define FADE_DELAY 0.15
|
||||
#define CAM_DIS_MAX 5
|
||||
|
||||
#define RIGHT_PANEL_CUSTOM_BUTTONS 61, 63, 65, 67, 69, 71, 73, 75, 77, 79
|
||||
#define RIGHT_PANEL_CUSTOM_BACKGROUND 60, 62, 64, 66, 68, 70, 72, 74, 76, 78
|
||||
#define RIGHT_PANEL_ACC_IDCS IDC_buttonOptic, IDC_buttonItemAcc, IDC_buttonMuzzle, IDC_buttonBipod
|
||||
#define RIGHT_PANEL_ACC_BACKGROUND_IDCS IDC_iconBackgroundOptic, IDC_iconBackgroundItemAcc, IDC_iconBackgroundMuzzle, IDC_iconBackgroundBipod
|
||||
#define RIGHT_PANEL_ITEMS_IDCS IDC_buttonMag, IDC_buttonMagALL, IDC_buttonThrow, IDC_buttonPut, IDC_buttonMisc
|
||||
#define RIGHT_PANEL_ITEMS_BACKGROUND_IDCS IDC_iconBackgroundMag, IDC_iconBackgroundMagALL, IDC_iconBackgroundThrow, IDC_iconBackgroundPut, IDC_iconBackgroundMisc
|
||||
#define RIGHT_PANEL_ITEMS_IDCS IDC_buttonMag, IDC_buttonMagALL, IDC_buttonThrow, IDC_buttonPut, IDC_buttonMisc, RIGHT_PANEL_CUSTOM_BUTTONS
|
||||
#define RIGHT_PANEL_ITEMS_BACKGROUND_IDCS IDC_iconBackgroundMag, IDC_iconBackgroundMagALL, IDC_iconBackgroundThrow, IDC_iconBackgroundPut, IDC_iconBackgroundMisc, RIGHT_PANEL_CUSTOM_BACKGROUND
|
||||
#define ARROWS_IDCS IDC_arrowMinus, IDC_arrowPlus
|
||||
|
||||
#define GETDLC\
|
||||
@ -194,9 +198,6 @@
|
||||
private _dlcName = _this call GETDLC;\
|
||||
if (_dlcName != "") then {\
|
||||
_ctrlPanel lbsetpictureright [_lbAdd,(modParams [_dlcName,["logo"]]) param [0,""]];\
|
||||
_modID = GVAR(modList) find _dlcName;\
|
||||
if (_modID < 0) then {_modID = GVAR(modList) pushback _dlcName;};\
|
||||
_ctrlPanel lbsetvalue [_lbAdd,_modID];\
|
||||
};\
|
||||
};
|
||||
|
||||
@ -302,7 +303,43 @@ _buttonCurrentMag2Ctrl ctrlCommit FADE_DELAY;\
|
||||
} foreach [\
|
||||
IDC_blockRightFrame,\
|
||||
IDC_blockRighttBackground\
|
||||
];
|
||||
];\
|
||||
if (!isNil QGVAR(customRightPanelButtons)) then {\
|
||||
private _miscOffset = 0;\
|
||||
{\
|
||||
if (!isNil "_x") then {\
|
||||
_x params ["", "_picture", "_tooltip"];\
|
||||
_miscOffset = _forEachIndex + 1;\
|
||||
private _plusId = _forEachIndex * 2;\
|
||||
if (isNull (_display displayCtrl (60 + _plusId))) then {\
|
||||
private _ctrl = _display ctrlCreate [QGVAR(customArsenalButton_Background), 60 + _plusId];\
|
||||
_ctrl ctrlSetPosition [\
|
||||
safezoneW + safezoneX - 13 * GRID_W,\
|
||||
safezoneY + (88 + (10 * _forEachIndex)) * GRID_H\
|
||||
];\
|
||||
_ctrl ctrlCommit 0;\
|
||||
};\
|
||||
if (isNull (_display displayCtrl (61 + _plusId))) then {\
|
||||
_ctrl = _display ctrlCreate [QGVAR(customArsenalButton_Button), 61 + _plusId];\
|
||||
_ctrl ctrlSetPosition [\
|
||||
safezoneW + safezoneX - 10 * GRID_W,\
|
||||
safezoneY + (88 + (10 * _forEachIndex)) * GRID_H\
|
||||
];\
|
||||
_ctrl ctrlSetText _picture;\
|
||||
_ctrl ctrlSetTooltip _tooltip;\
|
||||
_ctrl ctrlCommit 0;\
|
||||
};\
|
||||
};\
|
||||
} forEach GVAR(customRightPanelButtons);\
|
||||
{\
|
||||
_x = _display displayCtrl _x;\
|
||||
_x ctrlSetPosition [\
|
||||
safezoneW + safezoneX - (10 + (3 * _forEachIndex)) * GRID_W,\
|
||||
safezoneY + (88 + (10 * _miscOffset)) * GRID_H\
|
||||
];\
|
||||
_x ctrlCommit 0;\
|
||||
} forEach [IDC_buttonMisc, IDC_iconBackgroundMisc];\
|
||||
};
|
||||
|
||||
#define TOGGLE_RIGHT_PANEL_HIDE\
|
||||
{\
|
||||
@ -362,7 +399,8 @@ _buttonCurrentMag2Ctrl ctrlCommit FADE_DELAY;\
|
||||
{(_accsArray select 2) findIf {_x == _item} > -1} ||\
|
||||
{(_accsArray select 3) findIf {_x == _item} > -1}
|
||||
|
||||
#define CHECK_ASSIGNED_ITEMS\
|
||||
// PboProject 2.45 has problems with these macros for some reason, adding a single space before the \ fixes
|
||||
#define CHECK_ASSIGNED_ITEMS \
|
||||
(GVAR(virtualItems) select 10) findIf {_x == _item} > -1 ||\
|
||||
{(GVAR(virtualItems) select 11) findIf {_x == _item} > -1} ||\
|
||||
{(GVAR(virtualItems) select 12) findIf {_x == _item} > -1} ||\
|
||||
@ -370,7 +408,7 @@ _buttonCurrentMag2Ctrl ctrlCommit FADE_DELAY;\
|
||||
{(GVAR(virtualItems) select 14) findIf {_x == _item} > -1} ||\
|
||||
{(GVAR(virtualItems) select 8) findIf {_x == _item} > -1}
|
||||
|
||||
#define CHECK_CONTAINER\
|
||||
#define CHECK_CONTAINER \
|
||||
(GVAR(virtualItems) select 4) findIf {_x == _item} > -1 ||\
|
||||
{(GVAR(virtualItems) select 5) findIf {_x == _item} > -1} ||\
|
||||
{(GVAR(virtualItems) select 6) findIf {_x == _item} > -1}
|
||||
@ -381,7 +419,7 @@ _buttonCurrentMag2Ctrl ctrlCommit FADE_DELAY;\
|
||||
{isClass (_glassesCfg >> _item)} ||\
|
||||
{isClass (_magCfg >> _item)}
|
||||
|
||||
#define CHECK_CONTAINER_ITEMS\
|
||||
#define CHECK_CONTAINER_ITEMS \
|
||||
(GVAR(virtualItems) select 3) findIf {_x == _item} > -1 ||\
|
||||
{(_accsArray select 0) findIf {_x == _item} > -1} ||\
|
||||
{(_accsArray select 1) findIf {_x == _item} > -1} ||\
|
||||
|
@ -23,6 +23,81 @@ if (isNil QGVAR(defaultLoadoutsList)) then {
|
||||
GVAR(defaultLoadoutsList) = [];
|
||||
};
|
||||
|
||||
for "_dataIndex" from 0 to 10 do {
|
||||
switch (_dataIndex) do {
|
||||
|
||||
case 0;
|
||||
case 1;
|
||||
case 2;
|
||||
case 8: {
|
||||
if (count (_loadout select _dataIndex) > 0) then {
|
||||
|
||||
private _weapon = (_loadout select _dataIndex) select 0;
|
||||
if (_weapon != "") then {
|
||||
|
||||
private _baseWeapon = _weapon call BIS_fnc_baseWeapon;
|
||||
if (_weapon != _baseWeapon) then {
|
||||
(_loadout select _dataIndex) set [0, _baseWeapon];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
case 3;
|
||||
case 4;
|
||||
case 5: {
|
||||
if (count (_loadout select _dataIndex) > 0) then {
|
||||
private _containerContents = (_loadout select _dataIndex) select 1;
|
||||
|
||||
if (count _containerContents > 0) then {
|
||||
|
||||
{
|
||||
if (count _x == 2) then {
|
||||
|
||||
if ((_x select 0) isEqualType "") then {
|
||||
|
||||
private _item = (_x select 0);
|
||||
if (_item != "") then {
|
||||
|
||||
private _uniqueBaseCfgText = getText (configFile >> "CfgWeapons" >> _item >> "ace_arsenal_uniqueBase");
|
||||
if (_uniqueBaseCfgText != "") then {
|
||||
|
||||
_x set [0, _uniqueBaseCfgText];
|
||||
};
|
||||
};
|
||||
} else {
|
||||
private _weapon = (_x select 0) select 0;
|
||||
if (_weapon != "") then {
|
||||
|
||||
private _baseWeapon = _weapon call BIS_fnc_baseWeapon;
|
||||
if (_weapon != _baseWeapon) then {
|
||||
(_x select 0)set [0, _baseWeapon];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
} foreach _containerContents;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
case 9: {
|
||||
for "_subIndex" from 0 to 4 do {
|
||||
private _item = (_loadout select _dataIndex) select _subIndex;
|
||||
|
||||
if (_item != "") then {
|
||||
|
||||
private _uniqueBaseCfgText = getText (configFile >> "CfgWeapons" >> _item >> "ace_arsenal_uniqueBase");
|
||||
if (_uniqueBaseCfgText != "") then {
|
||||
|
||||
(_loadout select _dataIndex) set [_subIndex, _uniqueBaseCfgText];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
private _loadoutIndex = (+(GVAR(defaultLoadoutsList))) findIf {(_x select 0) == _name};
|
||||
if (_loadoutIndex == -1) then {
|
||||
GVAR(defaultLoadoutsList) pushBack [_name, _loadout];
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user