Текущее время: 27 апр 2024, 11:31

Часовой пояс: UTC + 2 часа [ Летнее время ]




 Страница 1 из 1 [ Сообщений: 5 ] 
Для печати Предыдущая тема | Следующая тема
Автор Сообщение
 Заголовок сообщения: Аддон: Реакция на низкий уровень хп
СообщениеДобавлено: 08 апр 2012, 12:21 
Эпический
Аватар пользователя

Зарегистрирован: 30 ноя 2010, 08:29
Сообщений: 1820
Откуда: Wellington, Aotearoa
Довольно часто бот перестаёт драться, от чего перс умирает. Иногда такое бывает при попытке лута трупа и нападении другого моба, иногда при попытке портануться в таверну. Иногда бот просто втупляет. У меня все персы одеты хорошо, так что хп никогда ниже 80% не падает. А если падает, значит - проблемы.

За неимением нормальной реакции, сделал аддон, который виспает себе при низком уровне здоровья. Увидав сообщение в аське, можно подскочить и спасти персонажа.
-- следующие переменные можно изменить по своему вкусу
local HP_level1 = 50;-- первый уровень (%), на котором пора беспокоиться
local HP_level2 = 15;-- второй уровень (%), на котором пора поторапливаться
local repcount = 7;-- общее кол-во повторов, чтобы не засирать чат
local repeat1 = 10;-- период повтора на первом уровне (секунд)
local repeat2 = 5;-- период повтора на втором уровне (секунд)
local message1 = "Меня убивают !";
local message2 = "МНЕ ПИ3ДЕЦ !!!";
-- дальше ничего менять не нужно
local danger = 0;
local repeats = 0;
local hprepeat = repeat1;
local timeofmsg = GetTime();
local frame = CreateFrame("FRAME", "HPWISPER");

local function _onUpdate()
   local myname = UnitName("player");
   local hp = UnitHealth("player") * 100 / UnitHealthMax("player");
   if hp > HP_level1+1 then
      danger=0
      timeofmsg = 0;
      repeats = 0;
   else
      if hp < HP_level1 then
         if danger==0 then danger=1; end;
         hprepeat = repeat1;
      end;
      if hp < HP_level2 then
         if danger==1 then
            danger=2;
            timeofmsg = 0;
         end;
         hprepeat = repeat2;
      end;
      if (danger > 0) and (repeats < repcount) and (GetTime() - timeofmsg >= hprepeat) then
         repeats = repeats + 1;
         timeofmsg = GetTime();
         if hp < HP_level2 then
            SendChatMessage(message2, "WHISPER", nil, myname)
         else
            SendChatMessage(message1, "WHISPER", nil, myname)
         end;
      end;
   end;
end;

frame:SetScript("OnUpdate", _onUpdate);

В коде есть комментарии, вроде всё должно быть понятно. Настройте, как нужно. Могут быть слишком частые виспы в тот момент, когда здоровье колеблется на уровне HP_level1, то опускаясь, то поднимаясь за счёт самохила. Я чуть увеличил порог выхода, чтобы снизить вероятность таких случаев.

Во вложении готовый аддон.


Вложения:
lowhp.zip [1.1 KiB]
Скачиваний: 324


Последний раз редактировалось CoreFun 25 май 2012, 05:11, всего редактировалось 1 раз.
Не в сети
 Профиль  
 
 Заголовок сообщения: Re: Аддон: Реакция на низкий уровень хп
СообщениеДобавлено: 08 апр 2012, 18:03 
Эпический
Аватар пользователя

Зарегистрирован: 30 ноя 2010, 08:29
Сообщений: 1820
Откуда: Wellington, Aotearoa
Не спасает ни хрена этот аддон - бот зачастую никак не реагирует на виспы, пока не сдохнет. После воскрешения в аську толпой мчатся сообщения лс.


Не в сети
 Профиль  
 
 Заголовок сообщения: Re: Аддон: Реакция на низкий уровень хп
СообщениеДобавлено: 25 май 2012, 05:10 
Эпический
Аватар пользователя

Зарегистрирован: 30 ноя 2010, 08:29
Сообщений: 1820
Откуда: Wellington, Aotearoa
После фикса проблем с ремонтом/отправкой на ВПФ, аддон работает как надо. Если бота забивают, он оперативно сообщает виспом в аську.


Не в сети
 Профиль  
 
 Заголовок сообщения: Re: Аддон: Реакция на низкий уровень хп
СообщениеДобавлено: 31 май 2012, 07:17 
В теме

Зарегистрирован: 02 мар 2012, 06:41
Сообщений: 84
local message1 = "Меня убивают !";
local message2 = "МНЕ ПИ3ДЕЦ !!!";

убили просто :D


Не в сети
 Профиль  
 
 Заголовок сообщения: Re: Аддон: Реакция на низкий уровень хп
СообщениеДобавлено: 31 май 2012, 16:12 
Я знаю

Зарегистрирован: 06 фев 2012, 09:17
Сообщений: 313
надо еще третье сообщение - "Да ты, что блять, охуел, педрило ебаный, из-за тебя, урода меня убили!!!"


Не в сети
 Профиль  
 
Показать сообщения за:  Сортировать по:  
 Страница 1 из 1 [ Сообщений: 5 ] 

Часовой пояс: UTC + 2 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти: