Plugin “Greenieboard”
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 last carrier landings.
- The landing quality marks will only be generated for landings* on the DCS Super Carrier module unless you use MOOSE.
- AIRBOSS (see below).
- MISSION_STATISTICS = true has to be enabled for your server.
*Not all landings generate a mark for whatever reason and some are off from what you might have experienced in game.
Moose AIRBOSS Integration (Optional)
You can now 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 .carrier 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.
Moose.AIRBOSS stores a CSV file for every trap in the “basedir” you configured for your servers. I will add a cleanup to prune in the future, but currently, there is no auto-cleanup.
Code Changes
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
.
FunkMan Integration (Optional)
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).
FunkMan stores a PNG file for every trap in the “basedir” you configured for your servers (
Saved Games\DCS.release_server\trapsheets
as default). I will add a cleanup to prune in the future, but currently, there is no auto-cleanup.
Configuration
Greenieboard comes as many other plugins with a JSON 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.
{
"configs": [
{
"num_landings": 5, -- the number of latest carrier landings you get, if you use the .carrier command
"num_rows": 10, -- the number of players that can get on the greenieboard (there might be discord limits)
"persistent_board": true, -- true (default false) if you want a persistent board displayed somewhere in your discord
"persistent_channel": "1234", -- the ID of the channel where the greenieboard should be displayed
"credits": true, -- true (default false), credit points will be generated for every landing
"ratings": { -- ratings will define how many points you get for which LSO rating (see SC documentation for details)
"_OK_": 5, -- if using Moose.AIRBOSS, ratings will be taken from there!
"OK": 4,
"(OK)": 3,
"B": 2.5,
"--": 2,
"OWO": 2,
"WO": 1,
"C": 0
},
-- OPTIONAL FUNKMAN INTEGRATION --
"FunkMan": {
"install": "../FunkMan",
"IMAGEPATH": "../FunkMan/funkpics/"
}
},
-- OPTIONAL MOOSE AIRBOSS INTEGRATION --
{
"installation": "DCS.release_server",
"persistent_board": true, -- true (default false) if you want a persistent board displayed somewhere in your discord
"persistent_channel": "4321", -- the ID of the channel where the greenieboard should be displayed
"Moose.AIRBOSS": {
"basedir": "airboss",
"grades": "AIRBOSS-{carrier}_LSOGrades.csv",
"trapsheets": "*AIRBOSS-{carrier}_Trapsheet-{name}_{unit_type}*.csv",
"delete_after": 180 -- Optional: only keep trapsheets for 180 days
}
},
-- OPTIONAL FUNKMAN INTEGRATION --
{
"installation": "DCS.release_server02",
"FunkMan": {
"basedir": "trapsheets",
"delete_after": 180 -- Optional: only keep trapsheets for 180 days
}
}
]
}
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.
Discord Commands
Command | Parameter | Channel | Role | Description |
---|---|---|---|---|
.greenieboard | rows | all | DCS | Print the current greenieboard (per server). 10 rows is default, can be changed with the parameter. |
.carrier | @member / DCS name | all | DCS | Display the last carrier landings for this user and a detailed view on selection. |
Highscore Plugin
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