Why - Hello there. It's been awhile! How have you been? I've been just swell, thanks for asking. I'm here to release a random update at a random time and act like this was all planned and everything.
Spoiler alert, it's 2 years late 😂
Just a little over 3 years ago, I started working on an update to replace the current the server extension with one that would let me do what I needed in order to add all the cool features that have been suggested over the years. As you could tell, it took some time. In short, I had to teach myself Rust lang and then life happened. What a own journey!
This update being release today is not the update for the long awaited @esm v2.0, unfortunately, but it does lay all the necessary groundwork for me to bring you that update. I don't have a release date, but I can say that it will be released some time this year.
I can't share too many details because I'm always coming up with new ideas and tweaking old ones, but I can tell you that @esm v2.0 will include the following:
reward
commandIf you like reading code, you can see what I'm developing (and what's coming in the new update) by checking out the Github repositories for esm_bot and esm_arma
ServerSetting
attributes to be more descriptive
server_version
attribute to Server
reward_id
, reward_vehicles
, cooldown_quantity
, and cooldown_type
attributes to ServerReward
trace!
, debug!
, info!
, warn!
, and error!
ESM::Bot#wait_for_reply
and ESM::Bot#waiting_for_reply?
ESM::Callbacks
class for adding closure based callbacks to classes
v1
versions of commands
ESM::JSON
class
ESM::Command::Base
methods out into their own files
ESM::Command::Base#check_failed!
with ESM::Command::Base#raise_error!
ESM::Command::Base#deliver!
with ESM::Command::Base#send_to_arma
ESM::Command::Base#edit_message
ESM::Command::Base#discord
with ESM::Command::Base#on_execute
ESM::Command::Base#server
with ESM::Command::Base#on_response
ESM::Command::Base.type
to ESM::Command::Base.set_type
ESM::Command::Base.aliases
to ESM::Commmand::Base.register_aliases
ESM::Websocket
and its sub-classes with ESM::Connection
and its sub-classes.
ESM::Embed.build
and embed template code
ESM::Color::Toast
ESM::Event::DiscordLog
and ESM::Event::DiscordMessageChannel
with ESM::Event::SendToChannel
ESM::Event::ServerInitialization
and improved its performance
Hash#to_ostruct
to allow preserving Ruby data types when casting
OpenStruct#each
and OpenStruct#map
to prevent nested instances of OpenStruct
from being converted to instances of Hash
ESM::Command.configurations
that returns all command permission configurations
ESM::JSON.pretty_generate
for pretty printed JSON
ESM::Message
a Ruby representation of the data structure used for communication with the extension and A3 server
ESM::Arma::ClassLookup
class
ESM::Arma::HashMap
a hash-like class that represents Arma 3's HashMap data type
ESM::Server
and based it off of the server's key
ESM::Server#metadata
a volatile key/value data store for storing config data from the server that is only useful while the server is connected to ESM
ESM::ServerSetting
gambling_payout
-> gambling_payout_base
logging_reward
-> logging_reward_player
logging_transfer
-> logging_transfer_poptabs
ESM::ServerSetting
request_thread_type
: No longer needed
request_thread_tick
: No longer needed
logging_path
: Moved to config.yml
!sqf
everyone
or all
for a target:
!sqf malden everyone systemChat "Hi from ESM!"
!server
This is for the upcoming @esm v2.0. This is not available for public use and does not reflect the current release
Features and code are subject to change
tokio
based Rust extension that uses message-io
, and arma-rs
to communicate between the A3 server and the bot (src/esm
)
src/message
)
src/build
)
addMissionEventHandler "ExtensionCallback"
esm.key
while the server is running
exile_server_config
to fix an issue when it's commented out
stringtable.xml
for mod messages to make it easier for the rest of the humans on this planet that don't use English to use their own languages
esm.log
instead of the RPT
ESM_DatabaseVersion
to ESM_DatabaseExtension
ESM_PayTaxPercentage
to ESM_Taxes_TerritoryPayment
ESM_UpgradeTaxPercentage
to ESM_Taxes_TerritoryUpgrade
ESM_fnc_checkForRequests
as that it is no longer needed
CfgFunctions
to Exile's preInit
style of defining functions
ESMServer_
so I shortened it to ESMs_
ESMs_util_embed_create
and ESMs_util_embed_addField
ESM_fnc_callExtension
with ESMs_system_extension_call
ESM_fnc_exec
with ESMs_command_sqf
ESM_fnc_log
and ESM_fnc_logToDLL
with ESMs_util_log
ESM_fnc_logToDiscord
with ESMs_system_discord_log
ESM_fnc_preInit
with ESMs_system_process_preInit
ESM_fnc_postServerInitialization
with ESMs_system_process_postInit
ESM_fnc_respond
with ESMs_system_message_respond_to
ESM_fnc_sendToChannel
with ESMs_system_discord_send_to
ESMs_util_array_all
, ESMs_util_array_isValidHashmap
, and ESMs_util_array_map
ESMs_util_hashmap_fromArray
, ESMs_util_hashmap_get
, and ESMs_util_hashmap_toArray