Создать 'кустомный' лог + запись встреченных игроков

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

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

Cutgun
Начинающий
Сообщения: 32
Зарегистрирован: Вс дек 10, 2006 1:16 pm

Создать 'кустомный' лог + запись встреченных игроков

Сообщение Cutgun »

Вместо вступления...
Есть замечательный плаг ReactOnActor который позволяет боту реагироватьть практищски на всё, ну или на многое =) и конечно можно сделать на каждое из этих событий запись в общем логе. НО просматривать с утра файл ~10 Мб в поисках того как часто и при каких обстоятельствах ботег с кем виделся, это мягко говоря утомительно.
А теперь собственно сабж.
Нужна функиця (команда) позволяющая писать в отдельный лог любые строчки которые ей подпихнут.
З.Ы. Убрать лишнюю инфу из общего лога не предлагать.
З.Ы.Ы Я так думаю это вполне можно сделать из макросов
Что то типа этого...
С синтаксисом я могу и ошибатся

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

ReactOnActor macro MyLog (actor_name, actor_lvl, ....)
{
actor_type player
}
И получаем файл MyLog.txt вида

12.07.07 [22:34:49] Player_X, 93, male, .......

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

Сообщение piroJOKE »

Оно может и правильная идея, насчет отдельного лога... но, вот если бы я был на твоем месте, я бы просто поленился это делать. Почему? Да потомушто есть grep.

А еще есть...

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

######################################################
# This plugin is licensed under the GNU GPL          #
# Copyright 2005 by isieo                            #
# contact : - isieo <AT> *NOSPAM* G*MAIL <DOT> COM   #
# -------------------------------------------------- #
# -------------------------------------------------- #
# playerrecorder.pl                                  #
# Records Player's name together with AIDs           #
# Usefull for players to findout other players' other#
# characters...                                      #
#                                                    #
######################################################

package playerRecord;
use strict;
use Plugins;
use Log qw(message);
use Globals;

Plugins::register("prec", "playerRecord", \&on_unload, \&on_reload);
my $hooks = Plugins::addHooks(
        ['charNameUpdate', \&write_player],
);
my $datadir = $Plugins::current_plugin_folder;

sub on_unload {
        # This plugin is about to be unloaded; remove hooks
        Plugins::delHook("charNameUpdate", $hooks);
}

sub on_reload {
}

sub write_player {
        my $hookname = shift;
        my $args = shift;
        my $targetId = unpack("V1",$args->{ID});
        my $targetName = $args->{name};
        my $file = "$datadir\\players.txt";

        my ($uId, $name);
        my $exist=0;
        my $line;
        open FILE, "< $file";
        foreach (<FILE>){
                next if (/^#/);
                s/[\r\n]//g;
                s/\s+$//g;
                $line = $_;
           ($uId, $name ) = $line =~ /^(\d+) (.*)$/;
           if ($uId eq $targetId && $name eq $targetName){
                $exist=1;
           }
        }
        close FILE;
        if (!$exist){
          message $name.$targetName."\n";
          open FILE, ">> $file";
          print FILE "$targetId $targetName\n" if ($targetName) ;
          close FILE;
        }
}

1;
...но я не уверен, что он работает с современным Kore.

ЗЫ: У тебя, афтар, немножко глупый заголовок темы. Я его исправлю.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Cutgun
Начинающий
Сообщения: 32
Зарегистрирован: Вс дек 10, 2006 1:16 pm

Сообщение Cutgun »

Grep это всё таки не то... я сам сейчас чем то подобным и пользуюсь только в отдельный файл не пишусь.

Плагинчег щас попробую.
(Возможности плагина мягко говоря слабоваты =( )

За правку темы спасибо. Сам понимал что криво но в голову ничего не лезло =)

Добавлено спустя 11 минут 34 секунды:

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

Сообщение piroJOKE »

Тебе нужно скрестить два плагина. Этот (выше) и какой-нибудь, регистрирующий новую команду Kore. ;) У нас тут таких хватает, полазь по разделу.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
miniBot
Грамотный
Сообщения: 429
Зарегистрирован: Вс ноя 05, 2006 8:48 am
Откуда: Москва
Контактная информация:

Сообщение miniBot »

PlayerRecorder - работает с последней местной сборкой.
помощь только тем у кого включен параметр - mozgEnable 1

БОТАТЬ, БОТАТЬ, И ЕЩЕ РАЗ БОТАТЬ, КАК ЗАВЕЩАЛ ВЕЛИКИЙ ЛЕНИН
eretik
Грамотный
Сообщения: 199
Зарегистрирован: Чт ноя 16, 2006 10:15 am
Откуда: Краснодар

Сообщение eretik »

miniBot писал(а):PlayerRecorder - работает с последней местной сборкой.
не работает

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

Сообщение piroJOKE »

Хм.... вообще-то ему пофиг где работать. :o :shock:
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
miniBot
Грамотный
Сообщения: 429
Зарегистрирован: Вс ноя 05, 2006 8:48 am
Откуда: Москва
Контактная информация:

