скрипт рекордов АПИ1, изменить отображение информации |
Здравствуйте, гость ( Вход | Регистрация )
скрипт рекордов АПИ1, изменить отображение информации |
26.4.2009, 20:53
Сообщение
#1
|
|
Продвинутый участник Группа: Пользователи Сообщений: 133 Регистрация: 18.9.2008 Из: Москва Пользователь №: 555 Спасибо сказали: 5 раз |
здравствуйте. есть скрипт рекордов. работает безупречно. есть только одно нарекание. отображает рекорды по-идиотски:
------------------------------------------------------------------- Рекорд Значение Дата - Время ------------------------------------------------------------------- Шара 287 ТБ 04/26/09 18:13:24 Юзеры 2298 чел. 04/26/09 18:13:24 Макс. шара ((I)))Berserk (14.0 ТБ) ------------------------------------------------------------------- т.е. дата отображается как месяц - число - год. возможно ли сделать чтоб отображалось так?: Шара 287 ТБ 26 апреля 2009; 18:13:24 Юзеры 2298 чел. 26 апреля 2009; 18:13:24 Я читал про захваты и прочее, но не понял ничего ))) там сложно слишком для меня. Спасибо кто поможет
Прикрепленные файлы
|
|
|
27.4.2009, 0:05
Сообщение
#2
|
|
Постоялец Группа: Пользователи Сообщений: 454 Регистрация: 17.10.2008 Из: Новосибирск Пользователь №: 825 Спасибо сказали: 90 раз |
Можно вот в таком стандартном формате : 24 Jan 2009 22:31
Без секунд : Код os.date("%d %b %Y %H:%M") С секундами : Код os.date("%d %b %Y %H:%M:%S") Код os.date() меняем на форматированную дату, там всегодва раза, если не ошибаюсь, в скрипте встречается. |
|
|
27.4.2009, 8:14
Сообщение
#3
|
|
Продвинутый участник Группа: Пользователи Сообщений: 133 Регистрация: 18.9.2008 Из: Москва Пользователь №: 555 Спасибо сказали: 5 раз |
спасибо щас попробую )) \\\ спасибо всё работает. прилагаю если кому понадобится ) \\\
а на русском месяцы реально сделать? пытался прикрутить из ТаймДата-бота (прилагаю), но постоянные ошибки или вообще ничего не показывает
Прикрепленные файлы
RecordBot.lua ( 8.83 килобайт )
Кол-во скачиваний: 6
TimeDateBot.lua ( 4.76 килобайт ) Кол-во скачиваний: 5 |
|
|
4.5.2009, 5:40
Сообщение
#4
|
|
Постоялец Группа: Пользователи Сообщений: 454 Регистрация: 17.10.2008 Из: Новосибирск Пользователь №: 825 Спасибо сказали: 90 раз |
Самым примитивным решением, видимо, будет аргументировать полученную строку даты в функцию замены импортных названий месяцев на русские названия. Например, так :
вместо Код os.date("%d %b %Y %H:%M") пишем Код GsubMonth(os.date("%d %b %Y %H:%M")) и добавляем функцию :Код function GsubMonth(s)
s=s:gsub("Jan","Января"); s=s:gsub("Mar","Марта"); s=s:gsub("May","Мая") s=s:gsub("Jun","Июня"); s=s:gsub("Jul","Июля"); s=s:gsub("Aug","Августа") s=s:gsub("Feb","Февраля"); s=s:gsub("Sep","Сентября"); s=s:gsub("Dec","Декабря") s=s:gsub("Oct","Октября"); s=s:gsub("Nov","Ноября"); s=s:gsub("Apr","Апреля") return s end |
|
|
4.5.2009, 13:40
Сообщение
#5
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
В данном случае это не оптимальное решение, так как метод gsub будет при каждом вызове функции выполняться всегда 12 раз. Кроме этого, использование такого количества локальных строк будет влиять на скачки в памяти при каждом использовании данной функции.
Лучше сделать локальную таблицу с месяцами: Код local sM, tMonth = "%b", { Jan = "Января", Feb = "Февраля", Mar = "Марта", Apr = "Апреля", May = "Мая", Jun = "Июня", Jul = "Июля", Aug = "Августа", Sep = "Сентября", Oct = "Октября", Nov = "Ноября", Dec = "Декабря" } function GetMonth() return tMonth[os.date(sM)] end Тогда использование будет таким: Код os.date("%d %%s %Y %H:%M"):format(GetMonth())
|
|
|
4.5.2009, 15:00
Сообщение
#6
|
|
Постоялец Группа: Пользователи Сообщений: 454 Регистрация: 17.10.2008 Из: Новосибирск Пользователь №: 825 Спасибо сказали: 90 раз |
Setuper
А где можно почитать об использовании format ? |
|
|
4.5.2009, 15:28
Сообщение
#7
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
В данном случае метод формат используется в качестве оптимизации и сокращения выделяемой памяти.
Можно было написать так: Код os.date("%d "..GetMonth().." %Y %H:%M") но если мы так напишем, то 1 байт выделится под строку "%d ", и 1 байт выделится под строку " %Y %H:%M", после этого они конкатенацией соединятся. В итоге получаем выделение памяти под строки в размере 2 байт - это мусор, который надо будет позже убирать.В случае если же мы напишем так: Код os.date("%d %%s %Y %H:%M"):format(GetMonth()) то выделится всего 1 байт под строку "%d %%s %Y %H:%M", после чего в этой строке произойдёт замена %s на значение нашей функции GetMonth. В итоге получаем выделение памяти под строки в размере 1 байта.В общем метод format, в данном случае, используется для форматирования строки, в частности для замены %s на то, что мы хотим, с целью сокращения выделения памяти под мусор. И ещё... Так как перед форматированием строки мы используем функцию os.date, которая также работает с переменными содержащими знак процента, то если написать не %%s, а %s, то функция os.date преобразует этот %s в своё выражение, для того, чтобы этого не произошло нам нужно, чтобы на выходе после функции os.date знак процента сохранился, то есть нам надо экранировать знак процента, что я и делаю тут. Почитать про format можно тут: |
|
|
4.5.2009, 18:55
Сообщение
#8
|
|
Продвинутый участник Группа: Пользователи Сообщений: 133 Регистрация: 18.9.2008 Из: Москва Пользователь №: 555 Спасибо сказали: 5 раз |
весьма благодарен за ваше участие )))
однако пытался вставить то что вы тут написали, результат ноль. можно сюда скрипт полностью? это только вам легко понять сии премудрости ((( |
|
|
8.5.2009, 22:13
Сообщение
#9
|
|
Продвинутый участник Группа: Пользователи Сообщений: 136 Регистрация: 16.9.2008 Пользователь №: 545 Спасибо сказали: 1 раз |
весьма благодарен за ваше участие ))) присоединяюсь к просьбе. у кого после всех этих преобразований есть рабочий скрипт под API1 просьба выложить
однако пытался вставить то что вы тут написали, результат ноль. можно сюда скрипт полностью? это только вам легко понять сии премудрости ((( |
|
|
9.5.2009, 3:41
Сообщение
#10
|
|
Постоялец Группа: Пользователи Сообщений: 454 Регистрация: 17.10.2008 Из: Новосибирск Пользователь №: 825 Спасибо сказали: 90 раз |
Ну что же вы так, ребята? Задачка то простая совсем - готовое решение в скрипт вписать. Каждый одминчег должен стать Всадником Птокапокалипсиса, и Lua Reference Manual - Библия Его, и NotePad ++ - копье Его
Приписал решение Setuper'a в выложенный скрипт, пользуйтесь... Попутно вот, смотрите. При показе в гл. чате рекорды форматируются. В зависимости от конкретных текщих значений может потребоваться добавление-удаление символов табуляции ( \t) в строках Код msg = msg.."\tШара\t\t"..DoShareUnits((Record.Share)).." \t\t\t"..Record.tShare.."\r\n" msg = msg.."\tЮзеры\t\t"..Record.Users.." чел.\t\t\t"..Record.tShare.."\r\n" msg = msg.."\tМакс. шара\t"..Record.maxSharer.." "..DoShareUnits((Record.maxShare))..")\r\n" и соответственно добавление - удаление количества символов дефиса в разделителях (border) Код local msg, border = "", string.rep ("-", 80) При проверке получилось криво, поэтому немного подровнял, см. картинку. Но то что на картинке - это применительно к показу исключительно конкретных, текущих значений. Поэтому надо осваивать такие мелочи, и не теряться ;)
Прикрепленные файлы
RecordBot_date_.lua ( 9.17 килобайт )
Кол-во скачиваний: 10
рекорды.PNG ( 3.13 килобайт ) Кол-во скачиваний: 28 |
|
|
9.5.2009, 10:28
Сообщение
#11
|
|
Продвинутый участник Группа: Пользователи Сообщений: 136 Регистрация: 16.9.2008 Пользователь №: 545 Спасибо сказали: 1 раз |
спасибо за скрипт. кстати в скрипте есть ошибка, как ее исправить?
в файле record данные Record = { ["Share"] = 36838321281645, ["maxSharer"] = "Strannik", ["tShare"] = "09 Марта 2009 20:20", ["maxShare"] = 1554544152800, ["Users"] = 273, ["tUsers"] = "09 Марта 2009 20:57", } А отображается : -------------------------------------------------------------------------------- Рекорд Значение Дата - Время -------------------------------------------------------------------------------- Шара 33.5 ТБ 09 Марта 2009 20:20 Юзеры 273 чел. 09 Марта 2009 20:20 Макс. шара Strannik (1.4 ТБ) -------------------------------------------------------------------------------- То есть время пика шары и пика юзеров всегда совпадает, хотя на самом деле это не так.
Прикрепленные файлы
|
|
|
9.5.2009, 11:20
Сообщение
#12
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
А самому догадаться никак?
Строка 48: Код msg = msg.."\tЮзеры\t\t"..Record.Users.." чел.\t\t\t"..Record.tUsers.."\r\n"
|
|
|
9.5.2009, 11:51
Сообщение
#13
|
|
Постоялец Группа: Пользователи Сообщений: 454 Регистрация: 17.10.2008 Из: Новосибирск Пользователь №: 825 Спасибо сказали: 90 раз |
Точно, был такой косячок. В отчет для даты рекорда шары и даты рекорда юзеров выводилась одна и та же дата - дата рекорда по шаре. Давно этим скриптом уже не пользуюсь, исправил да и забыл что такая ошибка была... Переприкреплю, на всякий случай ;)
|
|
|
9.5.2009, 12:25
Сообщение
#14
|
|
Продвинутый участник Группа: Пользователи Сообщений: 136 Регистрация: 16.9.2008 Пользователь №: 545 Спасибо сказали: 1 раз |
|
|
|
11.5.2009, 18:01
Сообщение
#15
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
написали же тебе 48 строка!!! Если вдруг ты ищешь поиском, то не копируй всю строку, ибо здесь приведён уже окончательный вариант(на то что надо исправить)!
|
|
|
11.5.2009, 19:05
Сообщение
#16
|
|
Продвинутый участник Группа: Пользователи Сообщений: 136 Регистрация: 16.9.2008 Пользователь №: 545 Спасибо сказали: 1 раз |
написали же тебе 48 строка!!! Если вдруг ты ищешь поиском, то не копируй всю строку, ибо здесь приведён уже окончательный вариант(на то что надо исправить)! скрипт давно исправлен и работает, то что я ответил с цитированием означает то что я ответил цитатой, а не то, что я не понял как править, так что твой ор неуместен.
|
|
|
11.5.2009, 19:21
Сообщение
#17
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
тут не все экстрасенсы! если вопрос снят надо было так и сказать!
PS: остроту ума проявляй в программинге а не в сообщениях! |
|
|
Похожие темы
|
Сейчас: 27.11.2024, 1:41 |