Texts |
Здравствуйте, гость ( Вход | Регистрация )
Texts |
9.3.2009, 7:29
Сообщение
#1
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Помгите разобраться с текстовыми файлами, которые содержатся в папке /texts. Вообщем я хочу сделать так, чтобы каждый текстовый файл выводился от определённого бота, и либо в main чат либо в PM. Вот мои наброски:
Код rulesbot = "RULES" rulesfile = "rules.txt" motdbot = "MOTD" motdfile = "motd.txt" rules = function(sNick, cmd, sData) local _,_,sData = string.find(Core.GetPtokaXPath().."texts/"..rulesfile.."") local _,_,cmd = string.find(sData, "%b<>%s+(%S*)") Core.SendPmToNick(sNick, "<"..rulesbot.."> "..sData) end motd = function(sNick, cmd, sData) local _,_,sData = string.find(Core.GetPtokaXPath().."texts/"..motdfile.."") local _,_,cmd = string.find(sData, "%b<>%s+(%S*)") Core.SendToNick(sNick, "<"..motdbot.."> "..sData) end не работает :( |
|
|
9.3.2009, 10:18
Сообщение
#2
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
|
|
|
9.3.2009, 10:21
Сообщение
#3
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
И с этой функцией пробывал, не получается :(
|
|
|
9.3.2009, 10:25
Сообщение
#4
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Ты понимаешь что ты пишешь? Все команды отлавливаются в функции ChatArrival
вот это чушь Код local _,_,sData = string.find(Core.GetPtokaXPath().."texts/"..rulesfile.."") и дальше ты вводишь переменную для нахождения команды а проверку не вводишь. в общем не понятно |
|
|
9.3.2009, 10:35
Сообщение
#5
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Код function ChatArrival(user, data)
data = string.sub(data,1,-2) --Удаляем из data символ окончания команды (|) local _,_,pre,cmd = string.find(data, "^%b<>%s+(%p)(%S+)") --Пытаемся найти в data префикс команды и саму команду --Догадайся сам, что писать дальше end |
|
|
9.3.2009, 10:36
Сообщение
#6
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
К сожелению я пробывал и с функцией ChatArrival, всё ранво не работает. Если эта строка неправильна
Код local _,_,sData = string.find(Core.GetPtokaXPath().."texts/"..rulesfile.."") то скажите, пожалуйста, как нужно сделать, и как сделать так, чтобы при вводе команды текст файла rules.txt например выводился в гл. чат, и как минимум с 2 префиксами ( + и ! ) команда работала |
|
|
9.3.2009, 10:48
Сообщение
#7
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
http://mydc.ru/ipb.html?s=&showtopic=1...ost&p=11209
а для чтения текстового файла нужна функция Код function loadtextfiles(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 |
|
|
9.3.2009, 10:49
Сообщение
#8
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Вот, получилось, но содержание файла rules.txt не выводится:
Код rulesbot = "RULES" rulesfile = Core.GetPtokaXPath().."texts/rules.txt" function ChatArrival(user, data) data = string.sub(data,1,-2) local _,_,pre,cmd = string.find(data, "^%b<>%s+(%p)(%S+)") if cmd == "rules" then Core.SendToUser(user, "<"..rulesbot.."> "..rulesfile) end return true end вместо этого в чат поступает следующие: Цитата [12:47:35] <RULES> D:/DELETA HUB/PtokaX_0.4.1.1/texts/rules.txt
|
|
|
9.3.2009, 10:55
Сообщение
#9
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Код return true end Поздравляю, ты сделал глобальную заглушку на чат ) Код if pre and (pre == "+" or pre == "!") then --Если префикс найден, и он такой как нам нужен, то...
if cmd == "rules" then --Если команда rules, то... --Здесь обработка команды rules return true elseif cmd == "motd" then --Ну а если motd, то... --Здесь обработка команды motd return true end end --Конец :) |
|
|
9.3.2009, 11:04
Сообщение
#10
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
насчёт ниже приведённого кода я знаю, в некоторых скриптах это видел. Я не могу понять, как сделать так, чтобы содержанием файла rules.txt выводилось юзеру. Вставлял код код, который написал выше Wariner, не работает.
Код rulesbot = "RULES"
rulesfile = "rules.txt" function loadtextfiles(filename) local message = "rules" local f = io.open( filename, "..rulesfile.." ) if f then message=f:read("*all") message=string.gsub(message,"|","") f:close() end return message end function ChatArrival(user, data) data = string.sub(data,1,-2) local _,_,pre,cmd = string.find(data, "^%b<>%s+(%p)(%S+)") if cmd == "rules" then Core.SendToUser(user, "<"..rulesbot.."> "..message) end return true end |
|
|
9.3.2009, 11:10
Сообщение
#11
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Мало вставить код, надо ещё вызвать функцию:
Код message = loadtextfiles(Core.GetPtokaXPath().."texts/"..rulesfile) PS. В функции чтения файла лучше ничего не меняй. |
|
|
9.3.2009, 11:12
Сообщение
#12
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Код rulesbot = "RULES" rulesfile = Core.GetPtokaXPath().."/text/rules.txt" function ChatArrival(tUser, sData) sData = string.sub(sData,1,-2) local _,_,cmd = string.find(sData, "%b<>%s+(%S+)") if cmd == "!rules" then Core.SendToUser(tUser, "<"..rulesbot.."> "..loadtextfiles(rulesfile)) return true end end function loadtextfiles(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 Если функция ретурнит(return) какую нибудь информацию то её надо получать по имени функции с параметрами! |
|
|
9.3.2009, 11:22
Сообщение
#13
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Не работает :(
Цитата texts.lua:15:bad argument #1 to 'open' (string expected, got nil)
|
|
|
9.3.2009, 11:27
Сообщение
#14
|
|
Освоившийся участник Группа: Пользователи Сообщений: 307 Регистрация: 11.7.2008 Пользователь №: 173 Спасибо сказали: 31 раз |
fix
Код Core.SendToUser(tUser, "<"..rulesbot.."> "..loadtextfiles(rulesfile))
|
|
|
9.3.2009, 12:23
Сообщение
#15
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Скрипт работает, но содержание файла rules.txt не выводится, в чат поступает пустое сообщение от бота
Спасибо, заработало! Есть ещё одна правда проблема. Команда !motd у меня на хабе теперь выводится в main чат, команда !rules должна выводиться в PM юзеру от бота с именем '<RULES>', вместо этого при наборе команды !rules высылается содержанием текст файла в PM юзеру, но от гл. бота хаба, а не от 'RULES'. Цитата bad argument count to 'SendPmToUser' (3 expected, got 2) Помогите исправить: Код if cmd == "!rules" then
Core.SendPmToUser(tUser, "<"..rulesbot.."> "..loadtextfiles(rulesfile)) return true end |
|
|
9.3.2009, 12:32
Сообщение
#16
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Код if cmd == "!rules" then
Core.SendPmToUser(tUser, rulesbot, loadtextfiles(rulesfile)) return true end |
|
|
9.3.2009, 12:44
Сообщение
#17
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
спасибо!
|
|
|
12.3.2009, 23:00
Сообщение
#18
|
|
Начинающий Группа: Пользователи Сообщений: 11 Регистрация: 12.10.2008 Пользователь №: 785 Спасибо сказали: 0 раз |
Кинь, что в итоге получилось, ато я запутался...
|
|
|
13.3.2009, 6:26
Сообщение
#19
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
|
|
|
13.3.2009, 17:07
Сообщение
#20
|
|
Начинающий Группа: Пользователи Сообщений: 11 Регистрация: 12.10.2008 Пользователь №: 785 Спасибо сказали: 0 раз |
За такие вещи вынужден поблагодарить)
|
|
|
|
Сейчас: 27.11.2024, 4:57 |