Merge branch 'main' into feature/player-settings

This commit is contained in:
Cooldude2606 authored and GitHub committed 2026-10-14 23:39:36 +01:00
commit 37cef0e6db
5 files changed
+13 -38

No files matched your search

-4
View File
@@ -15,13 +15,9 @@ lhd=All trains must be LHD! This is a long standing rule on our servers, please
# data
[exp-settings]
UsesServerUps=Server UPS
UsesServerUps-tooltip=Whether the current server UPS is shown
UsesServerUps-value-tooltip=Change by using /server-ups
Bonus=Player Bonus
Bonus-tooltip=The bonus given to your character
Bonus-value-tooltip=Change by using /bonus
HasEnabledDecon=Quick Tree Decon
[exp-statistics]
MapsPlayed=Maps Played
-4
View File
@@ -15,13 +15,9 @@ lhd=列車必須是左則通行。這是本服務器長久以來的規則。
# data
[exp-settings]
UsesServerUps=服務器更新數 (SUPS)
UsesServerUps-tooltip=現在是否顯示服務器更新數 (SUPS)
UsesServerUps-value-tooltip=使用 /server-ups 來更換顯示
Bonus=人物附加屬性
Bonus-tooltip=你的人物附加屬性
Bonus-value-tooltip=使用 /bonus 來更改
HasEnabledDecon=快速拆除樹木
[exp-statistics]
MapsPlayed=地圖遊玩次數
-4
View File
@@ -15,13 +15,9 @@ lhd=列車必須是左則通行。這是本服務器長久以來的規則。
# data
[exp-settings]
UsesServerUps=服務器更新數 (SUPS)
UsesServerUps-tooltip=現在是否顯示服務器更新數 (SUPS)
UsesServerUps-value-tooltip=使用 /server-ups 來更換顯示
Bonus=人物附加屬性
Bonus-tooltip=你的人物附加屬性
Bonus-value-tooltip=使用 /bonus 來更改
HasEnabledDecon=快速拆除樹木
[exp-statistics]
MapsPlayed=地圖遊玩次數
@@ -5,10 +5,14 @@ Makes trees which are marked for decon "decay" quickly to allow faster building
local Gui = require("modules/exp_gui")
local Async = require("modules/exp_util/async")
local Roles = require("modules/exp_roles")
local Storage = require("modules/exp_util/storage")
local PlayerData = require("modules.exp_legacy.expcore.player_data")
local HasEnabledDecon = PlayerData.Settings:combine("HasEnabledDecon")
HasEnabledDecon:set_default(false)
--- Players who toggled fast decon on, by player index
--- @type table<number, true>
local enabled_players = {}
Storage.register(enabled_players, function(tbl)
enabled_players = tbl
end)
local random = math.random
local floor = math.floor
@@ -58,7 +62,7 @@ local remove_trees_async =
--- @return "fast" | "allow" | "disallow"
local function get_permission(player)
if Roles.player_has_permission(player, "exp_scenario.decon.fast_trees") then
return HasEnabledDecon:get(player) and "fast" or "allow"
return enabled_players[player.index] and "fast" or "allow"
elseif Roles.player_has_permission(player, "exp_scenario.decon.standard") then
return "allow"
else
@@ -105,7 +109,7 @@ Gui.toolbar.create_button{
end
}:on_click(function(def, player, element)
local state = Gui.toolbar.get_button_toggled_state(def, player)
HasEnabledDecon:set(player, state)
enabled_players[player.index] = state or nil
player.print{ "exp_fast-decon.chat-toggle", state and { "exp_fast-decon.chat-enabled" } or { "exp_fast-decon.chat-disabled" } }
end)
@@ -164,8 +168,7 @@ local function on_entity_damaged(event)
end
-- Mark the entity to be removed
local allow = get_player_cache(driver.index)
if allow == "fast" and HasEnabledDecon:get(driver) then
if get_player_cache(driver.index).permission == "fast" then
event.entity.destroy()
else
event.entity.order_deconstruction(event.force, driver)
+3 -19
View File
@@ -9,21 +9,6 @@ local Commands = require("modules/exp_commands")
--- @class ExpServerUps.elements
local Elements = {}
--- Stores the visible state of server ups element for a player
local PlayerData = require("modules/exp_legacy/expcore/player_data")
local UsesServerUps = PlayerData.Settings:combine("UsesServerUps")
UsesServerUps:set_default(false)
UsesServerUps:set_metadata{
permission = "exp_scenario.command.server_ups",
stringify = function(value) return value and "Visible" or "Hidden" end,
}
--- Change the visible state when your data loads
UsesServerUps:on_load(function(player_name, visible)
local player = assert(game.get_player(player_name))
Elements.server_ups.set_visible(player, visible or false)
end)
--- Label to show the server ups, drawn to screen on join
--- @class ExpServerUps.elements.server_ups: ExpElement
--- @overload fun(parent: LuaGuiElement, visible: boolean?): LuaGuiElement
@@ -61,7 +46,7 @@ function Elements.server_ups.get_main_label(player)
if element and element.valid then
return element
end
return Elements.server_ups(player.gui.screen, UsesServerUps:get(player))
return Elements.server_ups(player.gui.screen, false)
end
--- Set the visible state of the main label
@@ -75,9 +60,8 @@ end
Commands.new("server-ups", { "exp_server-ups.description" })
:add_aliases{ "sups", "ups" }
:register(function(player)
local visible = not UsesServerUps:get(player)
Elements.server_ups.set_visible(player, visible)
UsesServerUps:set(player, visible)
local label = Elements.server_ups.get_main_label(player)
label.visible = not label.visible
end)
--- Add an interface which can be called from rcon