Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Служебные скрипты [PtokaX] _ BanLogger

Автор: Unterlink(X-Sky) 10.1.2010, 22:40

Название скрипта: BanLogger
Автор: http://mydc.ru/user1.html
Дата написания: 10.01.2010
Версия скрипта: 1.0
Версия API: API 2
Описание скрипта: Логирует баны ника/ip , выводит по команде в чат количество банов + последний бан, либо таблицу всех банов для ника/ip.
Прикрепленный скрипт:  BanLogger.lua ( 6.37 килобайт ) : 99


P.S.

Цитата(Nickolya)
напиши что скрипт сделан через задницу)


Версия скрипта: 1.1

Цитата(Nickolya)
Сделал профили которым доступен скрипт, работу в личке, лог банов для админов, меню. Пробуйте big_smile.gif
Для работы можно заменить сам скипт, он подхватит старую базу банов и начнет новую для админов.



 BanLogger_v1.1.lua ( 7.6 килобайт ) : 110
 

Автор: Wariner 10.1.2010, 22:58

Так блин значит сам поленился???

Автор: Unterlink(X-Sky) 10.1.2010, 23:00

Не поленился, а не смог choler.gif

Автор: Wariner 10.1.2010, 23:03

Я тебе и говорил клади кусок кода и вместе бы разобрались и вместе бы написали!!! А то так и не научишься...

Автор: Unterlink(X-Sky) 10.1.2010, 23:03

не хватает у меня мозга на такие вещи.

Автор: Wariner 10.1.2010, 23:06

У нас модераторы пишущие люди)))) так что вливайся!!! bad_smile.gif

Автор: Unterlink(X-Sky) 10.1.2010, 23:07

Чувствую, с моими знаниями, отливаться придётся, наоборот..
Ладно, оффтоп разводить не будем.

Автор: evg 11.1.2010, 15:13

из коробки не завелся...

Автор: Unterlink(X-Sky) 11.1.2010, 15:19

Не знаю, у меня всё отлично

Автор: TiGRpp 13.1.2010, 19:13

Цитата(Unterlink(X-Sky) @ 10.1.2010, 23:40) *
Название скрипта: BanLogger
Автор: http://mydc.ru/user1.html
Версия API: API 2
Описание скрипта: Логирует баны ника/ip , выводит по команде в чат количество банов + последний бан, либо таблицу всех банов для ника/ip.

А вот подскажите где меню у скрипта? Что-то я и в коде его не нашел...
Или он как-то по другому действует?
Вроде написано "выводит по команде в чат количество банов"...

Автор: Unterlink(X-Sky) 13.1.2010, 19:28

Цитата
Вроде написано "выводит по команде в чат количество банов"...

Ну если нет меню, не значит что по команде не выводит
Если хочешь меню, добавь в конце скрипта
Раскрывающийся текст
Код
function UserConnected(tUser)
  if tProfiles[tUser.iProfile] == 1 then
  Core.SendToUser(tUser,"$UserCommand 1 2 Меню администрации\\Логи банов\\Количество банов для этого юзера$<%[mynick]> !bans %[ip]||"..
  "$UserCommand 1 3 Меню администрации\\Логи банов\\Количество банов для...$<%[mynick]> !bans %[line: Введите ник/IP]||"..
  "$UserCommand 1 2 Меню администрации\\Логи банов\\Лог банов для этого юзера$<%[mynick]> !banlist %[ip]||"..
  "$UserCommand 1 3 Меню администрации\\Логи банов\\Лог банов для...$<%[mynick]> !banlist %[line: Введите ник/IP]||")
end
end
RegConnected,OpConnected=UserConnected,UserConnected

Автор: Unterlink(X-Sky) 22.1.2010, 21:37

Новая версия скрипта )
Смотрим первый пост big_smile.gif

Автор: Nickolya 23.5.2010, 19:06

Обрезанный донельзя скрипт:

