Команда выдачи услуги в инвентарь

Эта команда позволяет вам выдавать игрокам услугу в инвентарь через консольную команду igs_addtoinventory STEAM_0:1:23456789 item_uid

Идея команда взята отсюда: Выдать предмет в инвентарь

Похожее решение, но для просмотра и снятия услуг через консоль: ⌨️ Консольные команды для просмотра и снятия донат услуг

concommand.Add("igs_addtoinventory", function(admin, cmd, _, argss)
	local notif = function(pl, text)
		if IsValid(pl) then pl:ChatPrint(text)
		else print(text) end
	end

	if IsValid(admin) and not admin:IsSuperAdmin() then notif(admin, "Нет прав") return end

	local targ_sid,item_uid = argss:match("^(STEAM_%d:%d:%d+) ([%w_-]+)")
	if targ_sid then
		local targ = player.GetBySteamID(targ_sid)
		if targ then -- player online
			IGS.AddToInventory(targ, item_uid, function()
				notif(admin, "Услуга положена в инвентарь " .. targ:Nick())
				notif(targ, "Вам выдали в ивентарь " .. IGS.GetItemByUID(item_uid):Name())
			end)
		else
			local s64 = util.SteamIDTo64(targ_sid)
			IGS.Query("/inventory/addItem",{
				sid  = s64,
				item = item_uid,
			}, function()
				notif(admin, "Услуга выдана оффлайн игроку со стимайди " .. s64)
			end)
		end
	else
		notif(admin, "Неправильный формат. " .. cmd .. " STEAM_0:1:23456789 item_uid")
	end
end)

Установка

Закинуть файл по пути addons/igs-modification/lua/autorun/server/igs_addtoinv.lua, ввести в консоль сервера lua_run include("autorun/server/igs_addtoinv.lua") или просто перезагрузить сервер

1 лайк

Обновил скрипт. Была неправильная регулярка

Хз почему, но match нормально не работает, выдаёт на стимид Nil. Тк работать с патернами не умею сделал через Explode. Работает нормально.
Было:
local targ_sid,item_uid = argss:match("^(STEAM_%d:%d:%d+) (%w+)")
Стало:
local arg = string.Explode(" “, argss)
local targ_sid = arg[1]:match(”^(STEAM_%d:%d:%d+)")
local item_uid = arg[2]

Странно. Только что проверил, работает

image

image

Только немного пофиксил регулярку для лучшего захвата UID. Но на захват SteamID это не влияет

Всё работало и у меня, даже через бота в вк, ошибок там не было, скорее всего что-то не так установили