Re: Приемы в Combots 8+
по опыту зверя видимо... что бы бот перед боем запоминал опыт зверя и не выпускал в случае превышения заданного пользователем числа... только зачем? О_о
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
по опыту зверя видимо... что бы бот перед боем запоминал опыт зверя и не выпускал в случае превышения заданного пользователем числа... только зачем? О_о
Вот я тоже подумал об опыте зверя, но это на сколько надо нелюбить своего бота, чтобы не проведать однажды опыт зверя и не убрать из приёмов тупо вызов?
имею ввиду опыт зверя - при достижении определенного опыта (у зверя) бот переставал его выпускать в бой
бот с утра до вечера качается сам
Отредактировано foox84 (2010-10-06 20:16:23)
foox84
Да мы поняли, что ты имеешь в виду, ну вечером глянь опыт у зверя, да убери приём вызова из списка, так тяжело что ли?) Или, я так понимаю, банально лень и желание сэкономить крохи корма?
подскажите, как поставить условие, чтобы прием использовался только 3 раза
if((top.Battle.oBattle.arrUsers[top.Battle.oBattle.sEnemy].nLevel == 9) &&
(top.Battle.oBattle.sEnemyLogin.indexOf("Рабочий") > -1) &&
(typeof(top.Battle.oBattle.oMySlot.arrEffects["spirit_13_prot_100"]) != "object") &&
(typeof(top.Battle.oBattle.oMySlot.arrEffects["spirit_block25"]) != "object"))
_name = "counter_winddance";
Где я натупил? Не хочет бот юзать танец ветра если противник Раб 9ка и на мне не висит призрачка и профилька. Прием бота не вешает, тот продолжает драться, но активировать его не хочет.
if(top.Battle.oBattle.sEnemyLogin.indexOf("Рабочий") > -1)
{
top.Chat.Self.AddMessage("<b>"+new Date().toLocaleTimeString()+"</b> Противник - Рабочий");
if(top.Battle.oBattle.arrUsers[top.Battle.oBattle.sEnemy].nLevel == 9)
{
top.Chat.Self.AddMessage("<b>"+new Date().toLocaleTimeString()+"</b> Рабочий 9-го уровня");
if(typeof(top.Battle.oBattle.oMySlot.arrEffects["spirit_13_prot_100"]) != "object")
{
top.Chat.Self.AddMessage("<b>"+new Date().toLocaleTimeString()+"</b> На мне нет эффекта spirit_13_prot_100");
if(typeof(top.Battle.oBattle.oMySlot.arrEffects["spirit_block25"]) != "object")
{
top.Chat.Self.AddMessage("<b>"+new Date().toLocaleTimeString()+"</b> На мне нет эффекта spirit_block25");
top.Chat.Self.AddMessage("<b>"+new Date().toLocaleTimeString()+"Тест успешно пройден!</b>");
_name = "counter_winddance";
}
}
}
}
Вот так вот проведи отладку своего приёма
Хм...странно, а так работает Спасибо
О_О
ээээээээээ..........
Та вот сам в шоке...выдает все 5 строк текста и прием юзает даже. А вставляю свой заново, не юзает
Используй условие так как написал anahronik
Вот, код без текста:
if(top.Battle.oBattle.sEnemyLogin.indexOf("Рабочий") > -1)
{
if(top.Battle.oBattle.arrUsers[top.Battle.oBattle.sEnemy].nLevel == 9)
{
if(typeof(top.Battle.oBattle.oMySlot.arrEffects["spirit_13_prot_100"]) != "object")
{
if(typeof(top.Battle.oBattle.oMySlot.arrEffects["spirit_block25"]) != "object")
{
_name = "counter_winddance";
}
}
}
}
Не, Жека у нас умеет читать яваскрипт и править
просто в тупик ставит то, что разницы-то практически и нету...разве что из-за того, что изначально у него несколько условий на разных строках написано...
Попробуй переходы на новую строку убрать:)
Та я всегда пишу на разных строках, так прием более читабелен получается. У меня призрачка написана строк в 10 наверное, и работает
Ну да ладно, работает, не трогай (с)
Буду юзать код Анахроника, и последующие подобные условия буду строить по такому же принципу.
НЕ НАДО по подобному принципу!
Это вкорне неверно и противоречит всем моим убеждениям!
Про перенос я знал, что не должно влиять, но всё же....надо же косяк найти
Выстави условия в том же порядке, что я выставил....может в этом всё дело
Эх, поигрался в Доктора Хауса немного. Скорее всего бот не воспринимает сочетание пробела с последующим переходом на следующую строку. Т.к. скопировал свое условие, включил- не пашет, стер все переносы и пробелы и заново сделал переносы- заработало Последовательность левела и логина, слава богу, роли не играет.
Что-то не могу разобраться с логическим оператором ИЛИ ( || )
Хочу написать, чтобы использовал призрачную защиту на таком-то монстре (и по списку монстров)
вот что получось с начала:
if((top.Battle.oBattle.sEnemyLogin.indexOf("Проклятье Глубин") > -1) ||
if(top.Battle.oBattle.sEnemyLogin.indexOf("Сторож Мглы") > -1) ||
if(top.Battle.oBattle.sEnemyLogin.indexOf("Рабочий Мглы") > -1) ||
if(top.Battle.oBattle.sEnemyLogin.indexOf("Хранитель Очага") > -1))
_name = "spirit_13_prot_100";
Но приём вешает бота. Далее попробовал так:
if((top.Battle.oBattle.sEnemyLogin.indexOf("Проклятье Глубин") > -1) ||
top.Battle.oBattle.sEnemyLogin.indexOf("Сторож Мглы") > -1) ||
top.Battle.oBattle.sEnemyLogin.indexOf("Рабочий Мглы") > -1) ||
top.Battle.oBattle.sEnemyLogin.indexOf("Хранитель Очага") > -1))
_name = "spirit_13_prot_100";
Результат тот-же.
Помогите правильно написать
Отредактировано Pokemon15 (2011-01-18 16:42:33)
Скобок нехватало у тебя, вот попробуй
if((top.Battle.oBattle.sEnemyLogin.indexOf("Проклятье Глубин") > -1) ||
(top.Battle.oBattle.sEnemyLogin.indexOf("Сторож Мглы") > -1) ||
(top.Battle.oBattle.sEnemyLogin.indexOf("Рабочий Мглы") > -1) ||
(top.Battle.oBattle.sEnemyLogin.indexOf("Хранитель Очага") > -1))
_name = "spirit_13_prot_100";
Скобок нехватало у тебя, вот попробуй
if((top.Battle.oBattle.sEnemyLogin.indexOf("Проклятье Глубин") > -1) ||
(top.Battle.oBattle.sEnemyLogin.indexOf("Сторож Мглы") > -1) ||
(top.Battle.oBattle.sEnemyLogin.indexOf("Рабочий Мглы") > -1) ||
(top.Battle.oBattle.sEnemyLogin.indexOf("Хранитель Очага") > -1))
_name = "spirit_13_prot_100";
Поставил, приём вешает бота опять. Убираю приём - все начинает работать, так что дело точно в нём.
Плохо скопировал значит, т.к. Жека все скобки правильно выставил.
Мистика!
if(top.Battle.oBattle.sEnemyLogin.indexOf("Рабочий") > -1)
{
if(top.Battle.oBattle.arrUsers[top.Battle.oBattle.sEnemy].nLevel == 9)
{
if(typeof(top.Battle.oBattle.oMySlot.arrEffects["spirit_13_prot_100"]) != "object")
{
if(typeof(top.Battle.oBattle.oMySlot.arrEffects["counter_winddance"]) != "object")
{
top.Chat.Self.AddMessage("спирит работает");
_name = "spirit_block25";
}
}
}
}
if(top.Battle.oBattle.sEnemyLogin.indexOf("Рабочий") > -1)
{
if(top.Battle.oBattle.arrUsers[top.Battle.oBattle.sEnemy].nLevel == 9)
{
if(typeof(top.Battle.oBattle.oMySlot.arrEffects["spirit_13_prot_100"]) != "object")
{
if(typeof(top.Battle.oBattle.oMySlot.arrEffects["spirit_block25"]) != "object")
{
_name = "counter_winddance";
}
}
}
}
В чат сообщение, что спирит работает приходит, а прием не юзается, когда активный, идентификатор скопировал правильно. Какие у кого будут мысли по этому поводу ?
Причем counter_winddance юзает без проблем
Я надеюсь, это не один приём?
Конечно один Если такие мелочи в разные слоты сувать, мне их не хватит попросту
Не думаю, что это проблема, у меня есть приемы в 4 раза больше занимающие места и нормально функционирующие. Тем более, что в этом коде 1м стоит спирит, и если уж на то пошло, то должен был он работать, а counter_winddance не работать И самое главное, что в чат шлет сообщение..
Твоя проблема в том, что у тебя не взаимоисключающие условия
У тебя первая половина проходит: пишет сообщение и _name = spirit_block25 ставит.
А потом проходит УСПЕШНО вторая половина, и _name становится равен counter_winddance
В итоге у тебя просто никогда не будет так, чтобы выполнилась первая часть и не выполнилась вторая
Связка вобще странная на мой взгляд...рекомендую её перечитать и подумать, действительно ли оно должно быть так.
В итоге я твой приём сокращаю до:
if(top.Battle.oBattle.sEnemyLogin.indexOf("Рабочий") > -1)
{
if(top.Battle.oBattle.arrUsers[top.Battle.oBattle.sEnemy].nLevel == 9)
{
if(typeof(top.Battle.oBattle.oMySlot.arrEffects["spirit_13_prot_100"]) != "object")
{
if(typeof(top.Battle.oBattle.oMySlot.arrEffects["counter_winddance"]) != "object")
{
top.Chat.Self.AddMessage("спирит работает");
_name = "spirit_block25";
}
else if(typeof(top.Battle.oBattle.oMySlot.arrEffects["spirit_13_prot_100"]) != "object")
{
_name = "counter_winddance";
}
}
}
}
Блин, писал целую поэму хода своих мыслей, потом всетаки до меня доперло, что ты имел ввиду
Условие на самом деле хорошее, и будет очень помогать против самых сильных мобов санда. Чтобы перс минимальное количество ходов был без защиты.
Вобщем, как всегда, спасибо, буду тестить.
И появилось новое условие, которое не хочет юзать:
if((Vinos > 20) &&
(top.Battle.oBattle.sEnemyLogin.indexOf("Страж") < 0 &&
top.Battle.oBattle.sEnemyLogin.indexOf("(зверь") < 0) &&
(typeof(top.Battle.oBattle.oMySlot.arrEffects["spirit_12_prot_100"]) != "object") &&
(typeof(top.Battle.oBattle.oMySlot.arrEffects["spirit_11_prot_100"]) != "object") &&
(typeof(top.Battle.oBattle.oMySlot.arrEffects["spirit_13_prot_100"]) != "object") &&
(typeof(top.Battle.oBattle.oMySlot.arrEffects["spirit_14_prot_100"]) != "object") &&
(typeof(top.Battle.oBattle.oMySlot.arrEffects["block_activeshield"]) != "object") &&
(typeof(top.Battle.oBattle.oMySlot.arrEffects["counter_deathwalk"]) == "object") && (typeof(top.Battle.oBattle.oMySlot.arrEffects["hit_empower"]) == "object"))
_name = "counter_winddance";
Если напротив не страж, не маг, не висят спириты и висит поступь с усиленными ударами- юзать counter_winddance. Раньше было это же условие, но без учета вимящих усиленных ударов и все работало. Добавил условие на усилки, и бот перестал юзать counter_winddance, когда на мне была поступь с усилками