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
bf1c092a3a
10
.gitattributes
vendored
10
.gitattributes
vendored
@ -2,3 +2,13 @@
|
||||
*.png binary
|
||||
*.jpg binary
|
||||
*.paa binary
|
||||
|
||||
# Change GitHub language categorization
|
||||
addons/**/*.cpp linguist-language=SQF
|
||||
addons/**/*.hpp linguist-language=SQF
|
||||
|
||||
optionals/**/*.cpp linguist-language=SQF
|
||||
optionals/**/*.hpp linguist-language=SQF
|
||||
|
||||
# Do not count hemtt includes in language usage stats
|
||||
include/* linguist-vendored
|
||||
|
6
.github/CONTRIBUTING.md
vendored
6
.github/CONTRIBUTING.md
vendored
@ -34,11 +34,11 @@ We welcome anyone to contribute to this repository. Issues that we are actively
|
||||
|
||||
## Pull Request process
|
||||
|
||||
When contributing to this repository, please first discuss the change you wish to make via issue or [Slack](https://slackin.ace3mod.com/) with the [ACE3 project maintainers](https://ace3mod.com/team.html) before making a change. This may not be necessary if you are contributing for something which has an existing issue in our repository already.
|
||||
When contributing to this repository, please first discuss the change you wish to make via issue or [Discord](https://acemod.org/discord) with the [ACE3 project maintainers](https://ace3.acemod.org/team.html) before making a change. This may not be necessary if you are contributing for something which has an existing issue in our repository already.
|
||||
|
||||
1. Please make a pull request (PR) as early as possible. This lets use help you in the proces of developing it. When opening a work in progress pull request, mark your PR with a `WIP:` prefix.
|
||||
2. Describe what this pull request will do and how it solves this in the description of your PR. A clear intent and description of the way the issue is resolved will help us to review the PR more efficiently.
|
||||
3. Please follow our [Development Guidelines](https://ace3mod.com/wiki/development/).
|
||||
3. Please follow our [Development Guidelines](https://ace3.acemod.org/wiki/development/).
|
||||
|
||||
|
||||
### Notes
|
||||
@ -47,4 +47,4 @@ Please note that all contributors to this project are volunteers and do this in
|
||||
|
||||
## Assistance with contributing
|
||||
|
||||
If you require assistance with contributing, check out the #dev channel on our [Slack](https://slackin.ace3mod.com/). Additional documentation can be found on our [Development wiki](https://ace3mod.com/wiki/development/).
|
||||
If you require assistance with contributing, check out the #dev channel on our [Discord](https://acemod.org/discord). Additional documentation can be found on our [Development wiki](https://ace3.acemod.org/wiki/development/).
|
||||
|
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -30,7 +30,7 @@ All good? Then proceed and fill out the items below.
|
||||
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)!_
|
||||
_Follow [https://ace3.acemod.org/img/wiki/user/issue_flowchart.webp](this flowchart)!_
|
||||
|
||||
1. _Go to ..._
|
||||
2. _Click ..._
|
||||
|
20
.github/ISSUE_TEMPLATE/enhancement-request.md
vendored
20
.github/ISSUE_TEMPLATE/enhancement-request.md
vendored
@ -1,20 +0,0 @@
|
||||
---
|
||||
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.
|
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -9,4 +9,4 @@ 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).
|
||||
Learn how to make a feature request [here](https://ace3.acemod.org/wiki/user/how-to-make-a-feature-request.html).
|
||||
|
13
.github/PULL_REQUEST_TEMPLATE.md
vendored
13
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,6 +1,9 @@
|
||||
**When merged this pull request will:**
|
||||
- Describe what this pull request will do
|
||||
- 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`
|
||||
- _Describe what this pull request will do_
|
||||
- _Each change in a separate line_
|
||||
|
||||
### IMPORTANT
|
||||
|
||||
- [ ] If the contribution affects [the documentation](https://github.com/acemod/ACE3/tree/master/docs), please include your changes in this pull request so the documentation will appear on the [website](https://ace3.acemod.org/).
|
||||
- [ ] [Development Guidelines](https://ace3.acemod.org/wiki/development/) are read, understood and applied.
|
||||
- [ ] Title of this PR uses our standard template `Component - Add|Fix|Improve|Change|Make|Remove {changes}`.
|
||||
|
1
.github/release-drafter.yml
vendored
1
.github/release-drafter.yml
vendored
@ -27,6 +27,7 @@ categories:
|
||||
|
||||
exclude-labels:
|
||||
- 'ignore changelog'
|
||||
- 'dependencies'
|
||||
|
||||
change-template: '- $TITLE (#$NUMBER)'
|
||||
template: |
|
||||
|
22
.github/workflows/arma.yml
vendored
22
.github/workflows/arma.yml
vendored
@ -11,7 +11,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the source code
|
||||
uses: actions/checkout@master
|
||||
uses: actions/checkout@v3
|
||||
- name: Validate SQF
|
||||
run: python3 tools/sqf_validator.py
|
||||
- name: Validate Config
|
||||
@ -22,12 +22,14 @@ jobs:
|
||||
run: python3 tools/check_strings.py
|
||||
- name: Check for BOM
|
||||
uses: arma-actions/bom-check@master
|
||||
- name: Validate function headers
|
||||
run: python3 docs/tools/document_functions.py --debug
|
||||
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the source code
|
||||
uses: actions/checkout@master
|
||||
uses: actions/checkout@v3
|
||||
- name: Lint (sqflint)
|
||||
uses: arma-actions/sqflint@master
|
||||
continue-on-error: true # No failure due to many false-positives
|
||||
@ -36,13 +38,15 @@ jobs:
|
||||
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
|
||||
uses: actions/checkout@v3
|
||||
- name: Setup HEMTT
|
||||
uses: arma-actions/hemtt@v1
|
||||
- name: Run HEMTT build
|
||||
run: hemtt build
|
||||
- name: Rename build folder
|
||||
run: mv .hemttout/build .hemttout/@ace
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v2-preview
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ace3-${{ github.sha }}-nobin
|
||||
path: releases/ace3_*.zip
|
||||
path: .hemttout/@*
|
||||
|
63
.github/workflows/documentation.yml
vendored
63
.github/workflows/documentation.yml
vendored
@ -4,13 +4,18 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: "pages"
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
update:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the source code
|
||||
uses: actions/checkout@master
|
||||
uses: actions/checkout@v3
|
||||
- name: Install Python packages
|
||||
run: |
|
||||
pip3 install wheel
|
||||
@ -22,3 +27,59 @@ jobs:
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.DOCS_TOKEN }}
|
||||
run: python3 tools/deploy.py
|
||||
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Extract Dependencies
|
||||
run: python3 tools/extract_dependencies.py --markdown
|
||||
- name: Document Functions
|
||||
run: python3 docs/tools/document_functions.py
|
||||
|
||||
- name: Build with Jekyll
|
||||
uses: actions/jekyll-build-pages@v1
|
||||
with:
|
||||
source: docs/
|
||||
destination: docs/_site/
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: jekyll-site
|
||||
path: docs/_site/
|
||||
retention-days: 1
|
||||
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [build]
|
||||
|
||||
environment:
|
||||
name: netlify
|
||||
url: ${{ steps.deployment.outputs.deploy-url }}
|
||||
|
||||
steps:
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: jekyll-site
|
||||
path: _site/
|
||||
|
||||
- name: Deploy to Netlify
|
||||
id: deployment
|
||||
uses: nwtgck/actions-netlify@v2
|
||||
with:
|
||||
publish-dir: _site/
|
||||
production-branch: master
|
||||
production-deploy: true
|
||||
deploy-message: ${{ github.event.head_commit.message }}
|
||||
enable-pull-request-comment: false
|
||||
enable-commit-comment: false
|
||||
enable-commit-status: true
|
||||
env:
|
||||
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
|
||||
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
|
||||
timeout-minutes: 1
|
||||
|
16
.github/workflows/extensions.yml
vendored
16
.github/workflows/extensions.yml
vendored
@ -3,29 +3,27 @@ name: Extensions
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'extensions/*'
|
||||
- 'extensions/*/*'
|
||||
- 'extensions/*/*/*'
|
||||
- 'extensions/*/*/*/*'
|
||||
- 'extensions/*/*/*/*/*'
|
||||
- 'extensions/**'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ${{ matrix. os }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [windows-latest]
|
||||
|
||||
steps:
|
||||
- name: Checkout the source code
|
||||
uses: actions/checkout@master
|
||||
uses: actions/checkout@v3
|
||||
- name: Build
|
||||
shell: cmd
|
||||
run: |
|
||||
cd extensions/build
|
||||
cd extensions
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. && cmake --build .
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@master
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ace3_extensions-${{ matrix.os }}-debug
|
||||
path: extensions/build
|
||||
|
84
.github/workflows/pboproject.yml
vendored
Normal file
84
.github/workflows/pboproject.yml
vendored
Normal file
@ -0,0 +1,84 @@
|
||||
name: pboProject
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request_target:
|
||||
|
||||
jobs:
|
||||
pboproject:
|
||||
runs-on: windows-2022
|
||||
steps:
|
||||
- name: Install Arma 3 Tools
|
||||
uses: arma-actions/arma3-tools@master
|
||||
with:
|
||||
toolsUrl: ${{ secrets.ARMA3_TOOLS_URL }}
|
||||
- name: Install Mikero Tools
|
||||
uses: arma-actions/mikero-tools@2023-01-04
|
||||
- name: Download game data
|
||||
run: |
|
||||
Invoke-WebRequest "$env:ARMA3_DATA_URL" -OutFile arma3.zip
|
||||
Invoke-WebRequest "$env:RHSAFRF_URL" -OutFile rhsafrf.zip
|
||||
Invoke-WebRequest "$env:RHSGREF_URL" -OutFile rhsgref.zip
|
||||
Invoke-WebRequest "$env:RHSSAF_URL" -OutFile rhssaf.zip
|
||||
Invoke-WebRequest "$env:RHSUSF_URL" -OutFile rhsusf.zip
|
||||
$files = @("arma3.zip", "rhsafrf.zip", "rhsgref.zip", "rhssaf.zip", "rhsusf.zip")
|
||||
ForEach ($file in $files) {
|
||||
Extract-7Zip -Path $file -DestinationPath .
|
||||
Remove-Item $file
|
||||
}
|
||||
env:
|
||||
ARMA3_DATA_URL: ${{ secrets.ARMA3_DATA_URL }}
|
||||
RHSAFRF_URL: ${{ secrets.RHSAFRF_URL }}
|
||||
RHSGREF_URL: ${{ secrets.RHSGREF_URL }}
|
||||
RHSSAF_URL: ${{ secrets.RHSSAF_URL }}
|
||||
RHSUSF_URL: ${{ secrets.RHSUSF_URL }}
|
||||
- name: Checkout CBA A3
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: x\cba
|
||||
ref: master
|
||||
repository: CBATeam/CBA_A3.git
|
||||
- name: Checkout ACE3
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: z\ace
|
||||
persist-credentials: false
|
||||
- name: Checkout pull request
|
||||
uses: actions/checkout@v3
|
||||
if: ${{ github.event_name == 'pull_request_target' }}
|
||||
with:
|
||||
path: pullrequest
|
||||
ref: 'refs/pull/${{ github.event.number }}/merge'
|
||||
- name: Replace addons with pull request addons
|
||||
if: ${{ github.event_name == 'pull_request_target' }}
|
||||
run: |
|
||||
rm -r z\ace\addons\
|
||||
rm -r z\ace\optionals\
|
||||
rm -r z\ace\tools\pDummies\
|
||||
xcopy /e /h /q pullrequest\addons z\ace\addons\
|
||||
xcopy /e /h /q pullrequest\optionals z\ace\optionals\
|
||||
xcopy /e /h /q pullrequest\tools\pDummies z\ace\tools\pDummies\
|
||||
- name: Setup build environment
|
||||
run: |
|
||||
subst P: .
|
||||
pboproject -P
|
||||
xcopy /e /h /q z\ace\tools\pDummies\gm gm\
|
||||
xcopy /e /h /q z\ace\tools\pDummies\vn vn\
|
||||
xcopy /e /h /q z\ace\tools\pDummies\WW2 WW2\
|
||||
- name: Build
|
||||
run: py P:\z\ace\tools\make.py ci
|
||||
env:
|
||||
PYTHONUNBUFFERED: 1
|
||||
- name: Archive logs
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ always() }}
|
||||
with:
|
||||
name: logs
|
||||
path: temp/*.log
|
||||
- name: Archive @ace
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: '@ace3-${{ github.sha }}'
|
||||
path: z\ace\release\@ace
|
7
.gitignore
vendored
7
.gitignore
vendored
@ -2,8 +2,12 @@
|
||||
*.zip
|
||||
release/*
|
||||
releases/*
|
||||
extensions/vcproj32/*
|
||||
extensions/vcproj64/*
|
||||
.vscode/*
|
||||
hemtt
|
||||
hemtt.exe
|
||||
.hemttout
|
||||
tools/temp
|
||||
*.cache
|
||||
*.pbo
|
||||
@ -13,3 +17,6 @@ texHeaders.bin
|
||||
*.biprivatekey
|
||||
Thumbs.db
|
||||
CHANGELOG.md
|
||||
sqfvm.exe
|
||||
ArmaScriptCompiler.exe
|
||||
*.sqfc
|
||||
|
4
.hemtt/hooks/post_build/01_move_readmes.rhai
Normal file
4
.hemtt/hooks/post_build/01_move_readmes.rhai
Normal file
@ -0,0 +1,4 @@
|
||||
let docs_readmes = ["README.zh-TW.md", "README_DE.md", "README_PL.md"];
|
||||
for readme in docs_readmes {
|
||||
HEMTT_VFS.join("docs").join(readme).move(HEMTT_VFS.join(readme));
|
||||
}
|
9
.hemtt/hooks/post_release/01_rename_zip.rhai
Normal file
9
.hemtt/hooks/post_release/01_rename_zip.rhai
Normal file
@ -0,0 +1,9 @@
|
||||
let releases = HEMTT_RFS.join("releases");
|
||||
|
||||
let src = releases.join(HEMTT.project().prefix() + "-" + HEMTT.project().version().to_string() + ".zip");
|
||||
let dst = releases.join(HEMTT.project().name().to_lower() + "_" + HEMTT.project().version().to_string_short() + ".zip");
|
||||
|
||||
print("Moving zip to " + dst);
|
||||
if !src.move(dst) {
|
||||
fatal("Failed to move " + src + " to " + dst);
|
||||
}
|
12
.hemtt/hooks/pre_build/01_set_version.rhai
Normal file
12
.hemtt/hooks/pre_build/01_set_version.rhai
Normal file
@ -0,0 +1,12 @@
|
||||
let modcpp = HEMTT_VFS.join("mod.cpp").open_file().read();
|
||||
modcpp.replace("0.0.0", HEMTT.project().version().to_string_short());
|
||||
HEMTT_VFS.join("mod.cpp").create_file().write(modcpp);
|
||||
print("mod.cpp version set");
|
||||
|
||||
let docs_readmes = ["README.zh-TW.md", "README_DE.md", "README_PL.md"];
|
||||
for readme in docs_readmes {
|
||||
let readmemd = HEMTT_VFS.join("docs").join(readme).open_file().read();
|
||||
readmemd.replace("0.0.0", HEMTT.project().version().to_string_short());
|
||||
HEMTT_VFS.join("docs").join(readme).create_file().write(readmemd);
|
||||
print(readme + " version set");
|
||||
}
|
62
.hemtt/project.toml
Normal file
62
.hemtt/project.toml
Normal file
@ -0,0 +1,62 @@
|
||||
name = "ACE3"
|
||||
prefix = "ace"
|
||||
author = "ACE-Team"
|
||||
mainprefix = "z"
|
||||
|
||||
[files]
|
||||
include = [
|
||||
"*.dll",
|
||||
"*.so",
|
||||
"mod.cpp",
|
||||
"README*.md", # Translated READMEs get moved to root in a hook (virtual file system)
|
||||
"AUTHORS.txt",
|
||||
"LICENSE",
|
||||
"logo_ace3_ca.paa",
|
||||
"meta.cpp",
|
||||
]
|
||||
|
||||
[version]
|
||||
git_hash = 0
|
||||
|
||||
[asc]
|
||||
enabled = true
|
||||
exclude = [
|
||||
"/initsettings.sqf",
|
||||
"/initkeybinds.sqf",
|
||||
"/xeh_prep.sqf",
|
||||
"/dev/",
|
||||
"medical_ai/statemachine.sqf",
|
||||
"common/functions/fnc_dummy.sqf",
|
||||
]
|
||||
|
||||
[hemtt.config]
|
||||
preset = "Hemtt"
|
||||
|
||||
[hemtt.launch]
|
||||
workshop = [
|
||||
"450814997", # CBA_A3
|
||||
]
|
||||
|
||||
[hemtt.launch.spe]
|
||||
workshop = [
|
||||
"450814997", # CBA_A3
|
||||
]
|
||||
dlc = [
|
||||
"spe"
|
||||
]
|
||||
|
||||
[hemtt.launch.vn]
|
||||
workshop = [
|
||||
"450814997", # CBA_A3's Workshop ID
|
||||
]
|
||||
dlc = [
|
||||
"S.O.G. Prairie Fire",
|
||||
]
|
||||
|
||||
[hemtt.launch.ws]
|
||||
workshop = [
|
||||
"450814997", # CBA_A3's Workshop ID
|
||||
]
|
||||
dlc = [
|
||||
"Western Sahara",
|
||||
]
|
41
AUTHORS.txt
41
AUTHORS.txt
@ -6,24 +6,26 @@
|
||||
# request, preferably including an email address.
|
||||
|
||||
# CORE TEAM
|
||||
Brandon (TCVM) <brandondanyluk366@gmail.com>
|
||||
Brett Mayson
|
||||
bux578 <github@jonathandavid.de>
|
||||
commy2
|
||||
Dahlgren
|
||||
tcvm <baileydanyluk@gmail.com>
|
||||
esteldunedain <nicolas.d.badano@gmail.com>
|
||||
Felix Wiegand <koffeinflummi@gmail.com>
|
||||
Garth "L-H" de Wet <garthofhearts@gmail.com>
|
||||
Giallustio
|
||||
Glowbal
|
||||
Grim
|
||||
Janus
|
||||
jokoho482 <jokoho482@gmail.com>
|
||||
Jonpas <jonpas33@gmail.com>
|
||||
Kieran
|
||||
kymckay
|
||||
mharis001 <mhariszakar@gmail.com>
|
||||
NouberNou
|
||||
PabstMirror <pabstmirror@gmail.com>
|
||||
Ruthberg <ulteq@web.de>
|
||||
SilentSpike <SilentSpike100@gmail.com>
|
||||
tpM
|
||||
veteran29
|
||||
ViperMaul
|
||||
@ -31,22 +33,25 @@ VKing <kauestad@gmail.com>
|
||||
Walter Pearce <jaynus@gmail.com>
|
||||
|
||||
# CONTRIBUTORS
|
||||
[BIG]Bull
|
||||
10Dozen a.k.a Dusin
|
||||
11RDP-LoupVert <loupvert@11rdp.fr>
|
||||
654wak654 <ozanegitmen@gmail.com>
|
||||
ACCtomeek <tomeek99@gmail.com>
|
||||
[BIG]Bull
|
||||
ACCtomeek
|
||||
adam3adam <br.ada@seznam.cz>
|
||||
Adanteh
|
||||
aeroson
|
||||
Aggr094 <bastards4glory@gmail.com>
|
||||
alef <alefor@gmail.com>
|
||||
Aleksey EpMAK Yermakov <epmak777@gmail.com>
|
||||
AleM
|
||||
Alganthe <alganthe@live.fr>
|
||||
Andrea "AtixNeon" Verano <veranoandrea88@gmail.com>
|
||||
Anthariel <Contact@storm-simulation.com>
|
||||
Arcanum417 <lubos.len@gmail.com>
|
||||
Anton
|
||||
Arcanum417 <lubos.len@gmail.com>
|
||||
Arkhir <wonsz666@gmail.com >
|
||||
ARV187 aka Spark23
|
||||
Asgar Serran <piechottaf@web.de>
|
||||
BaerMitUmlaut
|
||||
Bamse <bamsis@gmail.com>
|
||||
@ -58,22 +63,25 @@ Brakoviejo
|
||||
Brisse <brisse@outlook.com>
|
||||
Brostrom.A | Evul <andreas.brostrom.ce@gmail.com>
|
||||
BullHorn <bullhorn7@gmail.com>
|
||||
C0kkie
|
||||
chris579 <github@klemm.one>
|
||||
classicarma
|
||||
Clon1998 <ps.patti1998@gmail.com>
|
||||
Codingboy
|
||||
Coren <coren4@gmail.com>
|
||||
Crusty
|
||||
C0kkie
|
||||
Cyruz143
|
||||
dabako <dabako@dabakoworld.de>
|
||||
dgibso29 <gibson@earringpranks.com>
|
||||
Dharma Bellamkonda <dharma.bellamkonda@gmail.com>
|
||||
Dimaslg <dimaslg@telecable.es>
|
||||
diwako
|
||||
dixon13 <dixonbegay@gmail.com>
|
||||
Drift_91
|
||||
Drill <drill87@gmail.com>
|
||||
Dudakov aka [OMCB]Kaban <dudakov.s@gmail.com>
|
||||
Drofseh <drofseh@gmail.com>
|
||||
Dslyecxi <dslyecxi@gmail.com>
|
||||
Dudakov aka [OMCB]Kaban <dudakov.s@gmail.com>
|
||||
Eclipser <jms@modeemi.fi>
|
||||
Elgin675
|
||||
ElTyranos
|
||||
@ -88,7 +96,9 @@ FFAAMOD <modffaa@gmail.com>
|
||||
Filip Basara <filip.basara93@googlemail.com>
|
||||
fr89k <kaschitoku@web.de>
|
||||
Fragment
|
||||
Frank <frankplow@protonmail.com>
|
||||
FreeZbe <freeseb@gmail.com>
|
||||
Fyuran <dankemedic@hotmail.com>
|
||||
geraldbolso1899
|
||||
Ghost
|
||||
Gianmarco Varriale (TeamNuke) <admin@forhost.org>
|
||||
@ -103,12 +113,17 @@ havena <silveredenis@gmail.com>
|
||||
Hawkins
|
||||
Head <brobergsebastian@gmail.com>
|
||||
Hybrid V
|
||||
Hypoxic <martini_a@outlook.com>
|
||||
JasperRab <jasper@jasperrab.eu>
|
||||
JDT
|
||||
john681611 <john681611@hotmail.com>
|
||||
JoramD
|
||||
Karneck <dschultz26@hotmail.com>
|
||||
Kavinsky <nmunozfernandez@gmail.com>
|
||||
Keithen <Keithen.Neu@gmail.com>
|
||||
Kllrt <kllrtik@gmail.com>
|
||||
KokaKolaA3
|
||||
Krzyciu
|
||||
legman <juicemelon@msn.com>
|
||||
Legolasindar "Viper" <legolasindar@gmail.com>
|
||||
licht-im-Norden87 <lichtimnorden87@gmail.com>
|
||||
@ -120,7 +135,9 @@ MarcBook
|
||||
meat <p.humberdroz@gmail.com>
|
||||
Michail Nikolaev
|
||||
MikeMatrix <m.braun92@gmail.com>
|
||||
MikeMF
|
||||
mjc4wilton <mjc4wilton@gmail.com>
|
||||
Mysteryjuju
|
||||
nic547 <nic547@outlook.com>
|
||||
nikolauska <nikolauska1@gmail.com>
|
||||
nomisum <nomisum@gmail.com>
|
||||
@ -129,20 +146,24 @@ Orbis2358 <mgkid3310@naver.com>
|
||||
oscarmolinadev
|
||||
Panisher (Tushino Serious Games) <panisher333@gmail.com>
|
||||
PaxJaromeMalues <seemax1991@gmail.com>
|
||||
PiZZADOX <509thParachuteInfantry@gmail.com>
|
||||
Phyma <sethramstrom@gmail.com>
|
||||
PiZZADOX <509thParachuteInfantry@gmail.com>
|
||||
pokertour
|
||||
Professor <lukas.trneny@wo.cz>
|
||||
Pterolatypus <pterolatypus@gmail.com>
|
||||
QuantX
|
||||
QuickDagger
|
||||
rakowozz
|
||||
ramius86 <pasini86@hotmail.com>
|
||||
Raspu86
|
||||
RcINS
|
||||
Riccardo Petricca <petriccarcc@gmail.com>
|
||||
Robert Boklahánics <bokirobi@gmail.com>
|
||||
ruPaladin <happyworm24@rambler.ru>
|
||||
Rutger "RedBery" Meijering <c.redbery@gmail.com>
|
||||
sancron
|
||||
Schwaggot <tom.ryan@posteo.de>
|
||||
Seb <sebsmith90@gmail.com>
|
||||
shukari
|
||||
simon84 <badguy360th@gmail.com>
|
||||
Skengman2
|
||||
@ -151,6 +172,7 @@ Sniperwolf572 <tenga6@gmail.com>
|
||||
System98
|
||||
SzwedzikPL <szwedzikpl@gmail.com>
|
||||
Tachi <zaveruha007@gmail.com>
|
||||
tbeswick96
|
||||
Tessa Elieff <Fastroping Sound - CreativeCommons Attributions 3.0>
|
||||
Timi007 <timi007@gmx.net>
|
||||
Toaster <jonathan.pereira@gmail.com>
|
||||
@ -162,7 +184,8 @@ voiper
|
||||
VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com>
|
||||
Walthzer <walthzer.69@gmail.com>
|
||||
Winter <simon@agius-muscat.net>
|
||||
wizpig64
|
||||
YetheSamartaka
|
||||
xrufix
|
||||
Zakant <Zakant@gmx.de>
|
||||
zGuba
|
||||
Fyuran <dankemedic@hotmail.com>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 133 KiB |
34
README.md
34
README.md
@ -1,10 +1,11 @@
|
||||
<p align="center">
|
||||
<img src="https://github.com/acemod/ACE3/raw/master/extras/assets/logo/black/ACE3-Logo.jpg" width="480">
|
||||
<img src="https://github.com/acemod/ACE3/raw/master/extras/assets/logo/black/ACE3-Logo.png#gh-light-mode-only" width="480">
|
||||
<img src="https://github.com/acemod/ACE3/raw/master/extras/assets/logo/white/ACE3-Logo.png#gh-dark-mode-only" width="480">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/acemod/ACE3/releases/latest">
|
||||
<img src="https://img.shields.io/badge/Version-3.13.5-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
<img src="https://img.shields.io/badge/Version-3.15.2-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">
|
||||
@ -18,11 +19,8 @@
|
||||
<a href="https://github.com/acemod/ACE3/blob/master/LICENSE">
|
||||
<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://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">
|
||||
<a href="https://acemod.org/discord">
|
||||
<img src="https://img.shields.io/badge/Discord-Join-darkviolet.svg?style=flat-square" alt="ACE3 Discord">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
@ -76,10 +74,10 @@ The mod is **built modularly**, so almost any included PBO can be easily removed
|
||||
|
||||
## Getting started
|
||||
|
||||
ACE3 requires Arma 3 and the latest version of <a href="https://github.com/CBATeam/CBA_A3/releases">CBA A3</a>. See the following pages for help and information on how to get started with ACE3:
|
||||
ACE3 requires Arma 3 and the latest version of <a href="https://github.com/CBATeam/CBA_A3/releases">CBA A3</a>. See the following pages for help and information on how to get started with ACE3:
|
||||
|
||||
- [Installation guide](https://ace3mod.com/wiki/user/installation-guide.html)
|
||||
- [Information center](https://ace3mod.com/wiki/user/information-center.html)
|
||||
- [Installation guide](https://ace3.acemod.org/wiki/user/installation-guide.html)
|
||||
- [Information center](https://ace3.acemod.org/wiki/user/information-center.html)
|
||||
|
||||
## Contributing
|
||||
|
||||
@ -87,26 +85,24 @@ You can help out with the ongoing development by looking for potential bugs in o
|
||||
|
||||
### Contribution guidelines
|
||||
|
||||
To contribute something to ACE3, simply fork this repository and submit your pull requests for review by other collaborators. Remember to add yourself to the author array of any PBO you will be editing and the [`AUTHORS.txt`](https://github.com/acemod/ACE3/blob/master/AUTHORS.txt) file; including a valid email address.
|
||||
To contribute something to ACE3, simply fork this repository and submit your pull requests for review by other collaborators. See [the pull request guidelines](https://ace3.acemod.org/wiki/development/merging-pull-requests.html) for further information on this process.
|
||||
|
||||
### Submitting issues and requesting features
|
||||
|
||||
Please, use our [Issue Tracker](https://github.com/acemod/ACE3/issues) to report a bug, propose a feature, or suggest changes to the existing ones. See also:
|
||||
- [How to report an issue](https://ace3mod.com/wiki/user/how-to-report-an-issue.html)
|
||||
- [How to make a feature request](https://ace3mod.com/wiki/user/how-to-make-a-feature-request.html)
|
||||
- [How to report an issue](https://ace3.acemod.org/wiki/user/how-to-report-an-issue.html)
|
||||
- [How to make a feature request](https://ace3.acemod.org/wiki/user/how-to-make-a-feature-request.html)
|
||||
|
||||
### Testing & building
|
||||
|
||||
To help us test the latest development changes, download our master branch ([directly](https://github.com/acemod/ACE3/archive/master.zip), or [with git](https://help.github.com/articles/fetching-a-remote/)), then assemble a test build:
|
||||
|
||||
- [Setting up the development environment](https://ace3mod.com/wiki/development/setting-up-the-development-environment.html) – step-by-step instructions on how to properly setup and build a version of ACE3 for testing purposes.
|
||||
To help us test the latest development changes, download the [artifact](https://github.com/acemod/ACE3/actions/workflows/arma.yml) of the branch you'd like to test or subscribe to "Anrop ACE3 Master" on the workshop to test `master` branch. Alternatively [build your own version](https://ace3.acemod.org/wiki/development/setting-up-the-development-environment.html).
|
||||
|
||||
### Get in touch
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td><a href="https://slackin.ace3mod.com/">Slack</a></td>
|
||||
<td>We have a public Slack team that anyone can join. This is where all our developers and contributors hang out and where we make announcements</td>
|
||||
<td><a href="https://acemod.org/discord">Discord</a></td>
|
||||
<td>We have a public Discord server that anyone can join. This is where all our developers and contributors hang out and where we make announcements</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
@ -121,7 +117,7 @@ To help us test the latest development changes, download our master branch ([dir
|
||||
<tr>
|
||||
<td><a href="https://forums.bistudio.com/topic/181341-ace3-a-collaborative-merger-between-agm-cse-and-ace/?p=2859670">Bohemia Forum</a></td>
|
||||
<td>We have a dedicated thread on the Bohemia Forums for the ACE3 project</td>
|
||||
</tr>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## License
|
||||
|
Binary file not shown.
Binary file not shown.
@ -1,45 +1,20 @@
|
||||
class ACE_Settings {
|
||||
class GVAR(enabled) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(enabled_DisplayName);
|
||||
description = CSTRING(enabled_Description);
|
||||
typeName = "BOOL";
|
||||
value = 0;
|
||||
movedToSQF = 1;
|
||||
};
|
||||
class GVAR(muzzleVelocityVariationEnabled) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(muzzleVelocityVariationEnabled_DisplayName);
|
||||
description = CSTRING(muzzleVelocityVariationEnabled_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
};
|
||||
movedToSQF = 1;
|
||||
};
|
||||
class GVAR(ammoTemperatureEnabled) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(ammoTemperatureEnabled_DisplayName);
|
||||
description = CSTRING(ammoTemperatureEnabled_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
movedToSQF = 1;
|
||||
};
|
||||
class GVAR(barrelLengthInfluenceEnabled) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(barrelLengthInfluenceEnabled_DisplayName);
|
||||
description = CSTRING(barrelLengthInfluenceEnabled_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
movedToSQF = 1;
|
||||
};
|
||||
class GVAR(bulletTraceEnabled) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(bulletTraceEnabled_DisplayName);
|
||||
description = CSTRING(bulletTraceEnabled_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
movedToSQF = 1;
|
||||
};
|
||||
class GVAR(simulationInterval) {
|
||||
category = CSTRING(DisplayName);
|
||||
displayName = CSTRING(simulationInterval_DisplayName);
|
||||
description = CSTRING(simulationInterval_Description);
|
||||
typeName = "SCALAR";
|
||||
value = 0.05;
|
||||
sliderSettings[] = {0, 0.2, 0.05, 2};
|
||||
movedToSQF = 1;
|
||||
};
|
||||
};
|
||||
|
@ -1,18 +1,18 @@
|
||||
|
||||
class Extended_PreStart_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preStart));
|
||||
init = QUOTE(call COMPILE_SCRIPT(XEH_preStart));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
init = QUOTE(call COMPILE_SCRIPT(XEH_preInit));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PostInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||
init = QUOTE(call COMPILE_SCRIPT(XEH_postInit));
|
||||
};
|
||||
};
|
||||
|
@ -2,10 +2,3 @@ ace_advanced_ballistics
|
||||
===============
|
||||
|
||||
The Advanced Ballistics module introduces advanced external- and internal ballistics to the game.
|
||||
|
||||
|
||||
## Maintainers
|
||||
|
||||
The people responsible for merging changes to this component or answering potential questions.
|
||||
|
||||
- [Ruthberg](http://github.com/Ulteq)
|
||||
|
@ -42,14 +42,14 @@ class RscTitles {
|
||||
x="SafeZoneX + 0.001";
|
||||
y="SafeZoneY + 0.001";
|
||||
w=0.2;
|
||||
h=0.2*4/3;
|
||||
h="0.2*4/3";
|
||||
size=0.034;
|
||||
sizeEx=0.027;
|
||||
text="";
|
||||
};
|
||||
class RscProtractorMarker : RscProtractorBase {
|
||||
class RscProtractorMarker: RscProtractorBase {
|
||||
idc=132951;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -11,7 +11,7 @@ GVAR(currentGrid) = 0;
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
["ace_settingsInitialized", {
|
||||
["CBA_settingsInitialized", {
|
||||
//If not enabled, dont't add PFEH
|
||||
if (!GVAR(enabled)) exitWith {};
|
||||
|
||||
@ -28,7 +28,7 @@ if (!hasInterface) exitWith {};
|
||||
//Add warnings for missing compat PBOs (only if AB is on)
|
||||
{
|
||||
_x params ["_modPBO", "_compatPBO"];
|
||||
if ((isClass (configFile >> "CfgPatches" >> _modPBO)) && {!isClass (configFile >> "CfgPatches" >> _compatPBO)}) then {
|
||||
if ([_modPBO] call EFUNC(common,isModLoaded) && {!([_compatPBO] call EFUNC(common,isModLoaded))}) then {
|
||||
WARNING_2("Weapon Mod [%1] missing ace compat pbo [%2] (from @ace\optionals)",_modPBO,_compatPBO);
|
||||
};
|
||||
} forEach [
|
||||
|
@ -6,4 +6,6 @@ PREP_RECOMPILE_START;
|
||||
#include "XEH_PREP.hpp"
|
||||
PREP_RECOMPILE_END;
|
||||
|
||||
#include "initSettings.sqf"
|
||||
|
||||
ADDON = true;
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Ruthberg
|
||||
*
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Ruthberg
|
||||
*
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Ruthberg, MikeMatrix, joko // Jonas
|
||||
*
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Ruthberg
|
||||
*
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Ruthberg
|
||||
*
|
||||
|
@ -1,5 +1,5 @@
|
||||
#define DEBUG_MODE_FULL
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: esteldunedain
|
||||
*
|
||||
@ -68,7 +68,7 @@ for "_i" from 0 to (count _cfgWeapons)-1 do {
|
||||
private _barrelVelocityShift = [_barrelLength, _muzzleVelocityTable, _barrelLengthTable, _vanillaInitialSpeed] call FUNC(calculateBarrelLengthVelocityShift);
|
||||
private _abInitialSpeed = _vanillaInitialSpeed + _barrelVelocityShift;
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
if (_weapon find "_base" == -1 && _weapon find "_Base" == -1) then {
|
||||
#ifdef DEBUG_INIT_SPEEDS
|
||||
_data pushBack [-_forEachIndex, _abInitialSpeed, _magazine, _weapon];
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Ruthberg
|
||||
*
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Glowbal, Ruthberg, joko // Jonas
|
||||
* Handle the PFH for Bullets
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Glowbal, Ruthberg
|
||||
*
|
||||
@ -31,12 +31,14 @@ if (_abort) then {
|
||||
private _maxRange = uiNamespace getVariable format[QGVAR(maxRange_%1), _ammo];
|
||||
if (isNil "_maxRange") then {
|
||||
private _airFriction = getNumber(configFile >> "CfgAmmo" >> _ammo >> "airFriction");
|
||||
private _maxRange = if (_airFriction < 0) then {
|
||||
private _vanillaInitialSpeed = getNumber (configFile >> "CfgMagazines" >> _magazine >> "initSpeed");
|
||||
_maxRange = if (_airFriction < 0) then {
|
||||
private _maxTime = ((_vanillaInitialSpeed - BULLET_TRACE_MIN_VELOCITY) / (BULLET_TRACE_MIN_VELOCITY * -_airFriction * _vanillaInitialSpeed)) max getNumber(configFile >> "CfgAmmo" >> _ammo >> "tracerEndTime");
|
||||
-ln(1 - _airFriction * _vanillaInitialSpeed * _maxTime) / _airFriction
|
||||
} else {
|
||||
_vanillaInitialSpeed * getNumber(configFile >> "CfgAmmo" >> _ammo >> "tracerEndTime")
|
||||
};
|
||||
_maxRange = _maxRange * 1.3; // Adding 30% more to range just to be safe
|
||||
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 {};
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Glowbal, Ruthberg
|
||||
* Module for adjusting the advanced ballistics settings
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Ruthberg
|
||||
* Initializes the advanced ballistics extension with terrain data
|
||||
@ -19,7 +19,7 @@ if (!hasInterface) exitWith {};
|
||||
if (!GVAR(enabled)) exitWith {};
|
||||
|
||||
private _initStartTime = diag_tickTime;
|
||||
private _mapSize = getNumber (configFile >> "CfgWorlds" >> worldName >> "MapSize");
|
||||
private _mapSize = worldSize;
|
||||
|
||||
if (("ace_advanced_ballistics" callExtension format["init:%1:%2", worldName, _mapSize]) == "Terrain already initialized") exitWith {
|
||||
INFO_1("Terrain already initialized [world: %1]", worldName);
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Ruthberg
|
||||
*
|
||||
@ -60,8 +60,8 @@ private _barrelLengthTable = getArray(_ammoConfig >> "ACE_barrelLengths");
|
||||
//Handle subsonic ammo that would have a huge muzzle velocity shift (when ballistic configs not explicitly defined)
|
||||
private _typicalSpeed = getNumber (_ammoConfig >> "typicalSpeed");
|
||||
if ((_typicalSpeed > 0) && {_typicalSpeed < 360}) then {
|
||||
private _inheritedBarrelConfig = (!(_muzzleVelocityTable isEqualTo [])) && {(configProperties [_ammoConfig, "(configName _x) == 'ACE_muzzleVelocities'", false]) isEqualTo []};
|
||||
private _inheritedTempConfig = (!(_ammoTempMuzzleVelocityShifts isEqualTo [])) && {(configProperties [_ammoConfig, "(configName _x) == 'ACE_ammoTempMuzzleVelocityShifts'", false]) isEqualTo []};
|
||||
private _inheritedBarrelConfig = (_muzzleVelocityTable isNotEqualTo []) && {(configProperties [_ammoConfig, "(configName _x) == 'ACE_muzzleVelocities'", false]) isEqualTo []};
|
||||
private _inheritedTempConfig = (_ammoTempMuzzleVelocityShifts isNotEqualTo []) && {(configProperties [_ammoConfig, "(configName _x) == 'ACE_ammoTempMuzzleVelocityShifts'", false]) isEqualTo []};
|
||||
TRACE_3("subsonic",_typicalSpeed,_inheritedBarrelConfig,_inheritedTempConfig);
|
||||
if (_inheritedBarrelConfig || _inheritedTempConfig) then {
|
||||
private _parentConfig = inheritsFrom _ammoConfig;
|
||||
@ -73,7 +73,7 @@ if ((_typicalSpeed > 0) && {_typicalSpeed < 360}) then {
|
||||
};
|
||||
private _linearMuliplier = _typicalSpeed / _parentSpeed;
|
||||
if (_inheritedBarrelConfig) then {
|
||||
if (!((configProperties [_parentConfig, "(configName _x) == 'ACE_muzzleVelocities'", false]) isEqualTo [])) then {
|
||||
if ((configProperties [_parentConfig, "(configName _x) == 'ACE_muzzleVelocities'", false]) isNotEqualTo []) then {
|
||||
TRACE_2("Parent Has Defined Barrel MV",_linearMuliplier,_muzzleVelocityTable);
|
||||
{ _muzzleVelocityTable set [_forEachIndex, (_x * _linearMuliplier)]; } forEach _muzzleVelocityTable;
|
||||
} else {
|
||||
@ -82,7 +82,7 @@ if ((_typicalSpeed > 0) && {_typicalSpeed < 360}) then {
|
||||
};
|
||||
};
|
||||
if (_inheritedTempConfig) then {
|
||||
if (!((configProperties [_parentConfig, "(configName _x) == 'ACE_ammoTempMuzzleVelocityShifts'", false]) isEqualTo [])) then {
|
||||
if ((configProperties [_parentConfig, "(configName _x) == 'ACE_ammoTempMuzzleVelocityShifts'", false]) isNotEqualTo []) then {
|
||||
TRACE_2("Parent Has Defined Ammo Temp Shifts",_linearMuliplier,_muzzleVelocityTable);
|
||||
{ _ammoTempMuzzleVelocityShifts set [_forEachIndex, (_x * _linearMuliplier)]; } forEach _ammoTempMuzzleVelocityShifts;
|
||||
} else {
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Ruthberg
|
||||
*
|
||||
|
@ -1 +0,0 @@
|
||||
#include "\z\ace\addons\advanced_ballistics\script_component.hpp"
|
49
addons/advanced_ballistics/initSettings.sqf
Normal file
49
addons/advanced_ballistics/initSettings.sqf
Normal file
@ -0,0 +1,49 @@
|
||||
private _category = format ["ACE %1", localize LSTRING(DisplayName)];
|
||||
|
||||
[
|
||||
QGVAR(enabled), "CHECKBOX",
|
||||
[LSTRING(enabled_DisplayName), LSTRING(enabled_Description)],
|
||||
_category,
|
||||
false,
|
||||
1
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(muzzleVelocityVariationEnabled), "CHECKBOX",
|
||||
[LSTRING(muzzleVelocityVariationEnabled_DisplayName), LSTRING(muzzleVelocityVariationEnabled_Description)],
|
||||
_category,
|
||||
true,
|
||||
1
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(ammoTemperatureEnabled), "CHECKBOX",
|
||||
[LSTRING(ammoTemperatureEnabled_DisplayName), LSTRING(ammoTemperatureEnabled_Description)],
|
||||
_category,
|
||||
true,
|
||||
1
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(barrelLengthInfluenceEnabled), "CHECKBOX",
|
||||
[LSTRING(barrelLengthInfluenceEnabled_DisplayName), LSTRING(barrelLengthInfluenceEnabled_Description)],
|
||||
_category,
|
||||
true,
|
||||
1
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(bulletTraceEnabled), "CHECKBOX",
|
||||
[LSTRING(bulletTraceEnabled_DisplayName), LSTRING(bulletTraceEnabled_Description)],
|
||||
_category,
|
||||
true,
|
||||
1
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(simulationInterval), "SLIDER",
|
||||
[LSTRING(simulationInterval_DisplayName), LSTRING(simulationInterval_Description)],
|
||||
_category,
|
||||
[0, 0.2, 0.05, 2],
|
||||
1
|
||||
] call CBA_fnc_addSetting;
|
@ -49,7 +49,7 @@
|
||||
<Japanese>アドバンスド バリスティックス</Japanese>
|
||||
<Korean>고급 탄도학</Korean>
|
||||
<Chinese>先進彈道系統</Chinese>
|
||||
<Chinesesimp>先进弹道系统</Chinesesimp>
|
||||
<Chinesesimp>进阶弹道系统</Chinesesimp>
|
||||
<Turkish>Gelişmiş Balistik</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_enabled_DisplayName">
|
||||
@ -66,7 +66,7 @@
|
||||
<Japanese>アドバンスド バリスティックスを有効化</Japanese>
|
||||
<Korean>고급 탄도학</Korean>
|
||||
<Chinese>先進彈道系統</Chinese>
|
||||
<Chinesesimp>先进弹道系统</Chinesesimp>
|
||||
<Chinesesimp>进阶弹道系统</Chinesesimp>
|
||||
<Turkish>Gelişmiş Balistik</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_enabled_Description">
|
||||
@ -83,7 +83,7 @@
|
||||
<Japanese>アドバンスド バリスティックスを有効化します。</Japanese>
|
||||
<Korean>고급 탄도학을 적용합니다</Korean>
|
||||
<Chinese>啟用先進彈道系統</Chinese>
|
||||
<Chinesesimp>启用先进弹道系统</Chinesesimp>
|
||||
<Chinesesimp>启用进阶弹道系统</Chinesesimp>
|
||||
<Turkish>Gelişmiş balistiği etkinleştir</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_muzzleVelocityVariationEnabled_DisplayName">
|
||||
@ -200,7 +200,7 @@
|
||||
<Japanese>弾丸の軌跡エフェクトを有効化</Japanese>
|
||||
<Korean>예광탄 효과 적용</Korean>
|
||||
<Chinese>啟用曳光彈效果</Chinese>
|
||||
<Chinesesimp>启用曳光弹效果</Chinesesimp>
|
||||
<Chinesesimp>启用子弹尾迹效果</Chinesesimp>
|
||||
<Turkish>İzli Mermi Etkisini Etkinleştir</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_Description">
|
||||
@ -217,7 +217,7 @@
|
||||
<Japanese>大口径弾の軌跡エフェクトを有効化します。 (高性能光学機器を介してのみ見ることができます)</Japanese>
|
||||
<Korean>대구경 탄환에 예광탄 효과를 적용합니다(오직 고성능 조준경 사용시에만 보입니다)</Korean>
|
||||
<Chinese>啟用曳光彈效果給大口徑子彈 (只有透過高倍率光學瞄鏡才能看到)</Chinese>
|
||||
<Chinesesimp>启用曳光弹效果给大口径子弹 (只有透过高倍率光学瞄镜才能看到)</Chinesesimp>
|
||||
<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">
|
||||
@ -250,7 +250,7 @@
|
||||
<Japanese>各シミュレーション毎の間隔を定義します。</Japanese>
|
||||
<Korean>각 계산 단위의 간격을 정의합니다</Korean>
|
||||
<Chinese>定義每個模擬計算之間的時間間隔</Chinese>
|
||||
<Chinesesimp>定义每个模拟计算之间的时间间隔</Chinesesimp>
|
||||
<Chinesesimp>定义每个计算步骤之间的间隔</Chinesesimp>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_DisplayName">
|
||||
<English>Simulation Radius</English>
|
||||
@ -283,7 +283,7 @@
|
||||
<Japanese>アドバンスド バリスティックスの適用半径範囲 (プレイヤー中心、メートル単位) を定義します。</Japanese>
|
||||
<Korean>플레이어 주위의 발사체를 고급 탄도학으로 정의하는 범위를 정합니다(미터)</Korean>
|
||||
<Chinese>以玩家的半徑距離(公尺)定義先進彈道系統啟用範圍</Chinese>
|
||||
<Chinesesimp>以玩家的半径距离(公尺)定义先进弹道系统启用范围</Chinesesimp>
|
||||
<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">
|
||||
@ -300,7 +300,7 @@
|
||||
<Japanese>アドバンスド バリスティックスのシミュレーションを有効化します。 弾道は気温・気圧・湿度・重力・弾薬の種類・発射する武器などの変化による影響を受けるようになります。</Japanese>
|
||||
<Korean>이 모듈은 고급 탄도학을 적용시킵니다 - 이는 발사체의 궤적이 기온, 대기압, 습도, 중력, 탄환의 종류와 어느 무기에서 발사되는지에 따라 영향을 받습니다.</Korean>
|
||||
<Chinese>該模塊實現先進的彈道仿真 - 這意味著子彈的軌跡是由空氣溫度、大氣壓力、濕度、重力、彈藥類型以及射擊的武器所影響</Chinese>
|
||||
<Chinesesimp>该模块实现先进的弹道仿真 - 这意味着子弹的轨迹是由空气温度、大气压力、湿度、重力、弹药类型以及射击的武器所影响</Chinesesimp>
|
||||
<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>
|
||||
|
@ -1,18 +1,18 @@
|
||||
class Extended_PreStart_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preStart));
|
||||
init = QUOTE(call COMPILE_SCRIPT(XEH_preStart));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
init = QUOTE(call COMPILE_SCRIPT(XEH_preInit));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PostInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||
init = QUOTE(call COMPILE_SCRIPT(XEH_postInit));
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -2,9 +2,3 @@ ace_advanced_fatigue
|
||||
==========
|
||||
|
||||
An in depth stamina and fatigue simulation.
|
||||
|
||||
## Maintainers
|
||||
|
||||
The people responsible for merging changes to this component or answering potential questions.
|
||||
|
||||
- [BaerMitUmlaut](https://github.com/BaerMitUmlaut)
|
||||
|
@ -2,6 +2,7 @@ PREP(addDutyFactor);
|
||||
PREP(createStaminaBar);
|
||||
PREP(getAnimDuty);
|
||||
PREP(getMetabolicCosts);
|
||||
PREP(getWeaponInertia);
|
||||
PREP(handleEffects);
|
||||
PREP(handlePlayerChanged);
|
||||
PREP(handleStaminaBar);
|
||||
|
@ -2,24 +2,29 @@
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
[missionNamespace, "ACE_setCustomAimCoef", QUOTE(ADDON), {
|
||||
private _unit = ACE_player;
|
||||
private _fatigue = _unit getVariable [QGVAR(aimFatigue), 0];
|
||||
|
||||
switch (stance _unit) do {
|
||||
["baseline", {
|
||||
private _fatigue = ACE_player getVariable [QGVAR(aimFatigue), 0];
|
||||
switch (stance ACE_player) do {
|
||||
case ("CROUCH"): {
|
||||
(1.0 + _fatigue ^ 2 * 0.1) * GVAR(swayFactor)
|
||||
(1.0 + _fatigue ^ 2 * 0.1)
|
||||
};
|
||||
case ("PRONE"): {
|
||||
(1.0 + _fatigue ^ 2 * 2.0) * GVAR(swayFactor)
|
||||
(1.0 + _fatigue ^ 2 * 2.0)
|
||||
};
|
||||
default {
|
||||
(1.5 + _fatigue ^ 2 * 3.0) * GVAR(swayFactor)
|
||||
(1.5 + _fatigue ^ 2 * 3.0)
|
||||
};
|
||||
};
|
||||
}] call EFUNC(common,arithmeticSetSource);
|
||||
}, QUOTE(ADDON)] call EFUNC(common,addSwayFactor);
|
||||
|
||||
["ace_settingsInitialized", {
|
||||
["multiplier", {GVAR(swayFactor)}, QUOTE(ADDON)] call EFUNC(common,addSwayFactor);
|
||||
|
||||
// recheck weapon inertia after weapon swap, change of attachments or switching unit
|
||||
["weapon", {[ACE_player] call FUNC(getWeaponInertia)}, true] call CBA_fnc_addPlayerEventHandler;
|
||||
["loadout", {[ACE_player] call FUNC(getWeaponInertia)}, true] call CBA_fnc_addPlayerEventHandler;
|
||||
["unit", {[ACE_player] call FUNC(getWeaponInertia)}, true] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
["CBA_settingsInitialized", {
|
||||
if (!GVAR(enabled)) exitWith {};
|
||||
|
||||
// - Post process effect ------------------------------------------------------
|
||||
@ -30,7 +35,7 @@ if (!hasInterface) exitWith {};
|
||||
GVAR(ppeBlackout) ppEffectCommit 0.4;
|
||||
|
||||
// - GVAR updating and initialization -----------------------------------------
|
||||
["unit", FUNC(handlePlayerChanged), true] call CBA_fnc_addPlayerEventHandler;
|
||||
["unit", LINKFUNC(handlePlayerChanged), true] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
["visibleMap", {
|
||||
params ["", "_visibleMap"]; // command visibleMap is updated one frame later
|
||||
@ -56,7 +61,8 @@ if (!hasInterface) exitWith {};
|
||||
[1, 3] select (_this getVariable [QEGVAR(dragging,isCarrying), false]);
|
||||
}] call FUNC(addDutyFactor);
|
||||
};
|
||||
if (["ACE_Weather"] call EFUNC(common,isModLoaded)) then {
|
||||
// Weather has an off switch, Dragging & Medical don't.
|
||||
if (missionNamespace getVariable [QEGVAR(weather,enabled), false]) then {
|
||||
[QEGVAR(weather,temperature), { // 35->1, 45->2
|
||||
linearConversion [35, 45, (missionNamespace getVariable [QEGVAR(weather,currentTemperature), 25]), 1, 2, true];
|
||||
}] call FUNC(addDutyFactor);
|
||||
|
@ -9,7 +9,9 @@ PREP_RECOMPILE_END;
|
||||
#include "initSettings.sqf"
|
||||
|
||||
GVAR(staminaBarWidth) = 10 * (((safezoneW / safezoneH) min 1.2) / 40);
|
||||
GVAR(dutyList) = [[], []];
|
||||
GVAR(dutyList) = createHashMap;
|
||||
GVAR(setAnimExclusions) = [];
|
||||
GVAR(inertia) = 0;
|
||||
GVAR(inertiaCache) = createHashMap;
|
||||
|
||||
ADDON = true;
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Adds a duty factor.
|
||||
@ -18,6 +18,4 @@
|
||||
params [["_id", "", [""]], ["_factor", 1, [0, {}]]];
|
||||
if (_id == "" || {_factor isEqualTo 1}) exitWith {};
|
||||
|
||||
GVAR(dutyList) params ["_idList", "_factorList"];
|
||||
_idList pushBack _id;
|
||||
_factorList pushBack _factor,
|
||||
GVAR(dutyList) set [_id, _factor];
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Creates the stamina bar.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Calculates the duty of the current animation.
|
||||
@ -37,13 +37,14 @@ if (_animType in ["idl", "mov", "adj"]) then {
|
||||
};
|
||||
};
|
||||
|
||||
if (currentWeapon _unit != handgunWeapon _unit) then {
|
||||
if (currentWeapon _unit != "") then {
|
||||
if (_animName select [13, 3] == "ras") then {
|
||||
// low ready jog
|
||||
_duty = _duty * 1.2;
|
||||
if (_animName select [9, 3] == "tac") then {
|
||||
// high ready jog/walk
|
||||
_duty = _duty * 1.5;
|
||||
_duty = _duty * (1 + 0.8*GVAR(inertia));
|
||||
} else {
|
||||
// low ready jog
|
||||
_duty = _duty * (1 + 0.2*GVAR(inertia));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Calculates the current metabolic costs for a unit.
|
||||
@ -30,22 +30,25 @@ private _duty = GVAR(animDuty);
|
||||
} else {
|
||||
_duty = _duty * (_unit call _x);
|
||||
};
|
||||
} forEach (GVAR(dutyList) select 1);
|
||||
} forEach (values GVAR(dutyList));
|
||||
|
||||
if (GVAR(isSwimming)) then {
|
||||
_terrainGradient = 0;
|
||||
};
|
||||
|
||||
// Metabolic cost for walking and running is different
|
||||
if (_velocity > 2) then {
|
||||
// Running
|
||||
(
|
||||
2.10 * SIM_BODYMASS
|
||||
+ 4 * (SIM_BODYMASS + _gearMass) * ((_gearMass / SIM_BODYMASS) ^ 2)
|
||||
+ (SIM_BODYMASS + _gearMass) * (0.90 * (_velocity ^ 2) + 0.66 * _velocity * _terrainGradient)
|
||||
+ (SIM_BODYMASS + _gearMass) * (0.9 * (_velocity ^ 2) + 0.66 * _velocity * _terrainGradient)
|
||||
) * 0.23 * _duty
|
||||
} else {
|
||||
// Walking
|
||||
(
|
||||
1.05 * SIM_BODYMASS
|
||||
+ 4 * (SIM_BODYMASS + _gearMass) * ((_gearMass / SIM_BODYMASS) ^ 2)
|
||||
+ 2 * (SIM_BODYMASS + _gearMass) * ((_gearMass / SIM_BODYMASS) ^ 2)
|
||||
+ (SIM_BODYMASS + _gearMass) * (1.15 * (_velocity ^ 2) + 0.66 * _velocity * _terrainGradient)
|
||||
) * 0.23 * _duty
|
||||
};
|
||||
|
38
addons/advanced_fatigue/functions/fnc_getWeaponInertia.sqf
Normal file
38
addons/advanced_fatigue/functions/fnc_getWeaponInertia.sqf
Normal file
@ -0,0 +1,38 @@
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Pterolatypus
|
||||
* Calculates total weapon inertia, accounting for attachments.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Total inertia <NUMBER>
|
||||
*
|
||||
* Example:
|
||||
* [ACE_player] call ace_advanced_fatigue_fnc_getWeaponInertia
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
params [["_unit", ACE_player, [objNull]]];
|
||||
|
||||
private _cache = GVAR(inertiaCache);
|
||||
private _weapon = currentWeapon _unit;
|
||||
private _weaponAndItems = [_weapon] + (_unit weaponAccessories _weapon);
|
||||
|
||||
private _inertia = _cache get _weaponAndItems;
|
||||
if (isNil "_inertia") then {
|
||||
_inertia = 0;
|
||||
private _cfgWeapons = configFile >> "CfgWeapons";
|
||||
{
|
||||
// if item is "" or inertia property is undefined, just ignore it
|
||||
private _itemInertia = getNumber (_cfgWeapons >> _x >> "inertia");
|
||||
if (isNil "_itemInertia") then { continue };
|
||||
|
||||
_inertia = _inertia + _itemInertia;
|
||||
} forEach _weaponAndItems;
|
||||
_cache set [_weaponAndItems, _inertia];
|
||||
};
|
||||
|
||||
GVAR(inertia) = _inertia;
|
||||
_inertia
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Handles any audible, visual and physical effects of fatigue.
|
||||
@ -94,6 +94,3 @@ if (_overexhausted) then {
|
||||
};
|
||||
|
||||
_unit setVariable [QGVAR(aimFatigue), _fatigue];
|
||||
|
||||
private _aimCoef = [missionNamespace, "ACE_setCustomAimCoef", "max"] call EFUNC(common,arithmeticGetResult);
|
||||
_unit setCustomAimCoef _aimCoef;
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Handles switching units (once on init and afterwards via Zeus).
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Handles visual changes of the stamina bar.
|
||||
@ -25,12 +25,14 @@ _posAndSize set [2, _stamina * GVAR(staminaBarWidth)];
|
||||
_staminaBarContainer ctrlSetPosition _posAndSize;
|
||||
|
||||
// - Opacity ------------------------------------------------------------------
|
||||
if (GVAR(fadeStaminaBar)) then {
|
||||
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);
|
||||
};
|
||||
} else {
|
||||
_staminaBarContainer ctrlSetFade 0;
|
||||
};
|
||||
|
||||
// - Color --------------------------------------------------------------------
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Main looping function that updates fatigue values.
|
||||
@ -14,7 +14,9 @@
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
if (!alive ACE_player) exitWith { // Dead people don't breath, Will also handle null (Map intros)
|
||||
|
||||
// Dead people don't breathe, will also handle null (map intros)
|
||||
if (!alive ACE_player) exitWith {
|
||||
[FUNC(mainLoop), [], 1] call CBA_fnc_waitAndExecute;
|
||||
private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull];
|
||||
_staminaBarContainer ctrlSetFade 1;
|
||||
@ -36,7 +38,7 @@ if ((vehicle ACE_player == ACE_player) && {_currentSpeed > 0.1} && {isTouchingGr
|
||||
|
||||
// Calculate muscle damage increase
|
||||
// Note: Muscle damage recovery is ignored as it takes multiple days
|
||||
GVAR(muscleDamage) = GVAR(muscleDamage) + (_currentWork / GVAR(peakPower)) ^ 3.2 * 0.00004;
|
||||
GVAR(muscleDamage) = (GVAR(muscleDamage) + (_currentWork / GVAR(peakPower)) ^ 3.2 * 0.00004) min 1;
|
||||
private _muscleIntegritySqrt = sqrt (1 - GVAR(muscleDamage));
|
||||
|
||||
// Calculate available power
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Initializes the module settings.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Removes a duty factor.
|
||||
@ -16,10 +16,4 @@
|
||||
*/
|
||||
params [["_id", "", [""]]];
|
||||
|
||||
GVAR(dutyList) params ["_idList", "_factorList"];
|
||||
private _index = _idList find _id;
|
||||
|
||||
if (_index != -1) then {
|
||||
_idList deleteAt _index;
|
||||
_factorList deleteAt _index;
|
||||
};
|
||||
GVAR(dutyList) deleteAt _id;
|
||||
|
@ -1 +0,0 @@
|
||||
#include "\z\ace\addons\advanced_fatigue\script_component.hpp"
|
@ -13,7 +13,7 @@
|
||||
[QGVAR(enabled), _this] call EFUNC(common,cbaSettings_settingChanged)
|
||||
},
|
||||
true // Needs mission restart
|
||||
] call CBA_Settings_fnc_init;
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(enableStaminaBar),
|
||||
@ -28,7 +28,7 @@
|
||||
_staminaBarContainer ctrlCommit 0;
|
||||
};
|
||||
}
|
||||
] call CBA_Settings_fnc_init;
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(fadeStaminaBar),
|
||||
@ -43,7 +43,7 @@
|
||||
_staminaBarContainer ctrlCommit 0;
|
||||
};
|
||||
}
|
||||
] call CBA_Settings_fnc_init;
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(performanceFactor),
|
||||
@ -52,7 +52,7 @@
|
||||
LSTRING(DisplayName),
|
||||
[0, 5, 1, 1],
|
||||
true
|
||||
] call CBA_Settings_fnc_init;
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(recoveryFactor),
|
||||
@ -61,7 +61,7 @@
|
||||
LSTRING(DisplayName),
|
||||
[0, 5, 1, 1],
|
||||
true
|
||||
] call CBA_Settings_fnc_init;
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(loadFactor),
|
||||
@ -70,7 +70,7 @@
|
||||
LSTRING(DisplayName),
|
||||
[0, 5, 1, 1],
|
||||
true
|
||||
] call CBA_Settings_fnc_init;
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(terrainGradientFactor),
|
||||
@ -79,7 +79,7 @@
|
||||
LSTRING(DisplayName),
|
||||
[0, 5, 1, 1],
|
||||
true
|
||||
] call CBA_Settings_fnc_init;
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(swayFactor),
|
||||
@ -88,4 +88,4 @@
|
||||
LSTRING(DisplayName),
|
||||
[0, 5, 1, 1],
|
||||
true
|
||||
] call CBA_Settings_fnc_init;
|
||||
] call CBA_fnc_addSetting;
|
||||
|
@ -6,7 +6,7 @@
|
||||
<Spanish>ACE Fatiga Avanzada</Spanish>
|
||||
<German>ACE Erweiterte Ausdauer</German>
|
||||
<Chinese>ACE 進階疲勞</Chinese>
|
||||
<Chinesesimp>ACE 进阶疲劳</Chinesesimp>
|
||||
<Chinesesimp>ACE 进阶体力</Chinesesimp>
|
||||
<Japanese>ACE アドバンスド ファティーグ</Japanese>
|
||||
<Italian>ACE Fatica Avanzata</Italian>
|
||||
<Korean>ACE 고급 피로도</Korean>
|
||||
@ -73,7 +73,7 @@
|
||||
<French>Facteur de récupération</French>
|
||||
<Italian>Fattore Recupero</Italian>
|
||||
<Chinese>回復值</Chinese>
|
||||
<Chinesesimp>回复值</Chinesesimp>
|
||||
<Chinesesimp>恢复系数</Chinesesimp>
|
||||
<Russian>Фактор восстановления</Russian>
|
||||
<Portuguese>Fator de Recuperação</Portuguese>
|
||||
<Czech>Faktor zotavení</Czech>
|
||||
@ -89,7 +89,7 @@
|
||||
<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>
|
||||
<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>
|
||||
@ -104,7 +104,7 @@
|
||||
<French>Facteur de charge</French>
|
||||
<Italian>Fattore Caricamento</Italian>
|
||||
<Chinese>負重量</Chinese>
|
||||
<Chinesesimp>负重量</Chinesesimp>
|
||||
<Chinesesimp>重量系数</Chinesesimp>
|
||||
<Russian>Фактор нагрузки</Russian>
|
||||
<Portuguese>Fator de Carga</Portuguese>
|
||||
<Czech>Faktor zatížení</Czech>
|
||||
@ -119,7 +119,7 @@
|
||||
<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>
|
||||
<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>
|
||||
@ -134,7 +134,7 @@
|
||||
<French>Facteur d'inclinaison du terrain</French>
|
||||
<Italian>Fattore Pendenza Terreno</Italian>
|
||||
<Chinese>地形陡峭影響值</Chinese>
|
||||
<Chinesesimp>地形陡峭影响值</Chinesesimp>
|
||||
<Chinesesimp>地形陡峭系数</Chinesesimp>
|
||||
<Russian>Фактор местности</Russian>
|
||||
<Portuguese>Fator de Inclinação do Terreno</Portuguese>
|
||||
<Czech>Faktor stoupání terénu</Czech>
|
||||
@ -149,7 +149,7 @@
|
||||
<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>
|
||||
<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>
|
||||
@ -159,7 +159,7 @@
|
||||
<Spanish>Factor de balanceo de mira</Spanish>
|
||||
<German>Verwacklungsfaktor</German>
|
||||
<Japanese>手ぶれ因数</Japanese>
|
||||
<Chinesesimp>抖动因数</Chinesesimp>
|
||||
<Chinesesimp>抖动系数</Chinesesimp>
|
||||
<Chinese>抖動因素</Chinese>
|
||||
<French>Facteur de tremblement</French>
|
||||
<Italian>Fattore di oscillazione</Italian>
|
||||
@ -167,13 +167,14 @@
|
||||
<Russian>Фактор колебания прицела</Russian>
|
||||
<Portuguese>Fator de Balanço de Mira</Portuguese>
|
||||
<Czech>Faktor kývání</Czech>
|
||||
<Korean>손떨림 정도</Korean>
|
||||
</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>
|
||||
<Chinesesimp>影响手持武器的晃动程度,数值越高,抖动的越厉害。</Chinesesimp>
|
||||
<Chinese>影響手持武器晃動程度,數值越高抖動越厲害</Chinese>
|
||||
<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>
|
||||
@ -181,6 +182,7 @@
|
||||
<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>
|
||||
<Korean>손떨림의 정도를 정합니다. 높을 수록 많이 휘적입니다.</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_Enabled">
|
||||
<English>Enabled</English>
|
||||
@ -207,7 +209,7 @@
|
||||
<French>Active/Désactive la fatigue avancée.</French>
|
||||
<Italian>Abilita/disabilita la Fatica Avanzata.</Italian>
|
||||
<Chinese>啟用/關閉進階體力.</Chinese>
|
||||
<Chinesesimp>启用/关闭进阶体力.</Chinesesimp>
|
||||
<Chinesesimp>启用/关闭进阶体力。</Chinesesimp>
|
||||
<Russian>Включает / Отключает Продвинутую усталость</Russian>
|
||||
<Portuguese>Ativa/Desativa Fadiga Avançada.</Portuguese>
|
||||
<Czech>Aktivuje / deaktivuje Pokročilou únavu.</Czech>
|
||||
@ -248,6 +250,7 @@
|
||||
<Russian>Скрыть шкалу усталости автоматически</Russian>
|
||||
<German>Blende Ausdauerleiste automatisch aus</German>
|
||||
<Chinese>體力條自動淡去</Chinese>
|
||||
<Chinesesimp>自动淡化体力条</Chinesesimp>
|
||||
<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>
|
||||
@ -255,6 +258,7 @@
|
||||
<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>
|
||||
<Korean>자동으로 피로도 막대 숨기기</Korean>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_FadeStaminaBar_Description">
|
||||
<English>Adjusts transparency of the bar based on stamina status.</English>
|
||||
@ -262,12 +266,14 @@
|
||||
<Russian>Регулирует прозрачность шкалы в зависимости от статуса выносливости.</Russian>
|
||||
<German>Passt die Transparenz der Ausdauerleiste abhängig vom Ausdauerstatus an.</German>
|
||||
<Chinese>依照目前的體力程度調整體力條之透明度</Chinese>
|
||||
<Chinesesimp>根据体力状况调整体力条的透明度</Chinesesimp>
|
||||
<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>
|
||||
<Korean>피로도에 따라 피로도 막대의 투명도를 조절합니다.</Korean>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,40 +1,17 @@
|
||||
class ACE_Settings {
|
||||
class GVAR(enabled) {
|
||||
category = CSTRING(Category);
|
||||
displayName = CSTRING(Enable_DisplayName);
|
||||
description = CSTRING(Enable_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
isClientSettable = 1;
|
||||
movedToSQF = 1;
|
||||
};
|
||||
class GVAR(showThrowArc) {
|
||||
category = CSTRING(Category);
|
||||
displayName = CSTRING(ShowThrowArc_DisplayName);
|
||||
description = CSTRING(ShowThrowArc_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
isClientSettable = 1;
|
||||
movedToSQF = 1;
|
||||
};
|
||||
class GVAR(showMouseControls) {
|
||||
category = CSTRING(Category);
|
||||
displayName = CSTRING(ShowMouseControls_DisplayName);
|
||||
description = CSTRING(ShowMouseControls_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
isClientSettable = 1;
|
||||
movedToSQF = 1;
|
||||
};
|
||||
class GVAR(enablePickUp) {
|
||||
category = CSTRING(Category);
|
||||
displayName = CSTRING(EnablePickUp_DisplayName);
|
||||
description = CSTRING(EnablePickUp_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
movedToSQF = 1;
|
||||
};
|
||||
class GVAR(enablePickUpAttached) {
|
||||
category = CSTRING(Category);
|
||||
displayName = CSTRING(EnablePickUpAttached_DisplayName);
|
||||
description = CSTRING(EnablePickUpAttached_Description);
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
movedToSQF = 1;
|
||||
};
|
||||
};
|
||||
|
@ -1,17 +1,17 @@
|
||||
class Extended_PreStart_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preStart));
|
||||
init = QUOTE(call COMPILE_SCRIPT(XEH_preStart));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
init = QUOTE(call COMPILE_SCRIPT(XEH_preInit));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PostInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||
init = QUOTE(call COMPILE_SCRIPT(XEH_postInit));
|
||||
};
|
||||
};
|
||||
|
@ -2,10 +2,3 @@ ace_advanced_throwing
|
||||
===================
|
||||
|
||||
Integrates advanced throwing by [Dslyecxi](https://github.com/dslyecxi).
|
||||
|
||||
|
||||
## Maintainers
|
||||
|
||||
The people responsible for merging changes to this component or answering potential questions.
|
||||
|
||||
- [Jonpas](https://github.com/jonpas)
|
||||
|
@ -6,4 +6,6 @@ PREP_RECOMPILE_START;
|
||||
#include "XEH_PREP.hpp"
|
||||
PREP_RECOMPILE_END;
|
||||
|
||||
#include "initSettings.sqf"
|
||||
|
||||
ADDON = true;
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Jonpas
|
||||
* Checks if a throwable can be prepared.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Jonpas
|
||||
* Checks if a throwable can be thrown.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Zapat, Dslyecxi, Jonpas
|
||||
* Draws throw arc.
|
||||
@ -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"]) isNotEqualTo []) then {
|
||||
_cross = 3; // 3: GEOM/FIRE LOD Block (Yellow) - pass a3 bulding glass, but blocked on some CUP glass
|
||||
};
|
||||
};
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Dslyecxi, Jonpas, SilentSpike
|
||||
* Author: Dslyecxi, Jonpas, kymckay
|
||||
* Handles drawing the currently selected or cooked throwable.
|
||||
*
|
||||
* Arguments:
|
||||
@ -118,7 +118,7 @@ if (abs _leanCoef < 0.15 || {vehicle ACE_player != ACE_player} || {weaponLowered
|
||||
|
||||
private _posCameraWorld = AGLToASL (positionCameraToWorld [0, 0, 0]);
|
||||
_posHeadRel = _posHeadRel vectorAdd [-0.03, 0.01, 0.15]; // Bring closer to eyePos value
|
||||
private _posFin = AGLToASL (ACE_player modelToWorldVisual _posHeadRel);
|
||||
private _posFin = ACE_player modelToWorldVisualWorld _posHeadRel;
|
||||
|
||||
private _throwType = ACE_player getVariable [QGVAR(throwType), THROW_TYPE_DEFAULT];
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Dslyecxi, Jonpas
|
||||
* Exits throw mode.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Retrieve muzzle name from config.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Jonpas
|
||||
* Initializes the Advanced Throwing module.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Dslyecxi, Jonpas
|
||||
* Key down event.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Dslyecxi, Jonpas
|
||||
* Mouse button down event.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Dslyecxi, Jonpas
|
||||
* Mouse scroll wheel changed event.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Jonpas
|
||||
* Picks up a throwable from the ground.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Dslyecxi, Jonpas
|
||||
* Prepares throwable or selects the next.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Dslyecxi, Jonpas
|
||||
* Primes the throwable, creates global throwable vehicle and throws Fired XEH.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: PabstMirror, Jonpas
|
||||
* When interact_menu starts rendering (from "interact_keyDown" event).
|
||||
@ -31,7 +31,7 @@
|
||||
_nearThrowables append (ACE_player nearObjects ["ACE_Chemlight_IR_Dummy", PICK_UP_DISTANCE]);
|
||||
|
||||
{
|
||||
if (!(_x in _throwablesHelped) &&
|
||||
if (!(_x in _throwablesHelped) && {!((attachedTo _x) getVariable [QGVAR(disablePickUp), false])} &&
|
||||
{!(_x isKindOf "SmokeShellArty")} && {!(_x isKindOf "G_40mm_Smoke")} && // All smokes inherit from "GrenadeHand" >> "SmokeShell"
|
||||
{GVAR(enablePickUpAttached) || {!GVAR(enablePickUpAttached) && {isNull (attachedTo _x)}}}
|
||||
) then {
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Dslyecxi, Jonpas
|
||||
* Throw selected throwable.
|
||||
@ -40,7 +40,7 @@ if (!(_unit getVariable [QGVAR(primed), false])) then {
|
||||
_velocity = [_velocity, THROWSTYLE_DROP_VEL] select _dropMode;
|
||||
|
||||
private _p2 = (eyePos _unit) vectorAdd (AGLToASL (positionCameraToWorld _direction)) vectorDiff (AGLToASL (positionCameraToWorld [0, 0, 0]));
|
||||
private _p1 = AGLtoASL (_activeThrowable modelToWorldVisual [0, 0, 0]);
|
||||
private _p1 = _activeThrowable modelToWorldVisualWorld [0, 0, 0];
|
||||
|
||||
private _newVelocity = (_p1 vectorFromTo _p2) vectorMultiply _velocity;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: CBA Team
|
||||
* Throws Fired XEH.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Jonpas
|
||||
* Updates controls hints based on current state.
|
||||
|
@ -1 +0,0 @@
|
||||
#include "\z\ace\addons\advanced_throwing\script_component.hpp"
|
42
addons/advanced_throwing/initSettings.sqf
Normal file
42
addons/advanced_throwing/initSettings.sqf
Normal file
@ -0,0 +1,42 @@
|
||||
private _category = format ["ACE %1", localize LSTRING(Category)];
|
||||
[
|
||||
QGVAR(enabled),
|
||||
"CHECKBOX",
|
||||
[LSTRING(Enable_DisplayName), LSTRING(Enable_Description)],
|
||||
_category,
|
||||
true,
|
||||
0
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(showThrowArc),
|
||||
"CHECKBOX",
|
||||
[LSTRING(ShowThrowArc_DisplayName), LSTRING(ShowThrowArc_Description)],
|
||||
_category,
|
||||
true,
|
||||
0
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(showMouseControls), "CHECKBOX",
|
||||
[LSTRING(ShowMouseControls_DisplayName), LSTRING(ShowMouseControls_Description)],
|
||||
_category,
|
||||
true,
|
||||
0
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(enablePickUp), "CHECKBOX",
|
||||
[LSTRING(EnablePickUp_DisplayName), LSTRING(EnablePickUp_Description)],
|
||||
_category,
|
||||
true,
|
||||
1
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
[
|
||||
QGVAR(enablePickUpAttached), "CHECKBOX",
|
||||
[LSTRING(EnablePickUpAttached_DisplayName), LSTRING(EnablePickUpAttached_Description)],
|
||||
_category,
|
||||
true,
|
||||
1
|
||||
] call CBA_fnc_addSetting;
|
@ -35,7 +35,7 @@
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Enable_DisplayName">
|
||||
<English>Enable Advanced Throwing</English>
|
||||
<Spanish>Activar Lanzamiento Avanzado</Spanish>
|
||||
<Russian>Включить улучшенный бросок</Russian>
|
||||
<Russian>Вкл. улучшенный бросок</Russian>
|
||||
<Japanese>アドバンスド スローイングを有効化</Japanese>
|
||||
<Polish>Aktywuj zaawansowane rzucanie</Polish>
|
||||
<German>Aktiviere erweitertes Wurfsystem</German>
|
||||
@ -75,7 +75,7 @@
|
||||
<French>Afficher l'arc de lancé</French>
|
||||
<Italian>Mostra Arco di Tiro</Italian>
|
||||
<Chinese>顯示投擲軌道</Chinese>
|
||||
<Chinesesimp>显示投掷轨道</Chinesesimp>
|
||||
<Chinesesimp>显示投掷弧线</Chinesesimp>
|
||||
<Portuguese>Mostrar o Arco de Arremesso</Portuguese>
|
||||
<Czech>Zobrazit oblouk vrhu </Czech>
|
||||
<Turkish>Atış Yayını Göster</Turkish>
|
||||
@ -91,7 +91,7 @@
|
||||
<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>
|
||||
<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>
|
||||
@ -106,7 +106,7 @@
|
||||
<French>Afficher les contrôles à la souris du lancé</French>
|
||||
<Italian>Mostra Comandi Mouse Lancio</Italian>
|
||||
<Chinese>顯示滑鼠投擲控制提示</Chinese>
|
||||
<Chinesesimp>显示滑鼠投掷控制提示</Chinesesimp>
|
||||
<Chinesesimp>显示鼠标投掷控制提示</Chinesesimp>
|
||||
<Portuguese>Mostrar os controles de mouse para Arremesso</Portuguese>
|
||||
<Czech>Zobrazit ovládání házení myší</Czech>
|
||||
</Key>
|
||||
@ -121,14 +121,14 @@
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Вкл. подбор гранат</Russian>
|
||||
<Japanese>投てき物の拾い上げを有効化</Japanese>
|
||||
<Polish>Zezwól na podnoszenie obiektów miotanych</Polish>
|
||||
<German>Aktiviere Aufheben von Wurfobjekten</German>
|
||||
@ -136,7 +136,7 @@
|
||||
<French>Permettre le ramassage d'objets lançables</French>
|
||||
<Italian>Abilita Raccogli Oggetti</Italian>
|
||||
<Chinese>啟用可撿取地面投擲物</Chinese>
|
||||
<Chinesesimp>启用可捡取地面投掷物</Chinesesimp>
|
||||
<Chinesesimp>启用捡取地面投掷物</Chinesesimp>
|
||||
<Portuguese>Permitir pegar arremessáveis</Portuguese>
|
||||
<Czech>Zapnout zdvihání házených předmětů</Czech>
|
||||
</Key>
|
||||
@ -151,14 +151,14 @@
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Вкл. подбор прикрепленных гранат</Russian>
|
||||
<Japanese>取り付けられた投てき物の拾い上げを有効化</Japanese>
|
||||
<Polish>Zezwól na podnoszenie przyczepionych obiektów miotanych</Polish>
|
||||
<German>Aktiviere erneute Aufnahme befestigter Wurfobjekte</German>
|
||||
@ -166,7 +166,7 @@
|
||||
<French>Activer le ramassage d'objets lançables attachés</French>
|
||||
<Italian>Abilita Raccogli Oggetti Lanciabili da altri Oggetti</Italian>
|
||||
<Chinese>啟用可撿取附著投擲物</Chinese>
|
||||
<Chinesesimp>启用可捡取附着投掷物</Chinesesimp>
|
||||
<Chinesesimp>启用捡取附着投掷物</Chinesesimp>
|
||||
<Portuguese>Permitir pegar arremessáveis fixados</Portuguese>
|
||||
<Czech>Zapnout zdvihání připnutých předmětů.</Czech>
|
||||
</Key>
|
||||
@ -181,7 +181,7 @@
|
||||
<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>
|
||||
<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>
|
||||
@ -211,7 +211,7 @@
|
||||
<French>Mode de lancé de l'objet (Tenir)</French>
|
||||
<Italian>Modalità Oggetto Gettabile (Mantenere)</Italian>
|
||||
<Chinese>投擲模式 (按住)</Chinese>
|
||||
<Chinesesimp>投掷模式 (按住)</Chinesesimp>
|
||||
<Chinesesimp>投掷模式(按住)</Chinesesimp>
|
||||
<Portuguese>Modo de Arremesso (Segurar)</Portuguese>
|
||||
<Czech>Mód puštění (Držet)</Czech>
|
||||
</Key>
|
||||
@ -226,7 +226,7 @@
|
||||
<French>Mode de lancé de l'objet (Basculer)</French>
|
||||
<Italian>Modalità Oggetto lanciabile Gettabile (Interruttore)</Italian>
|
||||
<Chinese>投擲模式 (切換)</Chinese>
|
||||
<Chinesesimp>投掷模式 (切换)</Chinesesimp>
|
||||
<Chinesesimp>投掷模式(切换)</Chinesesimp>
|
||||
<Portuguese>Modo de Arremesso (Alternar)</Portuguese>
|
||||
<Czech>Mód puštění (Přepnout)</Czech>
|
||||
</Key>
|
||||
@ -241,7 +241,7 @@
|
||||
<French>amorcée</French>
|
||||
<Italian>Armato</Italian>
|
||||
<Chinese>引信開始燃燒</Chinese>
|
||||
<Chinesesimp>引信开始燃烧</Chinesesimp>
|
||||
<Chinesesimp>已开引信</Chinesesimp>
|
||||
<Portuguese>Preparado</Portuguese>
|
||||
<Czech>Odjištěný</Czech>
|
||||
</Key>
|
||||
@ -272,7 +272,7 @@
|
||||
<French>(Défilement) Changer de mode</French>
|
||||
<Italian>(Scorrere) Cambio Modalità</Italian>
|
||||
<Chinese>(滾輪) 變更模式</Chinese>
|
||||
<Chinesesimp>(滚轮) 变更模式</Chinesesimp>
|
||||
<Chinesesimp>(滚轮)变更模式</Chinesesimp>
|
||||
<Portuguese>(Roda do Mouse) Alternar modo</Portuguese>
|
||||
<Czech>(Scrollovat) Změnit mód</Czech>
|
||||
<Turkish>(Tekerlek) Modu Değiştir</Turkish>
|
||||
@ -288,7 +288,7 @@
|
||||
<French>(Défilement) Étendre</French>
|
||||
<Italian>(Scorrere) Estendere</Italian>
|
||||
<Chinese>(滾輪) 延長</Chinese>
|
||||
<Chinesesimp>(滚轮) 延长</Chinesesimp>
|
||||
<Chinesesimp>(滚轮)延长</Chinesesimp>
|
||||
<Portuguese>(Roda do Mouse) Extender</Portuguese>
|
||||
<Czech>(Scrollovat) Oddálit</Czech>
|
||||
<Turkish>(Tekerlek) Uzat</Turkish>
|
||||
@ -304,7 +304,7 @@
|
||||
<French>(Clique) Dégoupiller</French>
|
||||
<Italian>(Click) Arma</Italian>
|
||||
<Chinese>(點擊) 提早拉開引信</Chinese>
|
||||
<Chinesesimp>(点击) 提早拉开引信</Chinesesimp>
|
||||
<Chinesesimp>(点击)提早拉开引信</Chinesesimp>
|
||||
<Portuguese>(Clique) Cozinhar</Portuguese>
|
||||
<Czech>(Klik) Odjistit</Czech>
|
||||
<Turkish>(Tıkla) Cook</Turkish>
|
||||
|
@ -1,19 +1,19 @@
|
||||
|
||||
class Extended_PreStart_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preStart));
|
||||
init = QUOTE(call COMPILE_SCRIPT(XEH_preStart));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
init = QUOTE(call COMPILE_SCRIPT(XEH_preInit));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PostInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||
init = QUOTE(call COMPILE_SCRIPT(XEH_postInit));
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -2,11 +2,3 @@ ace_ai
|
||||
======
|
||||
|
||||
Overhaul of AI firing modes of vanilla weapons, encouraging the AI to use full-auto and bursts more often.
|
||||
|
||||
|
||||
## Maintainers
|
||||
|
||||
The people responsible for merging changes to this component or answering potential questions.
|
||||
|
||||
- [KoffeinFlummi](https://github.com/KoffeinFlummi)
|
||||
- [commy2](https://github.com/commy2)
|
||||
|
@ -1,3 +1,5 @@
|
||||
PREP(assignNVG);
|
||||
PREP(assignNVGpfh);
|
||||
PREP(drawCuratorGarrisonPathing);
|
||||
PREP(garrison);
|
||||
PREP(garrisonMove);
|
||||
|
@ -68,3 +68,11 @@
|
||||
params ["_unit", "_mode"];
|
||||
_unit enableGunLights _mode;
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
|
||||
if (isServer) then {
|
||||
["CAManBase", "init", {
|
||||
// wait for HMD to be assigned so `hmd _unit` works
|
||||
[FUNC(assignNVG), _this, 1] call CBA_fnc_waitAndExecute;
|
||||
}] call CBA_fnc_addClassEventHandler;
|
||||
};
|
||||
|
@ -6,4 +6,11 @@ PREP_RECOMPILE_START;
|
||||
#include "XEH_PREP.hpp"
|
||||
PREP_RECOMPILE_END;
|
||||
|
||||
if (isServer) then {
|
||||
GVAR(assignNVGthread) = false;
|
||||
GVAR(assignNVGstate) = false;
|
||||
};
|
||||
|
||||
#include "initSettings.sqf"
|
||||
|
||||
ADDON = true;
|
||||
|
39
addons/ai/functions/fnc_assignNVG.sqf
Normal file
39
addons/ai/functions/fnc_assignNVG.sqf
Normal file
@ -0,0 +1,39 @@
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Jonpas
|
||||
* Assigns AI first found NVG in their inventory during night time and unassigns it during day time.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [cursorObject] call ace_ai_fnc_assignNVG
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
if (!GVAR(assignNVG)) exitWith {};
|
||||
|
||||
params ["_unit"];
|
||||
|
||||
if (alive _unit && {!isPlayer _unit}) then {
|
||||
private _nvg = hmd _unit;
|
||||
|
||||
if (GVAR(assignNVGstate)) then {
|
||||
if (_nvg == "") then {
|
||||
private _items = [_unit, false, true, true, true, false, false] call CBA_fnc_uniqueUnitItems; // backpack, vest, uniform
|
||||
{
|
||||
if (getText (configFile >> "CfgWeapons" >> _x >> "simulation") == "NVGoggles") exitWith {
|
||||
_unit assignItem _x;
|
||||
};
|
||||
} forEach _items;
|
||||
};
|
||||
} else {
|
||||
if (_nvg != "" && {currentVisionMode _unit == 0} && {_unit canAdd _nvg}) then {
|
||||
_unit unassignItem _nvg;
|
||||
};
|
||||
};
|
||||
};
|
27
addons/ai/functions/fnc_assignNVGpfh.sqf
Normal file
27
addons/ai/functions/fnc_assignNVGpfh.sqf
Normal file
@ -0,0 +1,27 @@
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: Jonpas
|
||||
* waitAndExecute Handler for periodic NVG assignment.
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_ai_fnc_assignNVGpfh
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
TRACE_1("assignNVGpfh",count allUnits);
|
||||
|
||||
if (!GVAR(assignNVG)) exitWith { TRACE_1("shutdown loop",_this); GVAR(assignNVGthread) = false; };
|
||||
|
||||
GVAR(assignNVGstate) = sunOrMoon < 1 || {moonIntensity > 0.8};
|
||||
|
||||
{
|
||||
_x call FUNC(assignNVG);
|
||||
} forEach allUnits;
|
||||
|
||||
[FUNC(assignNVGpfh), [], 300] call CBA_fnc_waitAndExecute;
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: alganthe
|
||||
* Draws AI garrison pathing while the Zeus display is open.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: alganthe
|
||||
* Garrison function used to garrison AI inside buildings.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: alganthe
|
||||
* Internal function used by ace_ai_fnc_garrison to make the units move to the positions it picked.
|
||||
@ -33,7 +33,7 @@ private _unitMoveListUnits = (_unitMoveList apply {_x select 0});
|
||||
_x setVariable [QGVAR(garrisonMove_unitPosMemory), nil, true];
|
||||
} foreach _unitMoveListUnits;
|
||||
|
||||
// Avoid duplicate PFHs
|
||||
// Avoid duplicate PFHs
|
||||
if (isNil QGVAR(garrison_moveUnitPFH)) then {
|
||||
missionNameSpace setVariable [QGVAR(garrison_moveUnitPFH), true, true];
|
||||
|
||||
@ -114,7 +114,7 @@ if (isNil QGVAR(garrison_moveUnitPFH)) then {
|
||||
(_unit getVariable [QGVAR(garrisonMove_unitPosMemory), [CBA_missionTime, [0,0,0]]]) params ["_unitPosTimer", "_unitOldPos"];
|
||||
|
||||
// AI may sometimes not be able to report unitReady, this is to avoid the PFH running forever
|
||||
switch true do {
|
||||
switch true do {
|
||||
case ((_unitPos distance _pos) < 1.5) : {
|
||||
call _fnc_attemptSuccessful;
|
||||
};
|
||||
@ -127,7 +127,7 @@ if (isNil QGVAR(garrison_moveUnitPFH)) then {
|
||||
|
||||
default {
|
||||
_unit setVariable [QGVAR(garrisonMove_unitPosMemory), [CBA_missionTime, _unitPos]];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: mharis001
|
||||
* Initializes the Zeus display.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "script_component.hpp"
|
||||
#include "..\script_component.hpp"
|
||||
/*
|
||||
* Author: alganthe
|
||||
* Used to un-garrison units.
|
||||
|
@ -1 +0,0 @@
|
||||
#include "\z\ace\addons\ai\script_component.hpp"
|
19
addons/ai/initSettings.sqf
Normal file
19
addons/ai/initSettings.sqf
Normal file
@ -0,0 +1,19 @@
|
||||
private _category = format ["ACE %1", LLSTRING(DisplayName)];
|
||||
|
||||
[
|
||||
QGVAR(assignNVG), "CHECKBOX",
|
||||
[LSTRING(AssignNVG_DisplayName), LSTRING(AssignNVG_Description)],
|
||||
_category,
|
||||
false,
|
||||
1,
|
||||
{
|
||||
if (isServer) then {
|
||||
params ["_enabled"];
|
||||
if (_enabled && {!GVAR(assignNVGthread)}) then {
|
||||
TRACE_1("start loop",_this);
|
||||
GVAR(assignNVGthread) = true;
|
||||
[FUNC(assignNVGpfh), [], 1] call CBA_fnc_waitAndExecute;
|
||||
};
|
||||
};
|
||||
}
|
||||
] call CBA_fnc_addSetting;
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user