CODE
tBanCmds = {
ban = true,
banip = true,
fullban = true,
fullbanip = true,
nickban = true,
tempban = true,
tempbanip = true,
fulltempban = true,
}

function OnStartup()
sBot = SetMan.GetString(21)
tWhomWeSee = {}
tBansLog = {}
tMasterBansLog = {}
sPath = Core.GetPtokaXPath().."scripts/"
if loadfile(sPath.."tBansLog.tbl") then
dofile(sPath.."tBansLog.tbl")
end
if loadfile(sPath.."tMasterBansLog.tbl") then
dofile(sPath.."tMasterBansLog.tbl")
end
TmrMan.AddTimer(1000, "OnTimer1")
end

function OnTimer1()
local tRemove = {}
for i, tData in ipairs(tWhomWeSee) do
local tBan = BanMan.GetBan(tData[1])
if tBan then
if tBan[1] then
tBan = tBan[#tBan]
end
local tBanTbl = {
sBy = tBan.sBy or tData[2],
iTime = tData[3],
iExpireTime = tBan.iExpireTime,
sIP = tBan.sIP,
sNick = tBan.sNick,
bIpBan = tBan.bIpBan,
bNickBan = tBan.bNickBan,
bFullIpBan = tBan.bFullIpBan,
sReason = tBan.sReason,
}
if tBanTbl.sNick then
if not tBansLog[tBanTbl.sNick] then
tBansLog[tBanTbl.sNick] = {}
end
table.insert(tBansLog[tBanTbl.sNick], tBanTbl)
end
if tBanTbl.sIP then
if not tBansLog[tBanTbl.sIP] then
tBansLog[tBanTbl.sIP] = {}
end
table.insert(tBansLog[tBanTbl.sIP], tBanTbl)
end
if not tMasterBansLog[tData[2]] then
tMasterBansLog[tData[2]] = {}
end
table.insert(tMasterBansLog[tData[2]], tBanTbl)
SaveToFile(sPath.."tBansLog.tbl", tBansLog, "tBansLog")
SaveToFile(sPath.."tMasterBansLog.tbl", tMasterBansLog, "tMasterBansLog")
table.insert(tRemove, 1, i)
elseif tData[3] + 5 > os.time() then
table.insert(tRemove, 1, i)
end
end
for _, i in ipairs(tRemove) do
table.remove(tWhomWeSee, i)
end
end

function ChatArrival(tUser, sData)
local _,_, sCmd, sWhoBanned = string.find(sData, "%b<>%s+%p(%S+)%s+(%S+).*|$")
if sCmd then
sCmd = sCmd:lower()
if sWhoBanned and tBanCmds[sCmd] then-- and not BanMan.GetBan(sWhoBanned) then
table.insert(tWhomWeSee, {sWhoBanned, tUser.sNick, os.time()})
end
end
end
ToArrival = ChatArrival

function SaveToFile(sFileWay, tTable, sTableName)
local sHandle = io.open(sFileWay,"w+")
Serialize(tTable, sTableName, sHandle)
sHandle:flush()
sHandle:close()
end

function Serialize(tTable, sTableName, sHandle, sTab)
local sTab = sTab or ""
sHandle:write(sTab..sTableName.." = {\n")
for key, value in pairs(tTable) do
local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key)
if type(value) == "table" then
Serialize(value, sKey, sHandle, sTab.."\t")
else
local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value)
sHandle:write(sTab.."\t"..sKey.." = "..sValue)
end
sHandle:write(",\n")
end
sHandle:write(sTab.."}")
end

Автор: X-Sky 8.6.2010, 17:45

Ещё вопросик. Как сделать так, чтобы засчитывало ещё и баны бота, которые он выдаёт за рекламу или за использование прокси? Или нужны эти самые скрипты? То есть антирекламу и антипрокси.

Автор: Nickolya 8.6.2010, 19:44

Очередной велосипед получится surrender.gif Лучше конечно скрестить скрипты, тогда возможно внесение в таблицу значений.