[macro]макрос+макрос_таймаут aka паралельная работа макросов

Дополнения к OpenKore, расширяющиее её функциональность, называются плагинами.

Модератор: 4epT

nikitaaa
Начинающий
Сообщения: 44
Зарегистрирован: Чт ноя 16, 2006 5:45 pm

[macro]макрос+макрос_таймаут aka паралельная работа макросов

Сообщение nikitaaa »

доброго... пытаюсь релизовать макрос с таймаутом при общей работе блока макросов...
но столкнулся с такой проблемой что при вызове нового макро (при автомакро) исполняимый(текущий) макро прерывается и ожидает завершения следующего... таки не получаеться сделать "абсолютный" таймаут...
пробовал в первый вызываемый автомакро добавить вызов второго макро... -первый стопиться при вызове второго..
пробовал делать отдельным автомакро - результат тот же..
..становиться в ожидание окончания указанного времени не выполняя никаких действий...
таки рибятки подскажите как можно реализовать таймаут...
вообще нужно по таймауту получить 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/
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Лучше бы тебе изложить задачу как-то попроще.
Представь себе, что ты пытаешься объяснить ее дошкольнику. :twisted:
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
nikitaaa
Начинающий
Сообщения: 44
Зарегистрирован: Чт ноя 16, 2006 5:45 pm

Сообщение nikitaaa »

ога, окей
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/
Antarx
Бывалый
Сообщения: 640
Зарегистрирован: Вс янв 07, 2007 5:56 am

Сообщение Antarx »

nikitaaa
если я ничего не путаю, именно подобная проблема с распараллеливанием макросов требует написания ddo плагина. (do с задержкой) В принципе, можешь поиграться с параметром macro_orphans - мб поможет... Кроме того, эту перегрузку раз в 500 секунд можно добавить в сам макро-плагин, чтобы в дальнейшем не мучаться.

PS А, если честно, проблема с "затупами" макро-плагина у меня была только при попытке делать какие-то несвойственные вещи перед окончанием macro_delay'а, да и после. Ну а это уже было следствием на тот момент хренового интернета :wink:
Превосходство некоторых людей над окружающими одни считают несправедливостью, требующей уравнивания, другие - неполноценностью недовольных.
Выбор взгляда за Вами...
Изображение :)
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Все равно не совсем понятно, что это значит.

С другой стороны, ты можешь попробовать "подергать" макрос со стороны.
Например так, вкраце:

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
}
}
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
nikitaaa
Начинающий
Сообщения: 44
Зарегистрирован: Чт ноя 16, 2006 5:45 pm

Сообщение nikitaaa »

*эх, не успел уснуть, отписали =)

идея отлична тока получаете при 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/
Maksimilianoo
Энтузиаст
Сообщения: 100
Зарегистрирован: Вс фев 25, 2007 4:04 pm
Откуда: Сыктывкар

Re: [macro]макрос+макрос_таймаут aka паралельная работа макросов

Сообщение Maksimilianoo »

nikitaaa писал(а):при вызове нового макро (при автомакро) исполняимый(текущий) макро прерывается и ожидает завершения следующего...
Как это можно сделать?
CaToH
Начинающий
Сообщения: 47
Зарегистрирован: Вт сен 04, 2007 9:40 pm

Сообщение CaToH »

Присоединяюсь к последнему автору.
У меня макрос прерывается и не продолжается.

Код: Выделить всё

automacro z {
	call z
	run-once 1
}

macro z{
	do move 
	do talknpc 
    log Damn!
}

automacro y {
	console /text/
	call {
		...
	}
	run-once 1
}
Касяк в том, что макрос Y срабатывает в момент do talknpc ,делает своё дело, а после этого log из макроса Z не выводится.
qwesty
Энтузиаст
Сообщения: 97
Зарегистрирован: Чт сен 20, 2007 4:31 am
Откуда: СПб
Контактная информация:

Сообщение qwesty »

Может я чего не понял, но exclusive 1 разве не поможет?
aka sllh
QWESTY TEAM
CaToH
Начинающий
Сообщения: 47
Зарегистрирован: Вт сен 04, 2007 9:40 pm

Сообщение CaToH »

qwesty писал(а):Может я чего не понял, но exclusive 1 разве не поможет?
Если стоит exclusive 1 у макроса Z, то у меня автомакросы не тригаются на текст ,который выдает НПЦ в макросе Z.
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Сообщение 4epT »

Макросы - они вообще не предназначены на параллельную работу.. Научите корову гавкать?
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
CaToH
Начинающий
Сообщения: 47
Зарегистрирован: Вт сен 04, 2007 9:40 pm

Сообщение CaToH »

Не буду спорить о предназначении макросов, но все-таки в доку про плагин было бы здорово это добавить.

З.Ы.
У меня правда есть такое щемящее чувство ,что все-таки иногда прерванный макрос продолжался... :P
Ответить