feat: full squad server role

This commit is contained in:
Price Hiller 2023-01-22 22:06:14 -06:00
parent a47ffda6c2
commit ac5f385168
30 changed files with 1577 additions and 0 deletions

View File

@ -3,6 +3,157 @@ all:
server_timezone: America/Chicago
hosts:
asgard.orion-technologies.io:
squad_server_user: asgard
squad_server_group: asgard
squad_default_settings:
docker:
name: vanilla-squad
image: squad:latest
secrets:
rcon_password: test
squadjs_discord_token: ""
license: ""
groups: []
admins: []
ban_urls: []
remote_admin_hosts: []
messages: []
layers:
- Mutaha_RAAS_v2
- Gorodok_RAAS_v12
- Fallujah_RAAS_v2
- Skorpo_RAAS_v4
- Narva_RAAS_v1
- Yehorivka_RAAS_v11
- AlBasrah_Invasion_v2
- GooseBay_RAAS_v1
- BlackCoast_RAAS_v3
- Tallil_RAAS_v5
ports:
game: 7787
query: 27165
rcon: 21114
squad_servers:
- name: "[ASG] Asgard Eternal | MEE - New Player Friendly"
docker:
name: mee-french
image: squad:mee-french-latest
secrets:
rcon_password: asgardians
squadjs_discord_token: !vault |
$ANSIBLE_VAULT;1.1;AES256
63323165363036343035636330613463333466383265656161353330396166366330343437373131
6630653661303634666564353636306638393364326431630a613464303033626366656439613131
39303561363831616461653037373837613935633563366131336135316130326637393261613765
6434643034373836380a336234373030353430396537343363306465643535636138663164366261
37636163363464343238303036393261666631656437656635373763336637323862613739396131
61636533313964623762663036393937376635353039666433313362373235373131323639373862
32326434373936356536656134623166613530393834323563386661343335356636383632353963
36306662333630666336
license: !vault |
$ANSIBLE_VAULT;1.1;AES256
36643838396330396163326536323164326635333732386361363637326336643434373564383032
3662313962616166373831656438316539653765383864620a323931623462313763313238356133
61396465363164383234363636613632666433653562386231323335646334343633626539666263
3030643239393363640a356237313431343034383664353037633462356463383233363630656664
32643239313366663435356462333331373038353235316532333731356236326131343630636238
34346562333864356431323431333431653537393434396438363066343133656166356263393036
38303861313635646564326666323665353563393531316139356531326539353364383432353531
37313864353063303335323462636234666663396131366663313031613862653039366633393939
33376231396663663066623239343763316330366265366464316362643233646164316136363865
34303631313261636361653338396230393234343563383362326232313539383364653165666633
65653061323937393137386162653061376261366165386164306431396636326235383336646433
32333636376131646663616630336264303234393937313330333038613466376233326137636437
35303761393665613630376235663431393031643863383331353330663930613938376334336438
37633738623034333065336231356631396232313634633237343966386537626338336666373061
30326331333766623431346236623262333932343937316262393362356566356366646631373831
36336535616461363030326130326634303432383961626231666637376539333365386438613438
61353633323332303762613131623964336636343030636631643339393337336436393863383039
39656363303430316264663832623237653566333539346333363564393563316136336331343839
30346163336636663835623730343637646164366535643536623261663839383436643937306439
36663630616661623931363536396531336536326162326630653031313737643032333737386230
32376663636432643731383637313964393965626238393436313038383731633035636238316363
65643939363562343035383066613665373962343861376530626537343631616661666636333731
34623235353634656338336162616538366331666237306265386433656437623566633237346631
31363334363735623136336234356438656563343638623538333135626431356131396335636462
65356634633736653137376539333266363737663137616566393531326463666233333538646463
31336430623638623465636461393134633161323832323830313661643638306136316130363964
30643766613036323463616163363136383135333461643836363466636539393961613061373465
35653164643535326136306663383637613534356332626566663261376633616237383133303936
37333333376432383537353634356239616335336535326662623966313830633262613533336330
33306165376532323435336134353537636631373161303832373931393239393536643836633837
31333661306266326636663639363964346635326639353737636434343062353866346164343139
64323630306661373264623739353664663466656332626535396632343131323734336437313161
33636533333563323161393065643964653739633239356665663864393263626634323933313466
33303863363238633436653138336366383965663933396262653465653962366331656334353966
38633762623465613065663438646365616338303235633138643365373136366266363332376264
39316562323666643431636564366437633937393366643136313031653065303338363663376238
31333765353433316639663837663932306530383165343861393933323131316565326661646638
64356630626566343866666565363733646164396239353134303837373162376164366237336634
30393466626666353139306266343064393164313163666535636132646563653931343561363532
38666431333936303734383062623338623637386565386264656639646431386261363235663062
36633563353265653136643261653766343965633331316536306233656664656634373162613630
63333363363037646365363363393733353031343036616261363633353530663565333764333065
34313162343336393535316630353733616162383139623936323463663137386232303933623835
64613733633935373138623966306633306236333239633439613264303837663430383162623166
32316264333630663732623436646432363337356430386632313539333339643637303133633664
30303935313036623836653938666164363763376531643231666134383861343930613363356363
33393264383938396162396432313261646634366336643766626138336236333736373439323836
39386432616465343635343832303964353366383938343065623332373933323935666138393339
32376438373834313632613861663666386264646530336131613262346534363633303833346330
34396135633933323035613532656131306331653161363835383830626634303032623365306366
31663433383236613137303961613335363939326638613831613837643564393064356336373466
66613438353661313461303336383836323435353638616365633733383730363937636263663264
62373432643436363338646239313866313562373636396539336230346264656330656532336133
33373432653430303931623234643264393030643963333039396632343764323665326532613331
38646462353338643836636335396462306437343934663835636136643363393866623132396532
64393330326536313439396134353538656131356133633763633632616130353332396138613338
64393330326539333139393133666434363465343335663663666437333633306436343035623038
62313065653436633430303264313166663463363065376166316465663663356465356339616138
39646438633063333362336261363531316635626432373331616332313738623264633366623235
66383739396239313931323436383137653632373831623432613238643130336632383933323964
35303061396537653366323931346136386239326438393938343538653661353931353765646164
65306564376130343263313963396431646632633336623036666135663337613532356535393336
36386333633935623965646438643062616530393430333264366338386139613836363534336632
33343332646335303964646235303366323663656531343238306264343139316539363434306637
37333266383464356163326632646639303864343834623236356434626139613931633034313630
32346266343437666365326531343365643430623736323766346232386435333364366566633266
37363434333966386533353763333730613735346566313064643031656634666563636238666661
38356665346533623034353032626662383134396639343330663535373538616434326666643566
30383663616564346566373563313135313065366630313337376265616466393837393962323035
33393532313366666536653831393066336532376631313862353364626135393564356332353365
62343864356163653139353435646530386434386238363631383864336538363134303430393338
30343861386365356235353365323538396636343132383361323437663532356464376438306531
65636539373132666533373532626666313837373864306231333136666565343761343736333530
32323137326166333033663032613262313930326431303133666237343338343437666138363361
65376364613162346334386530323761356137356134396631363937323034366430383736383139
39623463653839376139336533363035353962313561383561393264396562313763636438363865
38373463613737366333613531356232366431643633373034366635636334393431653464306265
36316133383664303330306133376132303539396366653636653335366434363164316135386338
61333733343262616361363561343861613633613839323531646639663234373661323661343663
66376532633235623934333636396133646661366133663534656632313335636333343664386464
30333861376237646536333833313538646431323432313566626131623439666434623464326536
34313164633563333036306334396339356136646636376161303365663234333230646232323766
64306366353364646335303962383036633436363737643637363031366533613334323164616132
36646231623132363032626634666337393132323262633235396132626137313965616264333436
65653332306265666530666564313239376365646464613131396634303137326130613831343534
3463613338393435643034306365633031336566353031373930
ports:
game: 7787
query: 27165
rcon: 21114
layers:
- Mutaha_RAAS_v2
- Gorodok_RAAS_v12
- Fallujah_RAAS_v2
- Skorpo_RAAS_v4
- Narva_RAAS_v1
- Yehorivka_RAAS_v11
- AlBasrah_Invasion_v2
- GooseBay_RAAS_v1
- BlackCoast_RAAS_v3
- Tallil_RAAS_v5
registry_site: asgard.orion-technologies.io
registry_site_email: price@orion-technologies.io
registry_system_user: docker-reg

