[macro]макрос+макрос_таймаут aka паралельная работа макросов
Модератор: 4epT
[macro]макрос+макрос_таймаут aka паралельная работа макросов
доброго... пытаюсь релизовать макрос с таймаутом при общей работе блока макросов...
но столкнулся с такой проблемой что при вызове нового макро (при автомакро) исполняимый(текущий) макро прерывается и ожидает завершения следующего... таки не получаеться сделать "абсолютный" таймаут...
пробовал в первый вызываемый автомакро добавить вызов второго макро... -первый стопиться при вызове второго..
пробовал делать отдельным автомакро - результат тот же..
..становиться в ожидание окончания указанного времени не выполняя никаких действий...
таки рибятки подскажите как можно реализовать таймаут...
вообще нужно по таймауту получить macro reset или reload macro (результат одинаковый), может это можно реализовать еще какимто образом?
но столкнулся с такой проблемой что при вызове нового макро (при автомакро) исполняимый(текущий) макро прерывается и ожидает завершения следующего... таки не получаеться сделать "абсолютный" таймаут...
пробовал в первый вызываемый автомакро добавить вызов второго макро... -первый стопиться при вызове второго..
пробовал делать отдельным автомакро - результат тот же..
..становиться в ожидание окончания указанного времени не выполняя никаких действий...
таки рибятки подскажите как можно реализовать таймаут...
вообще нужно по таймауту получить macro reset или reload macro (результат одинаковый), может это можно реализовать еще какимто образом?
Q: Im lazy, I want someone to make all macros that I want. Can someone do it?
...
(c) http://www.openkore.com/
...
(c) http://www.openkore.com/
ога, окей
automacro begin {
zeny < пицот
run-once 1
call start
}
automacro timeout {
zeny < пицот
run-once 1
call reset
delay* 500
}
macro start {
do ..
do ..
do ..
}
macro reset {
pause* 500
do reload macro (macro reset)
}
в общем выполнение макроса start стопиться для выполнения макроса reset по делаю или по паузе - эффект одинаков
2 ночь без сна изза этой херни, излагаю насколько хватает остатков разума...
кароч в итоге нужно получить сброс макроса по таймауту так как переодически автомакро впадают фтупку и не регагируют на release в макро для run-once (подозреваю что именно сдесь пистец закрался)... а при ручном вводе macro reset или reload macro быстро выводит из тупки...
надеюсь понятно, пошол спать, может после сна лучше сформулировать удасться...
automacro begin {
zeny < пицот
run-once 1
call start
}
automacro timeout {
zeny < пицот
run-once 1
call reset
delay* 500
}
macro start {
do ..
do ..
do ..
}
macro reset {
pause* 500
do reload macro (macro reset)
}
в общем выполнение макроса start стопиться для выполнения макроса reset по делаю или по паузе - эффект одинаков
2 ночь без сна изза этой херни, излагаю насколько хватает остатков разума...
кароч в итоге нужно получить сброс макроса по таймауту так как переодически автомакро впадают фтупку и не регагируют на release в макро для run-once (подозреваю что именно сдесь пистец закрался)... а при ручном вводе macro reset или reload macro быстро выводит из тупки...
надеюсь понятно, пошол спать, может после сна лучше сформулировать удасться...
Q: Im lazy, I want someone to make all macros that I want. Can someone do it?
...
(c) http://www.openkore.com/
...
(c) http://www.openkore.com/
nikitaaa
если я ничего не путаю, именно подобная проблема с распараллеливанием макросов требует написания ddo плагина. (do с задержкой) В принципе, можешь поиграться с параметром macro_orphans - мб поможет... Кроме того, эту перегрузку раз в 500 секунд можно добавить в сам макро-плагин, чтобы в дальнейшем не мучаться.
PS А, если честно, проблема с "затупами" макро-плагина у меня была только при попытке делать какие-то несвойственные вещи перед окончанием macro_delay'а, да и после. Ну а это уже было следствием на тот момент хренового интернета
если я ничего не путаю, именно подобная проблема с распараллеливанием макросов требует написания ddo плагина. (do с задержкой) В принципе, можешь поиграться с параметром macro_orphans - мб поможет... Кроме того, эту перегрузку раз в 500 секунд можно добавить в сам макро-плагин, чтобы в дальнейшем не мучаться.
PS А, если честно, проблема с "затупами" макро-плагина у меня была только при попытке делать какие-то несвойственные вещи перед окончанием macro_delay'а, да и после. Ну а это уже было следствием на тот момент хренового интернета
Превосходство некоторых людей над окружающими одни считают несправедливостью, требующей уравнивания, другие - неполноценностью недовольных.
Выбор взгляда за Вами...
Выбор взгляда за Вами...
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
Все равно не совсем понятно, что это значит.
С другой стороны, ты можешь попробовать "подергать" макрос со стороны.
Например так, вкраце:
doCommand macro reset {
timeout большой
}
______________________________________________________________
Развернутый вариант мог бы выглядеть так:
"Задача - встроить в макрос таймаут; т.е., если выполнение макро началось, но не закончилось в срок, прервать его!"
doCommand macro reset; {
label nmi
timeout 60
disabled 1
}
automacro buggy_macros {
мои_условия
timeout 1 <-- шоб не мотылялся
call {
do conf nmi.disabled 0 <-- разрешаем сброс
# ^^^^^^ надеюсь, это сработает без reload config (((
pause 2 <-- где-то тут он сбросится в первый раз, и запустится заново;
pause 2
# <-- сюда он попадет "со второго входа в макро", и в это время течет таймаут блока "nmi";
....мой_глюкавый_макрос_тут...
do conf nmi.disabled 1 <-- запрещаем сброс, если успешно достигнут конец макро;
}
}
Но это тоже черновик. Он непонятно как будет работать, если времени чууууть-чуть не хватило. Тогда в следующий раз макрос может сбросится на самом неожиданном месте.
Короче, толковых идей нет.
______________________________________________________________
Если бы мы сделали ddo (а пока его нет), все было бы гораздо проще:
automacro my_buggy_code {
мои_условия
call{
do ddo 20 macro reset
...мой глюкавый макрос...
}
}
______________________________________________________________
С другой стороны, если у тебя макрос прерывается, и начинается заново, никто не мешает тебе это проверить. Делаем переменную например в конфиге:
inMacro 0
И, в макросе, лепим что-либо наподобии:
automacro my_buggy_code_3 {
мои_условия
call{
если инМакро=1 тогда например релог <--- в этом я не особо уверен;
do conf inMacro 1
...мой глюкавый макрос...
do conf inMacro 0
}
}
С другой стороны, ты можешь попробовать "подергать" макрос со стороны.
Например так, вкраце:
doCommand macro reset {
timeout большой
}
______________________________________________________________
Развернутый вариант мог бы выглядеть так:
"Задача - встроить в макрос таймаут; т.е., если выполнение макро началось, но не закончилось в срок, прервать его!"
doCommand macro reset; {
label nmi
timeout 60
disabled 1
}
automacro buggy_macros {
мои_условия
timeout 1 <-- шоб не мотылялся
call {
do conf nmi.disabled 0 <-- разрешаем сброс
# ^^^^^^ надеюсь, это сработает без reload config (((
pause 2 <-- где-то тут он сбросится в первый раз, и запустится заново;
pause 2
# <-- сюда он попадет "со второго входа в макро", и в это время течет таймаут блока "nmi";
....мой_глюкавый_макрос_тут...
do conf nmi.disabled 1 <-- запрещаем сброс, если успешно достигнут конец макро;
}
}
Но это тоже черновик. Он непонятно как будет работать, если времени чууууть-чуть не хватило. Тогда в следующий раз макрос может сбросится на самом неожиданном месте.
Короче, толковых идей нет.
______________________________________________________________
Если бы мы сделали ddo (а пока его нет), все было бы гораздо проще:
automacro my_buggy_code {
мои_условия
call{
do ddo 20 macro reset
...мой глюкавый макрос...
}
}
______________________________________________________________
С другой стороны, если у тебя макрос прерывается, и начинается заново, никто не мешает тебе это проверить. Делаем переменную например в конфиге:
inMacro 0
И, в макросе, лепим что-либо наподобии:
automacro my_buggy_code_3 {
мои_условия
call{
если инМакро=1 тогда например релог <--- в этом я не особо уверен;
do conf inMacro 1
...мой глюкавый макрос...
do conf inMacro 0
}
}
*эх, не успел уснуть, отписали =)
идея отлична тока получаете при do conf он сам обновляться... аля релоад не надо... но он циклиться начинает =)
conf disable 0
macro reset
conf disable 0
macro reset
conf disable 0
.... =)
касательно релога, он не сбрасывает макросы, то бишь макро при релоге продолжает выполнять невыполненный план
идея отлична тока получаете при do conf он сам обновляться... аля релоад не надо... но он циклиться начинает =)
conf disable 0
macro reset
conf disable 0
macro reset
conf disable 0
.... =)
касательно релога, он не сбрасывает макросы, то бишь макро при релоге продолжает выполнять невыполненный план
Q: Im lazy, I want someone to make all macros that I want. Can someone do it?
...
(c) http://www.openkore.com/
...
(c) http://www.openkore.com/
-
- Энтузиаст
- Сообщения: 100
- Зарегистрирован: Вс фев 25, 2007 4:04 pm
- Откуда: Сыктывкар
Re: [macro]макрос+макрос_таймаут aka паралельная работа макросов
Как это можно сделать?nikitaaa писал(а):при вызове нового макро (при автомакро) исполняимый(текущий) макро прерывается и ожидает завершения следующего...
Присоединяюсь к последнему автору.
У меня макрос прерывается и не продолжается.
Касяк в том, что макрос Y срабатывает в момент do talknpc ,делает своё дело, а после этого log из макроса Z не выводится.
У меня макрос прерывается и не продолжается.
Код: Выделить всё
automacro z {
call z
run-once 1
}
macro z{
do move
do talknpc
log Damn!
}
automacro y {
console /text/
call {
...
}
run-once 1
}