Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
Здравствуйте, гость ( Вход | Регистрация )
Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
16.2.2012, 20:23
Сообщение
#921
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
Напомните пожалуйста где у вас статья была на форуме (образовательная) как работать со скриптами (функции, таблицы, захват с чата вывод) там ещё всё было по полочкам рассписано. Всё что мог тут перерыл не могу вспомнить где эта статья!
|
|
|
16.2.2012, 20:39
Сообщение
#922
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
|
|
|
16.2.2012, 22:24
Сообщение
#923
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
Не то. Это я всё видел. Там один кто-то описывал это всё а в конце ещё список функций DC был вроде только для API1. буду искать дальше. Но спасибо что откликаетесь!
Фух! Перерыл вообще всё на компе нашёл сохранённый mht глянул адрес: |
|
|
17.2.2012, 17:33
Сообщение
#924
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
Почему запрос с сайта (русский текст )приходит закорючками? В CDM отладчике всё нормально отображает! А перекодировка (полученной строки в скрипте) не помогает !
Код local fd,sz,hd = h.request(sAddr[2]) |
|
|
19.2.2012, 10:36
Сообщение
#925
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Мы не умеет читать мысли! До тебя не доходило, что ты слишком мало предоставляешь информации чтобы понять в чём проблема?
Могу сказать, что cdm отладчик отображает в utf-8. Возможно нужно преобразовать из utf-8. |
|
|
19.2.2012, 13:57
Сообщение
#926
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
Всё сделал если что критикуйте (буду рад выслушать)
Код скрипта Код ------------------ Общие настройки. ------------------ sBot = "Погода" -- Имя бота sMenu = "Меню хаба\\Погода" -- Путь к меню. sCmd = "!weather" -- Команда. sAddr = {"http://pogoda.vnerungri.ru","http://pogoda.vnerungri.ru/index.html?#34;,} -- можно добавить адреса для других запросов ------------------ Основной код. ------------------ function OnStartup() if sBot == "" then sBot = SetMan.GetString(21) else Core.RegBot(sBot, "Новости с сайта: ", "sAddr[1]", true) end Tmr = TmrMan.AddTimer(1200000) --сбор мусора тоже сколько ни читал так и не понял зачем он нужен и что он удалит... a = 1 end function UserConnected(User) Core.GetUserAllData(User)-- это зачем не пойму? мы же и так получает таблицу юзера Core.SendToUser(User,"$UserCommand 1 3 "..sMenu.."$<%[mynick]> "..sCmd.."|") end RegConnected,OpConnected = UserConnected,UserConnected function ChatArrival(tUser, sData) Core.GetUserAllData(tUser) --это тоже не понятно зачем! local sData = sData:sub(1,-2) local cmd = sData:match"%b<>%s+(%S+).*" if cmd == sCmd then GetInfo() return true end end ------------------- Функции к основному коду ------------------ function GetInfo() local s = require("socket") assert(s,"Ошибка загрузки библиотеки socket. Проверьте наличие файлов необходимых библиотек.") local h = require("socket.http") assert(h,"Ошибка загрузки библиотеки socket.http. Проверьте наличие файлов необходимых библиотек.") if a == 0 then Core.SendToAll(sMsg) else local fd,sz,hd = h.request(sAddr[2]) if fd and sz then a = 0 sMsg = "\n\t" fd = Utf8ToAnsi(fd) for Today,Day,NDay,Mons,Osad,TempN,TempD,ForceW,Wind,SunW,SunZ,MoonW,MoonZ in fd:gmatch "<span class='.-'>(.-)</span>.-<span class='.-'>(.-)</span>.-<span class='.-'>(.-)</span>.-<span class='.-'>(.-)</span>.-<p class='.-'>(.-)</p>.-<span class='.-/span>.-<span class='.-'>(.-)</span>.-<span class='.-/span>.-<span class='.-'>(.-)</span>.-<span class='.-'>(.-)</span>.-<span class='.-'>(.-)</span>.-<span class='.-/span>.-<span class='.-'>(.-)</span>.-<span class='.-/span>.-<span class='.-'>(.-)</span>.-<span class='.-/span>.-<span class='.-'>(.-)</span>.-<span class='.-/span>.-<span class='.-'>(.-)</span>" do sMsg = sMsg..Today..": "..NDay.." "..Mons.." ("..Day..")\n\tОсадки: "..Osad.."\tТемпература (ночь/день): ("..TempN.."/"..TempD..")\t Ветер "..Wind.." "..ForceW.."\n\tСолнце (восход/заход): ("..SunW.."/"..SunZ..")\tЛуна (восход/заход): ("..MoonW.."/"..MoonZ..")\n"..string.char(7):rep(80).."\n\t" RepChars() end Id = TmrMan.AddTimer(1200000,"Func") else sMsg = "\tСайт временно не работает или перегружен, попробуйте позже..." end Core.SendToAll("Новости с сайта: "..(sAddr[1])..sMsg) end end function Func() --Core.SendToAll("Параметры сброшены") TmrMan.RemoveTimer(Id) a = 1 end function RepChars() sMsg =sMsg:gsub("%[b%]", " "):gsub("%[/b%]", " "):gsub("<[Bb][Rr]>", ""):gsub("<br />", "\r\n\t"):gsub("<", "<"):gsub(">", ">"):gsub(""", string.char (34)):gsub("$", "$"):gsub("'", "`"):gsub("'", "`"):gsub("|", ""):gsub("|", ""):gsub(" ", ""):gsub("°c", "°C") end function OnTimer(Tmr) collectgarbage("collect") end local ansidecode={ [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 utf8decode={ [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..ansidecode[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..utf8decode[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 Код страницы Код <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Погода. Городской портал «В Нерюнгри»</title> <meta name="description" content="" /> <meta name="keywords" content="" /> <meta name="language" content="Russian" /> <meta name="country" content="Russian federation" /> <meta name="city" content="Nerungri" /> <link rel="stylesheet" type="text/css" href="/images/css/style.css" /> <link rel="stylesheet" type="text/css" href="/images/css/style_pogoda.css" /> </head> <body> <div id="header"> <div class="head-logo"> <a href="http://vnerungri.ru/"> <img src="/images/logo_header.png"></a> <span>Информационный городской портал</span> </div> <div class="head-rubrika">- <strong>Погода</strong></div> <div class="head_knopki"> <a href="/">Сделать стартовой</a> | <span><a href="http://corp.vnerungri.ru/services/">Размещение рекламы</a></span> </div> <div class="head_info" > <ul> <li class="wd"><a href="http://pogoda.vnerungri.ru/">Погода в Нерюнгри</a><br>Сейчас: <b>-26</b></li> <li class="dt"><b>05:37</b><br>Пн, 20 Февраля</li> </ul> </div> <div class='currency'> <table> <thead> <tr> <td class='today'><a name=aa>курсы валют</a></td> <td class='dynamic'>сегодня</td> <td class='sizer'></td> <td class='sizer'></td></tr></thead> <tbody> <tr> <td class='today'>$ 30.00</td> <td class='dynamic'> -0.21 <img src='/images/do_c.png' border='0' alt=''> </td> <td class='sizer'></td> <td class='sizer'></td></tr> <tr> <td class='today'>€ 39.38</td> <td class='dynamic'>0.07 <img src='/images/up_c.png' border='0' alt=''> </td> <td class='sizer'></td> <td class='sizer'></td></tr></tbody></table> </div> <div class='login'><a href='http://user.vnerungri.ru/'><img src='/images/2.png'>Вход</a> <a href='http://user.vnerungri.ru/register/'><img src='/images/1.png'>Регистрация</a></div> <div id='navigation'><ul id='menu'><li><a href='http://vnerungri.ru/' title=''>Главная</a></li> <li><a href='http://tv.vnerungri.ru/' title=''>Телевизор</a></li> <li><a href='http://horoscopes.vnerungri.ru/' title=''>Гороскоп</a> <ul id='s1'> <li><a href='/index.html?#39; title=''>Прогноз на 3 дня </a></li> <li><a href='/threeday.html?#39; title=''> Подробно на 3 дня </a></li> <li><a href='/forecast10.html?#39; title=''>Прогноз на 10 дней </a></li> </ul> </li> <li><a href='http://pogoda.vnerungri.ru/' title=''>Погода</a></li> <li><a href='http://user.vnerungri.ru/' title=''>Users</a></li> </ul></div> </div> <table id="wrapper"> <tr> <br /> </tr> <tr> <td id="left"> <h2 class='block2' style='margin: 15px 0 4px 0;'>Инфо на сегодня</h2> <div class='commonBlock2'> <div class='text'> В 1986 году На космическую орбиту выведена научная станция «Мир»<br /><br /></div></div></td> <td id="content"> <div class='conttd1'> <p class='pagepath'>Прогноз на 3 дня</p> <table class='tabweather'> <tr><td class='wtd1 width1 v18fff'>дата</td> <td class='wtd1 width2 v18fff'>осадки</td> <td class='wtd1 width3 v18fff'>температура</td> <td class='wtd1 width4 v18fff'>ветер</td> <td class='wtd1 width5 v18fff'>давл.</td> <td class='wtd1 width6 v18fff'>солнце</td> <td class='wtd1 width7 v18fff'>луна</td> </tr> <tr><td class='wtd2 alright'><br> <span class='v18fc0'>Сегодня<BR></span> <span class='v10fffb'> понедельник</span><br> <span class='v10fffb'>20</span> <span class='v10fffb'>февраля</span></td> <td class='wtd2 alcenter v11ccc'> <img src='/images/weather/mini/6.png' class='icon' alt='' title=''> <p class='v11ccc'>переменная облачность</p></td> <td class='wtd2 alcenter' nowrap='nowrap'> <span class='v10cccb'>ночь: </span> <span class='v10fc0b'>-31°c</span><br> <span class='v10cccb'>день: </span> <span class='v18fc0b'>-24°c</span></td> <td class='wtd2 alcenter'> <span class='v11cccb'>1.8 м/с</span><br> <span class='v11ccc'>северо - западный</span></td> <td class='wtd2 v18ccc alcenter'>697</td> <td class='wtd2'> <span class='v11cccb'>восход: </span> <span class='v11ccc'>08:58</span><br> <span class='v11cccb'>заход: </span> <span class='v11ccc'>18:52</span><br> <td class='wtd2'> <span class='v11cccb'>восход: </span> <span class='v11ccc'>07:49</span><br> <span class='v11cccb'>заход: </span> <span class='v11ccc'>17:08</span><br> <p class='alcenter'><img style='border:1px solid #666; ' src='/images/weather/moon/moon7.png' class='phases' alt='Фаза Луны' title='Фаза Луны'></p> </td> </tr> <tr><td class='wtd2 alright'><br> <span class='v18fc0'>Завтра<BR></span> <span class='v10fffb'> вторник</span><br> <span class='v10fffb'>21</span> <span class='v10fffb'>февраля</span></td> <td class='wtd2 alcenter v11ccc'> <img src='/images/weather/mini/5.png' class='icon' alt='' title=''> <p class='v11ccc'>облачно</p></td> <td class='wtd2 alcenter' nowrap='nowrap'> <span class='v10cccb'>ночь: </span> <span class='v10fc0b'>-28°c</span><br> <span class='v10cccb'>день: </span> <span class='v18fc0b'>-19°c</span></td> <td class='wtd2 alcenter'> <span class='v11cccb'>1.9 м/с</span><br> <span class='v11ccc'></span></td> <td class='wtd2 v18ccc alcenter'>695</td> <td class='wtd2'> <span class='v11cccb'>восход: </span> <span class='v11ccc'>08:55</span><br> <span class='v11cccb'>заход: </span> <span class='v11ccc'>18:55</span><br> <td class='wtd2'> <span class='v11cccb'>восход: </span> <span class='v11ccc'>08:08</span><br> <span class='v11cccb'>заход: </span> <span class='v11ccc'>18:26</span><br> <p class='alcenter'><img style='border:1px solid #666; ' src='/images/weather/moon/moon8.png' class='phases' alt='Фаза Луны' title='Фаза Луны'></p> </td> </tr> <tr><td class='wtd2 alright'><br> <span class='v18fc0'><BR></span> <span class='v10fffb'> среда</span><br> <span class='v10fffb'>22</span> <span class='v10fffb'>февраля</span></td> <td class='wtd2 alcenter v11ccc'> <img src='/images/weather/mini/5.png' class='icon' alt='' title=''> <p class='v11ccc'>облачно</p></td> <td class='wtd2 alcenter' nowrap='nowrap'> <span class='v10cccb'>ночь: </span> <span class='v10fc0b'>-28°c</span><br> <span class='v10cccb'>день: </span> <span class='v18fc0b'>-17°c</span></td> <td class='wtd2 alcenter'> <span class='v11cccb'>1.9 м/с</span><br> <span class='v11ccc'></span></td> <td class='wtd2 v18ccc alcenter'>698</td> <td class='wtd2'> <span class='v11cccb'>восход: </span> <span class='v11ccc'>08:53</span><br> <span class='v11cccb'>заход: </span> <span class='v11ccc'>18:57</span><br> <td class='wtd2'> <span class='v11cccb'>восход: </span> <span class='v11ccc'>08:24</span><br> <span class='v11cccb'>заход: </span> <span class='v11ccc'>19:44</span><br> <p class='alcenter'><img style='border:1px solid #666; ' src='/images/weather/moon/moon8.png' class='phases' alt='Фаза Луны' title='Фаза Луны'></p> </td> </tr> <tr><td class='wtd2 alright'><br> <span class='v18fc0'><BR></span> <span class='v10fffb'> четверг</span><br> <span class='v10fffb'>23</span> <span class='v10fffb'>февраля</span></td> <td class='wtd2 alcenter v11ccc'> <img src='/images/weather/mini/13.png' class='icon' alt='' title=''> <p class='v11ccc'>облачно, небольшой снег</p></td> <td class='wtd2 alcenter' nowrap='nowrap'> <span class='v10cccb'>ночь: </span> <span class='v10fc0b'>-29°c</span><br> <span class='v10cccb'>день: </span> <span class='v18fc0b'>-14°c</span></td> <td class='wtd2 alcenter'> <span class='v11cccb'>1.4 м/с</span><br> <span class='v11ccc'>северо - западный</span></td> <td class='wtd2 v18ccc alcenter'>698</td> <td class='wtd2'> <span class='v11cccb'>восход: </span> <span class='v11ccc'>08:50</span><br> <span class='v11cccb'>заход: </span> <span class='v11ccc'>18:59</span><br> <td class='wtd2'> <span class='v11cccb'>восход: </span> <span class='v11ccc'>08:38</span><br> <span class='v11cccb'>заход: </span> <span class='v11ccc'>20:59</span><br> <p class='alcenter'><img style='border:1px solid #666; ' src='/images/weather/moon/moon9.png' class='phases' alt='Фаза Луны' title='Фаза Луны'></p> </td> </tr></table> </td> <td id="right"> <h2 class='block2' style='margin: 15px 0 4px 0;'>Погода за окном</h2> <div class='commonBlock2'> <img src='/images/weather/mini/n2.png' alt=''> <div class='temp'>-26°c</div> <div class='info'>Ветер: <span>5.0 м/с | северный</span></div> <div class='info'>Давление: <span>692 мм рт. ст.</span></div> </div> </td> </tr> </table> <div id="footer"> <IMG src="/images/logo_footer.png"> <SPAN>© 2012 Городской портал «В Нерюнгри» <ul> <li><a href="http://corp.vnerungri.ru/company/">О проекте</a></li> <li><a href="http://corp.vnerungri.ru/services/">Размещение рекламы</a></li> <!--<li><a href="/">Пользовательское соглашение</a></li>--> <li><a href="http://corp.vnerungri.ru/form/">Связаться с нами</a></li> </ul> </SPAN> <a style="float:right;margin:5px 10px;" href="/info.html?#34;><img src="/counter.jpg" width="88" height="31" border=0></a> </div> </body> </html> |
|
|
22.2.2012, 18:15
Сообщение
#927
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Есть код:
Код function OnError(s) local h = io.open("errors.log","a+") if h then h:write(os.date()..": "..s.."\n") h:close() end if Core then Core.SendToOpChat(s) else SendToOpChat(s) end end Правильно ли я понимаю, что проверка: Код if Core then Core.SendToOpChat(s) else SendToOpChat(s) end введена только для корректной работы как с API 1 (SendToOpChat(s)), так и с API 2 (Core.SendToOpChat(s))? |
|
|
22.2.2012, 20:56
Сообщение
#928
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
MIKHAIL, да. Достаточно вот этого, если твой хаб на АПИ 2:
Код function OnError(s)
Core.SendToOpChat(s) end |
|
|
23.2.2012, 23:21
Сообщение
#929
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
В скриптах парсинга погоды, например, использующих библиотеку "socket.http", с помощью переменных можно обрабатывать текстовые данные, сохранять их в файл. Это понятно.
Скажите, пожалуйста, а возможно ли загрузить данные, отличные от текстовых (картинку, файл), и сохранить в папку? Взять хотя бы тот же сайт погоды. Подскажите, где можно ознакомиться с примером работы такого скрипта? |
|
|
24.2.2012, 5:49
Сообщение
#930
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
Установил PtokaX 0.4.2.0 Не работает TmrMan.RemoveTimer(Id) как исправить? Здесь есть ссылка на пост, но поста нет!
|
|
|
24.2.2012, 7:12
Сообщение
#931
|
|
AmxModx Scripter Группа: Пользователи Сообщений: 302 Регистрация: 2.12.2008 Из: Королев Пользователь №: 1 283 Спасибо сказали: 127 раз |
MIKHAIL, загружаешь точно также, потом при сохранении указываешь флаг b
Код http = require"socket.http"
data, sError = http.request(sUrl) hFile, sError = io.open(sFilename,"wb") hFile:write(data) hFile:flush() hFile:close() |
|
|
24.2.2012, 14:02
Сообщение
#932
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
скрипт работает но постоянно выдаёт ошибку: "0.4.2.0-x64\scripts\Zapros.lua:69: bad argument #1 to 'RemoveTimer' (number expected, got userdata)"
т.е. если включить выключение скрипта при ошибке он вылетит :( |
|
|
24.2.2012, 14:38
Сообщение
#933
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
В гугле набери man printf и будет тебе счастье. А по факто пишешь форматированную строку с параметрами. На то место, где стоит параметр формат подставит тот аргумент из списка своего вызова, что и номер параметра в форматированной строке
|
|
|
24.2.2012, 16:39
Сообщение
#934
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
В руководстве lua есть описание format, сколько ни читал никак не вкурю как им пользоваться! Мануал Код string.format (formatstring, ···) Возвращает параметры, передаваемые в функцию, отформатированные в соответствии первым параметром (который должен быть строкой). Строка формата должна строиться по тем же правилам, что и строка формата для семейства C функций printf. Отличие только в том, что опции/модификаторы *, l, L, n, p и h не поддерживаются, но имеется дополнительная опция q. Опция q позволяет вернуть строку в формате, безопасно воспринимаемом Lua интерпретатором: сама строка выводится в двойных кавычках, а все двойные кавычки, перевод строки, символы с кодом 0 и обратный слеш внутри строки экранируются обратным слешем (escaped). Например, вызов string.format('%q', 'a string with "quotes" and \n new line') возвратит строку: "a string with \"quotes\" and \ new line" Опции c, d, E, e, f, g, G, i, o, u, X, и x должны использоваться только для числовых параметров, а q и s - для строковых. Эта функция не принимает строковые параметры, содержащие символы с кодом 0, кроме параметров для формата, имеющего опцию q. Даже на этом примере не могу понять (взять те же опции "c, d, E, e, f, g, G, i, o, u, X, и x" как их использовать и как вообще это работает..) :( объясните пожалуйста Пример Код function UserConnected(tUser) local iHour, sMsg = tonumber(os.date"%H"), tUser.sNick..". Добро пожаловать на хаб!" if iHour >= 5 and iHour < 12 then Core.SendToUser(tUser, ("Доброе утро %s"):format(sMsg)) elseif iHour >= 12 and iHour < 18 then Core.SendToUser(tUser, ("Добрый день %s"):format(sMsg)) elseif iHour >= 18 and iHour <= 23 then Core.SendToUser(tUser, ("Добрый вечер %s"):format(sMsg)) else Core.SendToUser(tUser, ("Доброй ночи %s"):format(sMsg)) end end RegConnected, OpConnected = UserConnected, UserConnected |
|
|
24.2.2012, 17:07
Сообщение
#935
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
Цитата В гугле набери man printf и будет тебе счастье. А по факто пишешь форматированную строку с параметрами. На то место, где стоит параметр формат подставит тот аргумент из списка своего вызова, что и номер параметра в форматированной строке
|
|
|
24.2.2012, 22:24
Сообщение
#936
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Код Core.SendToUser(tUser, ("Доброй ночи %s"):format(sMsg)) AirKobra45, тут %s означает, что при выводе сообщения вместо шаблона %s подставится очередная переменная из списка, идущего как аргумент выражения format, в данном случае подставится sMsg (оно должно быть уже создано до этого). Так же можно использовать несколько таких %s, и при каждом встреченном в сообщении %s вместо него подставится очередная переменная из аргументов format'а. Пример: Код Core.SendToUser(tUser, ("<%s> Доброй, ночи %s! Твоё IP: %s, твоя шара: %s"):format(sBot, sNick, sIP, sShara)) Значения переменных sBot, sNick, sIP, sShara уже должны быть известны перед применением.Выведет в чате, например, это: Цитата <Страшный_Бот> Доброй ночи, AirKobra45! Твоё IP: 10.20.30.40, твоя шара: 1234567890
|
|
|
25.2.2012, 22:19
Сообщение
#937
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
Код Core.SendToUser(tUser, ("Доброй ночи %s"):format(sMsg)) AirKobra45, тут %s означает, что при выводе сообщения вместо шаблона %s подставится очередная переменная из списка, идущего как аргумент выражения format, в данном случае подставится sMsg (оно должно быть уже создано до этого). Так же можно использовать несколько таких %s, и при каждом встреченном в сообщении %s вместо него подставится очередная переменная из аргументов format'а. Пример: Код Core.SendToUser(tUser, ("<%s> Доброй, ночи %s! Твоё IP: %s, твоя шара: %s"):format(sBot, sNick, sIP, sShara)) Значения переменных sBot, sNick, sIP, sShara уже должны быть известны перед применением.Выведет в чате, например, это: Большое спасибо!! а всё так просто оказалось! |
|
|
26.2.2012, 5:07
Сообщение
#938
|
|
KEEP CLEAR AT ALL TIMES Группа: Пользователи Сообщений: 141 Регистрация: 4.9.2011 Из: Беларусь, Минск Пользователь №: 9 667 Спасибо сказали: 3 раза |
Подскажите, пожалуйста, что означает добавление плюса "+" в режим открытия файла, т. к. встречается такое частенько?..
В режиме чтения файла: Код io.open(file,"a+") или ещё видел в режиме записи: Код io.open(file,"w+")
|
|
|
26.2.2012, 9:35
Сообщение
#939
|
|
Активный участник Группа: Пользователи Сообщений: 94 Регистрация: 2.10.2010 Из: Якутия, г.Нерюнгри Пользователь №: 7 820 Спасибо сказали: 21 раз |
Подскажите, пожалуйста, что означает добавление плюса "+" в режим открытия файла, т. к. встречается такое частенько?.. В режиме чтения файла: Код io.open(file,"a+") или ещё видел в режиме записи: Код io.open(file,"w+") Повторение мать учения... (повторюсь за setuper - ом): тут ранее писали об этом: жмём сюда Код На lua.ru плохо написано. "r" - открыть файл для чтения. Файл должен существовать. "w" - создать пустой файл для записи. Если файл с таким именем уже существует, то его содержание будет удалено, а файл будет рассматриваться как новый пустой файл. "a" - добавить в файл. Дописывает данные в конец файла. Файл создается, если он не существует. "r+" - открыть файл как для чтения, так и для записи. Файл должен существовать. "w+" - создать пустой файл для чтения и записи. Если файл с таким именем уже существует, то его содержание будет удалено, а файл будет рассматриваться как новый пустой файл. "a+" - открыть файл для чтения и добавления. Все операции записи выполняются в конец файла. Файл создается, если он не существует. Кроме этого, для работы с бинарными файлами существуют моды: "rb", "wb", "ab", "r+b", "w+b", "a+b", то есть теже самые моды но с буквой b на конце. Буква b может также находится и в середине: "rb+", "wb+", "ab+" Можно сказать это более расширенные опции подскажите почему не работает эта конструкция? Код t = okrugl(10) Core.SendToAll(""..t) function okrugl(a) local b = math.floor(a) local c = (a % b) if c == 0 then local ans = a elseif c < 0.5 then ans = b elseif c >= 0.5 then ans = math.ceil(a) end return ans end Пишет Код attempt to call global 'okrugl' (a nil value) И вообще можно ли окраглить не к ближайшему меньшему или большему а по правилам округления? |
|
|
26.2.2012, 10:27
Сообщение
#940
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
функция должны быть определена до использования.
http://mydc.ru/index.html?showtopic=173&am...ost&p=41546 |
|
|
Похожие темы
|
Сейчас: 23.11.2024, 10:07 |