Скачивание Странички Из Интернета И Вывод Информации В Чате, Api1 желательно |
Здравствуйте, гость ( Вход | Регистрация )
Скачивание Странички Из Интернета И Вывод Информации В Чате, Api1 желательно |
12.3.2009, 17:42
Сообщение
#61
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Я понимаю, что он так выглядит. Я хочу понять какой символы с каким lua-кодом не могут выводиться в чат, для того чтобы их убрать. Что выводит код моего предыдущего поста?
|
|
|
12.3.2009, 17:42
Сообщение
#62
|
|
Активный участник Группа: Пользователи Сообщений: 80 Регистрация: 25.2.2009 Пользователь №: 2 359 Спасибо сказали: 6 раз |
вот что выдало на ваш последний скрипт
Цитата [00:42:07 | 172.16.153.15] <IIPu3PAK> !send
[00:42:08] Length of data = 152 [00:42:08] 255, 255, 255, 255, 73, 38, 76, 101, 102, 116, 32, 52, 32, 68, 101, 97, 100, 32, 115, 101, 114, 118, 101, 114, 32, 40, 118, 101, 114, 115, 117, 115, 32, 98, 121, 32, 73, 73, 80, 117, 51, 80, 65, 75, 32, 97, 110, 100, 32, 74, 111, 104, 110, 55, 49, 48, 41, 0, 108, 52, 100, 95, 118, 115, 95, 104, 111, 115, 112, 105, 116, 97, 108, 48, 52, 95, 105, 110, 116, 101, 114, 105, 111, 114, 0, 108, 101, 102, 116, 52, 100, 101, 97, 100, 0, 76, 52, 68, 32, 45, 32, 86, 101, 114, 115, 117, 115, 32, 45, 32, 78, 111, 114, 109, 97, 108, 0, 1, 0, 0, 8, 0, 100, 119, 0, 0, 49, 46, 48, 46, 48, 46, 57, 0, 160, 135, 105, 101, 109, 112, 116, 121, 44, 97, 108, 108, 116, 97, 108, 107, 44, 0, [00:42:08] яяяяI&Left 4 Dead server (versus by IIPu3PAK and John710) |
|
|
12.3.2009, 17:43
Сообщение
#63
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Отлично, ща напишу функцию замены символов)))
|
|
|
12.3.2009, 17:49
Сообщение
#64
|
|
Активный участник Группа: Пользователи Сообщений: 80 Регистрация: 25.2.2009 Пользователь №: 2 359 Спасибо сказали: 6 раз |
и еще некоторые коды символов котырые неможет выводить луа мне надо преобразовывать в специальные другие коды которые она сможет показать...надеюсь вы мне обьясните как
|
|
|
12.3.2009, 17:51
Сообщение
#65
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Попробуй:
Код function CorrectData(sData, sReplace) local sStr, iSmb = '' for i = 1, sData:len() do iSmb = sData:byte(i) if iSmb > 31 then sStr = sStr..string.char(iSmb) else sStr = sStr..sReplace end end return sStr end function OnTimer() local sData, sError = ReceiveData() if not sError and sData then -- мы получили какие-то данные sData и тут уже их обрабатываем StopTimer() SendToAll(CorrectData(sData, '*')) end end Невыводимые символы заменяются на * |
|
|
12.3.2009, 18:00
Сообщение
#66
|
|
Активный участник Группа: Пользователи Сообщений: 80 Регистрация: 25.2.2009 Пользователь №: 2 359 Спасибо сказали: 6 раз |
Теперь вообще ничего не выводит
|
|
|
12.3.2009, 18:01
Сообщение
#67
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Исправил
|
|
|
12.3.2009, 18:03
Сообщение
#68
|
|
Активный участник Группа: Пользователи Сообщений: 80 Регистрация: 25.2.2009 Пользователь №: 2 359 Спасибо сказали: 6 раз |
|
|
|
12.3.2009, 18:10
Сообщение
#69
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
5 сек. Ща исправлю.
Вот так должно работать Код function CorrectData(sData, sReplace)
local sStr, iSmb = '' for i = 1, sData:len() do iSmb = sData:byte(i) if iSmb > 31 then sStr = sStr..string.char(iSmb) else sStr = sStr..sReplace end end return sStr end |
|
|
12.3.2009, 18:13
Сообщение
#70
|
|
Активный участник Группа: Пользователи Сообщений: 80 Регистрация: 25.2.2009 Пользователь №: 2 359 Спасибо сказали: 6 раз |
зы спасибо с последним скриптом вывел то что надо [01:13:45 | 172.16.153.15] <IIPu3PAK> !send
[01:13:46] яяяяI&Left 4 Dead server (co-op)*l4d_deadcity01_riverside9*left4dead*L4D - Co-op - Expert******dw**1.0.0.9* ‡iempty,alltalk,* еще в хекс коде есть такая строчка "00 01 00 00 08 00 " ..... это количество игроков на сервере т.е. играет 1 слотов на карте 8 (эти значения могут меняться но всегда находятся между 00 ....как бы их поймать? тк они тоже невыводимые) это те самые куча звездочек которые тут Expert******dw и последнее если сервер вырублен то из-за скрипта жестоко лагает птоха и еще количество символов 00 в ответе всегда одно и тоже во сам исправил примерно так Код function CorrectData(sData, sReplace) local sStr, iSmb = '' for i = 1, sData:len() do iSmb = sData:byte(i) if iSmb > 31 then sStr = sStr..string.char(iSmb) elseif iSmb < 15 and iSmb > 0 then sStr = sStr..iSmb else sStr = sStr..sReplace end end return sStr end Код [01:41:01] яяяяI&Left 4 Dead server (co-op)*l4d_deadcity01_riverside9*left4dead*L4D - Co-op - Expert*1**4*dw**1.0.0.9* ‡iempty,alltalk,* но это неидеальный вариант :( |
|
|
12.3.2009, 18:45
Сообщение
#71
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Попробуй вот так, но я не уверен:
Код function CorrectData(sData, sReplace)
local iN, sStr, iSmb = 0, '' for i = 1, sData:len() do if iN == 0 then iSmb = sData:byte(i) if iSmb > 31 then sStr = sStr..string.char(iSmb) else local sP = GetPlayers(i, sData) if sP then sStr, iN = sStr..sP, 4 else sStr = sStr..sReplace end end else iN = iN - 1 end end return sStr end function GetPlayers(iNum, sData) local t, sStr, iSmb = {" Players: ", false, " Slots: ", false}, '' iSmb = sData:byte(iNum) if iSmb == 0 then for i,w in ipairs(t) do iSmb = sData:byte(iNum + i) if w then if iSmb == 0 then return end sStr = sStr..w..iSmb else if iSmb ~= 0 then return end end end return sStr end end |
|
|
12.3.2009, 18:50
Сообщение
#72
|
|
Активный участник Группа: Пользователи Сообщений: 80 Регистрация: 25.2.2009 Пользователь №: 2 359 Спасибо сказали: 6 раз |
неа так непашет...ничего невыдет в итоге
|
|
|
12.3.2009, 19:05
Сообщение
#73
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Кое что исправил. Попробуй.
Должно пахать. Я протестировал работоспособность. |
|
|
12.3.2009, 19:20
Сообщение
#74
|
|
Активный участник Группа: Пользователи Сообщений: 80 Регистрация: 25.2.2009 Пользователь №: 2 359 Спасибо сказали: 6 раз |
ничего не выводит
|
|
|
12.3.2009, 19:27
Сообщение
#75
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
А ошибки какие-нибудь скрипт выдаёт?
Почему у меня выводит, а у тебя не выводит? |
|
|
12.3.2009, 20:16
Сообщение
#76
|
|
Активный участник Группа: Пользователи Сообщений: 80 Регистрация: 25.2.2009 Пользователь №: 2 359 Спасибо сказали: 6 раз |
вообще никаких ошибок просто ничего непоказывает и все и лагает жутко птоха, как будто неподключилась к серверу(серв запущен)
|
|
|
12.3.2009, 20:26
Сообщение
#77
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Вот полный код. Не знаю. Чем смог, тем помог.
CODE local sDatagram = " FF FF FF FF 54 53 6F 75 72 63 65 20 45 6E 67 69 6E 65 20 51 75 65 72 79 00 " -- отсылаемые данные
local sServerIp = "127.0.0.1" -- айпи local sServerPort = 1209 -- порт local iTimeOut = 1/100 -- таймаут соединения на получение local iBuferSize = nil -- размер буфера (nil - стандартный) ---------------------------------------------------------------------------- -- loads the socket module local socket = require("socket") local myudp = socket.udp() myudp:settimeout(iTimeOut) myudp:setpeername(sServerIp, sServerPort) -- уже точно не помню какие функции в старом апи, так что поправьте если накосячил! function Main() SetTimer(1000) end function GetPlayers(iNum, sData) local t, sStr, iSmb = {" Players: ", false, " Slots: ", false}, '' iSmb = sData:byte(iNum) if iSmb == 0 then for i,w in ipairs(t) do iSmb = sData:byte(iNum + i) if w then if iSmb == 0 then return end sStr = sStr..w..iSmb else if iSmb ~= 0 then return end end end return sStr end end function CorrectData(sData, sReplace) local iN, sStr, iSmb = 0, '' for i = 1, sData:len() do if iN == 0 then iSmb = sData:byte(i) if iSmb > 31 then sStr = sStr..string.char(iSmb) else local sP = GetPlayers(i, sData) if sP then sStr, iN = sStr..sP, 4 else sStr = sStr..sReplace end end else iN = iN - 1 end end return sStr end function OnTimer() local sData, sError = ReceiveData() if not sError and sData then -- мы получили какие-то данные sData и тут уже их обрабатываем StopTimer() SendToAll(CorrectData(sData, '*')) end end function ChatArrival(tUser, sData) local sCmd = sData:match"%b<> !send" if sCmd then StartTimer() local _, sError = myudp:send(sDatagram, sServerIp, sServerPort) if sError then -- ошибка! end end end function OnExit() myudp:close() end OnError = OnExit function ReceiveData() local sData, sError = myudp:receive(iBuferSize) if sError then -- ошибка! return nil, sError end return sData end |
|
|
14.3.2009, 18:41
Сообщение
#78
|
|
Активный участник Группа: Пользователи Сообщений: 80 Регистрация: 25.2.2009 Пользователь №: 2 359 Спасибо сказали: 6 раз |
вот пока еще не идеальный скрипт мониторинга
Код local c = string.char local sDatagram = c(0xFF)..c(0xFF)..c(0xFF)..c(0xFF)..c(0x54)..c(0x53)..c(0x6F)..c(0x75).. c(0x72)..c(0x63)..c(0x65)..c(0x20)..c(0x45)..c(0x6E)..c(0x67)..c(0x69)..c(0x6E).. c(0x65)..c(0x20)..c(0x51)..c(0x75)..c(0x65)..c(0x72)..c(0x79)..c(0x00) --"0xFF..0xFF..0xFF..0xFF..0x54..0x53..0x6F..0x75..0x72..0x63..0x65..0x20..0x45..0x6E..0x67..0x69.. 0x6E..0x65..0x20..0x51..0x75..0x65..0x72..0--x9..0x00" -- отсылаемые данные local sServerIp = "192.168.23.15" -- айпи local sServerPort = "27015" -- порт local iTimeOut = 1 -- таймаут соединения на получение local iBuferSize = nil -- размер буфера (nil - стандартный) BotName = "Курильщик" -- имя бота BotDesc = "Закуривай;)" -- описание бота BotEmail = "hub@mail.ru" -- email бота ---------------------------------------------------------------------------- -- loads the socket module local socket = require("socket") local myudp = socket.udp() myudp:settimeout(iTimeOut) myudp:setpeername(sServerIp, sServerPort) -- уже точно не помню какие функции в старом апи, так что поправьте если накосячил! function Main() SetTimer(1000) frmHub:RegBot(BotName, 1, BotDesc, BotEmail) end function CorrectData(sData, sReplace) local sStr, iSmb = '' for i = 1, sData:len() do iSmb = sData:byte(i) if iSmb > 243 and iSmb < 256 then sStr = sStr..sReplace elseif iSmb > 31 then sStr = sStr..string.char(iSmb) elseif iSmb < 1 then sStr = sStr..sReplace elseif iSmb >= 1 then sStr = sStr..iSmb end end return sStr end function ChatArrival(tUser, sData) local sCmd = sData:match"%b<> !л4д" if sCmd then StartTimer() local _, sError = myudp:send(sDatagram, sServerIp, sServerPort) if sError then -- ошибка! end end end function OnExit() myudp:close() end OnError = OnExit function ReceiveData() local sData, sError = myudp:receive(iBuferSize) if sError then -- ошибка! return nil, sError end return sData end function OnTimer() local sData, sError = ReceiveData() if not sError and sData then -- мы получили какие-то данные sData и тут уже их обрабатываем StopTimer() z=CorrectData(sData,'?') _,_,a,b,c,d,f= string.find(z,"????I7(.-)?(.-)?(.-)?(.-)?(.+)") f=string.sub(f, 3) _,_,f,r,t= string.find(f,"(%d*)(%d)(.+)") _,_,t= string.find(t,"(%d%p%d+%p%d+%p%d+)") SendToAll("Курильщик","Айпи адрес сервера--->192.168.23.15:27015") SendToAll("Курильщик","Название сервера--->"..a.."") SendToAll("Курильщик","Карта на сервере--->"..b.."") SendToAll("Курильщик","Тип и сложность игры--->"..d.."") if f==nil then SendToAll("Курильщик","Игроков на сервере--->"..f.."/"..r.."") else SendToAll("Курильщик","Игроков на сервере--->0/"..r.."") end SendToAll("Курильщик","Версия сервера--->"..t.."") end end как сделать в этом скрипте так чтобы отправлялась мессага юзеру а не всем.... З.Ы. как можно видеть из скрипта сообщения отправляются в функции онтаймер... а в этой функции нет tUser из chatarrival еще вопрос вот строчка в коде _,_,a,b,c,d,f= string.find(z,"????I7(.-)?(.-)?(.-)?(.-)?(.+)") если изменить ее на _,_,a,b,c,d,f= string.find(z,"????(.-)?(.-)?(.-)?(.-)?(.+)") то переменный a,b становятся nil , с очтальными все норм....почему так? |
|
|
16.3.2009, 12:41
Сообщение
#79
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Закрыто, дабы автор темы создал тему в готовых скриптах.
|
|
|
Похожие темы
|
Сейчас: 23.11.2024, 8:02 |