У меня не поворачивается язык назвать это модификацией, но про такую штуку слишком часто спрашивают
Настройка
Добавьте свой промокод в таблицу codes
. Индекс - команда для активации (включая слеш), значение - сумма, которую получит активировавший игрок
Важно
- Сохранение происходит в локальной БД, поэтому если у вас несколько серверов с общим донатом, то промокод можно будет активировать на обоих.
- Чтобы можно было в будущем создать промокод с уже использованным названием, используйте консольную команду
igs_freemoney_clear КОД
(только в серверной консоли)
Код
Путь: garrysmod/addons/ТВОЙ АДДОН/lua/autorun/sv_coupons.lua
if not sql.TableExists('igs_freemoney') then
sql.Query('CREATE TABLE igs_freemoney (steamid VARCHAR(40), date INTEGER, code TEXT)')
end
local codes = {
['/dengi'] = 10,
['/gavno'] = 1000,
}
hook.Add('PlayerSay', 'babosiki', function(pl, code)
local amount = codes[code]
if not amount then return end
if pl.codeCD and pl.codeCD > CurTime() then
DarkRP.notify(pl, 1, 5, 'Ты вводишь промокоды слишком часто!')
return ''
end
pl.codeCD = CurTime() + 1
local d = sql.Query('SELECT * FROM igs_freemoney WHERE steamid = "' .. pl:SteamID() .. '" AND code = ' .. sql.SQLStr(code))
if d and d[1] then
DarkRP.notify(pl, 1, 5, 'Ты уже активировал этот промокод')
return ''
end
sql.Query('INSERT INTO igs_freemoney (steamid, date, code) VALUES("' .. pl:SteamID() .. '", ' .. os.time() .. ', ' .. sql.SQLStr(code) .. ')')
pl:AddIGSFunds(amount)
DarkRP.notify(pl, 0, 10, 'Ты получил ' .. amount .. 'р по промокоду!')
return ''
end)
concommand.Add('igs_freemoney_clear', function(pl, cmd, args)
if IsValid(pl) then return end
local res = sql.Query('DELETE FROM igs_freemoney WHERE code = ' .. sql.SQLStr(args[1]) .. '')
if res == false then
print('Произошла ошибка при очистке записей: ' .. sql.LastError())
else
print('Успешно очищены все записи с кодом "' .. args[1] .. '"')
end
end)