View File

@ -13,3 +13,6 @@
- role: docker
tags:
- docker
- role: squad-server
tags:
- squad

View File

@ -0,0 +1,38 @@
Role Name
=========
A brief description of the role goes here.
Requirements
------------
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
Role Variables
--------------
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
Dependencies
------------
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
Example Playbook
----------------
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
- hosts: servers
roles:
- { role: username.rolename, x: 42 }
License
-------
BSD
Author Information
------------------
An optional section for the role authors to include contact information, or a website (HTML is not allowed).

View File

@ -0,0 +1,6 @@
---
# defaults file for squad-server
squad_server_user: asgard
squad_server_group: asgard
squad_servers_dir: "/home/{{ squad_server_user }}/Squad-Servers/"
squad_server_configs_dir: "{{ squad_servers_dir }}/configs"

View File

@ -0,0 +1,2 @@
---
# handlers file for squad-server

View File

@ -0,0 +1,52 @@
galaxy_info:
author: your name
description: your role description
company: your company (optional)
# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker
# Choose a valid license ID from https://spdx.org - some suggested licenses:
# - BSD-3-Clause (default)
# - MIT
# - GPL-2.0-or-later
# - GPL-3.0-only
# - Apache-2.0
# - CC-BY-4.0
license: license (GPL-2.0-or-later, MIT, etc)
min_ansible_version: 2.1
# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:
#
# Provide a list of supported platforms, and for each platform a list of versions.
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
# To view available platforms and versions (or releases), visit:
# https://galaxy.ansible.com/api/v1/platforms/
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99
galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.
dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.

View File

