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

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

MyDC.ru _ Развлекательные скрипты [PtokaX] _ Showstatus V.1.1 Api2

Автор: LEDOKOL-STALKER 11.4.2009, 5:58

Написал Статус-скрипт, позволяющий добавлять к сообщениям в главном чате статус-строку на манер ICQ. Итак, что умеет скрипт:
1.Добавлять статус-сообщения в главном чате и ЛС (в ЛС частичная поддержка),

Пример:
[02:39:28] <[‰]LEDOKOL-STALKER> [Обожаю Пластмассу] читал уже... =)
[02:42:56 | 172.17.24.3 ] <> [ик] хм.. сможешь достать с севера файл, если он находится ниже основного каталога?
[13:44:55] * [‰]LEDOKOL-STALKER [Обожаю Пластмассу] слушает Pink Floyd - The Wall CD 2

2.Хранить последние N использованных статусов в файле (пока что только для ника). Список последних статусов доступен через меню (отображаются последние статусы на момент входа на хаб в хронологическом порядке).
3.Есть возможность присваивать принудительный статус другим юзерам (смотрите настройки профилей в скрипте).
4.Есть список общих для всех юзеров статусов хаба.
5.Гибкая, на мой взгляд, настройка.

Примечания: скрипт проверялся на PtokaX 0.4.1.0. По идее, должен работать на всех серверах версии 0.4.x.x OS Windows. Особо не тестировал, так что, если будут замечания и предложения, - в шапке скрипта есть мои контакты.

 ShowStatus_PtokaX_0.4.1.0_for_Win.rar ( 3.45 килобайт ) : 269
 ShowStatus_PtokaX_0.4.1.0_for_Nix.rar ( 3.98 килобайт ) : 71
 

Автор: mariner 11.4.2009, 7:20

и где оно?

Автор: LEDOKOL-STALKER 11.4.2009, 10:50

Цитата(mariner @ 11.4.2009, 14:20) *
и где оно?


А вот оно =)

Автор: Wariner 11.4.2009, 11:01

при первом беглом просмотре:
пути прописываем так:

Код
sPath = Core.GetPtokaXPath().."scripts/"

Сборщик мусора выглядит так:
Код
collectgarbage("collect")

вот это:
Код
    local key = table.maxn(tSettings.tUserStatus[user.sNick])
        while key >= 1 do
            Core.SendToNick(user.sNick,"$UserCommand 1 1 "..tSettings.sMenu.."\\Последние статусы\\"..tSettings.tUserStatus[user.sNick][key].."$<%[mynick]> !setstat "..tSettings.tUserStatus[user.sNick][key].."|")
            key = key - 1
        end
    end

лучше заменить на:
Код
    local key = table.maxn(tSettings.tUserStatus[user.sNick])
                local sMsg = ""
        while key >= 1 do
            sMsg = ("%s$UserCommand 1 1 %s\\Последние статусы\\%s$<%[mynick]> !setstat %s&#*124;|"):format(sMsg,tSettings.sMenu,tSettings.tUserStatus[user.sNick][key],tSettings.tUserStatus[user.sNick][key])
            key = key - 1
        end
                Core.SendToUser(user, sMsg)
    end

* - удалить

Автор: LEDOKOL-STALKER 11.4.2009, 11:52

To Wariner:
Спасибо за совет. Но возникает пара вопросов.
1) sPath = Core.GetPtokaXPath().."scripts/" - зачем???
2) collectgarbage("collect") - насколько я помню, запускает полный цикл сборки. Может лучше использовать collectgarbage(step,2), так, по идее, шустрее будет работать.
3) По поводу меню... Имеет ли смысл отправлять UserCommands единым пакетом??

Автор: alex82 11.4.2009, 12:17

Цитата(LEDOKOL-STALKER @ 11.4.2009, 11:52) *
1) sPath = Core.GetPtokaXPath().."scripts/" - зачем???
http://mydc.ru/topic1693.html

Автор: LEDOKOL-STALKER 11.4.2009, 12:46

Цитата(alex82 @ 11.4.2009, 19:17) *
http://mydc.ru/topic1693.html


tSettings = {
sPath = Core.GetPtokaXPath():gsub("/","\\").."scripts\\",
sFolder = "Status\\",
fUserStatus = "UserStatus.txt",
}

