Страница 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.).