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

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

MyDC.ru _ Готовые скрипты для PtokaX _ Asciiartbot

Автор: Wariner 16.1.2009, 17:38

Название скрипта: AscIIArtBot
Версия скрипта: ?
Версия API: API 2
Автор: ?
Описание скрипта: по нажатию на менюшки показывает ASCII рисунки.

 AscIIArtBot.rar ( 12.32 килобайт ) : 480
 

Автор: Gangster-Toni 16.1.2009, 18:02

чота картинки не открываются а тока на пример +Rose выходит в чом проблема?

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

пути надо было прописать. файл перезалил

Автор: alexxx 18.1.2009, 12:28

как пути прописать?

Автор: Wariner 18.1.2009, 13:08

Юзайте поиск! 100 раз об этом уже говорили:

Код
sFile = Core.GetPtokaXPath().."scripts/папка/файл"


PS: в первом посте файл рабочий!

Автор: Gangster-Toni 19.1.2009, 20:16

Спасибо всё работает!

Автор: Spongebob 20.1.2009, 8:20

Спасибо большое за скрипт. Я переделал его под себя...сделал вместо изображениЙ, друзья хаба, правила, ссылки и т.д. Как сделать, что бы текст выводился в личку, а не в главныЙ чат ?

Автор: Wariner 20.1.2009, 12:50

В скрипте заменить строчку

Код
Core.SendToUser(tUser, "Сообщение")

на
Код
Core.SendPmToUser(tUser, "Ник бота", "Сообщение")

Автор: Spongebob 20.1.2009, 18:06

в этом скрипте нет такой строчки Core.SendToUser(tUser, "Сообщение") есть только Core.SendToAll(user.sNick.."\r\n"..contents.."\r\n|") и Core.SendPmToNick(user.sNick,Bot, lines.." |") ну и в смамом меню Core.SendToNick(user.sNick,"$UserCommand 1 3 "..tMenu.. какоЙ из них...помоги плиииииииииииииииииииииз))) ^_^

Автор: Setuper 20.1.2009, 18:43

функции Core.SendToUser и Core.SendToNick выполняют оно и тоже действие - отправляют данные пользователю.

Автор: Spongebob 21.1.2009, 7:21

и тем не менее, что на что надо менять? Я просто не очень разбираюсь в скриптах, поэтому помогите пожалуЙста( Ооооооооооооооооооооооооочень нужно)))) victory.gif

Автор: Setuper 21.1.2009, 14:24

Не понятно что именно ты хочешь. Чтобы сообщение отправлялось не в чат, а всем в приват?
Для этого надо вместо:

Код
Core.SendToAll(user.sNick.."\r\n"..contents.."\r\n|")
написать
Код
Core.SendPmToAll(Bot, user.sNick.."\r\n"..contents.."\r\n|")

Автор: Spongebob 21.1.2009, 15:49

Даааааааааааааааааааааааааааааа...спасибо большое)))) Очень давно хотел так сделать для 4 PtokaX victory.gif

Автор: D'aspid 22.1.2009, 20:57

Цитата
Чтобы сообщение отправлялось не в чат, а всем в приват?

А чтобы показывало только тому кто запросил?

Автор: Setuper 22.1.2009, 21:09

Ты тему просматриваешь?
http://mydc.ru/ipb.html?s=&showtopic=1151&view=findpost&p=8683

Автор: Wariner 22.1.2009, 21:12

Код
function showtext(user, file)
local contents ="\r\n\r\n"
    for line in io.lines(CDFolder.."/"..file..".txt") do
        contents = contents..line.."\r\n"
    end
        Core.SendPmToUser(user,Bot, contents)
end

Автор: D'aspid 22.1.2009, 22:25

Цитата(Wariner @ 22.1.2009, 21:12) *
Код
function showtext(user, file)
local contents ="\r\n\r\n"
    for line in io.lines(CDFolder.."/"..file..".txt") do
        contents = contents..line.."\r\n"
    end
        Core.SendPmToUser(user,Bot, contents)
end

ДА непосомтрел тему, спасибо.

Автор: MEXAHuK 4.2.2009, 22:16

