Страница 1 из 3
Создать 'кустомный' лог + запись встреченных игроков
Добавлено: Пт июл 20, 2007 10:13 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, .......
Что на мой взгляд может помочь оценить с утра насколько бот привлекал внимание.
Добавлено: Пт июл 20, 2007 10:24 pm
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.
ЗЫ: У тебя, афтар, немножко глупый заголовок темы. Я его исправлю.
Добавлено: Пт июл 20, 2007 10:54 pm
Cutgun
Grep это всё таки не то... я сам сейчас чем то подобным и пользуюсь только в отдельный файл не пишусь.
Плагинчег щас попробую.
(Возможности плагина мягко говоря слабоваты =( )
За правку темы спасибо. Сам понимал что криво но в голову ничего не лезло =)
Добавлено спустя 11 минут 34 секунды:
К сожалению в перле ни силён... возникла идея переписать плагин который привел ты под произвольно заданную строчку...
с реализацией к сожалению туго...
Добавлено: Пт июл 20, 2007 11:09 pm
piroJOKE
Тебе нужно скрестить два плагина. Этот (выше) и какой-нибудь, регистрирующий новую команду Kore.

У нас тут таких хватает, полазь по разделу.
Добавлено: Сб июл 21, 2007 8:46 am
miniBot
PlayerRecorder - работает с последней местной сборкой.
Добавлено: Сб дек 15, 2007 8:54 am
eretik
miniBot писал(а):PlayerRecorder - работает с последней местной сборкой.
не работает
работает, но почему то токо в городе О_о
Добавлено: Сб дек 15, 2007 10:42 am
piroJOKE
Хм.... вообще-то ему пофиг где работать.

Добавлено: Вс дек 16, 2007 3:06 pm
miniBot
eretik писал(а):не работает
вобщет мое утверждение верно для последней июльской сборки, вы хоть когда апаете тему, смотрите на дату последнего поста!
а вобще-т на 6047 прекрасно работает, правда я сделал исправление, но это только касается имени файла, и на функциональность никак не влияет.
Я-бы вобщем вот что сказал-бы по этому поводу. В файл записывается 2 колонки ID и Имя, вот бы добатить еще две, гильдию, и сколько раз встречался.
Добавлено: Вс дек 16, 2007 3:19 pm
Kissa2k
Cutgun
Можешь толково объяснить, что конкретно тебе нужно по пунктам :)
Добавлено: Пн дек 17, 2007 3:25 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
Добавлено: Пн дек 17, 2007 3:30 pm
piroJOKE
kisloid
Если бы ты распечатал его и подтерся бы им, результат был бы тот же - а именно - "не работает"!
Плагины ложатся в папку plugins, как файлы с расширениями *.pl, в данном случае можно назвать его так: playerrecorder.pl
Добавлено: Пн дек 17, 2007 4:21 pm
kisloid
Я попробую попозже. Просто сейчас в хкоре1 и останавливать не хочется, ибо потом опять париться с запуском... А релоад можно было сделать из консоли, потому не долго думая код и был запихан в макрос.тхт )))
Добавлено: Пн дек 17, 2007 6:27 pm
kisloid
Да, все работает вроде. ))
Единственное хотелось бы больше инфы, типа
miniBot писал(а):
Я-бы вобщем вот что сказал-бы по этому поводу. В файл записывается 2 колонки ID и Имя, вот бы добатить еще две, гильдию, и сколько раз встречался.
Хотя лично мне интереснее было бы время встречи, может быть место еще ))
Добавлено: Пн дек 17, 2007 7:39 pm
Kissa2k
piroJOKE писал(а):Плагины ложатся в папку plugins, как файлы с расширениями *.pl, в данном случае можно назвать его так: playerrecorder.pl
В документации к Openkore написано, что рекомендуется называть файл с плагином по имени его пространства имен

т.е. playerRecord.pl
kisloid писал(а):Хотя лично мне интереснее было бы время встречи, может быть место еще
Это несложно - попробуй сделать!
Добавлено: Пн дек 17, 2007 8:11 pm
piroJOKE
Kissa2k писал(а):В документации к Openkore написано, что рекомендуется называть файл с плагином по имени его пространства имен т.е. playerRecord.pl
Угу. Новичкам - Kissa2k имеет в виду запись
package имя; в начале тела плагина).
Kissa2k писал(а):kisloid писал(а):Хотя лично мне интереснее было бы время встречи, может быть место еще
Это несложно - попробуй сделать!
Немного труднее, чем может показаться. Дело в том, что плагин "следит" за тем, чтобы не было дублей записей; выходит, этот контроль надо как-то отменить. Но, если его просто отменить, в лог может записаться много строк подряд - если скажем, кто-нибудь преследует чара.