Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
Здравствуйте, гость ( Вход | Регистрация )
Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
4.8.2009, 15:04
Сообщение
#561
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
да и текстовые файлы и скрипты перезагружал
Функция loadfile считывает из файла (или из потока) lua код ! В данном же случае нам нужно считывать сообщение, а не lua код! Поэтому код будет выглядеть так: Код function SupportsArrival(tUser) local h = io.open(Core.GetPtokaXPath().."texts/название_файла.txt") if h then Core.SendToUser(tUser, h:read()) Core.Disconnect(tUser) h:flush() h:close() end end это работает а можно чтобы текстовый файл был на несколько строк |
|
|
4.8.2009, 15:30
Сообщение
#562
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Можно:
Код Core.SendToUser(tUser, h:read"*a")
|
|
|
4.8.2009, 15:39
Сообщение
#563
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
всё работает спасибо большое а можете дать сслыку на раководство которое очень сильно может помочь при написании скриптов только на русском если такое существует я англ не знаю
|
|
|
4.8.2009, 16:13
Сообщение
#564
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
|
|
|
5.8.2009, 12:51
Сообщение
#565
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 2 Регистрация: 9.7.2009 Пользователь №: 3 836 Спасибо сказали: 0 раз |
Как можно организовать доступ только с определенного диапазона IP адресов на хаб?
|
|
|
5.8.2009, 14:43
Сообщение
#566
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Код local tRanks = {
{"10.0.0.0", "10.255.255.255"}, {"192.168.0.0", "192.168.255.255"} } function Ip2Num(sIP) local a, b, c, d = sIP:match"^(%d+)%.(%d+)%.(%d+)%.(%d+)$" return a * 16777216 + b * 65536 + c * 256 + d end function OnStartup() for k, v in ipairs(tRanks) do tRanks[k][1], tRanks[k][2] = Ip2Num(v[1]), Ip2Num(v[2]) end end function UserConnected(tUser) local iIP = Ip2Num(tUser.sIP) for _, v in ipairs(tRanks) do if iIP > v[1] and iIP < v[2] then return end end Core.Disconnect(tUser) end RegConnected, OpConnected = UserConnected, UserConnected |
|
|
5.8.2009, 22:19
Сообщение
#567
|
|
Продвинутый участник Группа: Пользователи Сообщений: 104 Регистрация: 1.4.2009 Из: Россия Пользователь №: 2 871 Спасибо сказали: 42 раза |
|
|
|
7.8.2009, 3:37
Сообщение
#568
|
|
7 квадратиков Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз |
Или средствами сетевого экрана.
|
|
|
9.8.2009, 23:01
Сообщение
#569
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
Код Core.SendPmToUser(user,tSettings.sBot, " как я понимаю этот код отсылает сообщение в приват а напишите пожалуйста код который будет отсылать сообщение в главный чат |
|
|
10.8.2009, 0:02
Сообщение
#570
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
Код Core.SendToUser(user,tSettings.sBot, " вроде так... |
|
|
10.8.2009, 0:07
Сообщение
#571
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Код Core.SendToUser(user, "<"..tSettings.sBot.."> ".."
|
|
|
13.8.2009, 17:33
Сообщение
#572
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
CODE sBot = SetMan.GetString(21) -- имя бота tProfile = { [-1] = 1, [0] = 1, [1] = 1, [2] = 1, [3] = 1, [4] = 1, } -- кому доступно меню function UserConnected(user) Core.GetUserAllData(user) if tProfile[user.iProfile] == 1 then Core.SendToNick(user.sNick,"$UserCommand 1 3 Меню хаба\\Информация$<%[mynick]> !pravila||") end end OpConnected = UserConnected RegConnected = UserConnected подскажите как сделать чтобы было так Меню хаба\\Информация для (ник пользователя) |
|
|
13.8.2009, 17:59
Сообщение
#573
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Код Информация для "..user.sNick.."
|
|
|
13.8.2009, 20:33
Сообщение
#574
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Такой скрипт уже есть в готовых
|
|
|
27.8.2009, 0:59
Сообщение
#575
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 5 Регистрация: 22.2.2009 Пользователь №: 2 328 Спасибо сказали: 0 раз |
почему криво печатает в чат, скажите пажалуйста
пишет [01:55:43] <newnick [01:55:43] > криво печатает почему-то=((((( вместо [01:55:43] <newnick> криво печатает почему-то=((((( Код s,e,cmd,oNik,nNik= string.find(message,"%b<>%s(.+)%s(.+)%s(.+)")
if (cmd == "!nickchange") and oNik~= nil and nNik~= nil then nicker[oNik]=nNik end s,e,mes = string.find(message, "%b<>%s(.*)") if nicker[curUser.sNick]~=nil then Core.SendToAll("<"..nicker[curUser.sNick].."> "..mes) return true end |
|
|
27.8.2009, 1:07
Сообщение
#576
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Во-первых, переменные, которые возвращаются функцией string.find, либо все равны nil, либо все не равны nil. Поэтому нет смысла делать лишние проверки.
Во-вторых, на конце каждого сообщения присутствует символ |, который в NMDC протоколе разделяет команды друг от друга. Поэтому в переменную nNik запишется ник + символ |, соответственно такой изменённый ник запишется в таблицу nicker и при отсылке в чат будет работать как разделитель команд, то есть разобьёт нашу команду чата на две команды чата)) После всего сказанного получаем: Код message = message:sub(1, -2)
s,e,cmd,oNik,nNik= string.find(message,"%b<>%s(.+)%s(.+)%s(.+)") if cmd == "!nickchange" then nicker[oNik]=nNik end s,e,mes = string.find(message, "%b<>%s(.*)") if nicker[curUser.sNick] ~= nil then Core.SendToAll("<"..nicker[curUser.sNick].."> "..mes) return true end |
|
|
27.8.2009, 12:19
Сообщение
#577
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 5 Регистрация: 22.2.2009 Пользователь №: 2 328 Спасибо сказали: 0 раз |
спс!!!примногоблагодарен!!!))))всё работает!!!
|
|
|
9.9.2009, 16:52
Сообщение
#578
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 2 Регистрация: 9.9.2009 Пользователь №: 4 403 Спасибо сказали: 0 раз |
Добрый день!
Не понимаю в lua практически ничего, но по логике, когда пытаюсь сделать: DD = AnsiToUtf8('рыба') то получаю следующую ошибку: attempt to index local 's' (a string value) Скажите, плз, каким образом я могу переконвертировать строку из одной кодировки в другую, а результат сохранить в переменной? Спасибо!! Раскрывающийся текст Привожу полное преобразование на lua из кодировки cp1251 (Ansi) в utf-8 и обратно, с помощью функций AnsiToUtf8 и Utf8ToAnsi соответственно: Код local ansi_decode={ [128]='\208\130',[129]='\208\131',[130]='\226\128\154',[131]='\209\147',[132]='\226\128\158',[133]='\226\128\166', [134]='\226\128\160',[135]='\226\128\161',[136]='\226\130\172',[137]='\226\128\176',[138]='\208\137',[139]='\226\128\185', [140]='\208\138',[141]='\208\140',[142]='\208\139',[143]='\208\143',[144]='\209\146',[145]='\226\128\152', [146]='\226\128\153',[147]='\226\128\156',[148]='\226\128\157',[149]='\226\128\162',[150]='\226\128\147',[151]='\226\128\148', [152]='\194\152',[153]='\226\132\162',[154]='\209\153',[155]='\226\128\186',[156]='\209\154',[157]='\209\156', [158]='\209\155',[159]='\209\159',[160]='\194\160',[161]='\209\142',[162]='\209\158',[163]='\208\136', [164]='\194\164',[165]='\210\144',[166]='\194\166',[167]='\194\167',[168]='\208\129',[169]='\194\169', [170]='\208\132',[171]='\194\171',[172]='\194\172',[173]='\194\173',[174]='\194\174',[175]='\208\135', [176]='\194\176',[177]='\194\177',[178]='\208\134',[179]='\209\150',[180]='\210\145',[181]='\194\181', [182]='\194\182',[183]='\194\183',[184]='\209\145',[185]='\226\132\150',[186]='\209\148',[187]='\194\187', [188]='\209\152',[189]='\208\133',[190]='\209\149',[191]='\209\151' } 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 AnsiToUtf8(s) local r, b = '' for i = 1, s and s:len() or 0 do b = s:byte(i) if b < 128 then r = r..string.char(b) else if b > 239 then r = r..'\209'..string.char(b - 112) elseif b > 191 then r = r..'\208'..string.char(b - 48) elseif ansi_decode[b] then r = r..ansi_decode[b] else r = r..'_' end end end return r end 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 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 :) |
|
|
9.9.2009, 18:05
Сообщение
#579
|
|
7 квадратиков Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз |
По логике, нужно смотреть на ту строку, ошибку в которой пишет птока. Так-же, по логике, нужно приводить полный код скрипта, а не проверенный рабочий кусок чужого кода. Ну и втретьих, опять-же, по логике, вышепреведённый кусок кода от Сетапера с дописанными ниже парой строк работает.
Код DD = AnsiToUtf8('рыба') Core.SendToAll(DD) Что подтверждается выводом в общий чат хаба следующей ерунды: [19:14:52] рыба |
|
|
9.9.2009, 19:07
Сообщение
#580
|
|
Постоялец Группа: Пользователи Сообщений: 454 Регистрация: 17.10.2008 Из: Новосибирск Пользователь №: 825 Спасибо сказали: 90 раз |
... а еще лучше
Код sAdminNick = "ник админа" Core.SendToNick(sAdminNick, "<debug> "..tostring(DD)) если использовать tostring, то код не вылетит в случае, если DD == nil и сообщение отладки не будет пугать юзеров, т.к. будет видно только админ-нику. ЗЫ Модерам : надо, наверное, вопрос переместить в соответствующий топик. |
|
|
Похожие темы
|
Сейчас: 23.11.2024, 11:42 |