Автор: F I L I N 9.6.2009, 2:38
Название: AscIIArtBot 2
Версия API: 2
Описание: Скрипт показа ASCII рисунков в чат!
Автор: Uncle_Dif 24.6.2009, 21:51
Цитата(F I L I N @ 9.6.2009, 2:38)
Название: AscIIArtBot 2
Версия API: 2
Описание: Заменены прежние "символьные рисунки" на более новые...
Стесняюсь спросить, про что бот?
Автор: Wariner 24.6.2009, 21:56
1) если интересуешься скачиваешь и ставишь
2) если по каким причинам не можешь скачать, набирай в поиске AscIIArtBot
Автор: Wariner 9.2.2010, 21:03
Надо заменить
Код
Core.SendToAll(user.sNick.."\r\n"..contents.."\r\n|")
на
Код
Core.SendToUser(user, "\r\n"..contents.."\r\n|")
Автор: Jaska 9.2.2010, 22:35
Перебрал скрипт, теперь файлы загружаются в таблицу при запуске скрипта и обращение идет к таблице а не к файлам. Добавил возможность отправлять ASCII картинки. База картинок остается старой. Для работы требуется http://mydc.ru/topic1970.html
ASCII.lua ( 2.28 килобайт )
: 21
p.s есть идея по созданию базы картинок, скрипт будет по графику стучаться на сервер и забирать оттуда свежие картинки и сохранять на жестком хаба. если будут желающие - сделаю, но для этого нужно набирать базу картинок
Автор: Wariner 9.2.2010, 23:04
а смысл вот этого
Код
Core.GetPtokaXPath():gsub("\\","/")
?
вроде Core.GetPtokaXPath()и так возвращает пути с одинарным /
и какой смысл в этом усовершенствовании? я не совсем понял?
upd: и ещё какой смысл вносить настройки в таблицу? это оптимизация или просто так удобно?
Автор: Jaska 9.2.2010, 23:15
1) Core.GetPtokaXPath():gsub("//","\") осталась привычка с 0.4.0.0 вроде, не помню точно. Нужно вот для http://mydc.ru/index.html?showtopic=539&view=findpost&p=4342 (думаю и сам знаешь)
2) Хочется верить что второе, но для меня удобней все в одной таблице. Насчет оптимизации это вопрос к Setuper'у :-)
Автор: Wariner 9.2.2010, 23:58
Код
:gsub("//","\")
можно убрать))))
Илюх, если увидишь это сообщение прокомментирую оптимизацию. есть она или нет?
Автор: Setuper 10.2.2010, 15:30
Поскольку таблица tSettings не передаётся в качестве аргументов какой-либо функции, то затрат на копирование при передачи аргументов в стек вызова нету, поэтому в данном случае без разницы как хранить настройки в таблице или без.
Для разъяснения приведу 2 фрагмента, которые делают одно и тоже:
Код
function F(s1)
return s1.." world"
end
local s = "hello"
Core.SendToAll(s)
s = F(s) -- тут 2 копирования. Сначала создаётся параметр s1 функции F, и в него копируется содержимое переменной s,
-- потом, после завершения работы функции, грубо говоря, параметр s1 копируется опять в s.
Core.SendToAll(s)
Код
function F(t1)
t1[1] = t1[1].." world"
end
local t = {"hello"}
Core.SendToAll(t[1])
F(t) -- тут нет копирования. Таблица t передаётся в функцию по ссылке,
-- а не по значению, поэтому t и t1 - это одна и та же таблица в памяти.
Core.SendToAll(t[1])
Первый код - передача параметра функции по значению (создание каждый раз при вызове функции нового параметра и копирование данных в этот параметр).
Второй код - передача параметра функции по ссылке (не создаётся новый параметр, а идёт работа с памятью уже существующего параметра, поэтому нет создания новой переменной и нет копирования).
Строка - это массив букв, поэтому нужно тщательнее подходить к вопросам копирования именно строк, дабы не копировать по нескольку раз большое количество символов.
Заметьте, что оба фрагмента делают одно и тоже, но второй это делает значительно оптимальнее.