alertSound - звуковая сигнализация событий

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

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

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

Сообщение piroJOKE »

Странно. Странно. У меня дежавю, мне кажется, что я ЭТО уже где-то видел. Или сам когда-то делал. Хз. :shock:

Добавлено спустя 1 минуту:

vit, это можно даже закоммитить. Но (2All!) погоняйте сначала эту модификацию плагина!!! :roll:

Добавлено спустя 12 минут 58 секунд:

Ага, друг бобёр, я смотрю там тебе у 4орта пишут, что он всё равно срабатывают, когда не должен. И знаешь что? А ведь это нормально. Это то самое "unknown player", когда чар только-только появляется на экране.

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

Единственное что еще можно сделать, это в качестве исключений-на-срабатывание разрешить плагину хавать не имена, а IDы аккаунтов. :twisted:
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Сообщение vit »

piroJOKE писал(а):vit, это можно даже закоммитить. Но (2All!) погоняйте сначала эту модификацию плагина!!! :roll:
Ну... реализация кривая, через глобальную переменную.... зато малой кровью :) .

piroJOKE писал(а):Ага, друг бобёр, я смотрю там тебе у 4орта пишут, что он всё равно срабатывают, когда не должен. И знаешь что? А ведь это нормально. Это то самое "unknown player", когда чар только-только появляется на экране.
Эх.... я не ту версию плагина залил :( , вот и не работало, сейчас все должно пахать. А про то, что когда плеер только появляется... дак плагин у нас на чат, а чтоб плеер сразу появился, и что-нибудь написал, это маловероятно.
piroJOKE писал(а):Единственное что еще можно сделать, это в качестве исключений-на-срабатывание разрешить плагину хавать не имена, а IDы аккаунтов. :twisted:
В сообщении общего чата в пакете содержится ID, а в пакете приватного чата сразу содержится имя(или это не так?). Так что я не знаю, как сделать еще,чтоб и по ID можно было. А если в одном случае по имени, а в другом по ИД делать, то путаница будет.

P.S: Обнаружился глюк с эмоциями - кора привязывает до перезагрузки к одному ID аккаунта одно имя, и если потом перезайти другим персом с этого же аккаунта, то всё-равно будет отображаться первое имя(это так в коре, попробуйте - попускайте эмоции, заходя разными персами с одного аккаунта, будет писаться, что это один и тот же перс). Поэтому поддержку эмоций пришлось убрать, ибо работает не надежно...
L1m0n4eg
Грамотный
Сообщения: 227
Зарегистрирован: Пт мар 23, 2007 10:01 pm

Сообщение L1m0n4eg »

народ, а как сделать чтоб на вот этот макрос

automacro I_won {
console /'кукарику!' won/
call {
$gametime = 10
$relogtime = 1800
pause $gametime
do relog $relogtime
:end
}
}

был какой-нить алерт?

Все, нашел:


automacro I_won_ring! {
console /'кукарику!' won/
call {
do eval Utils::Win32::playSound('alarm.wav');
}
}
Аватара пользователя
jack_spa
Грамотный
Сообщения: 330
Зарегистрирован: Чт июл 26, 2007 11:12 am
Откуда: Crimean Sea

Сообщение jack_spa »

в последней сборке чёта через раз как-то алерты работают....
[url=irc://irc.openkore.com:6667/openkore-ru]Its your destiny,join us! © Wanted[/url]
neydpower
Начинающий
Сообщения: 15
Зарегистрирован: Ср дек 17, 2008 7:21 pm
Сервер RO:: feelro

Re: alertSound - звуковая сигнализация событий

Сообщение neydpower »

дабы не создавать отдельную тему напишу тут.
не работают алерты ни в какую. кора версии 2.0.7 (играю на филро, т.е. покупал бота у Джери)
перепробовал все варианты указания звукового файла (файл естественно присутствует):

- если в корне:
alertSound - {
eventList private chat
notInTown 0
inLockOnly 0
play beep.wav
}

- если в папке:
alertSound - {
eventList private chat
notInTown 0
inLockOnly 0
play sounds\beep.wav
}

- если задать прямой путь:
alertSound - {
eventList private chat
notInTown 0
inLockOnly 0
play D:\RObot\sounds\blip2.wav
}

в консоли видно, что алерт как бы работает, но звук не идет ни в какую.
p.s.: примерно полгода назад ботил на версии 2.0.6, там все работало
Аватара пользователя
jack_spa
Грамотный
Сообщения: 330
Зарегистрирован: Чт июл 26, 2007 11:12 am
Откуда: Crimean Sea

Re: alertSound - звуковая сигнализация событий

Сообщение jack_spa »

Напиши джерри.
Попробуй использовать макро.
Ex.

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

automacro pm {
   pm /.*/
   call {
	do eval Utils::Win32::playSound('sounds\alarm.wav')
   }
}
[url=irc://irc.openkore.com:6667/openkore-ru]Its your destiny,join us! © Wanted[/url]
neydpower
Начинающий
Сообщения: 15
Зарегистрирован: Ср дек 17, 2008 7:21 pm
Сервер RO:: feelro

Re: alertSound - звуковая сигнализация событий

Сообщение neydpower »

за макрос спасибо, но все равно таже шляпа:

(From: xxx) : !
[macro] automacro pm triggered.

и все - звук не идет как и в случае с плагином
p.s. ессно колонки включены (мало ли кто решит пошутить :) ), может все дело в версии коры? видел на рейджзоне вроде бы топик, человек тоже жаловался (теже симптомы), но решение там найдено не было
vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Re: alertSound - звуковая сигнализация событий

Сообщение vit »

neydpower
Попробуй прописать абсолютный путь к файлу со звуком. Что-то вроде c:\bot\sounds\alarm.wav
Аватара пользователя
jack_spa
Грамотный
Сообщения: 330
Зарегистрирован: Чт июл 26, 2007 11:12 am
Откуда: Crimean Sea

Re: alertSound - звуковая сигнализация событий

Сообщение jack_spa »

Нет ну вообще есть какая-то версия,в которой нет звуков,сталкивался,и на форуме поднималась тема.
[url=irc://irc.openkore.com:6667/openkore-ru]Its your destiny,join us! © Wanted[/url]
neydpower
Начинающий
Сообщения: 15
Зарегистрирован: Ср дек 17, 2008 7:21 pm
Сервер RO:: feelro

Re: alertSound - звуковая сигнализация событий

Сообщение neydpower »

2vit: писал еще выше - все варианты испробовал, включая этот (кстати забыл еще дописать про SystemDefault, его тоже пробовал - реакции ноль, звука нет)
просто беда какая-то -/, сегодня чуть не спалили - какой-то снип в приват зафлудил, тригер на алерт сработал кучу раз - звук не идет, хорошо хоть рядом был и ответил :)

p.s. глянул форум - нашел вот темку , правда до конца так и не ясно, автору помогло что-нибудь или нет
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: alertSound - звуковая сигнализация событий

Сообщение 4epT »

как вариант попробуй поменять наклон слэша, сборка тут не играет роли (если только она не совсем древняя), если у 1000 народа всё работает, а у парочки нет ;)
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
neydpower
Начинающий
Сообщения: 15
Зарегистрирован: Ср дек 17, 2008 7:21 pm
Сервер RO:: feelro

Re: alertSound - звуковая сигнализация событий

Сообщение neydpower »

попробовал - шляпа таже)
в том и дело - у меня тоже работало на протяжении года. трабла была именно когда перешел на платную кору (ну не знаю как правильно назвать - там где универсал обход антиботов) от Джерри. причем один из знакомых тоже сидит на платной коре - таже проблема, нету звуков (настройки правильные). вообщем хз, где копать.
p.s. всех с прошедшим кстате :beer:
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: alertSound - звуковая сигнализация событий

