Re: autopinger for zmud - Mislik , 17.12.2003 14:12 MSK
: :Вопрос номер 1.
: :ping name моба не совпадает с тем что выходит по tell
:
: Не совпадает и ладно. Мой пингер вообще никак не использует то, что "выходит по tell".
:
: : 2. если моб в списке не один. то как триггер узнает какому именно мобу он что послал если те down.
: : (у меня при каждом пинге мог заранее определяется как down, но если он отвечает , то он up)
:
: Перед пингованием всех мобов:
: - включаем trigger'ы на "No-one by that name here.." и на "You tell $mobname 'ping'".
: - $mobnumber = 0;
: - пингуем всех мобов
: - выключаем триггеры, включенные выше.
: В результате нам _должно_ прийти столько сообщений, сколько мобов мы пропинговали - либо "No-one by.." либо "You tell...". Обработчики триггеров:
: триггер для "No-one by that name here..":
: - моб с индексом $mobnumber - DOWN
: - $mobnumber = $mobnumber + 1;
: триггер для "You tell $mobname 'ping'".
: - моб с индексом $mobnumber - UP
: - $mobnumber = $mobnumber + 1;
:
: То есть пингер определяет "какому мобу он послал пинг" по счетчику, который он обнуляет перед началом пингования, и который он увеличивает на 1 после получения результата tell (либо 'You tell..", либо 'No one by..").
:
: /Binabik

можно пинговать моба его пинг-именем, тогда ты точно будешь знать кто из них UP а все остальные DOWN

имеются несколько тонких мест в пингере

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

2. второе тонкое место заключается в том, что пингуемых мобов можно разделить на несколько категорий по применяемым к ним типам пингов (массивам)
- добавленные в пинг-лист но не убитые ни разу
- добавленные в пинг-лист будучи убитыми и на данный момент отсутствующие
- с определенным репоп-тиком (все остальное неизвестно)
- с определенным репоп-тиком и репоп-таймом
- все параметры известны - просто пингуем

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

лично мне вариант с отключением/включением тригера перед пингом каждого моба, не очень нравился, поэтому я пошел по другому пути

пингую i-ый массив - посылаю всем мобам не только их пинг-имя, но и команду, которую нужно выполнить, если моб, например, ожил...после того как сказал всем я посылаю пинг мобу, который всегда жив, например, lyme-innkeeper, тем самым завершаю работу с первым массивом и после tell'а этому lyme-innkeeper'у я выполняю ряд операций над текущим массивом перенося элементы из него в сдедующий или оставляя их на месте.

впринципе я реализовал для zmud почти все кроме вывода этой инф-ии по gtell'у, но и здесь я хотел хранить то, по какому каналу пришел запрос на пингование и отвечать по нему, чтобы не спамить один канал всем этим...просто перестал играть в слот до того как успел доделать вывод.

все это нисколько не shareware, поэтому идеями пользуйтесь, если интересно, а кода в недоделанном виде не будет..если вдруг доделаю - выложу на вики
   autopinger for zmud - Delving , 16.12.2003 23:50 MSK