This commit is contained in:
commit
bf951fd1f6
63
.gitattributes
vendored
Normal file
63
.gitattributes
vendored
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
###############################################################################
|
||||||
|
# Set default behavior to automatically normalize line endings.
|
||||||
|
###############################################################################
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior for command prompt diff.
|
||||||
|
#
|
||||||
|
# This is need for earlier builds of msysgit that does not have it on by
|
||||||
|
# default for csharp files.
|
||||||
|
# Note: This is only used by command line
|
||||||
|
###############################################################################
|
||||||
|
#*.cs diff=csharp
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set the merge driver for project and solution files
|
||||||
|
#
|
||||||
|
# Merging from the command prompt will add diff markers to the files if there
|
||||||
|
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||||
|
# the diff markers are never inserted). Diff markers may cause the following
|
||||||
|
# file extensions to fail to load in VS. An alternative would be to treat
|
||||||
|
# these files as binary and thus will always conflict and require user
|
||||||
|
# intervention with every merge. To do so, just uncomment the entries below
|
||||||
|
###############################################################################
|
||||||
|
#*.sln merge=binary
|
||||||
|
#*.csproj merge=binary
|
||||||
|
#*.vbproj merge=binary
|
||||||
|
#*.vcxproj merge=binary
|
||||||
|
#*.vcproj merge=binary
|
||||||
|
#*.dbproj merge=binary
|
||||||
|
#*.fsproj merge=binary
|
||||||
|
#*.lsproj merge=binary
|
||||||
|
#*.wixproj merge=binary
|
||||||
|
#*.modelproj merge=binary
|
||||||
|
#*.sqlproj merge=binary
|
||||||
|
#*.wwaproj merge=binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# behavior for image files
|
||||||
|
#
|
||||||
|
# image files are treated as binary by default.
|
||||||
|
###############################################################################
|
||||||
|
#*.jpg binary
|
||||||
|
#*.png binary
|
||||||
|
#*.gif binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# diff behavior for common document formats
|
||||||
|
#
|
||||||
|
# Convert binary document formats to text before diffing them. This feature
|
||||||
|
# is only available from the command line. Turn it on by uncommenting the
|
||||||
|
# entries below.
|
||||||
|
###############################################################################
|
||||||
|
#*.doc diff=astextplain
|
||||||
|
#*.DOC diff=astextplain
|
||||||
|
#*.docx diff=astextplain
|
||||||
|
#*.DOCX diff=astextplain
|
||||||
|
#*.dot diff=astextplain
|
||||||
|
#*.DOT diff=astextplain
|
||||||
|
#*.pdf diff=astextplain
|
||||||
|
#*.PDF diff=astextplain
|
||||||
|
#*.rtf diff=astextplain
|
||||||
|
#*.RTF diff=astextplain
|
32
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
32
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Report a bug related to the framework.
|
||||||
|
title: "[addon name] - [short description]"
|
||||||
|
labels: bug
|
||||||
|
assignees: JSchmidt92
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Mission file**
|
||||||
|
The mission where the issue occured.
|
||||||
|
|
||||||
|
**Log file**
|
||||||
|
The log file generated by the game.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: Request - [short description]
|
||||||
|
labels: ''
|
||||||
|
assignees: JSchmidt92
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
**When merged this pull request will:**
|
||||||
|
- Describe what this pull request will do
|
||||||
|
- Each change in a separate line
|
||||||
|
- Follow title standard `Module - Add|Fix|Improve|Change|Remove things`
|
33
.github/release_drafter.yml
vendored
Normal file
33
.github/release_drafter.yml
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
name-template: "ArmaDragonflyClient_v$NEXT_PATCH_VERSION"
|
||||||
|
tag-template: "$NEXT_PATCH_VERSION"
|
||||||
|
|
||||||
|
categories:
|
||||||
|
- title: "**ADDED:**"
|
||||||
|
labels:
|
||||||
|
- "feature"
|
||||||
|
- title: "**FIXED:**"
|
||||||
|
labels:
|
||||||
|
- "bug fix"
|
||||||
|
- title: "**IMPROVED:**"
|
||||||
|
labels:
|
||||||
|
- "enhancement"
|
||||||
|
- title: "**CHANGED:**"
|
||||||
|
labels:
|
||||||
|
- "cleanup"
|
||||||
|
|
||||||
|
exclude-labels:
|
||||||
|
- "ignore changelog"
|
||||||
|
|
||||||
|
change-template: "- $TITLE (#$NUMBER)"
|
||||||
|
template: |
|
||||||
|
## Change Log Summary
|
||||||
|
|
||||||
|
$CHANGES
|
||||||
|
|
||||||
|
replacers:
|
||||||
|
# Category titles
|
||||||
|
- search: '/\#\# (\*\*(ADDED|FIXED|IMPROVED|CHANGED):\*\*)/g'
|
||||||
|
replace: "$1"
|
49
.github/workflows/build.yml
vendored
Normal file
49
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
name: Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [master]
|
||||||
|
paths-ignore:
|
||||||
|
- ".github/**"
|
||||||
|
- "addons/main/script_version.hpp"
|
||||||
|
- "docs/**"
|
||||||
|
- "tools/**"
|
||||||
|
- "LICENSE"
|
||||||
|
- "README.md"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- name: Checkout Source Code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Bump Version
|
||||||
|
id: bump-version
|
||||||
|
run: python3 tools/version_bumper.py increment_build push_commit
|
||||||
|
|
||||||
|
- name: Setup HEMTT
|
||||||
|
uses: arma-actions/hemtt@v1
|
||||||
|
|
||||||
|
- name: Run HEMTT build
|
||||||
|
run: hemtt release
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: 'stable'
|
||||||
|
|
||||||
|
- name: Initialize or Update Go module
|
||||||
|
run: |
|
||||||
|
if [ ! -f go.mod ]; then
|
||||||
|
go mod init gitea.innovativedevsolutions.org/IDSolutions/dragonfly
|
||||||
|
fi
|
||||||
|
go get code.gitea.io/sdk/gitea
|
||||||
|
|
||||||
|
- name: Run Release Action
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
VERSION: ${{ steps.bump-version.outputs.VERSION }}
|
||||||
|
run: go run main.go
|
401
.gitignore
vendored
Normal file
401
.gitignore
vendored
Normal file
@ -0,0 +1,401 @@
|
|||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
##
|
||||||
|
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.rsuser
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
*.userprefs
|
||||||
|
|
||||||
|
# Mono auto generated files
|
||||||
|
mono_crash.*
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleases/
|
||||||
|
x64/
|
||||||
|
x86/
|
||||||
|
[Ww][Ii][Nn]32/
|
||||||
|
[Aa][Rr][Mm]/
|
||||||
|
[Aa][Rr][Mm]64/
|
||||||
|
bld/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
[Ll]og/
|
||||||
|
[Ll]ogs/
|
||||||
|
|
||||||
|
# Visual Studio 2015/2017 cache/options directory
|
||||||
|
.vs/
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
#wwwroot/
|
||||||
|
|
||||||
|
# Visual Studio 2017 auto generated files
|
||||||
|
Generated\ Files/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
# NUnit
|
||||||
|
*.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
nunit-*.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
[Dd]ebugPS/
|
||||||
|
[Rr]eleasePS/
|
||||||
|
dlldata.c
|
||||||
|
|
||||||
|
# Benchmark Results
|
||||||
|
BenchmarkDotNet.Artifacts/
|
||||||
|
|
||||||
|
# .NET Core
|
||||||
|
project.lock.json
|
||||||
|
project.fragment.lock.json
|
||||||
|
artifacts/
|
||||||
|
|
||||||
|
# ASP.NET Scaffolding
|
||||||
|
ScaffoldingReadMe.txt
|
||||||
|
|
||||||
|
# StyleCop
|
||||||
|
StyleCopReport.xml
|
||||||
|
|
||||||
|
# Files built by Visual Studio
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*_h.h
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.iobj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.ipdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*_wpftmp.csproj
|
||||||
|
*.log
|
||||||
|
*.tlog
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.svclog
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
_Chutzpah*
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opendb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
*.VC.db
|
||||||
|
*.VC.VC.opendb
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
*.sap
|
||||||
|
|
||||||
|
# Visual Studio Trace Files
|
||||||
|
*.e2e
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
$tf/
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
*.DotSettings.user
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# AxoCover is a Code Coverage Tool
|
||||||
|
.axoCover/*
|
||||||
|
!.axoCover/settings.json
|
||||||
|
|
||||||
|
# Coverlet is a free, cross platform Code Coverage Tool
|
||||||
|
coverage*.json
|
||||||
|
coverage*.xml
|
||||||
|
coverage*.info
|
||||||
|
|
||||||
|
# Visual Studio code coverage results
|
||||||
|
*.coverage
|
||||||
|
*.coveragexml
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
_NCrunch_*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
nCrunchTemp_*
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
*.mm.*
|
||||||
|
AutoTest.Net/
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
.sass-cache/
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress/
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.azurePubxml
|
||||||
|
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||||
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
|
*.pubxml
|
||||||
|
*.publishproj
|
||||||
|
|
||||||
|
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||||
|
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||||
|
# in these scripts will be unencrypted
|
||||||
|
PublishScripts/
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
*.nupkg
|
||||||
|
# NuGet Symbol Packages
|
||||||
|
*.snupkg
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
**/[Pp]ackages/*
|
||||||
|
# except build/, which is used as an MSBuild target.
|
||||||
|
!**/[Pp]ackages/build/
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
#!**/[Pp]ackages/repositories.config
|
||||||
|
# NuGet v3's project.json files produces more ignorable files
|
||||||
|
*.nuget.props
|
||||||
|
*.nuget.targets
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
csx/
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
ecf/
|
||||||
|
rcf/
|
||||||
|
|
||||||
|
# Windows Store app package directories and files
|
||||||
|
AppPackages/
|
||||||
|
BundleArtifacts/
|
||||||
|
Package.StoreAssociation.xml
|
||||||
|
_pkginfo.txt
|
||||||
|
*.appx
|
||||||
|
*.appxbundle
|
||||||
|
*.appxupload
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
*.[Cc]ache
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
!?*.[Cc]ache/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
ClientBin/
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.dbproj.schemaview
|
||||||
|
*.jfm
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
orleans.codegen.cs
|
||||||
|
|
||||||
|
# Including strong name files can present a security risk
|
||||||
|
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||||
|
#*.snk
|
||||||
|
|
||||||
|
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||||
|
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||||
|
#bower_components/
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file
|
||||||
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
# because we have git ;-)
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
ServiceFabricBackup/
|
||||||
|
*.rptproj.bak
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
*.mdf
|
||||||
|
*.ldf
|
||||||
|
*.ndf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
*.rdl.data
|
||||||
|
*.bim.layout
|
||||||
|
*.bim_*.settings
|
||||||
|
*.rptproj.rsuser
|
||||||
|
*- [Bb]ackup.rdl
|
||||||
|
*- [Bb]ackup ([0-9]).rdl
|
||||||
|
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
FakesAssemblies/
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
*.GhostDoc.xml
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
*.plg
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
*.opt
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||||
|
*.vbw
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
|
||||||
|
*.vbp
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
|
||||||
|
*.dsw
|
||||||
|
*.dsp
|
||||||
|
|
||||||
|
# Visual Studio 6 technical files
|
||||||
|
*.ncb
|
||||||
|
*.aps
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/ModelManifest.xml
|
||||||
|
**/*.Server/GeneratedArtifacts
|
||||||
|
**/*.Server/ModelManifest.xml
|
||||||
|
_Pvt_Extensions
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
.paket/paket.exe
|
||||||
|
paket-files/
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
.fake/
|
||||||
|
|
||||||
|
# CodeRush personal settings
|
||||||
|
.cr/personal
|
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS)
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
|
||||||
|
# Cake - Uncomment if you are using it
|
||||||
|
# tools/**
|
||||||
|
# !tools/packages.config
|
||||||
|
|
||||||
|
# Tabs Studio
|
||||||
|
*.tss
|
||||||
|
|
||||||
|
# Telerik's JustMock configuration file
|
||||||
|
*.jmconfig
|
||||||
|
|
||||||
|
# BizTalk build output
|
||||||
|
*.btp.cs
|
||||||
|
*.btm.cs
|
||||||
|
*.odx.cs
|
||||||
|
*.xsd.cs
|
||||||
|
|
||||||
|
# OpenCover UI analysis results
|
||||||
|
OpenCover/
|
||||||
|
|
||||||
|
# Azure Stream Analytics local run output
|
||||||
|
ASALocalRun/
|
||||||
|
|
||||||
|
# MSBuild Binary and Structured Log
|
||||||
|
*.binlog
|
||||||
|
|
||||||
|
# NVidia Nsight GPU debugger configuration file
|
||||||
|
*.nvuser
|
||||||
|
|
||||||
|
# MFractors (Xamarin productivity tool) working folder
|
||||||
|
.mfractor/
|
||||||
|
|
||||||
|
# Local History for Visual Studio
|
||||||
|
.localhistory/
|
||||||
|
|
||||||
|
# Visual Studio History (VSHistory) files
|
||||||
|
.vshistory/
|
||||||
|
|
||||||
|
# BeatPulse healthcheck temp database
|
||||||
|
healthchecksdb
|
||||||
|
|
||||||
|
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||||
|
MigrationBackup/
|
||||||
|
|
||||||
|
# Ionide (cross platform F# VS Code tools) working folder
|
||||||
|
.ionide/
|
||||||
|
|
||||||
|
# Fody - auto-generated XML schema
|
||||||
|
FodyWeavers.xsd
|
||||||
|
|
||||||
|
# VS Code files for those working on multiple tools
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
*.code-workspace
|
||||||
|
|
||||||
|
# Local History for Visual Studio Code
|
||||||
|
.history/
|
||||||
|
|
||||||
|
# Windows Installer files from build outputs
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msix
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
|
||||||
|
# JetBrains Rider
|
||||||
|
*.sln.iml
|
||||||
|
|
||||||
|
# Hemtt
|
||||||
|
.hemttout/
|
1
.hemtt/hooks/pre_build/copy_dll.rhai
Normal file
1
.hemtt/hooks/pre_build/copy_dll.rhai
Normal file
@ -0,0 +1 @@
|
|||||||
|
HEMTT_RFS.join("extension").join("bin").join("Release").join("net8.0").join("win-x64").join("publish").join("ArmaDragonflyClient_x64.dll").copy(HEMTT_RFS.join("ArmaDragonflyClient_x64.dll"));
|
1
.hemtt/hooks/pre_build/copy_so.rhai
Normal file
1
.hemtt/hooks/pre_build/copy_so.rhai
Normal file
@ -0,0 +1 @@
|
|||||||
|
HEMTT_RFS.join("extension").join("bin").join("Release").join("net8.0").join("linux-x64").join("publish").join("ArmaDragonflyClient_x64.so").copy(HEMTT_RFS.join("ArmaDragonflyClient_x64.so"));
|
1
.hemtt/hooks/pre_release/copy_dll.rhai
Normal file
1
.hemtt/hooks/pre_release/copy_dll.rhai
Normal file
@ -0,0 +1 @@
|
|||||||
|
HEMTT_RFS.join("extension").join("bin").join("Release").join("net8.0").join("win-x64").join("publish").join("ArmaDragonflyClient_x64.dll").copy(HEMTT_RFS.join("ArmaDragonflyClient_x64.dll"));
|
1
.hemtt/hooks/pre_release/copy_so.rhai
Normal file
1
.hemtt/hooks/pre_release/copy_so.rhai
Normal file
@ -0,0 +1 @@
|
|||||||
|
HEMTT_RFS.join("extension").join("bin").join("Release").join("net8.0").join("linux-x64").join("publish").join("ArmaDragonflyClient_x64.so").copy(HEMTT_RFS.join("ArmaDragonflyClient_x64.so"));
|
18
.hemtt/project.toml
Normal file
18
.hemtt/project.toml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
name = "ArmaDragonflyClient"
|
||||||
|
prefix = "dragonfly"
|
||||||
|
author = "J.Schmidt and CreedCoder"
|
||||||
|
mainprefix = "z"
|
||||||
|
|
||||||
|
[files]
|
||||||
|
include = [
|
||||||
|
"config.xml",
|
||||||
|
"dragonfly_version.json",
|
||||||
|
"mod.cpp",
|
||||||
|
"*.paa",
|
||||||
|
"dragonfly/**",
|
||||||
|
"ArmaDragonflyClient_x64.dll",
|
||||||
|
"ArmaDragonflyClient_x64.so"
|
||||||
|
]
|
||||||
|
|
||||||
|
[version]
|
||||||
|
git_hash = 0 # Disabled
|
1
.hemtt/scripts/copy_dll.rhai
Normal file
1
.hemtt/scripts/copy_dll.rhai
Normal file
@ -0,0 +1 @@
|
|||||||
|
HEMTT_RFS.join("extension").join("bin").join("Release").join("net8.0").join("win-x64").join("publish").join("ArmaDragonflyClient_x64.dll").copy(HEMTT_RFS.join("ArmaDragonflyClient_x64.dll"));
|
1
.hemtt/scripts/copy_so.rhai
Normal file
1
.hemtt/scripts/copy_so.rhai
Normal file
@ -0,0 +1 @@
|
|||||||
|
HEMTT_RFS.join("extension").join("bin").join("Release").join("net8.0").join("linux-x64").join("publish").join("ArmaDragonflyClient_x64.so").copy(HEMTT_RFS.join("ArmaDragonflyClient_x64.so"));
|
BIN
ArmaDragonflyClient_x64.dll
Normal file
BIN
ArmaDragonflyClient_x64.dll
Normal file
Binary file not shown.
BIN
ArmaDragonflyClient_x64.so
Normal file
BIN
ArmaDragonflyClient_x64.so
Normal file
Binary file not shown.
121
LICENSE
Normal file
121
LICENSE
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
Copyright (c) 2024 Jacob "J.Schmidt92" Schmidt and "Creedcoder"
|
||||||
|
|
||||||
|
|
||||||
|
Brief summary of this Licence
|
||||||
|
|
||||||
|
|
||||||
|
PLEASE, NOTE THAT THIS SUMMARY HAS NO LEGAL EFFECT AND IS ONLY OF AN INFORMATORY NATURE DESIGNED FOR YOU TO GET THE BASIC INFORMATION ABOUT THE CONTENT OF THIS LICENCE. THE ONLY LEGALLY BINDING PROVISIONS ARE THOSE IN THE ORIGINAL AND FULL TEXT OF THIS LICENCE.
|
||||||
|
|
||||||
|
With this licence you are free to adapt (i.e. modify, rework or update) and share (i.e. copy, distribute or transmit) the material under the following conditions:
|
||||||
|
|
||||||
|
Attribution - You must attribute the material in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the material).
|
||||||
|
Noncommercial - You may not use this material for any commercial purposes.
|
||||||
|
Arma Only - You may not convert or adapt this material to be used in other games than Arma.
|
||||||
|
Share Alike - If you adapt, or build upon this material, you may distribute the resulting material only under the same license.
|
||||||
|
|
||||||
|
Full version of licence
|
||||||
|
|
||||||
|
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Arma Public License - Share Alike ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
|
||||||
|
Section 1 – Definitions
|
||||||
|
|
||||||
|
Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
|
||||||
|
Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
|
||||||
|
ArmaOnly means primarily intended for or directed towards the use in any of existing and future Arma games, including but not limited to Arma: Cold War Assault, Arma, Arma 2 and Arma 3 and its official sequels and expansion packs.
|
||||||
|
Arma Public Share Alike Compatible License means a license listed at https://www.bohemia.net/community/licenses as essentially the equivalent of this Public License.
|
||||||
|
Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
|
||||||
|
Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
|
||||||
|
Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
|
||||||
|
Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
|
||||||
|
Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
|
||||||
|
Licensor means the individual(s) or entity(ies) granting rights under this Public License.
|
||||||
|
NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange.
|
||||||
|
Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
|
||||||
|
Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
|
||||||
|
You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
|
||||||
|
|
||||||
|
Section 2 – Scope
|
||||||
|
|
||||||
|
License grant
|
||||||
|
Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
|
||||||
|
reproduce and Share the Licensed Material, in whole or in part, for NonCommercial and ArmaOnly purposes only; and
|
||||||
|
produce, reproduce, and Share Adapted Material for NonCommercial and ArmaOnly purposes only.
|
||||||
|
Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
|
||||||
|
Term. The term of this Public License is specified in Section 6(a).
|
||||||
|
Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
|
||||||
|
Downstream recipients.
|
||||||
|
Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
|
||||||
|
Additional offer from the Licensor – Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply.
|
||||||
|
No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
|
||||||
|
No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(a)(i).
|
||||||
|
Other rights
|
||||||
|
Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
|
||||||
|
Patent and trademark rights are not licensed under this Public License.
|
||||||
|
To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial and ArmaOnly purposes.
|
||||||
|
|
||||||
|
Section 3 – License Conditions
|
||||||
|
|
||||||
|
Your exercise of the Licensed Rights is expressly made subject to the following conditions.
|
||||||
|
|
||||||
|
Attribution
|
||||||
|
|
||||||
|
If You Share the Licensed Material (including in modified form), You must:
|
||||||
|
retain the following if it is supplied by the Licensor with the Licensed Material:
|
||||||
|
identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
|
||||||
|
a copyright notice;
|
||||||
|
a notice that refers to this Public License;
|
||||||
|
a notice that refers to the disclaimer of warranties;
|
||||||
|
a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
|
||||||
|
indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
|
||||||
|
indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
|
||||||
|
You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
|
||||||
|
If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(a) to the extent reasonably practicable.
|
||||||
|
ShareAlike
|
||||||
|
|
||||||
|
In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply.
|
||||||
|
The Adapter’s License You apply must be this Public License, or an Arma Public Share Alike Compatible License.
|
||||||
|
You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material.
|
||||||
|
You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply.
|
||||||
|
|
||||||
|
Section 4 – Sui Generis Database Rights
|
||||||
|
|
||||||
|
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
|
||||||
|
|
||||||
|
for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial and ArmaOnly purposes only;
|
||||||
|
if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and
|
||||||
|
You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
|
||||||
|
Section 5 – Disclaimer of Warranties and Limitation of Liability
|
||||||
|
|
||||||
|
Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
|
||||||
|
To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.
|
||||||
|
The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
|
||||||
|
|
||||||
|
Section 6 – Term and Termination
|
||||||
|
|
||||||
|
This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
|
||||||
|
|
||||||
|
Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
|
||||||
|
automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
|
||||||
|
upon express reinstatement by the Licensor.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
|
||||||
|
For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
|
||||||
|
Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
|
||||||
|
|
||||||
|
Section 7 – Other Terms and Conditions
|
||||||
|
|
||||||
|
The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
|
||||||
|
Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
|
||||||
|
|
||||||
|
Section 8 – Interpretation
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
|
||||||
|
To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
|
||||||
|
No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
|
||||||
|
Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
|
||||||
|
|
||||||
|
Bohemia Interactive Notices
|
||||||
|
|
||||||
|
Bohemia Interactive a.s. is not a party to this License, and makes no warranty whatsoever in connection with the Licensed Material. Bohemia Interactive a.s. will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, Bohemia Interactive a.s. may elect to apply the Public License to material it publishes and in those instances it becomes the "Licensor".
|
||||||
|
Except for the limited purpose of indicating to the public that the Licensed Material is shared under this Public License, Bohemia Interactive a.s. does not authorize the use by either party of the trademarks "Arma", "Bohemia Interactive" or any related trademark or logo of Arma or Bohemia Interactive without the prior written consent of Bohemia Interactive a.s.
|
23
README.md
Normal file
23
README.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<p align="center">
|
||||||
|
<a href="https://gitea.innovativedevsolutions.org/IDSolutions/dragonfly/releases/latest" target="blank">
|
||||||
|
<img src="https://img.shields.io/gitea/v/release/IDSolutions/dragonfly?gitea_url=https%3A%2F%2Fgitea.innovativedevsolutions.org" alt="latest-release" /></a>
|
||||||
|
<a href="https://gitea.innovativedevsolutions.org/IDSolutions/dragonfly/issues" target="blank">
|
||||||
|
<img src="https://img.shields.io/gitea/issues/open/IDSolutions/dragonfly?gitea_url=https%3A%2F%2Fgitea.innovativedevsolutions.org" alt="open-issues" /></a>
|
||||||
|
<a href="https://gitea.innovativedevsolutions.org/IDSolutions/dragonfly/actions?workflow=build.yml" target="blank">
|
||||||
|
<img src="https://gitea.innovativedevsolutions.org/IDSolutions/dragonfly/actions/workflows/build.yml/badge.svg?branch=master" alt="build-status" /></a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
Welcome to **ArmaDragonflyClient**.
|
||||||
|
|
||||||
|
Experience next-level persistence in Arma 3 with our mod powered by C# .NET 8 and DragonflyDB. This ultra-fast in-memory data store offers unparalleled performance and scalability for your Arma 3 gameplay data management needs.
|
||||||
|
|
||||||
|
If something is broken, contact **J. Schmidt92** or open a new issue on **[Gitea](https://gitea.innovativedevsolutions.org/IDSolutions/dragonfly/issues)**.
|
||||||
|
|
||||||
|
</br>
|
||||||
|
|
||||||
|
**For more information, [read the Docs.](https://jschmidt92.github.io/ArmaDragonflyClient/#/)**
|
||||||
|
|
||||||
|
**For Roadmap, [visit the project page.](https://gitea.innovativedevsolutions.org/IDSolutions/dragonfly/projects)** _(WIP)_
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
* **_Creedcoder_** for his contributions, help, input and time
|
1
addons/db/$PBOPREFIX$
Normal file
1
addons/db/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
|||||||
|
z\dragonfly\addons\db
|
19
addons/db/CfgEventHandlers.hpp
Normal file
19
addons/db/CfgEventHandlers.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
class Extended_PreStart_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE(call COMPILE_FILE(XEH_preStart));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Extended_PreInit_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||||
|
serverInit = QUOTE(call COMPILE_FILE(XEH_preInit_server));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Extended_PostInit_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||||
|
clientInit = QUOTE(call COMPILE_FILE(XEH_postInit_client));
|
||||||
|
};
|
||||||
|
};
|
25
addons/db/XEH_PREP.hpp
Normal file
25
addons/db/XEH_PREP.hpp
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
PREP(addTask);
|
||||||
|
PREP(delete);
|
||||||
|
PREP(fetch);
|
||||||
|
PREP(get);
|
||||||
|
PREP(handler);
|
||||||
|
PREP(hashGet);
|
||||||
|
PREP(hashGetAll);
|
||||||
|
PREP(hashGetAllId);
|
||||||
|
PREP(hashGetId);
|
||||||
|
PREP(hashSet);
|
||||||
|
PREP(hashSetBulk);
|
||||||
|
PREP(hashSetId);
|
||||||
|
PREP(hashSetIdBulk);
|
||||||
|
PREP(init);
|
||||||
|
PREP(listAdd);
|
||||||
|
PREP(listGet);
|
||||||
|
PREP(listLoad);
|
||||||
|
PREP(listRemove);
|
||||||
|
PREP(listSet);
|
||||||
|
PREP(processQueue);
|
||||||
|
PREP(saveDB);
|
||||||
|
PREP(scheduler);
|
||||||
|
PREP(set);
|
||||||
|
PREP(setup);
|
||||||
|
PREP(test);
|
15
addons/db/XEH_postInit.sqf
Normal file
15
addons/db/XEH_postInit.sqf
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
GVAR(isProcessing) = false;
|
||||||
|
GVAR(fetchArray) = [];
|
||||||
|
GVAR(taskQueue) = [];
|
||||||
|
|
||||||
|
// addMissionEventHandler ["ExtensionCallback", {
|
||||||
|
// params ["_name", "_function", "_data"];
|
||||||
|
// diag_log _this;
|
||||||
|
// if (_name isEqualTo "ArmaDragonflyClient") then {
|
||||||
|
// parseSimpleArray _data call (missionNamespace getVariable [_function, {
|
||||||
|
// hint "Function does not exist!"
|
||||||
|
// }]);
|
||||||
|
// };
|
||||||
|
// }];
|
1
addons/db/XEH_postInit_client.sqf
Normal file
1
addons/db/XEH_postInit_client.sqf
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "script_component.hpp"
|
8
addons/db/XEH_preInit.sqf
Normal file
8
addons/db/XEH_preInit.sqf
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
ADDON = false;
|
||||||
|
|
||||||
|
PREP_RECOMPILE_START;
|
||||||
|
#include "XEH_PREP.hpp"
|
||||||
|
PREP_RECOMPILE_END;
|
||||||
|
|
||||||
|
ADDON = true;
|
1
addons/db/XEH_preInit_server.sqf
Normal file
1
addons/db/XEH_preInit_server.sqf
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "script_component.hpp"
|
2
addons/db/XEH_preStart.sqf
Normal file
2
addons/db/XEH_preStart.sqf
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
#include "XEH_PREP.hpp"
|
16
addons/db/config.cpp
Normal file
16
addons/db/config.cpp
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
class CfgPatches {
|
||||||
|
class ADDON {
|
||||||
|
name = COMPONENT_NAME;
|
||||||
|
units[] = {};
|
||||||
|
weapons[] = {};
|
||||||
|
requiredVersion = REQUIRED_VERSION;
|
||||||
|
requiredAddons[] = {"dragonfly_main"};
|
||||||
|
authors[] = {"J. Schmidt", "Creedcoder"};
|
||||||
|
author = "IDSolutions";
|
||||||
|
VERSION_CONFIG;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "CfgEventHandlers.hpp"
|
48
addons/db/functions/fnc_addTask.sqf
Normal file
48
addons/db/functions/fnc_addTask.sqf
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_addTask
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Add task to queue.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Type of task <STRING>
|
||||||
|
* 1: Name of stored key <STRING> (default: "")
|
||||||
|
* 2: Name of stored hash key field <STRING> (default: "")
|
||||||
|
* 3: Index of stored value in list <STRING> (default: -1)
|
||||||
|
* 4: Value to store in key [<ARRAY|STRING|NUMBER|BOOL>] (default: [])
|
||||||
|
* 5: Name of function to return data <STRING> (default: "")
|
||||||
|
* 6: Unscheduled environment <BOOL> (default: false)
|
||||||
|
* 7: NetID of target to return data from function <STRING> (default: "")
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* ["hgetall", "", "", -1, [], "dragonfly_db_fnc_test", false] call dragonfly_db_fnc_addTask (Server or Singleplayer Only)
|
||||||
|
* ["hgetallid", getPlayerUID player, "", -1, [], "dragonfly_db_fnc_test", false, netId player] remoteExecCall ["dragonfly_db_fnc_addTask", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_taskType", "", [""]], ["_key", "", [""]], ["_keyField", "", [""]], ["_index", -1, [0]], ["_value", [], [[]]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", "", [""]]];
|
||||||
|
|
||||||
|
private _task = [_taskType, _key, _keyField, _index, _value, _function, _call, _netId];
|
||||||
|
|
||||||
|
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_addTask' Added Task '%1' to Queue", _task];
|
||||||
|
|
||||||
|
GVAR(taskQueue) pushBack _task;
|
||||||
|
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_addTask' Queue: %1", GVAR(taskQueue)];
|
||||||
|
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_addTask' Queue Size: %1", count GVAR(taskQueue)];
|
||||||
|
|
||||||
|
if !(GVAR(isProcessing)) then { [] spawn FUNC(processQueue); };
|
35
addons/db/functions/fnc_delete.sqf
Normal file
35
addons/db/functions/fnc_delete.sqf
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_delete
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Delete stored key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name of stored key <STRING> (default: "")
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* [getPlayerUID player] call dragonfly_db_fnc_delete (Server or Singleplayer Only)
|
||||||
|
* [getPlayerUID player] remoteExecCall ["dragonfly_db_fnc_delete", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_key", "", [""]]];
|
||||||
|
|
||||||
|
if (_key == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_delete' Invalid Input for Key '%1'", _key]; };
|
||||||
|
|
||||||
|
"ArmaDragonflyClient" callExtension ["del", [_key]];
|
66
addons/db/functions/fnc_fetch.sqf
Normal file
66
addons/db/functions/fnc_fetch.sqf
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
@file Title: ArmaDragonflyClient Framework by Creedcoder, J.Schmidt
|
||||||
|
@file Version: 0.1
|
||||||
|
@file Name: fnc_fetch.sqf
|
||||||
|
@file Author: Creedcoder, J.Schmidt
|
||||||
|
@file edit: 03.25.2024
|
||||||
|
Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
|
||||||
|
Do not edit without permission!
|
||||||
|
|
||||||
|
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlikes 4.0 International License.
|
||||||
|
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to Creative Commons,
|
||||||
|
444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
|
||||||
|
|
||||||
|
Fetch from DB:
|
||||||
|
dragonfly_db_fetch_array
|
||||||
|
|
||||||
|
["uniqueID", "function", "index", "indextotal", "datachunk", "call", "netId"]
|
||||||
|
*/
|
||||||
|
|
||||||
|
diag_log _this;
|
||||||
|
|
||||||
|
params ["_uniqueID", "_function", "_index", "_total", "_datachunk", "_call", "_netId"];
|
||||||
|
private _dataString = "";
|
||||||
|
private _index_array = [];
|
||||||
|
private _count_total = -1;
|
||||||
|
|
||||||
|
// _uniqueID = parseNumber _uniqueID;
|
||||||
|
// _function
|
||||||
|
// _index = parseNumber _index;
|
||||||
|
// _total = parseNumber _total;
|
||||||
|
// _datachunk
|
||||||
|
// _call
|
||||||
|
// _netId
|
||||||
|
|
||||||
|
dragonfly_db_fetch_array pushBackUnique [_uniqueID, _function, _index, _total, _datachunk, _call, _netId];
|
||||||
|
|
||||||
|
_count_total = {
|
||||||
|
if (_uniqueID == _x select 0) then {
|
||||||
|
_index_array pushBackUnique [_x select 2, _x select 4];
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
} count dragonfly_db_fetch_array;
|
||||||
|
|
||||||
|
if (_count_total == _total) then {
|
||||||
|
_index_array sort true;
|
||||||
|
for "_i" from 0 to (_total - 1) do {
|
||||||
|
_dataString = _dataString + ((_index_array select _i) select 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
diag_log _dataString;
|
||||||
|
|
||||||
|
// Old direct execution
|
||||||
|
// (parseSimpleArray _dataString) call (missionNamespace getVariable [_function, {
|
||||||
|
// hint "Function does not exist!";
|
||||||
|
// }]);
|
||||||
|
|
||||||
|
[_uniqueID, _function, _call, (parseSimpleArray _dataString), _netId] call FUNC(handler);
|
||||||
|
|
||||||
|
// Cleanup
|
||||||
|
dragonfly_db_fetch_array = dragonfly_db_fetch_array select {!((_x select 0) in [_uniqueID])};
|
||||||
|
};
|
49
addons/db/functions/fnc_get.sqf
Normal file
49
addons/db/functions/fnc_get.sqf
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_get
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Get value of stored key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name of stored key <STRING> (default: "")
|
||||||
|
* 1: Name of function to return data <STRING> (default: "")
|
||||||
|
* 2: Unscheduled environment <BOOL> (default: false)
|
||||||
|
* 3: NetID of target to return data from function <STRING> (default: "")
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* [getPlayerUID player, "dragonfly_db_fnc_test"] call dragonfly_db_fnc_get (Server or Singleplayer Only)
|
||||||
|
* [getPlayerUID player, "dragonfly_db_fnc_test", false, netId player] remoteExecCall ["dragonfly_db_fnc_get", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_key", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", nil, [""]]];
|
||||||
|
|
||||||
|
if (_key == "" || _function == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_get' Invalid Input for Key '%1' or Function '%2'", _key, _function]; };
|
||||||
|
|
||||||
|
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
|
||||||
|
if (_call) then {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["get", [_key, _function, _netId, _call]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
} else {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["get", [_key, _function, _netId]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["get", [_key, _function]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
};
|
47
addons/db/functions/fnc_handler.sqf
Normal file
47
addons/db/functions/fnc_handler.sqf
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_handler
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Handle data from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: UniqueID for data chunk <STRING> (default: "")
|
||||||
|
* 1: Name of function to return data <STRING> (default: "")
|
||||||
|
* 2: Unscheduled environment <BOOL> (default: false)
|
||||||
|
* 3: Data from key [<ARRAY|STRING|NUMBER|BOOL>] (default: [])
|
||||||
|
* 4: NetID of target to return data to from function <STRING> (default: nil)
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* [uniqueID, function, call, data, object] <ARRAY>
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* ["0123456789", "dragonfly_db_fnc_test", false, ["Hello World!"]] call dragonfly_db_fnc_handler (Server or Singleplayer Only)
|
||||||
|
* ["0123456789", "dragonfly_db_fnc_test", false, ["Hello World!"], netId player] remoteExecCall ["dragonfly_db_fnc_handler", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_uniqueID", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_data", [], [[]]], ["_netId", nil, [""]]];
|
||||||
|
|
||||||
|
if (_function == "" || count _data == 0) exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_handler' Invalid Input for Function '%1' or Data '%2'", _function, _data]; };
|
||||||
|
|
||||||
|
private _func = call compile format ["%1", _function];
|
||||||
|
|
||||||
|
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
|
||||||
|
private _target = objectFromNetId _netId;
|
||||||
|
|
||||||
|
if (_call) then { _data remoteExecCall [_function, _target, false]; } else { _data remoteExec [_function, _target, false]; };
|
||||||
|
} else {
|
||||||
|
if (_call) then { _data call _func; } else { _data spawn _func; };
|
||||||
|
};
|
49
addons/db/functions/fnc_hashGet.sqf
Normal file
49
addons/db/functions/fnc_hashGet.sqf
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_hashGet
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Get value of field in hash stored in key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name of stored field in hash <STRING> (default: "")
|
||||||
|
* 1: Name of function to return data <STRING> (default: "")
|
||||||
|
* 2: Unscheduled environment <BOOL> (default: false)
|
||||||
|
* 3: NetID of target to return data from function <STRING> (default: nil)
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* ["loadout", "dragonfly_db_fnc_test", false] call dragonfly_db_fnc_hashGet (Server or Singleplayer Only)
|
||||||
|
* ["loadout", "dragonfly_db_fnc_test", false, netId player] remoteExecCall ["dragonfly_db_fnc_hashGet", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_keyField", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", nil, [""]]];
|
||||||
|
|
||||||
|
if (_keyField == "" || _function == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGet' Invalid Input for KeyField '%1' or Function '%2'", _keyField, _function]; };
|
||||||
|
|
||||||
|
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
|
||||||
|
if (_call) then {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["hget", [_keyField, _function, _netId, _call]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
} else {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["hget", [_keyField, _function, _netId]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["hget", [_keyField, _function]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
};
|
48
addons/db/functions/fnc_hashGetAll.sqf
Normal file
48
addons/db/functions/fnc_hashGetAll.sqf
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_hashGetAll
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Get all fields and values of hash stored in key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name of function to return data <STRING> (default: "")
|
||||||
|
* 1: Unscheduled environment <BOOL> (default: false)
|
||||||
|
* 2: NetID of target to return data from function <STRING> (default: nil)
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* ["dragonfly_db_fnc_test", false] call dragonfly_db_fnc_hashGetAll (Server or Singleplayer Only)
|
||||||
|
* ["dragonfly_db_fnc_test", false, netId player] remoteExecCall ["dragonfly_db_fnc_hashGetAll", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_function", "", [""]], ["_call", false, [false]], ["_netId", nil, [""]]];
|
||||||
|
|
||||||
|
if (_function isEqualTo "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetAll' Invalid Input for Function '%1'", _function]; };
|
||||||
|
|
||||||
|
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
|
||||||
|
if (_call) then {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["hgetall", [_function, _netId, _call]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
} else {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["hgetall", [_function, _netId]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["hgetall", [_function]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
};
|
49
addons/db/functions/fnc_hashGetAllId.sqf
Normal file
49
addons/db/functions/fnc_hashGetAllId.sqf
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_hashGetAllId
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Get all fields and values of hash stored in key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name of stored key with hash <STRING> (default: "")
|
||||||
|
* 1: Name of function to return data <STRING> (default: "")
|
||||||
|
* 2: Unscheduled environment <BOOL> (default: false)
|
||||||
|
* 3: NetID of target to return data from function <STRING> (default: nil)
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* [getPlayerUID player, "dragonfly_db_fnc_test", false] call dragonfly_db_fnc_hashGetAllId (Server or Singleplayer Only)
|
||||||
|
* [getPlayerUID player, "dragonfly_db_fnc_test", false, netId player] remoteExecCall ["dragonfly_db_fnc_hashGetAllId", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_key", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", nil, [""]]];
|
||||||
|
|
||||||
|
if (_key == "" || _function == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetAllId' Invalid Input for Key '%1' or Function '%2'", _key, _function]; };
|
||||||
|
|
||||||
|
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
|
||||||
|
if (_call) then {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["hgetallid", [_key, _function, _netId, _call]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
} else {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["hgetallid", [_key, _function, _netId]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["hgetallid", [_key, _function]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
};
|
50
addons/db/functions/fnc_hashGetId.sqf
Normal file
50
addons/db/functions/fnc_hashGetId.sqf
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_hashGetId
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Get value of field in hash stored at key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name of stored key with hash <STRING> (default: "")
|
||||||
|
* 1: Name of stored field in hash <STRING> (default: "")
|
||||||
|
* 2: Name of function to return data <STRING> (default: "")
|
||||||
|
* 3: Unscheduled environment <BOOL> (default: false)
|
||||||
|
* 4: NetID of target to return data from function <STRING> (default: nil)
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* [getPlayerUID player, "loadout", "dragonfly_db_fnc_test", false] call dragonfly_db_fnc_hashGetId (Server or Singleplayer Only)
|
||||||
|
* [getPlayerUID player, "loadout", "dragonfly_db_fnc_test", false, netId player] remoteExecCall ["dragonfly_db_fnc_hashGetId", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_key", "", [""]], ["_keyField", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", nil, [""]]];
|
||||||
|
|
||||||
|
if (_key == "" || _keyField == "" || _function == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetId' Invalid Input for Key '%1', KeyField '%2' or Function '%3'", _key, _keyField, _function]; };
|
||||||
|
|
||||||
|
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
|
||||||
|
if (_call) then {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["hgetid", [_key, _keyField, _function, _netId, _call]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
} else {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["hgetid", [_key, _keyField, _function, _netId]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["hgetid", [_key, _keyField, _function]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
};
|
36
addons/db/functions/fnc_hashSet.sqf
Normal file
36
addons/db/functions/fnc_hashSet.sqf
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_hashSet
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Set value of field in hash stored at key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name of stored field in hash <STRING> (default: "")
|
||||||
|
* 1: Value to store in hash field [<ARRAY|STRING|NUMBER|BOOL>] (default: [])
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* ["loadout", [getUnitLoadout player]] call dragonfly_db_fnc_hashSet (Server or Singleplayer Only)
|
||||||
|
* ["loadout", [getUnitLoadout player]] remoteExecCall ["dragonfly_db_fnc_hashSet", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_keyField", "", [""]], ["_data", [], [[]]]];
|
||||||
|
|
||||||
|
if (_keyField == "" || count _data == 0) exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSet' Invalid Input for KeyField '%1' or Data '%2'", _keyField, _data]; };
|
||||||
|
|
||||||
|
"ArmaDragonflyClient" callExtension ["hset", [_keyField, _data]];
|
35
addons/db/functions/fnc_hashSetBulk.sqf
Normal file
35
addons/db/functions/fnc_hashSetBulk.sqf
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_hashSetBulk
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Set fields and values in hash stored at key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Fields and Values to store in hash [<ARRAY|STRING|NUMBER|BOOL>] (default: [])
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* ["loadout", [getUnitLoadout player], "position", [getPosASLVisual player]] call dragonfly_db_fnc_hashSetBulk (Server or Singleplayer Only)
|
||||||
|
* ["loadout", [getUnitLoadout player], "position", [getPosASLVisual player]] remoteExecCall ["dragonfly_db_fnc_hashSetBulk", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_data", [], [[]]]];
|
||||||
|
|
||||||
|
if (count _data == 0) exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSetBulk' Invalid Input for Data '%1'", _data]; };
|
||||||
|
|
||||||
|
"ArmaDragonflyClient" callExtension ["hset", _data];
|
37
addons/db/functions/fnc_hashSetId.sqf
Normal file
37
addons/db/functions/fnc_hashSetId.sqf
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_hashSetId
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Set value of field in hash stored at key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name of stored key with hash <STRING> (default: "")
|
||||||
|
* 1: Name of stored hash key field <STRING> (default: "")
|
||||||
|
* 2: Value to store in hash field [<ARRAY|STRING|NUMBER|BOOL>] (default: [])
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* [getPlayerUID player, "loadout", [getUnitLoadout player]] call dragonfly_db_fnc_hashSetId (Server or Singleplayer Only)
|
||||||
|
* [getPlayerUID player, "loadout", [getUnitLoadout player]] remoteExecCall ["dragonfly_db_fnc_hashSetId", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_key", "", [""]], ["_keyField", "", [""]], ["_data", [], [[]]]];
|
||||||
|
|
||||||
|
if (_key == "" || _keyField == "" || count _data == 0) exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSetId' Invalid Input for Key '%1', KeyField '%2' or Data '%3'", _key, _keyField, _data]; };
|
||||||
|
|
||||||
|
"ArmaDragonflyClient" callExtension ["hsetid", [_key, _keyField, _data]];
|
35
addons/db/functions/fnc_hashSetIdBulk.sqf
Normal file
35
addons/db/functions/fnc_hashSetIdBulk.sqf
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_hashSetIdBulk
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Set fields and values in hash stored at key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Fields and Values to store in hash [<ARRAY|STRING|NUMBER|BOOL>] (default: [])
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* [getPlayerUID player, "loadout", [getUnitLoadout player], "position", [getPosASLVisual player]] call dragonfly_db_fnc_hashSetIdBulk (Server or Singleplayer Only)
|
||||||
|
* [getPlayerUID player, "loadout", [getUnitLoadout player], "position", [getPosASLVisual player]] remoteExecCall ["dragonfly_db_fnc_hashSetIdBulk", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_data", [], [[]]]];
|
||||||
|
|
||||||
|
if (count _data == 0) exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSetIdBulk' Invalid Input for Data '%1'", _data]; };
|
||||||
|
|
||||||
|
"ArmaDragonflyClient" callExtension ["hsetid", _data];
|
37
addons/db/functions/fnc_init.sqf
Normal file
37
addons/db/functions/fnc_init.sqf
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_init
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Initial Extension settings.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
dragonfly_db_buffer = 10240;
|
||||||
|
|
||||||
|
private _dll = "ArmaDragonflyClient" callExtension ["version", []];
|
||||||
|
|
||||||
|
diag_log text (format ["ArmaDragonflyClient: DLL Version %1 found", _dll]);
|
||||||
|
diag_log text "ArmaDragonflyClient: Functions loaded and Initializtion completed!";
|
||||||
|
diag_log text (format ["ArmaDragonflyClient: Buffer size set to %1 Bytes", dragonfly_db_buffer]);
|
||||||
|
diag_log text "ArmaDragonflyClient: Ready for use!";
|
36
addons/db/functions/fnc_listAdd.sqf
Normal file
36
addons/db/functions/fnc_listAdd.sqf
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_listAdd
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Add element to list stored at key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name of stored key <STRING> (default: "")
|
||||||
|
* 1: Value to insert into key [<ARRAY|STRING|NUMBER|BOOL>] (default: [])
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* ["events", ["Server state saved to DB 071620241600"]] call dragonfly_db_fnc_listAdd (Server or Singleplayer Only)
|
||||||
|
* ["events", ["Server state saved to DB 071620241600"]] remoteExecCall ["dragonfly_db_fnc_listAdd", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_key", "", [""]], ["_data", [], [[]]]];
|
||||||
|
|
||||||
|
if (_key == "" || count _data == 0) exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listAdd' Invalid Input for Key '%1' or Data '%2'", _key, _data]; };
|
||||||
|
|
||||||
|
"ArmaDragonflyClient" callExtension ["listadd", [_key, _data]];
|
50
addons/db/functions/fnc_listGet.sqf
Normal file
50
addons/db/functions/fnc_listGet.sqf
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_listGet
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Get element of list stored at key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name of stored key <STRING> (default: "")
|
||||||
|
* 1: Index of stored value in list <NUMBER> (default: -1)
|
||||||
|
* 2: Name of function to return data <STRING> (default: "")
|
||||||
|
* 3: Unscheduled environment <BOOL> (default: false)
|
||||||
|
* 4: NetID of target to return data from function <STRING> (default: nil)
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* ["events", 0, "dragonfly_db_fnc_test", false] call dragonfly_db_fnc_listGet (Server or Singleplayer Only)
|
||||||
|
* ["events", 0, "dragonfly_db_fnc_test", false, netId player] remoteExecCall ["dragonfly_db_fnc_listGet", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_key", "", [""]], ["_index", -1, [0]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", nil, [""]]];
|
||||||
|
|
||||||
|
if (_key == "" || _function == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listGet' Invalid Input for Key '%1' or Function '%2'", _key, _function]; };
|
||||||
|
|
||||||
|
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
|
||||||
|
if (_call) then {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["listidx", [_key, _index, _function, _netId, _call]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
} else {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["listidx", [_key, _index, _function, _netId]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["listidx", [_key, _index, _function]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
};
|
49
addons/db/functions/fnc_listLoad.sqf
Normal file
49
addons/db/functions/fnc_listLoad.sqf
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_listLoad
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Get all elements of list stored at key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name of stored key <STRING> (default: "")
|
||||||
|
* 1: Name of function to return data <STRING> (default: "")
|
||||||
|
* 2: Unscheduled environment <BOOL> (default: false)
|
||||||
|
* 3: NetID of target to return data from function <STRING> (default: nil)
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* ["events", "dragonfly_db_fnc_test", false] call dragonfly_db_fnc_listLoad (Server or Singleplayer Only)
|
||||||
|
* ["events", "dragonfly_db_fnc_test", false, netId player] remoteExecCall ["dragonfly_db_fnc_listLoad", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_key", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", nil, [""]]];
|
||||||
|
|
||||||
|
if (_key == "" || _function == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listLoad' Invalid Input for Key '%1' or Function '%2'", _key, _function]; };
|
||||||
|
|
||||||
|
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
|
||||||
|
if (_call) then {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["listrng", [_key, 0, -1, _function, _netId, _call]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
} else {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["listrng", [_key, 0, -1, _function, _netId]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
_return = "ArmaDragonflyClient" callExtension ["listrng", [_key, 0, -1, _function]];
|
||||||
|
[(_return select 0)] call FUNC(scheduler);
|
||||||
|
};
|
36
addons/db/functions/fnc_listRemove.sqf
Normal file
36
addons/db/functions/fnc_listRemove.sqf
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_listRemove
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Remove element of list stored at key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name of stored key <STRING> (default: "")
|
||||||
|
* 1: Index of stored value in list <NUMBER> (default: -1)
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* ["events", 0] call dragonfly_db_fnc_listRemove (Server or Singleplayer Only)
|
||||||
|
* ["events", 0] remoteExecCall ["dragonfly_db_fnc_listRemove", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_key", "", [""]], ["_index", -1, [0]]];
|
||||||
|
|
||||||
|
if (_key == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listRemove' Invalid Input for Key '%1'", _key]; };
|
||||||
|
|
||||||
|
"ArmaDragonflyClient" callExtension ["listrem", [_key, _index]];
|
37
addons/db/functions/fnc_listSet.sqf
Normal file
37
addons/db/functions/fnc_listSet.sqf
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_listSet
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Set element of list stored at key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name of stored key <STRING> (default: "")
|
||||||
|
* 1: Index of stored value in list <NUMBER> (default: -1)
|
||||||
|
* 2: Value to set for index [<ARRAY|STRING|NUMBER|BOOL>] (default: [])
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* ["events", 0, ["Hello World!"]] call dragonfly_db_fnc_listSet (Server or Singleplayer Only)
|
||||||
|
* ["events", 0, ["Hello World!"]] remoteExecCall ["dragonfly_db_fnc_listSet", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_key", "", [""]], ["_index", -1, [0]], ["_data", [], [[]]]];
|
||||||
|
|
||||||
|
if (_key == "" || count _data == 0) exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listSet' Invalid Input for Key '%1' or Data '%2'", _key, _data]; };
|
||||||
|
|
||||||
|
"ArmaDragonflyClient" callExtension ["listset", [_key, _index, _data]];
|
3
addons/db/functions/fnc_printAddonName.sqf
Normal file
3
addons/db/functions/fnc_printAddonName.sqf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
systemChat format ["Thank you for using the %1", 'ADDON'];
|
69
addons/db/functions/fnc_processQueue.sqf
Normal file
69
addons/db/functions/fnc_processQueue.sqf
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_processQueue
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Process queue of tasks.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* [] spawn dragonfly_db_fnc_processQueue (Server or Singleplayer Only)
|
||||||
|
* [] remoteExec ["dragonfly_db_fnc_processQueue", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
GVAR(isProcessing) = true;
|
||||||
|
|
||||||
|
while { count GVAR(taskQueue) > 0} do {
|
||||||
|
private _task = GVAR(taskQueue) deleteAt 0;
|
||||||
|
private _taskType = _task select 0;
|
||||||
|
private _key = _task select 1;
|
||||||
|
private _keyField = _task select 2;
|
||||||
|
private _index = _task select 3;
|
||||||
|
private _value = _task select 4;
|
||||||
|
private _function = _task select 5;
|
||||||
|
private _call = _task select 6;
|
||||||
|
private _netId = _task select 7;
|
||||||
|
|
||||||
|
diag_log text format ["Initializing Task: %1", _task];
|
||||||
|
|
||||||
|
switch (_taskType) do {
|
||||||
|
case "get": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _function, _call, _netId] call FUNC(get); };
|
||||||
|
case "set": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _value] call FUNC(set); };
|
||||||
|
case "del": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key] call FUNC(delete); };
|
||||||
|
case "hget": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_keyField, _function, _call, _netId] call FUNC(hashGet); };
|
||||||
|
case "hgetid": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _keyField, _function, _call, _netId] call FUNC(hashGetId); };
|
||||||
|
case "hgetall": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_function, _call, _netId] call FUNC(hashGetAll); };
|
||||||
|
case "hgetallid": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _function, _call, _netId] call FUNC(hashGetAllId); };
|
||||||
|
case "hset": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_keyField, _value] call FUNC(hashSet); };
|
||||||
|
case "hsetbulk": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_value] call FUNC(hashSetBulk); };
|
||||||
|
case "hsetid": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _keyField, _value] call FUNC(hashSetId); };
|
||||||
|
case "hsetidbulk": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_value] call FUNC(hashSetIdBulk); };
|
||||||
|
case "listadd": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _value] call FUNC(listAdd); };
|
||||||
|
case "listidx": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _index, _function, _call, _netId] call FUNC(listGet); };
|
||||||
|
case "listrng": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _function, _call, _netId] call FUNC(listLoad); };
|
||||||
|
case "listrem": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _index] call FUNC(listRemove); };
|
||||||
|
case "listset": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _index, _value] call FUNC(listSet); };
|
||||||
|
};
|
||||||
|
|
||||||
|
sleep 1;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
GVAR(isProcessing) = false;
|
31
addons/db/functions/fnc_saveDB.sqf
Normal file
31
addons/db/functions/fnc_saveDB.sqf
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_saveDB
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Save DB to disc.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* [] call dragonfly_db_fnc_saveDB (Server or Singleplayer Only)
|
||||||
|
* [] remoteExecCall ["dragonfly_db_fnc_saveDB", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
"ArmaDragonflyClient" callExtension ["savedb", []];
|
48
addons/db/functions/fnc_scheduler.sqf
Normal file
48
addons/db/functions/fnc_scheduler.sqf
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_scheduler
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Scheduled Environment for extension.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Task ID from extension <STRING> (default: "")
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* ["071620241600_get"] call dragonfly_db_fnc_scheduler (Server or Singleplayer Only)
|
||||||
|
* ["071620241600_get"] remoteExecCall ["dragonfly_db_fnc_scheduler", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
private _params = call compile format ["%1", (_this select 0)];
|
||||||
|
private _taskID = _params select 0;
|
||||||
|
private _function = _params select 1;
|
||||||
|
private _array = _taskID splitString "_";
|
||||||
|
private _id = _array select 0;
|
||||||
|
private _taskType = _array select 1;
|
||||||
|
private _addTaskIDToMap = {
|
||||||
|
params ["_taskType", "_taskID"];
|
||||||
|
|
||||||
|
private _varName = format ["dragonfly_db_%1_map", _taskType];
|
||||||
|
private _taskMap = missionNamespace getVariable [_varName, createHashMap];
|
||||||
|
_taskMap set [_taskID, _function];
|
||||||
|
|
||||||
|
missionNamespace setVariable [_varName, _taskMap];
|
||||||
|
_myHashMap = missionNamespace getVariable [_varName, createHashMap];
|
||||||
|
};
|
||||||
|
|
||||||
|
[_taskType, _taskID] call _addTaskIDToMap;
|
36
addons/db/functions/fnc_set.sqf
Normal file
36
addons/db/functions/fnc_set.sqf
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_set
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Set value of stored key from DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name of stored key <STRING> (default: "")
|
||||||
|
* 1: Value to store in key [<ARRAY|STRING|NUMBER|BOOL>] (default: [])
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* ["test", ["Hello World!"]] call dragonfly_db_fnc_set (Server or Singleplayer Only)
|
||||||
|
* ["test", ["Hello World!"]] remoteExecCall ["dragonfly_db_fnc_set", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_key", "", [""]], ["_data", "", [[]]]];
|
||||||
|
|
||||||
|
if (_key == "" || _data == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_set' Invalid Input for Key '%1' or Data '%2'", _key, _data]; };
|
||||||
|
|
||||||
|
"ArmaDragonflyClient" callExtension ["set", [_key, _data]];
|
35
addons/db/functions/fnc_setup.sqf
Normal file
35
addons/db/functions/fnc_setup.sqf
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_setup
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Setup Extension to communicate with DB.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name of host <STRING> (default: "localhost")
|
||||||
|
* 1: Port of host <NUMBER> (default: 6379)
|
||||||
|
* 2: Password of host <STRING> (default: "xyz123")
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* N/A
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* ["localhost", 6379, "xyz123"] call dragonfly_db_fnc_setup (Server or Singleplayer Only)
|
||||||
|
* ["localhost", 6379, "xyz123"] remoteExecCall ["dragonfly_db_fnc_setup", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
params [["_host", "localhost", [""]], ["_port", 6379, [0]], ["_password", "", [""]]];
|
||||||
|
|
||||||
|
"ArmaDragonflyClient" callExtension ["setup", [_host, _port, _password]];
|
34
addons/db/functions/fnc_test.sqf
Normal file
34
addons/db/functions/fnc_test.sqf
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: dragonfly_db_fnc_test
|
||||||
|
* Author: Creedcoder, J.Schmidt
|
||||||
|
* Edit: 07.15.2024
|
||||||
|
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
||||||
|
*
|
||||||
|
* Do not edit without permission!
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
|
||||||
|
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
|
||||||
|
* PO Box 1866, Mountain View, CA 94042
|
||||||
|
*
|
||||||
|
* [Description]
|
||||||
|
* Test function.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Value <ARRAY|STRING|NUMBER|BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* <ARRAY|STRING|NUMBER|BOOL> Value
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
* ["Hello World!"] spawn dragonfly_db_fnc_test (Server or Singleplayer Only)
|
||||||
|
* ["Hello World!"] remoteExec ["dragonfly_db_fnc_test", 2, false] (Multiplayer Only)
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
|
||||||
|
_res = _this;
|
||||||
|
dragonfly_db_test = _res;
|
||||||
|
|
||||||
|
hint format ["%1", _res];
|
1
addons/db/functions/script_component.hpp
Normal file
1
addons/db/functions/script_component.hpp
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "..\script_component.hpp"
|
16
addons/db/script_component.hpp
Normal file
16
addons/db/script_component.hpp
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#define COMPONENT db
|
||||||
|
#define COMPONENT_BEAUTIFIED DB
|
||||||
|
#include "..\main\script_mod.hpp"
|
||||||
|
|
||||||
|
// #define DEBUG_MODE_FULL
|
||||||
|
// #define DISABLE_COMPILE_CACHE
|
||||||
|
|
||||||
|
#ifdef DEBUG_ENABLED_DB
|
||||||
|
#define DEBUG_MODE_FULL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG_SETTINGS_DB
|
||||||
|
#define DEBUG_SETTINGS DEBUG_SETTINGS_DB
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "..\main\script_macros.hpp"
|
1
addons/main/$PBOPREFIX$
Normal file
1
addons/main/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
|||||||
|
z\dragonfly\addons\main
|
14
addons/main/CfgMods.hpp
Normal file
14
addons/main/CfgMods.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
class CfgMods {
|
||||||
|
class PREFIX {
|
||||||
|
dir = "@ArmaDragonflyClient";
|
||||||
|
name = "ArmaDragonflyClient";
|
||||||
|
author = "IDSolutions";
|
||||||
|
picture = "title_co.paa";
|
||||||
|
hideName = "false";
|
||||||
|
hidePicture = "false";
|
||||||
|
action = "https://innovativedevsolutions.org/";
|
||||||
|
actionName = "Website";
|
||||||
|
description = "Innovative Dev Solutions";
|
||||||
|
dlcColor[] = {1, 0.0, 0.86, 1};
|
||||||
|
};
|
||||||
|
};
|
16
addons/main/config.cpp
Normal file
16
addons/main/config.cpp
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
class CfgPatches {
|
||||||
|
class ADDON {
|
||||||
|
name = COMPONENT_NAME;
|
||||||
|
units[] = {};
|
||||||
|
weapons[] = {};
|
||||||
|
requiredVersion = REQUIRED_VERSION;
|
||||||
|
requiredAddons[] = {};
|
||||||
|
authors[] = {"Jacob Schmidt", "Creedcoder"};
|
||||||
|
author = "ADC Team";
|
||||||
|
VERSION_CONFIG;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "CfgMods.hpp"
|
15
addons/main/script_component.hpp
Normal file
15
addons/main/script_component.hpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#define COMPONENT main
|
||||||
|
#include "\z\dragonfly\addons\main\script_mod.hpp"
|
||||||
|
|
||||||
|
// #define DEBUG_MODE_FULL
|
||||||
|
// #define DISABLE_COMPILE_CACHE
|
||||||
|
|
||||||
|
#ifdef DEBUG_ENABLED_MAIN
|
||||||
|
#define DEBUG_MODE_FULL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG_SETTINGS_MAIN
|
||||||
|
#define DEBUG_SETTINGS DEBUG_SETTINGS_MAIN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "\z\dragonfly\addons\main\script_macros.hpp"
|
13
addons/main/script_macros.hpp
Normal file
13
addons/main/script_macros.hpp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#include "\z\ace\addons\main\script_macros.hpp"
|
||||||
|
|
||||||
|
#define AFUNC(var1,var2) TRIPLES(DOUBLES(ace,var1),fnc,var2)
|
||||||
|
#define BFUNC(var1) TRIPLES(BIS,fnc,var1)
|
||||||
|
#define CFUNC(var1) TRIPLES(CBA,fnc,var1)
|
||||||
|
|
||||||
|
#ifdef DISABLE_COMPILE_CACHE
|
||||||
|
#undef PREP
|
||||||
|
#define PREP(fncName) DFUNC(fncName) = compile preprocessFileLineNumbers QPATHTOF(functions\DOUBLES(fnc,fncName).sqf)
|
||||||
|
#else
|
||||||
|
#undef PREP
|
||||||
|
#define PREP(fncName) [QPATHTOF(functions\DOUBLES(fnc,fncName).sqf), QFUNC(fncName)] call CBA_fnc_compileFunction
|
||||||
|
#endif
|
15
addons/main/script_mod.hpp
Normal file
15
addons/main/script_mod.hpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#define MAINPREFIX z
|
||||||
|
#define PREFIX dragonfly
|
||||||
|
|
||||||
|
#include "script_version.hpp"
|
||||||
|
|
||||||
|
#define VERSION MAJOR.MINOR
|
||||||
|
#define VERSION_AR MAJOR,MINOR,PATCH,BUILD
|
||||||
|
|
||||||
|
#define REQUIRED_VERSION 2.12
|
||||||
|
|
||||||
|
#ifdef COMPONENT_BEAUTIFIED
|
||||||
|
#define COMPONENT_NAME QUOTE(DRAGONFLY - COMPONENT_BEAUTIFIED)
|
||||||
|
#else
|
||||||
|
#define COMPONENT_NAME QUOTE(DRAGONFLY - COMPONENT)
|
||||||
|
#endif
|
4
addons/main/script_version.hpp
Normal file
4
addons/main/script_version.hpp
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#define MAJOR 1
|
||||||
|
#define MINOR 0
|
||||||
|
#define PATCH 0
|
||||||
|
#define BUILD 0
|
8
config.xml
Normal file
8
config.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ArmaDragonflyClient>
|
||||||
|
<Host>127.0.0.1</Host>
|
||||||
|
<Port>6379</Port>
|
||||||
|
<Password>xyz123</Password>
|
||||||
|
<Context>false</Context>
|
||||||
|
<Debug>false</Debug>
|
||||||
|
</ArmaDragonflyClient>
|
0
docs/.nojekyll
Normal file
0
docs/.nojekyll
Normal file
31
docs/README.md
Normal file
31
docs/README.md
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<p align="center">
|
||||||
|
<!-- <img src="https://raw.githubusercontent.com/jschmidt92/ArmaDragonflyClient/master/images/logo.png"> -->
|
||||||
|
<a href="https://github.com/jschmidt92/ArmaDragonflyClient/releases/latest">
|
||||||
|
<img src="https://img.shields.io/github/v/release/jschmidt92/ArmaDragonflyClient?label=latest%20release" alt="latest-release">
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/jschmidt92/ArmaDragonflyClient/issues">
|
||||||
|
<img src="https://img.shields.io/github/issues/jschmidt92/ArmaDragonflyClient" alt="open-issues">
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/jschmidt92/ArmaDragonflyClient/actions/workflows/build.yml">
|
||||||
|
<img src="https://img.shields.io/github/actions/workflow/status/jschmidt92/ArmaDragonflyClient/build.yml?branch=master" alt="build-status">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
Welcome to **ArmaDragonflyClient**.
|
||||||
|
|
||||||
|
This addon was designed for the Arma 3 Community.\
|
||||||
|
If something is broken, contact **J. Schmidt92** or open a new issue on **[GitHub](https://github.com/jschmidt92/ArmaDragonflyClient/issues)**.
|
||||||
|
|
||||||
|
Feel free to check out the **[Roadmap](https://github.com/users/jschmidt92/projects/7)**. _(WIP)_
|
||||||
|
|
||||||
|
Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved\
|
||||||
|
Do not edit without permission!
|
||||||
|
|
||||||
|
> This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.\
|
||||||
|
To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,\
|
||||||
|
PO Box 1866, Mountain View, CA 94042
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
|
||||||
|
- **_Creedcoder_** for his contributions, help, input and time
|
||||||
|

|
95
docs/_media/logo.svg
Normal file
95
docs/_media/logo.svg
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
<svg width="428" height="338" viewBox="0 0 428 338" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M214 280C280.826 280 335 248.884 335 210.5C335 172.116 280.826 141 214 141C147.174 141 93 172.116 93 210.5C93 248.884 147.174 280 214 280Z" fill="#BB4EEF" fill-opacity="0.15"/>
|
||||||
|
<path d="M334.5 210.5C334.5 229.436 321.133 246.676 299.311 259.21C277.503 271.736 247.342 279.5 214 279.5C180.658 279.5 150.497 271.736 128.689 259.21C106.867 246.676 93.5 229.436 93.5 210.5C93.5 191.564 106.867 174.324 128.689 161.79C150.497 149.264 180.658 141.5 214 141.5C247.342 141.5 277.503 149.264 299.311 161.79C321.133 174.324 334.5 191.564 334.5 210.5Z" stroke="white" stroke-opacity="0.35"/>
|
||||||
|
<path d="M358.5 214.5C358.5 237.303 342.446 258.043 316.281 273.11C290.13 288.17 253.969 297.5 214 297.5C174.031 297.5 137.87 288.17 111.719 273.11C85.5545 258.043 69.5 237.303 69.5 214.5C69.5 191.697 85.5545 170.957 111.719 155.89C137.87 140.83 174.031 131.5 214 131.5C253.969 131.5 290.13 140.83 316.281 155.89C342.446 170.957 358.5 191.697 358.5 214.5Z" stroke="white" stroke-opacity="0.2"/>
|
||||||
|
<path d="M387.5 214.5C387.5 241.998 368.199 266.988 336.786 285.131C305.388 303.267 261.977 314.5 214 314.5C166.023 314.5 122.613 303.267 91.2135 285.131C59.8013 266.988 40.5 241.998 40.5 214.5C40.5 187.002 59.8013 162.012 91.2135 143.869C122.613 125.733 166.023 114.5 214 114.5C261.977 114.5 305.388 125.733 336.786 143.869C368.199 162.012 387.5 187.002 387.5 214.5Z" stroke="white" stroke-opacity="0.1"/>
|
||||||
|
<path d="M427.5 214.5C427.5 248.349 403.722 279.089 365.071 301.395C326.433 323.693 273.023 337.5 214 337.5C154.977 337.5 101.567 323.693 62.9291 301.395C24.2782 279.089 0.5 248.349 0.5 214.5C0.5 180.651 24.2782 149.911 62.9291 127.605C101.567 105.307 154.977 91.5 214 91.5C273.023 91.5 326.433 105.307 365.071 127.605C403.722 149.911 427.5 180.651 427.5 214.5Z" stroke="white" stroke-opacity="0.05"/>
|
||||||
|
<path d="M214.163 256.872C267.716 256.872 311.129 231.794 311.129 200.857C311.129 169.921 267.716 144.842 214.163 144.842C160.61 144.842 117.197 169.921 117.197 200.857C117.197 231.794 160.61 256.872 214.163 256.872Z" fill="#BCD5FF"/>
|
||||||
|
<path d="M319.126 200.258V176.851H311.128C305.93 169.649 298.533 163.047 288.336 157.246C247.351 133.639 180.775 133.639 139.789 157.246C129.793 163.047 122.195 169.649 116.997 176.851H109V200.258C109 215.862 119.196 231.266 139.789 243.069C180.775 266.676 247.351 266.676 288.336 243.069C308.929 231.266 319.126 215.862 319.126 200.258Z" fill="url(#paint0_linear_1262_14013)"/>
|
||||||
|
<path d="M214.163 237.467C272.132 237.467 319.125 210.328 319.125 176.851C319.125 143.373 272.132 116.234 214.163 116.234C156.193 116.234 109.2 143.373 109.2 176.851C109.2 210.328 156.193 237.467 214.163 237.467Z" fill="#8A40E2"/>
|
||||||
|
<path d="M311.129 174.85V143.041H303.731C298.933 136.439 291.935 130.238 282.739 125.036C244.952 103.23 183.374 103.23 145.587 125.036C136.39 130.438 129.393 136.639 124.595 143.041H117.197V174.85C117.197 189.254 126.594 203.458 145.587 214.461C183.374 236.267 244.952 236.267 282.739 214.461C301.732 203.458 311.129 189.254 311.129 174.85Z" fill="#2C1379"/>
|
||||||
|
<g opacity="0.51">
|
||||||
|
<path d="M311.129 167.648V135.839H303.731C298.933 129.238 291.935 123.036 282.739 117.834C244.952 96.0285 183.374 96.0285 145.587 117.834C136.39 123.236 129.393 129.438 124.595 135.839H117.197V167.648C117.197 182.052 126.594 196.256 145.587 207.259C183.374 229.065 244.952 229.065 282.739 207.259C301.732 196.256 311.129 181.852 311.129 167.648Z" fill="#5C21A7"/>
|
||||||
|
</g>
|
||||||
|
<path d="M214.163 199.057C267.716 199.057 311.129 173.978 311.129 143.042C311.129 112.105 267.716 87.0264 214.163 87.0264C160.61 87.0264 117.197 112.105 117.197 143.042C117.197 173.978 160.61 199.057 214.163 199.057Z" fill="#BCD5FF"/>
|
||||||
|
<g opacity="0.51">
|
||||||
|
<path d="M280.939 181.252C260.147 207.659 231.357 218.862 210.764 223.463C236.755 224.064 262.946 218.662 282.739 207.059C301.732 196.056 311.129 181.852 311.129 167.448V154.645C301.332 160.246 290.936 168.649 280.939 181.252Z" fill="#6625B8"/>
|
||||||
|
</g>
|
||||||
|
<path d="M319.126 142.441V119.235H311.128C305.93 112.033 298.533 105.431 288.336 99.6299C247.351 76.0234 180.775 76.0234 139.789 99.6299C129.793 105.431 122.195 112.033 116.997 119.235H109V142.642C109 158.246 119.196 173.65 139.789 185.453C180.775 209.06 247.351 209.06 288.336 185.453C308.929 173.65 319.126 158.046 319.126 142.441Z" fill="url(#paint1_linear_1262_14013)"/>
|
||||||
|
<path d="M214.163 179.852C272.132 179.852 319.125 152.713 319.125 119.235C319.125 85.7576 272.132 58.6187 214.163 58.6187C156.193 58.6187 109.2 85.7576 109.2 119.235C109.2 152.713 156.193 179.852 214.163 179.852Z" fill="#8A40E2"/>
|
||||||
|
<path d="M311.129 117.234V85.2258H303.731C298.933 78.624 291.935 72.4223 282.739 67.2209C244.952 45.415 183.374 45.415 145.587 67.2209C136.39 72.6224 129.393 78.8241 124.595 85.2258H117.197V117.034C117.197 131.438 126.594 145.642 145.587 156.645C183.374 178.451 244.952 178.451 282.739 156.645C301.732 145.842 311.129 131.438 311.129 117.234Z" fill="#2C1379"/>
|
||||||
|
<g opacity="0.51">
|
||||||
|
<path d="M311.129 108.232V76.4238H303.731C298.933 69.822 291.935 63.6203 282.739 58.4189C244.952 36.613 183.374 36.613 145.587 58.4189C136.39 63.8204 129.393 70.022 124.595 76.4238H117.197V108.232C117.197 122.636 126.594 136.84 145.587 147.843C183.374 169.649 244.952 169.649 282.739 147.843C301.732 136.84 311.129 122.636 311.129 108.232Z" fill="#8B2ED4"/>
|
||||||
|
</g>
|
||||||
|
<path d="M214.163 141.241C267.716 141.241 311.129 116.162 311.129 85.2259C311.129 54.2896 267.716 29.2107 214.163 29.2107C160.61 29.2107 117.197 54.2896 117.197 85.2259C117.197 116.162 160.61 141.241 214.163 141.241Z" fill="#BCD5FF"/>
|
||||||
|
<path d="M319.126 84.8259V61.4195H311.128C305.93 54.2176 298.533 47.6158 288.336 41.8142C247.351 18.2078 180.775 18.2078 139.789 41.8142C129.793 47.6158 122.195 54.2176 116.997 61.4195H109V84.8259C109 100.43 119.196 115.834 139.789 127.638C180.775 151.244 247.351 151.244 288.336 127.638C308.929 115.834 319.126 100.43 319.126 84.8259Z" fill="url(#paint2_linear_1262_14013)"/>
|
||||||
|
<path d="M214.163 122.036C272.132 122.036 319.125 94.8968 319.125 61.4192C319.125 27.9417 272.132 0.802734 214.163 0.802734C156.193 0.802734 109.2 27.9417 109.2 61.4192C109.2 94.8968 156.193 122.036 214.163 122.036Z" fill="#BCD5FF"/>
|
||||||
|
<path d="M214.163 122.036C272.132 122.036 319.125 94.8968 319.125 61.4192C319.125 27.9417 272.132 0.802734 214.163 0.802734C156.193 0.802734 109.2 27.9417 109.2 61.4192C109.2 94.8968 156.193 122.036 214.163 122.036Z" fill="#BCD5FF"/>
|
||||||
|
<g opacity="0.51">
|
||||||
|
<path d="M280.939 120.636C258.147 149.643 225.559 160.246 205.166 164.047C232.956 165.448 261.546 160.246 282.739 147.843C301.732 136.84 311.128 122.636 311.128 108.232V94.0283C301.332 99.4298 290.936 107.832 280.939 120.636Z" fill="#6F2AC8"/>
|
||||||
|
</g>
|
||||||
|
<path d="M319.126 84.8259V61.4195H311.128C305.93 54.2176 298.533 47.6158 288.336 41.8142C247.351 18.2078 180.775 18.2078 139.789 41.8142C129.793 47.6158 122.195 54.2176 116.997 61.4195H109V84.8259C109 100.43 119.196 115.834 139.789 127.638C180.775 151.244 247.351 151.244 288.336 127.638C308.929 115.834 319.126 100.43 319.126 84.8259Z" fill="url(#paint3_linear_1262_14013)"/>
|
||||||
|
<path d="M214.163 122.036C272.132 122.036 319.125 94.8968 319.125 61.4192C319.125 27.9417 272.132 0.802734 214.163 0.802734C156.193 0.802734 109.2 27.9417 109.2 61.4192C109.2 94.8968 156.193 122.036 214.163 122.036Z" fill="#BCD5FF"/>
|
||||||
|
<path d="M214.163 122.036C272.132 122.036 319.125 94.8968 319.125 61.4192C319.125 27.9417 272.132 0.802734 214.163 0.802734C156.193 0.802734 109.2 27.9417 109.2 61.4192C109.2 94.8968 156.193 122.036 214.163 122.036Z" fill="url(#paint4_radial_1262_14013)"/>
|
||||||
|
<path d="M288.936 102.631C247.951 126.237 181.374 126.237 140.389 102.631C115.198 88.0266 105.601 68.0212 111.199 49.2161C104.402 68.6213 113.798 89.427 139.789 104.431C180.775 128.037 247.351 128.037 288.337 104.431C304.331 95.2286 313.927 83.8255 317.526 72.0223C313.528 83.2253 304.131 93.8282 288.936 102.631Z" fill="white"/>
|
||||||
|
<path d="M288.936 160.246C247.951 183.853 181.374 183.853 140.389 160.246C115.198 145.642 105.601 125.637 111.199 106.832C104.402 126.237 113.798 147.043 139.789 162.047C180.775 185.653 247.351 185.653 288.337 162.047C304.331 152.844 313.927 141.441 317.526 129.638C313.528 140.841 304.131 151.644 288.936 160.246Z" fill="white"/>
|
||||||
|
<path d="M288.936 218.062C247.951 241.668 181.374 241.668 140.389 218.062C115.198 203.458 105.601 183.452 111.199 164.647C104.402 184.052 113.798 204.858 139.789 219.862C180.775 243.469 247.351 243.469 288.337 219.862C304.331 210.66 313.927 199.257 317.526 187.453C313.528 198.656 304.131 209.259 288.936 218.062Z" fill="white"/>
|
||||||
|
<path d="M277.669 56.4662V42.3409H272.728C269.67 38.1033 264.964 34.1012 259.082 30.5698C234.379 16.2091 194.147 16.2091 169.443 30.5698C163.326 34.1012 158.856 38.1033 155.797 42.3409H150.856V56.4662C150.856 65.883 156.974 75.2999 169.443 82.3625C194.147 96.7232 234.379 96.7232 259.082 82.3625C271.317 75.2999 277.669 65.883 277.669 56.4662Z" fill="url(#paint5_linear_1262_14013)"/>
|
||||||
|
<path d="M259.082 68.237C234.378 82.5977 194.147 82.5977 169.443 68.237C144.739 53.8763 144.739 30.805 169.443 16.4443C194.147 2.08365 234.378 2.08365 259.082 16.4443C283.786 30.805 283.786 53.8763 259.082 68.237Z" fill="#BCD5FF"/>
|
||||||
|
<path d="M259.082 68.237C234.378 82.5977 194.147 82.5977 169.443 68.237C144.739 53.8763 144.739 30.805 169.443 16.4443C194.147 2.08365 234.378 2.08365 259.082 16.4443C283.786 30.805 283.786 53.8763 259.082 68.237Z" fill="url(#paint6_radial_1262_14013)"/>
|
||||||
|
<path d="M259.082 65.4123C234.379 79.773 194.147 79.773 169.443 65.4123C157.679 58.5851 151.562 49.8745 150.856 40.9285C150.151 50.8162 156.268 60.7039 169.443 68.2373C194.147 82.598 234.379 82.598 259.082 68.2373C272.023 60.7039 278.375 50.8162 277.669 40.9285C276.963 49.8745 270.846 58.5851 259.082 65.4123Z" fill="white"/>
|
||||||
|
<g filter="url(#filter0_d_1262_14013)">
|
||||||
|
<path d="M230.781 47.2763L237.108 50.4248C237.108 50.4248 238.191 50.7928 239.308 50.1483C240.424 49.5038 239.787 48.878 239.787 48.878L234.333 45.2255C234.324 45.2385 234.314 45.2516 234.304 45.265C234.06 45.5817 233.624 45.977 232.853 46.4218C232.083 46.8666 231.398 47.1187 230.85 47.2592C230.827 47.2651 230.804 47.2708 230.781 47.2763Z" fill="white"/>
|
||||||
|
<path d="M219.214 41.619L229.777 46.7077C229.777 46.7077 230.653 46.6984 231.993 45.925C233.332 45.1516 233.349 44.6454 233.349 44.6454L224.535 38.5472C224.294 39.0412 223.749 39.754 222.526 40.4596C221.304 41.1653 220.07 41.48 219.214 41.619Z" fill="white"/>
|
||||||
|
<path d="M209.336 36.3319C209.289 36.4711 209.314 36.6167 209.415 36.7498L210.828 38.6052C211.054 38.9012 211.451 39.1398 211.955 39.281L217.607 40.8671C217.949 40.9628 218.328 41.0125 218.706 40.9619C219.369 40.8732 220.511 40.6298 221.666 39.9628C222.821 39.2957 223.243 38.6365 223.396 38.2541C223.484 38.0359 223.398 37.8166 223.232 37.6196L220.485 34.356C220.24 34.0654 219.827 33.8358 219.314 33.7056L216.101 32.8897C215.87 32.8312 215.618 32.8172 215.377 32.8439C215.286 33.7094 214.655 34.5701 213.49 35.2426C212.325 35.9152 210.835 36.2794 209.336 36.3319Z" fill="white"/>
|
||||||
|
<path d="M205.615 34.8207C205.1 34.5234 204.276 34.4136 203.562 34.5455C201.857 34.8606 199.949 34.6426 198.633 33.8832C196.732 32.7856 196.79 30.9724 198.763 29.8334C199.108 29.6345 199.488 29.4693 199.891 29.3379C201.211 28.9078 202.518 28.1528 203.263 27.391C203.491 27.1583 203.777 26.9388 204.121 26.7399C206.094 25.6008 209.235 25.5673 211.136 26.6649C212.451 27.4243 212.829 28.5262 212.283 29.5104C212.055 29.9226 212.245 30.3987 212.76 30.696C214.661 31.7936 214.603 33.6067 212.63 34.7458C210.657 35.8848 207.517 35.9183 205.615 34.8207Z" fill="white"/>
|
||||||
|
<path d="M191.579 48.8871L209.35 38.6268C209.837 39.8361 211.244 39.9756 212.451 40.3143L200.371 52.6054C199.595 53.3875 198.083 53.8311 196.566 53.7218L194.166 53.5491C192.775 53.449 191.631 52.9013 191.21 52.1343L190.632 51.0814C190.215 50.3206 190.58 49.473 191.579 48.8871Z" fill="white"/>
|
||||||
|
<path d="M208.802 37.9495L188.026 49.414C186.847 50.0425 185.224 50.2516 183.845 49.8407L179.76 48.6293C179.433 48.5318 179.141 48.4079 178.889 48.2636C178.097 47.809 177.708 47.1513 177.881 46.4751L178.41 44.414C178.608 43.6414 179.511 42.9754 180.77 42.6728C183.976 41.8739 203.478 37.2345 206.83 36.4372C207.118 36.3688 207.431 36.4329 207.583 36.5835C207.692 36.6907 207.823 36.8192 207.958 36.9464C208.349 37.3177 208.802 37.9495 208.802 37.9495Z" fill="white"/>
|
||||||
|
<path d="M237.123 22.5918L219.352 32.8522C221.447 33.1334 221.688 33.9458 222.275 34.6427L243.564 27.6683C244.918 27.2202 245.687 26.3471 245.497 25.4711L245.198 24.0859C245.025 23.2828 244.076 22.6219 242.748 22.3789L240.924 22.0454C239.606 21.8044 238.138 22.0155 237.123 22.5918Z" fill="white"/>
|
||||||
|
<path d="M218.179 32.5357L238.036 20.5408C239.125 19.8598 239.487 18.923 238.775 18.1267L236.677 15.7683C236.508 15.5793 236.293 15.4108 236.043 15.2656C235.256 14.8084 234.117 14.5834 232.946 14.6836L229.376 14.989C228.037 15.1034 226.884 15.6244 226.36 16.3512C224.976 18.2022 216.94 29.4618 215.56 31.3972C215.441 31.5633 215.552 31.744 215.813 31.8321C215.999 31.8947 216.221 31.9707 216.442 32.0482C217.085 32.2744 218.179 32.5357 218.179 32.5357Z" fill="white"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<filter id="filter0_d_1262_14013" x="168.865" y="11.7876" width="103.02" height="62.8596" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||||
|
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||||
|
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||||
|
<feOffset dy="4"/>
|
||||||
|
<feGaussianBlur stdDeviation="2"/>
|
||||||
|
<feComposite in2="hardAlpha" operator="out"/>
|
||||||
|
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/>
|
||||||
|
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1262_14013"/>
|
||||||
|
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1262_14013" result="shape"/>
|
||||||
|
</filter>
|
||||||
|
<linearGradient id="paint0_linear_1262_14013" x1="109.1" y1="200.256" x2="319.183" y2="200.256" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#AE30D6"/>
|
||||||
|
<stop offset="1" stop-color="#552FD5"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint1_linear_1262_14013" x1="109.1" y1="142.531" x2="319.183" y2="142.531" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#B02FD5"/>
|
||||||
|
<stop offset="1" stop-color="#512ED4"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint2_linear_1262_14013" x1="109.1" y1="84.8065" x2="319.183" y2="84.8065" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#5778FF"/>
|
||||||
|
<stop offset="0.1779" stop-color="#5C7DFF"/>
|
||||||
|
<stop offset="0.3876" stop-color="#6A8AFF"/>
|
||||||
|
<stop offset="0.6134" stop-color="#82A0FF"/>
|
||||||
|
<stop offset="0.849" stop-color="#A3BEFF"/>
|
||||||
|
<stop offset="1" stop-color="#BCD5FF"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint3_linear_1262_14013" x1="109.1" y1="84.8065" x2="319.183" y2="84.8065" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#B12ED4"/>
|
||||||
|
<stop offset="1" stop-color="#4E2ED3"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="paint4_radial_1262_14013" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(127.672 24.4762) scale(225.375 225.516)">
|
||||||
|
<stop stop-color="#BE3FE1"/>
|
||||||
|
<stop offset="1" stop-color="#623FE1"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="paint5_linear_1262_14013" x1="150.655" y1="56.4605" x2="277.585" y2="56.4605" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#9220B2"/>
|
||||||
|
<stop offset="1" stop-color="#4B25D3"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="paint6_radial_1262_14013" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(147.851 13.7276) scale(200.288 200.414)">
|
||||||
|
<stop stop-color="#C959F3"/>
|
||||||
|
<stop offset="1" stop-color="#7E3EFF"/>
|
||||||
|
</radialGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 15 KiB |
35
docs/_navbar.md
Normal file
35
docs/_navbar.md
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
* [Getting Started](getting-started/index.md)
|
||||||
|
|
||||||
|
* Main
|
||||||
|
* [Add Task](main/addTask.md)
|
||||||
|
* [Handler](main/handler.md)
|
||||||
|
* [Init](main/init.md)
|
||||||
|
* [Process Queue](main/processQueue.md)
|
||||||
|
* [Scheduler](main/scheduler.md)
|
||||||
|
* [Setup](main/setup.md)
|
||||||
|
|
||||||
|
* Generic
|
||||||
|
* [Delete Key](generic/delete.md)
|
||||||
|
* [Get Key](generic/get.md)
|
||||||
|
* [Set Key](generic/set.md)
|
||||||
|
|
||||||
|
* Hashes
|
||||||
|
* [Hash Get](hashes/hashGet.md)
|
||||||
|
* [Hash Get ID](hashes/hashGetId.md)
|
||||||
|
* [Hash Get All](hashes/hashGetAll.md)
|
||||||
|
* [Hash Get All ID](hashes/hashGetAllId.md)
|
||||||
|
* [Hash Set](hashes/hashSet.md)
|
||||||
|
* [Hash Set ID](hashes/hashSetId.md)
|
||||||
|
* [Hash Set Bulk](hashes/hashSetBulk.md)
|
||||||
|
* [Hash Set Bulk ID](hashes/hashSetBulkId.md)
|
||||||
|
|
||||||
|
* Lists
|
||||||
|
* [List Add](lists/listAdd.md)
|
||||||
|
* [List Get](lists/listGet.md)
|
||||||
|
* [List Load](lists/listLoad.md)
|
||||||
|
* [List Remove](lists/listRemove.md)
|
||||||
|
* [List Set](lists/listSet.md)
|
||||||
|
|
||||||
|
* Misc
|
||||||
|
* [Save DB](misc/saveDb.md)
|
||||||
|
* [Test](misc/test.md)
|
29
docs/_site/README.md
Normal file
29
docs/_site/README.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<p align="center">
|
||||||
|
<!-- <img src="https://raw.githubusercontent.com/jschmidt92/ArmaDragonflyClient/master/images/logo.png"> -->
|
||||||
|
<a href="https://github.com/jschmidt92/ArmaDragonflyClient/releases/latest">
|
||||||
|
<img src="https://img.shields.io/github/v/release/jschmidt92/ArmaDragonflyClient?label=latest%20release" alt="latest-release">
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/jschmidt92/ArmaDragonflyClient/issues">
|
||||||
|
<img src="https://img.shields.io/github/issues/jschmidt92/ArmaDragonflyClient" alt="open-issues">
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/jschmidt92/ArmaDragonflyClient/actions/workflows/build.yml">
|
||||||
|
<img src="https://img.shields.io/github/actions/workflow/status/jschmidt92/ArmaDragonflyClient/build.yml?branch=master" alt="build-status">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
Welcome to **ArmaDragonflyClient**.
|
||||||
|
|
||||||
|
This addon was designed for the Arma 3 Community.\
|
||||||
|
If something is broken, contact **J. Schmidt92** or open a new issue on **[GitHub](https://github.com/jschmidt92/ArmaDragonflyClient/issues)**.
|
||||||
|
|
||||||
|
Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved\
|
||||||
|
Do not edit without permission!
|
||||||
|
|
||||||
|
> This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.\
|
||||||
|
To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,\
|
||||||
|
PO Box 1866, Mountain View, CA 94042
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
|
||||||
|
- **_Creedcoder_** for his contributions, help, input and time
|
||||||
|

|
BIN
docs/_site/favicon.ico
Normal file
BIN
docs/_site/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
22
docs/_site/generic/delete.md
Normal file
22
docs/_site/generic/delete.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# Delete Key
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Delete stored key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored key from DB.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
[getPlayerUID player] call dragonfly_db_fnc_delete (Server or Singleplayer Only)
|
||||||
|
[getPlayerUID player] remoteExecCall ["dragonfly_db_fnc_delete", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Delete Key](generic/delete.md) |
|
||||||
|
[Get Key](generic/get.md) |
|
||||||
|
[Set Key](generic/set.md)
|
25
docs/_site/generic/get.md
Normal file
25
docs/_site/generic/get.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# Get Key
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Get value of stored key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored Key
|
||||||
|
1: STRING - NetID of target to return data from function (default: "")
|
||||||
|
2: STRING - Name of function to return data (default: "")
|
||||||
|
3: BOOLEAN - Unscheduled environment (default: false)
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
[getPlayerUID player, "dragonfly_db_fnc_test"] call dragonfly_db_fnc_get (Server or Singleplayer Only)
|
||||||
|
[getPlayerUID player, netId player, "dragonfly_db_fnc_test", false] remoteExecCall ["dragonfly_db_fnc_get", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Delete Key](generic/delete.md) |
|
||||||
|
[Get Key](generic/get.md) |
|
||||||
|
[Set Key](generic/set.md)
|
23
docs/_site/generic/set.md
Normal file
23
docs/_site/generic/set.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Set Key
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Set value of stored key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored Key
|
||||||
|
1: [ARRAY|STRING|NUMBER|BOOL] - Value to store in key (default: [])
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["test", ["Hello World!"]] call dragonfly_db_fnc_set (Server or Singleplayer Only)
|
||||||
|
["test", ["Hello World!"]] remoteExecCall ["dragonfly_db_fnc_set", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Delete Key](generic/delete.md) |
|
||||||
|
[Get Key](generic/get.md) |
|
||||||
|
[Set Key](generic/set.md)
|
83
docs/_site/getting-started/index.md
Normal file
83
docs/_site/getting-started/index.md
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
# Getting Started
|
||||||
|
|
||||||
|
Read through [Getting Started](https://www.dragonflydb.io/docs/getting-started) Guide from DragonflyDB to get Dragonfly up and running on your machine or use the provided binaries within the `dragonfly` folder.
|
||||||
|
|
||||||
|
## OS Compatibility
|
||||||
|
|
||||||
|
ArmaDragonflyClient is currently only compatible with Windows. Linux is planned for a future release.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
1. Download the latest release from the [Releases](https://github.com/ArmaDragonflyClient/ArmaDragonflyClient/releases) page.
|
||||||
|
2. Extract the zip file to your Arma 3 directory.
|
||||||
|
3. Create the init.sqf file in your mission folder and add the following code:
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
addMissionEventHandler ["ExtensionCallback", {
|
||||||
|
params ["_name", "_function", "_data"];
|
||||||
|
diag_log _this;
|
||||||
|
if (_name isEqualTo "ArmaDragonflyClient") then {
|
||||||
|
parseSimpleArray _data call (missionNamespace getVariable [_function, {
|
||||||
|
hint "Function does not exist!"
|
||||||
|
}]);
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Create the initServer.sqf file in your mission folder and add the following code:
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
if (isServer || isDedicated) then {
|
||||||
|
true spawn dragonfly_db_fnc_init;
|
||||||
|
[] call sof_server_init_fnc_serverSetup;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Implement data persistence using DragonflyDB:
|
||||||
|
|
||||||
|
- To enable saving and loading data from DragonflyDB, you need to create the necessary functions.
|
||||||
|
- Refer to the [Add Task](https://jschmidt92.github.io/ArmaDragonflyClient/#/main/addTask) wiki page for detailed information on how to create tasks in DragonflyDB.
|
||||||
|
- Utilize the `dragonfly_db_fnc_addTask` function to add tasks to the DragonflyDB queue for saving and loading data.
|
||||||
|
- Here's an example of how you can create a task to save data:
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
["hsetid", getPlayerUID player, "loadout", -1, getUnitLoadout player, "", "", false] call dragonfly_db_fnc_addTask;
|
||||||
|
```
|
||||||
|
|
||||||
|
This example adds a task to set the value of the field "loadout" in the hash player UID to the player's loadout.
|
||||||
|
|
||||||
|
- To load data, you can create a task using the appropriate task type, such as "hgetall" or "hget":
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
["hgetallid", getPlayerUID player, "", -1, [], "myCallback", "", false] call dragonfly_db_fnc_addTask;
|
||||||
|
```
|
||||||
|
|
||||||
|
This example adds a task to retrieve all values from the hash player UID and pass the retrieved data to the "myCallback" function for further processing.
|
||||||
|
|
||||||
|
- Ensure that you provide the correct task type, key names, field names, and callback functions based on your specific data requirements. Please refer to the Task Types section below for more information on available task types and their corresponding data types.
|
||||||
|
- Properly handle the retrieved data in the callback functions to utilize it effectively in your project.
|
||||||
|
|
||||||
|
By following these steps and leveraging the `dragonfly_db_fnc_addTask` function, you can implement robust data persistence functionality using DragonflyDB in your Arma 3 project.
|
||||||
|
|
||||||
|
### Task Types
|
||||||
|
|
||||||
|
| Task Type | Data Type |
|
||||||
|
| ---------- | -------------------------------------------------------------------------------------------------------- |
|
||||||
|
| get | [Get Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/generic/get) |
|
||||||
|
| set | [Set Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/generic/set) |
|
||||||
|
| del | [Delete Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/generic/delete) |
|
||||||
|
| hget | [Hash Get Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashGet) |
|
||||||
|
| hgetid | [Hash Get by ID Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashGetId) |
|
||||||
|
| hgetall | [Hash Get All Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashGetAll) |
|
||||||
|
| hgetallid | [Hash Get All by ID Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashGetAllId) |
|
||||||
|
| hset | [Hash Set Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashSet) |
|
||||||
|
| hsetbulk | [Hash Set Bulk Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashSetBulk) |
|
||||||
|
| hsetid | [Hash Set by ID Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashSetId) |
|
||||||
|
| hsetidbulk | [Hash Set Bulk by ID Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashSetBulkId) |
|
||||||
|
| listadd | [List Add Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/lists/listAdd) |
|
||||||
|
| listidx | [List Index Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/lists/listGet) |
|
||||||
|
| listrng | [List Range Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/lists/listLoad) |
|
||||||
|
| listrem | [List Remove Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/lists/listRemove) |
|
||||||
|
| listset | [List Set Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/lists/listSet) |
|
||||||
|
|
||||||
|
## Links
|
30
docs/_site/hashes/hashGet.md
Normal file
30
docs/_site/hashes/hashGet.md
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Hash Get
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Get value of field in hash stored at key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored field in hash (default: "")
|
||||||
|
1: STRING - NetID of target to return data from function (default: "")
|
||||||
|
2: STRING - Name of function to return data (default: "")
|
||||||
|
3: BOOLEAN - Unscheduled environment (default: false)
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["loadout", "", "dragonfly_db_fnc_test", false] call dragonfly_db_fnc_hashGet (Server or Singleplayer Only)
|
||||||
|
["loadout", netId player, "dragonfly_db_fnc_test", false] remoteExecCall ["dragonfly_db_fnc_hashGet", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Hash Get](hashes/hashGet.md) |
|
||||||
|
[Hash Get ID](hashes/hashGetId.md) |
|
||||||
|
[Hash Get All](hashes/hashGetAll.md) |
|
||||||
|
[Hash Get All ID](hashes/hashGetAllId.md) |
|
||||||
|
[Hash Set](hashes/hashSet.md) |
|
||||||
|
[Hash Set ID](hashes/hashSetId.md) |
|
||||||
|
[Hash Set Bulk](hashes/hashSetBulk.md) |
|
||||||
|
[Hash Set Bulk ID](hashes/hashSetBulkId.md)
|
29
docs/_site/hashes/hashGetAll.md
Normal file
29
docs/_site/hashes/hashGetAll.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Hash Get All
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Get all fields and values from hash stored at key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - NetID of target to return data from function (default: "")
|
||||||
|
1: STRING - Name of function to return data (default: "")
|
||||||
|
2: BOOLEAN - Unscheduled environment (default: false)
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["", "dragonfly_db_fnc_test", false] call dragonfly_db_fnc_hashGetAll (Server or Singleplayer Only)
|
||||||
|
[netId player, "dragonfly_db_fnc_test", false] remoteExecCall ["dragonfly_db_fnc_hashGetAll", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Hash Get](hashes/hashGet.md) |
|
||||||
|
[Hash Get ID](hashes/hashGetId.md) |
|
||||||
|
[Hash Get All](hashes/hashGetAll.md) |
|
||||||
|
[Hash Get All ID](hashes/hashGetAllId.md) |
|
||||||
|
[Hash Set](hashes/hashSet.md) |
|
||||||
|
[Hash Set ID](hashes/hashSetId.md) |
|
||||||
|
[Hash Set Bulk](hashes/hashSetBulk.md) |
|
||||||
|
[Hash Set Bulk ID](hashes/hashSetBulkId.md)
|
30
docs/_site/hashes/hashGetAllId.md
Normal file
30
docs/_site/hashes/hashGetAllId.md
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Hash Get All ID
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Get all fields and values from hash stored at key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored key with hash (default: "")
|
||||||
|
1: STRING - NetID of target to return data from function (default: "")
|
||||||
|
2: STRING - Name of function to return data (default: "")
|
||||||
|
3: BOOLEAN - Unscheduled environment (default: false)
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
[getPlayerUID player, "", "dragonfly_db_fnc_test", false] call dragonfly_db_fnc_hashGetAllId (Server or Singleplayer Only)
|
||||||
|
[getPlayerUID player, netId player, "dragonfly_db_fnc_test", false] remoteExecCall ["dragonfly_db_fnc_hashGetAllId", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Hash Get](hashes/hashGet.md) |
|
||||||
|
[Hash Get ID](hashes/hashGetId.md) |
|
||||||
|
[Hash Get All](hashes/hashGetAll.md) |
|
||||||
|
[Hash Get All ID](hashes/hashGetAllId.md) |
|
||||||
|
[Hash Set](hashes/hashSet.md) |
|
||||||
|
[Hash Set ID](hashes/hashSetId.md) |
|
||||||
|
[Hash Set Bulk](hashes/hashSetBulk.md) |
|
||||||
|
[Hash Set Bulk ID](hashes/hashSetBulkId.md)
|
31
docs/_site/hashes/hashGetId.md
Normal file
31
docs/_site/hashes/hashGetId.md
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# Hash Get ID
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Get value of field in hash stored at key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored key with hash (default: "")
|
||||||
|
1: STRING - Name of stored field in hash (default: "")
|
||||||
|
2: STRING - NetID of target to return data from function (default: "")
|
||||||
|
3: STRING - Name of function to return data (default: "")
|
||||||
|
4: BOOLEAN - Unscheduled environment (default: false)
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
[getPlayerUID player, "loadout", "", "dragonfly_db_fnc_test", false] call dragonfly_db_fnc_hashGetId (Server or Singleplayer Only)
|
||||||
|
[getPlayerUID player, "loadout", netId player, "dragonfly_db_fnc_test", false] remoteExecCall ["dragonfly_db_fnc_hashGetId", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Hash Get](hashes/hashGet.md) |
|
||||||
|
[Hash Get ID](hashes/hashGetId.md) |
|
||||||
|
[Hash Get All](hashes/hashGetAll.md) |
|
||||||
|
[Hash Get All ID](hashes/hashGetAllId.md) |
|
||||||
|
[Hash Set](hashes/hashSet.md) |
|
||||||
|
[Hash Set ID](hashes/hashSetId.md) |
|
||||||
|
[Hash Set Bulk](hashes/hashSetBulk.md) |
|
||||||
|
[Hash Set Bulk ID](hashes/hashSetBulkId.md)
|
28
docs/_site/hashes/hashSet.md
Normal file
28
docs/_site/hashes/hashSet.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# Hash Set
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Set value of field in hash stored at key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored field in hash (default: "")
|
||||||
|
1: [ARRAY|STRING|NUMBER|BOOL] - Value to store in hash field (default: [])
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["loadout", [getUnitLoadout player]] call dragonfly_db_fnc_hashSet (Server or Singleplayer Only)
|
||||||
|
["loadout", [getUnitLoadout player]] remoteExecCall ["dragonfly_db_fnc_hashSet", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Hash Get](hashes/hashGet.md) |
|
||||||
|
[Hash Get ID](hashes/hashGetId.md) |
|
||||||
|
[Hash Get All](hashes/hashGetAll.md) |
|
||||||
|
[Hash Get All ID](hashes/hashGetAllId.md) |
|
||||||
|
[Hash Set](hashes/hashSet.md) |
|
||||||
|
[Hash Set ID](hashes/hashSetId.md) |
|
||||||
|
[Hash Set Bulk](hashes/hashSetBulk.md) |
|
||||||
|
[Hash Set Bulk ID](hashes/hashSetBulkId.md)
|
27
docs/_site/hashes/hashSetBulk.md
Normal file
27
docs/_site/hashes/hashSetBulk.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Hash Set Bulk
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Set fields and values in hash stored at key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: [ARRAY|STRING|NUMBER|BOOL] - Fields and Values to store in hash (default: [])
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["loadout", [getUnitLoadout player], "position", [getPosASLVisual player]] call dragonfly_db_fnc_hashSetBulk (Server or Singleplayer Only)
|
||||||
|
["loadout", [getUnitLoadout player], "position", [getPosASLVisual player]] remoteExecCall ["dragonfly_db_fnc_hashSetBulk", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Hash Get](hashes/hashGet.md) |
|
||||||
|
[Hash Get ID](hashes/hashGetId.md) |
|
||||||
|
[Hash Get All](hashes/hashGetAll.md) |
|
||||||
|
[Hash Get All ID](hashes/hashGetAllId.md) |
|
||||||
|
[Hash Set](hashes/hashSet.md) |
|
||||||
|
[Hash Set ID](hashes/hashSetId.md) |
|
||||||
|
[Hash Set Bulk](hashes/hashSetBulk.md) |
|
||||||
|
[Hash Set Bulk ID](hashes/hashSetBulkId.md)
|
27
docs/_site/hashes/hashSetBulkId.md
Normal file
27
docs/_site/hashes/hashSetBulkId.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Hash Set Bulk ID
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Set fields and values in hash stored at key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: [ARRAY|STRING|NUMBER|BOOL] - Fields and Values to store in hash (default: [])
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
[getPlayerUID player, "loadout", [getUnitLoadout player], "position", [getPosASLVisual player]] call dragonfly_db_fnc_hashSetBulk (Server or Singleplayer Only)
|
||||||
|
[getPlayerUID player, "loadout", [getUnitLoadout player], "position", [getPosASLVisual player]] remoteExecCall ["dragonfly_db_fnc_hashSetBulk", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Hash Get](hashes/hashGet.md) |
|
||||||
|
[Hash Get ID](hashes/hashGetId.md) |
|
||||||
|
[Hash Get All](hashes/hashGetAll.md) |
|
||||||
|
[Hash Get All ID](hashes/hashGetAllId.md) |
|
||||||
|
[Hash Set](hashes/hashSet.md) |
|
||||||
|
[Hash Set ID](hashes/hashSetId.md) |
|
||||||
|
[Hash Set Bulk](hashes/hashSetBulk.md) |
|
||||||
|
[Hash Set Bulk ID](hashes/hashSetBulkId.md)
|
29
docs/_site/hashes/hashSetId.md
Normal file
29
docs/_site/hashes/hashSetId.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Hash Set ID
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Set value of field in hash stored at key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored key with hash (default: "")
|
||||||
|
1: STRING - Name of stored field in hash (default: "")
|
||||||
|
2: [ARRAY|STRING|NUMBER|BOOL] - Value to store in hash field (default: [])
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
[getPlayerUID player, "loadout", []] call dragonfly_db_fnc_hashSetId (Server or Singleplayer Only)
|
||||||
|
[getPlayerUID player, "loadout", []] remoteExecCall ["dragonfly_db_fnc_hashSetId", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Hash Get](hashes/hashGet.md) |
|
||||||
|
[Hash Get ID](hashes/hashGetId.md) |
|
||||||
|
[Hash Get All](hashes/hashGetAll.md) |
|
||||||
|
[Hash Get All ID](hashes/hashGetAllId.md) |
|
||||||
|
[Hash Set](hashes/hashSet.md) |
|
||||||
|
[Hash Set ID](hashes/hashSetId.md) |
|
||||||
|
[Hash Set Bulk](hashes/hashSetBulk.md) |
|
||||||
|
[Hash Set Bulk ID](hashes/hashSetBulkId.md)
|
215
docs/_site/index.html
Normal file
215
docs/_site/index.html
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<title>Knowledgebase</title>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||||
|
<meta name="description" content="Description" />
|
||||||
|
<meta
|
||||||
|
name="viewport"
|
||||||
|
content="width=device-width, initial-scale=1.0, minimum-scale=1.0"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css"
|
||||||
|
/>
|
||||||
|
<link rel="icon" type="image/x-icon" href="./favicon.ico" />
|
||||||
|
<style>
|
||||||
|
.anchor span {
|
||||||
|
color: rgba(255, 255, 255, 0.87);
|
||||||
|
}
|
||||||
|
.anchor:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.anchor:hover:before {
|
||||||
|
color: #42d392;
|
||||||
|
content: "#";
|
||||||
|
float: left;
|
||||||
|
font-weight: 500;
|
||||||
|
margin-left: -0.87em;
|
||||||
|
padding-right: 0.23em;
|
||||||
|
transition: color 0.25s;
|
||||||
|
}
|
||||||
|
.app-name {
|
||||||
|
color: rgba(255, 255, 255, 0.87);
|
||||||
|
}
|
||||||
|
.app-nav li a {
|
||||||
|
color: rgba(235, 235, 235, 0.6);
|
||||||
|
}
|
||||||
|
.app-nav li ul {
|
||||||
|
background-color: #1a1a1a;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.07);
|
||||||
|
}
|
||||||
|
.app-nav p {
|
||||||
|
color: rgba(255, 255, 255, 0.87);
|
||||||
|
}
|
||||||
|
.app-nav p:hover {
|
||||||
|
color: #42d392;
|
||||||
|
transition: color 0.25s;
|
||||||
|
}
|
||||||
|
.app-nav ul li a {
|
||||||
|
color: rgba(255, 255, 255, 0.87);
|
||||||
|
}
|
||||||
|
.markdown-section h1,
|
||||||
|
.markdown-section h2,
|
||||||
|
.markdown-section h3,
|
||||||
|
.markdown-section h4,
|
||||||
|
.markdown-section strong {
|
||||||
|
color: #42b883;
|
||||||
|
}
|
||||||
|
.markdown-section code,
|
||||||
|
.markdown-section pre {
|
||||||
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
.markdown-section pre > code {
|
||||||
|
background: initial;
|
||||||
|
}
|
||||||
|
.markdown-section tr:nth-child(2n) {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
ol li {
|
||||||
|
color: rgba(255, 255, 255, 0.87);
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
color: rgba(255, 255, 255, 0.87);
|
||||||
|
}
|
||||||
|
ul li {
|
||||||
|
color: rgba(255, 255, 255, 0.87);
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
#readingTimeWrapper {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
transition: left 0.25s ease;
|
||||||
|
}
|
||||||
|
#readingTime {
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: 80%;
|
||||||
|
padding: 30px 15px 40px;
|
||||||
|
background-color: rgba(26, 26, 26, 0.8);
|
||||||
|
color: rgba(235, 235, 235, 0.6);
|
||||||
|
}
|
||||||
|
body.close #readingTimeWrapper {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.sidebar,
|
||||||
|
body {
|
||||||
|
background-color: #1a1a1a;
|
||||||
|
color: rgba(255, 255, 255, 0.75);
|
||||||
|
}
|
||||||
|
.sidebar-toggle {
|
||||||
|
background-color: transparent;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
.sidebar ul li a {
|
||||||
|
color: rgba(235, 235, 235, 0.6);
|
||||||
|
}
|
||||||
|
.sidebar ul li a:hover {
|
||||||
|
color: #42d392;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: color 0.25s;
|
||||||
|
}
|
||||||
|
.sidebar ul li a:active {
|
||||||
|
color: #42d392;
|
||||||
|
}
|
||||||
|
img[alt="logo"] {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
body.close .sidebar-toggle {
|
||||||
|
background-color: transparent;
|
||||||
|
transition: background-color 1s;
|
||||||
|
width: 284px;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
#readingTimeWrapper {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
<script>
|
||||||
|
window.$docsify = {
|
||||||
|
name: "ArmaDragonflyClient",
|
||||||
|
repo: "https://github.com/jschmidt92/ArmaDragonflyClient",
|
||||||
|
loadNavbar: true,
|
||||||
|
mergeNavbar: true,
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<!-- Docsify v4 -->
|
||||||
|
<script src="//cdn.jsdelivr.net/npm/docsify@4"></script>
|
||||||
|
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/zoom-image.min.js"></script>
|
||||||
|
<script src="//cdn.jsdelivr.net/npm/docsify-copy-code/dist/docsify-copy-code.min.js"></script>
|
||||||
|
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-sqf.min.js"></script>
|
||||||
|
<script>
|
||||||
|
function get_text(el) {
|
||||||
|
let ret = "";
|
||||||
|
let length = el.childNodes.length;
|
||||||
|
for (let i = 0; i < length; i++) {
|
||||||
|
let node = el.childNodes[i];
|
||||||
|
if (node.nodeType != 8) {
|
||||||
|
ret += node.nodeType != 1 ? node.nodeValue : get_text(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateReadingTimePosition() {
|
||||||
|
const sidebar = document.querySelector(".sidebar");
|
||||||
|
const content = document.querySelector(".content");
|
||||||
|
const readingTimeWrapper =
|
||||||
|
document.getElementById("readingTimeWrapper");
|
||||||
|
|
||||||
|
if (
|
||||||
|
window.innerWidth > 768 &&
|
||||||
|
!document.body.classList.contains("close")
|
||||||
|
) {
|
||||||
|
readingTimeWrapper.style.left = sidebar.offsetWidth + "px";
|
||||||
|
} else {
|
||||||
|
readingTimeWrapper.style.left = "0";
|
||||||
|
}
|
||||||
|
|
||||||
|
readingTimeWrapper.style.top = content.offsetTop + "px";
|
||||||
|
readingTimeWrapper.style.paddingLeft = content.style.paddingLeft;
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
let main = document.getElementsByClassName("content")[0].parentElement;
|
||||||
|
let newWrapper = document.createElement("div");
|
||||||
|
newWrapper.id = "readingTimeWrapper";
|
||||||
|
main.insertBefore(newWrapper, main.lastChild);
|
||||||
|
let newElement = document.createElement("h4");
|
||||||
|
newElement.id = "readingTime";
|
||||||
|
newElement.style = "margin-bottom: -60px";
|
||||||
|
newWrapper.appendChild(newElement);
|
||||||
|
|
||||||
|
updateReadingTimePosition();
|
||||||
|
window.addEventListener("resize", updateReadingTimePosition);
|
||||||
|
|
||||||
|
const sidebarToggle = document.querySelector(".sidebar-toggle");
|
||||||
|
sidebarToggle.addEventListener("click", function () {
|
||||||
|
setTimeout(updateReadingTimePosition, 0);
|
||||||
|
});
|
||||||
|
}, 50);
|
||||||
|
|
||||||
|
let lastTime = 0;
|
||||||
|
|
||||||
|
setInterval(function () {
|
||||||
|
let words = get_text(document.getElementById("main"));
|
||||||
|
let time = Math.round(words.split(" ").length / 130);
|
||||||
|
if (time != lastTime) {
|
||||||
|
document.getElementById("readingTime").innerHTML =
|
||||||
|
"Reading Time: " + time + (time == 1 ? " minute" : " minutes");
|
||||||
|
lastTime = time;
|
||||||
|
}
|
||||||
|
}, 150);
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
25
docs/_site/lists/listAdd.md
Normal file
25
docs/_site/lists/listAdd.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# List Add
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Add element to list stored at key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored key (default: "")
|
||||||
|
1: [ARRAY|STRING|NUMBER|BOOL] - Value to insert into key (default: [])
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["events", ["Server state saved to DB 071620241600"]] call dragonfly_db_fnc_listAdd (Server or Singleplayer Only)
|
||||||
|
["events", ["Server state saved to DB 071620241600"]] remoteExecCall ["dragonfly_db_fnc_listAdd", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[List Add](lists/listAdd.md) |
|
||||||
|
[List Get](lists/listGet.md) |
|
||||||
|
[List Load](lists/listLoad.md) |
|
||||||
|
[List Remove](lists/listRemove.md) |
|
||||||
|
[List Set](lists/listSet.md)
|
28
docs/_site/lists/listGet.md
Normal file
28
docs/_site/lists/listGet.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# List Get
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Get element of list stored at key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored key (default: "")
|
||||||
|
1: SCALAR - Index of stored value in list (default: -1)
|
||||||
|
2: STRING - NetID of target to return data from function (default: "")
|
||||||
|
3: STRING - Name of function to return data (default: "")
|
||||||
|
4: BOOLEAN - Unscheduled environment (default: false)
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["events", 0, "", "dragonfly_db_fnc_test", false] call dragonfly_db_fnc_listGet (Server or Singleplayer Only)
|
||||||
|
["events", 0, netId player, "dragonfly_db_fnc_test", false] remoteExecCall ["dragonfly_db_fnc_listGet", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[List Add](lists/listAdd.md) |
|
||||||
|
[List Get](lists/listGet.md) |
|
||||||
|
[List Load](lists/listLoad.md) |
|
||||||
|
[List Remove](lists/listRemove.md) |
|
||||||
|
[List Set](lists/listSet.md)
|
27
docs/_site/lists/listLoad.md
Normal file
27
docs/_site/lists/listLoad.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# List Load
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Get all elements of list stored at key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored key (default: "")
|
||||||
|
1: STRING - NetID of target to return data from function (default: "")
|
||||||
|
2: STRING - Name of function to return data (default: "")
|
||||||
|
3: BOOLEAN - Unscheduled environment (default: false)
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["events", "", "dragonfly_db_fnc_test", false] call dragonfly_db_fnc_listLoad (Server or Singleplayer Only)
|
||||||
|
["events", netId player, "dragonfly_db_fnc_test", false] remoteExecCall ["dragonfly_db_fnc_listLoad", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[List Add](lists/listAdd.md) |
|
||||||
|
[List Get](lists/listGet.md) |
|
||||||
|
[List Load](lists/listLoad.md) |
|
||||||
|
[List Remove](lists/listRemove.md) |
|
||||||
|
[List Set](lists/listSet.md)
|
25
docs/_site/lists/listRemove.md
Normal file
25
docs/_site/lists/listRemove.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# List Remove
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Remove element of list stored at key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored key (default: "")
|
||||||
|
1: SCALAR - Index of stored value in list (default: -1)
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["events", 0] call dragonfly_db_fnc_listRemove (Server or Singleplayer Only)
|
||||||
|
["events", 0] remoteExecCall ["dragonfly_db_fnc_listRemove", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[List Add](lists/listAdd.md) |
|
||||||
|
[List Get](lists/listGet.md) |
|
||||||
|
[List Load](lists/listLoad.md) |
|
||||||
|
[List Remove](lists/listRemove.md) |
|
||||||
|
[List Set](lists/listSet.md)
|
26
docs/_site/lists/listSet.md
Normal file
26
docs/_site/lists/listSet.md
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# List Set
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Set element of list stored at key from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored key (default: "")
|
||||||
|
1: SCALAR - Index of stored value in list (default: -1)
|
||||||
|
2: [ARRAY|STRING|NUMBER|BOOL] - Value to set for index (default: [])
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["events", 0, ["Hello World!"]] call dragonfly_db_fnc_listSet (Server or Singleplayer Only)
|
||||||
|
["events", 0, ["Hello World!"]] remoteExecCall ["dragonfly_db_fnc_listSet", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[List Add](lists/listAdd.md) |
|
||||||
|
[List Get](lists/listGet.md) |
|
||||||
|
[List Load](lists/listLoad.md) |
|
||||||
|
[List Remove](lists/listRemove.md) |
|
||||||
|
[List Set](lists/listSet.md)
|
32
docs/_site/main/addTask.md
Normal file
32
docs/_site/main/addTask.md
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# Add Task
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Add task to queue.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Type of task
|
||||||
|
1: STRING - Name of stored key (default: "")
|
||||||
|
2: STRING - Name of stored hash key field (default: "")
|
||||||
|
3: SCALAR - Index of stored value in list (default: -1)
|
||||||
|
4: [ARRAY|STRING|NUMBER|BOOL] - Value to store in key (default: [])
|
||||||
|
5: STRING - Name of function to return data (default: "")
|
||||||
|
6: STRING - NetID of target to return data from function (default: "")
|
||||||
|
7: BOOLEAN - Unscheduled environment (default: false)
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["hgetall", "", "", -1, [], "dragonfly_db_fnc_test", "", false] call dragonfly_db_fnc_addTask (Server or Singleplayer Only)
|
||||||
|
["hgetallid", getPlayerUID player, "", -1, [], "dragonfly_db_fnc_test", netId player, false] remoteExecCall ["dragonfly_db_fnc_addTask", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Add Task](main/addTask.md) |
|
||||||
|
[Handler](main/handler.md) |
|
||||||
|
[Init](main/init.md) |
|
||||||
|
[Process Queue](main/processQueue.md) |
|
||||||
|
[Scheduler](main/scheduler.md) |
|
||||||
|
[Setup](main/setup.md)
|
28
docs/_site/main/handler.md
Normal file
28
docs/_site/main/handler.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# Handler
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Handle data from DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of function to return data (default: "")
|
||||||
|
1: STRING - NetID of target to return data from function (default: "")
|
||||||
|
2: BOOLEAN - Unscheduled environment (default: false)
|
||||||
|
3: [ARRAY|STRING|NUMBER|BOOL] - Value to store in key (default: [])
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["dragonfly_db_fnc_test", "", false, ["Hello World!"]] call dragonfly_db_fnc_handler (Server or Singleplayer Only)
|
||||||
|
["dragonfly_db_fnc_test", netId player, false, ["Hello World!"]] remoteExecCall ["dragonfly_db_fnc_handler", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Add Task](main/addTask.md) |
|
||||||
|
[Handler](main/handler.md) |
|
||||||
|
[Init](main/init.md) |
|
||||||
|
[Process Queue](main/processQueue.md) |
|
||||||
|
[Scheduler](main/scheduler.md) |
|
||||||
|
[Setup](main/setup.md)
|
24
docs/_site/main/init.md
Normal file
24
docs/_site/main/init.md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Initialization
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Initial Extension settings.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
N/A
|
||||||
|
|
||||||
|
Example:
|
||||||
|
N/A
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Add Task](main/addTask.md) |
|
||||||
|
[Handler](main/handler.md) |
|
||||||
|
[Init](main/init.md) |
|
||||||
|
[Process Queue](main/processQueue.md) |
|
||||||
|
[Scheduler](main/scheduler.md) |
|
||||||
|
[Setup](main/setup.md)
|
25
docs/_site/main/processQueue.md
Normal file
25
docs/_site/main/processQueue.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# Process Queue
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Processes a queue of tasks to be executed.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
N/A
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
[] spawn dragonfly_db_fnc_processQueue (Server or Singleplayer Only)
|
||||||
|
[] remoteExec ["dragonfly_db_fnc_processQueue", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Add Task](main/addTask.md) |
|
||||||
|
[Handler](main/handler.md) |
|
||||||
|
[Init](main/init.md) |
|
||||||
|
[Process Queue](main/processQueue.md) |
|
||||||
|
[Scheduler](main/scheduler.md) |
|
||||||
|
[Setup](main/setup.md)
|
25
docs/_site/main/scheduler.md
Normal file
25
docs/_site/main/scheduler.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# Scheduler
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Scheduled Environment for extension.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Task ID from extension (default: "")
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["071620241600_get"] call dragonfly_db_fnc_scheduler (Server or Singleplayer Only)
|
||||||
|
["071620241600_get"] remoteExecCall ["dragonfly_db_fnc_scheduler", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Add Task](main/addTask.md) |
|
||||||
|
[Handler](main/handler.md) |
|
||||||
|
[Init](main/init.md) |
|
||||||
|
[Process Queue](main/processQueue.md) |
|
||||||
|
[Scheduler](main/scheduler.md) |
|
||||||
|
[Setup](main/setup.md)
|
27
docs/_site/main/setup.md
Normal file
27
docs/_site/main/setup.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Setup
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Setup Extension to communicate with DB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name host (default: "localhost")
|
||||||
|
1: SCALAR - Port of host (default: 6379)
|
||||||
|
2: STRING - Password of host (default: "xyz123")
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["localhost", 6379, "xyz123"] call dragonfly_db_fnc_setup (Server or Singleplayer Only)
|
||||||
|
["localhost", 6379, "xyz123"] remoteExecCall ["dragonfly_db_fnc_setup", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Add Task](main/addTask.md) |
|
||||||
|
[Handler](main/handler.md) |
|
||||||
|
[Init](main/init.md) |
|
||||||
|
[Process Queue](main/processQueue.md) |
|
||||||
|
[Scheduler](main/scheduler.md) |
|
||||||
|
[Setup](main/setup.md)
|
22
docs/_site/misc/saveDb.md
Normal file
22
docs/_site/misc/saveDb.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# Save DB
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Save DB to disc.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
N/A
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
[] call dragonfly_db_fnc_saveDB (Server or Singleplayer Only)
|
||||||
|
[] remoteExecCall ["dragonfly_db_fnc_saveDB", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Save DB](misc/saveDb.md) |
|
||||||
|
[Setup](misc/setup.md) |
|
||||||
|
[Test](misc/test.md)
|
22
docs/_site/misc/test.md
Normal file
22
docs/_site/misc/test.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# Test
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Test Function.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: [ARRAY|STRING|NUMBER|BOOL] - Value to test (default: [])
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["Hello World!"] spawn dragonfly_db_fnc_test (Server or Singleplayer Only)
|
||||||
|
["Hello World!"] remoteExec ["dragonfly_db_fnc_test", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Save DB](misc/saveDb.md) |
|
||||||
|
[Setup](misc/setup.md) |
|
||||||
|
[Test](misc/test.md)
|
BIN
docs/favicon.ico
Normal file
BIN
docs/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
22
docs/generic/delete.md
Normal file
22
docs/generic/delete.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# Delete Key
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Remove the specified `key` from DragonflyDB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored key from DB.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["test"] call dragonfly_db_fnc_delete (Server or Singleplayer Only)
|
||||||
|
["test"] remoteExecCall ["dragonfly_db_fnc_delete", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Delete Key](generic/delete.md) |
|
||||||
|
[Get Key](generic/get.md) |
|
||||||
|
[Set Key](generic/set.md)
|
25
docs/generic/get.md
Normal file
25
docs/generic/get.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# Get Key
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Get the value of stored `key` from DragonflyDB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored Key
|
||||||
|
1: STRING - Name of function to return data (default: "")
|
||||||
|
2: BOOLEAN - Unscheduled environment (default: false)
|
||||||
|
3: STRING - NetID of target to return data from function (default: nil)
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["test", "dragonfly_db_fnc_test"] call dragonfly_db_fnc_get (Server or Singleplayer Only)
|
||||||
|
["test", "dragonfly_db_fnc_test", false, netId player] remoteExecCall ["dragonfly_db_fnc_get", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Delete Key](generic/delete.md) |
|
||||||
|
[Get Key](generic/get.md) |
|
||||||
|
[Set Key](generic/set.md)
|
23
docs/generic/set.md
Normal file
23
docs/generic/set.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Set Key
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Set the value of stored `key` from DragonflyDB.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
Arguments:
|
||||||
|
0: STRING - Name of stored Key
|
||||||
|
1: [ARRAY|STRING|NUMBER|BOOL] - Value to store in key (default: [])
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
["test", ["Hello World!"]] call dragonfly_db_fnc_set (Server or Singleplayer Only)
|
||||||
|
["test", ["Hello World!"]] remoteExecCall ["dragonfly_db_fnc_set", 2, false] (Multiplayer Only)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
[Delete Key](generic/delete.md) |
|
||||||
|
[Get Key](generic/get.md) |
|
||||||
|
[Set Key](generic/set.md)
|
105
docs/getting-started/index.md
Normal file
105
docs/getting-started/index.md
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
# Getting Started
|
||||||
|
|
||||||
|
Read through [Getting Started](https://www.dragonflydb.io/docs/getting-started) Guide from DragonflyDB to get DragonflyDB up and running on your machine or use the provided binaries within the `dragonfly` folder.
|
||||||
|
|
||||||
|
## DragonflyDB
|
||||||
|
### Prerequisites
|
||||||
|
- You must be running a Linux-based OS (if using Mac, run using Docker, Windows WSL will work as well).
|
||||||
|
- Network access
|
||||||
|
- Minimum 4GB of RAM to get the benifits of Dragonfly
|
||||||
|
- Minimum 1CPU Core
|
||||||
|
- Linux Kernel 4.19 or higher
|
||||||
|
|
||||||
|
## ArmaDragonflyClient
|
||||||
|
### OS Compatibility
|
||||||
|
|
||||||
|
ArmaDragonflyClient is currently only compatible with Windows. Linux is planned for a future release.
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
1. Download the latest release from the [Releases](https://github.com/jschmidt92/ArmaDragonflyClient/releases) page.
|
||||||
|
2. Extract the zip file to your Arma 3 directory.
|
||||||
|
3. Create the `init.sqf` file in your mission folder and add the following code:
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
addMissionEventHandler ["ExtensionCallback", {
|
||||||
|
params ["_name", "_function", "_data"];
|
||||||
|
diag_log _this;
|
||||||
|
if (_name isEqualTo "ArmaDragonflyClient") then {
|
||||||
|
parseSimpleArray _data call (missionNamespace getVariable [_function, {
|
||||||
|
hint "Function does not exist!"
|
||||||
|
}]);
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Create the `initServer.sqf` file in your mission folder and add the following code:
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
if (isServer || isDedicated) then {
|
||||||
|
true spawn dragonfly_db_fnc_init;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Implement data persistence using ArmaDragonflyClient:
|
||||||
|
|
||||||
|
- To enable saving and loading data from ArmaDragonflyClient, you need to create the necessary functions.
|
||||||
|
- Refer to the [Add Task](https://jschmidt92.github.io/ArmaDragonflyClient/#/main/addTask) wiki page for detailed information on how to create tasks in ArmaDragonflyClient.
|
||||||
|
- Utilize the `dragonfly_db_fnc_addTask` function to add tasks to the ArmaDragonflyClient queue for saving and loading data.
|
||||||
|
- Here's an example of how you can create a task to save data:
|
||||||
|
> **_IMPORTANT:_** All data must be encapsulated by brackets
|
||||||
|
|
||||||
|
```sqf
|
||||||
|
["hsetid", getPlayerUID player, "loadout", -1, [getUnitLoadout player]] call dragonfly_db_fnc_addTask;
|
||||||
|
```
|
||||||
|
|
||||||
|
This example adds a task to set the value of the field "loadout" in the hash player UID to the player's loadout.
|
||||||
|
|
||||||
|
- To load data, you can create a task using the appropriate task type, such as "hgetall" or "hget":
|
||||||
|
```sqf
|
||||||
|
["hgetid", getPlayerUID player, "loadout", -1, [], "myCallbackFunction", false, netId player] call dragonfly_db_fnc_addTask;
|
||||||
|
```
|
||||||
|
|
||||||
|
This example adds a task to retrieve all values from the hash player UID and pass the retrieved data to the "myCallbackFunction" for further processing.
|
||||||
|
|
||||||
|
- Ensure that you provide the correct task type, key names, field names, and callback functions based on your specific data requirements. Please refer to the Task Types section below for more information on available task types and their corresponding data types.
|
||||||
|
- Properly handle the retrieved data in the callback functions to utilize it effectively in your project.
|
||||||
|
- I.e. implement public variables and `waitUntil` checks before proceeding onto the next task(s).
|
||||||
|
```sqf
|
||||||
|
// First Script or Function to execute `dragonfly_db_fnc_addTask`
|
||||||
|
value_ExampleDone = false;
|
||||||
|
publicVariable "value_ExampleDone";
|
||||||
|
...
|
||||||
|
|
||||||
|
// Callback function to process the retrieved data
|
||||||
|
...
|
||||||
|
value_ExampleDone = true;
|
||||||
|
publicVariable "value_ExampleDone";
|
||||||
|
|
||||||
|
// Next Script or Function to execute `dragonfly_db_fnc_addTask`
|
||||||
|
waitUntil {value_ExampleDone};
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
By following these steps and leveraging the `dragonfly_db_fnc_addTask` function, you can implement robust data persistence functionality using ArmaDragonflyClient in your Arma 3 project.
|
||||||
|
|
||||||
|
#### Task Types
|
||||||
|
|
||||||
|
| Task Type | Data Type |
|
||||||
|
| ---------- | -------------------------------------------------------------------------------------------------------- |
|
||||||
|
| get | [Get Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/generic/get) |
|
||||||
|
| set | [Set Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/generic/set) |
|
||||||
|
| del | [Delete Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/generic/delete) |
|
||||||
|
| hget | [Hash Get Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashGet) |
|
||||||
|
| hgetid | [Hash Get by ID Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashGetId) |
|
||||||
|
| hgetall | [Hash Get All Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashGetAll) |
|
||||||
|
| hgetallid | [Hash Get All by ID Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashGetAllId) |
|
||||||
|
| hset | [Hash Set Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashSet) |
|
||||||
|
| hsetbulk | [Hash Set Bulk Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashSetBulk) |
|
||||||
|
| hsetid | [Hash Set by ID Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashSetId) |
|
||||||
|
| hsetidbulk | [Hash Set Bulk by ID Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/hashes/hashSetBulkId) |
|
||||||
|
| listadd | [List Add Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/lists/listAdd) |
|
||||||
|
| listidx | [List Index Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/lists/listGet) |
|
||||||
|
| listrng | [List Range Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/lists/listLoad) |
|
||||||
|
| listrem | [List Remove Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/lists/listRemove) |
|
||||||
|
| listset | [List Set Data Type](https://jschmidt92.github.io/ArmaDragonflyClient/#/lists/listSet) |
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user