|
Здравствуйте, гость ( Вход | Регистрация )
|
![]()
Сообщение
#1
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 157 Регистрация: 19.1.2010 Из: Волгоград Пользователь №: 5 756 Спасибо сказали: 77 раз ![]() |
Интересные факты Название: facts_api2 Версия API: API2 Автор: dimajak Цитаты с сайта webdiscover.ru Сваял, как говорится "на коленке". Это не реклама сайта, просто наткнулся на страничку, где выводились факты, через пару дней наткнулся на описание библиотеки Luasocket. Решил их подружить. ![]() Для работы скрипта необходимы библиотеки Luasocket. Доступные настройки: sBot - имя бота (Факты) TmrTime - периодичность вывода фактов, в минутах (15) Скачать: ![]() Еще одна версия скрипта с поддержкой MySQL. Теперь факты сохраняются в БД и повторы не выводятся. Дается 10 попыток запроса для неповторяющегося факта. Для работы скрипта необходимы библиотеки DLL библиотека для работы с базой данных MySQL. Скачать: ![]() |
|
|
![]() |
![]()
Сообщение
#2
|
|
![]() Абсолютный новичок Группа: Пользователи Сообщений: 4 Регистрация: 4.12.2008 Из: Москва Пользователь №: 1 306 Спасибо сказали: 0 раз ![]() |
и как им пользаватся? не менюшки не команд...ошибки тоже нет...или он автоматически каждые 15 минут сам выдаёт?
|
|
|
![]()
Сообщение
#3
|
|
![]() Абсолютный новичок Группа: Пользователи Сообщений: 6 Регистрация: 22.12.2009 Пользователь №: 5 440 Спасибо сказали: 1 раз ![]() |
|
|
|
![]()
Сообщение
#4
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз ![]() |
Да, работает каждые 15 мин и время можно изменять...
Думаю, что лишняя информация пользователям не помешает (особенно, когда нет активного общения), да и отключить (при необходимости) всегда можно! |
|
|
![]()
Сообщение
#5
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 157 Регистрация: 19.1.2010 Из: Волгоград Пользователь №: 5 756 Спасибо сказали: 77 раз ![]() |
Решил прикрутить БД в MySQL чтобы факты "впустую" не выводились.
![]() Теперь факты сохраняются в БД, при этом повторы не сохраняются в БД, и не выводятся в чат. Дается 10 попыток для вывода неповторяющегося факта. Добавились настройки для работы с MySQL. БД с фактами можно будет использовать, например, на своем сайте. Т.е. скрипт будет накапливать факты в БД, одновременно информируя посетителей хаба, а на сайте вы сможете выводить случайный факт из этой БД, развлекая уже посетителей сайта. ПыСы. В моей БД уже более 400 фактов. |
|
|
![]()
Сообщение
#6
|
|
![]() Глубина-глубина, я не твой… Отпусти меня, глубина… ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 199 Регистрация: 13.10.2010 Из: Михайловск Пользователь №: 7 882 Спасибо сказали: 23 раза ![]() |
Спасибо за хороший скрипт, все работает ошибок не выводит сообщения не повторяются, только вот последнюю букву в предложении съедает постоянно
![]() |
|
|
![]()
Сообщение
#7
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 157 Регистрация: 19.1.2010 Из: Волгоград Пользователь №: 5 756 Спасибо сказали: 77 раз ![]() |
Спасибо за хороший скрипт, все работает ошибок не выводит сообщения не повторяются, только вот последнюю букву в предложении съедает постоянно ![]() Это я символ точки "проглатывал", наверное ![]() Код fd = string.sub(fd,1,string.len(fd)-2) 2 заменить на 1.
|
|
|
![]()
Сообщение
#8
|
|
![]() Глубина-глубина, я не твой… Отпусти меня, глубина… ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 199 Регистрация: 13.10.2010 Из: Михайловск Пользователь №: 7 882 Спасибо сказали: 23 раза ![]() |
|
|
|
![]()
Сообщение
#9
|
|
![]() Глубина-глубина, я не твой… Отпусти меня, глубина… ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 199 Регистрация: 13.10.2010 Из: Михайловск Пользователь №: 7 882 Спасибо сказали: 23 раза ![]() |
перестало выводить факты, никаких ошибок нету... вариант с мускулом.
|
|
|
![]()
Сообщение
#10
|
|
![]() KEEP CLEAR AT ALL TIMES ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза ![]() |
Часть кода из скрипта facts_mysql_api2.lua:
Код ... if flag then Core.SendToAll("<"..sBot.."> "..fd) break end ... Изначально зачем здесь оператор break, какая роль ему отведена? Проверил – и без него тоже работает. |
|
|
![]()
Сообщение
#11
|
|
![]() Белый Волк ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз ![]() |
MIKHAIL,
А вы проследите работу цикла, начинающегося с Код while schet < 10 and not flag do и поймёте.Бонус: команда break применяется для останова и выхода из цикла до выполнения изначальных условий (они в той строке, которую я привёл выше). Хотя я подозреваю, что можно было не and not flag do, а or not flag do и обойтись без break (цикл автоматом завершился бы после первого же появления значения true для булевой переменной flag, отправив в чат сообщение и дойдя до end уровня while). Это моё imho, возможно, у автора есть иное мнение.. ![]() |
|
|
![]()
Сообщение
#12
|
|
![]() KEEP CLEAR AT ALL TIMES ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза ![]() |
Ksan, не сообразил я, что break применяется для останова и выхода из цикла.
Проследил, и, кстати, при конструкции and not flag do наличие break не обязательно, а вот при or not flag do – обязательно. |
|
|
![]()
Сообщение
#13
|
|
![]() Абсолютный новичок Группа: Пользователи Сообщений: 2 Регистрация: 16.2.2014 Пользователь №: 12 320 Спасибо сказали: 0 раз ![]() |
ребята на PtokaX 0.5.0.2 на x64 выводит вместо текста бра-кодабру
|
|
|
![]()
Сообщение
#14
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз ![]() |
Devil_Blood
Да, есть такое дело! Надо править кодировку в скрипте видимо, чтобы шёл русский язык. Видно изменение на сайте произошло у них! Просить надо знающих людей теперь! |
|
|
![]()
Сообщение
#15
|
|
![]() Белый Волк ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз ![]() |
Marc, Devil_Blood,
Об этом написано уже тысячу раз, и в сотне скриптов решение применено! Просто меняете кодировку результата на читабельную. Применительно к этому скрипту - перед отправкой в чат полученный результат нужно преобразовать в ANSI-кодировку: Код if fd and sz then fd = Utf8ToAnsi(fd) -- это новая добавленная строка Core.SendToAll("<"..sBot.."> "..fd) end А вот само преобразование будет происходить ниже в другой функции (то, что в спойлере, нужно добавить к существующему скрипту ниже всех строк): Переконвертирование с UTF-8 на ANSI Код ---- Функция преобразования UTF-8 в ansi (by Setuper) local utf8_decode = { [128]={[147]='\150',[148]='\151',[152]='\145',[153]='\146',[154]='\130',[156]='\147',[157]='\148',[158]='\132',[160]='\134',[161]='\135',[162]='\149',[166]='\133',[176]='\137',[185]='\139',[186]='\155'}, [130]={[172]='\136'}, [132]={[150]='\185',[162]='\153'}, [194]={[152]='\152',[160]='\160',[164]='\164',[166]='\166',[167]='\167',[169]='\169',[171]='\171',[172]='\172',[173]='\173',[174]='\174',[176]='\176',[177]='\177',[181]='\181',[182]='\182',[183]='\183',[187]='\187'}, [208]={[129]='\168',[130]='\128',[131]='\129',[132]='\170',[133]='\189',[134]='\178',[135]='\175',[136]='\163',[137]='\138',[138]='\140',[139]='\142',[140]='\141',[143]='\143',[144]='\192',[145]='\193',[146]='\194',[147]='\195',[148]='\196', [149]='\197',[150]='\198',[151]='\199',[152]='\200',[153]='\201',[154]='\202',[155]='\203',[156]='\204',[157]='\205',[158]='\206',[159]='\207',[160]='\208',[161]='\209',[162]='\210',[163]='\211',[164]='\212',[165]='\213',[166]='\214', [167]='\215',[168]='\216',[169]='\217',[170]='\218',[171]='\219',[172]='\220',[173]='\221',[174]='\222',[175]='\223',[176]='\224',[177]='\225',[178]='\226',[179]='\227',[180]='\228',[181]='\229',[182]='\230',[183]='\231',[184]='\232', [185]='\233',[186]='\234',[187]='\235',[188]='\236',[189]='\237',[190]='\238',[191]='\239'}, [209]={[128]='\240',[129]='\241',[130]='\242',[131]='\243',[132]='\244',[133]='\245',[134]='\246',[135]='\247',[136]='\248',[137]='\249',[138]='\250',[139]='\251',[140]='\252',[141]='\253',[142]='\254',[143]='\255',[144]='\161',[145]='\184', [146]='\144',[147]='\131',[148]='\186',[149]='\190',[150]='\179',[151]='\191',[152]='\188',[153]='\154',[154]='\156',[155]='\158',[156]='\157',[158]='\162',[159]='\159'},[210]={[144]='\165',[145]='\180'} } local nmdc = { [36] = '$', [124] = '|' } function Utf8ToAnsi(s) local a, j, r, b = 0, 0, "" for i = 1, s and s:len() or 0 do b = s:byte(i) if b < 128 then if nmdc[b] then r = r..nmdc[b] else r = r..string.char(b) end elseif a == 2 then a, j = a - 1, b ----***** elseif a == 1 then elseif a == 1 and utf8_decode[j] and utf8_decode[j][b] then -- local z = string.char(b) -- Core.SendToNick(sAdmin, z.." "..a.." "..r.." "..j.." "..b) a, r = a - 1, r..utf8_decode[j][b] elseif b == 226 then a = 2 elseif b == 194 or b == 208 or b == 209 or b == 210 then j, a = b, 1 else r = r..'_' end end return r end ---- конец функции преобразования ------ function OnError(s) Core.SendToOpChat(s) end В конце я добавил вывод в Опчат ошибок скрипта при падении в ходе тестирвания или работы. Это нужно приделать в любой ваш скрипт в Птоке. Хотя я бы скрипт написал несколько иначе. ![]() |
|
|
![]()
Сообщение
#16
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз ![]() |
Ksan!
Спасибо человеку, который так быстро откликнулся на эту проблему и не пожалел своего летнего времени на разъяснение проблемы! Я просто сказал Devil_Blood, что сменилась кодировка в скрипте и что нужно править её. Внёс изменения в скрипт по твоим двум добавлениям и сейчас всё работает на отлично, как и было раньше. |
|
|
![]()
Сообщение
#17
|
|
![]() Участник ![]() ![]() Группа: Пользователи Сообщений: 38 Регистрация: 24.11.2008 Из: Москва Пользователь №: 1 186 Спасибо сказали: 5 раз ![]() |
стоит подобный скрипт вывода фактов с
но последние 2-3 дня стал выдавать хрень типа Код [Ср-20/12/17 06:05:51] <Факты> <!DOCTYPE html><html><title></title><script>var y=window</script><script>var x={o:'/PMSKfZ/facts/rand.php',c:1},z=1;function rsu(h){return(x.o).substr(0,x.c)+(x.o).substr(x.c+h)}y.location.assign(rsu(z))</script></html> [Ср-20/12/17 09:05:51] <Факты> <!DOCTYPE html><html><title></title><script>var y=window</script><script>var x={o:'and.php',t:'/MgmkZ/',h:'facts/r'};function rsu(){return x.t+x.h+x.o}y.location.assign(rsu())</script></html> причем это только на линуксе, в виндовс версии или из браузера выдает нормально! Кто нибудь сталкивался с подобным? P.S. что под socket что под curl UPDATE 23.12.17 примерно в 12 дня по МСК глюк исчез... видимо вернули обратно. |
|
|
![]() ![]() |
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
![]() |
От: Интересные ДС клиенты От темы с ID: 4699 |
0 | HallCat | 4 624 | 27.2.2011, 5:21 Посл. сообщение: HallCat |
![]() |
![]() |
1 | @_JuNiOr_@ | 6 540 | 25.2.2011, 13:50 Посл. сообщение: Delia |
![]() |
Сейчас: 17.2.2025, 8:41 |