Тема: отменить прием
а бот не может считывать сколько жизней на данный момент?у самого перса.и это привязать к приему.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны вход или регистрация
а бот не может считывать сколько жизней на данный момент?у самого перса.и это привязать к приему.
А смысл? Потерял 2хп от оледенения и отменил
Что при 90% хп, что при 10% хп...
тебе способов спалить бота мало в жизни чтоли?
1 косяк - тебя спалили. Оно тебе надо?
ну дык на 100 уменьшилась жизнь и сразу отменить.почему сразу 2?
Мне кажется, что это только лишняя нагрузка будет каждый размен сверять уровень хп
Реальной пользы почти нет, если не руками юзать
хочу попробовать поставить прием"отменить" по нескольким условиям,например когда жизней 50,40 и 30 процентов,но не знаю как прописать чтоб юзал прием всего 1 раз на этапе перехода в 50 ,40 и 30 процентов,чтоб не юзал его посьоянно.кто нибудь знает как прописать такой единоразовый прием?
Тоже возникла проблемка с СБ с их проклятьями. Неужели нельзя сделать условие если текущий уровень HP минус предыдущий уровень HP больше например 150 то отменить.
if (условие){ приём }
переделай в
var usedCancel; if(!usedCancel && (условие)){ приём; usedCancel=1 }
var usedCancel; - в последующих итерациях не доступна будет из-за var....
Ничего не понял. Где то надо хранить осташиеся HP после предыдущего размена. Ведь "условие" должно быть разностью. так сказать (тек.HP<= предHP-150)
Ну, небезопасный метод если хочешь, можешь попробывать так:
1) Последним приёмом написать:
MyHp_temp = top.Battle.oBattle.oMySlot.nHP;
2) Первым написать:
if(window.MyHp_temp && (MyHp_temp-top.Battle.oBattle.oMySlot.nHP)>=150) _name = "идентификатор отмены";
if(window.MyHp_temp) external.AddToChat("<b>Сохраненное значение хп:</b> "+window.MyHp_temp+"<b>Текущее ХП:</b>"+top.Battle.oBattle.oMySlot.nHP+"<br><br>");
не проверено.
добавил тебе в пункте (2) строку, выводящую информацию по ХП.......если два-три круга приёмов не выводит ничего, значит есть два варианта:
1) косяк в этом коде.
2) косяк где-то в приёмах твоих и он просто до последнего не добирается(Тестировать тупо передвинув пункт (1) на место второго приёма и если заработает - именно в приёмах может быть косяк).
стопорится, если доходит до этих приемов
external.AddToChat("бла бла бла");
одна только эта запись в слоте приема уже вешат бот в процессе боя
Отредактировано pop-corn (2010-05-28 18:17:50)
top.Chat.Self.AddMessage("xxx");
это замена для external.AddToChat, принадлежащая уже не боту, а самому БК.
потестировал - текущее и сохраненное значения всегда равны друг другу
о... поменял местами, теперь нормально отображается, ща прием потестирую
Отредактировано pop-corn (2010-05-29 15:10:05)
Не понятно толком, как лучше вставлять эти 2 части, чтоб нормально улавливать размены
есть мысль (1) вставить в конце каждого приёма, а (2) в начало каждого приёма...
т.е. все приёмы переделать вот примерно в такой вид:
if(window.MyHp_temp && (MyHp_temp-top.Battle.oBattle.oMySlot.nHP)>=150)
{
_name = "идентификатор отмены";
top.Chat.Self.AddMessage("Выполнено");
}
else
{
*Тут сами приёмы ваши*
}
if(window.MyHp_temp && (MyHp_temp-top.Battle.oBattle.oMySlot.nHP)>1)top.Chat.Self.AddMessage("Получен урон = "+(MyHp_temp-top.Battle.oBattle.oMySlot.nHP));
MyHp_temp = top.Battle.oBattle.oMySlot.nHP;
о... поменял местами, теперь нормально отображается, ща прием потестирую
Нельзя так
между первым сбором ХП и первой проверков выставление кучи приёмов стоит, соответственно не 1 размен может выйти за это время.....
а может необорот самое то, ибо схема работы приёмов мне ясна, но как она накладывается на реалии жизни - хрен её знает
Отредактировано anahronik (2010-05-29 15:23:09)
работает :-)
спасибо!
кх...
не я конечно извиняюсь, но что работает то?
то, что ты поменял местами конец с началом или то, что я написал для каждого приёма вставить?
да прост первым приемом поставил код который ты в последнем посте дал, сообщения ток поудалял и норм работает, косяк только если противник с двумя оружиями, первым ударом может 500 снести, а вторым 40 например..
я вобще думал, что это на каждый приём повесить надо, а не только на первый...ну чтоб он каждый приём сравнивал ХП, а не каждый круг приёмов - меньше шанс получить два размена подряд
про два оружия как избежать - не знаю точнее знаю, но там долго надо делать просмотр по логу
если вдруг у кого-то умного проснётся желание поработать с логом: top.User.Framework.GetTab("mylog").Frame().childNodes[5].innerHTML - вроде это адрессация на кокретную запись одну из лога, в котором только события с вами связанные пишутся. Вроде, т.к. я месяца 3 назад находил адрессацию и записывал в файл, а её ли нашел сейчас или нет - не знаю вроде похожа
Отредактировано anahronik (2010-05-29 18:40:25)
он все приемы перебирает за небольшой промежуток времени, мне кажется достаточно один раз в самом начал хп проверить
еще раз спасибо за разработку
он их не просто перебирает.....некоторые он ждет, пока станут активными(точнее он все ждет, пока станет активной кнопка Вперед...на каждый прием)....соответственно один круг приёмов может растянуться секунл на 15....
Отредактировано anahronik (2010-05-29 18:42:49)
var usedCancel; - в последующих итерациях не доступна будет из-за var....
Угу. Вынос в нужный scope оставлен на домыслевание нуждающимся. Я Combots достаточно глубоко не копал, что проверять в какой области он тело обработки приёмов размещает (мне с Perl'овым ботом проще )
Прием работает. Менять вывод в чат даже не стал, ибо и так ясно что работает. В бездне самое то. В хаотах не катит конечно - часто получаешь несколько запоздалых ответов подряд или у двуручника первым идет крит а вторым так - чуток ковырнет и все. Спасибо. А что там такого небезопасного?
Отредактировано Cookie (2010-05-31 03:11:36)
Только то, что можно спалиться на какой-нить мелочи с этой отменой
Страницы 1
Чтобы отправить ответ, вы должны вход или регистрация