@ -0,0 +1,69 @@
---
# tasks file for squad-server
- name: Update Server Configs With Defaults if Missing
ansible.utils.update_fact:
updates:
- path: "squad_servers.{{ idx }}"
value: "{{ squad_default_settings | combine(item, recursive=True) }}"
loop: "{{ squad_servers }}"
changed_when: false
loop_control:
index_var: idx
register: squad_servers_updated
- ansible.builtin.set_fact:
squad_servers: "{{ squad_servers_updated.results[-1].squad_servers }}"
- name: Create Squad Directories
become: true
ansible.builtin.file:
state: directory
path: "{{ squad_server_configs_dir }}"
owner: "{{ squad_server_user }}"
group: "{{ squad_server_group }}"
mode: 0755
- name: Create Squad Server Configuration Directories
become: true
ansible.builtin.file:
state: directory
path: "{{ squad_server_configs_dir }}/{{ item.docker.name }}/ServerConfig"
owner: "{{ squad_server_user }}"
group: "{{ squad_server_group }}"
mode: 0755
loop: "{{ squad_servers }}"
- name: Template In Squad Server's Docker Compose
become: true
ansible.builtin.template:
src: docker-compose.yml.j2
dest: "{{ squad_servers_dir }}/docker-compose.yml"
owner: "{{ squad_server_user }}"
group: "{{ squad_server_group }}"
mode: 0644
- ansible.builtin.include_tasks: nested_servers_loop.yml
loop_control:
loop_var: template_file
with_fileglob:
- ../templates/server-config/*.j2
- name: Template SquadJS Into Place
become: true
ansible.builtin.template:
src: "SquadJS.{{ server.docker.name }}.json.j2"
dest: "{{ squad_server_configs_dir }}/{{ server.docker.name }}/SquadJS.json"
owner: "{{ squad_server_user }}"
group: "{{ squad_server_group }}"
mode: 0644
no_log: true
loop: "{{ squad_servers }}"
loop_control:
loop_var: server
- ansible.builtin.include_tasks: nested_ports_open.yml
loop_control:
loop_var: server
loop: "{{ squad_servers }}"

View File

@ -0,0 +1,29 @@
---
- name: Open TCP Server Ports
become: true
community.general.ufw:
state: enabled
rule: allow
port: "{{ item }}"
proto: tcp
loop:
- "{{ server.ports.game }}"
- "{{ server.ports.game|int + 1 }}"
- "{{ server.ports.query }}"
- "{{ server.ports.query|int + 1 }}"
- "{{ server.ports.rcon }}"
- name: Open UDP Server Ports
become: true
community.general.ufw:
state: enabled
rule: allow
port: "{{ item }}"
proto: udp
loop:
- "{{ server.ports.game }}"
- "{{ server.ports.game|int + 1 }}"
- "{{ server.ports.query }}"
- "{{ server.ports.query|int + 1 }}"
- "{{ server.ports.rcon }}"

View File

@ -0,0 +1,12 @@
- name: Template In Squad Server Configurations
become: true
ansible.builtin.template:
src: "{{ template_file }}"
dest: "{{ squad_server_configs_dir }}/{{ server.docker.name }}/ServerConfig/{{ template_file | basename | regex_replace('\\.j2$', '') }}"
owner: "{{ squad_server_user }}"
group: "{{ squad_server_group }}"
mode: 0644
no_log: true
loop_control:
loop_var: server
loop: "{{ squad_servers }}"

View File

@ -0,0 +1,246 @@
{
"server": {
"id": 1,
"host": "127.0.0.1",
"queryPort": 27165,
"rconPort": 21114,
"rconPassword": "asgardians",
"logReaderMode": "tail",
"logDir": "/home/steam/Squad-Server/SquadGame/Saved/Logs",
"ftp": {
"port": 21,
"user": "FTP Username",
"password": "FTP Password",
"useListForSize": false
},
"adminLists": [
{
"type": "local",
"source": "/home/steam/Squad-Server/SquadGame/ServerConfig/Admins.cfg"
}
]
},
"connectors": {
"discord": "{{ server.secrets.squadjs_discord_token }}",
"sqlite": {
"dialect": "sqlite",
"storage": "/home/steam/SquadJS/data/squadjs-data.sqlite"
}
},
"plugins": [
{
"plugin": "AutoKickUnassigned",
"enabled": true,
"warningMessage": "Join a squad, you are are unassigned and will be kicked",
"kickMessage": "Unassigned - automatically removed",
"frequencyOfWarnings": 30,
"unassignedTimer": 360,
"playerThreshold": 50,
"roundStartDelay": 900,
"ignoreAdmins": false,
"ignoreWhitelist": false
},
{
"plugin": "AutoTKWarn",
"enabled": true,
"attackerMessage": "Please apologise for ALL TKs in ALL chat!",
"victimMessage": null
},
{
"plugin": "CBLInfo",
"enabled": false,
"discordClient": "discord",
"channelID": "",
"threshold": 6
},
{
"plugin": "ChatCommands",
"enabled": true,
"commands": [
{
"command": "squadjs",
"type": "warn",
"response": "This server is powered by SquadJS.",
"ignoreChats": []
}
]
},
{
"plugin": "DBLog",
"enabled": false,
"database": "mysql",
"overrideServerID": null
},
{
"plugin": "DiscordAdminBroadcast",
"enabled": true,
"discordClient": "discord",
"channelID": "1064041184147816530",
"color": 16761867
},
{
"plugin": "DiscordAdminCamLogs",
"enabled": false,
"discordClient": "discord",
"channelID": "",
"color": 16761867
},
{
"plugin": "DiscordAdminRequest",
"enabled": true,
"discordClient": "discord",
"channelID": "1064041184147816530",
"ignoreChats": [],
"ignorePhrases": [],
"command": "admin",
"pingGroups": [
"Odin"
],
"pingDelay": 60000,
"color": 16761867,
"warnInGameAdmins": true,
"showInGameAdmins": true
},
{
"plugin": "DiscordChat",
"enabled": true,
"discordClient": "discord",
"channelID": "1064041184147816530",
"chatColors": {},
"color": 16761867,
"ignoreChats": [
]
},
{
"plugin": "DiscordDebug",
"enabled": false,
"discordClient": "discord",
"channelID": "",
"events": []
},
{
"plugin": "DiscordFOBHABExplosionDamage",
"enabled": false,
"discordClient": "discord",
"channelID": "",
"color": 16761867
},
{
"plugin": "DiscordKillFeed",
"enabled": false,
"discordClient": "discord",
"channelID": "",
"color": 16761867,
"disableCBL": false
},
{
"plugin": "DiscordPlaceholder",
"enabled": false,
"discordClient": "discord",
"command": "!placeholder",
"channelID": ""
},
{
"plugin": "DiscordRcon",
"enabled": false,
"discordClient": "discord",
"channelID": "",
"permissions": {},
"prependAdminNameInBroadcast": false
},
{
"plugin": "DiscordRoundWinner",
"enabled": false,
"discordClient": "discord",
"channelID": "",
"color": 16761867
},
{
"plugin": "DiscordRoundEnded",
"enabled": false,
"discordClient": "discord",
"channelID": "",
"color": 16761867
},
{
"plugin": "DiscordServerStatus",
"enabled": true,
"discordClient": "discord",
"messageStore": "sqlite",
"command": "!status",
"disableSubscriptions": false,
"updateInterval": 60000,
"setBotStatus": true
},
{
"plugin": "DiscordSquadCreated",
"enabled": false,
"discordClient": "discord",
"channelID": "",
"color": 16761867,
"useEmbed": true
},
{
"plugin": "DiscordSubsystemRestarter",
"enabled": false,
"discordClient": "discord",
"role": ""
},
{
"plugin": "DiscordTeamkill",
"enabled": false,
"discordClient": "discord",
"channelID": "",
"color": 16761867,
"disableCBL": false
},
{
"plugin": "FogOfWar",
"enabled": false,
"mode": 1,
"delay": 10000
},
{
"plugin": "IntervalledBroadcasts",
"enabled": false,
"broadcasts": [],
"interval": 300000
},
{
"plugin": "SeedingMode",
"enabled": true,
"interval": 600000,
"seedingThreshold": 50,
"seedingMessage": "Seeding Rules Active! Fight only over the middle flags! No FOB Hunting!",
"liveEnabled": true,
"liveThreshold": 52,
"liveMessage": "Live!",
"waitOnNewGames": true,
"waitTimeOnNewGame": 30
},
{
"plugin": "SocketIOAPI",
"enabled": false,
"websocketPort": "",
"securityToken": ""
},
{
"plugin": "TeamRandomizer",
"enabled": true,
"command": "randomize"
}
],
"logger": {
"verboseness": {
"SquadServer": 1,
"LogParser": 1,
"RCON": 1
},
"colors": {
"SquadServer": "yellowBright",
"SquadServerFactory": "yellowBright",
"LogParser": "blueBright",
"RCON": "redBright"
}
}
}

View File

@ -0,0 +1,42 @@
# {{ ansible_managed }}
version: '3.9'
services:
{% for server in squad_servers %}
squad:
image: {{ registry_site }}/{{ server.docker.image }}
container_name: squad-{{ server.docker.name }}
restart: unless-stopped
dns:
- 8.8.8.8
- 8.8.4.4
- 1.1.1.1
volumes:
- {{ squad_server_configs_dir }}/{{ server.docker.name }}:/docker-mount/
- squadjs-data:/home/steam/SquadJS/data/
environment:
- GAMEPORT={{ server.ports.game }}
- QUERYPORT={{ server.ports.query }}
- RCONPORT={{ server.ports.rcon }}
- FIXEDMAXPLAYERS={{ server.max_players | default(100) }}
- RCON_PASSWORD={{ server.secrets.rcon_password }}
ports:
# Game Ports
- {{ server.ports.game }}:{{ server.ports.game }}/tcp
- {{ server.ports.game }}:{{ server.ports.game }}/udp
- {{ server.ports.game|int + 1 }}:{{ server.ports.game|int + 1}}/tcp
- {{ server.ports.game|int + 1 }}:{{ server.ports.game|int + 1}}/udp
# Query Ports
- {{ server.ports.query }}:{{ server.ports.query }}/tcp
- {{ server.ports.query }}:{{ server.ports.query }}/udp
- {{ server.ports.query|int + 1 }}:{{ server.ports.query|int + 1}}/tcp
- {{ server.ports.query|int + 1 }}:{{ server.ports.query|int + 1}}/udp
# RCON Port
- {{ server.ports.rcon }}:{{ server.ports.rcon }}/tcp
- {{ server.ports.rcon }}:{{ server.ports.rcon }}/udp
{% endfor %}
volumes:
squadjs-data:

View File

@ -0,0 +1,54 @@
// {{ ansible_managed }}
/////////////////////////////////////////////////////////////////////////////////////////////
//// Valid access levels are as follows
//// startvote - not used
//// changemap
//// pause - Pause server gameplay
//// cheat - Use server cheat commands
//// private - Password protect server
//// balance - Group Ignores server team balance
//// chat - Admin chat and Server broadcast
//// kick
//// ban
//// config - Change server config
//// cameraman - Admin spectate mode
//// immune - Cannot be kicked / banned
//// manageserver - Shutdown server
//// featuretest - Any features added for testing by dev team
//// reserve - Reserve slot
//// demos - Record Demos on the server side via admin commands
//// clientdemos - Record Demos on the client side via commands or the replay UI.
//// debug - show admin stats command and other debugging info
//// teamchange - No timer limits on team change
//// forceteamchange - Can issue the ForceTeamChange command
//// canseeadminchat - This group can see the admin chat and teamkill/admin-join notifications
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
// The Format for adding groups is:
// Group=<Group Name>:<Permission 1>,<Permission 2>,<Permission 3>
//
// For example:
// Group=MyGroup: pause, demos, changemap
//
// The groups below are the defaults, add to or change them as needed:
/////////////////////////////////////////////////////////////////////////////////////////////
{% for group in server.groups %}
Group={{ group.name }}:{{ group.permissions | join(',') }}
{% endfor %}
/////////////////////////////////////////////////////////////////////////////////////////////
// The format for adding admins is:
// Admin=<Steam ID #>:<Group Name>
//
// For example:
// Admin=123456:Admin // Adam the admin
// Admin=654321:Moderator // Molly the moderator
//
// Add your own below:
/////////////////////////////////////////////////////////////////////////////////////////////
{% for admin in server.admins %}
Admin={{ admin.steam64 }}:{{ admin.group }} // {{ admin.name }}
{% endfor %}

View File

@ -0,0 +1,53 @@
N/A Banned:76561199405442900:1667714524 //Automatic Teamkill Kick
N/A Banned:76561198059250541:1668141424 //Automatic Teamkill Kick
N/A Banned:76561198148769258:1668230277 //Automatic Teamkill Kick
N/A Banned:76561199388285915:1668239327 //Automatic Teamkill Kick
N/A Banned:76561198439128612:1668304426 //Automatic Teamkill Kick
N/A Banned:76561198417943566:1668304731 //Automatic Teamkill Kick
N/A Banned:76561199094462146:1668306144 //Automatic Teamkill Kick
N/A Banned:76561198835580857:1668377354 //Automatic Teamkill Kick
N/A Banned:76561198259419557:1668379114 //Automatic Teamkill Kick
N/A Banned:76561199018088874:1668408559 //Automatic Teamkill Kick
N/A Banned:76561199050057768:1668497248 //Automatic Teamkill Kick
N/A Banned:76561198881916014:1668568999 //Automatic Teamkill Kick
N/A Banned:76561198881916014:1668568999 //Automatic Teamkill Kick
N/A Banned:76561198360652170:1668582584 //Automatic Teamkill Kick
N/A Banned:76561199000113460:1669166782 //Automatic Teamkill Kick
N/A Banned:76561197996356716:1670560397 //Automatic Teamkill Kick
N/A Banned:76561198056113440:1670745135 //Automatic Teamkill Kick
N/A Banned:76561198032316772:1670813490 //Automatic Teamkill Kick
N/A Banned:76561198122076586:1670825913 //Automatic Teamkill Kick
N/A Banned:76561198122076586:1670825913 //Automatic Teamkill Kick
N/A Banned:76561198122076586:1670825913 //Automatic Teamkill Kick
N/A Banned:76561199197083951:1670986314 //Automatic Teamkill Kick
N/A Banned:76561199108480380:1671084273 //Automatic Teamkill Kick
N/A Banned:76561199286188264:1671256821 //Automatic Teamkill Kick
N/A Banned:76561199377023376:1671768811 //Automatic Teamkill Kick
N/A Banned:76561198173435573:1671860253 //Automatic Teamkill Kick
N/A Banned:76561198334281545:1671860359 //Automatic Teamkill Kick
N/A Banned:76561198076150702:1671870277 //Automatic Teamkill Kick
N/A Banned:76561198076150702:1671870277 //Automatic Teamkill Kick
N/A Banned:76561198076150702:1671870277 //Automatic Teamkill Kick
N/A Banned:76561198076150702:1671870277 //Automatic Teamkill Kick
N/A Banned:76561198076150702:1671870277 //Automatic Teamkill Kick
N/A Banned:76561199092456239:1671957266 //Automatic Teamkill Kick
N/A Banned:76561198171124310:1672033483 //Automatic Teamkill Kick
N/A Banned:76561198171124310:1672033483 //Automatic Teamkill Kick
N/A Banned:76561198171124310:1672033483 //Automatic Teamkill Kick
N/A Banned:76561198171124310:1672033483 //Automatic Teamkill Kick
N/A Banned:76561198976927351:1672040509 //Automatic Teamkill Kick
N/A Banned:76561198099687994:0 //R1. - Racism, sexism, homophobia, antisemitism, religious or political intolerance, or any other form of discrimination will not be tolerated. Discord.gg/asg
N/A Banned:76561199193146972:1672557986 //Automatic Teamkill Kick
N/A Banned:76561198065169905:1672709281 //Automatic Teamkill Kick
N/A Banned:76561198065169905:1672709281 //Automatic Teamkill Kick
N/A Banned:76561199224307830:1672899496 //Automatic Teamkill Kick
N/A Banned:76561198364053540:1673062856 //Automatic Teamkill Kick
N/A Banned:76561198364053540:1673062856 //Automatic Teamkill Kick
N/A Banned:76561198364053540:1673062856 //Automatic Teamkill Kick
N/A Banned:76561198364053540:1673062856 //Automatic Teamkill Kick
N/A Banned:76561199362207481:1673080316 //Automatic Teamkill Kick
N/A Banned:76561198266438209:1673401357 //Automatic Teamkill Kick
N/A Banned:76561198402767045:1673503393 //Automatic Teamkill Kick
N/A Banned:76561198082543013:1673670713 //Automatic Teamkill Kick
N/A Banned:76561198058894842:1673670821 //Automatic Teamkill Kick

View File

@ -0,0 +1,23 @@
# Here you can control mod-specific server settings. Mods can use blueprint node "GetCustomServerSetting" to gather the contents of this file.
# This section used to exist in server.cfg
// Amount of players needed to start Pre-Live countdown, integer. Default=50.
#SeedPlayersThreshold=50
// After reaching the SeedPlayersThreshold, if some players disconnect but the current player count stays at or above this value, dont stop the
// Pre-Live countdown, integer. Should be greater than zero and less than SeedPlayersThreshold to be considered enabled. default=45.
#SeedMinimumPlayersToLive=45
// Match length in seconds, integer. Default=21600 (6 hours)
#SeedMatchLengthSeconds=21600
// Enable or Disable availability of all kits during seeding phase, boolean (valid values are 0 and 1), default=1
#SeedAllKitsAvailable=1
// Initial number of tickets for both teams, integer. Default=100
#SeedInitialTickets=100
// Length of the pre-live countdown, float. Default=60.0
#SeedSecondsBeforeLive=60.0
// All default values listed above will be used if the corresponding setting is not present on config file or commented out.

View File

@ -0,0 +1,10 @@
# v3.0 EXCLUDED FACTION SETUP LIST : This list must use FactionSetup ID's, which are different from display names !
//Faction Setup Examples:
//CAF_LightInfantry_1PPCLI
//CAF_LightInfantry_3PPCLI
//INS_LightInfantry_OmarsFreedomFighters
//MIL_LightInfantry_PeoplesFront
//RUS_LightInfantry_1398th
//USA_LightInfantry_10thMountain
//USA_LightInfantry_149MEB

View File

@ -0,0 +1,11 @@
# EXCLUDED FACTION LIST : The listed factions must use Faction ID, which is different from UI display names !
//AUS
//CAF
//GB
//INS
//MEA
//MIL
//RUS
//US
//USMC

View File

@ -0,0 +1,37 @@
# v3.0 EXCLUDED LAYER LIST
// NOTE: This list uses Layer ID names, which is different from UI display names.
// NOTE: this file is used for servers running with Layer voting. This setting can be found in your Server.cfg file (make sure to use a fresh one as your basis).
// Specifying a layer here will hide it from the list when you use "adminchangelayer" or "adminsetnextlayer"
// NOTE: in-line comments will not work in this config until further notice. Comment lines should be in separate lines, if used.
AlBasrah_TA_v1
Tallil_TA_v1
Narva_TA_v1
Yehorivka_TA_v1
Anvil_AAS_v1
Anvil_AAS_v2
Anvil_Invasion_v1
Anvil_Invasion_v2
Anvil_RAAS_v1
Anvil_RAAS_v2
Anvil_RAAS_v3
Anvil_RAAS_v4
Anvil_Skirmish_v1
Anvil_TC_v1
Belaya_TC_v1
LashkarValley_TC_v3
// JensensRange_GB-MIL
// JensensRange_US-RUS
// JensensRange_USMC-MEA
// JensensRange_CAF-INS
// JensensRange_AUS-RUS
PacificProvingGrounds_USMC-RUS
PacificProvingGrounds_USMC-MEA
Tutorial_Helicopter
Tutorial_Infantry

View File

@ -0,0 +1,32 @@
# v3.0 EXCLUDED LEVEL LIST : This must use the Level Id : this is different from UI display names !
// NOTE: This file is used for servers running with Levels voting.
// This setting can be found in your Server.cfg file (make sure to use a fresh one as your basis).
// NOTE: in-line comments will not work in this config until further notice. Comment lines should be in separate lines, if used.
TutorialInfantry
TutorialHelicopter
// JensensRange
PacificProvingGrounds
// AlBasrah
// Anvil
// Belaya
// BlackCoast
// Chora
// Fallujah
// FoolsRoad
// GooseBay
// Gorodok
// Kamdesh
// Kohat
// Kokan
// Lashkar
// Logar
// Manic-5
// Mestia
// Mutaha
// Narva
// Skorpo
// Sumari
// Tallil
// Yehorivka

View File

@ -0,0 +1,437 @@
// {{ ansible_managed }}
// v2.0 LAYER_ROTATION: These must be Layer_Id's; those_are_different from_display names! I.e. 'Belaya_AAS_v1' is correct, 'Belaya AAS v1' is not.
// NOTE: this file is used for servers running in MapRotationMode=LayerList, running in order, or for servers running in MapRotationMode=LayerList_Randomized, where the below layers are rotated randomly. This setting can be found in your Server.cfg file (make sure to use a fresh one as your basis).
// NOTE: in-line comments will not work in this config until further notice. Comment lines should be in separate lines, if used.
// To make it easier to see our layer rotation make a copy of active layers here:
{% for layer in server.layers %}
{{ layer }}
{% endfor %}
// HERE IS THE FULL LAYER LIST
// Anvil_AAS_v1
// Anvil_AAS_v2
// Anvil_Invasion_v1
// Anvil_Invasion_v2
// Anvil_RAAS_v1
// Anvil_RAAS_v2
// Anvil_RAAS_v3
// Anvil_RAAS_v4
// Anvil_Skirmish_v1
// Anvil_TC_v1
// AlBasrah_AAS_v1
// AlBasrah_AAS_v2
// AlBasrah_AAS_v3
// AlBasrah_Insurgency_v1
// AlBasrah_Invasion_v1
// AlBasrah_Invasion_v2
// AlBasrah_Invasion_v3
// AlBasrah_Invasion_v4
// AlBasrah_Invasion_v5
// AlBasrah_Invasion_v6
// AlBasrah_Invasion_v7
// AlBasrah_Invasion_v8
// AlBasrah_RAAS_v1
// AlBasrah_Seed_v1
// AlBasrah_Skirmish_v1
// AlBasrah_Skirmish_v2
// Track Attack layers are small-scale gameplay layers for a tournament gamemode, not meant for regular servers.
// AlBasrah_TA_v1
// AlBasrah_TC_v1
// AlBasrah_TC_v2
// Belaya_AAS_v1
// Belaya_AAS_v2
// Belaya_AAS_v3
// Belaya_Invasion_v1
// Belaya_Invasion_v2
// Belaya_Invasion_v3
// Belaya_RAAS_v1
// Belaya_RAAS_v2
// Belaya_RAAS_v3
// Belaya_RAAS_v4
// Belaya_RAAS_v5
// Belaya_Skirmish_v1
// Belaya_TC_v1
// BlackCoast_AAS_v1
// BlackCoast_AAS_v2
// BlackCoast_Invasion_v1
// BlackCoast_Invasion_v2
// BlackCoast_Invasion_v3
// BlackCoast_Invasion_v4
// BlackCoast_RAAS_v1
// BlackCoast_RAAS_v2
// BlackCoast_RAAS_v3
// BlackCoast_RAAS_v4
// BlackCoast_Seed_v1
// BlackCoast_Skirmish_v1
// Chora_AAS_v1
// Chora_AAS_v2
// Chora_AAS_v3
// Chora_AAS_v4
// Chora_AAS_v5
// Chora_AAS_v6
// Chora_Insurgency_v1
// Chora_Invasion_v1
// Chora_Invasion_v2
// Chora_RAAS_v1
// Chora_RAAS_v2
// Chora_RAAS_v3
// Chora_RAAS_v4
// Chora_RAAS_v5
// Chora_Skirmish_v1
// Chora_TC_v1
// Fallujah_AAS_v1
// Fallujah_AAS_v2
// Fallujah_Insurgency_v1
// Fallujah_Invasion_v1
// Fallujah_Invasion_v2
// Fallujah_Invasion_v3
// Fallujah_Invasion_v4
// Fallujah_Invasion_v5
// Fallujah_Invasion_v6
// Fallujah_RAAS_v1
// Fallujah_RAAS_v2
// Fallujah_RAAS_v3
// Fallujah_RAAS_v4
// Fallujah_RAAS_v5
// Fallujah_RAAS_v6
// Fallujah_RAAS_v7
// Fallujah_Seed_v1
// Fallujah_Skirmish_v1
// Fallujah_Skirmish_v2
// Fallujah_TC_v1
// Fallujah_TC_v2
// FoolsRoad_AAS_v1
// FoolsRoad_AAS_v2
// FoolsRoad_Destruction_v1
// FoolsRoad_Invasion_v1
// FoolsRoad_RAAS_v1
// FoolsRoad_RAAS_v2
// FoolsRoad_RAAS_v3
// FoolsRoad_RAAS_v4
// FoolsRoad_RAAS_v5
// FoolsRoad_Skirmish_v1
// FoolsRoad_Skirmish_v2
// FoolsRoad_TC_v1
// GooseBay_AAS_v1
// GooseBay_AAS_v2
// GooseBay_Invasion_v1
// GooseBay_Invasion_v2
// GooseBay_Invasion_v3
// GooseBay_Invasion_v4
// GooseBay_Invasion_v5
// GooseBay_RAAS_v1
// GooseBay_RAAS_v2
// GooseBay_RAAS_v3
// GooseBay_RAAS_v4
// GooseBay_Skirmish_v1
// Gorodok_AAS_v1
// Gorodok_AAS_v2
// Gorodok_AAS_v3
// Gorodok_AAS_v4
// Gorodok_Destruction_v1
// Gorodok_Insurgency_v1
// Gorodok_Invasion_v1
// Gorodok_Invasion_v2
// Gorodok_Invasion_v3
// Gorodok_RAAS_v01
// Gorodok_RAAS_v02
// Gorodok_RAAS_v03
// Gorodok_RAAS_v04
// Gorodok_RAAS_v05
// Gorodok_RAAS_v06
// Gorodok_RAAS_v07
// Gorodok_RAAS_v08
// Gorodok_RAAS_v09
// Gorodok_RAAS_v10
// Gorodok_RAAS_v11
// Gorodok_RAAS_v12
// Gorodok_Skirmish_v1
// Gorodok_TC_v1
// Gorodok_TC_v2
// Harju_AAS_v1
// Harju_AAS_v2
// Harju_AAS_v3
// Harju_Invasion_v1
// Harju_Invasion_v2
// Harju_Invasion_v3
// Harju_Invasion_v4
// Harju_Invasion_v5
// Harju_RAAS_v1
// Harju_RAAS_v2
// Harju_RAAS_v3
// Harju_RAAS_v4
// Harju_RAAS_v5
// Harju_RAAS_v6
// Harju_Seed_v1
// Harju_Skirmish_v1
// Harju_Skirmish_v2
// Jensen's range layers have no gamemode and are not intended for regular servers.
// JensensRange_AUS-RUS
// Jensen's range layers have no gamemode and are not intended for regular servers.
// JensensRange_CAF-INS
// Jensen's range layers have no gamemode and are not intended for regular servers.
// JensensRange_GB-MIL
// Jensen's range layers have no gamemode and are not intended for regular servers.
// JensensRange_USA-RUS
// Jensen's range layers have no gamemode and are not intended for regular servers.
// JensensRange_USMC-MEA
// JensensRange_AUS-PLA
// Kamdesh_AAS_v1
// Kamdesh_Insurgency_v1
// Kamdesh_Insurgency_v2
// Kamdesh_Invasion_v1
// Kamdesh_Invasion_v2
// Kamdesh_Invasion_v3
// Kamdesh_Invasion_v4
// Kamdesh_Invasion_v5
// Kamdesh_Invasion_v6
// Kamdesh_Invasion_v7
// Kamdesh_RAAS_v1
// Kamdesh_RAAS_v2
// Kamdesh_RAAS_v3
// Kamdesh_RAAS_v4
// Kamdesh_RAAS_v5
// Kamdesh_RAAS_v6
// Kamdesh_RAAS_v7
// Kamdesh_Skirmish_v1
// Kamdesh_TC_v1
// Kamdesh_TC_v2
// Kamdesh_TC_v3
// Kamdesh_TC_v4
// Kohat_AAS_v1
// Kohat_AAS_v2
// Kohat_AAS_v3
// Kohat_Insurgency_v1
// Kohat_Invasion_v1
// Kohat_Invasion_v2
// Kohat_Invasion_v3
// Kohat_Invasion_v4
// Kohat_RAAS_v1
// Kohat_RAAS_v2
// Kohat_RAAS_Kohat_RAAS_v4
// Kohat_RAAS_v5
// Kohat_RAAS_v6
// Kohat_RAAS_v7
// Kohat_RAAS_v8
// Kohat_RAAS_v9
// Kohat_RAAS_v10
// Kohat_Skirmish_v1
// Kohat_TC_v1
// Kokan_AAS_v1
// Kokan_AAS_v2
// Kokan_AAS_v3
// Kokan_Insurgency_v1
// Kokan_Invasion_v1
// Kokan_RAAS_v1
// Kokan_RAAS_v2
// Kokan_RAAS_v3
// Kokan_RAAS_v4
// Kokan_Skirmish_v1
// Kokan_TC_v1
// Lashkar_AAS_v1
// Lashkar_AAS_v2
// Lashkar_AAS_v3
// Lashkar_AAS_v4
// Lashkar_Insurgency_v1
// Lashkar_Invasion_v1
// Lashkar_Invasion_v2
// Lashkar_Invasion_v3
// Lashkar_Invasion_v4
// Lashkar_RAAS_v1
// Lashkar_RAAS_v2
// Lashkar_RAAS_v3
// Lashkar_RAAS_v4
// Lashkar_RAAS_v5
// Lashkar_Skirmish_v1
// Lashkar_TC_v1
// Lashkar_TC_v2
// Lashkar_TC_v3
// Lashkar_TC_v4
// Lashkar_TC_v5
// Logar_AAS_v1
// Logar_AAS_v2
// Logar_AAS_v3
// Logar_Insurgency_v1
// Logar_RAAS_v1
// Logar_RAAS_v2
// Logar_Skirmish_v1
// Logar_Seed_v1
// Logar_TC_v1
// Manic_AAS_v1
// Manic_AAS_v2
// Manic_Invasion_v1
// Manic_Invasion_v2
// Manic_RAAS_v1
// Manic_RAAS_v2
// Manic_RAAS_v3
// Manic_RAAS_v4
// Manic_Skirmish_v1
// Manic_Skirmish_v2
// Manic_TC_v1
// Mestia_AAS_v1
// Mestia_AAS_v2
// Mestia_Invasion_v1
// Mestia_Invasion_v2
// Mestia_RAAS_v1
// Mestia_RAAS_v2
// Mestia_Skirmish_v1
// Mestia_TC_v1
// Mutaha_AAS_v1
// Mutaha_AAS_v2
// Mutaha_AAS_v3
// Mutaha_AAS_v4
// Mutaha_Invasion_v1
// Mutaha_Invasion_v2
// Mutaha_Invasion_v3
// Mutaha_Invasion_v4
// Mutaha_RAAS_v1
// Mutaha_RAAS_v2
// Mutaha_RAAS_v3
// Mutaha_RAAS_v4
// Mutaha_RAAS_v5
// Mutaha_RAAS_v6
// Mutaha_RAAS_v7
// Mutaha_Skirmish_v1
// Mutaha_TC_v1
// Mutaha_TC_v2
// Narva_AAS_v1
// Narva_AAS_v2
// Narva_AAS_v3
// Narva_AAS_v4
// Narva_Destruction_v1
// Narva_Invasion_v1
// Narva_Invasion_v2
// Narva_Invasion_v3
// Narva_Invasion_v4
// Narva_Invasion_v5 Narva_RAAS_v1
// Narva_RAAS_v2
// Narva_RAAS_v3
// Narva_RAAS_v4
// Narva_RAAS_v5
// Narva_RAAS_v6
// Narva_Skirmish_v1
// Track Attack layers are small-scale gameplay layers for a tournament gamemode, not meant for regular servers.
// Narva_TA_v1
// Narva_TC_v1
// Narva_TC_v2
// Pacific Proving Grounds amphibious training layers are meant for open sandbox, they have no gamemode and are not intended for regular servers.
// PacificProvingGrounds_USMC-RUS
// Pacific Proving Grounds amphibious training layers are meant for open sandbox, they have no gamemode and are not intended for regular servers.
// PacificProvingGrounds_USMC-MEA
// Skorpo_AAS_v1
// Skorpo_Invasion_v1
// Skorpo_Invasion_v2
// Skorpo_Invasion_v3
// Skorpo_Invasion_v4
// Skorpo_RAAS_v1
// Skorpo_RAAS_v2
// Skorpo_RAAS_v3
// Skorpo_RAAS_v4
// Skorpo_RAAS_v5
// Skorpo_Skirmish_v1
// Skorpo_TC_v1
// Skorpo_TC_v2
// Skorpo_TC_v3
// Sumari_AAS_v1
// Sumari_AAS_v2
// Sumari_AAS_v3
// Sumari_AAS_v4
// Sumari_AAS_v5
// Sumari_Insurgency_v1
// Sumari_Invasion_v1
// Sumari_RAAS_v1
// Sumari_RAAS_v2
// Sumari_Skirmish_v1
// Sumari_Seed_v1
// Sumari_Seed_v2
// Sumari_Seed_v3
// Sumari_TC_v1
// Tallil_AAS_v1
// Tallil_AAS_v2
// Tallil_Invasion_v1
// Tallil_Invasion_v2
// Tallil_Invasion_v3
// Tallil_Invasion_v4
// Tallil_Invasion_v5
// Tallil_RAAS_v1
// Tallil_RAAS_v2
// Tallil_RAAS_v3
// Tallil_RAAS_v4
// Tallil_RAAS_v5
// Tallil_RAAS_v6
// Tallil_RAAS_v7
// Tallil_RAAS_v8
// Tallil_Seed_v1
// Tallil_Seed_v2
// Tallil_Skirmish_v1
// Tallil_Skirmish_v2
// Tallil_Skirmish_v3
// Track Attack layers are small-scale gameplay layers for a tournament gamemode, not meant for regular servers.
// Tallil_TA_v1
// Tallil_Tanks_v1
// Tallil_Tanks_v2
// Tallil_TC_v1
// Tutorial layers are not meant to be run on servers.
// Tutorial_Helicopter
// Tutorial layers are not meant to be run on servers.
// Tutorial_Infantry
// Yehorivka_AAS_v1
// Yehorivka_AAS_v2
// Yehorivka_AAS_v3
// Yehorivka_AAS_v4
// Yehorivka_Destruction_v1
// Yehorivka_Invasion_v1
// Yehorivka_Invasion_v2
// Yehorivka_Invasion_v3
// Yehorivka_RAAS_v01
// Yehorivka_RAAS_v02
// Yehorivka_RAAS_v03
// Yehorivka_RAAS_v04
// Yehorivka_RAAS_v05
// Yehorivka_RAAS_v06
// Yehorivka_RAAS_v07
// Yehorivka_RAAS_v08
// Yehorivka_RAAS_v09
// Yehorivka_RAAS_v10
// Yehorivka_RAAS_v11
// Yehorivka_RAAS_v12
// Yehorivka_RAAS_v13
// Yehorivka_Skirmish_v1
// Yehorivka_Skirmish_v2
// Yehorivka_Skirmish_v3
// Track Attack layers are small-scale gameplay layers for a tournament gamemode, not meant for regular servers.
// Yehorivka_TA_v1
// Yehorivka_TC_v1
// Yehorivka_TC_v2
// Yehorivka_TC_v3

View File

@ -0,0 +1,27 @@
# v3.0 LEVEL ROTATION : These must be Level ID's, which are different from UI display names !
// NOTE: this file is used for servers running in MapRotationMode=LevelList, running in order, or for servers running in MapRotationMode=LevelList_Randomized, where the below layers are rotated randomly. This setting can be found in your Server.cfg file (make sure to use a fresh one as your basis).
// NOTE: in-line comments will not work in this config until further notice. Comment lines should be in separate lines, if used.
AlBasrah
Anvil
Belaya
BlackCoast
Chora
Fallujah
FoolsRoad
GooseBay
Gorodok
Kamdesh
Kohat
Kokan
Lashkar
Logar
Manic-5
Mestia
Mutaha
Narva
Skorpo
Sumari
Tallil
Yehorivka

View File

@ -0,0 +1 @@
{{ server.secrets.license }}

View File

@ -0,0 +1,91 @@
Welcome to ASG server
Asgard Discord https://discord.gg/asg
Rule #1 Respect all players and community members.
- Racism, sexism, homophobia, antisemitism, religious or political intolerance, or any other form of discrimination will not be tolerated and will result in a permanent ban.
- Toxicity will not be tolerated. This is a new-player friendly server and mistakes happen. Toxicity will be penalized according to severity.
Rule #2 No advertising or solicitation.
- Encouraging users to join a different clan or discord servers is strictly prohibited. Solicitation includes requests for gear, requests for in-game items, requests for community positions.
- This includes using your name to promote a website, discord, clan, communities, organization etc.
Rule #3 No stream sniping/Ghosting.
- This includes joining game channels or streams to find the location of other players
- This is providing the enemy team with information that they wouldnt normally have such as:
*Having someone in the opposing team giving you information
*Telling people over the in-game chat where friendly positions are (HABs, FOBs, vehicles, players, next points, etc.)
*Giving the ticket count to the opposing team
Rule #4 Spamming or flooding the chat or voice chat is prohibited.
- Excessive loud noises, screaming, soundboard usage, hot-micing, etc
- Absolutely no mic spamming/music during the staging phase
- After the staging phase in game music and sound boards are permitted as long as they are not in excess. Be respectful and considerate of volume and context.
Rule #5 Members and visitors of our Squad and Discord communities are expected to act with respect and maturity.
- In-game or server issues should be directed towards an admin using the !admin call out in-game.
- Issues may also be reported in our Discord, but only after the issue is reported in the game.
- Admins have the ability to interpret suspect actions and behavior and take any action they see fit in order to protect the integrity of the server and player community. This is per OWI Policy.
Rule #6 Vehicle claiming rules
- First properly named squads have priority on vehicles. (e.g ARE allowed: “Tank”, “3x 30MM BTR”, “One Logi”, “Heli”)
- You may not claim multiple vehicle types for one squad. (e.g. BMP + X2 BTR-82A)
- Vehicles that are already occupied at the start of the round (Start of the round is after the preparation phase) cannot be overtaken by a late squad with the associating name.
- If no named squads are made for a vehicle, it is first come, first serve.
- 1-man locked squads have to be named and are only allowed for non crewman vehicles and logistics.
*“Non crewman vehicles” 🠮 Scout Car, Open-top bulldog, logistical/transport truck, some MT-LB's, etc.
- No 1-manning vehicles that require a crewman kit.
*Vehicles that require a crewman kit 🠮 MBTs, IFVs, APCs, etc.
- You must have 2 crewmen before leaving main.
- You will not drive out of main to pick someone up.
- Incase of loss of a crewman try to save the vehicle & return to main.
General Server Rules
We strive to make the games for all parties involved fun / entertaining and not frustrating.
Rule #7 No main camping
- If your intent is to kill something coming out of main before it has a chance to join the battle that is considered main camping. This includes placing mines and/or IEDs, positioning infantry weapon emplacements, or vehicles ANYWHERE on a map within the line of sight of main specifically for killing players and destroying vehicles as they leave.
Rule #8 Squad Lead's must have a SL Kit and a mic. This includes Lead Pilot and Lead Crewman kits.
- If you create a squad you must intend to lead it, if you make a squad by accident, disband the squad.
-- Do NOT create a Squad to pass off SL so you can get a kit youd like to play.
-- Please dont create a Squad should you have to leave in the foreseeable future.
Rule #9 No intentional Teamkills. Apologize for all TKs in chat. (Default key in-game is J).
* Revenge TKs also count under this rule (Getting team killed and team killing in retaliation). TKs under friends and/or TKs with good will (use the respawn command in the in-game chat).
Rule #10 No cheating, hacking, exploiting. Exploiting known bugs and/or using known third-party tools.
Rule #11 No Griefing
Griefing includes:
* Intentional asset wasting;
* Driving/Flying vehicles off map;
* Driving/Flying vehicles into enemy positions with the intent to die/troll;
* Intentionally keeping a vehicle out of the game;
* Helicopter Ramming;
* Use of the unarmed kit;
* Intentional TKs.
-- Player names must have at least two English characters in order to make callouts. This is to help communication between players.
-- English must be used in Command Chat. Squad-specific languages are permitted as long as English is used outside of the squad. This is to help communication between players.
-- Squad leaders can kick squad members for any reason. This is per OWI Policy and any Griefing after being kicked will be met with punishment.
-- If competitive players choose to play on our New Player Friendly server we ask that no more than 4 competitive players be on the same side/team.
- Admins reserve the right to split up clans or communities if games become too one-sided. This includes our own community {ASG} members. This is to keep games within the server enjoyable, and not one-sided as we are a new player friendly server.
Seeding Rules
"These are specific rules designed for seeding. A server is "seeding" when it is attempting to grow its population to a sustainable rate. The population for seeding to end varies server by server and so do the rules."
1. Fight over the middle cap.
2. No FOBs on the middle cap.
3. No emplacements (mortars, TOWs, etc.)
4. No digging up enemy FOBs.
5. Live will be called at admin's discretion.
6. Logis and transports only (no armed vehicles, including MATVs, Scout Cars, etc.)
7. After live is called, emplacements and attacking the enemies FOB radio/HAB is still prohibited.

View File

@ -0,0 +1,45 @@
// {{ ansible_managed }}
// Edit this IP to bind the RCON socket to an alternate IP address.
// Alternatively, set this from the command line with the argument:
// RCONIP=0.0.0.0
IP=0.0.0.0
// Edit this IP to bind the RCON socket to an alternate port.
// Alternatively, set this from the command line with the argument:
// RCONPORT=21115
Port={{ server.ports.rcon }}
// Set this to enable the usage of RCON with the given password for login.
// Leaving this empty will keep RCON turned off.
// Alternatively, set this from the command line with the argument:
// RCONPASSWORD=MyPassword
Password={{ server.secrets.rcon_password }}
// Set this to set the maximum number of allowable concurrent RCON
// connections to the server.
// Alternatively, set this from the command line with the argument:
// RCONMAXCONNECTIONS=5
MaxConnections=5
// Edit this to customize the number of seconds without contact from a connected
// console before the server checks to see if the session is still active, or if
// it got disconnected. Supports values between 0 and 86400 (1 day). Set to zero
// to disable the timeout.
// Alternatively, set this from the command line with the argument:
// RCONCONNECTIONTIMEOUT=300
ConnectionTimeout=300
// Edit this to customize the number of seconds without contact from a connected
// console before the server sends a TCP KEEPALIVE to check if the session is
// still active, or if it got disconnected. Supports values between 30 and 3600 (1 hour).
// Alternatively, set this from the command line with the argument:
// RCONSECONDSBEFORETIMEOUTCHECK=120
SecondsBeforeTimeoutCheck=120
// Edit this to customize the number of seconds the server will wait for the
// console to authenticate when a connection has been established. Supports
// values between 0 and 3600 (1 hour). Set to zero to disable the timeout.
// Alternatively, set this from the command line with the argument:
// RCONSECONDSBEFORETIMEOUTCHECK=5
AuthenticationTimeout=5

View File

@ -0,0 +1,5 @@
// {{ ansible_managed }}
{% for remote in server.remote_admin_hosts %}
{{ remote }}
{% endfor %}

View File

@ -0,0 +1,11 @@
// {{ ansible_managed }}
//////////////////////////////////////////////////////////////////////////
//// Place the urls to your ban lists here. The banlists must conform ////
//// to the Bans.cfg format <steamid>:<timestamp of unban> //Reason ////
//// 1 url per line ////
//// EX: http://mysite.com/banlists/ban-list.cfg ////
//////////////////////////////////////////////////////////////////////////
{% for ban_url in server.ban_urls %}
{{ ban_url }}
{% endfor %}

View File

@ -0,0 +1,76 @@
// {{ ansible_managed }}
ServerName="{{ server.name }}"
// Control visibility in the server browser
ShouldAdvertise="true"
// Set the server to LAN mode
IsLANMatch="false"
// Max player count on the server
MaxPlayers="{{ server.max_players | default(100) }}"
// Number of reserved slots for admins / members
NumReservedSlots="2"
// Size of the server queuing, for regular user
PublicQueueLimit="25"
// Map rotation mode: it can be
// LevelList(use order in level rotation config file)
LayerList (use order in layer rotation config file)
// or
// LevelList_Randomized
// LayerList_Randomized
// which are randomized version of previous options
MapRotationMode="LayerList"
// Should the Map/Layer rotations list be randomized at start?
RandomizeAtStart="false"
// Should Faction be voted for on generic layers? Randomized if false.
UseVoteFactions="false"
// Should next Map be voted for at end of round?
UseVoteLevel="false"
// Should next Layer be voted for at end of round?
UseVoteLayer="false"
// Completly Allow or Disallow Team change to all players. Only user with Level_Balance access level can bypass this flag
AllowTeamChanges="true"
// If set to false, players can change teams regardless of team balance. Otherwise, the NumPlayersDiffForTeamChanges Value is used
PreventTeamChangeIfUnbalanced="true"
// Maximum Allowed difference in player count between teams. This takes into account the team the player leaves and the team the player joins
NumPlayersDiffForTeamChanges="2"
RejoinSquadDelayAfterKick="180"
RecordDemos="true"
// Whether public clients are allowed to record.
// If you do not want public clients to record, but you do want to allow certain ones to, you can give the admin access level "ClientDemos".
// There is a difference between "ClientDemos" and "Demos". "Demos" allows access to server commands for recording server-sided demos, while "ClientDemos" only allows clientside demos (no admin commands)
AllowPublicClientsToRecord="false"
ServerMessageInterval="1200"
// Forces the server to do non-seamless travel (disconnect when changing maps) every X seconds
// ForceNonSeamlessTravelIntervalSeconds=43200
// The following are required for Licensed servers, but can be changed for non-licensed servers
TKAutoKickEnabled="True"
AutoTKBanNumberTKs="7"
AutoTKBanTime="3600"
VehicleKitRequirementDisabled="false"
AllowCommunityAdminAccess="true"
// Only Offworld Industries developers are admins
AllowDevProfiling="true"
AllowQA="true"
// The below commands are optional for all servers
VehicleClaimingDisabled="false"

View File

@ -0,0 +1,5 @@
// {{ ansible_managed }}
{% for message in server.messages %}
{{ message }}
{% endfor %}

View File

@ -0,0 +1,2 @@
localhost

View File

@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- squad-server

View File

@ -0,0 +1,2 @@
---
# vars file for squad-server