У меня не поворачивается язык назвать это модификацией, но про такую штуку слишком часто спрашивают
Настройка
Добавьте свой промокод в таблицу codes
. Индекс - команда для активации (включая слеш), значение - сумма, которую получит активировавший игрок
Важно
- Сохранение происходит в локальной БД, поэтому если у вас несколько серверов с общим донатом, то промокод можно будет активировать на обоих.
- Чтобы можно было в будущем создать промокод с уже использованным названием, используйте консольную команду
igs_freemoney_clear КОД
(только в серверной консоли)
Код
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(ply, code)
local amount = codes[code]
if not amount then return end
if ply.codeCD and ply.codeCD > CurTime() then
DarkRP.notify(ply, 1, 5, 'Ты вводишь промокоды слишком часто!')
return ''
end
ply.codeCD = CurTime()+1
local d = sql.Query('SELECT * FROM igs_freemoney WHERE steamid = "'..ply:SteamID()..'" AND code = '..SQLStr(code))
if d and d[1] then
DarkRP.notify(ply, 1, 5, 'Ты уже активировал этот промокод')
return ''
end
sql.Query('INSERT INTO igs_freemoney (steamid, date, code) VALUES("'..ply:SteamID()..'", '..os.time()..', '..SQLStr(code)..')')
ply:AddIGSFunds(amount)
DarkRP.notify(ply, 0, 10, 'Ты получил '..amount..'р по промокоду!')
return ''
end)
concommand.Add('igs_freemoney_clear', function(ply, cmd, args)
if IsValid(ply) then return end
local res = sql.Query('DELETE FROM igs_freemoney WHERE code = "'..args[1]..'"')
if res == false then
print('Произошла ошибка при очистке записей')
else
print('Успешно очищены все записи с кодом "'..args[1]..'"')
end
end)