myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
История благодарностей участнику Ksan. Спасибо сказали: 657
Дата поста: В теме: За сообщение: Спасибо сказали:
10.1.2012, 5:23 SuspendHub
Блокирование хаба от входящих (защита от внешних атак)
Скрипт блокирования хаба от входящих юзеров (вариант защиты от внешних атак)

Название: SuspendHub.lua
Версия: 1.0
Платформа: PtokaX
API: API 2
Автор: Ksan (aka Trans)
Город: Томск, Россия
Дата: 10-01-2012

Описание:
1. Если вы заметили, что ваш хаб атакуют, то через меню можете заблокировать хаб для всех входящих. По умолчанию - на 5 минут (это регулируется в настройках хаба), также в меню есть блокирование на желаемое время (тоже в минутах). Разблокирование через меню либо по прошествию заданного времени.
При блокировании хаб извне будет казаться отключенным, с соответствующими сообщениями, а сидящие в хабе ничего не почувствуют, всё будет работать в обычном режиме.
2. Есть в скрипте и код блокирования без срока, но это опасно в случае вылета из хаба последнего оператора/админа - будет некому разблокировать хаб вплоть до его перезагрузки (а для удалённых хабов в некоторых случаях и это может оказаться проблемой). Для включения команды блокирования без срока нужно раскомментировать код в 2-х местах - в отправке меню и в исполняемом коде
3. Сообщения о блокировании/разблокировании приходят автору команды и в Опчат.
Текстовку можете менять по своему вкусу.
Nickolya, ustas, Tsd, Артём, stoparik, Cyber_voodoo, shur49, bENNY!, nafig, Ust, PAUK
8.1.2012, 0:04 Вопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
MIKHAIL
5.1.2012, 18:57 RegmeEmail
API2 | Регистрация через e-mail
Ameet, находишь в скрипте вот такой код:
Код
function GetPass()
  math.randomseed(os.time())
  return tostring(math.random(100, 99999999))
end
и вместо него копируешь отсюда этот:
Код
local sPass = ""
tAbc = {
    "0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K",
    "L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f",
    "g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
}

