в хуке отрисовываешь vgui “DButton” и делаешь её воздействие, как: «igs, unbanbuy»
эт я к примеру, возьми gban для ulx от свянова, там будет эта кнопка и её консольная команда, только не забудь, что у них была своя личная донат-система, а не igs
Не вижу смысла делать поддержку(переписать) MySQL, так как если 1 сервер то это полностью бесполезно, лишь создаёт задержки ожидая ответ от базы.
Что значит засорять sv.db ? Она для этого и сделана.
Но раз переводишь все аддоны то должен знать что там нужно поменять
1ГБ будет весить, если у тебя как минимум 10к забаненных
делаешь топовый ради 10к банов?)
Решением твоей проблемы будет - прочесть первое сообщение в этом топике полностью, а не просто качать без раздумий файл.
Был на работе, не мог ответить. А так - да. Перепрочитай 1. Первое сообщение. Если использовал Gban, то в Бд нужно создать столбец. Но это на случай, если не хочешь терять список забаненых. А так, если баны не важны, можешь удалить таблицу в Бд. код создаст сам новую.
после перезахода бан пропадает
сервер локалка? Не знаю что у тебя там но у меня прекрастно всё работает на выделенном сервере.
просто еще прикол в том что таблицы забаненных нет в бдшке, может знаешь как правильно таблицу создать?
Удали бд таблицу
полностью, всю с самкой?
Нет только бд gban, я с телефона отвечаю так что подробности не жди
Это mysql? Её бд в sv.db в файлах сервера.
Смотри инструкции в закрепе
[script_donate] addons/script_donate/lua/autorun/delete_me.lua:28: attempt to call global 'PL_MONEY' (a nil value)
1. PayTimer - addons/script_donate/lua/autorun/delete_me.lua:28
2. v - addons/script_donate/lua/autorun/delete_me.lua:38
3. hook_Run - lua/includes/modules/hook.lua:96
4. func - addons/script_admin/lua/sam/modules/gban.lua:602
5. unknown - lua/includes/extensions/net.lua:38
Все работает, но после перезахода такая ошибка я появляюсь в месте забаненного в профе гражданина
Функция которая переводит число в строку с знаком денег, Отсутствует или не прогруженна в момент вызова, можешь заменить функцию на
t*PayTime…" Рублей".
Более отвечать не смогу Часовой Пояс UTC +8 (это +5 к Мск)
[script_donate] addons/script_donate/lua/autorun/delete_me.lua:54: attempt to perform arithmetic on global 'Рублей' (a nil value)
1. unknown - addons/script_donate/lua/autorun/delete_me.lua:54
2. unknown - lua/includes/modules/concommand.lua:54
local PayTime = 1 --Аля конфиг --PayTime сколько нужно заплатить за 1 мин (можно дробь)
local TimeMin = 1 --TimeMin минимальное колл времени для доступа к покупки разбана
local math_floor = math.floor
local timer_TimeLeft = timer.TimeLeft
local function MinMAx(t) --округляем в большую сторону 0.1 -> 1 , 5.0001 -> 6 и т.д
local f = math_floor(t)
local n = t - f
return n > 0 and f + 1 or f
end
if CLIENT then
local function Check_time_UnBanPay(pl) -- возвращает true\false и само время до разбана
local time = MinMAx(timer_TimeLeft('GBanTime') / 60 or 0)
return time > TimeMin, time
end
local GC = Color(200, 55, 13)
local GC2 = Color(255, 255, 255)
local GCM=Color(16, 210, 60)
local function PayTimer()
local y, t = Check_time_UnBanPay()
if not y then
timer.Remove('TimerPayUnBan')
return
end
chat.AddText(GC, GC2, 'Заплати за разбан ',GCM, PL_MONEY(t * Рублей),GC2, ' введи в консоль UnBanPay')
end
hook.Add('GBan.BanLocalPlayer', 'TimerPayUnBan', function(ban)
if not ban then
timer.Remove('TimerPayUnBan')
return
end
timer.Create('TimerPayUnBan', 30, 0, PayTimer) -- пока игрок забанен , каждые 30 секунд будем писать ему в чат о платном разбане
PayTimer() -- так же делаем первый запуск, ну чтоб сразу игрок знал об этом
end)
else
local SteamID=FindMetaTable('Player').SteamID
local function Check_time_UnBanPay(pl) -- возвращает true\false и само время до разбана
local time = MinMAx(timer_TimeLeft('GBanPlayer'..SteamID(pl)) / 60 or 0)
return time > TimeMin, time
end
local IsValid = IsValid
function UnBanPay_Donate(pl)
if not IsValid(pl) then --защита от ошибок при вводе с консоли.
return
end
local y, t = Check_time_UnBanPay(pl)
if not y then return IGS.Notify(pl, 'Остаток веремени слишком мал.') end
local pay = t * Рублей --конечная цена (время*цена)
local pl_Bal = pl:GetIGSVar("igs_balance") or 0 --Баланс игрока
if pay > pl_Bal then return IGS.Notify(pl, 'Не достаточно денег.') end
pl:AddIGSFunds(-pay, 'UnBan price: ' .. pay, function()
IGS.Notify(pl, "Вы купили разбан за " .. PL_MONEY(pay))
GBan.RemoveBanPlayer(pl, 'Console',false) -- false пишет {A} снял бан {T}, true пишет Срок бана {T} закончился!.
end)
end
concommand.Add('UnBanPay', UnBanPay_Donate)
end
if SERVER then
hook.Add("PlayerInitialSpawn", "EnforceGBanOnReconnect", function(ply)
if timer.Exists("GBanPlayer" .. ply:SteamID()) then
hook.Call("GBan.BanLocalPlayer", GAMEMODE, ply, true)
end
end)
end
Х взахахахазпзп жди как встану за пк отпишу заеб через телефон писать
local PayTime = 1 --Аля конфиг --PayTime сколько нужно заплатить за 1 мин (можно дробь)
local TimeMin = 1 --TimeMin минимальное колл времени для доступа к покупки разбана
local math_floor = math.floor
local timer_TimeLeft = timer.TimeLeft
local function MinMAx(t) --округляем в большую сторону 0.1 -> 1 , 5.0001 -> 6 и т.д
local f = math_floor(t)
local n = t - f
return n > 0 and f + 1 or f
end
if CLIENT then
local function Check_time_UnBanPay(pl) -- возвращает true\false и само время до разбана
local time = MinMAx(timer_TimeLeft('GBanTime') / 60 or 0)
return time > TimeMin, time
end
local GC = Color(200, 55, 13)
local GC2 = Color(255, 255, 255)
local GCM=Color(16, 210, 60)
local function PayTimer()
local y, t = Check_time_UnBanPay()
if not y then
timer.Remove('TimerPayUnBan')
return
end
chat.AddText(GC, '[GBan] ', GC2, 'Заплати за разбан ',GCM, PL_MONEY(t * PayTime),GC2, ' введи в консоль UnBanPay')
end
hook.Add('GBan.BanLocalPlayer', 'TimerPayUnBan', function(ban)
if not ban then
timer.Remove('TimerPayUnBan')
return
end
timer.Create('TimerPayUnBan', 30, 0, PayTimer) -- пока игрок забанен , каждые 30 секунд будем писать ему в чат о платном разбане
if not PL_MONEY then return end
PayTimer() -- так же делаем первый запуск, ну чтоб сразу игрок знал об этом
end)
else
local SteamID=FindMetaTable('Player').SteamID
local function Check_time_UnBanPay(pl) -- возвращает true\false и само время до разбана
local time = MinMAx(timer_TimeLeft('GBanPlayer'..SteamID(pl)) / 60 or 0)
return time > TimeMin, time
end
local IsValid = IsValid
function UnBanPay_Donate(pl)
if not IsValid(pl) then --защита от ошибок при вводе с консоли.
return
end
local y, t = Check_time_UnBanPay(pl)
if not y then return IGS.Notify(pl, 'Остаток веремени слишком мал.') end
local pay = t * PayTime --конечная цена (время*цена)
local pl_Bal = pl:GetIGSVar("igs_balance") or 0 --Баланс игрока
if pay > pl_Bal then return IGS.Notify(pl, 'Не достаточно денег.') end
pl:AddIGSFunds(-pay, 'UnBan price: ' .. pay, function()
IGS.Notify(pl, "Вы купили разбан за " .. PL_MONEY(pay))
GBan.RemoveBanPlayer(pl, 'Console',false) -- false пишет {A} снял бан {T}, true пишет Срок бана {T} закончился!.
end)
end
concommand.Add('UnBanPay', UnBanPay_Donate)
end