This plugin allows you to have a (optional: persistent) greenieboard for the top x (default: 10) players and to give players the opportunity to analyse their carrier landings.
Note
The landing quality marks will only be generated for landings* on the DCS Super Carrier module unless you use MOOSE
AIRBOSS (see below).
missionstats have to be enabled for your server.**
You can integrate your LSO comments and trapsheets generated by Moose AIRBOSS into DCSServerBot.
To do so, follow the configuration example below. DCSServerBot will detect your landings and generate the needed
information for players, so that you can check out your landings with the /traps info
command.
The included trapsheet-graphs are taken from HypeMan, so credits go to Rob <3!
I can't do a full Moose AIRBOSS documentation here, you guys want to look at this
link instead. To use the
full capabilities of DCSServerBot, I would expect that you save Trapsheet data in addition to the normal LSO comments.
Both are being stored in CSV files, usually somewhere below your Saved Games<instance>\ folder. You need to configure
this folder and the format of your files in the greenieboard.json, see the example below.
I would recommend to use separate files per carrier.
Note
Moose.AIRBOSS stores a CSV file for every trap in the "basedir" you configured for your servers. You can add the directory to your Cleanup-service to get rid of these files after a while.
To integrate DCSServerBot into your lua code using Moose AIRBOSS, you need to send the following structure to the bot after the trapsheet is written to disk:
local airboss=AIRBOSS:New("CVN-73", "CVN-73")
function airboss:OnAfterLSOGrade(from, event, to, playerData, myGrade)
player_name = playerData.name:gsub('[%p]', '')
[...] -- do some magic in here, like SH break, etc.
trapsheet = "AIRBOSS-trapsheet-" .. player_name
airbossWashington:SetTrapSheet(nil, trapsheet)
[...]
self:_SaveTrapSheet(playerData, myGrade)
msg = {}
msg.command = "onMissionEvent"
msg.eventName = "S_EVENT_AIRBOSS"
msg.initiator = {}
msg.initiator.name = playerData.name
msg.place = {}
msg.place.name = myGrade.carriername
msg.points = myGrade.points
msg.grade = myGrade.grade
msg.details = myGrade.details
msg.case = myGrade.case
msg.wire = playerData.wire
msg.trapsheet = trapsheet
msg.time = timer.getTime()
dcsbot.sendBotTable(msg)
end
A sample file is included in plugins/greenieboard/sample/airboss.lua
The developers of Moose were so kind to align their new way of sending trap data from DCS via UDP with me, so we could
generate events, that are compatible with DCSServerBot! To use this option, you currently need to download and link
FunkMan, but you don't need to run it. I just use some rendering stuff from
there for convenience reasons and just because they are nice and funkyfranky put a lot of effort in already. A true
community collaboration though!
For enabling the FunkMan functionality, you need to enable that in your Moose lua code (samples yet to come, see Moose
documentation for now) and you need to link the place where you downloaded FunkMan to your greenieboard.json (see below).
As GreenieBoard is an optional plugin, you need to activate it in main.yaml first like so:
opt_plugins:
- greenieboard
The plugin comes as many other plugins with a yaml configuration. If you don't generate your own config, DCSServerBot will just copy over the sample by itself and use that one. This will do it for the most users, if you don't plan to use the persistent mode.
Anyway, this is how the configuration will look like. For now, there is only a default config, so you can't generate different greenieboards for different servers. If that is a user demand in the future, I might add it.
DEFAULT:
num_landings: 5 # display the last 5 landings
num_rows: 10 # display 10 players
persistent_board: false # if true, a persistent board will be uploaded into persistent_channel
persistent_channel: 123456789 # in which channel to post the board
squadrons:
- name: 'My Fancy Squadron 1' # Optional: display boards for these squadrons
- name: 'My Fancy Squadron 2'
ratings: # Default points per LSO rating, amend them to your needs
_OK_: 5
OK: 4
(OK): 3
B: 2.5
--: 2
OWO: 2
WO: 1
C: 0
credits: true # People should get credits for their landings (see CreditSystem)
Moose.AIRBOSS:
basedir: airboss # Trapsheets will be stored in Saved Games\<instance>\airboss
FunkMan: # if you want to use the FunkMan integration
IMAGEPATH: ../FunkMan/funkpics/
install: ../FunkMan
DCS.release_server: # our server uses Moose.AIRBOSS
num_rows: 5 # Overwrite the number of rows to display (default: 10)
Moose.AIRBOSS:
basedir: airboss # overwrite the default in here, if you like
grades: AIRBOSS-{carrier}_LSOGrades.csv
trapsheets: '*AIRBOSS-{carrier}_Trapsheet-{name}_{unit_type}*.csv'
persistent_board: true # if true, a persistent board will be uploaded into persistent_channel
persistent_channel: 123456789 # Optional: in which channel to post the board (default: status channel)
squadrons:
- name: 'My Fancy Squadron 1' # Optional: display boards for these squadrons
channel: 1234567890 # Optional: channel ID (default, persistent_channel above)
- name: 'My Fancy Squadron 2'
channel: 9876543210
You can use the DCS standard way (Super Carrier), Moose.AIRBOSS and FunkMan side by side. You just need to decide on one of these methods per server. You only get graphical trapsheets with Moose.AIRBOSS and FunkMan, the greenieboard works with all 3 methods.
Command | Parameter | Channel | Role | Description |
---|---|---|---|---|
/traps board | rows | all | DCS | Print the current greenieboard (per server). 10 rows is default, can be changed with the parameter. |
/traps info | [user] | all | DCS | Display the last carrier landings for this user and a detailed view on selection. User is the caller if not provided. |
/traps add | user | all | DCS Admin | Adds a trap for this user (manual data input). |
You can add your traps to your .highscore (.hs) command. To do that, copy the file plugins/userstats/reports/highscore.json to /reports/userstats and add or replace the following snippet (change col and row to your position in the chart):
{
"class": "plugins.greenieboard.reports.HighscoreTraps",
"params": { "col": 1, "row": 4, "include_bolters": true, "include_waveoffs": true }
}
include_bolters = true will include bolters to the count of traps
include_waveoffs = true will include wave-offs to the count of traps