Перезагрузка Скрипта По Таймеру, собственно сабж |
Здравствуйте, гость ( Вход | Регистрация )
Перезагрузка Скрипта По Таймеру, собственно сабж |
28.3.2009, 1:07
Сообщение
#1
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 8 Регистрация: 8.8.2008 Пользователь №: 345 Спасибо сказали: 1 раз |
В общем есть код, который выводит сообщение в общий чат по установленному таймеру.
Код sTime = 5 -- Время в минутах sBot = SetMan.GetString(21) function OnStartup() TmrMan.AddTimer(sTime*60000) end function OnTimer() Core.SendToAll("<"..sBot.."> сообщение") end нужно что-бы вместо вывода сообщения запускалась команда, а точнее !restartscript scriptname.lua или-же другим способом добиться перезапуска скрипта по таймеру! уже всю голову изломал... помогите пожалуйста API2 |
|
|
28.3.2009, 1:21
Сообщение
#2
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Во-первых, не в тот раздел пишешь. Перемещаю в нужный радел.
Во-вторых, команды можно вызвать только клиентом. Скрипт не вызывает команд, а только обрабатывает их. В-третьих, для перезагрузки скриптов в API2 существует функция Код ScriptMan.RestartScript(sScriptName) В-четвёртых, не надо ломать голову, она ещё пригодится, надо просто почитать какие функции бывают в файле scripting-interface.txt |
|
|
28.3.2009, 12:08
Сообщение
#3
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 8 Регистрация: 8.8.2008 Пользователь №: 345 Спасибо сказали: 1 раз |
большое спасибо за помощь! вот что у меня вышло:
Код sTime = 2 -- Время в минутах sBot = SetMan.GetString(21) function OnStartup() TmrMan.AddTimer(sTime*60000) end function OnTimer() ScriptMan.RestartScript(ScriptMan.GetScript().sName) end всё легко и просто. извиняюсь что создал тему не в том разделе... еще не совсем разобрался у вас на форуме |
|
|
28.3.2009, 15:42
Сообщение
#4
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
вообще то поидеи если надо перезапустить все скрипты, то
Код sTime = 2 -- Время в минутах
sBot = SetMan.GetString(21) function OnStartup() TmrMan.AddTimer(sTime*60000) end function OnTimer() tScripts = ScriptMan.GetScript() for i,v in pairs(tScripts) do ScriptMan.RestartScript(v.sName) end end |
|
|
28.3.2009, 16:41
Сообщение
#5
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 8 Регистрация: 8.8.2008 Пользователь №: 345 Спасибо сказали: 1 раз |
Warnier,
спасибо мне нужно было для перезапуска одного скрипта, того в котором это написано... |
|
|
28.3.2009, 16:53
Сообщение
#6
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
просто вот этот код
Код ScriptMan.RestartScript(ScriptMan.GetScript().sName) не должен работать! |
|
|
28.3.2009, 17:26
Сообщение
#7
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 8 Регистрация: 8.8.2008 Пользователь №: 345 Спасибо сказали: 1 раз |
|
|
|
28.3.2009, 18:04
Сообщение
#8
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
а как ты это определяешь?
напиши в функции OnStarup следующий код Код Core.SendToAll(tostring(ScriptMan.GetScript().sName)) и он ничего не вернёт! а вот тут должно быть имя скрипта Код ScriptMan.RestartScript("скрипт.lua")
|
|
|
28.3.2009, 19:10
Сообщение
#9
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Wariner, ты не прав.
Функция ScriptMan.GetScript() работает только после запуска скрипта, поэтому если скрипт уже запущен, то она будет работать, а если скрипт только запускается, то во время запуска она не работает. В случае работы по таймеру всё будет работать. |
|
|
28.3.2009, 19:26
Сообщение
#10
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
ну блин я проверил этот код http://mydc.ru/ipb.html?s=&showtopic=1...ost&p=12935
Цитата [19:25] Синтаксис test.lua:10: attempt to call field 'GetScript' (a nil value)
|
|
|
28.3.2009, 19:33
Сообщение
#11
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
хм... значит плохо проверял.
У меня всё работает |
|
|
28.3.2009, 20:00
Сообщение
#12
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
тогда объясни почему это должно работать?
ведь ScriptMan.GetScript() вернёт таблицу типа: Код t = { [1] = { [sName] = "Скрипт" .... }, [2] = { [sName] = "Скрипт2" .... }, } куда мы деваем промежуточный индекс и как скрипт определит что это нужный скрипт для рестарта? |
|
|
28.3.2009, 20:09
Сообщение
#13
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
ты путаешь функции
ScriptMan.GetScript() и ScriptMan.GetScripts() |
|
|
28.3.2009, 20:13
Сообщение
#14
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
ухахахаха оно и правильно))) я по привычке лазею в скрипт интерфейс 0400 птоки и тестил на ней......................
|
|
|
28.3.2009, 20:17
Сообщение
#15
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Это уже тонкости API2
Хотя если используешь 0.4.0.0, почему бы не перейти на 0.4.1.1 ? Учитывая то, что 0.4.1.1 более стабильная версия, в которой множество фиксов и добавлений. |
|
|
28.3.2009, 20:21
Сообщение
#16
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
продолжаем оффтоп))) я уже перешёл а на рабочем столе остались старые тестовые хабы....
|
|
|
Похожие темы
|
Сейчас: 23.11.2024, 15:42 |