Сообщение miniBot »

eretik писал(а):не работает
вобщет мое утверждение верно для последней июльской сборки, вы хоть когда апаете тему, смотрите на дату последнего поста!

а вобще-т на 6047 прекрасно работает, правда я сделал исправление, но это только касается имени файла, и на функциональность никак не влияет.

Я-бы вобщем вот что сказал-бы по этому поводу. В файл записывается 2 колонки ID и Имя, вот бы добатить еще две, гильдию, и сколько раз встречался.
помощь только тем у кого включен параметр - mozgEnable 1

БОТАТЬ, БОТАТЬ, И ЕЩЕ РАЗ БОТАТЬ, КАК ЗАВЕЩАЛ ВЕЛИКИЙ ЛЕНИН
Аватара пользователя
Kissa2k
Профессионал
Сообщения: 1304
Зарегистрирован: Пн дек 04, 2006 8:33 pm

Сообщение Kissa2k »

Cutgun
Можешь толково объяснить, что конкретно тебе нужно по пунктам :)
kisloid
Энтузиаст
Сообщения: 142
Зарегистрирован: Пн дек 10, 2007 8:22 pm

Сообщение kisloid »

Может кто переделать playerrecorder.pl под современную сборку коры? А то вылезает вот такое при попытке загрузить его(это я его просто в макрос.тхт запихнул)..:

[Dec 17 11:37:43 2007.51] Loading control\macros.txt...
[Dec 17 11:37:43 2007.53] control\macros.txt: ignoring ');' (munch, munch, strange food)
[Dec 17 11:37:43 2007.53] control\macros.txt: ignoring line 'sub on_unload {' (munch, munch, strange block)
[Dec 17 11:37:43 2007.54] control\macros.txt: ignoring line 'sub on_reload {' (munch, munch, strange block)
[Dec 17 11:37:43 2007.54] control\macros.txt: ignoring line 'sub write_player {' (munch, munch, strange block)
[Dec 17 11:37:43 2007.55] control\macros.txt: ignoring '}' (munch, munch, strange food)
[Dec 17 11:37:43 2007.55] control\macros.txt: ignoring line 'if (!$exist){' (munch, munch, strange block)
[Dec 17 11:37:43 2007.56] control\macros.txt: ignoring '}' (munch, munch, strange food)
[Dec 17 11:37:43 2007.57] control\macros.txt: ignoring '1;' (munch, munch, strange food)
[Dec 17 11:37:43 2007.57] [macro] hooking to AI_pre
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

kisloid
Если бы ты распечатал его и подтерся бы им, результат был бы тот же - а именно - "не работает"! :x

Плагины ложатся в папку plugins, как файлы с расширениями *.pl, в данном случае можно назвать его так: playerrecorder.pl
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
kisloid
Энтузиаст
Сообщения: 142
Зарегистрирован: Пн дек 10, 2007 8:22 pm

Сообщение kisloid »

Я попробую попозже. Просто сейчас в хкоре1 и останавливать не хочется, ибо потом опять париться с запуском... А релоад можно было сделать из консоли, потому не долго думая код и был запихан в макрос.тхт )))
kisloid
Энтузиаст
Сообщения: 142
Зарегистрирован: Пн дек 10, 2007 8:22 pm

Сообщение kisloid »

Да, все работает вроде. ))

Единственное хотелось бы больше инфы, типа
miniBot писал(а): Я-бы вобщем вот что сказал-бы по этому поводу. В файл записывается 2 колонки ID и Имя, вот бы добатить еще две, гильдию, и сколько раз встречался.
Хотя лично мне интереснее было бы время встречи, может быть место еще ))
Аватара пользователя
Kissa2k
Профессионал
Сообщения: 1304
Зарегистрирован: Пн дек 04, 2006 8:33 pm

Сообщение Kissa2k »

piroJOKE писал(а):Плагины ложатся в папку plugins, как файлы с расширениями *.pl, в данном случае можно назвать его так: playerrecorder.pl
В документации к Openkore написано, что рекомендуется называть файл с плагином по имени его пространства имен :) т.е. playerRecord.pl
kisloid писал(а):Хотя лично мне интереснее было бы время встречи, может быть место еще
Это несложно - попробуй сделать!
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Kissa2k писал(а):В документации к Openkore написано, что рекомендуется называть файл с плагином по имени его пространства имен т.е. playerRecord.pl
Угу. Новичкам - Kissa2k имеет в виду запись package имя; в начале тела плагина).
Kissa2k писал(а):
kisloid писал(а):Хотя лично мне интереснее было бы время встречи, может быть место еще
Это несложно - попробуй сделать!
Немного труднее, чем может показаться. Дело в том, что плагин "следит" за тем, чтобы не было дублей записей; выходит, этот контроль надо как-то отменить. Но, если его просто отменить, в лог может записаться много строк подряд - если скажем, кто-нибудь преследует чара.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Ответить