Сообщение 4epT »

я вот думаю может синтаксис нужно привести к виду:

alertSound public gm chat {
play sounds\alarm.wav
notInTown 0
inLockOnly 0
}

может сюда ввести селфкондишены?
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
GIGA
Новичок
Сообщения: 5
Зарегистрирован: Ср апр 08, 2009 11:35 am

Re: alertSound - звуковая сигнализация событий

Сообщение GIGA »

Долго искал по сайту, нужного так и не нашел, подскажите плиз.
-Чтото натипа того:
alertSound - {
eventList public chat
notInTown 1
inLockOnly 0
notPlayers _vit, 4epT, piroJOKE
play sounds\phone.wav
}
только обратное, чтобы публик чат не пищал от всех, а пищал только от перечисленых играков.
-Также насчет звук от обнаружения эмоций от определенного игрока.
Есть от ГМа такой скрипт, а вот от игрока не нашел.
-звук, когда определенный игрок рядом.

Одно решение нашел, но запутался в нем, а именно именно ГМ чат, тоесть внести челов в раздел ГМов. Но там как я понял есть общее у них, тобишь [GM], натипа того.

ЗЫ если сможите то напишите как сделать:
тебе помахал чел флажком, пошел сигнал, и чар остановился.

ЗЫЫ Прост у наших ГМ нет никакой приписки, из-за этог я их не могу в раздел гм поместить(просто ник), а сигнал на них нужен.
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: alertSound - звуковая сигнализация событий

