Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
Здравствуйте, гость ( Вход | Регистрация )
Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
8.4.2009, 1:53
Сообщение
#301
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Спасибо...пока не понял...щас попробуй разобраться...
Вопрос следущий! os.time это что такое? точкой отсчета что там является...я чет не понял! Как пользоваться понял, а почему оно такое - нет!))) Кто подскажет? |
|
|
8.4.2009, 11:53
Сообщение
#302
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Точкой отсчёта в функции os.time() является начало эры UNIX.
|
|
|
8.4.2009, 20:31
Сообщение
#303
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Понятно!...я тут уже почти написал бетку скрипта который я когда то просил "Книга жалоб и предложений"...
Появился следущий вопрос... Как изменить N-ую строку в текстовом файле?....щас пример кода дам, что мне нужно: Код for str in io.lines(Core.GetPtokaXPath().."scripts/Книга ЖиБ/messages.txt") do
stri = stri + 1 if stri == 5 then for sN, sName, sMes, sSt, dIp in string.gmatch(str,"(%d+)%s+(%S+)%s+{(.-)}%s+{(.-)}%s+{(.-)}") do (тут мне нужен код, которым я эту 5 строку заменю...к примеру вот этим: ""..sN.." "..sName.." {"..sMes.."} {"ответ не нужен"} {"sIp"}") end end end |
|
|
8.4.2009, 20:39
Сообщение
#304
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Хм... как-то всё муторно. Почему именно 5-ю строчку? Не легче ли сделать сохранение в таблицу того, что надо?
|
|
|
8.4.2009, 20:40
Сообщение
#305
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
поддерживаю! с таблицами работать гораздо проще и удобнее)))
|
|
|
8.4.2009, 21:00
Сообщение
#306
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Хм... как-то всё муторно. Почему именно 5-ю строчку? Не легче ли сделать сохранение в таблицу того, что надо? 5 это для примера. Это для книги жалоб и предложений. Когда юзер добавляет, его сообщение записывается в текстовый файл. (в конце это записи там указывается статус: нужен ли ответ или не нужен) так вот...я смотрю в примеру последние 10 записей...и собираюсь ответить на одну из тех у которой статус "нужен ответ"....отвечаю...и надо чтобы эта запись в текстовом файле изменилась...а точнее - изменился в ней в конце статус с "нужен ответ" на "отвечено" поддерживаю! с таблицами работать гораздо проще и удобнее))) ну чет каждый раз при обработке текста переводить это все в таблицы, как то муторно мне кажется...мне проще так...с таблицами у меня в коде тоже дел хватает) ...в любом случае уже все почти готово, переделывать не хочется, так что подскажите как сделать то, что я хочу. |
|
|
8.4.2009, 21:04
Сообщение
#307
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
делаешь таблицу:
Код tTemp = { ["1"] = { ["Nick"] = "Ник", ["Msg"] = "Сообщение", ["bAns"] = true, ["Ans"] = "Ответ", }, } с этим гораздо проще работать! |
|
|
8.4.2009, 21:15
Сообщение
#308
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Файл можно переписывать или дописывать в конец файла. Изменить в середине что-либо без переписывания я не представляю как сделать, хотя можно покрутить с методом seek, но на первый взгляд я решения не вижу.
Работа с файлами по средствам таблиц - универсальный метод. |
|
|
9.4.2009, 1:09
Сообщение
#309
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
да.......надо было все таки все через таблицы делать...тут проблемка появилась....! подскажите как определить в sData (вообщем в веденном сообщение) наличие знака переноса строки (или как это называется)...ну вообщем мне надо чтобы сообщение принималось только то, которое одной строкой написано....а если писали сообщение многострочное (при помощи сочетания ctrl+enter в дц клиенте....) то оно блокировалось...как это сделать?
Или же...(даже лучше) чтобы все посланное сообщение преобразовывалось в однострочное...а потом я уже это однострочное буду сохранять в файл... такс...уже сам разобрался как это сделать...!!! |
|
|
9.4.2009, 11:07
Сообщение
#310
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Растёшь в мастерстве, и набираешься опыта.
Увы не многие из новичков, способны к этому. Толи не хотят понимать, толи ленятся пробовать и делать что-либо со скриптами. |
|
|
9.4.2009, 13:39
Сообщение
#311
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Растёшь в мастерстве, и набираешься опыта. Увы не многие из новичков, способны к этому. Толи не хотят понимать, толи ленятся пробовать и делать что-либо со скриптами. да расту...хотя чувствую, что скрипт реализован не самым оптимальным способом...так еще чуть не запутался там пока писал эти куча циклов в куче циклов)))... Однако все таки проблемка с записью в файл осталась. На данный момент я сделал так, что при ответе на какую-либо запись (в книге жалоб и предложений) запись эта меняется, и файл целиком перезаписывается....но мне кажется это не есть гуд....ведь когда зписей будет много это лишняя напруга!!! Хотелось бы разобраться, как можно перезаписать конкретную строку в файле (мне почему то кажется что это можно с помощью file:seek ([whence] [, offset])...увы в этой англ документации не все могу понять, хотя англ более или менее знаю)... Бетку прикрепляю, у кого есть время - гляньте, скажите по пунктам что я там сделал "через жопу", дабы учесть на будущее)))
Прикрепленные файлы
|
|
|
9.4.2009, 13:48
Сообщение
#312
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Все таблицы с жалобами можно держать в памяти и время от времени (по таймеру) сохранять в файл - инструкция против сбоев.
При старте скрипта загружаем из файла, при остановке скрипта опять сохраняем в файл. Зачем держать старые записи? Нужно установить время хранения записи. После истечения этого времени запись логировать и удалять из таблицы. |
|
|
9.4.2009, 14:03
Сообщение
#313
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Это конапатить весь скрипт, переделывая все под таблицы...к тому же зачем кушать лишнюю память? Щас он кушает очень не много, и это радует.(все таки хочу разобраться с file:seek, если кто знает хорошо как работает это, опишите плз эту функцию) По поводу логирования - да, это хочу сделать таким образом: в текстовом файле хранятся не более N записей, когда появляется запись N+1 - 2-ая становится 1-ой и т.д.... А 1-ая записывается в архив... Однако я в таком случае хочу у себя сделать N = 50, а значит каждый раз при ответе на запись, все 50 строк будут перезаписываться, впринципе мне кажется это не большая напруга (если учитывать что отвечать на записи не прижется часто)
|
|
|
9.4.2009, 19:45
Сообщение
#314
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Не думаю, что у тебя наберётся хотя бы десяток записей. Думаю, что пользователям будет по барабану на эту функцию у тебя на хабе. Поэтому говорить о том, что мол тратится память не приходится. Может по началу появления этой функции и найдутся те кто будут активно её юзать, но это только на первое время
|
|
|
10.4.2009, 17:59
Сообщение
#315
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Не думаю, что у тебя наберётся хотя бы десяток записей. Думаю, что пользователям будет по барабану на эту функцию у тебя на хабе. Поэтому говорить о том, что мол тратится память не приходится. Может по началу появления этой функции и найдутся те кто будут активно её юзать, но это только на первое время Вполне возможно. Но это ничего не меняет...смысл держать все в памяти в таблицах, если можно просто в текстовом файле? 1) кушает меньше памяти 2)при сбое, никакие данные не пропадут....ну разве что из памяти выгрузка будет быстрее происходить...но не думаю что это хоть как-то будет заметно, учитывая немассивность скрипта. Ну вообщем спорить не имеет смысла...лучше помогите с file:set ...как все таки можно использовать эту функцию? (помимо того, чтобы поставить запись в начало или конец). |
|
|
10.4.2009, 18:19
Сообщение
#316
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Дописать можно только в конец файла! Такова особенность библиотеки lua.
Чтобы дописать в середину нужно считать весь файл, изменить нужную строку и перезаписать его. |
|
|
10.4.2009, 21:18
Сообщение
#317
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
чтож это за язык то такой...даже в паскале можно заменить конкретную строку, насколько помню...а тут нельзя...тада нафига в file:set есть cur позиция?...я так понимаю это сокращенно "текущая"...именно это меня наводит на мысли...
Чет не могу понять, как написать что-нибудь в опчат кодом....отловить сообщение можно....(как я понял оно ловится как и ПМ) а вот как написать туда? но так, чтобы не от ника "Opchat" (как в случае Core.SendToOpchat) а от любого другого ника? |
|
|
11.4.2009, 19:03
Сообщение
#318
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Ну че...никто не подскажет?...тут у меня еще один вопрос нарисовался...! Хочу сделать аналог опчата, как послать сообщение юзеру в окошке "Opchat" (или любом другом), но ник там был другой?...т.е. своего рода чатрум......
Я зарегил бота, дал ему ключик, когда в него отсылаюю сообщения юзер с выбранным мною профилем, то остальным приходит сообщение не от опчата а от этого юзера...это не есть гуд! Подскажите как реализовать правильно? пасиба, с последним вопросом сам разобрался! Глянул скрипт чатрумов! |
|
|
11.4.2009, 20:46
Сообщение
#319
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
опять вопрос!))
Core.RegBot(sBot, sDescription, sEmail, bHaveKey) регистрирует бота, и этот бот виден только Опам чтоль?...чет я туплю походу, но у меня именно так... как сделать видимым всем? |
|
|
11.4.2009, 20:48
Сообщение
#320
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
нет. эта функция регистрирует бота на хабе, т.е. добавляет его в список юзеров и виден он всем
|
|
|
Похожие темы
|
Сейчас: 23.11.2024, 17:41 |