Bus - система взаимодействия ботов, помогите разобраться.

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

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

Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

оффтопик

IDDQD
механизм альясов, см. доку.
alias_heal sp 28

т.е.
callSign Vasia
alias_poringi macro goPoringGo

и
g Vasia poringi :crazy:

на ту схему с бусом, что я описал выше, это точно так же ложится
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
IDDQD
Энтузиаст
Сообщения: 95
Зарегистрирован: Пн дек 24, 2007 2:33 am

Сообщение IDDQD »

piroJOKE
альясы - да. Но чтобы альяс сработал надо перенаправить фрагмент чата в консоль + я не тестил, альяс понимает великий и могучий ?
Монжо сделать перенаправление макросами, но их нужно просто невероятное количество.
Я рассматриваю гилдчат и пати чат как замену bus'у, но с акробатическими приемами, чтобы не спалиться. Собсно сейчас по такой схеме отлично работает фулпати (только там еще чат-команды задействованы).
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

еще раз - почитай что делает callSign
русский в альясах - не проверял ((
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
IDDQD
Энтузиаст
Сообщения: 95
Зарегистрирован: Пн дек 24, 2007 2:33 am

Сообщение IDDQD »

callSign [<call name>]
This option specifies the word or call name that must be included in chat commands sent to Kore through party and guild chats for such commands to be recognized. This is not case sensitive.

allSign Vasia
alias_poringi macro goPoringGo

и
g Vasia poringi
Не работает, poringi становится командой для консоли, но не для чат-команд. Точно так же нельзя с помощью чат команды вызвать макрос , а еще нельзя обращаться к лэйблам (хотя в мануале написано что можно)
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Окей, а если написать Vasia ai off - это работает? (или любую другую "штатную" команду).
Странно, я когда-то давно это использовал (?) вроде работало.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
IDDQD
Энтузиаст
Сообщения: 95
Зарегистрирован: Пн дек 24, 2007 2:33 am

Сообщение IDDQD »

piroJOKE
Нет, работают тока команды определенные заранее как чат команды.
Из стандартных там есть тока conf , добавить чат-команды вроде низя.

А воопще это все офтоп и пора бы уже в отдельную темку для акробатических приемов с чат командами :crazy:
Wider
Начинающий
Сообщения: 24
Зарегистрирован: Вс апр 15, 2007 8:24 pm

Сообщение Wider »

Вот наваял плагинчик для программы минимум так что зацените...

piroJOKE
Немного не соответствует твоему тз...так что жду критику и предложения...

BUSCommander.pl:

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

#====================================================#
# This plugin is licensed under the GNU GPL          #
# Copyright 2008 by Wider                            #
# ************************************************** #
# BUSCommander.pl                                    #
# version 1.01                                       #
#                                                    #
# This plugin uses bus system for sending and        #
# processings of the received commands between bots. #
#                                                    #
#====================================================#
package BUSCommander;

use lib $Plugins::current_plugin_folder;

use strict;
use warnings;
use Globals;
use Settings;
use Plugins;
use Utils;
use Misc;
use Utils;

use Log qw(message debug warning error);


my $callBUS_busProc;

Plugins::register('BUS', 'BUSCommander', \&onUnload);
my $hook = Plugins::addHook("AI_pre", \&AI_pre_sub, undef);

my $bus_cmd = Commands::register(
            ['bus', "BUSCommander", \&bus_cmd]
);

sub onUnload {
        Plugins::delHook('AI_pre',$hook);
        Commands::unregister($bus_cmd);
        if (defined $bus) {
                $bus->onMessageReceived->remove($callBUS_busProc);
        }
}

sub AI_pre_sub {
        if (defined $bus) {
                $callBUS_busProc = $bus->onMessageReceived->add(undef, \&bus_proc);
                message "[BUS] Enabled...\n";
                Plugins::delHook('AI_pre',$hook);
        } elsif (!$config{bus}) {
                message "[BUS] Disabled...\n";
                onUnload();
        }
}
sub bus_proc {
    my (undef, undef, $message) = @_;
    my $mesgID=$message->{messageID};
    my $args=$message->{args};
    if($mesgID eq 'GMAlert') {
           message "[BUS] Receive GMAlert from $args->{Name}\n";
           message "[BUS] Sending Hook: \"bus_GMAlert\"\n";
           Plugins::callHook('bus_GMAlert', {Name => $args->{Name}});
           return
    } else {
           message "[BUS] Message: $mesgID\n";
           return
    }
}


sub bus_cmd {
        if (!defined $_[1]) {
              message "[BUS] Usage: bus [GMAlert|help]\n";
              return
        }
        my ($arg, @params) = split(/\s+/, $_[1]);
        my %hash = (
                 Name => $char->{name}
        );
        if($arg eq 'GMAlert')
        {
              $bus->send('GMAlert',\%hash);
              message "[BUS] Sending broadcast: GMAlert\n";
              return
        }elsif($arg eq 'help')
        {
              message "[BUS] Usage: bus [GMAlert|help]\n";
        }else
        {
              error "[BUS] Read first help manual. Command: \"bus help\".\n";
              return
        }
}
На GMAlert нужно отлавливать Hook: bus_GMAlert ...
Например таким макросом:

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

automacro GMAlert {
	hook bus_GMAlert
	call GMAlertM
}
macro GMAlertM {
	log !GMAlert!
}
Жду отзывов...
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Не думаю, что в таком виде оно будет популярным... :(
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Wider
Начинающий
Сообщения: 24
Зарегистрирован: Вс апр 15, 2007 8:24 pm

Сообщение Wider »

piroJOKE писал(а):Не думаю, что в таком виде оно будет популярным...
Поконкретнее... что не так?
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Ну... хук внутри плагина это вообще что-то абстактное.
Функционал слаб, короче. Имхо.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
DeniZka
Разработчик
Сообщения: 410
Зарегистрирован: Ср ноя 15, 2006 6:36 pm
Сервер RO:: rRO AsgardRO
Откуда: Mos-Cow Citadel
Контактная информация:

Сообщение DeniZka »

Тема тронула мое сердце и я решил внести в нее свою лепту.
На днях тестово будет поднят Web сервис для группового оповещения ботов.

Смысл сервиса следующий:
1) Группа друзей/знакомых ботоводов регистрируют на веб сайте аккаунт и устанавливают ботам спец плагин.
2) Переодически плагин лазиет на странчку группы в поисках нехороших новостей от друзей
3) В случае нежелаемых ситуаций т.к. бан, тюрьма, "бот" в личку, и др. пакость, бот высылает на страничку своей группы предупреждение
4) Боты получившие информацию реагируют согласно настройкам. Дисконнект на время, или полный отрубон, или АФК или еще че-нить.

Теперь небольшие пояснения. Группы - это чтобы поршивая овца (ГМ сервера) не попала в стадо. Группы - это чтобы для разных серверов свои сообщества.

В итоге получается как в жизни животных. Беззащитные рыбки ходят большими косяками, чтобы хищнику было тяжело их поймать.

В мире РО группа из 50 нубоботеров с такой системой оповещения значительно продлит себе жизнь.
Изображение
1t 1$ t00 900d d4y 2 d1e

?(???)?(???)?( ?Д?)?
IDDQD
Энтузиаст
Сообщения: 95
Зарегистрирован: Пн дек 24, 2007 2:33 am

Сообщение IDDQD »

Ребят, решение под ногами валяется а вы в дебри...
Что нам надо:
Независимая от сервера среда для общения между группой ботов. Желательна возможность установки удаленного сервера этой "среды".

Решение:
IRC . Где-то я видел плагин управления ботом через IRC, если его немного почикать до "публичного" состояния (чтоб он стал не для управления ботом через irc,а для оповещения), то мы получим отличную среду с кучей дполнительных возможностей. +Всегда можно поднять свою ирку на локалхосте.
Чем вам не bus ? :twisted:
Ответить