Сообщение 4epT »

доработал немного плагин, вот что получилось:
+ добавил проверку на SelfCondition, это значит что теперь можно использовать следующие условия:

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

disabled
whenIdle
manualAI
hp
sp
homunculus_hp
homunculus_sp
homunculus_dead
aggressives
partyAggressives
stopWhenHit
whenFollowing
whenStatusActive
whenStatusInactive
onAction
notOnAction
spirit
timeout (не работает!)
inLockOnly
notWhileSitting
notInTown
monsters
defendMonsters
notMonsters
inInventory
inCart
whenGround
whenNotGround
whenPermitSkill
whenNotPermitSkill
whenFlag
whenNotFlag
onlyWhenSafe
inMap
notInMap
whenEquipped
whenNotEquipped
zeny
whenWater (возможно не работает)
согласен что некоторые условия никогда использоваться не будут, но зато теперь существует тонкая настройка звука ;)

+ для событий "public GM chat", "public chat", "private GM chat", "private chat" и "emoticon" добавились дополнительные условия условия "Players" и "notPlayers"
Players - играть звук если игрок показавший эмоцию или сказавший в чат находится в данном списке (имена пишутся через запятую)
notPlayers - играть звук для всех, кроме этого списка
Например:
допустим игрок [GM]#05 и 4epT наши братаны и никогда нас банить не будут, зачем нам тогда на них пищать??

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

alertSound - {
	eventList public GM chat, private GM chat, emoticon
	play sounds\peep.wav
	notPlayers [GM]#05, 4epT
}
допустим нам в приват пишут много поклонниц, но наше сердце принадлежит одной, от которой мы не хотим пропустить сообщения:

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

alertSound - {
	eventList private chat, emoticon
	play sounds\love.wav
	Players AHHA
}
скачать плагин можно отсюда

в будущем планирую добавить обработки ги-чата и пати-чата

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

# alertsound plugin by joseph
# Fixed to 1.9.x version by h4rry84
# Edib by 4epT (ICQ: 2227733)
# http://bibian.ath.cx/openkore/viewtopic.php?t=2032
# http://forums.openkore.com/viewtopic.php?f=34&t=1490
#
# This software is open source, licensed under the GNU General Public
# License, version 3.

package alertsound;

use strict;
use Plugins;
use Globals;
use Utils;
use Log qw(message);

Plugins::register('alertsound', 'plays sounds on certain events', \&Unload);
my $packetHook = Plugins::addHook('parseMsg/pre', \&CheckPacket);

sub Unload {
	Plugins::delHook('parseMsg/pre', $packetHook);
}

