Сработка автомакро по времени / время в консоли - решено
Модератор: 4epT
Правила форума
В форуме макросы "Макросы" разрешено только задавать вопросы по уже существующим макросам и просить помощь по недоработанным своим. При этом таким считается тот макрос который готов не менее чем на 2/3.
Если вы хотите попросить участников сообщества написать вам макрос, это можно сделать в разделе "сервис".
В форуме макросы "Макросы" разрешено только задавать вопросы по уже существующим макросам и просить помощь по недоработанным своим. При этом таким считается тот макрос который готов не менее чем на 2/3.
Если вы хотите попросить участников сообщества написать вам макрос, это можно сделать в разделе "сервис".
- miniBot
- Грамотный
- Сообщения: 429
- Зарегистрирован: Вс ноя 05, 2006 8:48 am
- Откуда: Москва
- Контактная информация:
Сработка автомакро по времени / время в консоли - решено
Вобщем нужно чтобы автомакрос срабатывал на определенное текущее системное время, в мануале нет такого оператора, а запрашивать грубо говоря каждые 5 минут сервер - палевно.
Последний раз редактировалось miniBot Чт ноя 08, 2007 4:31 pm, всего редактировалось 1 раз.
помощь только тем у кого включен параметр - mozgEnable 1
БОТАТЬ, БОТАТЬ, И ЕЩЕ РАЗ БОТАТЬ, КАК ЗАВЕЩАЛ ВЕЛИКИЙ ЛЕНИН
БОТАТЬ, БОТАТЬ, И ЕЩЕ РАЗ БОТАТЬ, КАК ЗАВЕЩАЛ ВЕЛИКИЙ ЛЕНИН
- 4epT
- macro-маньячина
- Сообщения: 2792
- Зарегистрирован: Чт дек 21, 2006 1:23 pm
- Сервер RO:: 4game
- Discord: ya4ept#8494
- Контактная информация:
miniBot, ну и чё ты предлагаешь?
может кто-то пожуёт вот это и что-нибудь куда-нить (желательно к do-commander'у) прикрути?
зы:
файл CoreLogic.pm, в конфиге:
может кто-то пожуёт вот это и что-нибудь куда-нить (желательно к do-commander'у) прикрути?
Код: Выделить всё
##### AUTOBREAKTIME #####
# Break time: automatically disconnect at certain times of the day
sub processAutoBreakTime {
if (timeOut($AI::Timeouts::autoBreakTime, 30)) {
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
my $hormin = sprintf("%02d:%02d", $hour, $min);
my @wdays = ('sun','mon','tue','wed','thu','fri','sat');
debug "autoBreakTime: hormin = $hormin, weekday = $wdays[$wday]\n", "autoBreakTime", 2;
for (my $i = 0; exists $config{"autoBreakTime_$i"}; $i++) {
next if (!$config{"autoBreakTime_$i"});
if ( ($wdays[$wday] eq lc($config{"autoBreakTime_$i"})) || (lc($config{"autoBreakTime_$i"}) eq "all") ) {
if ($config{"autoBreakTime_${i}_startTime"} eq $hormin) {
my ($hr1, $min1) = split /:/, $config{"autoBreakTime_${i}_startTime"};
my ($hr2, $min2) = split /:/, $config{"autoBreakTime_${i}_stopTime"};
my $time1 = $hr1 * 60 * 60 + $min1 * 60;
my $time2 = $hr2 * 60 * 60 + $min2 * 60;
my $diff = ($time2 - $time1) % (60 * 60 * 24);
message TF("\nDisconnecting due to break time: %s to %s\n\n", $config{"autoBreakTime_$i"."_startTime"}, $config{"autoBreakTime_$i"."_stopTime"}), "system";
chatLog("k", TF("*** Disconnected due to Break Time: %s to %s ***\n", $config{"autoBreakTime_$i"."_startTime"}, $config{"autoBreakTime_$i"."_stopTime"}));
$timeout_ex{'master'}{'timeout'} = $diff;
$timeout_ex{'master'}{'time'} = time;
$KoreStartTime = time;
$net->serverDisconnect();
AI::clear();
undef %ai_v;
$net->setState(Network::NOT_CONNECTED);
undef $conState_tries;
last;
}
}
}
$AI::Timeouts::autoBreakTime = time;
}
}
файл CoreLogic.pm, в конфиге:
autoBreakTime {
startTime
stopTime
}
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
2Афтар, ну если не мудрствовать лукаво, то специально для любителей разгребать регекспами (хе-хе) мона написать плагинчег time.pl
Типо будет команда time, и она будет что-нибудь писать в консоль.
* * *
А если "мудрствовать" то была у нас классная идея (щас она лежит на кладбище) написать модный шедулер к Коре; оно бы среди всего прочего могло заниматься и выполнением разных команд в определенное время.
Типо будет команда time, и она будет что-нибудь писать в консоль.
* * *
А если "мудрствовать" то была у нас классная идея (щас она лежит на кладбище) написать модный шедулер к Коре; оно бы среди всего прочего могло заниматься и выполнением разных команд в определенное время.
- miniBot
- Грамотный
- Сообщения: 429
- Зарегистрирован: Вс ноя 05, 2006 8:48 am
- Откуда: Москва
- Контактная информация:
а вот еще, я вобщем не очень в перле понимаю, но всеже, не подскажите в каком файлике вобще кора выводит на консоль сообщение. Ведь в моем случае, просто если подставить перед любым сообщением в консоль время, то и сработку макро на консольку можно поставить.
тоесть вместо
[100/100] You attack Monster
былобы
[18:15][100/100] You attack Monster
тоесть вместо
[100/100] You attack Monster
былобы
[18:15][100/100] You attack Monster
помощь только тем у кого включен параметр - mozgEnable 1
БОТАТЬ, БОТАТЬ, И ЕЩЕ РАЗ БОТАТЬ, КАК ЗАВЕЩАЛ ВЕЛИКИЙ ЛЕНИН
БОТАТЬ, БОТАТЬ, И ЕЩЕ РАЗ БОТАТЬ, КАК ЗАВЕЩАЛ ВЕЛИКИЙ ЛЕНИН
- miniBot
- Грамотный
- Сообщения: 429
- Зарегистрирован: Вс ноя 05, 2006 8:48 am
- Откуда: Москва
- Контактная информация:
ВОТ блин тупни-то все, а я иду под флагом тупней, ыыы.
Вобщем начну с конца, в Коре ЕСТЬ возможность выводить текущее время на консоль.
Дело было так, вскрыл файло Log.pm обнаружил очень интересные параметры файла config.txt, используемые в этом файле, которые привели меня к повторному прочтению мануала по этим параметрам, и я был в шоке! Велосипедик-то изобрели до нас!
И так параметры в студию! ТАДААААА.....
showTime - отображает на консоль полную дату, но ксожалению макрос её не видит, (или у меня руки кривые)
Поэтому спустился в мануале к следующему параметру
showTimeDomains - список в каких строках выводить время, у меня получился небольшой списочег - ai_attack, ai_npcTalk, attacked, attackedMiss, attackMon, attackMonMiss, connection, console, deal, drop, emotion, exp, equip, follow, guildchat, guildnotice, info, input, inventor, list, load, looter, map_event, npc,party, partychat, pet, plugins, pm, pm/sent ,portals, portalRecord, publicchat, refine, route, route_teleport, schat, selfSkill, skill, sold, startup, storage, success, syntax, system, teleport, useItem, useTeleport, waypoint, xkore
ну и самое главное, чтобы не засорять полной датой консоль
showTimeDomainsFormat
итого у меня получилось
config.txt
в консольке получается что-то типа
ну и теперь остается захватить времечко макросом
macros.txt
Вот только насчет регулярного выражения не силен
квадратная скобка - метасимвол, поэтому обратный слеш перед ним.
04 34 в скобках с прямым разделителем - либо то либо то
точка - это любой символ???
Вобщем начну с конца, в Коре ЕСТЬ возможность выводить текущее время на консоль.
Дело было так, вскрыл файло Log.pm обнаружил очень интересные параметры файла config.txt, используемые в этом файле, которые привели меня к повторному прочтению мануала по этим параметрам, и я был в шоке! Велосипедик-то изобрели до нас!
И так параметры в студию! ТАДААААА.....
showTime - отображает на консоль полную дату, но ксожалению макрос её не видит, (или у меня руки кривые)
Поэтому спустился в мануале к следующему параметру
showTimeDomains - список в каких строках выводить время, у меня получился небольшой списочег - ai_attack, ai_npcTalk, attacked, attackedMiss, attackMon, attackMonMiss, connection, console, deal, drop, emotion, exp, equip, follow, guildchat, guildnotice, info, input, inventor, list, load, looter, map_event, npc,party, partychat, pet, plugins, pm, pm/sent ,portals, portalRecord, publicchat, refine, route, route_teleport, schat, selfSkill, skill, sold, startup, storage, success, syntax, system, teleport, useItem, useTeleport, waypoint, xkore
ну и самое главное, чтобы не засорять полной датой консоль
showTimeDomainsFormat
итого у меня получилось
config.txt
Код: Выделить всё
showTimeDomains ai_attack, ai_npcTalk, attacked, attackedMiss, attackMon, attackMonMiss, connection, console, deal, drop, emotion, exp, equip, follow, guildchat, guildnotice, info, input, inventor, list, load, looter, map_event, npc,party, partychat, pet, plugins, pm, pm/sent ,portals, portalRecord, publicchat, refine, route, route_teleport, schat, selfSkill, skill, sold, startup, storage, success, syntax, system, teleport, useItem, useTeleport, waypoint, xkore
showTimeDomainsFormat [H:M]
Код: Выделить всё
[15:57] Attacking: Monster Drops (0)
[15:57] [ 51/100] You attack Monster Drops (0) - Dmg: Miss! (delay 58.7)
[15:57] [ 51/100] You attack Monster Drops (0) - Dmg: 13 (delay 58.7)
[15:57] [ 51/100] Monster Drops (0) attacks you - Dmg: Miss! (delay 67.2)
[15:57] [ 51/100] You attack Monster Drops (0) - Dmg: 35 (delay 58.7)
[15:57] [ 53/100] Monster Drops (0) attacks you - Dmg: 7 (delay 67.2)
[15:57] [ 53/100] You attack Monster Drops (0) - Dmg: 34 (delay 58.7)
[15:57] Exp gained: 4/3 (0.57%/0.00%)
[15:57] Item added to inventory: Jellopy (1) x 1 - Non-usable
[15:57] Item added to inventory: Apple (19) x 1 - Usable
[15:57] Target died
[15:57] You used Item: Apple (19) x 1 - 0 left
[15:57] Calculating random route to: Sograt Desert(moc_fild07): 342, 57
macros.txt
Код: Выделить всё
automacro antibot02 {
console /\[..:(04|34)\]/i
call {
do relog 70
}
}
квадратная скобка - метасимвол, поэтому обратный слеш перед ним.
04 34 в скобках с прямым разделителем - либо то либо то
точка - это любой символ???
помощь только тем у кого включен параметр - mozgEnable 1
БОТАТЬ, БОТАТЬ, И ЕЩЕ РАЗ БОТАТЬ, КАК ЗАВЕЩАЛ ВЕЛИКИЙ ЛЕНИН
БОТАТЬ, БОТАТЬ, И ЕЩЕ РАЗ БОТАТЬ, КАК ЗАВЕЩАЛ ВЕЛИКИЙ ЛЕНИН
- 4epT
- macro-маньячина
- Сообщения: 2792
- Зарегистрирован: Чт дек 21, 2006 1:23 pm
- Сервер RO:: 4game
- Discord: ya4ept#8494
- Контактная информация:
если использовать:
то макрос не будет срабатывать на строчки, типа:
а ещё можно так придумать:
Итак немного понтов:
и мы будем реагировать на строчки, типа:
Код: Выделить всё
console /\[\d\d:(04|34)\]/
ну малоли где такое попадётся[ы!:04] бла бла бла
[ы?:34] бла бла бла
а ещё можно так придумать:
Код: Выделить всё
do relog @rand(65,75)
ну как же "macro-маньячина" пропустит такое заявлениено ксожалению макрос её не видит, (или у меня руки кривые)
Итак немного понтов:
Код: Выделить всё
console /\[... \d+ \d\d:(34|04):\d\d \d+\.\d]/
ЗЫ: Памятка по регулярным выражениям (regexp)[Oct 19 17:04:12 2007.98] бла бла бла
[Oct 19 17:34:12 2007.98] бла бла бла
забавное решение.
естественно если повыключать все сообщения из консоли, то шанс срабатывания макроса стремительно падает к нулю
пока царапал эти 3 строчки - вопрос возник ...
а если в 1 секунду происходит несколько действий отображаемых в консоли? О_о
вобщем нацарап0л0сь вот тут такая шняжка
чесно скажу, НЕ ПРОВЕРЯЛ
1)неначем, нет живого бота куда бы можно было это всунуть (((
2)нечем чес слово, долго думал, и не нашел кудабы данную фигню втыкнуть, и для каких цэлей использовать
вобщем в конфиг файл вписываем строки
startup_time часы:минуты:секунды --- обязательно разделённые двоеточиями
startup_macro имя_макроса_на_выполнение
в папке plugins создаём файл budilnik.pl с таким содержанием
теоретически, в определённое время, в консоль должна выдаца команда macro macro_name_from_config, ну и естественно выполницц0 макрос ....
вобщем попробуйте, если не сложно, отпишите с результатом
естественно если повыключать все сообщения из консоли, то шанс срабатывания макроса стремительно падает к нулю
пока царапал эти 3 строчки - вопрос возник ...
а если в 1 секунду происходит несколько действий отображаемых в консоли? О_о
вобщем нацарап0л0сь вот тут такая шняжка
чесно скажу, НЕ ПРОВЕРЯЛ
1)неначем, нет живого бота куда бы можно было это всунуть (((
2)нечем чес слово, долго думал, и не нашел кудабы данную фигню втыкнуть, и для каких цэлей использовать
вобщем в конфиг файл вписываем строки
startup_time часы:минуты:секунды --- обязательно разделённые двоеточиями
startup_macro имя_макроса_на_выполнение
в папке plugins создаём файл budilnik.pl с таким содержанием
Код: Выделить всё
use Time::localtime;
my $datetime = localtime->hour().":".localtime->min().":".localtime->sec();
my $ai_hook;
my $secc;
my $macro_name;
my $macro_time;
Plugins::register('budilNic', 'alarm in some times', \&event_unload, \&event_reload);
$ai_hook = Plugins::addHook('AI_pre', \&init);
sub init {
if ($Globals::config{'startup_time'}) {
$macro_time=$Globals::config{'startup_time'};
if ($Globals::config{'startup_macro'}) {
$macro_name=$Globals::config{'startup_macro'};
$secc=localtime->sec();
if($secc<10){
$secc="0".localtime->sec();
}else {
$secc=localtime->sec();
}
$datetime = localtime->hour().":".localtime->min().":".$secc;
if($mytime eq $datetime){
printf "macro ".$macro_name;
};
sleep (1);
}
}
}
вобщем попробуйте, если не сложно, отпишите с результатом
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
Почти оффтопик, и почти флуд.
varg
Если уж ты так крут, што модные плагины пишеш, так может и мне один сообразишь?
Почти по этой теме задачка:
viewtopic.php?t=282
"Задачка №10: Команда ddo - отложенное исполнение команд[old]"
varg
Если уж ты так крут, што модные плагины пишеш, так может и мне один сообразишь?
Почти по этой теме задачка:
viewtopic.php?t=282
"Задачка №10: Команда ddo - отложенное исполнение команд[old]"
piroJOKE
ну если особо сильно не вкуривать в
(если чесно не умею еще общаццо с командной строкой ОК , да и перл я только только начал изучать, а ОК хороший полигон для его изучения)
то в принципе твоя задача абсолютно идентична задачи miniBot
и представляет из себя не что иное как обычный шедулер
вот собстно, влез в исходники crontaba, повыциплял нужное, и заделал под ОК
конечно, на полноценный плугин не тянет, но как идея выступать может
единственное, опять, выкладываю без тестов ...
так что кто проверит - отпишитесь плиз
занимается тем что
выдает в консоль команду через определённое время
структура
crontab содержание идентично синтаксису cron
ну если особо сильно не вкуривать в
Код: Выделить всё
ddo (время) (командная строка)
и вспомогательные:
ddo stop (ddo s)- очистить очередь отложенных команд;
ddo list (ddo l) - показать список команд в очереди;
то в принципе твоя задача абсолютно идентична задачи miniBot
и представляет из себя не что иное как обычный шедулер
вот собстно, влез в исходники crontaba, повыциплял нужное, и заделал под ОК
конечно, на полноценный плугин не тянет, но как идея выступать может
единственное, опять, выкладываю без тестов ...
так что кто проверит - отпишитесь плиз
занимается тем что
выдает в консоль команду через определённое время
структура
Код: Выделить всё
[logs]
[plugins]
|-cron.pm
|-cron.pl
crontab
- Вложения
-
- cron.zip
- структура
[logs]
[plugins]
..|-cron.pm
..|-cron.pl
crontab - (2.8 КБ) 86 скачиваний
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
О Аллах! Кнонтабы в... ОК, это будет нечто!
Добавлено спустя 1 минуту 28 секунд:
Господа, а ну как мы две темы объединим? Будет легкая неразбериха, но... зато в одной куче; что скажете?
Добавлено спустя 34 минуты 26 секунд:
Весёлый ты парень, varg, хе-хе:
sub init {
Добавлено спустя 1 минуту 28 секунд:
Господа, а ну как мы две темы объединим? Будет легкая неразбериха, но... зато в одной куче; что скажете?
Добавлено спустя 34 минуты 26 секунд:
Весёлый ты парень, varg, хе-хе:
sub init {
- $icur_secs = time();
$icur_mins = int ( $icur_secs / 60 );
$next_mins = $icur_mins + 1;
$next_secs = $next_mins * 60;
$sleep_secs = $next_secs - $icur_secs;
sleep( $sleep_secs );
...