|
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
![]()
Сообщение
#1
|
|
![]() Developer ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза ![]() |
Есть вопрос... Недавно я писал скрипт про бан ботом хаба(спасибо Setuper за помощь в доработке). При временном бане заметил, что время бана задаётся только в минутах. Я этого не знал, и поэтому писал стандартно время бана(например: 1h), но вместо времени 1h бан ставился на 1 мин. Попытался сделать таблицу времени:
Код sTime = { m=1, h=60, d=1440, w=10080, } Т.е. чтобы например при вводе 1h , бан сразу автоматически ставился на 60 мин(по таблице). К сожелению таблица времени не работает, помогите доработать... Вот отрывок временного бана ботом из скрипта: Код if cmd == "!bottempban" then
if tProfile[tUser.iProfile] == 1 then local _,_,sNick = string.find(sData, "%b<>%s+%S+%s+(%S+)") local _,_,sTime = string.find(sData, "%b<>%s+%S+%s+%S+%s+(%S+)") local _,_,sReason = string.find(sData, "%b<>%s+%S+%s+%S+%s+%S+%s+(.*)") if not sNick then Core.SendToUser(tUser,"<"..sBot.."> Вы не ввели ник!") return true end if not sTime then Core.SendToUser(tUser,"<"..sBot.."> Вы не ввели время бана!") return true end sUser = Core.GetOnlineUsers() for i,v in pairs(sUser) do if sNick == v.sNick then sIP = v.sIP end end if not sIP then sIP = "не известен" end if not sReason then sReason = "не указанна" end Core.SendToNick(sNick,"<"..sBot.."> Вы были временно забанены на следующие "..sTime.." потому, что: "..sReason) Core.SendToAll("<"..sBot.."> забанил "..sNick.." (IP: "..sIP..") следующие "..sTime.." потому, что: "..sReason) BanMan.TempBanNick(sNick,tonumber(sTime) or 1,sReason,sBot) end return true end |
|
|
![]()
Сообщение
#2
|
|
![]() Самый главный активист :-D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз ![]() |
Таблица была не правильно написана - это раз!
Код tTime = { ["m"]=1, ["h"]=60, ["d"]=1440, ["w"]=10080, } как ты хочешь чтоб работала таблица если ты просто кинул её в файл - это два! Код if not sTime then
Core.SendToUser(tUser,"<"..sBot.."> Вы не ввели время бана!") else local _,_,iTime, sArg = string.find(sTime, "(%d+)(%a)") if iTime and sArg then -- Здесь можно прикрутить ещё несколько проверок на то есть ли аргумент в таблице tTime и т.д. sTime = tonumber(iTime)*tTime[sArg] else Core.SendToUser(tUser,"<"..sBot.."> Вы неправильно ввели время бана!") end end sUser = Core.GetOnlineUsers() |
|
|
![]()
Сообщение
#3
|
|
![]() Developer ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза ![]() |
Спасибо
![]() А как сделать так, чтобы писало не 60m: Цитата [10:44:40] <Security> забанил test (IP: 10.2.136.203) следующие 60m потому, что: test А 1h. Вот так: Цитата [10:44:40] <Security> забанил test (IP: 10.2.136.203) следующие 1h потому, что: test ??? и есть ещё проблема.... После бана ботом хаба, бот банит ник и айпи юзера, после того, как PtokaX стоит перезапустить, бан становится по нику, а не по айпи, как такой недочёт исправить? я подозреваю это: Код BanMan.TempBanNick BanMan.BanNick исправляю на: Код BanMan.TempBan BanMan.Ban бан не работает, команда выводится в чат, сообщения о бане выводятся... |
|
|
![]()
Сообщение
#4
|
|
![]() Самый главный активист :-D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз ![]() |
если ты исправил скрипт из посты выше в чат должно выводится число без букв а потом всё приводится в нормальный вид функцией
Код function GetNormalTime(s) s=tonumber(s)*60 or 0 local r="" if s>=31104000 then r=math.floor(s/31104000).." г. " s=math.fmod(s,31104000) end if s>=2592000 then r=r..math.floor(s/2592000).." мес. " s=math.fmod(s,2592000) end if s>=86400 then r=r..math.floor(s/86400).." д. " s=math.fmod(s,86400) end if s>=3600 then r=r..math.floor(s/3600).." ч. " s=math.fmod(s,3600) end if s>=60 then r=r..math.floor(s/60).." мин. " s=math.fmod(s,60) end return r end если хочешь чтоб банилось и по нику и по ип тебе надо писать совершенно другую функцию которая будет смотреть по вводимым данным есть ли юзер на хабе, если есть брать его ник ип и банить. Естественно работать при отсутствии юзера она не будет |
|
|
![]()
Сообщение
#5
|
|
![]() Developer ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза ![]() |
знал бы я ещё как эту функцию написать :(
|
|
|
![]()
Сообщение
#6
|
|
![]() Самый главный активист :-D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз ![]() |
посмотри как работают функции в любых языках!
а если по быстрому то кидаешь функцию в конец скрипта и изменяешь Код Core.SendToNick(sNick,"<"..sBot.."> Вы были временно забанены на следующие "..GetNormalTime(sTime).." потому, что: "..sReason)
Core.SendToAll("<"..sBot.."> забанил "..sNick.." (IP: "..sIP..") следующие "..GetNormalTime(sTime).." потому, что: "..sReason) |
|
|
![]()
Сообщение
#7
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
хехе не будет работать эта функция, так как в аргумент этой функции нужно подставлять число, а будет подставляться строка, которую даже нельзя преобразовать функцией tonumber в число!
|
|
|
![]()
Сообщение
#8
|
|
![]() Самый главный активист :-D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз ![]() |
Илюх, ну ведь
Код sTime = tonumber(iTime)*tTime[sArg] почему же не будет? |
|
|
![]()
Сообщение
#9
|
|
![]() Developer ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза ![]() |
У меня всё заработало
|
|
|
![]()
Сообщение
#10
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
я просто не заметил))
|
|
|
![]() ![]() |
![]() |
Сейчас: 31.3.2025, 17:56 |