Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
Здравствуйте, гость ( Вход | Регистрация )
Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
3.4.2009, 19:23
Сообщение
#281
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
|
|
|
3.4.2009, 19:37
Сообщение
#282
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Обрати внимания и на другие изменения
|
|
|
3.4.2009, 23:25
Сообщение
#283
|
|
Участник Группа: Пользователи Сообщений: 35 Регистрация: 13.11.2008 Из: Тульская обл Пользователь №: 1 082 Спасибо сказали: 0 раз |
Народ и какже из птоки 0.3.6.0 переконвертировать скрипы на 0.4.1.1 ??
|
|
|
3.4.2009, 23:32
Сообщение
#284
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Руками или кнвертером
|
|
|
4.4.2009, 16:15
Сообщение
#285
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Обрати внимания и на другие изменения Видел, это понятно, я просто для примера показывал. У меня опять вопрос!!! Как получить кол-во строк в текстовом файле, и как к примеру выводить (в чат) определенные строки. к примеру у меня текстовый файл с кучей строк...а мне нуно вывести только последние 3...как это реализовать? И еще одно...дайте пожалуйста прямую ссылку(если таковая есть) на описание (желательно понятное и полное) функции "Serialize". Хочу разобрать ее. Или если кому не сложно опишите ее, как например описали "о захватах"! Заранее СПАСИБО! |
|
|
4.4.2009, 16:39
Сообщение
#286
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Код local h = io.open(Core.GetPtokaXPath().."scripts/test.txt") if h then local iCount = 0 while h:read() do iCount = iCount + 1 end h:seek"set" local sData = h:read() while sData do iCount = iCount - 1 if iCount < 3 then Core.SendToAll(tostring(sData)) end sData = h:read() end end Функцию понимать не нужно, её нужно использовать. Ты сам поймёшь как она работает, когда наберёшься достаточного опыта. |
|
|
4.4.2009, 18:34
Сообщение
#287
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Код local h = io.open(Core.GetPtokaXPath().."scripts/test.txt") if h then local iCount = 0 while h:read() do iCount = iCount + 1 end h:seek"set" local sData = h:read() while sData do iCount = iCount - 1 if iCount < 3 then Core.SendToAll(tostring(sData)) end sData = h:read() end end Функцию понимать не нужно, её нужно использовать. Ты сам поймёшь как она работает, когда наберёшься достаточного опыта. Спасибо..все разобрал функцию. По поводу строк тоже спасибо, щас попробую. |
|
|
6.4.2009, 16:08
Сообщение
#288
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
ScriptMan.GetScript() - Возвращает таблицу этого скрипта с полями sName, bEnabled, iMemUsage.
Аналог API 1: нету ScriptMan.GetScripts() - Возвращает таблицу всех скриптов с полями sName, bEnabled, iMemUsage. Аналог API 1: нету Вопрос! А как получить таблицу конкретного скрипта? к примеру у меня есть скрипт "abc" в птоке...мне надо узнать другим скриптом, запущен он или нет? Подскажите плз! |
|
|
6.4.2009, 18:08
Сообщение
#289
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
спасибо, я ужо сам догнал....просто не успел отписаться что уже не надо)
Я тут просто вот что решил написать...написал скриптик, который позваляет писать код прям в чат...и этот код будет выполняться! т.е. пишу код, автоматические создается скрипт с этим кодом и запускается...(плюч немного функциональности добавил)...но посути получилось что теперь можно использовать в качестве команд - функции ...не знаю делал кто-нить подобное или нет, то чет захотелось сделать этот скрипт посерьезней..буду грейдить дальше) пока сделал так:..пишу команду в AM !conf мне приходит личка, в которой уже предалагается выбрать необходимую функцию и вписать в нее код. На данное время выбор 3 функций : OnStartup() - позволяет выполнить моментально любой код, ChatArrival - ну тут можно пофантазировать, ToArrival() -и тут тоже. После выбора функции предлагается ввести нужный код. и автоматически создается луа файлик с выбранной функцией и написанным кодом в ней, запускается и ессно выполняется... |
|
|
6.4.2009, 18:14
Сообщение
#290
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
мне кажется надо быть аккуратным с такого рода скриптами! Мало ли кто и какой код может написать!
|
|
|
6.4.2009, 18:16
Сообщение
#291
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Хм... Это же элементарно делается. Только вот не знаю что в этом хорошего.
Я всегда стараюсь избежать несанкционированного выполнения кода. Инкапсуляция - один из принципов ООП. Когда выйдет в свет SBot, то ты сможешь увидеть действительную работу инкапсуляции - практически всё защищено, и практически ничего нельзя использовать "глобально". Все переменные исключительно локальные, или как принято в с++ - privat data. Кстати говоря, быстрее всего lua работает именно с локальными переменными. Это в частности связанно с уровнями lua стека. Доступ к переменным на том же уровне является наибыстрейшим. |
|
|
6.4.2009, 18:27
Сообщение
#292
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
да надо быть аккуратным...само собой тобишь доступ дается только избранным к этой возможности...а именно - тем кто разбирается...это действительно не сложно...но мне кажется очень даже полезно. Просто странно что не встречал подобной идеи нигде...еще бы развить эту идею так чтобы не было никаких багов, дырок и прочего говна...пока что вроде норм...
Когда выйдет в свет SBot, то ты сможешь увидеть действительную работу инкапсуляции - практически всё защищено, и практически ничего нельзя использовать "глобально". Все переменные исключительно локальные, или как принято в с++ - privat data. Кстати говоря, быстрее всего lua работает именно с локальными переменными. Это в частности связанно с уровнями lua стека. Доступ к переменным на том же уровне является наибыстрейшим. Вот это вот непонял...и про какой SBot тоже не понял! Если не сложно расскажи... |
|
|
6.4.2009, 18:45
Сообщение
#293
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
См подпись и вот это http://mydc.ru/topic285s0.html?start=0 .
|
|
|
7.4.2009, 19:46
Сообщение
#294
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Добрый вечер! Очередной вопрос:
Есть к примеру таблица: Data = { ["Index"] = "8", ["vicious"] = "test", } Как мне из нее удалить из нее ["vicious"] = "test" ??? Пробую table.remove(Data["vicious"]) - "bad argument #1 to 'remove' (table expected, got string)"...не понимаю какая разница десятичные индексы или стринговые...че не удаляется то? |
|
|
7.4.2009, 20:01
Сообщение
#295
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Код Data["vicious"] = nil table.remove работает только с числовыми индексами кстати как сказал бы Setuper таблички лучше обозначать с буквочкой t т.е. tData))) |
|
|
7.4.2009, 20:09
Сообщение
#296
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Спасибо...насчет буковок согласен с ним...я везде их добавляю, это я здесь только для примера...это же не цитата моего кода была)))
Ееще один вопросик...как узнать текущее время, присвоить его переменной (запомнить)....а потом сравнивать с ним другое текущее время. Коряво изложил суть вопроса, но думаю смысл понятен.!))) Просто мне кажется так будет лучше чем добавлять постоянно таймер... |
|
|
7.4.2009, 20:10
Сообщение
#297
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Хехе. t можно и не писать, но если пишешь t, то придерживаешься венгерской нотации Это для удобства. Так как в lua нет конкретизации в типах, то с помощью венгерской нотации мы следим за тем, какой тип имеет переменная
|
|
|
7.4.2009, 20:12
Сообщение
#298
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
но ведь не обязательно полностью придерживаться.....
|
|
|
7.4.2009, 20:15
Сообщение
#299
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Хехе. t можно и не писать, но если пишешь t, то придерживаешься венгерской нотации Это для удобства. Так как в lua нет конкретизации в типах, то с помощью венгерской нотации мы следим за тем, какой тип имеет переменная знаю знаю...просто учился в основном на ваших скриптах каких-нибудь...поэтому ессно перенимаю ваши привычки. Тоже добавляю буковки...tTable sDate tUser и т.д.. подскажите все-таки по поводу сравнивания времени. Т.е. выполнилась команда, запомнилось текущее время в переменную...и чтобы юзер больше не мог выполнять эту команду пока к примеру не пройдет 30 минут (тупо для примера). Как все это реализовать...подскажите плз... |
|
|
7.4.2009, 20:32
Сообщение
#300
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Код if tData[sNick].iTime then
if tData[sNick].iTime < os.time() then tData[sNick].iTime = os.time() + 1800 --выполнение else --блокировка выполнения end end |
|
|
Похожие темы
|
Сейчас: 27.11.2024, 2:53 |