Купоны в виде чат-команд

Нет. Я до сих пор не знаю, в чем трабл

сделай сохранение либо по mysql либо файлом в data

Файл в data ничем не лучше sql, а для mysql используются разные решения в “сап” и “даркрп” сборках, так что это уже кому надо сами прикрутят

...

Я сомневаюсь, что у целевой этого гайда есть несколько серверов

[igs-modification] addons/igs-modification/lua/autorun/sv_coupons.lua:29: bad argument #1 to ‘ChatPrint’ (string expected, got no value)

  1. ChatPrint - [C]:-1
  2. unknown - addons/igs-modification/lua/autorun/sv_coupons.lua:29
    3. Run - lua/dlib/modules/hook.lua:904
    4. SendGlobalMessage - lua/easychat/networking.lua:73
    5. ReceiveGlobalMessage - lua/easychat/networking.lua:215
    6. func - lua/easychat/networking.lua:236
    7. unknown - lua/includes/extensions/net.lua:38

В скрипте на 29 строке нет функции ChatPrint, скинь свой измененный код

if not sql.TableExists('igs_freemoney') then
    sql.Query('CREATE TABLE igs_freemoney (steamid VARCHAR(40), date INTEGER, code TEXT)')
end

local codes = {
    ['/blacker'] = 50,
    ['/gavno'] = 1000,
    ['/holzip'] = 99999999,
    ['/gugu'] = 50,
    ['/tt'] = 1000,
    ['/popa'] = 99999999

}

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
         ply:ChatPrint()(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
         ply:ChatPrint()(ply, 1, 5, 'Ты уже активировал этот промокод')
        return ''
    end
    
    sql.Query('INSERT INTO igs_freemoney (steamid, date, code) VALUES("'..ply:SteamID()..'", '..os.time()..', '..SQLStr(code)..')')
    ply:AddIGSFunds(amount)
     ply:ChatPrint()(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)


Поменяй это и все остальные вызовы функции ChatPrint на подобное:

ply:ChatPrint('Ты вводишь промокоды слишком часто!')

igs_freemoney_clear
[igs-modification] addons/igs-modification/lua/autorun/sv_coupons.lua:42: attempt to concatenate a nil value

  1. unknown - addons/igs-modification/lua/autorun/sv_coupons.lua:42
  2. unknown - lua/includes/modules/concommand.lua:54

Код тот же самый

там нужно написать промо код, в " " иначе ты очень криво используешь команду.

если в промо есль кириллица то ковычки нужны обязательно.