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

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

MyDC.ru _ Kорзина _ Скрипт Банов И Киков

Автор: STRELOK 9.1.2009, 20:11

Заметил недавно что в PtokaX нету функции показа бана или кика другим пользователям, кроме ОПераторам и Администраторам хаба
Когда банишь или кикаешь, обычный или зарегистрированный пользователь не видит бана, бан видит только администратор или ОПератор(

Цитата
[22:09:28] <Security> *** test с IP: 10.2.136.203 был временно забанен , пользователем STRELOK на: 1 мин потому, что: test.

это ссобщение увидит только администратор или оператор хаба(

Составьте плиз скрипт, чтобы сообщения бана или кика было видно всем пользователям:(

Автор: STRELOK 10.1.2009, 19:11

Вот, немного попытался сам, не работает((

Код
function ChatArrival(user,sData)
    Core.GetUserAllData(user)
if BanMan.Ban
Core.SendToAll("<"..user.sNick.."> забанил "..user.nme.." (IP: "..user.sIP..") потому, что: "..sReason.."")
end
if BanMan.TempBan
Core.SendToAll("<"..user.sNick.."> забанил "..user.nme.." (IP: "..user.sIP..") следующие "..BanTime.." потому, что: "..sReason.."")
end
function KickArrival(tUser, sData)
Core.SendToAll("<"..user.sNick.."> кикнул "..user.nme.." (IP: "..user.sIP..") потому, что: "..sReason.."")
end
end


помогите пожалуйста...

Скрипт API2
PtokaX 0.4.1.1

Автор: Артём 10.1.2009, 20:24

beated.gif А смысл показовать юзерам?может ты забанешь нарушителяс причиной ...Реклама хаба...
и IP и ве сразу полезут туда...

Автор: Wariner 10.1.2009, 20:36

BanMan.Ban, BanMan.TempBan - это функции для бана из скрипта, а тебе нужно выловить команды хаба поэтому и не получается.
посмотри скрипт и сделай по аналогии к остальным командам

 BanMsg.lua ( 1.04 килобайт ) : 38
 

Автор: STRELOK 10.1.2009, 20:53

Цитата(Артём @ 10.1.2009, 21:24) *
beated.gif А смысл показовать юзерам?может ты забанешь нарушителяс причиной ...Реклама хаба...
и IP и ве сразу полезут туда...

Полезут, но от силы человека 2=). Причина не такая, причина спам, а показывать бан для того, чтобы другие не спамили больше. Раньше юзал YnHub, там баны показывались, перешёл на птоку, баны не показываются, спама всё больше, и банов тоже

Автор: Артём 10.1.2009, 20:54

Цитата(STRELOK @ 10.1.2009, 20:53) *
баны не показываются, спама всё больше, и банов тоже


waaaht.gif антирекламу поставь

Автор: STRELOK 10.1.2009, 21:14

Цитата(Wariner @ 10.1.2009, 21:36) *
посмотри скрипт и сделай по аналогии к остальным командам

за скрипт огромное спасибо, работает!
Но есть пара вопросов:
Какую команду в скрипте надо прописать, чтобы показывало IP забаненного юзера?
Какую команду надо прописать в скрипте, чтобы показывало время бана?

Цитата(Артём @ 10.1.2009, 21:54) *
антирекламу поставь

антиреклама на хабе есть, но умудряются писчать не ссылкой dchub:// а просто, типо, заходите на хаб

Автор: Артём 10.1.2009, 21:25

Цитата(STRELOK @ 10.1.2009, 21:14) *
антиреклама на хабе есть, но умудряются писчать не ссылкой dchub:// а просто, типо, заходите на хаб

на форуме полно антиреклам которые фильтруют ип даже без dchub://

Автор: STRELOK 10.1.2009, 21:38

Цитата(Артём @ 10.1.2009, 21:25) *
на форуме полно антиреклам которые фильтруют ип даже без dchub://

Лан, щя мы не про антирекламу, а про скрипт для показа бана или кика всем пользователям, два вопроса я написал выше

Автор: Wariner 10.1.2009, 21:38

Цитата(STRELOK @ 10.1.2009, 21:14) *
Какую команду в скрипте надо прописать, чтобы показывало IP забаненного юзера?

Что ты под этим подразумеваешь? Когда банишь по нику чтоб ип высвечивался? Если да то смыл ли всего этого?!

Автор: STRELOK 10.1.2009, 22:09

Цитата(Wariner @ 10.1.2009, 21:38) *
Когда банишь по нику чтоб ип высвечивался? Если да то смыл ли всего этого?!

Да, чтоб IP высветился, пробую "..user.sIP..", скрипт вообще не работает после этого( Банить та я не только за рекламу буду, а например за угрозы, флуд, мат и тд. На всех хабах при бане показывается IP юзера

и ещё, есть проблема с временным баном, делаю всё по аналогу, который дал Wariner, текст не отображается всем юзерам((

PS: я не профессионал по скриптам lua, я могу только подправить какой то скрипт под себя

Автор: Wariner 10.1.2009, 22:13

синтаксис команды бан: ban <ник> <причина>
т.е. если ты хочешь чтоб был показывало ип надо проверять есть ли пользователь на хабе или нет и только если он есть ты можешь получить ип. А вообще лучше не накручивать этой фигни! Есть синтаксис команды и делай по нему ничего не придумывая! На всякий случай команды можно посмотреть командой !help

смнтаксис тембана: tempban <ник> <время> <причина>, т.е. в скрипте надо добавить поиск ещё одного слова! Читай вот это http://mydc.ru/topic266.html

Автор: STRELOK 11.1.2009, 8:34

Вот составил, но что то работает неправильно( Скрипт не работает(, поправьте меня если что не так

Код
sBot = SetMan.GetString(21)

tProfile = {
[0] = 1,
[1] = 1,
}

function ChatArrival(tUser,sData)
    sData = string.sub(sData,1,-2)
    local _,_,cmd = string.find(sData, "%b<>%s+(%S+)")
    if cmd == "!ban" then
        if tProfile[tUser.iProfile] == 1 then
            local _,_,sNick = string.find(sData, "%b<>%s+%S+%s+(%S+)")
            local _,_,sIP = string.find(sData, "(%d*%.%d*%.%d*%.%d*)")
            local _,_,sReason = string.find(sData, "%b<>%s+%S+%s+%S+%s+(%S+)")
            if not sNick then
                Core.SendToUser(tUser, sData)
                Core.SendToUser(tUser,"<"..sBot.."> Вы не ввели ник!")
                return true
            end    
            if not sReason then
                sReason = "не указанна"
            end    
            Core.SendToAll("<"..tUser.sNick.."> забанил "..sNick.." (IP: "..sIP..") потому, что: "..sReason)
        end    
    end
    if cmd == "!tempban" then
        if tProfile[tUser.iProfile] == 1 then
            local _,_,sNick = string.find(sData, "%b<>%s+%S+%s+(%S+)")
            local _,_,sIP = string.find(sData, "(%d*%.%d*%.%d*%.%d*)")
            local _,_,BanTime = string.find(sData, "%b<>%s+%S+%s+%S+%s")
            local _,_,sReason = string.find(sData, "%b<>%s+%S+%s+%S+%s+(%S+)")
            if not sNick then
                Core.SendToUser(tUser, sData)
                Core.SendToUser(tUser,"<"..sBot.."> Вы не ввели ник!")
                return true
            end    
            if not BanTime then
            Core.SendToUser(tUser, sData)
                Core.SendToUser(tUser,"<"..sBot.."> Вы не ввели время бана!")
                return true
            end
            if not sReason then
                sReason = "не указанна"
            end    
            Core.SendToAll("<"..tUser.sNick.."> забанил "..sNick.." (IP: "..sIP..") следующие "..BanTime.." потому, что: "..sReason)
        end    
    end
end

function KickArrival(tUser, sData)
    sData = string.sub(sData,1,-2)
    local _,_,sNick = string.find(sData, "$Kick%s+(%S+)")
    local _,_,sIP = string.find(sData, "(%d*%.%d*%.%d*%.%d*)")
    local _,_,sReason = string.find(sData, "$Kick%s+%S+%s+(%S+)")
    if not sReason then
        sReason = "не указанна"
    end    
    Core.SendToAll("<"..tUser.sNick.."> кикнул "..sNick.." (IP: "..sIP..") потому, что: "..sReason)
end

Автор: Wariner 11.1.2009, 17:24

строчка

Код
Core.SendToUser(tUser, sData)

лишняя.
Код
local _,_,sReason = string.find(sData, "%b<>%s+%S+%s+%S+%s+(.*)")

это мои касекиbeat_brick.gif извиняюсь

А по делу так: ты просто не понимаешь что делаешь поэтому у тебя не получается. Вот представь ты через меню вводишь команду темпбана после чего в чат попадает следующее !tempban Вася 1h Реклама хаба. первым действием мы находим первое слово(т.е. команду):
Код
local _,_,cmd = string.find(sData, "%b<>%s+(%S+)")

Чтобы понять как находим внимательно(а может и не один раз) прочитай это http://mydc.ru/topic266.html
Затем мы находим остальные слова. Тут то и возникает вопрос зачем ты ищешь IP если ты его не вводил?!
Код
    if cmd == "!tempban" then
        if tProfile[tUser.iProfile] == 1 then
            local _,_,sNick = string.find(sData, "%b<>%s+%S+%s+(%S+)")
            local _,_,BanTime = string.find(sData, "%b<>%s+%S+%s+%S+%s+(%S+)")
            local _,_,sReason = string.find(sData, "%b<>%s+%S+%s+%S+%s+%S+%s+(.*)")

Автор: STRELOK 11.1.2009, 17:30

Цитата(Wariner @ 11.1.2009, 18:24) *
А по делу так: ты просто не понимаешь что делаешь поэтому у тебя не получается.


Я просто мало разбираюсь в таких кодах, я понимаю лёгкие строчки, типо:
Код
Core.SendToAll
if Cmd

я читал темку, немного не понял, перечитаю ещё раз

А вообще можно будет сделать этот скрипт так, чтобы IP перехватывался и показывался всем?

Автор: Wariner 11.1.2009, 17:53

можно в двух случаях если банишь по ип и если пользователь онлайн. Вот код для второго случая

Код
User = Core.GetOnlineUsers()
for i,v in pairs(Users) do
     if v.sNiick == sNick then
            sIP = v.sIP
    end
end

Автор: STRELOK 11.1.2009, 18:03

Цитата(Wariner @ 11.1.2009, 17:53) *
банишь если пользователь онлайн.

Пользователи с хаба никуда не денутся, если пользователь оффлайн, мой DC клиент показывает его айпи, и я просто добавляю бан через окон PtokaX. Хаб из интернета не доступен, он работает только в сети ООО "Факториал-Интернет". Поэтому если пользователь нарушил какое либо правило хаба, с хаба он не уходит, а спокойно ожидает бана, а некоторое даже просят, чтобы их забанили. Баню всегда командой !tempban.

Вот я и спрашиваю, можно ли как-нибудь сделать так, чтобы этот скрипт выдавал сообщение бана всем, но при этом показывал IP забаненного юзера?

Автор: Setuper 11.1.2009, 18:27

Код
local _,_,BanTime = string.find(sData, "%b<>%s+%S+%s+%S+%s")
Где захват времени?

Нужно писать так:
Код
local _,_,BanTime = string.find(sData, "%b<>%s+%S+%s+(%S+)")

Автор: Wariner 11.1.2009, 18:36

Цитата(STRELOK @ 11.1.2009, 18:03) *
Вот я и спрашиваю, можно ли как-нибудь сделать так, чтобы этот скрипт выдавал сообщение бана всем, но при этом показывал IP забаненного юзера?

я же написал выше код.

Автор: Setuper 11.1.2009, 18:39

просто если использовать бан через ptokax, а не через команду, сообщение о бане не может никаким образом появиться)))

Автор: STRELOK 11.1.2009, 18:59

Цитата(Setuper @ 11.1.2009, 18:39) *
просто если использовать бан через ptokax, а не через команду, сообщение о бане не может никаким образом появиться)))

нет, это если юзер ушёл, и я не успел забанить, то я добавляю бан через оконо PtokaX

Цитата(Wariner @ 11.1.2009, 18:36) *
я же написал выше код.

что то после вставки кода в скрипт, он(скрипт) перестаёт работать(

Автор: Wariner 11.1.2009, 19:16

пробуй

 BanMsg.lua ( 2.13 килобайт ) : 46
 

Автор: STRELOK 11.1.2009, 19:32

Огромное спасибо всем, кто помог, особенно Wariner feel_good.gif

З.Ы: Скрипт работает!

Автор: Killer47 5.2.2009, 13:53

под апи1 не найдется такого скриптика ,плизз очень нужно

Автор: Wariner 5.2.2009, 14:35

http://mydc.ru/topic605.html

Автор: dimetrius 5.2.2009, 17:08

Нельзя ли сделать чтоб сообщение не в чат приходило, а в статусную строку? Там где почти всегда написано: "Пароль послан..."

Автор: Wariner 5.2.2009, 21:04

2dimetrius: пробуй

 BanMsg.lua ( 2.37 килобайт ) : 20
 

Автор: STRELOK 6.2.2009, 8:37

Позволил опробывать себе, не работает, пишет в чат, но не в статусную строку

Автор: Killer47 6.2.2009, 11:04

Цитата
(исключения составляют вещи, которые есть только в API_2 - после перевода по данной методике эти вещи будут просто игнорироваться скриптом (или возвращать nil)


Собствено это и происходит ,может есть не переведеный ,а написаный для апи1

Автор: dimetrius 7.2.2009, 0:07

Цитата(Wariner @ 5.2.2009, 20:04) *
2dimetrius: пробуй

в чат отправляется! И кстати отправляется наверное куда выставлено в настройках PtokaX (т.е. в личку, или в чат), т.к. на одном хабе, где всё в личку, там в личку эта месага отправляется, а на тестовом в чат основной, куда и всё остальное!

Автор: Wariner 7.2.2009, 22:40

для того чтобы скрипт работал надо в дц клиенте включить хабтопик иначе ничего не увидите а сообщения приходят ибо я не закоментировал строки первоначального варианта)))