Страница 1 из 1
Ботом запустить бота / плагин Launch
Добавлено: Пт дек 14, 2007 12:53 pm
Lims
Добрый день
Появилась необходимость запустить из одного бота другого бота. Как это можно сделать? Например срабатывает макрос и бот запускает другого бота. Хочу сделать прохождение квеста на найта, но на 40джобе он еще слишком мал чтобы бить лут на квест и я хочу чтобы он запускал другого бота и брал у него нужный лут на квест.
[mod="piroJOKE"]благодаря тому, что афтар Kissa2k сбацал полезный плагин "лаунч" (см. ниже) тема стала полезной![/mod]
[mod="piroJOKE"]заголовок темы изменен[/mod]
Добавлено: Пт дек 14, 2007 1:08 pm
jack_spa
Думаю,через
eval
4epT писал(а):В принципе эта команда оценивает выражение Perl
Добавлено: Пт дек 14, 2007 1:16 pm
Kissa2k
Написал небольшой примитивный плагин, умеющий запускать приложения.
Что он делает? Он регистрирует команду launch <путь_к_бинарнику>. С ее помощью происходит запуск указанного приложения.
Можно работать с ней при помощи
Macro плагина или
doCommand плагина.
Чуть позже немного изменю его для более удобного использования.
Протестировано: MS Windows XP, Ubuntu Linux 7.10.
Известные баги: в пути к исполняемому файлу не должно быть кириллицы, иначе он не запуститься.
Код: Выделить всё
#appLauncher
#Usage: launch < patch >. Where < patch > is a patch to your application
#By Kissa2k
package appLauncher;
use strict;
use Globals;
use Plugins;
use Log qw(debug message warning error);
use Commands;
use Utils;
Plugins::register('appLauncher', 'Launch MS Windows/Unix applications.', \&Unload, \&Unload);
my $hook = Commands::register(
['launch','Launch MS Windows/Unix applications.',\&launch]
);
sub Unload {
Commands::unregister($hook);
}
sub launch {
my (undef, $args) = @_;
my @args = split(/ /, $args);
if($args[0]){
launchApp(1, $args[0]);
message "Launching $args[0]\n";
}else{
message("Syntax Error in function 'launch'\nUsage: launch < patch >\nWhere < patch > is a patch to your application.\n","info");
}
}
return 1;
Добавлено: Пт дек 14, 2007 1:28 pm
Lims
Kissa2k
Спасибо большое!
[mod="piroJOKE"]присоединяюсь! отличная работа![/mod]
Добавлено: Вт мар 11, 2008 11:22 am
dimmka
у меня получается полный бред при запуске одним ботом другого. Бот который запускает каким то образом подставляет свой конфиг в запускаемый и получается Dual login prohibited (это если запускать в wxstart другого. Если же вызывать start.exe, он открывается в окне бота, который его вызвал(((

)
Добавлено: Вт мар 11, 2008 12:09 pm
piroJOKE
Даже если то, что ты говоришь - правда (надо проверить), почему бы тебе не запускать bat-файл, а не прямо exe-шник, ы?
Добавлено: Вт мар 11, 2008 1:43 pm
dvdc
или cmd файл под виндой, start.exe переименовать в какой-нибудь astart.exe, а в cmd указанать:
@echo off
start c:\blablabla\astart.exe
?
___
(pJ: на всякий случай напомню - в соседней теме пишут, что не получится переименовать wxstart.exe, но со start.exe всё в порядке)
Добавлено: Ср мар 12, 2008 9:25 am
Rumata
dimmka писал(а):у меня получается полный бред при запуске одним ботом другого. Бот который запускает каким то образом подставляет свой конфиг в запускаемый и получается Dual login prohibited (это если запускать в wxstart другого. Если же вызывать start.exe, он открывается в окне бота, который его вызвал(((

)
истинная правда, сам давно уже все start.exe запускаю батниками при использовании этого плагина, если одинаковые имена у запустившегося и запускаемого, то это плаг игнорит путь, и перезапускается запустившийся

извиняюсь за тавтологию

Не хочет запускать стороннее приложение ((
Добавлено: Пт июн 13, 2008 4:41 pm
KALEXI
Хочу чтобы когда мне писали в приват запускалось приложение, для этого использую этот плагин, но почемуто не хочет работать((
control\macros.txt
Код: Выделить всё
# macro
package appLauncher;
use strict;
use Globals;
use Plugins;
use Log qw(debug message warning error);
use Commands;
use Utils;
Plugins::register('appLauncher', 'Launch MS Windows/Unix applications.', \&Unload, \&Unload);
my $hook = Commands::register(
['launch','Launch MS Windows/Unix applications.',\&launch]
);
sub Unload {
Commands::unregister($hook);
}
sub launch {
my (undef, $args) = @_;
my @args = split(/ /, $args);
if($args[0]){
launchApp(1, $args[0]);
message "Launching $args[0]\n";
}else{
message("Syntax Error in function 'launch'\nUsage: launch < patch >\nWhere < patch > is a patch to your application.\n","info");
}
}
return 1;
control\config.txt
Код: Выделить всё
alertSound - {
eventList private chat
notInTown 0
inLockOnly 0
play D:\RO\BOT\sounds\phone.wav
Macro launch D:\RO\BOT\BotMail.exe
}
Пишет это и отказывается запускать:
Код: Выделить всё
...
[Jun 13 17:27:12 2008.84] Loading control\macros.txt...
[Jun 13 17:27:12 2008.96] control\macros.txt: ignoring ');' (munch, munch, strange food)
[Jun 13 17:27:12 2008.99] control\macros.txt: ignoring line 'sub Unload {' (munch, munch, strange block)
[Jun 13 17:27:13 2008.11] control\macros.txt: ignoring line 'sub launch {' (munch, munch, strange block)
[Jun 13 17:27:13 2008.33] control\macros.txt: ignoring '}' (munch, munch, strange food)
[Jun 13 17:27:13 2008.87] [macro] hooking to AI_pre
...
Сохраняю в UTF-8. Первая строчка закоментирована.
Добавлено: Сб июн 14, 2008 6:38 pm
Kissa2k
Прочитай в документации как правильно использовать плагины (если коротко, то плагин нужно помещать в директорию plugins в корне OK.).