From 76be41e8f25edc8a14a4eadda4fa8c290cfa052c Mon Sep 17 00:00:00 2001 From: Xertis <118364459+Xertis@users.noreply.github.com> Date: Fri, 21 Nov 2025 21:33:48 +0300 Subject: [PATCH] fix access to console.__add_command --- doc/ru/scripting/extensions.md | 7 +++++++ res/modules/internal/extensions/table.lua | 10 +++++++--- res/scripts/stdlib.lua | 5 ++++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/doc/ru/scripting/extensions.md b/doc/ru/scripting/extensions.md index 7ef835f4..2d7f0a1d 100644 --- a/doc/ru/scripting/extensions.md +++ b/doc/ru/scripting/extensions.md @@ -94,6 +94,13 @@ table.sub(arr: table, start: number | nil, stop: number | nil) -> table Возвращает обрезанную версию таблицы с индекса **start** до индекса **stop** включительно, при этом пары ключ-значение не сохраняются в новой таблице. При значениях **nil** начинает с **1** и заканчивает **#arr** соответственно. +```lua +table.insert_unique(t: table, val: any) +table.insert_unique(t: table, pos: number, val: any) +``` + +Добавляет значение в таблицу, только если его там не было. + ```lua table.tostring(t: table) -> string ``` diff --git a/res/modules/internal/extensions/table.lua b/res/modules/internal/extensions/table.lua index 395ee8f7..a1856d38 100644 --- a/res/modules/internal/extensions/table.lua +++ b/res/modules/internal/extensions/table.lua @@ -167,12 +167,16 @@ function table.remove_value(t, x) end end -function table.insert_unique(t, val) - if table.has(t, val) then +function table.insert_unique(t, pos_or_val, val) + if table.has(t, val or pos_or_val) then return end - table.insert(t, val) + if val then + table.insert(t, pos_or_val, val) + else + table.insert(t, pos_or_val) + end end function table.tostring(t) diff --git a/res/scripts/stdlib.lua b/res/scripts/stdlib.lua index f067b724..b428785e 100644 --- a/res/scripts/stdlib.lua +++ b/res/scripts/stdlib.lua @@ -171,8 +171,11 @@ function console.log(...) log_element:paste(text) end +local console_add_command = console.__add_command +console.__add_command = nil + function console.add_command(scheme, description, handler, is_cheat) - console.__add_command(scheme, description, handler) + console_add_command(scheme, description, handler) if not is_cheat then return end local name = string.match(scheme, "^(%S+)")