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, поэтому идеями пользуйтесь, если интересно, а кода в недоделанном виде не будет..если вдруг доделаю - выложу на вики | ||
|