в скрипте команда, например +lol открывает файл +lol.txt
я хочу переписать скрипт под себя и файлы будут идти без плюса в начала имени. как сделать так чтобы function ChatArrival(user,data) восприномал команнду без префикса?

Автор: Wariner 4.2.2009, 22:42

а ты пробовал тестить ничего не меняя? Помоему должно работать....

Автор: MEXAHuK 4.2.2009, 22:49

пробовал. если скачать и установить то всё работает.
но если +lol.txt сделать lol.txt то команда +lol просто вываливается в чат.
я использую этот скрипт в качестве основы для другого и мне этот плюс в начале имени файла очень мешает.

Автор: Wariner 4.2.2009, 23:17

ты меня не понял, я имел ввиду сделать файл lol.txt и использовать команду lol

дабы не обманывать проверил сам))) всё выше мной описанное работает)))

Автор: MEXAHuK 4.2.2009, 23:36

спасибо, работает.
но хотелось бы чтобы в строках меню префикс был.
а вот обработка команды была уже без префикса
вот что мне нужно

у меня стоит сканер команд. и мне как админу интересно то как активно пользуются командами

Автор: Wariner 4.2.2009, 23:41

Код
function ChatArrival(user,data)
    Core.GetUserAllData(user)
   data=string.sub(data,1,string.len(data)-1)
   if( string.sub(data, 1, 1) == "<" ) then
      s,e,cmd = string.find(data,"%b<>%s+(%S+)")
      cmd = string.sub(cmd, 2,string.len(cmd))
      if io.open(CDFolder.."/"..cmd..".txt",r) ~= nil then
         showtext(user, cmd)
         return true
      end
   end
end

Автор: MEXAHuK 5.2.2009, 7:32

спасибо! работает!
такой вопрос: этот скрипт сильно напрягает комп? когда им активно пользуется свыше 100 в 3минуты?

в догонку: если текстовые файлы обновляются то они всё равно будут идти на хаб?

Автор: Wariner 5.2.2009, 10:36

насчёт напрягает не знаю, а по поводу текстовых файлов скрипт считывает их в момент нажатия кнопки меню. Думаю понятно))

Автор: MEXAHuK 5.2.2009, 10:52

ясно. можно отвязать имена хабов от команд? чтобы команда была напрмер "команда1" а параметр ей передаваемый был уже "имя_файла"?
и как это будет с именами файлов написанных на кириллице?

Автор: Wariner 5.2.2009, 11:11

если ты хочешь чтоб команда и название файла были разными словами то нужно тогда делать таблицу

Код
tCmds = { -- команды без префиксов, файлы без расширений
    [команда1] = "имя_файла1",
    [команда2] = "имя_файла2",
}


Код
function ChatArrival(user,data)
    Core.GetUserAllData(user)
   data=string.sub(data,1,string.len(data)-1)
   if( string.sub(data, 1, 1) == "<" ) then
      s,e,cmd = string.find(data,"%b<>%s+(%S+)")
      cmd = string.sub(cmd, 2,string.len(cmd))
      if io.open(CDFolder.."/"..tCmds[cmd]..".txt",r) ~= nil then
         showtext(user, cmd)
         return true
      end
   end
end


с русским должно нормально работать

Автор: MEXAHuK 5.2.2009, 12:30

может всё таки есть возможность обойтись без таблицы? есть же готовое решение как в скрипте whisper.

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

можно сделать или так или под каждую команду писать кусок выше приведённого кода ChatArrival с точно прописанным файлом! Чем тебя таблица не устраивает? просто и удобно...

upd: если выложишь файл то посмотрю как там сделано!

Автор: MEXAHuK 7.2.2009, 11:35

ладно... в принципе так даже проще... команда - имя файла.

можно ли в скрипте реализовать такую фишку: максимальная длина строки?
то есть: он считывает файл и если после там содержится строка длиннее N символов то идёт перенос на новую.

и если можно то и фильтрацию регулярных выражений тоже. если в тексте нашлось вдруг такое значение: #REC то оно заменяется на например: ЗАПИСЬ
(это можно уже таблицей)) )

Автор: BeSeR 1.3.2009, 13:53

Мне понравился скрипт AscIIArtBot,а вы сможите написать этот скрипт под API1? big_smile1.gif

Автор: Setuper 1.3.2009, 15:57