sub CheckPacket {
	return if (!$config{'alertSound'});

	my $hookName = shift;
	my $args = shift;
	my $switch = $args->{switch};
	my $msg = $args->{msg};

	if ($switch eq "008D") {
	# Public chat message.
	my $ID = substr($msg, 4, 4);
		my $msg_size = length($msg);
		my $chat = substr($msg, 8, $msg_size - 8);
		$chat =~ s/\000//g;
		my ($chatMsgUser, $chatMsg) = $chat =~ /([\s\S]*?):([\s\S]*)/;
		$chatMsg =~ s/^ +//;
		$chatMsgUser =~ s/ $//;

		if ($chatMsgUser =~ /^([a-z]?ro)?-?(Sub)?-?\[?GM\]?/i) {
			alertSound("public GM chat", $chatMsgUser);
		} elsif (unpack("V", $ID) == 0) {
			alertSound("npc chat");
		} else {
			alertSound("public chat", $chatMsgUser);
		}
	} elsif ($switch eq "0097") {
	# Private chat message.
		my $msg_size = length($msg);
		my $newmsg;
		Network::Receive->decrypt(\$newmsg, substr($msg, 28, length($msg)-28));
		$msg = substr($msg, 0, 28).$newmsg;
		my ($privMsgUser) = substr($msg, 4, 24) =~ /([\s\S]*?)\000/;
		my $privMsg = substr($msg, 28, $msg_size - 29);

		if ($privMsgUser =~ /^([a-z]?ro)?-?(Sub)?-?\[?GM\]?/i) {
			alertSound("private GM chat", $privMsgUser);
		} else {
			alertSound("private chat", $privMsgUser);
		}
	} elsif ($switch eq "00D7") {
	# chat msg
		alertSound("chat room");
	} elsif ($switch eq "009A") {
	# System message/GM message (is this always global?)
		alertSound("system message");
	} elsif ($switch eq "00C0") {
	# Emoticon
		my $ID = substr($msg, 2, 4);
		if ($players{$ID} && $ID ne $accountID) {
			alertSound("emoticon", $playersList->getByID($ID)->name);
		}
	} elsif ($switch eq "0091") {
	# Map change
		alertSound("map change");
	} elsif ($switch eq "0092") {
	# Map change - switching map servers
		alertSound("map change");
	} elsif ($switch eq "0095") {
	# Identify GM Names
		my $ID = substr($msg, 2, 4);
		if ($players{$ID} && %{$players{$ID}}) {
			my ($name) = substr($msg, 6, 24) =~ /([\s\S]*?)\000/;
			if ($name =~ /^([a-z]?ro)?-?(Sub)?-?\[?GM\]?/i) {
				alertSound("GM near");
			}
		}
	} elsif ($switch eq "0195") {
	#Identify GM Names
		my $ID = substr($msg, 2, 4);
		if ($players{$ID}) {
			my ($name) = substr($msg, 6, 24) =~ /([\s\S]*?)\000/;
			if ($name =~ /^([a-z]?ro)?-?(Sub)?-?\[?GM\]?/i) {
				alertSound("GM near");
			}
		}
	} elsif ($switch eq "0080") {
	# someone disappeared here
		my $ID = substr($msg, 2, 4);

		if ($ID eq $accountID) {
		# You are dead.
			alertSound("death");
		}
	} elsif ($switch eq "0078") {
	# Existance packet used to tell if monster exists
		my $ID = substr($msg, 2, 4);
		my $type = unpack("S*",substr($msg, 14,  2));
		my $pet = unpack("C*",substr($msg, 16,  1));
		if (!$jobs_lut{$type} && $type >= 1000 && !$pet) {
			my $display = ($::monsters_lut{$type} ne "")
				? $::monsters_lut{$type}
				: "Unknown ".$type;
			alertSound("monster $display");
		}
	} elsif ($switch eq "01D8") {
	# Existance packet used to tell if monster exists
		my $ID = substr($msg, 2, 4);
		my $type = unpack("S*",substr($msg, 14,  2));
		my $pet = unpack("C*",substr($msg, 16,  1));
		if (!$jobs_lut{$type} && $type >= 1000 && !$pet) {
			my $display = ($::monsters_lut{$type} ne "")
				? $::monsters_lut{$type}
				: "Unknown ".$type;
			alertSound("monster $display");
		}
	}
}

##
# alertSound($event)
# $event: unique event name
#
# Plays a sound if alertSound is enabled,
# and if a sound is specified for the event.
#
# The config option "alertSound_#_eventList" should have a comma
# seperated list of all the desired events.
#
# Supported events:
# public GM chat, npc chat, public chat, private GM chat, private chat, chat room
# system message, emoticon, map change, GM near, death, monster <monster name>

sub alertSound {
	return if (!$config{'alertSound'});
	my $event = shift;
	my $MsgUser = shift;
	my $i = 0;
	for (my $i = 0; exists $config{"alertSound_".$i."_eventList"}; $i++) {
		next if (!$config{"alertSound_".$i."_eventList"});
		if (Utils::existsInList($config{"alertSound_".$i."_eventList"}, $event)
		&& main::checkSelfCondition("alertSound_$i")
		&& !Utils::existsInList($config{"alertSound_".$i."_notPlayers"}, $MsgUser)) {
			return if ($config{"alertSound_".$i."_Players"} && !Utils::existsInList($config{"alertSound_".$i."_Players"}, $MsgUser));
			message "Sound alert: $event\n", "alertSound";
			Utils::Win32::playSound($config{"alertSound_".$i."_play"});
		}
	}
}

return 1;
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Ответить