function GetPass()
    math.randomseed(os.time())
    sPass = tAbc[math.random(#tAbc)] -- 1-я буква пароля
    local iPass = math.random(4, 7) -- длина пароля = [(от 4 до 7) + 1]
    for i = 1, iPass do
        sPass = sPass..tAbc[math.random(#tAbc)]
    end
    return sPass
end

Тут в этой строке регулируется и создаётся произвольная длина пароля:
Код
local iPass = math.random(4, 7)
Вместо 4 и 7 можешь писать другие разумные размеры длины пароля. Только нужно учитывать, что 1 символ уже создался в предыдущей строке.

PS: Можно было обойтись без предварительной таблицы символов tAbc, но тогда код стал бы громоздче.

UPD:
Так, наверно, эту переменную - local sPass - надо объявить заранее, до использования в function GetPass(), иначе не уверен, что вытащится по return.. Поэтому в код внёс поправку небольшую.
Ameet
3.1.2012, 4:48 Вопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
1. MIKHAIL, изящность достигается не этим, не твоими "блошиными" исследованиями, ей-богу! Я уже писал тебе выше. Твои скрипты пашут с производительностью в 1 млн вычислений в секунду? Тогда да, твои экзерсисы оправданы. А если ты пишешь то же, что и мы, то забей, займись чем-то более полезным. Просто пиши, как умеешь...остальное придёт с практикой
2. И да, ты выше спрашивал про function, отвечаю - нет разницы.
Это вопрос предпочтений. Лично я пишу всегда так:
Код
function GetData(sData)


Цитата
[01:40:49] * 10
[01:40:49] * 11

Enyby, а ты проверял только 1 раз?
Проверь несколько раз, удивишься.
Вот у меня с 4 раз:
Тык сюда:
Цитата
[08:41:58] 6
[08:41:58] 6
[08:42:22] 6
[08:42:22] 6
[08:42:40] 5
[08:42:40] 6
[08:43:08] 6
[08:43:08] 6

Разница чисел у тебя и у меня, думаю, только из-за разных процессоров.
И вообще, иногда надо думать и о красоте, особенно когда нет практически разницы между способами в скорости. Разница в микросекунды и наносекунды не считаются.
Enyby, MIKHAIL
1.1.2012, 9:01 Kinozal_tv
API2 | Скрипт новостей с трекера
MIKHAIL, эти файлы у тебя могут лежать и в другом месте.
Проверь, нет ли у тебя в папке с Птокой где-нибудь ещё одной папки libs..
MIKHAIL
29.12.2011, 1:42 Вопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
Код
Stroka:sub(3,4)
- тут от строки Stroka выделяется кусок от 3-го по 4-е число символов.
Для изучаемого числа 0.141592654 это будет пропуск первых двух символов "0." и захват цифр "14" из "141592654"

Можно брать и отрицательные значения для этих аргументов:
Код
Stroka:sub(3,-4)
- тут у нас захватятся с 3-го по 4-е с конца, то есть, получим число "141592"
Знак минус при аргументе означает - с конца строки.
MIKHAIL
29.12.2011, 1:25 Вопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
MIKHAIL, заранее не парься.
Пиши скрипт спокойно. Вот когда появятся проблемы, тогда и будем решать. big_smile.gif

И да, ты смотри моё предыдущее сообщение, я там подправил кое-что.
MIKHAIL
28.12.2011, 23:43 Вопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
MIKHAIL, а ещё есть это:

Код
local Pi = 3.141592654  --  твоё обрабатываемое число
local sUnit = ""  --  единица измерения, в данном случае пусто (а может быть и метр, и процент и что угодно)
Core.SendToAll(string.format("%0.2f %s", Pi, sUnit))  --  где 2f - нужное число знаков после запятой, то есть, 2 в данном случае


PS: в числе Пи надо было точку вместо запятой.

А ещё можно так:
Код
local Pi = 3.141592654
local M, N = math.modf(Pi)  -- получение целой части числа и дробной части
Core.SendToAll(M.."."..tostring(N):sub(3,4))  -- получаем 3.14

Это для представления.
А для выполнения матем. операций в дальнейшем нужно применить команду
Код
tonumber(вышеполученное строчное выражение)

Например, продолжая предыдущий код (который с выводом числа в чат) - заменяем вывод в чат на эту строку:
Код
Core.SendToAll(tostring(tonumber(M.."."..tostring(N):sub(3,4))*10))  --  получаем 31.4

Тут происходит вот что - сначала соединяем и получаем в строковом виде 2 части (вторая часть только с двумя значащими цифрами после запятой) числа вновь, превращаем это полученное в числовой вид и умножаем на 10 и выводим результат в чат, превратив снова в строковый вид (чтоб убедиться в правильности метода). big_smile.gif
MIKHAIL
27.12.2011, 17:01 Public PHP hublist (Хаблист) by Enyby
Публичный открытый хаблист на PHP
Цитата(Mellon)
раз вы не тролль то я сделаю предположение что вам до 20.

На баш!

PS: [To All] И вообще, ребятки, зачем вы мучаете животное?
Забейте (забаньте?) его и хватит его бред читать.
Артём
27.12.2011, 16:51 Tiny Hublist
Программа для создания хаблистов
Mellon, хосспади, какое-то невнятное бормотание и бред сумасшедшего ты пишешь.
Может, просто промолчишь и за умного сойдёшь?
Никогда не поверю, что человек, пишущий ТАК, способен написать хоть 10 строк кода без ошибок, неважно на каком языке...если русским-то не владеет и логика дико страдает.
Артём, PomanoB
27.12.2011, 3:37 WhoisNew
Через меню хаба добывает WHOIS-информацию об IP
UPD-5:
- Перезалил, чуть-чуть изменив одну строчку (причина - маленькое изменение на странице результатов сайта, приведшее к неработе скрипта).
Теперь скрипт работает.

PS: Сорри, что так долго не исправлял...просто руки не доходили, а реально пришлось вносить всего лишь пустяковое изменение..
striker
26.12.2011, 15:11 Постоянно Зависает Работающая Ptokax 0.4.1.1
An error occured in the application
Fe(one)X, разбирайся лучше, почему хаб зависает. Просто так ничего не бывает.
У всех нормально пашет, и у тебя пахал столько времени, и вдруг стал виснуть....что-то тут не так у тебя.
Не факт, что следующая версия не будет зависать.
Так что разберись с этим сначала.
bENNY!
23.12.2011, 22:06 Нужен скрипт для вкл/выкл чата
Достаточно полазать по разделам.
мамин_парень
22.12.2011, 2:15 Current_Weather_All_Cities
Выводит текущую погоду автом. в чат и по запросу, любые города
UPD:
- добавил показ текущей даты/времени местности (правда, на сервере погоды время отстаёт минут аж на 5 big_smile.gif , но всё же...)
- исключил вывод данных при получении ошибки с сайта (чтоб все города не получали одну и ту же погоду)
- небольшие косметические малозаметные изменения, улучшающие работу скрипта.

Скрипт перезалил в сообщении #1.

UPD:
- убрал показ даты/времени для вывода в чат местной погоды (зачем местным показывать их время, тем более, не очень точное)

Скрипт перезалил в сообщении #1.
ustas
19.12.2011, 11:57 Current_Weather_All_Cities
Выводит текущую погоду автом. в чат и по запросу, любые города
UPD:
Выявился неучтённый момент - в архивных данных могут оказаться 2 года через запятую с одинаковой температурой Max. или Min., и при попадании такого случая скрипт падает. Что сегодня и случилось с Владивостоком.
Хорошо, хоть сам город не пострадал. big_smile.gif
Код подправил, скрипт перезалил в сообщении #1.

UPD-2:
Сделал косметическую подправку - восход/заход солнца разделил на 2 строки, а то слишком длинная получалась:
Код
Солнце:             восход: 09:52
                    заход:  16:42

Скрипт перезалил в сообщении #1.
striker
15.12.2011, 6:24 Current_Weather_All_Cities
Выводит текущую погоду автом. в чат и по запросу, любые города

Наконец-то собрался и переделал скрипт.
Причина - полное изменение структуры страницы на сайте.
Пришлось всё перелопатить.
Плюс добавил показ восхода/захода солнца.


Дата заливки: 15-12-2011 06:25 (мск.)

Качайте из первого сообщения темы.
rival, Dan Claimant
9.12.2011, 1:46 Как настроить поиск на винде 7 начальной
Ты когда научишься описывать свою проблему в сообщении, а не в заголовке темы?
Заголовок - только чтоб обозначить, о чём пойдёт тема, а суть проблемы описывают в первом сообщении!
Дурдом какой-то.
И ещё - тут КАПСОПИСЦАМ не помогают.
И напоследок - винда тут ни при чем, да хоть на MacOS сиди..
мамин_парень
8.12.2011, 2:51 Несколько Слов О Захватах И Регулярных Выражениях
исключительно для разработчиков
Попробуй внедрить в свой скрипт эту процедуру (названия переменных можешь изменить как тебе понравится):
Код
t = {}
for k, v in sMsg:gmatch("<pubDate>.-</pubDate>") do
    local s = v:match("<pubDate>(.-)</pubDate>")
    t[k] = s
end

При выполнении все строки, содержащее нужную тебе информацию (в данном случае время/дату) сохранятся в таблицу t
Потом сможешь вытаскивать их когда и как тебе угодно, например, так:
Код
local sTime = t[1]

дальше это вставляешь в своё выводимое сообщение в нужное место.
MIKHAIL
3.12.2011, 13:12 От: Mellon DC Hub List
От темы с ID: 5060
Как вариант - А.П.Чехов. "Письмо учёному соседу":
Цитата
..Вы сочинили и напечатали в своем умном соченении, как сказал мне о. Герасим, что будто бы на самом величайшем светиле, на солнце, есть черные пятнушки. Этого не может быть, потому что этого не может быть никогда. Как Вы могли видеть на солнце пятны, если на солнце нельзя глядеть простыми человеческими глазами, и для чего на нем пятны, если и без них можно обойтиться?..
-=ДЕМОН=-
3.12.2011, 12:30 От: Mellon DC Hub List
От темы с ID: 5060
Mellon, как тебе удаётся написать такие предложения - в 100 слов?

И ещё:
Цитата
ты об этом мало что знаешь (так как тебя тогда не было)

Интересно было бы услышать комментарии оппонента на эту тему. big_smile.gif
-=ДЕМОН=-
2.12.2011, 16:42 помогите сделать скрипт
max666:
Цитата
Да мне трудно потому что я в это не вникал и не собираюсь !!!!

В этом вся суть твоя.
Потому и не хотят тебе помогать.

И вообще, если ты такой пустяк не можешь и даже не хочешь сделать, то нафиг ты хаб завёл, спрашивается?!
Артём
8.11.2011, 16:31 Сдвиг таймеров для частного случая
Периодическая инициализация действий со сдвигом по времени
Товарищ один (Akvilon) попросил помощи, и вот кидаю частное решение (хотя расширить никто не мешает).
Цель - периодическая инициализация действий со сдвигом по времени (например, 2 сообщения в чат, разнесенных по времени на полчаса, то есть, общий период - 1 час)
Код
local iTime = 1 -- в данном случае - это 1 час

function OnStartup()
    tmr1 = TmrMan.AddTimer(iTime*3600000)
end

function OnTimer(tmr)
    if tmr == tmr1 then
        Core.SendToAll("Бла-бла-бла!")
        tmr2 = TmrMan.AddTimer(iTime*30000)
    elseif tmr == tmr2 then
        Core.SendToAll("Шурум-бурум-тяп-ляп!")
        TmrMan.RemoveTimer(tmr2)
    end
end

Возможно, решение уже где-то есть, а возможно, ещё кому-то пригодится. big_smile.gif
rival
8.11.2011, 10:50 Запрет поиска
определенныхслов\выражений
WINS, думаю, если тебе надо не пропускать поисковый запрос, то, наверно, нужно вместо бана юзера достаточно просто проигнорить его запрос через
Код
return true
в функции обработки поискового запроса.
WINS, мамин_парень
7.11.2011, 21:49 Запрет поиска
определенныхслов\выражений
WINS:
Цитата
нужен дроп поиска определенных слов, а там бан

Не вижу проблему. Переделать бан в дроп быстрее, чем писать ответ сюда.
Код
Код
Core.Disconnect(tUser)
вместо кода бана.
WINS, мамин_парень
6.11.2011, 21:10 Запрет поиска
определенныхслов\выражений
WINS, ищи по слову Antisearch тут на форуме через поисковую форму..
WINS
30.10.2011, 22:57 время входа на хаб
задержка при соединении
MaxFox, вот маленький скриптик, точнее, 2.
Первый отправишь для проверки наличия галочек, которые ты не можешь найти (про отправку юзерам майинфо).
Если тебе в чате напишет при этом хотя бы один раз true, то запусти второй скриптик, он снимет все 4 галочки.
Код
local sAdmin = "MaxFox"
for i = 13, 16 do
    Core.SendToNick(sAdmin, tostring(SetMan.GetBool(i)))
end


Код
local sAdmin = "MaxFox"
for i = 13, 16 do
    Core.SendToNick(sAdmin, tostring(SetMan.GetBool(i, false)))
end

После второго скрипта запусти ещё раз первый скрипт для проверки (если пришлось использовать второй)

UPD-1: Исправил одну букву в первом скрипте. Попробуй по-новой.
UPD-2: Проверил - работает.
UPD-3: Сейчас заходил к тебе - вход 6 секунд при 14 600 юзерах был.
мамин_парень
30.10.2011, 21:45 время входа на хаб
задержка при соединении
MaxFox, ты ведь всё-таки не снял галочки (ну если линукс, то не поставил нули в файлике настроек) в настройках "Моя информация"! Я тебе зря, что ли, писал про это?!
Иначе я ни у кого не видел бы всякие тэги, описания и иной мусор у 21 тысячи юзеров...
Убери их, и будет у тебя рай.

UPD: Во, Алексей уже показал..
мамин_парень, valera_
11.10.2011, 16:44 DDD++ – лёгкий и быстрый DC++ клиент
Преднастроенный клиент с готовыми списками хабов
Только я не понял, зачем здесь рекламировать клиента, который собран конкретно под ЛивКомм?
Там у вас (ну или у них), что, негде рекламить? Они тут сидят? Или тут их филиал?
По-моему, это уже перебор, извини..
mariner, Артём, PomanoB, KT315, Saymon21
7.10.2011, 17:58 Администрация
Скрипт Статус Модератора или Master по Ип
reidel_viktor, вот сварганил только что, получай тут.
Даже если и есть такой скрипт, мой не будет лишним, думаю..
reidel_viktor, ImDim
7.10.2011, 17:56 Reg_over_IP
Скрипт привязки профиля к постоянному IP
Скрипт привязки профиля к постоянному IP
(другими словами - автоматическая (без ввода пароля) авторизация руководящего состава по постоянному IP)

Название: Reg_over_IP.lua
Платформа: PtokaX
API: API 2
Автор: Ksan
Город: Томск, Россия
Дата: 07-10-2011

Если у админа, оператора или випа постоянное IP, то они смогут заходить на хаб под постоянным или любым ником, не авторизуясь вообще, и профиль у них всё равно останется тем же самым (админ, оператор или вип)
В скрипте в таблицу прописываются IP и профиль, привязанные друг к другу.
То есть, ему не придётся заботиться и о пароле.
Сообщение о приходе такого юзера приходит в опчат (и/или главному админу - в скрипте есть закомментенная строка для этого)

UPD:
-= Внимание! =-
Скрипт пока имеет недостатки, так что лучше пока не сильно на него надеяться!

UPD-2:
Пока отключил доступ к скрипту, надо разобраться с шероховатостями.

UPD-3:
Скрипт переделан, залит и доступен снова.
Прошу прощения за доставленные неудобства!

Примечания:
1. Теперь для работы скрипт обязательно наличие двух вспомогательных файлов в отдельной папке.
Туда вынесены 2 таблицы: в одной должны быть IP+профили, в другой таблице будут находиться не желающие добровольно исчезать из списка юзеров ники вышедших из хаба юзеров из первого списка (ради которых и сделан скрипт). Они будут принудительно скрыты из списка. Это костыль, но других, более изящных, путей я не нашёл)
2. О пароле можно не заботиться, скрипт при входе нашего юзера зарегистрирует его временно с паролем, равным его IP. Например, "127.0.0.1" При выходе юзера из хаба эта регистрация снова удалится из базы Птоки, ник будет свободен для захода и регистрации любым юзером.
3. В теле скрипта встроенная небольшая таблица - tFixNicks - туда нужно внести резервные ники для администратора хаба (чтоб по ходу экспериментов со скриптом или просто если использует скрипт для своего входа), чтоб случайно не остаться без заргенного админского ника (из этой таблицы ники скрипт не разрегистрирует ни при выходе юзера из хаба, ни при отключении самого скрипта)

Помните, скрипт только для тех, у кого постоянный IP (опы, випы и операторы). Мастеру тоже можно, но только на свой страх и риск. big_smile.gif

Дата последней заливки: 20-11-2011 17:45 (мск.)
ustas, PomanoB, darkangel17, CrazyKiller, DEN 007
13.9.2011, 17:41 Rss_NewsRu
Скрипт для чтения лент новостей с сайта http://www.NEWSru.com/
Можно:
Код
        for i,v in pairs(tCmds) do
            sRssMenu = "$UserCommand 1 3 "..sMenu..tCmds[i][1].."$<%[mynick]> "..i.."||"
            Core.SendToUser(tUser,"$UserCommand 0 3")  --  ЭТО НОВАЯ СТРОКА для отправления разделителей в меню
            Core.SendToUser(tUser, sRssMenu)
        end

Просто добавь одну строку, как показано выше, в функции
Цитата
function UserConnected(tUser)
больше ничего не меняя.
AfLc
11.9.2011, 13:22 Rss_NewsRu
Скрипт для чтения лент новостей с сайта http://www.NEWSru.com/
Скрипт для чтения лент новостей с сайта http://www.NEWSru.com/

Название: Rss_NewsRu.lua
Платформа: PtokaX
API: API 2
Автор: Ksan
Город: Томск, Россия
Дата: 11-09-2011

Примечания:
Каждая лента (тема) при первом открытии заносится в таблицу (в памяти) и сохраняется по умолчанию 1 час (это время регулируется в настройках ).
В дальнейшем, пока не пройдёт час, эта лента при запросе откроется мгновенно из памяти, по прошествии срока при первом вызове обновится из сайта.
Ну и ещё 30 секунд (тоже регулируется в настройках) - между любыми запросами через меню скрипта (зачем? а фиг знает...у меня такая привычка - сетевые скрипты стараюсь делать с паузами между запросами big_smile.gif )
Всего в базе 18 лент. Все - с новостного сайта NEWSru.

Думаю, ещё один новостной скрипт лишним не будет.
Nickolya, Tsd, Артём, ShadoWx, PomanoB, Saymon21, Агрессор, shullz, stone, AfLc, Hashish, Nikolaevich
10.9.2011, 16:30 Network Separation
API1, API2 | Скрипт разделения сетей пользователей
van21, для этого есть другие, специально для этого сделанные, скрипты. Я не знаю ссылки, так что придется искать тебе самому на форуме. Возможно, в разделе скриптов с MySQL...возможно.
van21
8.9.2011, 6:23 WhoisNew
Через меню хаба добывает WHOIS-информацию об IP
UPD-4:
- наконец-то дошли руки, подогнал скрипт под изменившиеся страницы результатов, скрипт снова работает.
У кого если вдруг какой-то IP вызовет падение скрипта (в силу множественности вариантов представления информации на странице результатов), сообщите сюда этот IP в тему мне, приму меры.

Последняя перезаливка 08-09-2011 07:15 (мск.)
striker, AfLc
31.8.2011, 20:00 Network Separation
API1, API2 | Скрипт разделения сетей пользователей
1. Тогда, как я и говорил, все "свои" диапазоны (локалка + выделенка) держи в одной таблице. И больше никаких таблиц диапазонов.
2. Чтоб не могли отключить разделение сетей, как вариант, можешь скрыть от юзеров из меню строку отправки команды.
Скажем, так:
Код
--    Core.SendToUser(curUser, "$UserCommand 1 3 "..sMenuWay.."ВКЛ./ВЫКЛ. разделение сетей$<%[mynick]> +"..sOn_OffCmd.."|")
van21
31.8.2011, 16:56 Network Separation
API1, API2 | Скрипт разделения сетей пользователей
1. van21, ты какой-то странный...всё время городишь одно на другое.
2. Вопрос - чего ты хочешь - чтоб первая сеть не могла качать из второй сети? или ещё что-то?
3. И что за третья сеть? 127.0.0.1 - это вообще-то комп, где стоит хаб. Удали эту сеть.
4. Насколько я вижу, первая сеть уже вобрала в себя все твои локальные диапазоны.
А во вторую сеть у тебя что за диапазоны попали?
Я же писал раньше тебе - все диапазоны, которые беспроблемно могут качать друг с друга, должны находиться в одной сети (таблице), а всё, что не вошло в эту таблицу - не надо заносить в списки. Они по умолчанию будут в сети №0.

Несколько сетей нужно организовывать только в том случае, когда на ваш хаб зходят люди из нескольких провайдеров, которые между собой "воюют", то есть, за скачивание между ними берутся деньги, вот тогда и необходимо организовать несколько разных сетей.
А если у тебя проблема только между локалью (где силят все ваши местные юзеры) и интернетом, то достаточно прописать в скрипте только сеть №1.
van21
31.8.2011, 0:39 Переделка скриптов
Прошу помощи
Fe(one)X, функцию function checkForSafe(msg) ты написал, но нет обращения к ней, то есть, у тебя нет проверки вхождения выражения из таблицы исключений в сообщение юзера.
Короче, надо вместо строки
Код
        if sdata then
написать так
Код
        if sdata and not checkForSafe(sdata) then

Fe(one)X
31.8.2011, 0:14 Network Separation
API1, API2 | Скрипт разделения сетей пользователей
Ну узнай, в какой диапазон входят ВПН-адреса и внеси в тот же список "своих"..
Так же поступи с выделенками. Они же не произвольные IP, а входят в какие-то определённые диапазоны, вот узнай и занеси в в таблицу.
А диапазоны можно узнать через сервера WHOIS. Запрашиваешь какой-то айпи и сервер тебе выдаст, в какой диапазон он входит.
van21
30.8.2011, 22:10 Network Separation
API1, API2 | Скрипт разделения сетей пользователей
Это уже тебе надо ориентироваться в сетях вашей местности...наверно, должен быть сайт какого-нибудь вашего провайдера, где будет таблица ваших сетей.
У нас в городе (области) есть. Там больше 120 диапазонов.
Ищи у себя тоже.
van21
30.8.2011, 21:38 Network Separation
API1, API2 | Скрипт разделения сетей пользователей
Повторюсь и тут:
Код
    tNetworkShareLimit = {
---        [0] = 1073741824,         -- 1 ГБ (1024^3), это все юзеры, ip которых не прописаны в таблице
---        [2] = 1099511627776,    -- 1 ТБ (1024^4)
    }

    tNetworkUsersLimit = {
---        [0] = 0,    -- это лишь пример, тут мы запрещаем вход всем тем, чей ip не описан в таблицах сетей
---        [1] = 40,
---        [3] = 2,
    }

Сделай как тут - комменты спереди...тогда не будет ограничений и выкидышей/незапусков.
И не обращай внимания на то, что написано после комментирующих чёрточек впереди, это не имеет значения, пока закомментены.
van21
28.8.2011, 20:29 Ваши Хабы И Их Адреса
А ещё говорят, что сны не сбываются...вот и верь людям после этого..
AfLc
26.8.2011, 20:57 Переделка скриптов
Прошу помощи
Fe(one)X, в скрипте отправки топика измени одну строку так:
Код
function OnTimer()
    if tTopic ~= {} then
        SetMan.SetString(10,tTopic[math.random(1,table.maxn(tTopic))]:sub(1,256).." Время: "..os.date("%X"))  -- изменённая строка*
    end
end

И будет выводить твои топики + текущее время (но только на момент отправки, потом до следующего топика время будет висеть одно и то же). Может, лучше хотя бы без секунд? Тогда время в топике будет более корректно выглядеть.
Если без секунд, то строка должна выглядет так:
Код
        SetMan.SetString(10,tTopic[math.random(1,table.maxn(tTopic))]:sub(1,256).." Время: "..os.date("%H:%M"))  --  изменённая строка*
Fe(one)X
20.8.2011, 18:54 Скрипт для открытия сайта через меню хаба.
Если так охота через меню хаба, делай команду в меню, которая выбросит в чат или приват ссылку, видную только тебе, потом нажимаешь на неё и заходишь на сайт.
Будет вместо одного два нажатия..
digor22
9.8.2011, 11:11 контекстное меню для АДМИНА
drkrol, нет уж, пиши тут. Я полагаю, твои вопросы по теме.
И я не люблю общаться в личках форумов по темам, для которых создан этот форум.

PS: Отвечаю тут на вопрос в привате насчёт пропажи всего меню - представь сюда свой список скриптов, наверняка там есть какой-нибудь малораспространённый бот с меню, убивающей все остальные меню, кроме себя, может.
Если не я, то кто-то другой просветит на эту тему, вопрос с такой проблемой поднимался уже не раз.

И по мелочам (безотносительно пропажи меню)..весь твой код приводить здесь не стану, отвечу по твоим косякам:
1. Посмотри сюда:
Код
function OpConnected(tUser)
Core.SendToUser(user,........
Видишь разницу в именах переменных user? Это должно быть одинаково! Если в предыдущих строках выше везде tUser, так и тут пиши так же везде.
2. Строка
Код
"$UserCommand 1 3 Бан\\Временный бан IP (полный)$<%[mynick]> fulltempbanip........
- тут команда без префикса, работать не будет.
3. Зачем правила/хабы/радио суёшь в баны/разбаны?
Код
Core.SendToUser(tUser,"$UserCommand 1 3 Бан\\Правила хаба$<%[mynick]> !rules||"..
"$UserCommand 1 3 Бан\\Хабы-друзья$<%[mynick]> !hubs||"..
"$UserCommand 1 3 разбан\\Сетевое радио$<%[mynick]> !radio||"

Да, и выше в самом верху (для юзеров) ты повторил одну команду два раза, вот эту:
Код
"$UserCommand 1 3 Меню хаба\\Правила хаба$<%[mynick]> !rules||"..


Похоже, ты надёргал из других скриптов строки, не понимая сути..
Насчёт пропажи меню уже написал выше.
drkrol
8.8.2011, 20:59 контекстное меню для АДМИНА
drkrol, вот пример:
Цитата
Core.SendToUser(user,"$UserCommand 1 2 "..UserMenu.."Баны\\Бан IP юзера на время$<%[mynick]> "..Prefix.."tempban %[nick] %[line:Время: m,h,d,M,y] %[line:Причина]|")

Тут кусочек
Цитата
$UserCommand 1 2
говорит, что команда работает только на нике онлайн-юзера, то есть, на нике открываешь меню
Цитата
%[nick]
, далее, исходя из команды выше, тебе будет предложено внести время, далее - причину. (Тут IP захватывается с живого юзера автоматом, главное, чтоб он был в списке).
Если бы в приведенной цитате вместо "1 2" было "1 1", то меню срабатывало бы только на вкладке хаба...если бы было "1 3", то и на вкладке и на никах живых юзеров.
Вот как-то так.. С твоей командой "!fulltempbanip" всё аналогично.
drkrol
8.8.2011, 9:51 контекстное меню для АДМИНА
drkrol, вместо
Код
function UserConnected(tUser)
пишешь
Код
function OpConnected(tUser)

и ниже удаляешь
Код
RegConnected = UserConnected
OpConnected = UserConnected
drkrol
25.7.2011, 13:07 Не могу качать с пользователей с интернета
???
Как почитаю темы и сообщения этого....так материться охота.. :(
Артём
3.7.2011, 22:35 Hub Menu
API2 | Меню для встроенных команд PtokaX
Может, пора уже тебе начать с элементарного? Например, с отправки команды !help в чат?
Ну либо с чего-нибудь чуть потруднее, скажем, с Букваря?
Цитата
"Рождённый ползать летать не может!"
© Древняя мезозойская поговорка..
Артём
3.7.2011, 18:44 программа для хаба
Тяжело перебросить порт?
Accelerator
16.6.2011, 22:03 Нужна помощь
спам боты
Можно просто не пропускать в чат сообщения, содержащие символы из определённого списка (куда входит, скажем, ряд символов из первого сообщения темы, не обязательно все возможные "нехорошие", но достаточное количество, чтоб какой-нибудь из них обязательно попадал в любой произвольный аналогичный набор символов)...
Вот накропал один из вариантов скрипта для нейтрализации такого спама:
Тык сюда:
Код
local sAdm = "Ksan"
local bShowAdm = true

local tForbidSimbols = { "Ђ", "Ѓ", "ѓ", "Љ", "Њ", "Ќ", "Ћ", "Џ", "ђ", "љ", "њ", "ќ", "ћ", "џ", "Ў", "ў", "Ј", "Ґ", "І", "і", "ґ", "ј", "Ѕ", "ѕ", "†", "‡", "¶",}

function ChatArrival(tUser, sData)
    local sData = sData:sub(1,-2)
    local sMsg = sData:match("^%b<>%s(.*)$")
    local bFS = false
    for _,v in pairs(tForbidSimbols) do
        if sMsg:find(v) then
            Core.SendToUser(tUser, "<"..tUser.sNick.."> "..sMsg)
            if bShowAdm == true then
                Core.SendToNick(sAdm, "<"..tUser.sNick.."> *** "..sMsg)
            end
            bFS = true
            return true
        end
        if bFS then
            break
        end
    end
end


Комментарий для всяких коч и мих:
-- строка
Код
local bShowAdm = true
для выбора - посылать ли админу с ником из строки
Код
local sAdm = "Ksan"
сообщение с показом заглушенного спама или нет...
Если неохота любоваться спамом, можете выбрать "false"
-- также можете дописать кик/дроп спамера вместо простого непропуска спама в чат...ну это сделаешь сам, если хочешь.
-- набор символов можно уменьшить/увеличить по своему усмотрению..

И - учись, а не списывай!
DEN 007
26.5.2011, 20:22 Подскажите где скрип такой найти
помогите
Master-Grow, убрал бы ты вот это из своей подписи:
Цитата
PtokaX упала в грязь.....

Неприятно видеть в твоих сообщениях каждый раз такое. Сам же его юзаешь, и такое пишешь..
Придумай что-то оригинальное, не обязательно ведь панковское.
Master-Grow
21.5.2011, 16:00 Милиция против DC
запрет со стороны милиции и провайдера
Надо в топиках, МОТД и по возможности в других местах позиционировать свой хаб как место для активного общения...
А если кто "нагло" предоставляет свои файлы и другие их "нагло" скачивают - ну это на их совести (ведь сам хаб не содержит ничего запрещённого - DC-софт ведь пока ещё не запрещён), пусть доблестные блюстители ими и занимаются, если смогут выявить "преступников"..
мамин_парень
12.5.2011, 20:46 Нужна помощь
помогите не кикает (dropip)
Хватит засирать форум тупостью, тебе уже тысячу раз всё разжевали и в рот положили, а ты всё клянчишь и клянчишь!
Если тебе не дано понять, ты хоть тресни, у тебя не получится, займись уже чем-нибудь полезным и доступным для твоих мозгов.
Артём
4.5.2011, 21:41 Подскажыте что делать незаходит в шару
1. Br@yZeR, вообще-то тебе советовали учить русский, а не "москалюгский"...
2. И с таким гавно-менталитетом (разделение людей на москалюг и хохлов, а может, ещё что-то не менее вонливое) и спесью тебе тут нечего делать, пожалуй!
3. И ещё - Птоке, и тем более, клиентам, насрать, какой национальности и какой страны юзеры, попробуй "зайти в шару" к американцам или румынам, и предъяви им претензии..
4. Твоя проблема решается на уровне местного админа (ибо твой вопрос - чисто юзерский), вот и обращайся к нему.
Saymon21
19.4.2011, 9:03 Tiny Hublist
Программа для создания хаблистов
Много хаблистов - к чему? Скоро народ начнёт гасить пингеров, не разбираясь, где чей айпи..
Цитата
Те, кто сможет понять — они и свой хаблист не сильно вспотев напишут или из этого слепят. Большинство-же будет мозг выносить нубскими вопросами.
....и вдобавок заменят авторскую подпись своими, "}{AI<Ep"-скими..
Даже на этот Tiny уже новые "авторы" есть...

Не надо выкладывать полную версию!
Артём
8.4.2011, 23:25 Отправка личек по профилям
Отправка сообщений в личку по профилям
Лучший мануал - это своя голова, чужие скрипты и scripting-interface.txt из папки scripting.docs Птоки.
И обязательное пособие - http://www.lua.ru/doc/
Плюс на форуме есть раздел для начинающих программистов.
sania
7.4.2011, 17:19 Пассивный режим
По-моему, проблема существует только в голове автора темы..
мамин_парень
7.4.2011, 10:59 Пассивный режим
Пусть получает при входе через МОТД.
Зачем для такого пустяка писать скрипт?

И не по теме - зачем хаб только для пассивов?
мамин_парень
4.4.2011, 4:53 Surdo_Isolation
Почти универсальный скрипт заглушек с богатым меню и возможностями
van21, например, если к тебе кто-то в чате пишет сообщение, то получится примерно так (смотря что написано в таблице):
Цитата
[08:41:07] <Ksan> сэр van21: Приветствую тебя!

Слово "сэр" берётся из таблицы и добавляется автоматом (для каждого прописанного ника своя приставка).
van21
1.4.2011, 23:52 RandomPrivet_by_Ksan.lua
Через меню можно отправить приветствие кому попало из списка юзеров
Ответил уже в соседней теме - смысл тот же - легко чуток изменить (убрав рандомность выбора адресата) и отправить конкретному человеку!
А тем более, новые приветствия в таблицу, - добавляйте сами, тут всё зависит только от вашей фантазии. Лично она у меня уже иссякла big_smile.gif

UPD: Я тебя уважаю, но хочу видеть, как стараешься и растёшь.
мамин_парень
1.4.2011, 5:33 RandomPrivet_by_Ksan.lua
Через меню можно отправить приветствие кому попало из списка юзеров
Вообще-то скрипт был создан изначально для отсылки собственных приветствий, а приложенная таблица приветствий только для самых ленивых.
А отослать конкретному человеку - что мешает самому взять и написать приветствие кому хочешь? big_smile.gif без скрипта..
Если я тебя не понял - поясни.
мамин_парень
31.3.2011, 12:43 RandomPrivet_by_Ksan.lua
Через меню можно отправить приветствие кому попало из списка юзеров
Пусть знают, что есть такой город на Земле. big_smile.gif
Это я пишу в каждом своем скрипте..
Кто-то пишет ссылку на свой хаб, а я - ссылку на свой город big_smile.gif
Invisible, mariner
31.3.2011, 11:34 RandomPrivet_by_Ksan.lua
Через меню можно отправить приветствие кому попало из списка юзеров
Скрипт для отправления приветствия кому попало из списка юзеров хаба

Название: RandomPrivet_by_Ksan.lua
API: API 2
Версия: 1.0
Автор: Ksan (aka Trans)
Дата написания: 31-03-2011
Место проживания автора: г.Томск (Россия)

Не удивляйтесь, если иногда приветствие отправится не только кому попало, но и от кого попало.. big_smile.gif Но редко.
Nickolya, Invisible, DEN 007, Mustik, AfLc, мамин_парень
31.3.2011, 2:53 Monetka_by_Ksan.lua
Простой скрипт для кидания монетки (орёл/решка)
Простой скрипт для кидания монетки (орёл/решка)

Название: Monetka_by_Ksan.lua
API: API 2
Версия: 1.0
Автор: Ksan (aka Trans)
Дата написания: 31-03-2011
Место проживания автора: г.Томск (Россия)

Сделан по просьбе Mustik'а
Текстовку можете сами подредактировать.
Это же касается и подбора степеней случайности для орёл/решка/ребро/"улетел куда-то"..
Nickolya, Invisible, Saymon21, @_JuNiOr_@, Mustik, AfLc, zeusby
31.3.2011, 2:42 Монетка
простой скрипт подкидывания монетки
Вот небольшой скриптик наскрипел.
Текстовку можете сами подредактировать.
Это же касается и подбора степеней случайности для орёл/решка/ребро/"улетел куда-то"..

Создал тему под этот скрипт в разделе Готовые/Развлечения.
Invisible, Mustik
21.3.2011, 12:56 Вопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
Попробуй
Код
#Message

Пример для теста:
Код
local sMess = "<-Bot>  В меню хаба добавлены \"Полезные ссылки\" - ограниченное количество хабов и много других полезных ресурсов широкого диапазона интересов (Тонет). Если у вас есть интересная ссылка, отсутствующая в этих списках, вы можете предложить это админам хаба для внесения."
Core.SendToNick("Ksan", tostring(#sMess))

Сохрани как скрипт и запусти. Только перед этим в скрипте в команде отправки сообщения впиши свой ник.
Результат будет
Код
[16:00:50] 267
длина сообщения.
А как дальше применить для своего скрипта, думаю, тебя учить не надо.
Damaks
16.3.2011, 20:00 antiproxy2
нету
Цитата(absent @ 16.3.2011, 22:33) *
поиском пользоваться умею

Так учись!
Пока не научишься, не лезь сюда, не позорься.

Accelerator,
Цитата
Тяжело, не правда ли?

Он никогда сам не сделает, так или иначе, мытьём или катанием, вытянет нужную информацию, нужные изменения от тебя, от меня, от других, но сам ни за что даже не шевельнётся в сторону обучения.
Уже столько времени тут пасётся, а всё ведёт себя, как будто первый раз зашёл.
Accelerator, Saymon21
6.3.2011, 19:10 MessCount
Выводит общее число сообщений чата в топик
-- Скрипт показа общего числа сообщений чата в топике.
-- Название: MessCount.lua
-- Платформа: PtokaX
-- API: API 2
-- Автор: Ksan (aka Trans)
-- Дата: 06-03-2011
-- Где: г.Томск

-- При необходимости освободить топик для иных сообщений оператор может через меню отменить показ числа сообщений в топике. Потом сможет так же через то же меню восстановить.
-- Папка "MessCount" должна быть создана заранее!
-- В число сообщений попадут и команды через меню (которые через ЧатАрривал), хотя их в чате не будет видно.
-- В принципе, можно внести таблицу исключений для команд различных скриптов, используемых через меню, но надо ли оно? Запаришься выцеплять все команды со всех скриптов, да потом ими грузить скрипт. Пусть идут в счёт сообщений. big_smile.gif
--
Nickolya, Tsd, Invisible, Saymon21, Cyber_voodoo, MIKHAIL
6.3.2011, 18:53 Общий подсчет сообщений
Вот один из вариантов (название скрипта - MessCount.lua ) :
Сам скрипт ТУТ
Код
-- Скрипт показа общего числа сообщений чата в топике.
-- Автор: Ksan (aka Trans)
-- Дата: 06-03-2011
-- Где: г.Томск

-- Скрипт показа общего числа сообщений чата в топике.
-- При необходимости освободить топик для иных сообщений оператор может через меню отменить показ числа сообщений в топике. Потом сможет так же через то же меню восстановить.
-- Папка "MessCount" должна быть создана заранее.

local sBot = SetMan.GetString(21)
local bTopic = true
local sCountFile = Core.GetPtokaXPath().."scripts/MessCount/MessCount.txt"

tProfiles = {  -- Кто может ставить/отменять показ в топике
    [0]  = 1, -- Мастер
    [1]  = 1, -- ОПератор
    [2]  = 0, -- VIP
}

function OnStartup()
    dofile(sCountFile)
    if tMessCount == nil then
        tMessCount = { }
        tMessCount["MessCount"] = 0
    end  
end

function OpConnected(tUser)
    Core.SendToUser(tUser, "$UserCommand 1 3 << АДМИНКА >>\\Число сообщений в топик$<%[mynick]> !messcount&#*124;") -- тут звёздочку в конце удалить
end

function ChatArrival(tUser, sData)
--    Core.GetUserAllData(tUser)
    local sData = sData:sub(1,-2)
    local sCmd = sData:match("^%b<>%s+(%S+)")
    if tProfiles[tUser.iProfile] == 1 and sCmd == "!messcount" then
        bTopic = not bTopic
        if bTopic == true then
            Core.SendToUser(tUser, "<"..sBot.."> Число сообщений будет показываться в топике.")
        else
            Core.SendToUser(tUser, "<"..sBot.."> Число сообщений не будет показываться в топике.")
        end
        return true
    end
    tMessCount["MessCount"] = tMessCount["MessCount"] + 1
    if bTopic == true then
        SetMan.SetString(10, "В чате написано "..tMessCount["MessCount"].." сообщений")  -- сам текст можете править как вам угодно
    end
    SaveToFile(sCountFile, tMessCount, "tMessCount")
    collectgarbage()
--    return true
end

function OnExit()
    SaveToFile(sCountFile, tMessCount, "tMessCount")    
end

function SaveToFile(file , table , tablename)
    local handle = io.open(file,"w+")
    handle:write(Serialize(table, tablename))
    handle:flush()
    handle:close()
end

function Serialize(tTable, sTableName, sTab)
    assert(tTable, "tTable equals nil");
    assert(sTableName, "sTableName equals nil");
    assert(type(tTable) == "table", "tTable must be a table!");
    assert(type(sTableName) == "string", "sTableName must be a string!");
    sTab = sTab or "";
    sTmp = ""
    sTmp = sTmp..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
            sTmp = sTmp..Serialize(value, sKey, sTab.."\t");
        else
            local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value);
            sTmp = sTmp..sTab.."\t"..sKey.." = "..sValue
        end
        sTmp = sTmp..",\n"
    end
    sTmp = sTmp..sTab.."}"
    collectgarbage()
    return sTmp
end

Число сообщений будет сохраняться в файл, дабы при отключении скрипта или хаба сохранялось. Для этого надо заранее в папке "scripts" создать папку "MessCount" (только папку!). При первом запуске файл сам создастся.
При необходимости освободить топик для иных сообщений оператор может через меню отменить показ числа сообщений в топике. Потом сможет так же через то же меню восстановить показ.
В скрипте в коде отправки команды в меню в самом конце вставил *, её надо удалить перед запуском скрипта.

UPD: Создал тему со скриптом здесь.
Invisible
5.3.2011, 14:22 Опы дают добро на ссылки
1. Не понимаю я этой HTTP-фобии (или параноики), у вас что, хаб развалится, люди сбегут, если какая-то не такая ссылка проскочит в чат?
2. У меня на хабах проходят все ссылки, если они не в списке антирекламы, а в антирекламу попадает "нехорошая" ссылка сразу же, как только первый раз попадает в чат. Но с одного раза...(читай пункт 1)..
3. Премодерируемые сообщения в чатах - это уже ни к чёрту, хватит антирекламы с её "чёрными" списками.
Invisible, pol_91
23.2.2011, 11:30 Проблема на PtоkaX 0.4.1.2 в скрипте
Проблема на PtоkaX 0.4.1.2 в скрипте
Damaks, как ты не поймёшь, человек просто хочет, чтоб ему "сделали красиво"...и при этом чтоб ему не пришлось пальцем об палец (пардон, об клавиатуру) ударить..
sania
13.2.2011, 8:09 PortCheck и Clone Killer
1. Неправильно оформил тему (посмотри, как другие темы со скриптами оформлены).
2. Не написал автора скрипта.
3. И что тебе мешает перевести на русский?
4. И почему тема в Запросах скриптов, если ты готовый предлагаешь?

PS: У меня давно стоит свой Анти-КлоноСпамер.. big_smile.gif
мамин_парень
12.2.2011, 7:52 как удалить что хаб работает на версии
Как всегда, самые лузеры начинают с изменения входного сообщения.
Что это у вас такая аллергия на это?
Прописав туда вместо стандартного (и необходимого) сообщения Птоки это "этот хаб Супер-пупер_МОЙхаб версии 666.6", вы не станете умнее или круче выглядеть!

UPD: Сорри, модеры, но они уже достали этой темой (молчу уже про поиск)..
Можете даже удалить, если не понравится этот крик души big_smile.gif
Saymon21
7.2.2011, 5:36 TotalGag
для аварийной заглушки всего хаба (кроме определенных лиц)
Я стараюсь систематизировать отправку команд через их направленность, то есть, зависит от объекта действия.
Поэтому в своих скриптах в меню на нике юзера отправляю только те команды, которые касаются этого самого юзера (причём, только команды работы с онлайн-юзером), а остальные - в меню на вкладке хаба внизу.
Правда, некоторые команды общего характера иногда и через меню на нике юзера выдаю.
Наверно, в данном скрипте следовало действительно делать "1 3", а не "1 1".
absent
29.1.2011, 21:49 Автоматическая регистрация
UPD: Ладно, решил прекратить нудное выпрашивание и накидал скриптик (10 строк, как и говорил):
Код
local sBot = SetMan.GetString(21)
function UserConnected(tUser)
    if not(tUser.bRegistered) and RegMan.GetReg(tUser.sNick) == nil then
        local sPass = tostring(math.random(os.date("%H%M%S")))
        RegMan.AddReg(tUser.sNick, sPass, 3)
        RegMan.Save()
        Core.SendPmToUser(tUser, sBot, "*** Вы теперь зарегистрированы на хабе.\n\tВаш ник:  "..tUser.sNick.."\n\tВаш пароль:  "..sPass.." \nСохраните пароль, пропишите его в свойствах хаба в избранных хабах и не забудьте перезайти на хаб. Потом, при желании, пароль сами поменяете командой \"!passwd новый_пароль\" (без кавычек).")
    end
    collectgarbage()
end
Но, если у юзера в клиенте стоит игнор бота (а некоторые юзеры так и делают), то он не увидит сообщение о регистрации и при следующем заходе будет ему облом с этим ником.
CrazyCat
27.1.2011, 2:51 Автоматическая регистрация
CrazyCat, легко. big_smile.gif
Точнее, можно как уже готовые самые простые приспособить, так и новый написать.
Можно даже вообще его не спрашивая зарегистрировать и ему сообщить только его пароль.
Дерзнёшь?
мамин_парень
25.1.2011, 13:50 WhoisNew
Через меню хаба добывает WHOIS-информацию об IP
Артём, это уже исправлено и перезалито...написано в моём предыдущем сообщении.
Перезалил ещё 21-01-2011 20:56 (мск.)
Скачай снова.
Артём
23.1.2011, 3:43 Current_Weather_All_Cities
Выводит текущую погоду автом. в чат и по запросу, любые города
Dan Claimant, найди эти строки:
Код
function SendToChat()
    bArchive = GetData(tCities[sCity])
и добавь сразу под ними эту:
Код
local sArchive = ""

Когда делал последнее исправление, забыл с тестируемого скрипта скопировать эту строку сюда.

UPD: Исправил и перезалил в первом сообщении.

Тест ɐwʎ ɔ ɐvmоɔ
Dan Claimant
22.1.2011, 4:21 некоректные символы
ники
GanG, открываешь файл scripting-interface.txt (это лежит в папке Птоки - в папке scripting.docs) и читаешь строку:
Цитата
AddReg(sNick, sPass, nProfileNumber) - Chars $|<>:?*"/\ and space not allowed in nick. Char | not allowed in password. Max nick/pass length 64 chars. Return nil when failed, true if success.
И отвечаешь на свой вопрос, заданный выше, сам.
GanG
21.1.2011, 20:59 WhoisNew
Через меню хаба добывает WHOIS-информацию об IP
UPD-3:
- подкорректировав под дополнительно выявившиеся неучтённые нестандартные (отсносительно первоначального) участки парсинга, перезалил скрипт в первом сообщении.
Saymon21
14.1.2011, 15:15 WhoisNew
Через меню хаба добывает WHOIS-информацию об IP
UPD-2:
Артём, сделал костыль, перезалил. big_smile.gif
Артём
14.1.2011, 11:30 WhoisNew
Через меню хаба добывает WHOIS-информацию об IP
Скрипт просмотра через админское меню хаба WHOIS-информации по IP (вводом IP либо через онлайн-ник)
Получаем диапазон, к которому принадлежит вводимое IP, название сети, страну, город и ещё кое-какие данные этой сети.

Название: WhoisNew.lua
Версия: 1.2
Платформа: PtokaX
API: API 2
Автор: Ksan (aka Trans)
Город: Томск, Россия
Дата: 2011-01-14
Даты изменений: 2011-09-08, 2013-06-22, 2015-01-05

Библиотека: Для работы требуется библиотека Lua Socket
Библиотека: Для работы скрипта требуется библиотека SSL

Комментарии:
1. Информация изредка выводится недостаточная (например, может не быть города), поэтому иногда бывает необходимость получить инфу побольше за раз, поэтому в меню есть опция выбора размера результата. По умолчанию стоит короткий вариант.
2. Не по всем IP можно получить информацию, в этих случаях будет соответствующее сообщение.
3. В базе сервера WHOIS информация хранится в самых невероятных сочетаниях, никакого порядка, очень трудно и долго подбирал варианты парсинга, чтоб результат выцепить, но наверняка ещё могут всплыть неучтённые проколы с падением скрипта.
4. Поэтому - просьба сюда писать обо всех подобных случаях с предоставлением лога ошибки, и желательно строку, куда указывает ошибка, так как она у вас может уже оказаться под другим номером, и, самое главное, предоставить IP, на котором споткнулся скрипт. Я проверю и постараюсь внести корректировку.
5. Не проверяйте локальные IP, всё равно не получите ничего. При проверке локалок получите отмазку, что серверам WHOIS локальные IP недоступны.
Пример результата (клацнуть сюда изо всей силы)
Цитата
[09:18:12] <WHOIS_по_IP> *** 83.172.37.41:

**********************************************************************
inetnum: 83.172.32.0 - 83.172.39.255
netname: SELS-NET
descr: The municipal enterprise "Severskelektrosviaz", Solnechnaia 15, Seversk, Tomsk Region
country: RU
address: Solnechnaia 15
address: Seversk, Tomsk Region
address: Russia
phone: +07 3823 771999
e-mail: sov@sels.ru

**********************************************************************


Исправления:
UPD-1:
- как я и ожидал, находятся трудные для идентификации IP...Вот сделал очередной костыль, перезалил.
UPD-2:
- перезалил, подправив некритичный косметический нюанс и добавил таблицу профилей, кому можно юзать WHOIS (по умолчанию поставил и для випов, доверять так доверять)
UPD-3:
- перезалил, подкорректировав под дополнительно выявившиеся неучтённые нестандартные (отсносительно первоначального) участки парсинга.
UPD-4:
- перезалил, переделав парсинг (причина - изменения на страницах результатов)
UPD-5:
- перезалил, чуть-чуть изменив одну строчку (причина - маленькое изменение на странице результатов сайта, приведшее к неработе скрипта)
UPD-6:
- пришлось исправить пару строк в связи с переходом сервера WhoIs на безопасный режим, а также в связи с этим теперь необходимо доустановить библиотеку SSL. Скрипт перезалит.
UPD-7:
- на сайте-источнике данных чуток изменили исходный код страницы и скрипт перестал работать, пришлось в код скрипта внести маленькое изменение. Скрипт перезалит.

Последняя перезаливка: 2015-04-29 19:45 (мск.)
Nickolya, Tsd, Артём, Milena, Saymon21, Dimon21, striker, DEN 007, ProGeTTo, AfLc, MIKHAIL
8.1.2011, 3:10 ChatAfterLoginLocker
API2 | Доступ к чату после N минут онлайн
Эхх, тоже хотел кинуть, смотрю, тут уже успели сразу 2 помочь. big_smile.gif
Ай, ладно, чтоб труд не пропал даром, тоже кину своё зёрнышко..
Код
local iPause = 10*60 -- ожидание в секундах
local tWaitUsers = {}

function UserConnected(tUser)
    tWaitUsers[tUser.sNick] = os.time(os.date("*t")) + iPause
end
RegConnected = UserConnected

function UserDisconnected(tUser)
    tWaitUsers[tUser.sNick] = nil
end
RegDisconnected = UserDisconnected

function ChatArrival(tUser, sData)
    if tWaitUsers[tUser.sNick] then
        if tWaitUsers[tUser.sNick] > os.time(os.date("*t")) then
            Core.SendToNick(tUser.sNick, "<"..SetMan.GetString(21).."> "..tUser.sNick..": Для общения в чате ещё не прошли "..tostring(iPause/60).." мин. с вашего захода на хаб! Погодите малость..")
            return true
        else
            tWaitUsers[tUser.sNick] = nil
        end
    end
end
Nickolya, мамин_парень
5.1.2011, 18:46 Surdo_Isolation
Почти универсальный скрипт заглушек с богатым меню и возможностями
Для WINS:
1. Я бы посоветовал тебе не кикать через эту команду, а использовать штатную команду Птоки, либо использовать мой же скрипт отсюда (если, конечно, ты не ставишь целью кикать демонстративно, чтоб все видели, кто, кого и за что кикает). Этот скрипт работает бесшумно и без упоминания ника админа, что частенько избавляет от лишних разборок впоследствии с кикнутым юзером. big_smile.gif
2. Но есть решение и в топиковом скрипте, почти аналогично решению по указанной тобой ссылке. Я позже представлю его, когда перезалью обновлённый скрипт (когда допеределаю встроенный антимат)
WINS
3.1.2011, 17:33 Скрипт онлайн-погоды
скрипт погоды сейчас
Кстати, выложу-ка я тоже чуть подправленную версию этого скрипта.
Изменения:
- добавил меню
- добавил выборку погодных явлений (облачность, осадки и т.д.)
- подправил чуток вывод градусов и мм.рт.ст
- подогнал под себя дизайн вывода big_smile.gif
- при запуске скрипта сразу же с сайта берётся инфа о погоде, не дожидаясь сигнала от таймера (дальше уже отработает таймер)

Думаю, можно добавить в меню разные города (по желанию админа)
---------------------------------------------------------------------------------------

UPD: Всё, сделал с городами.
Готовый скрипт с меню и разными городами переложил отдельной темой сюда.
ProGeTTo
3.1.2011, 17:31 Current_Weather_All_Cities
Выводит текущую погоду автом. в чат и по запросу, любые города
Скрипт просмотра текущей погоды в разных городах (в чате периодически или по запросу через меню) с сервера http://pogoda.mail.ru/
Название: Current_Weather_All_Cities.lua
Платформа: PtokaX
API: API 2
Автор: Ksan (по мотивам скриптов от Nickolya и Saymon в этой теме

Библиотека: Для работы скрипта требуется библиотека Lua Socket
Библиотека: Для работы скрипта требуется библиотека SSL

Изменения от Ksan:
- добавил меню
- добавил выборку погодных явлений (облачность, осадки и т.д.)
- подправил чуток вывод градусов и мм.рт.ст
- подогнал под себя дизайн вывода
- можно смотреть текущую погоду разных городов (через меню)
- меню с разными городами строится автоматически в зависимости от таблицы городов
- добавлено ограничение частоты запросов погодного сервера
- добавил сборщик мусора
- добавлена инфа про макс. и мин. температуру в этот же день из архивов этого города (если отсутствует пр выводе, значит, нет информации в архивах)
- добавлено время восхода/захода солнца (для полярной ночи или дня будет так и написано - "Полярная ночь" , "Полярный день")
- добавлен вывод текущих даты/времени для просматриваемой местности
- добавлен вывод прогноза на ближайшее время суток

Примечания:
1. Индексы городов находить так: поиск по городу на странице сервера http://pogoda.mail.ru/ в правом верхнем углу, в открывшейся странице в поле адреса последнее число - это индекс нужного города.
2. Таблицу городов стройте аналогично уже вписанным в скрипт.
Названия городов транслитом можно получить через этот же сайт погоды http://pogoda.mail.ru/ (прописываете город в окошке ввода кириллицей, и потом получаете в адресной строке последнее слово - название города латинскими буквами).
3. И да, кому хочется показывать давление и влажность в чате (для всех), можете просто раскомментить 2 строки в функции "function SendToChat()"

ToDo:
- возможно, добавлю вывод по отдельному запросу полного прогноза на ближайшее время суток - на сейчас + на 2 из следующих времён суток - утро + день, вечер + ночь и т.д. (как на сайте сделано) СДЕЛАНО.
- есть возможность сделать отдельный вывод по запросу и на следующие дни, только не знаю, есть ли в этом смысл, ведь прогноз погоды на несколько дней - вещь рискованная..

Пример результата работы скрипта - ответ на запрос полного прогноза и вывод по времени в чат:
Код
По запросу:

[20:39:04] <Current_Weather> Погода в городе Томск (Россия, Томская область) :
        ************************************************************
        Время:  воскресенье, 22 июня 2014, 20:37
        ************************************************************

        Температура:     29°
        Погодные явления:     "малооблачно"
        Давление:         748 мм рт.ст.
        Влажность:         33% (низкая)
        Ветер:         1 м/c (СВ легкий ветер)
        Солнце:         восход:  04:29
                    заход:    22:14

        В этот же день (из архивов):
            Max.:         33°    (1982 год)
            Min.:         0°    (2008 год)
    *****************************************************************************
    НОЧЬЮ...      t°: 18°    "Ясно"
            Ветер: 3 м/c (С-СВ)  Влажн. 56%  Давл. 749 мм
    *****************************************************************************
    УТРОМ...      t°: 24°    "Ясно"
            Ветер: 4 м/c (С-СВ)  Влажн. 27%  Давл. 748 мм
    *****************************************************************************

В чате:

[18:17:46] <-Bot-> Погода в городе Томск (Россия, Томская область) :
        ************************************************************
        Температура:     30°
        Погодные явления:     малооблачно
        Ветер:         1 м/c (СВ легкий ветер)

        В этот же день (из архивов):
            Max.:         33°    (1982 год)
            Min.:         0°    (2008 год)
        ************************************************************
[Сорри, тут с форматированием некоторые проблемы на сайте, так что вид не совсем идентичный]
При запросе только текущей погоды вид такой же, только не будет нижних двух участков (прогноза на ближайшее время).
Для периодического вывода в чат вид такой же, разве что нет показа времени и параметров чуть меньше (но это всё включаемо через раскомментирование нужных строк в скрипте).

UPD:
- при попадании на просмотре через меню города без архивов погоды (есть и такие) следующие города показывались тоже без данных из архива (до перезапуска скрипта). Исправлено.
- на сайте изменили вид ссылки (теперь там вместо кодов городов - названия самих городов латиницей и без пробелов (вместо пробела - символ подчеркивания)). Скрипт переделан под это.

UPD-2:
- добавлена инфа про макс. и мин. температуру в этот же день из архивов этого города (если отсутствует при выводе, значит, нет информации в архивах), скрипт перезалит.
UPD-3:
- добавлена возможность выбора места вывода по запросу - в приват или чат ( local bSendToPrivat = true )
UPD-4:
- скрипт исправлен и добавлена как новая версия. Причина - изменение представления адреса на сайте погоды.
Но нет худа без добра - пока менял скрипт под это изменение, нашёл(и исправил) причину потери временами архивных данных при выводе информации.
UPD-5:
- скрипт исправлен и залит сюда, старые версии удалены за ненадобностью. Причина - полное изменение структуры страницы на сайте.
Пришлось всё перелопатить.
- добавил показ восхода/захода солнца.
UPD-6:
- добавил показ текущей даты/времени местности (UPD: убрал показ даты/времени для вывода в чат местнй погоды (зачем местным показывать их время, тем более, не очень точное))
- исключил вывод данных при получении ошибки с сайта (чтоб все города не получали одну и ту же погоду)
- небольшие косметические малозаметные изменения, улучшающие работу скрипта
UPD-7:
- добавил возможность выбрать через меню любой город/посёлок мира (но оставил возможность просмотра жёстко привязанных к меню городов)...для этого пришлось писать отдельный скрипт для выборки из сайта погоды и сборки в таблицу списков всех городов со странами и областями.
- в архиве есть папка с обязательными файлами (таблицы городов и цифровых кодов городов (последнее - для архивных температур))
UPD-8:
- пришлось перелопатить скрипт из-за изменений на странице погоды, в том числе и кодировки символов.
- для городов США уверенно отсутствуют архивные температуры. На сайте архивных данных сильно изменили представление страницы именно для США, для них необходимо отдельно парсить страницы и вытаскивать архив. Начал было делать эту работу, почти добил, потом подумал - а нафиг это надо кому, зачем эта лишняя работа, и забил. А так уже давно мог бы выложить исправленный скрипт, но так получилось, сорри.. плюс лень одолела в последнее время (это, скорее минус).
UPD-9:
- ввиду того, что на сайте полностью переделали интерфейс вывода погоды, изменился и код страницы, пришлось полностью перелопачивать парсинг
- теперь архивы берутся из этой же страницы (раньше для многих стран приходилось парсить другой сайт с архивом), но вот насчёт точности архивных данных не ручаюсь big_smile.gif
- добавил вывод температуры воды (для городов у моря и если этот параметр присутствует на странице погоды)
UPD-10:
- добавлена возможность запроса на выдачу (кроме текущей погоды) и прогноза на ближайшее время суток
- исправлена небольшая ошибка в коде
UPD-11:
- добавил возможность менять через меню частоту вывода текущей погоды в чат (не открывая скрипт и не перезапуская его), особенно будет удобно для тех, у кого хаб стоит далеко от своего компа.
При необходимости отмены вывода погоды в чат достаточно ввести одну цифру 0 (ноль) в данном меню вместо периода времени. Для включения нужно просто просто написать период в минутах, не равный 0 (нулю).
Файл перезалит.
UPD-12:
- сегодня вдруг скрипт стал выдавать результат с лишним словом из исходника (</span>) при годе минимальной температуры архивных данных (не знаю, почему, до этого было без таких ляпов), не стал копать глубоко, просто добавил в одну строку исправляющий код. Архив перезалил (изменение только в самом скрипте).
UPD-13:
- обнаружился баг - при попытке просмотра погоды городов из подменю "Другие города", если оставить первое окошко ввода пустым (а там надо вводить 0 или 1), то скрипт падал с ошибкой вроде этого:
Цитата
[03:45:32] <#OpChat#> ...r/ptokax/scripts/Current_Weather_All_Cities_Mint.lua:118: attempt to index local 'sCity' (a nil value)
То есть, не было "защиты от дурака". Скрипт исправил и архив перезалил. Изменение только в самом скрипте.
UPD-14:
- пришлось исправить пару строк в связи с переходом сайта погоды на безопасный режим, а также в связи с этим необходимо доустановить библиотеку SSL
UPD-15:
- пришлось изменить чуток код, ибо на сайте погоды внесли небольшие изменения в исходники страницы (добавили "+" к положительной температуре, в другом месте тоже изменили кусок и из-за этого температура воды не получалась, и была давненько появившаяся проблемка - перестало выдавать архивные температуры (для России), и тоже исправил). И да, заменил один из доп. файлов в папке, так что рекомендую у себя его заменить на мой - называется "citylist_Other.tbl")
UPD-16:
- заметил, что для некоторых местностей сайт не предоставляет данные о восходе и закате, в том числе и для заполярных территорий, поэтому везде, где эти данные отсутствуют, скрипт стал выдавать "Полярный день" и, возможно, "Полярная ночь" (зависит от даты). Дабы не вызывало недоумения, сделал выдачу типа этого - "Нет данных (либо полярный день)". Скрипт перезалит, из архива достаточно заменить основной файл (если вы изменили для себя основной скрипт на своё усмотрение, то посмотрите свой скрипт на предмет разницы). Вот изменённый участок кода:
Код
                if tonumber(os.date("%m")) > 3 and tonumber(os.date("%m")) <10 then
                    sSun = "Нет данных (либо там полярный день)"
                elseif tonumber(os.date("%m")) < 4 or tonumber(os.date("%m")) > 9 then
                    sSun = "Нет данных (либо там полярная ночь)"
                end

UPD-17:
- на сайте погоды опять изменили код страницы (у них там руки чешутся, что ли?), пришлось вновь подправлять скрипт (правда, не сразу руки дошли, прошу прощения за это), возможно, где-то пошли уже корявости из-за частых исправлений скрипта (как правило, не по моей вине).. Но вроде работает пока. Если что не так, напишите, для какой местности и какая ошибка..

Дата заливки последней версии: 2020-04-30 14:27 (мск.)
Nickolya, ustas, Taulalan, Tsd, Invisible, Артём, rival, Dimon21, AndreiDC, Cyber_voodoo, SKIFI, stone, MIKHAIL, Nikolaevich, zeusby
3.1.2011, 8:51 Нужен скрипт
Помогите
Ferb, считай, ты уже поступил куда надо - ты учишься тут.
Моя единственная школа - файл из Птоки "scripting-interface.txt", http://www.lua.ru/doc/ , чужие скрипты и этот форум. Чтоб научиться как править скрипты, так и писать свои, достаточно перечисленного мной. Хотя можешь ещё куда-то поступить, где учат программировать, лишним не будет, вдруг в жизни пригодится. big_smile.gif
29.12.2010, 23:31 Surdo_Isolation
Почти универсальный скрипт заглушек с богатым меню и возможностями
Saymon, я подумал над твоим предложением. Вообще, скрипт задумывался именно как тихая заглушка с возможностью скрытия чата, только с дополнительными удобствами и решениями проблем, возникающих по ходу эксплуатации (я про антикапс, антимат и т.д.), и как-то не хочется превращать его совсем уж в подобие Экзекутора (а если вовремя не остановиться, к тому и придём). Не хочется повесить сюда ещё и предупреждения, для этого же есть обычный скрипт предупреждений и общения через бота (можно так же предупреждать и потом уже при необходимости применять Сурдо-изоляцию).

Для WINS:
1.
Цитата
Можно добавить чтоб при при замене самого мата, фраза бралась рандомо из таблицы, как при замене фразы целиком.
Можно, и даже нетрудно, но считаю, что ни к чему. Хотите разнообразия - применяйте режим 2 (замену всего сообщения случайной фразой). big_smile.gif А режим замены мата одним словом сделан, чтоб просто отметить, что мат был, и скрыть его, не устраивая из этого балаган (уверен, что найдётся немало любителей проверить весь список слов), как находятся любители проверить весь список случайных фраз (а список немалый).
2. Насчёт твоего теста антикапса...я знаю, но я пока не стал заморачиваться отыскивать алгоритм против тестов big_smile.gif
Решение - в совмещении трёх кодов - антикапса, антипробелов и анти-слишком-много-одинаковых-знаков - в один код.
Я такие тесты сам проводил по ходу работы над скриптом ещё. Не стал усложнять скрипт доп. кодом против нереальных (на 98%) сообщений.

UPD: Пока для меня самое важное - доделать антимат (работа с таблицей матов и исключений через меню (добавление, удаление, редактирование, просмотр) + изменение кода анализа матов из-за изменения структуры таблицы), но пока дело тормознулось из-за проблем со здоровьем...осталось изменить код анализа сообщений на маты и исключения, всё остальное сделано.
Saymon21, WINS
28.12.2010, 19:55 Spam-Report
Юзер может сообщать о спаме и спамере прямо в Опчат админам
Скрипт сообщения юзером в Опчат админам о спаме и спамере

Название: Spam-Report.lua
API: API 2
Автор: Ksan (aka Trans)
Место проживания: г.Томск
Дата: 28-12-2010

Сделан по просьбе DEN_007

Описание:
2 варианта отправки сообщения о спамере:
1. В привате спамера (если он ещё не успел соскочить с хаба) набрать !спам, далее через пробел туда же скопировать ВСЁ сообщение от спамера и нажать ENTER. Сообщение о спаме и спамере отправится в Опчат хаба админам для принятия мер.
Вместо !спам можно написать и латиницей !spam (для тех, у кого нет кириллицы на клавиатуре, например, зарубежные гости)
Пример:
!спам [18:43:58] <СПАМЕР> Заходите в наш супер-пупер хаб с адресом супер.пупер.ru:411
2. Всё то же самое, только в привате главного бота хаба (годится как для случаев, когда спамер уже ушёл с хаба, так и когда он ещё онлайн).

Что видим в Опчате
Цитата
[22:25:22] <_OpChat_> Похоже, у нас появился спамер.
Ник спамера: Uzer1234
IP спамера: спамер уже оффлайн, IP добывайте сами.
Содержание спама: [17:34:11] <Uzer1234> Это самый ужасный спам. Тест.
Сообщил юзер: Test_user
Держите уши на макушке, господа админы!

[2010-12-28 21:19] <_OpChat_> Похоже, у нас появился спамер.
Ник спамера: Uzer1234
IP спамера: 192.168.1.2
Содержание спама: [17:34:11] <Uzer1234> Это самый ужасный спам. Тест.
Сообщил юзер: Test_user
Держите уши на макушке, господа админы!

Nickolya, Invisible, Milena, Saymon21, DEN 007
27.12.2010, 13:47 AntiReclama_by_Ksan
Тихая антиреклама чата и привата с удалённым управлением
UPD 3: Добавлена возможность предупреждать рекламщика в привате бота при попытке рекламы (в режиме "0"). Это тоже можно переключать через меню скрипта.

Скрипт перезалит в первом сообщении.
Nickolya, Kingston, Saymon21
26.12.2010, 15:49 Ваши Вопросы И Предложения По Поводу Форума
Просьба такая админам форума - поставить галочку "Добавить копию этого сообщения в директорию «Отправленные»" по умолчанию. А то отправишь, а потом не находишь свое сообщение в папке, и вспоминаешь, что опять не поставил галочку...Всё же лучше сохранять всегда по умолчанию, а кому не надо, пусть снимают галочку при отправке.
Accelerator
11.12.2010, 2:10 Surdo_Isolation
Почти универсальный скрипт заглушек с богатым меню и возможностями
UPD-2: По предложению Saymon'а добавил в скрипт и в меню возможность выбора - уведомлять заглушаемого онлайн-юзера в приват о его заглушке или нет (в момент установки заглушки). В уведомлении покажет причину и срок.
(перезалил, добавив пропущенный кусок кода)

Перезалил в первом сообщении. Время: 17-12-2010 19:40 МСК
Nickolya, Saymon21
9.12.2010, 13:46 Люди помогите ПЛИЗ! Необходим совет МОЗГА ПЛАНЕТЫ!
Попытка установить соединение была безуспешной
1. йцукен, вот это из твоего первого сообщения:
Цитата
купил новую сетевую карточку-помогла на 1 вход на хаб.
уж больно напоминает мне бан по мак-адресу..
Ты поставил новую карту, тебя засекли, и снова поставили аналогичный бан...так выглядит.
2. При неправильных настройках клиента, если адрес хаба написан правильно, проблемы могут быть только с поиском/скачиванием, но никак не с доступом. Иное дело, когда ты забанен тем или иным способом, не обязательно средствами Птоки обычным баном...Например, файрвол на сервере, скрипт на хабе, который делает вид для тебя, как будто хаб не работает (эту тему уже обсуждали как-то тут), в конце концов, если ты сильно не понравился сисадминам, они тебя могут забанить по-маку, если хаб на сервере провайдера. Я так полагаю.
Так что двигайся в этом направлении - что тебя намеренно не допускают к телу хаба.
йцукен
7.12.2010, 18:30 Surdo_Isolation
Почти универсальный скрипт заглушек с богатым меню и возможностями
Saymon, это у меня в ToDo...
Теперь, с твоей просьбой, я ещё больше уверен, что это нужно сделать. big_smile.gif

PS: Что-то не пишут ничего почти, неужели скрипт никакой?
Только не забудьте обновить, если скачивали раннюю версию.
Saymon21
6.12.2010, 21:26 Surdo_Isolation
Почти универсальный скрипт заглушек с богатым меню и возможностями
Saymon, похоже, есть действительно недоделка...она вылезает только при отключении чат-лога через флажок в настройках скрипта (у меня вылезло так - поставил флажок чат-лога на false, перезапустил скрипт, потом отключил скрипт. и в этот момент вылезает ошибка твоя). Ты мне про флажок вроде не говорил.
Сегодня буду исправлять, да и заодно приделаю отмену чат-лога через меню, чтоб не лазали лишний раз по скрипту.

UPD: Подправил, + вынес ещё 3 команды в меню (теперь не придётся лезть в скрипт, чтоб менять флажки для включения/отключения Чат-лога, антифлуда (это антикапс + анти-много-пробелов + анти-много-знаков-препинания) и приставок к никам)
Скачайте ещё раз и проверяйте. Архив перезалит в первом сообщении.
Saymon21
5.12.2010, 3:29 Surdo_Isolation
Почти универсальный скрипт заглушек с богатым меню и возможностями
Saymon:
1. Я не могу понять, почему у тебя так с Тотал-заглушкой! У меня с теми же файлами всё как надо!
2. И с чат-хистори так же! Я спешал фор Ю ещё раз изменил способ чтения таблицы, перезалил в первом сообщении, попробуй.
3. Если у тебя снова эти же косяки будут, тогда я не знаю, может, решу, что ты шутишь надо мной...
Пусть другие выскажутся, работает ли у них чат-лог нормально и Тотал-заглушка при автоматической разглушке корректно ли сообщает про это (не путая чат и приват).

UPD: С Тоталом - мой косячок - в одном месте недоисправил при копировании и при разглушке чата приходит сообщение о разглушке привата, но в остальном работает нормально.
Исправил, перезалил в первом сообщении.
UPD-2: Не даёт покоя твоя ошибка с чат-хистори...Поэтому поставил отдельно новую Птоку, скачал обратно отсюда скрипт, поставил его в новую Птоку - никаких багов с чат-хистори. Совет - целиком меняй, взяв с архива с форума, главный файл скрипта и этот - SurdoIsolation/AddFunc/surdo_addfunctions.lua...как минимум.
Ferb
4.12.2010, 21:38 Surdo_Isolation
Почти универсальный скрипт заглушек с богатым меню и возможностями
Saymon:
1. Не смог у себя повторить насчёт заглушки чата и последующего сообщения разглушки привата.
Возможно, у тебя были последовательно заглушены сначала приват, потом чат и потом так же последовательно разглушались - сначала приват, потом чат. И возникла такая картинка, как ты показал....может быть. Но я проверил с теми же файлами, что в архиве - нормально показало.
2. Насчёт сроков заглушки...есть легкое решение - просто в конфиг-файле ставишь не 30 (минут), а очень большое число, например, 1440*10 (это будет 10 дней)...или умножь на 100 big_smile.gif Будет 100 дней заглушки. А снять ты всегда сможешь вручную в любую минуту.
3. Кем был заглушен-разглушен - видят и так только опы.
4. Насчёт ошибки про чат-хистори. Перезалил архив.
Saymon21
4.12.2010, 3:54 Surdo_Isolation
Почти универсальный скрипт заглушек с богатым меню и возможностями
Почти универсальный скрипт заглушки

Название: Surdo_Isolation.lua (слышали когда-нибудь про сурдокамеры?)
Версия: 1.4
Платформа: PtokaX 0.4.1.x
API: API 2
Автор: Ksan (aka Trans)
Город: Томск
Дата написания: 03-12-2010

Благодарности: всем скриптерам форума http://MyDC.ru, у которых учусь и ещё долго буду учиться (и чьё присутствие в скрипте наверняка заметите в виде отдельных кусков кода либо идей), юзерам-нарушителям (без них не было бы нужды в скрипте и моего стремления учиться), особая благодарность - Nickolya (он играючи разрубил не один узелок, в которых я запутывался)! big_smile.gif

Возможности:
Раскрывающийся текст
- возможность скрытия чата от заглушенного
- заглушка ников, IP и диапазонов (диапазоны - только мастером)
- заглушка по времени
- возможность временно отменить скрытие чата для всех заглушенных
- возможность показа (отмены показа) сообщений заглушенных админам
- возможность изменять отдельные параметры заглушек ников и IP (причину, скрытость чата, срок) на лету, не снимая заглушку
- возможность через меню вносить ники и IP в исключения (в одну таблицу)
- проверка статуса ника, IP или диапазона на заглушенность (ника и IP - ещё на исключение)
- при заглушке ника или IP покажет (если есть что показать), в каких ещё списках заглушек засвечен данный ник или IP
- при просмотре статуса покажет, кроме ника или IP:
--- причину (комментарий),
--- метку скрытия-нескрытия чата от заглушаемого,
--- автора заглушки,
--- время установки заглушки,
--- конец заглушки (либо "до амнистии"),
--- а также дополнительную информацию (о заглушке ещё IP или ника, о вхождении этого IP в заглушенный диапазон)
- просмотр любых списков
- очистка любого списка (для мастера)
- просмотр текущих настроек через меню
- тотальная заглушка чата и привата для всех, кроме тех, кто может сам глушить (чат и приват - по отдельности)
- резервирование списков заглушек и исключений периодически (и вручную через меню)
- интеграция некоторых функций обработки сообщений в чате (чат-лог, антимат, антикапс, сокращение количества повторяющихся знаков препинания, возможность добавлять к определённым никам некие приставки (через таблицу)). Все эти дополнения можно отключить закомментированием точек вхождения, если пользователь сочтёт их лишними
- чат-лог можно отключить в скрипте в настройках
- антимат имеет 4 уровня, регулирующихся через меню:
-- 0 - тихий антимат (сообщение с матом видит только сам матерщинник),
-- 1 - слово-мат подменяется другим словом,
-- 2 - сообщение с матом подменяется целиком на случайное сообщение из таблицы фраз,
-- 3 - антимат отключен
- папка с запретами и заменами к антимату прилагается
- при первом запуске скрипта будут созданы папки и файлы под динамические таблицы, если отсутствуют (кроме папок и файлов, необходимых для запуска и работы скрипта). После скачивания просто скопируйте всё из архива в папку скриптов.
+ теперь можно через меню включать/выключать возможность отправки уведомления про заглушку при установке заглушки онлайн-юзеру
--- возможно, что-то ещё упустил

ToDo (не факт, что будет всё реализовано):
Раскрывающийся текст
+ При разглушках/изменениях учитывать, кто был автором (чтоб младший не мог отменять/изменять заглушку старшего)?
+ Может, позволять глушить и ВИПам на ограниченное время (например, до 24 часов или до 10 суток)?
+ Сделать общую таблицу профилей с регулировкой прав для всех событий?
+ Сделать заглушку ников по маскам? типа "дура*"
+ Добавить заглушки по другим параметрам (ОПИСАНИЕ, е-майл, точная шара)?

Примечания:
Раскрывающийся текст
- Скрипт держать ниже других скриптов, работающих с сообщениями юзеров.
- Настройки, функции и меню вынесены в отдельные файлы.
- Штатные команды Птоки (в том числе и текстовые) не внесены в таблицу исключений скрипта, но заглушенный их всё равно не увидит (кроме сообщений от третьего лица).
- Сообщения от третьего лица и сообщения от всяческих ботов и сервера хаба (в том числе и с подменой сообщений юзеров изменённым текстом, если это выдано не данным скриптом) пройдут до заглушенного и при скрытом чате, но их обычно мало, да и информативная ценность их ничтожна.
- Имеющие право заглушать не смогут развлекаться затыканием друг друга - в таблицу запишется, но заглушка на них не подействует.
- В архиве в таблицах заглушенных оставил несколько примеров для просмотра.

PS: Скрипт ещё не совсем закончен, имеется ряд идей, которые позже могут быть добавлены. Можете тоже предлагать свои.
PPS: Жду критику, замечания и комментарии (можно даже одобрительные).
Насчёт скорости работы - у меня скрипт стоит на хабе из разряда до 1000 и нет никаких тормозов. Что будет на больших хабах - практика покажет.

Возможно, время от времени буду что-то подправлять или добавлять в скрипт, поэтому следите за датой/временем перезаливки файла в этом сообщении.

UPD: Подправил, + вынес ещё 3 команды в меню (теперь не придётся лезть в скрипт, чтоб менять флажки для включения/отключения Чат-лога, антифлуда (это антикапс + анти-много-пробелов + анти-много-знаков-препинания) и приставок к никам)
UPD-2: Добавил в скрипт и в меню возможность выбора - уведомлять заглушаемого онлайн-юзера в приват о его заглушке или нет (в момент установки заглушки). В уведомлении покажет причину и срок.
И убрал (закомментил в таблице) из антимата из запретов слово "торрент" и его производные (сильно доставали у нас в чате проблемами торрента и пришлось таким образом избавиться (у нас маты обычно просто глушатся тихо))
(перезалил ещё раз, добавив пропущенный кусок кода big_smile.gif )
UPD-3: Подправил кое-что по наводке пользователя Stym. Благодаря ему пофиксил прохождение в чат от заглушенного юзера видоизменённых антиматом сообщений (с подменой матов или целиком сообщения). Проблема возникала при режимах антимата 1 и 2.
Залил вторым файлом (Surdo_Isolation_beta.rar), не удаляя предыдущий.
UPD-4: Исправил очень редко (как правило) появляющуюся ошибку, описанную, например, тут в сообщении #39 (появлялась, как оказалось, из-за наличия в нике, к которому обращаются, т.н. "магических" символов). Заодно чуток оптимизировал прилегающие участки.
Скрипт перезалит (но изменения коснулись только 2 файлов - главного файла и вспомогательного surdo_addfunctions.lua из папки AddFunc), старые архивы удалены.

Последняя перезаливка: 2013-05-27 06:00 МСК
Nickolya, Taulalan, Tsd, Invisible, Karumo, PomanoB, valdis73, rival, Milena, Wan, Saymon21, Stym, ™Wizard™, WINS, DEN 007, @_JuNiOr_@, STIVAN, KCAHDEP, мамин_парень, zeusby
4.12.2010, 0:35 Скрипт привязки Админа к одному IP
Ameet, попробуй это (можешь назвать AdminIP.lua):
Код
local sBot = SetMan.GetString(21)
local sAdmin = "Ksan" -- тут напишите свой ник
local sMsg = "<%s> Юзер с IP %s пытался зайти под админским ником %s и был скинут с хаба."
local sOutMsg = "На чужой каравай рот не разевай! Короче, ещё одна попытка зайти под ником админа и пойдёшь лесом далеко и надолго!"

tAdminIP = {
    ["Test_user"] = "10.0.0.1",
    ["Ksan"] = "192.168.1.2",
}

function UserConnected(tUser)
    if tAdminIP[tUser.sNick] and tUser.sIP ~= tAdminIP[tUser.sNick] then
        Core.SendToUser(tUser, "<"..sBot.."> "..sOutMsg)
        Core.Disconnect(tUser)
        Core.SendToNick(sAdmin, sMsg:format(sBot, tUser.sIP, tUser.sNick))
    end
end
OpConnected, RegConnected = UserConnected, UserConnected

Скрипт для Птоки 0.41*
Ameet
3.12.2010, 7:26 Tophubbers
API2 | Кто и сколько времени провёл на хабе
Dragon, в скрипте найди эту функцию определения даты
Цитата
os.date
и переделай аргументы, что внутри скобок, примерно так:
Код
os.date("[%d.%m %H:%M]")

Я скрипт не смотрел, но, полагаю, разберешься уже.
Dragon
30.11.2010, 19:35 Установка PtokaX 0.4.1.2 в Gentoo
Руководство по установке
rm -rf /*
Maximum
20.11.2010, 6:40 Несколько Слов О Захватах И Регулярных Выражениях
исключительно для разработчиков
Попробуй вот этот корявый код:
Код
local tShadowChatNicks = {  -- эти ники могут писать мультиадресные сообщения
    ["Indy"] = 1,
    ["Ksan"] = 1,
    ["Атыктотакой"] = 1,
}
local tTable = {}

function ChatArrival(tUser, sData)
    local sData = string.sub(sData, 1, -2)
    local sMsg = sData:match("^%b<>%s+(%S.*)")
    if sMsg and sMsg:find":" then
        if tShadowChatNicks[tUser.sNick] then
            local sNicks, sShadowMsg = sMsg:match"^(.*):%s*(.*)"
            sNicks = sNicks:gsub(",","")
            while sNicks do
                sWord = sNicks:match"^(%S+)"
                table.insert(tTable, sWord)
                sNicks = sNicks:gsub(sWord, "")
                sNicks = sNicks:match"^%s+(.*)"
            end
            for i = 1, #tTable do
                Core.SendToNick(tTable[i], "<"..tUser.sNick.."> "..sShadowMsg)  -- тут сообщение отправляется очередному нику
            end
            Core.SendToNick(tUser.sNick, sData)  -- а это идёт себе же для контроля
            tTable = {}  -- обнуляем таблицу, готовя к след. сообщению
            collectgarbage()
            return true
        end
    end
end

Просто я не знаю, как красивее выцепить (распарсить, как ты говоришь) отдельные слова неизвестного количества из сообщения, потому пришлось заниматься выкорчёвыванием пробелов и запятых...одновременно каждое очередное полученное слово заносил в таблицу, оттуда уже легко вытаскивать и делать что хочешь.

Добавил ещё сверку ника автора сообщения со списком имеющих право на такие сообщения.

P.S.: Можно еще сделать так, чтоб каждому адресату при этом сообщалось, кому ещё это сообщение отправлено.
P.P.S: Только нужно помнить, что это сообщение отправится на запись в чат-лог, поэтому скрипт нужно поставить выше Чат-лога.
dimajak, мамин_парень
16.11.2010, 16:31 PtokaX
Скрипт
У меня во Флайлинке та строка в чате начинается на "*** Хаб топик :"
Это я нашёл в файле руссика клиента. Но там можно изменить только эти слова, которые показал, а весь остальной текст ХабТопика обрабатывается самой Птокой самим клиентом, это можно только через исходники поменять. Я так думаю.
И так ли уже тебе оно надо? По мне так это последняя проблема, за которую я бы взялся. big_smile.gif До этой темы я вообще даже не обращал внимания на эту строку...
Tsd
16.11.2010, 15:06 PtokaX
Скрипт
MARVELtm, то, что не получилось, возможно, оттого, что ты скопировал мою строку, не разглядывая особо. Там смотри - должно быть tUser или curUser, но не оба выражения одновременно.
MARVELtm
16.11.2010, 11:09 PtokaX
Скрипт
MARVELtm, думаю, не получится.
Про какой тэг пустой строки говоришь? Выражайся яснее.
Если ты про сообщение в чате, то надо в конце сообщения добавить два символа:
Код
\n
Вот как тут:
Код
sWhatInHubTopic = "Я не умею юзать поиск :)\n"

Кстати, если команду отправления сообщения написать так:
Код
Core.SendToUser(tUser,"$HubTopic "..SetMan.GetString(10))

то юзер будет получать при входе топик хаба (то, что пишется наверху в заголовке хаба).
Тогда первая строка из кода в сообщении #5 темы будет лишней.
А по поводу непоказа в чате - либо получаешь и в чате и под чатом, либо ничего. big_smile.gif
MARVELtm
16.11.2010, 10:44 PtokaX
Скрипт
Код
RegConnected = UserConnected
MARVELtm
13.11.2010, 18:55 Перенаправление пользователей
Попробуй это (назови скрипт, скажем, Redirect.lua). Не стал я переделывать твой скрипт, накропал свой.
Код
local sBot = SetMan.GetString(21)
local sRedirAddr = "dchub://адрес.хаба.ru" -- возможно, нужно и порт указать, если у того хаба порт ограничен одним нестандартным
local sRedurCmd = "!redirect"
local sReasonDef = "В том зале вам удобнее будет сидеть!" -- причина по умолчанию (при пустом окошке причины)
local sRedirMsg = "Юзер перенаправлен по адресу "..sRedirAddr

function UserConnected(tUser)
    local t = ProfMan.GetProfilePermissions(tUser.iProfile)
    if t and t.bRedirect then
        Core.SendToUser(tUser, "$UserCommand 1 2 Перенаправить юзера..$<%[mynick]> "..sRedurCmd.." %[nick] %[line:Причина (либо оставь пустым)]&#*124;")  -- тут в конце звёздочку удалить
    end
end
OpConnected = UserConnected

function ChatArrival(tUser, sData)
    local sData = sData:sub(1,-2)
    local sData = sData:match"%b<>%s(.*)S)"
    local sCmd = sData:match"^(%S+)"
    if sCmd and sCmd == sRedirCmd then
        local t = ProfMan.GetProfilePermissions(tUser.iProfile)
        if t and t.bRedirect then
            local sNick = sData:match"^%S+(%S+)"
            local sReason = sData:match"^%S+%S+%s+(.*)" or sReasonDef
            local tUsr = Core.GetUser(sNick)
            if tUsr then
                Core.SendToUser(tUsr, "<"..sBot.."> "..sReason)
                Core.Redirect(tUsr, sRedirAddr, sReason)
                Core.SendToUser(tUser, sRedirMsg)
            end
        end
        return true
    end
end

Не проверял. Не уверен, что сработает big_smile.gif

Вдогонку кое-что подправил, так что лучше повторить попытку.
Мне не удалось перенаправить. big_smile.gif К тому же команда вылезает в чат. Странно.
truth
12.11.2010, 0:45 Перезапуск скрипта раз в минуту
lankmv, вот я чуток переделал скриптик из этой темы:
Код
local sName = "Название_другого_скрипта.lua"    -- имя скрипта с которым работаем
local iTime = 1 -- период переключений в минутах

function OnStartup()
    local found
    for _, tData in ipairs(ScriptMan.GetScripts()) do
        if tData.sName == sName then
            found = true
            if tData.bEnabled then
                state = true
            end
            break
        end
    end
    assert(found,"Скрипт \""..sName.."\" найден не был! Проверьте правильность настройки.")
    TmrMan.AddTimer(iTime*60000, "StartStop")
end

function StartStop()
    if not state then
        ScriptMan.StartScript(sName)
        state = true
    elseif state then
        ScriptMan.StopScript(sName)
        state = false
    end
end

Проверено, мин нет! ©
Можешь скрипт назвать родным названием ScriptTimer.lua
lankmv, мамин_парень
10.11.2010, 6:09 Информер
API2 | Показывает сообщения по таймеру в назначенный день
А ты заполнил таблицу сообщений?
Может, у тебя там вообще пусто.
И какие изменения внёс?
Покажи сюда хотя бы таблицы сообщений.
Либо весь твой скрипт через спойлер.
мамин_парень
3.11.2010, 3:12 AntiReclama_by_Ksan
Тихая антиреклама чата и привата с удалённым управлением
Иногда рекламщик кидает в одном сообщении в чате ссылки на ресурсы и в виде днс-адреса и в виде IP. И АнтиРеклама срабатывает первым делом на IP и просто замалчивается сообщение (тихо глушится и сообщается в Опчат), хотя было бы правильнее его наказать за днс-адрес (в таком случае возможны и дисконнект, и кик, и зафлуживание).
Для разруления этого нужно найти в функции function ChatArrival(tUser, sData) следующие 2 строки:
Код
    AntiIP(tUser, sData, sPriv, sMsg, sIp1, sIp2, sIp3, sIp4)
    AntiReclama(tUser, sMsg, sPriv, bFlag0, bFlag1, bFlag2)

и поменять их местами так:
Код
    AntiReclama(tUser, sMsg, sPriv, bFlag0, bFlag1, bFlag2)
    AntiIP(tUser, sData, sPriv, sMsg, sIp1, sIp2, sIp3, sIp4)

и перезапустить скрипт. Не забудьте выставить потом через меню свои любимые настройки.
Kingston, Saymon21
3.11.2010, 1:29 Ограничение по максимальной шаре
Ограничение с возможностью бана за нереальную шару
thehawk, и что, трудно дозаполнить окошко лимита по макс. шаре и сохранить настройки?
Если хаб удаленный, то поможет строка:
Код
SetMan.SetMaxShare(1, 4)
воткнутая в любой скрипт (например, после настроек скрипта) или в функции OnStartup(). В аргументах: 1 - это число шары, 4 - в даннном случае - терабайты (0 - байты, 1 - Кб, 2 - Мб, 3 - Гб, 4 - Тб)
Можешь создать скрипт из одной этой строки. big_smile.gif И потом в дальнейшем использовать его для удалённого просмотра и изменения настроек хаба, я так и делаю. Только не забудь закомментить уже ненужные строки, чтоб они не исполнялись при каждом запуске (удалять не надо, могут всё же пригодиться ещё).
thehawk
31.10.2010, 13:11 RSS.Feed.Bot.V2.3.Final.LUA5-PtokaX_API2
RSS-ленты под API2 (можно много лент и HTML-просмотр)
valdis73, я не возьмусь переделывать этот скрипт. Там много увязок разных, тронешь хоть одно что-то, вся цепочка становится уязвимой, кроме того, весь кэш RSS-лент держится ТОЛЬКО в памяти, это тоже создаёт дополнительные проблемы. Короче, скрипт тяжёлый для переделки. Если бы я сам писал, другое дело, я ведь только перевёл и выложил..
Может, кто другой возьмётся...
valdis73
29.10.2010, 18:00 Запись в лог-файл IP адресов посетителей
truth, вот когда-то то же самое спрашивали, и я сюда кидал этот скрипт.
Лог смотреть через блокнот.
truth
21.10.2010, 19:24 Last Seen
API1, API2 | Показывает когда был юзер
FurLion, найди строку
Код
OpConnected = UserConnected

и напиши следующую строку ниже неё:
Код
RegConnected = UserConnected

Либо можешь объединить обе строки в одну так:
Код
OpConnected, RegConnected = UserConnected, UserConnected

То же самое - относительно строки:
Код
OpDisconnected = UserDisconnected


Опс, уже ответили.. :(

PS: И, кстати, да, этот скрипт через некоторое время становится настолько тяжёл для хаба и тормозить его дико (на многие секунды), что пришлось срочно его отключить.
Milena
20.10.2010, 21:57 Инфо о пользователе при подключении
TROJAN, ну охота тебе флуд получать - получай...Назовём скрипт UserDataInEnter.lua
Но:
1. Это такой простейший скрипт, что мог бы и сам накалякать, используя всего лишь один файлик в Птоке - scripting-interface.txt
2. Лучше получать в приват на свой ник, чем мучить остальных, ибо при достаточно живом хабе эти сообщения туда (в приват или опчат) будут прилетать кучами.
3. Ник получателя я вставил прямо в сообщение, чтоб уменьшить число строк кода big_smile.gif Так, для интереса.
4. Шара в простом получении - точная (в байтах), если хочешь получать в гигабайтах, нужно добавить функцию форматирования шары.
5. Время - я бы не стал писать время, оно и так будет перед сообщением, если ты не отключил в клиенте галочку, конечно. Но как хочешь.
6. Режим подключения в виде букв А и Р (думаю, не надо расшифровывать и увеличивать код).

А вот сам кодик (удивись, какой он простенький, и постыдись):
Код
function UserConnected(tUser)
    Core.GetUserAllData(tUser)
    Core.SendPmToNick("Ksan", "Кто к нам пришёл","\n\t"..os.date("[%d-%m-%Y %H:%M:%S]").."\n\t Подключился юзер:\n\t• Ник: "..tUser.sNick.."\n\t• IP: "..tUser.sIP.."\n\t• Описание: \""..tUser.sDescription.."\"\n\t• Режим подключения: "..tUser.sMode.."\n\t• Шара: "..tUser.iShareSize.."\n")
end; OpConnected, RegConnected = UserConnected, UserConnected

Если не хочешь, чтоб регистрировал опов-админов, то можешь в последней строке убрать о них упоминание:
Код
end; RegConnected = UserConnected

А вот результат:
Код
[01:37:38] <Кто к нам пришёл>
    [21-10-2010 01:37:38]
     Подключился юзер:
    • Ник: Sky
    • IP: 109.86.200.217
    • Описание: "[49]made  in USSR"
    • Режим подключения: P
    • Шара: 609044343232
Nickolya, Invisible, DEN 007, sania, Unique
20.10.2010, 20:31 TotalGag
для аварийной заглушки всего хаба (кроме определенных лиц)
Milena, никого не глушит?
Кинь файликом скрипт, я гляну, в чём у тебя дело. Думаю, ты внесла какие-то изменения, может, даже незначительные, но достаточные, чтоб перестал работать как надо.
Milena
19.10.2010, 20:25 DiapasonGag
тихая заглушка по диапазону (удобно против динамич. IP)
Вот нафиг ты так сделал?
Код
tUnforbid = {  -- Разрешенные команды для заглушенных
    "",
    "",
    "",
    "",
    "",
    "",
}

Ты же этим самым в список разрешенных команд записал всё, что пишут в чат...
Не хочешь команд, ну просто закомменти эти строки и всё, или вообще удали все строки, кроме начала и конца таблицы.
Мог бы сразу сказать, какие изменения делал.
infection
19.10.2010, 2:55 DiapasonGag
тихая заглушка по диапазону (удобно против динамич. IP)
infection, приношу свои извинения за халтурную работу! :(

Скрипт исправлен, проверен и перезалит в первом сообщении.
infection
14.10.2010, 5:31 Скрипт бот, который сообщает в чат инфу!
infection, попробуй этот. Он стоит у меня. Но таких скриптов было море тут, ты плохо искал.
infection
13.10.2010, 0:30 Converter Accounts YnHub to PtokaX
API2 | Конвертер аккаунтов из YnHub в PtokaX
Конвектор Конвертер
Saymon21
12.10.2010, 22:05 Pm To Offline
API1 | Личка в оффлаин
averon.nv, есть более удобный скрипт. Попробуй его.
Ни разу никаких проблем не было.
AfLc
11.10.2010, 2:58 SMS_Cost
для определения стоимости SMS на короткие номера
UPD-2: Перезалил скрипт в первом сообщении, подкорректировав ещё пару символов в строке 107 (из-за них некоторые запросы могли уронить скрипт с ошибкой на 108 строке).
DEN 007
10.10.2010, 4:13 Скрипт, Заставить регистрироваться
Заставить юзера регистрироваться
1. Сем90, прекрасный способ разогнать своих юзеров! Браво!
2. Есть более разумные и гуманные способы, например:
- нерегенный не может писать в чате и-или в привате,
- не может искать,
- не может качать,
- ему в меню доступно мало что...
3. Можешь эти пункты сочетать в разных пропорциях и тихо-ненавязчиво, без шума, треска и киков потихоньку заставить региться, если уж тебе это очень надо.
Грубая сила - не наш путь, если ты не задался целью оставить в хабе только админов.
DEN 007
7.10.2010, 17:01 DiapasonGag
тихая заглушка по диапазону (удобно против динамич. IP)
У меня данный скрипт стоит вторым, после GagMeSoftly..
И да, этот скрипт лучше держать повыше.
Dimon21, infection
7.10.2010, 4:00 DiapasonGag
тихая заглушка по диапазону (удобно против динамич. IP)
Ага, точно, спасибо, что подсказал, пока другие не скачали. big_smile.gif
Я там сокращал длинный список диапазонов, взяв только начало, и закрыл автоматом таблицу через end, а не фигурной скобкой, так как перед этим тем же занимался и с другими функциями, обрезая и дописывая end

Перезалил в первом сообщении, исправив опечатку.
Dimon21
7.10.2010, 1:57 Заглушка Чата и ЛС (Диапозон)
infection, ладно, уговорил, только что выложил отдельной темой скриптик под твои запросы.
infection
7.10.2010, 1:53 DiapasonGag
тихая заглушка по диапазону (удобно против динамич. IP)
Название скрипта: DiapasonGag.lua
Версия: 1.2
Платформа: PtokaX 0.4.1.*+
API: API 2
Автор: Ksan (aka Trans)
Город: Томск
Дата написания: 04-04-2010 (начальная версия - в декабре 2009г)

Описание:
- В скрипте встроенная таблица с диапазонами для заглушки - начало диапазона и конец диапазона.
- При старте скрипта проверяется наличие на хабе юзеров с заглушенных диапазонов, при обнаружении такие ники заносятся в таблицу.
- при входе юзера с таких диапазонов сообщает админу о его приходе (через меню можно отменить этот показ), добавляет ник таблицу,
- далее при попытке написать в чат и приват сначала проверяется наличие в таблице заглуш. ников, если да, то сообщение до остальных юзеров не дойдёт. Админу приходит извещение о попытке написать в чат или приват заглушенным юзером (через меню можно отменить этот показ)
- Извещение о заглушке в чате по выбору через меню можно отправить в чат или в приват админа. Извещение о заглушке в привате админу приходит всегда в приват.
- Имеется таблица команд, которые юзеру разрешено использовать даже при заглушке.
- Имеется таблица ников-исключений.
- Опов не глушит.
В принципе, можно было бы сохранять таблицу заглуш. ников в файл, но особой нужды в этом нет, ибо таблица при старте скрипта заполняется сразу же.
PS: Скрипт был написан давно, и здесь только малая часть возможностей, специально выдрал в пользу голодающих "одминов" (а остальное пусть лучше послужит тихо, контрразведка не любит шума). Думаю, аналогичные скрипты есть на форуме, но пусть и этот посидит скромненько рядом с гигантами мысли...может, пригодится кому.

UPD1: (2010-10-19) Скрипт исправлен, проверен и перезалит.
Приношу свои извинения за невероятно халтурную работу при первом выкладывании. :(
Скрипт тогда собирал в конце бессонной ночи над другим скриптом, и умудрился такие ляпы пропустить..
UPD2: (2013-09-04) Скрипт исправлен, перезалит. Была ошибка - один из флагов был подменён другим и показ захода юзера из заглушенного диапазона не отключался.
UPD3: (2017-03-13) К моему дикому смущению, снова обнаружилась ошибка, исправил и перезалил.
И да, заодно ещё кое-какие небольшие изменения добавил (надеюсь, без ошибок).
Благодарю CyberGhost404 за обнаружение ошибки!
Nickolya, Tsd, Invisible, rival, Saymon21, Dimon21, dimetro, SKIFI, shur49, infection, AfLc
2.10.2010, 11:45 RSS.Feed.Bot.V2.3.Final.LUA5-PtokaX_API2
RSS-ленты под API2 (можно много лент и HTML-просмотр)
DEN 007, ну как знаешь, лично я не нахожу в этом ничего особенного, у меня проц загружается максимум до 60% на несколько секунд...Это естественно при одновременном открывании (или парсинге) нескольких страничек в интернете, а если ты запихал еще больше...Сомневаюсь, что твой проц жаловался тебе. big_smile.gif
Хотя можно попытаться кэшировать от имени админа каждую ленту по отдельности. Для этого есть ключ "force", то есть, можно запускать чтение ленты от имени админа с этим ключом.
Пример: !obzor force
При этом лента прокэшируется принудительно, даже если была только что перед этим кэширована, но содержание ленты тоже свалится в твой приват. big_smile.gif А проц всё равно будет так же загружен, но на более короткий срок. Это вся разница.
valdis73
2.10.2010, 11:11 SMS_Cost
для определения стоимости SMS на короткие номера
В скрипте в предыдущей строке (в данном случае - строка 111):
Код
_,_, msg1, digit1, msg2 = string.find(msg, "(По сообщениям пользователей) <strong>&asymp;(%d+)</strong>( руб.)")

нужно заменить вот это (%d+) на это (%d+%.*%d*), получится:
Код
_,_, msg1, digit1, msg2 = string.find(msg, "(По сообщениям пользователей) <strong>&asymp;(%d+%.*%d*)</strong>( руб.)")


Просто мне при тестировании не попадались приблизительные суммы от пользователей с десятичной дробью. Кстати, в строке 111 в скрипте в конце уже мной был помещен предусмотрительно запасной код для замены (за комментами).

Перезалил подкорректированный скрипт в первом сообщении.
Saymon21, striker, DEN 007
1.10.2010, 3:23 SMS_Cost
для определения стоимости SMS на короткие номера
Название: SMS_Cost.lua
Платформа: PtokaX 0.4.1.x
Версия: 1.0
API: API 2
( скрипт создан по мотивам скрипта kaspersky_API2.lua от RAND(i)M )
Автор SMS-версии скрипта: Ksan (aka Trans)
Дата написания: 01-10-2010
Город: Томск
Библиотека: для работы скрипта требуется библиотека LuaSocket

Описание: Скрипт для проверки стоимости SMS на короткие номера. Сами знаете, что иногда объявленная сумма в реале оборачивается невероятным размером, так что проверить никогда не лишне.
Примечание: Не факт, что вы запрашиваемую информацию получите обязательно, так как либо не на все номера есть данные, либо данные засорили пользовательскими данными (на сайте видно на некоторых номерах, как пользователи изгалялись...например, можете проверить номера 1111 или 1010)
Сайт для работы скрипта.

UPD: Перезалил, подкорректировав под новый текст от сайта.
UPD-2: Перезалил, подкорректировав пару символов в строке 107 (из-за них некоторые запросы могли уронить скрипт с ошибкой на 108 строке).
..
Nickolya, Invisible, PomanoB, Saymon21, ™Wizard™, striker, RAND(i)M, DEN 007
29.9.2010, 18:27 Скрипт для отключения чата
Вот только что загрузил тему с нужным тебе скриптом СЮДА.
infection
29.9.2010, 18:26 TotalGag
для аварийной заглушки всего хаба (кроме определенных лиц)
Название: TotalGag
Версия: 1.0
Платформа: PtokaX 0.4.1.x
API: API 2
Автор: Ksan (aka Trans)
Дата написания: 16-03-2010
Назначение: Для экстренной заглушки всего хаба (и чата и привата), когда нет иного способа быстро пресечь спам или иное нарушение. Админов, опов и отдельные ники из таблицы не заглушит (это регулируется ниже таблицами). Заглушать могут профили из таблицы скрипта.
Дополнительно: При заглушке все сообщения, не пропущенные в чат (но НЕ приват), всё равно будут видны админам. Заглушка-разглушка - одной и той же кнопкой.

UPD: -- исправлена ошибка, из-за которого при тотальной заглушке юзер мог видеть свое сообщение вместо привата в чате. big_smile.gif
Nickolya, Invisible, valdis73, Dimon21, Djessa, infection, MIKHAIL, zeusby
28.9.2010, 16:14 Требуются подсказки знатоков
Да хосспади, откуда вы беретесь такие?
Прёте и прёте из какой-то дыры с желанием переделать Птоку, Грейлинк, Флайлинк, ещё какую там хрень, а сами нифига не умеете, вам бы всё клянчить и клянчить переделать, а потом начинаете этими переделками спамить нам же!
Что вас там не устраивает, мать вашу хреновы "одминчеги"? Первое же сообщение на форуме и уже про переделку клиента!

PS: Ибо достали!
Может, подобные темы сразу в корзину отправлять начинать пора уже?
переподвыподверт
27.9.2010, 21:25 PtokaX
DcHub
1. Почему тему открыл в разделе "Другие хабы"? Ведь это про Птоку у тебя речь, и есть раздел для Птоки. Лучше перенести.
2. Называй тему более содержательно, а то выглядит глупо...например - "Птока и FreeBSD", так понятнее было бы.
3. Мне кажется, на фряху нет особо успешных установок.
Lamo
25.9.2010, 17:25 RSS.Feed.Bot.V2.3.Final.LUA5-PtokaX_API2
RSS-ленты под API2 (можно много лент и HTML-просмотр)
1. Сорри, при переводе на АПИ2 пропустил...в строке 670 (в скрипте из первого сообщения):
Код
toFeedSpy("Юзер: "..user.sName.." запросил новую RSS-ленту.\r\n\t\t Лента: "..feed.."\r\n\t\t Описание: "..desc);

надо user.sName заменить на user.sNick. Должно получиться так:
Код
toFeedSpy("Юзер: "..user.sNick.." запросил новую RSS-ленту.\r\n\t\t Лента: "..feed.."\r\n\t\t Описание: "..desc);

Я проверил - работает.

Файл в первом сообщении перезалит.

2. Насчёт занесения в базу - скрипт очень тяжёлый, написан старомодно и очень трудно проследить, что куда и для чего. Я лично не возьмусь, пожалуй, по крайней мере, пока нет желания big_smile.gif. К сожалению, да, при перезапуске скрипта кэш обнуляется и снова нужно перекэшировать, хотя при запросе отдельного юзера отдельной ленты кэширование конкретной ленты всё равно произведётся.

3. Я сегодня всю ночь парился с автоматизированием кэширования при запуске и через определенное время по таймеру.
Всё вроде сделал, но потом обнаружил, что если меня нет (как админа, которому нужно послать информацию о процессе кэширования) на хабе при запуске скрипта (так может случиться, когда перезапускаешь хаб или компьютер, и ты ещё не успел попасть на хаб), то скрипт валится за отсутствием табличного юзера...Пока отложил на потом, когда придумаю, как кэшировать без отсыла информациии.

PS: Если кто-то сможет эти 2 последних пункта решить положительно, я буду только рад.
valdis73
24.9.2010, 2:16 RSS.Feed.Bot.V2.3.Final.LUA5-PtokaX_API2
RSS-ленты под API2 (можно много лент и HTML-просмотр)
Название: RSS.Feed.Bot.V2.3.Final.LUA5-PtokaX_API2
Платформа: PtokaX 0.4.1.x
API: API 2
Версия: 2.3
Автор: S.t.0.n.e d.b
Переводчик с API 1 на API 2 (и подкорректировал html-дизайн): Ksan (г.Томск)
Прикрутил другую библиотеку (и решил проблему с UTF-8): Nickolya (г.Тула)
Дата переделки: 24-09-2010
Библиотека: для работы скрипта требуется библиотека LuaSocket

Описание:
- можно одновременно прикрутить ленты из разных сайтов,
- админ может кэшировать сразу все ленты для ускорения доступа к ним,
- можно генерировать ленты в виде html-страничек и просматривать их через сервер хаба по ссылке,
- кому не нравится дизайн, может сам переделать, используя настройки скрипта big_smile.gif
- к скрипту прилагаю папки и образцы лент со своего хаба (одна из лент чисто томская, так что с интернета не получится взглянуть на сам сайт) для наглядного примера, как создавать ленты.

Примечание: для *nix-платформ потребуется другая библиотека, а где и как её добыть - обсудите в теме.

PS: Надеюсь, что с этим скриптом тема RSS-лент хоть на какое-то время станет неактуальной.
UPD: Перезалил скрипт, исправив небольшую ошибочку.
Nickolya, intlive, Invisible, PomanoB, valdis73, Saymon21, DEN 007, Unique
22.9.2010, 1:12 User Info 1.0 (русская Версия)
API2 | Скрипт для просмотра информации о юзерах
1. Про какой из скриптов речь? в теме 2 скрипта.
2. Если ты пропишешь путь точно как показал Nickolya, без импровизаций, база создастся и при первом же заходе юзера дополнится информацией (в обоих скриптах).
3. Если речь про последний скрипт в теме (UserInfo_1.2.lua), то если ты путь и название файла напишешь вот так (без промежуточной папки "tbl"):
Код
fFile = debug.getinfo(1).source:match("^@(.+\\).-$"):gsub("\\","/").."userinfo.tbl",    -- Имя файла с базой
то тоже всё будет окей. Но если доп. папку tbl, указанный в скрипте, создашь заранее вручную, то, возможно, скрипт тоже отработает нормально.
4. Если скрипт из первого сообщения, то без изменений отработает нормально при винде, а если ты на линуксе, то в пути файла надо слэш один и прямой, то есть, "/", а не "\\". Но тоже лучше путь указать как в пункте 2 (точнее, как показал Nickolya).
5. Почему у тебя не показывает меню - фиг знает, попробуй продвигай вверх, может, скрипт или бот какой мешает.
Marc
20.9.2010, 23:58 MyDc
API2 | Скрипт новостей с данного форума
Думаю, в функции
Код
function RepChars(sMsg, bNum)
нужно добавить такой участок:
Код
    sMsg = string.gsub (sMsg, "&#*34;", "\"")
    sMsg = string.gsub (sMsg, "&#*60;", "<")
    sMsg = string.gsub (sMsg, "&#*62;", ">")
    sMsg = string.gsub (sMsg, "&#*41;", ")")
    sMsg = string.gsub (sMsg, "&#*91;", "[")
    sMsg = string.gsub (sMsg, "&#*93;", "]")
Только после решёток # нужно убрать будет звёздочки *
Возможно, подобные добавки придётся позже ещё делать по мере необходимости.
Цитата
И напрягает то, что он иногда одни и те же новости по нескольку раз отсылает.
Так делает только когда скрипт перезапускаешь. Он не сохраняет полученные данные, чтоб сравнивать, изменилось что или нет за 10 последних минут, и при каждом перезапуске память обнуляется и он сканирует форум с нуля.

PS: Добавил вышепредложенные строчки, перезапустил, - отработал правильно, показывает как надо.
Nickolya, Tsd, ImDim
27.8.2010, 12:53 Проблема с хабом на PtokaX 0.4.1.2
Проблема с хабом на PtokaX 0.4.1.2 - Сильно лагает
1. Это надо было показать раньше, до перезагрузки, хоть можно было бы посмотреть, какой скрипт сколько памяти занимал..
2. Короче, когда и если снова станет все тормозить, вспомни мой совет.
3. Я тебе удивляюсь ещё раз....у тебя столько скриптов, и нет ни одного мало-мальски похожего на антирекламу...Или у тебя там правила настолько либеральные, что антиреклама нафиг не нужна?
sania
27.8.2010, 12:45 Антибаннер
борьба с программами-вымогателями посредством DC++
Посмотри в скрипте, куда он обращается, их и скорми Касперскому.
Других вариантов и не может быть, я думаю..
sania
27.8.2010, 0:13 Hub Menu
API2 | Меню для встроенных команд PtokaX
Продолжай в теме другого скрипта.
xXx-Portal
26.8.2010, 22:29 Проблема с хабом на PtokaX 0.4.1.2
Проблема с хабом на PtokaX 0.4.1.2 - Сильно лагает
1. Попробуй отключить вот эти скрипты разом:

Статистика чата
Ekzekutor последний
rus_ShoutStats 2.0 LUA 5.1x [Strict][API 2]
BombSetuper
Рекорды

и проверь работу хаба.
2. Если лагов не стало, начинай по одному скрипту подключать из этого списка и проверять на лаги...не спеши, в одну секунду не узнаешь...
Если обнаружишь, что какой-то скрипт стал тормозить хаб, отключи его, и продолжай проверять следующие (вдруг там не один лагающий скрипт).
3. Когда и если обнаружишь лагающие скрипты, тогда и продолжишь разговор.
4. И, кстати, неплохо бы и названия скриптов игр сюда написать.
То, что "так и было задумано", не оправдывает избыточность скриптов.

PS: Хотя у меня самого скриптов намного больше (их 43, но из игр только Викторина), у меня хабы не тормозят, хотя один из них работает 221 день, другой - 83 дня, третий, правда, часто перезапускается, он у меня экспериментальная площадка для первых двух. big_smile.gif Скрипты везде одинаковые.
sania
26.8.2010, 18:32 Анти реклама!
voronf4
26.8.2010, 18:03 Немогу зайти на хаб
Сколько раз уже писали по этому поводу....в клиенте напиши адрес своего хаба 127.0.0.1 или просто dchub://localhost
Это если твой хаб на твоем компе.
saber
25.8.2010, 0:56 RegisteredUsers.xml
Скачай скрипт отсюда, будет сохранять настройки каждые 5 минут.
Не помню, что, но есть какая-то мелкая закавыка именно с версией 0.4.1.2 (какую-то настройку не сохраняет вроде), но работать будет.

PS: Оп-с, запоздал, да и скрипт из предыдущего сообщения как раз исправленный.
Ольга
15.8.2010, 20:52 Нужен скрипт блокировки скачивания
Запрети им дышать, они тогда не смогут и файллисты качать..
Намёк понятен?
мамин_парень
10.8.2010, 22:30 Ищю скрипт
Скрипт
Вот накропал скрипт, заменяет описание юзера в списке на название его профиля, как просил автор темы.
Раскрывающийся текст
Код
--- Скрипт замены описания юзера на данном хабе на профиль юзера (мастер, оператор, вип, рег и незарегистрированный юзер)
--- Название скрипта - ProfileToDescr.lua
--- Написан чисто переделкой скрипта NoDescAdv от Alex82
--- Автор переделки - Ksan (г.Томск)
--- Дата: 10-08-2010
----------------------

iSendTimer = 1000    -- Время отправки MyINFO, ms

tTimers = {}
tUsers = {}

function OnStartup()
    for i,v in pairs(Core.GetOnlineUsers(true)) do
        MyINFOArrival(v,v.sMyInfoString)
    end
end

function GetNickListArrival(user,data)
    tTimers[TmrMan.AddTimer(iSendTimer, "SendAllInfo")] = user.sNick
end

function MyINFOArrival(user,data)
    tUsers[user.sNick] = true
    tTimers[TmrMan.AddTimer(iSendTimer, "SendInfo")] = user.sNick
    collectgarbage("collect")
end

function SendAllInfo(tmr)
    local user = Core.GetUser(tTimers[tmr],true)
    if user then
        for i,v in pairs(Core.GetOnlineUsers(true)) do
            if tUsers[v.sNick] then
                local tUsr = Core.GetUser(tTimers[tmr],true)
                if tUsr then
                    sProfile = (ProfMan.GetProfile(v.iProfile) and ProfMan.GetProfile(v.iProfile).sProfileName) or "Незарегистрированный юзер"
                    Core.SendToUser(user,"$MyINFO $ALL "..v.sNick.." "..sProfile..(v.sMyInfoString:match("%$MyINFO%s$ALL%s%S+%s.-(%b<>%$.+)$") or v.sMyInfoString:match("%$MyINFO%s$ALL%s%S+%s.-(%$.+)$")))
                end
            end
        end
    end
    tTimers[tmr] = nil
    TmrMan.RemoveTimer(tmr)
    collectgarbage("collect")
end

function SendInfo(tmr)
    local user = Core.GetUser(tTimers[tmr],true)
    if user then
        sProfile = (ProfMan.GetProfile(user.iProfile) and ProfMan.GetProfile(user.iProfile).sProfileName) or "Незарегистрированный юзер"
        Core.SendToAll("$MyINFO $ALL "..user.sNick.." "..sProfile..(user.sMyInfoString:match("%$MyINFO%s$ALL%s%S+%s.-(%b<>%$.+)$") or user.sMyInfoString:match("%$MyINFO%s$ALL%s%S+%s.-(%$.+)$")))
    end
    tTimers[tmr] = nil
    TmrMan.RemoveTimer(tmr)
end

PS: Я сначала подумал было, что Артём прислал аналогичный скрипт, потом скачал и понял, что не так. Но лучше бы при отправлении ссылки добавить, для чего скрипт (это Артёму)

PPS: Пока лучше не ставить, при перезаходе показывает перезашедшему для всех один профиль - его профиль... (перезаход - имею в виду кнопку Перезайти, а если просто закрыть клиент и снова открыть, то всё нормально). Это попытаюсь исправить.

PPPS: Всё, исправил, скрипт годен к употреблению и является лекарством. big_smile.gif
Егор Владимирович
10.8.2010, 17:57 Не работает хаб
Ты нас держи в курсе, когда получится. Порадуемся вместе. big_smile.gif
Demest
7.8.2010, 20:12 Хочу провести на хабе жеребьевку ФИФА Чемп мира
или лигу чемп всеравно
Ну вот, не успел я...ну чтоб не пропала работа, всё же закину сюда big_smile.gif
Имеется уже расставленный список команд. Нужно к ним прикрепить случайно выбранные ники участников.
Список участников заполняешь ручками в скрипте, через меню запускаешь команду, в чате выдаст случайно расставленный список.
Теперь их присваиваешь к командам сверху вниз подряд:

команда-1 = участник по списку в чате-1
команда-2 = участник по списку в чате-2
..и т.д.

Делаешь это прилюдно.

Раскрывающийся текст
Код
--[[
    Скрипт случайной расстановки представленного списка.
    Название: RandomList.lua
    API: 2
    Автор: Ksan (г.Томск)
    Дата написания: 07-08-2010
--]]

-- Ниже ники нужно вписать свои, какие нужно рассортировать
tNicks = {
    "Ник-1",
    "Ник-2",
    "Ник-3",
    "Ник-4",
    "Ник-5",
    "Ник-6",
    "Ник-7",
    "Ник-8",
    "Ник-9",
    "Ник-10",
    "Ник-11",
    "Ник-12",
}

math.randomseed(os.time())

function OpConnected(tUser)
    Core.SendToUser(tUser, "$UserCommand 1 3 << АДМИНКА >>\\Расстановка ников по случайному выбору$<%[mynick]> !randomnicks|")
end
    
function ChatArrival(tUser, sData)
    local sData = sData:sub(1,-2)
    local sCmd = sData:match("%b<>%s+(.*)$")
    if sCmd and sCmd == "!randomnicks" then
        tTable = tNicks
        Core.SendToAll("\nСлучайно расставленный список участников:\n")
        for n = 1, #tTable do
            t = math.random(#tTable)
            sNick = tTable[t]
            Core.SendToAll(sNick)
            table.remove(tTable, t)
            math.randomseed(os.time())  -- для гарантированной случайности :)
        end
        Core.SendToAll("\n")
        return true
    end
end
van21
6.8.2010, 0:20 Хочу провести на хабе жеребьевку ФИФА Чемп мира
или лигу чемп всеравно
Да вообще по алфавиту распредели их и все.
Это прокатит нормально, если ники участников уже зафиксированы.
van21

11 страниц V  « < 3 4 5 6 7 > » 
RSS Сейчас: 8.5.2024, 3:05