http://mydc.ru/topic605.html

Автор: MEXAHuK 5.3.2009, 21:33

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

Код
function ChatArrival(user,data)
    Core.GetUserAllData(user)
   data=string.sub(data,1,string.len(data)-1)
   if( string.sub(data, 1, 1) == "<" ) then
      s,e,cmd = string.find(data,"%b<>%s+(%S+)")
      cmd = string.sub(cmd, 2,string.len(cmd))
      if io.open(CDFolder.."/"..cmd..".txt",r) ~= nil then
         showtext(user, cmd)
         return true
      end
   end
end

function showtext(user, file)
  local contents, f ="\r\n\r\n", io.open(CDFolder.."/"..file..".txt")
  if f then
    contents = contents..f:read('*a')
  end
  contents = ReplaceTags(contents)
  Core.SendPmToNick(user.sNick,Bot,contents)
end

Автор: Wariner 5.3.2009, 22:00

Код
   if( string.sub(data, 1, 1) == "<" ) then
      s,e,cmd = string.find(data,"%b<>%s+(%S+)")
      cmd = string.sub(cmd, 2,string.len(cmd))
      local f = io.open(CDFolder.."/"..cmd..".txt",r)
      if f then
         showtext(user, cmd)
         f:close()
         return true
      end
   end
end

Автор: MEXAHuK 6.3.2009, 5:09

спасибо за то что показал как освобождать файлы!)))

upd
блин! код вставить я вставил а не проверил... изменённая функция просто выкидывает команду в чат. и даже в ус не дует что есть файл
и ещё: я кстановил что после использования файла его нельзя только переименовать и удалить. редактировать как не странно можно

Автор: Wariner 6.3.2009, 17:38

ошибки в студию

Автор: MEXAHuK 6.3.2009, 17:43

ошибок нет))) просто твоё исправление вываливает команду в чат и всё)

Автор: Wariner 6.3.2009, 18:03

не понятно что у тебя не пашет!
Проверь если у тебя в этой строчке

Код
cmd = string.sub(cmd, 2,string.len(cmd))

стоит двойка то имена файлов должны быть без префиксов, а если единица то с!

Автор: MEXAHuK 6.3.2009, 21:14

у меня двойка стоит. имена файлов без префиксов
f:close() по идее должен делать файл обратно перезаписываемым и редактируемым.
а как сейчас: скрипт делает недоступным только тот файл к которому было последнее обращение.

Код
function ChatArrival(user,data)
    Core.GetUserAllData(user)
   data=string.sub(data,1,string.len(data)-1)
   if( string.sub(data, 1, 1) == "<" ) then
      s,e,cmd = string.find(data,"%b<>%s+(%S+)")
      cmd = string.sub(cmd, 2,string.len(cmd))
      local f = io.open(CDFolder.."/"..cmd..".txt",r)
      if f then
         showtext(user, cmd)
         f:close()
         return true
      end
   end
end

Автор: Wariner 6.3.2009, 21:15

ну так скрипт у тебя работает или нет?

Автор: MEXAHuK 6.3.2009, 21:32

скрипт работает. как часы. это единственный косяк. и мне он здорово мешает

Автор: Sten 28.3.2009, 16:07

Что-то я ваще не понял как зделать чтобы бот отправлял рисунки в личку перечисленная вами информация не помогла менял всё тоже самое?

Автор: Wariner 28.3.2009, 16:18

Цитата(Wariner @ 20.1.2009, 12:50) *
В скрипте заменить строчку
Код
Core.SendToUser(tUser, "Сообщение")

на
Код
Core.SendPmToUser(tUser, "Ник бота", "Сообщение")

Автор: Sten 29.3.2009, 10:14

Я уже пробовал непомогает скрипт работает но меню нету!

Автор: Wariner 29.3.2009, 10:27

надо иисправить в одном месте где идёт вывод команд! а в функции UserConnected ничего трогать не надо!

Автор: Sten 29.3.2009, 10:32

А вот ещё проблемка неподскажите как её решить:
Как зделать чтобы этот бот отправлял информацию только одному юзеру который её запросит
ато такая проблема например я запрашиваю информацию и всем юзерам приходит информация которую я хотел посмотреть?