function OnStartup()
os.execute("mkdir \""..tSettings.sPath..tSettings.sFolder.."\"") -- создание папки
if loadfile(tSettings.sPath..tSettings.sFolder..tSettings.fUserStatus) then
dofile(tSettings.sPath..tSettings.sFolder..tSettings.fUserStatus)
else
SaveToFile(tSettings.sPath..tSettings.sFolder..tSettings.fUserStatus, tSettings.tUserStatus, "tSettings.tUserStatus")
end
collectgarbage("collect")
end

Автор: mariner 11.4.2009, 12:50

дада, смотрю любители костылей плодятся. Скока раз объяснять, что можно прописать путь и так C:/dir1/ и так C:\dir1\ Но первый вариант предпочтительней, ибо тогда тебя не будут мучить юзезы Unix систем.

Автор: LEDOKOL-STALKER 11.4.2009, 12:53

Цитата(mariner @ 11.4.2009, 19:50) *
дада, смотрю любители костылей плодятся. Скока раз объяснять, что можно прописать путь и так C:/dir1/ и так C:\dir1\ Но первый вариант предпочтительней, ибо тогда тебя не будут мучить юзезы Unix систем.


Хм... Сейчас один товарищ линуксоид перепишет пути, проверит и я выложу его отдельным файлом. Так, думаю, лучше будет

Автор: King 11.4.2009, 14:20

несколько вопросов с ходу (скрипт еще не ставил): Есть ли возможность запрещать определенным юзерам статус (по IP желательно)? И есть ли возможность ставить ограничение на длину статуса?

Автор: LEDOKOL-STALKER 11.4.2009, 14:47

Цитата(King @ 11.4.2009, 21:20) *
несколько вопросов с ходу (скрипт еще не ставил): Есть ли возможность запрещать определенным юзерам статус (по IP желательно)? И есть ли возможность ставить ограничение на длину статуса?


Ограничение есть. По умолчанию - 30 символов. Смотри в настройках. Возможности запрещать статус по IP - нет. Но если что, - могу сделать. Пиши сразу в Аську. В шапке скрипта номер указан.

Автор: LightDiver 11.4.2009, 14:56

Здравствуйте.. попробовал вот я под птокой на убунте запустить это.. Работает только меню.. ни одна команда не выполняется.. Пути прописаны нормально..

Автор: LEDOKOL-STALKER 11.4.2009, 14:58

Цитата(LightDiver @ 11.4.2009, 21:56) *
Здравствуйте.. попробовал вот я под птокой на убунте запустить это.. Работает только меню.. ни одна команда не выполняется.. Пути прописаны нормально..


Уважаемый, я помню как вы птоку собирали... =) Так что меня это не удивляет =)

Автор: LightDiver 11.4.2009, 17:09

Дико извиняюсь))) Ламер я позорный! Автор гений - все пашет.

Автор: Wariner 11.4.2009, 17:28

Цитата(LEDOKOL-STALKER @ 11.4.2009, 12:52) *
To Wariner:
Спасибо за совет. Но возникает пара вопросов.
1) sPath = Core.GetPtokaXPath().."scripts/" - зачем???
2) collectgarbage("collect") - насколько я помню, запускает полный цикл сборки. Может лучше использовать collectgarbage(step,2), так, по идее, шустрее будет работать.
3) По поводу меню... Имеет ли смысл отправлять UserCommands единым пакетом??

1) пути лучше прописывать именно так как написано, ибо тема уже обсуждалась и не имеет смысла изобретать велосипед!
2) можно использовать полную но как реже)))
3) меню лучше отправлять единым сообщением! это будет более правильно.

PS: всему этому меня научили тут))) надо просто внимательнее читать форум а конкретно тему для разработчиков)))

Автор: LEDOKOL-STALKER 11.4.2009, 17:37

Цитата(Wariner @ 12.4.2009, 0:28) *
1) пути лучше прописывать именно так как написано, ибо тема уже обсуждалась и не имеет смысла изобретать велосипед!
2) можно использовать полную но как реже)))
3) меню лучше отправлять единым сообщением! это будет более правильно.

PS: всему этому меня научили тут))) надо просто внимательнее читать форум а конкретно тему для разработчиков)))


1) Пути переписал
2) collecrgarbage теперь вызываю с параметрами step,2
3) В следующем релизе сделаю отправку единым сообщением.

P.S. Большое спасибо за помощь.

Автор: Артём 11.4.2009, 21:17

