Friday, September 20, 2024 6:36:22 AM
> settings

Customize


Authenticate

> server_setting.rb
# frozen_string_literal: true

module ESM
  class ServerSetting
    after_save :update_arma

    private

    MAPPING = {
      gambling_modifier: "ESM_Gambling_Modifier",
      gambling_payout_base: "ESM_Gambling_PayoutBase",
      gambling_payout_randomizer_max: "ESM_Gambling_PayoutRandomizerMax",
      gambling_payout_randomizer_mid: "ESM_Gambling_PayoutRandomizerMid",
      gambling_payout_randomizer_min: "ESM_Gambling_PayoutRandomizerMin",
      gambling_win_percentage: "ESM_Gambling_WinPercentage",
      logging_add_player_to_territory: "ESM_Logging_AddPlayerToTerritory",
      logging_demote_player: "ESM_Logging_DemotePlayer",
      logging_exec: "ESM_Logging_Exec",
      logging_gamble: "ESM_Logging_Gamble",
      logging_modify_player: "ESM_Logging_ModifyPlayer",
      logging_pay_territory: "ESM_Logging_PayTerritory",
      logging_promote_player: "ESM_Logging_PromotePlayer",
      logging_remove_player_from_territory: "ESM_Logging_RemovePlayerFromTerritory",
      logging_reward_player: "ESM_Logging_RewardPlayer",
      logging_transfer_poptabs: "ESM_Logging_TransferPoptabs",
      logging_upgrade_territory: "ESM_Logging_UpgradeTerritory",

      # These two differ from their A3 counterparts.
      # Years ago I renamed them to be "taxes_territory_payment" and "taxes_territory_upgrade"
      territory_payment_tax: "ESM_Taxes_TerritoryPayment",
      territory_upgrade_tax: "ESM_Taxes_TerritoryUpgrade"
    }.stringify_keys.freeze

    def update_arma
      return unless server.v2? && server.connected?

      changed_items = previous_changes.slice(*MAPPING.keys)
      return if changed_items.blank?

      sqf = changed_items.map_join(";") do |key, (_, value)|
        arma_variable = MAPPING[key]
        if arma_variable.nil?
          warn!(
            "ServerSetting attribute #{key.quoted} was updated but does not have a MAPPING entry"
          )

          next
        end

        value /= 100.0 if %w[territory_upgrade_tax territory_payment_tax].include?(key)

        "missionNamespace setVariable [#{arma_variable.to_json}, #{value.to_json}]"
      end

      server.execute_sqf!(sqf)
    end
  end
end
All opinions represented herein are my own
- © 2024 itsthedevman
- build 340fbb8