|
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
![]()
Сообщение
#1
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 107 Регистрация: 23.11.2008 Из: Сергиев Посад Пользователь №: 1 178 Спасибо сказали: 9 раз ![]() |
Раскрывающийся текст Код local sPath = Core.GetPtokaXPath().."scripts/TextBot/" function ChatArrival(tUser, sData) local sCmd = sData:match"%b<>%s+%p(%S+).*|" if sCmd then Core.SendToUser(tUser, OpenTextFile(sCmd)) return true end end function OpenTextFile(sCmd) local sMessage = "" local bBinary = bBinary or false local sFile = io.open(sPath..sCmd..".txt", "r") if sFile then sMessage = sFile:read("*all") sFile:close() end return sMessage end Всё ли правильно в этом скрипте? Написал. Работает. Но не уверен, что тут всё верно. Гляньте плиз ![]() |
|
|
![]()
Сообщение
#2
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Я бы вот так написал
![]() Код local sPath = Core.GetPtokaXPath().."scripts/TextBot/"
function ChatArrival(tUser, sData) local sCmd = sData:match"^%b<>%s+%p(%S+).*|$" if sCmd then local sMsg = LoadText(sPath..sCmd..".txt") if sMsg then Core.SendToUser(tUser, sMsg) return true end end end function LoadText(sFile) local hFile = io.open(sFile) if hFile then local sMsg = hFile:read"*a" sMsg = sMsg:gsub("&#(%d+);", "&#%1;") sMsg = sMsg:gsub("|", "|") sMsg = sMsg:gsub("^%$", "$") hFile:flush() hFile:close() return sMsg end return nil, "Не удалось открыть файл "..sFile end |
|
|
![]()
Сообщение
#3
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 107 Регистрация: 23.11.2008 Из: Сергиев Посад Пользователь №: 1 178 Спасибо сказали: 9 раз ![]() |
При отображении в клиенте на конце текста прописываеться $
|
|
|
![]()
Сообщение
#4
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Пардон. В строке:
Код sMsg = sMsg:gsub("^%$", "$") знак $ нужно заэкранировать.Твой скрипт тоже работает. Однако, особенности протокола заставляют нас обходить некоторые знаки. Например, в твоём скрипте: 1) пользователям не отсылались бы сообщения, начинающиеся со знака $; 2) знак | в сообщении служил бы разделителем команд и не отображался бы в чате, а всё что шло после этого знака отсылалось бы в следующей команде; 3) любые цифры от 1 до 255, перед которыми стояли бы символы &#, и после которых стоял бы символ ;, преобразовывались бы из кодов в некоторые символы перед тем как поступить в чат пользователя. |
|
|
![]()
Сообщение
#5
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 107 Регистрация: 23.11.2008 Из: Сергиев Посад Пользователь №: 1 178 Спасибо сказали: 9 раз ![]() |
А возможно ли для этого скрипта
![]() Сделать следующую фичу: Чтобы в текством файле указывать например [views] А пользователю отображалось количество просмотров данной темы (текстового файла) Что то вроде как в MOTD в скрипте StatPX, только вместо всяких рекордов пользователей было количество просмотров. |
|
|
![]()
Сообщение
#6
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Можно.
Можно сделать показ количества просмотров за время непрерывной работы скрипта, тогда можно просто завести переменную-счётчик, в противном случае (в общем случае) нужно будет сохранение счётчика в файл. ![]() |
|
|
![]()
Сообщение
#7
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 107 Регистрация: 23.11.2008 Из: Сергиев Посад Пользователь №: 1 178 Спасибо сказали: 9 раз ![]() |
Лучше в файл
![]() Цитата TextBot.lua:10: bad argument count to 'SendToUser' (2 expected, got 3)
|
|
|
![]()
Сообщение
#8
|
|
![]() Site Reliability Engineer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз ![]() |
У меня тоже маленький вопросик будет
![]() Как реализовать запись юзеров онлайн и общий объём шары хаба на изображение? Знаю только что для этого нужна библиотека luagd. ![]() |
|
|
![]()
Сообщение
#9
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Исправил. Залил.
|
|
|
![]()
Сообщение
#10
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 107 Регистрация: 23.11.2008 Из: Сергиев Посад Пользователь №: 1 178 Спасибо сказали: 9 раз ![]() |
Плиз плиз сделайте что бы он количество просмотров в файл сохранял.
|
|
|
![]()
Сообщение
#11
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Минутное дело)) Перезалил.
|
|
|
![]()
Сообщение
#12
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 107 Регистрация: 23.11.2008 Из: Сергиев Посад Пользователь №: 1 178 Спасибо сказали: 9 раз ![]() |
|
|
|
![]()
Сообщение
#13
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Пардон.
Вот так нужно: Код SaveTable(sFile, tCounts, "tCounts") Второй параметр в кавычки ![]() Перезалил |
|
|
![]()
Сообщение
#14
|
|
![]() Site Reliability Engineer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз ![]() |
Есть код
Код function OnStartup() sFile = Core.GetPtokaXPath().."scripts/HelpFiles/help.txt" if loadfile(sFile) then dofile(sFile) end function ChatArrival(user, sData) local cmd = sData:match"%b<>%s+(%S+).*|" if cmd == "!help" or cmd == "!хелп" or cmd == "+help" then Core.SendToUser(user, " ") return true end end end Как правильно сделать что бы функция Core.SendToUser(user, " ") выводила содержимое файла help.txt ? |
|
|
![]()
Сообщение
#15
|
|
![]() Developer ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза ![]() |
Код sBot = SetMan.GetString(21)
sFile = Core.GetPtokaXPath().."scripts/HelpFiles/help.txt" function ChatArrival(tUser, sData) sData = string.sub(sData,1,-2) local sCmd = sData:match"%b<>%s+[!+*](%S+)" if sCmd == "help" or sCmd == "хелп" then Core.SendToUser(tUser, "<"..sBot.."> "..LoadText(sFile)) return true end end function LoadText(filename) local message = "" local f = io.open( filename, "r" ) if f then message=f:read("*all") message=string.gsub(message,"|","") f:close() end return message end |
|
|
![]()
Сообщение
#16
|
|
![]() Site Reliability Engineer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз ![]() |
Что не так тут не пойму?
Код local sCmd = sData:match"%b<>%s+[!+](%S+)" if sCmd == "команда" or cmd == "команда2" or cmd == "команда3" then Как правильней будет сделать? |
|
|
![]()
Сообщение
#17
|
|
![]() Developer ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза ![]() |
Код if sCmd == "команда" or sCmd == "команда2" or sCmd == "команда3" then
|
|
|
![]()
Сообщение
#18
|
|
![]() Site Reliability Engineer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз ![]() |
Хм, всё равно не работает
Код local sCmd = sData:match"%b<>%s+[!+](%S+)"
if sCmd == "команда" or sCmd == "команда2" or sCmd == "команда3" then |
|
|
![]()
Сообщение
#19
|
|
![]() Developer ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза ![]() |
Может дело в латинских символах?
Код if sCmd == "command" or sCmd == "command2" or sCmd == "command3" then
|
|
|
![]()
Сообщение
#20
|
|
![]() Site Reliability Engineer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз ![]() |
да нет, вообще что то только так идёт.
Код local sCmd = sData:match"%b<>%s+(%S+).*|" -- if cmd == "!command" or cmd == "!команда" or cmd == "!command2" then Не могу понять почему... И ошибок в птоке нет. |
|
|
![]() ![]() |
Похожие темы
![]() |
Сейчас: 17.2.2025, 8:50 |