Спасибо за скрипт!Интересная вещь secret_smile.gif ,но хотелосьбы чтобы админ мог давать принудительный статус по ипу... still_dreaming.gif
P.S. tire.gif чесно уже замучался вписовать все команды всех скриптов в: tHubCommands = { -- встроенные команды хаба (эксепшн лист)
можно както сделать чтобы невписовать команды всех скриптов которые стоят на хабе? unhappy.gif

Автор: LEDOKOL-STALKER 12.4.2009, 3:44

Цитата(Артём @ 12.4.2009, 4:17) *
Спасибо за скрипт!Интересная вещь secret_smile.gif ,но хотелосьбы чтобы админ мог давать принудительный статус по ипу... still_dreaming.gif
P.S. tire.gif чесно уже замучался вписовать все команды всех скриптов в: tHubCommands = { -- встроенные команды хаба (эксепшн лист)
можно както сделать чтобы невписовать команды всех скриптов которые стоят на хабе? unhappy.gif


Конечно можно. Дело в том, что скрипты обрабатывают входящие сообщения не одновременно, но в порядке их расположения в менеджере скриптов сверху-вниз. Так что достаточно просто опустить мой скрипт ниже остальных.

Автор: Артём 12.4.2009, 7:29

Цитата(LEDOKOL-STALKER @ 12.4.2009, 3:44) *
Так что достаточно просто опустить мой скрипт ниже остальных.

amazing.gif где только он не был....и в низу и в самом верху и в середине...толку confuse.gif ноль (((

Автор: Voice 24.10.2009, 19:52

[00:51:40] **** Соединение с minusdc.kristel.ru ...
[00:51:40] **** Соединён
[00:51:41] **** Пароль отправлен...
[00:51:41] <MinusDC++> Этот хаб работает под управлением PtokaX DC Hub 0.4.1.1 (Время работы: 2 дней, 15 часов, 0 минут / Юзеры: 71)
[00:51:42] **** Ошибка при распаковке
Это как понять? На хаб не пускает при запущеном скрипте этом. Вроде все перепробовал..

Автор: Wariner 24.10.2009, 22:30

про ошибку при распаковке уже писали на форуме. юзаем поиск!

Автор: Voice 25.10.2009, 5:44

Не нашел unhappy.gif Тыкните носом, плиз..

Автор: Артём 7.9.2010, 15:02

Можно по IP и по Нику ставить принудительный статус big_smile.gif
 ShowStatus___IP_.lua ( 21.12 килобайт ) : 28

Автор: Parad0x 7.9.2010, 21:03

запустил этот скрипт ставлю себе статус пишу в чат - рядом с ником статуса нет :(

Автор: Артём 7.9.2010, 22:45

Parad0x, поставь на самый верх скрипт

Автор: ProGeTTo 4.11.2010, 19:44

Хм)
А можно узнать, почему в меню нету команды "Убрать статус"?
Есть команда "Удалить историю статусов" но это не то...можете объяснить, как добавить чтоб интория оставалась а статус сносился?
и ещё небольшой баг заметил, некоторые игры неработают при запущенном статусе (просто команда в чат выдается и ничего не происходит)

Автор: Marc 5.2.2011, 21:02

А как можно изменить скрипт, чтобы там нельзя было прописывать рекламу или писать нецензурные слова?
А то поставив скрипт, где есть антиреклама и антимат, то пользователи просекли фишку эту и стали через него писать))
Пришлось изменить настройки скрипта и оставить его пользование для Админа и модеров, что считаю не совсем верным.
Надеюсь на помощь!
У меня птоха 0.4.1.2

Автор: Артём 5.2.2011, 21:17

Marc, попробуй поставить скрипт ниже антимата и антирекламы. big_smile.gif

Автор: Marc 5.2.2011, 22:43

Артём!
Пробовал уже! У меня у самого такая мысль была...
Он щас стоит ниже антирекламы и антимата и я его поставил снизу в такое место, где он начинает работать, так как если ниже чуть сдвинуть, то команды идут в чат без результата!
То есть пока випам и регам пользование Статусом временно закрыл!
Вот ещё что, написал в правилах про Статус о запрете рекламы и мата в нём, но это надо опять-таки самому постоянно следить, что не удобно!
Артём! Может можно как-то добавить в скрипт что-то? Пользователям он понравился! Я твою редакцию взял (из сообщения 23), но вот что сделать в скрипте надо, не знаю.
А как он работает у тебя? И вообще? Можно добавить в него то, о чём я тут говорю?

Автор: Артём 6.2.2011, 0:16

Marc, скачал, хотел попробовать мат или рекламу прописать, но... не нашёл где там можно что-то писать, можно только выбирать готовые статусы, ты уверен что скриптом это делают, а не ник при входе на хаб?

Автор: Marc 6.2.2011, 0:54

У меня не выбирается почему-то готовый статус...
У меня пользователи писали туда всё, что им вздумается, в этот статус.
Да, я видел там готовые статусы, сам хотел их активировать, но не смог!
Может я не так что делаю?

У пользователей:
1. Установить мой статус
2. Убрать мой статус
3. Очистить мою историю
4. Помощь

Кода они нажимают "Установить мой статус", то им откр окошко, где написано "30 символов" и ввести текст.
Вот туда они и вводят то, что им хочется)
У меня функций больше, но смысл тот же! Что-то не так происходит!
Скрипт работает без ошибок!

Автор: Артём 6.2.2011, 1:12

Marc, ага, увидел, у меня антиреклама блочит когда пытаюсь писать "туда спам"-мой статус, так что или меня антирекламу или двигай лучше скрипт big_smile.gif (JanusHS у меня)

Автор: Marc 6.2.2011, 2:04

Артём!
Тут немного другое. Я уже всё излазил в скрипте вдоль и поперёк)
Как я писал выше, то отменив пользователям регам и випам использование своих статусов, у них пропало меню "Установить мой статус".
Остальное всё осталось.
Но вот меню "Статусы хаба" не появляется хоть убей! Там у тебя их 10 - этих статусов!
По идее, тогда это меню с цифрами от 1 до 10 должно быть и пользователь просто вводит то, что там предлагается ввести за этими цифрами.
Тогда не нужны будут ни антиреклама, ни антимат!
Пользователь ввёл то, что предлагается ввести и всё!
Отключал все другие скрипты, но менюшки "Статусы хаба" и цифры со статусами не видел!
У меня винда семёрка х64.
Помощь нужна в настройке!

вот эта часть кода у меня не работает:

Код
function UserConnected(user)
    local Msg = ""
    if tSettings.tNickStatus[user.sNick] then
        if tSettings.tProfiles[user.iProfile]["MyOwnStatus"] == true then
            local key = table.maxn(tSettings.tNickStatus[user.sNick])
            while key >= 1 do
                Msg = Msg.."$UserCommand 1 1 "..tSettings.sMenu.."\\Последние статусы\\"..tSettings.tNickStatus[user.sNick][key].."$<%[mynick]> !setstat "..tSettings.tNickStatus[user.sNick][key].."||"
                key = key - 1
            end
        end
    end
    for key,value in pairs(tSettings.tCommonStatus) do
        Msg = Msg.."$UserCommand 1 1 "..tSettings.sMenu.."\\Статусы Хаба\\"..tSettings.tCommonStatus[key].."$<%[mynick]> !setstat "..tSettings.tCommonStatus[key].."||"
        end
    Core.SendToUser(user,Msg)
    for key,value in pairs(tSettings.tProfiles[user.iProfile]["Commands"]) do
        pcall(tSettings.tCommands[value]["UserCommands"],user)
    end
collectgarbage(step,2)
end

Автор: Nickolya 6.2.2011, 23:50

Marc, а может тебе стоит клацнуть ПКМ на закладке хаба? Все команды с этими статусами мило окажутся там. Если тебе надо показывать их везде, то в этом куске кода замени $UserCommand 1 1 на $UserCommand 1 3

Автор: Marc 7.2.2011, 1:16

Nickolya!

А ведь и правда, при замене, всё появилось!
Кроме Вас и никто и не подсказал!
Просто и гениально!)
Спасибо! Теперь всё работает так, как надо!

Автор: Stavr 10.2.2011, 22:41

Всем Привет запустил этот скрипт у ся на хабе ....
И терь проблема он почемуто блокирет OpChat
Подскажите в чём проблемма!

Автор: G@MER 22.2.2011, 17:39

скрипт работает хорошо, но команды которые записаны в папке texts не работают, между статусом и !командами стоит пробел.
в чат приходит только все вот так <G@MER> [статус] !rules
нужно где-то убрать пробел, как это исправить?
+ не пашет ОпЧат

Автор: Marc 22.2.2011, 19:01

G@MER!
Скрипт из 23-его сообщения работает с изменениями из 34 сообщения, без проблем! Уже проверено!
Опчат, да, там проблема! Но я на это не обращаю особого внимания, так как можно и в личке с операторами поговорить (при необходимости).
А так, надо выбирать, что для Вас удобнее: статус или опчат! Я выбрал статус!)
Тем более, что команды опчат обрабытывает и следит за тем, за чем ему и положено следить...