Чат заработал, список народа в комнате обновляется. видимо это было временное явление
Нет. После рефреша работает, а так пропадает. Надо продолжать искать причины.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Combots Бот для БК » Сообщения от hyppo
Чат заработал, список народа в комнате обновляется. видимо это было временное явление
Нет. После рефреша работает, а так пропадает. Надо продолжать искать причины.
В идеале хочу сделать "беспалевный" маршрут, где бот мог бы иногда делать случайные повороты, движения, мог случайно менять маршрут, и чтобы в одном файле было сразу несколько вариантов прохождения
Получается.
Или проще говоря как создать условие вида: "если переменная не объявлена"?
if(your_variable == undefined)фак, опоздал на минуту(
Так пробовал. Не работало. typeof надо было добавить ![]()
Нашёл ответ
Для переменной hyppo. Вот такой "тест" вписал в маршрут. Показывает выпавшее значение или же что его вообще нет.
if (typeof hyppo !== 'undefined') external.AddToChat("Rnd:" + hyppo); else external.AddToChat("Нифига такого нет");
Всё работает хорошо. Пишу сложный маршрут одним файлом. Получается ![]()
Жаль только что вызов экстернала из строки маршрута прерывает выполнение этой строки
Поэтому написать в чат и при этом шагнуть не получается. Но это мелочи.
Теперь возник дополнительный вопрос. Иногда, в результате перезагрузок, значение переменной исчезает. Но оно не равное 0 получается, а вообще неопределённое. Приведите пример условия по которому можно узнать задавалось ли вообще значение переменной? Как это выглядит? Любой пример дайте, я разберусь ![]()
Или проще говоря как создать условие вида: "если переменная не объявлена"?
Добавил в FAQ. Хотя мне казалось что там это уже есть...
А если к этому вопросу подойти с другой стороны)))
У меня есть права, я езжу на своей любимой машине. Но в связи с стечением обстоятельств буду ездить на другой. Мне достаточно лишь подпись хозяина машины на доверенности
Ну вот если у кого будешь брать машину уже с номерами, то тогда да, только доверенность. Хотя и она не нужна.
Машина - компьютер.
Номера - ключ.
Бери у друга комп уже с ботом и ключом и хоть обкатайся.
Это все равно что получил права на вождение машины, но когда решил поменять права, мне говорят....получай заного права.
Нет.
Ты купил новую машину и должен на неё поставить новые номера, а не перекручивать со старой.
На новые номера налог такой же как и на старые
И старую машину с номерами у тебя ведь никто не отбирает.
+1 за новую лицензию... и ещё старый комп выбрасывать не надо
На кухню его надо поставить. И жёсткий диск на него по-больше. Пусть торрентсы раздаёт!
Ну и бота там тоже удобно будет пускать.
Поймите правильно. Разрешат одному — придётся всем разрешить. И понесётся бардак.
10 евро совсем небольшая цена за бота. Символическая. Практически устная благодарность авторам ![]()
P.S. И вообще такие вопросы обсуждают с разработчиком, а не с широкой общественностью. Мы тут все некомпетентны в этом вопросе.
В общем в итоге просто ввёл переменную, которую задал заранее, на предыдущей клетке маршрута
Так надёжнее.
0000_предыдущая_клетка_0000 : AttackMobs(); hyppo = Math.random(); Walk("m1");
00000_клетка_развилки_00000 : AttackMobs(); if(hyppo>0.66) Walk("m1"); else if(hyppo<0.33) Walk("rr"); else Walk("rl");
Работает! ![]()
123456789012345667890 : UseObjects(); AttackMobs(); if(top.frames[external.mainFrameIndex].is_accessible) {if(Math.random()>0.66) Walk("m1"); else if(Math.random()<0.5) Walk("rr"); else Walk("rl");};
Строка в маршруте. Не работает. Что не так? ![]()
И так тоже молчит:
123456789012345667890 : UseObjects(); AttackMobs(); while(!top.frames[external.mainFrameIndex].is_accessible) {if(Math.random()>0.66) Walk("m1"); else if(Math.random()<0.5) Walk("rr"); else Walk("rl");}
А так шагает только вперёд:
123456789012345667890 : UseObjects(); AttackMobs(); if((Math.random()>0.66) && (top.frames[external.mainFrameIndex].is_accessible)) Walk("rl"); else if((Math.random()<0.5) && (top.frames[external.mainFrameIndex].is_accessible)) Walk("rr"); else Walk("m1");
То есть как я понимаю выражение (top.frames[external.mainFrameIndex].is_accessible) никогда не бывает true ![]()
Может этот экстернал закрыт?
Попробовал паузу соорудить, типа такой:
external.Stop(); setTimeout("external.Start();",15000);
Но тогда он на клетке стопорится на 15 секунд, а потом когда стартует опять по новой начинает строку выполнять, до рандомного шага не доходит ![]()
И вот так пробовал:
setTimeout(external.AddToChat("жду 15 секунд"),15000); Walk("m1");
Вперёд не шагает. Пишет в чат что ждёт с частотой заданной скоростью интервала действия бота.
()
Ну и рубашку за 5 екр прикупить. Не ахти какие деньги.
А можно прописать какие приёмы тут стоят?
Да всякие. Я же сказал что это тебе для старта набор, чтобы разобраться ![]()
Вот такие строки содержат идентификатор приёма:
_name="hp_defence";
hp_defence, к примеру, это стойкость.
Подробнее об идентификаторах тут: ()
Приёмы в настройках бота могут описывать все приёмы у персонажа. Даже если их не выставлено у перса. Просто использовать их бот не станет. Можно даже для танка туда же вписать или для мага
Поэтому не удивляйся что там может быть то что ты и не используешь.
Если хочешь вот этот приём можно выкинуть (путь щита):
<Priem13>_name = "block_path";
// _name = "block_path";
</Priem13>
Тем более он с комментом, видимо ставил его ещё когда танком был на восьмом [8].
И читай FAQ, используй поиск.
Будешь по каждому новому мелкому вопросу тему заводить - накажу.
То что ты перекупил лицензию у кого-то не снимает с тебя необходимости соблюдать правила и учиться самому настраивать бота. Не надо всё спрашивать. Сначала почитай, попробуй, учись. Не нашёл ответ - найди тему и там спроси.
Есть ещё 1 но)) приёмы на уворота 10 не скинешь?? ато уже минут 30 ищу
Это надо делать самому. Начни вот с таких простейших настроек:
<?xml version="1.0" encoding="windows-1251"?>
<Methods>
<Priem1>if(parseInt(top.Battle.oBattle.arrRes["hp"].innerHTML) > 5)
_name="hp_defence";</Priem1>
<Priem2>if(parseInt(top.Battle.oBattle.arrRes["hp"].innerHTML) > 5)
_name="hp_enrage";</Priem2>
<Priem3>if(top.Battle.oBattle.arrRes["hit"].innerHTML > 10)
_name="hit_empower";
</Priem3>
<Priem4>if((top.Battle.oBattle.oMySlot.nHP * 100 / top.Battle.oBattle.oMySlot.nMaxHP) < 32)
_name="hit_willpower";
else
_name = "hit_luck";</Priem4>
<Priem5>_name="parry_supreme";</Priem5>
<Priem6>_name = "counter_deathwalk";
</Priem6>
<Priem7>
</Priem7>
<Priem8>if(parseInt(top.Battle.oBattle.arrRes["hp"].innerHTML) > 10)
_name="hp_natisk";</Priem8>
<Priem9>if(parseInt(top.Battle.oBattle.arrRes["hp"].innerHTML) > 10)
_name="hp_circleshield";</Priem9>
<Priem10>if((top.Battle.oBattle.oMySlot.nHP * 100 / top.Battle.oBattle.oMySlot.nMaxHP) < 10)
_name="hp_regen";</Priem10>
<Priem11>if(parseInt(top.Battle.oBattle.arrRes["block"].innerHTML) > 7)
_name="block_activeshield";</Priem11>
<Priem12>if((typeof(top.Battle.oBattle.oMySlot.arrEffects["ggvod"]) == "object") || (typeof(top.Battle.oBattle.oMySlot.arrEffects["wis_fire_flamming08"]) == "object") || (typeof(top.Battle.oBattle.oMySlot.arrEffects["ggair"]) == "object") || (typeof(top.Battle.oBattle.oMySlot.arrEffects["ggyad"]) == "object") || (typeof(top.Battle.oBattle.oMySlot.arrEffects["wis_air_mark"]) == "object") || (typeof(top.Battle.oBattle.oMySlot.arrEffects["ggspeed"]) == "object") || (typeof(top.Battle.oBattle.oMySlot.arrEffects["ggvras"]) == "object") || (typeof(top.Battle.oBattle.oMySlot.arrEffects["standart_effect"]) == "object"))
_name="hp_cleance";</Priem12>
<Priem13>_name = "block_path";
// _name = "block_path";
</Priem13>
<Priem14>if((top.Battle.oBattle.oMySlot.nHP * 100 / top.Battle.oBattle.oMySlot.nMaxHP) < 70)
_name = "block_restore";
</Priem14>
<Priem15>if(parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) > 0 && (top.Battle.oBattle.oMySlot.nHP * 100 / top.Battle.oBattle.oMySlot.nMaxHP) < 99)
_name = "novice_hp";</Priem15>
<Priem16>if((top.Battle.oBattle.arrUsers[top.Battle.oBattle.sEnemy].nLevel == 9) && (top.Battle.oBattle.sEnemyLogin.indexOf("Сторож") > -1))
_name = "spirit_14_prot_100";
if((top.Battle.oBattle.arrUsers[top.Battle.oBattle.sEnemy].nLevel == 9) && (top.Battle.oBattle.sEnemyLogin.indexOf("Смотритель") > -1))
_name = "spirit_12_prot_100";
if((top.Battle.oBattle.arrUsers[top.Battle.oBattle.sEnemy].nLevel == 9) && (top.Battle.oBattle.sEnemyLogin.indexOf("Рабочий") > -1))
_name = "spirit_13_prot_100";
if((top.Battle.oBattle.arrUsers[top.Battle.oBattle.sEnemy].nLevel == 9) && (top.Battle.oBattle.sEnemyLogin.indexOf("Проклятье Глубин") > -1))
_name = "spirit_13_prot_100";
if((top.Battle.oBattle.arrUsers[top.Battle.oBattle.sEnemy].nLevel == 9) && (top.Battle.oBattle.sEnemyLogin.indexOf("Хранитель") > -1))
_name = "spirit_13_prot_100";
if(top.Battle.oBattle.sEnemyLogin.indexOf("Заблудшая") > -1)
_name = "spirit_block25";</Priem16>
<Priem17>
</Priem17>
<Priem18>if(parseInt(top.Battle.oBattle.arrRes["counter"].innerHTML) > 9)
_name = "counter_bladedance";
</Priem18>
<Priem19>
</Priem19>
<Priem20>
</Priem20>
<Priem21>
</Priem21>
<Priem22>
</Priem22>
<Priem23>
</Priem23>
<Priem24>
</Priem24>
</Methods>
Файл Уворот10.cm
Лучшее что я пробовал из физкультуры это аквааэробика.
Тридцать пять скучающих домохозяек и hyppo в одном бассейне
Рекомендую!
Хотя странно, что он у тебя пытается вперед пойти...в самом боте вроде как есть проверка.
Ты не понял. Он как раз НЕ пытается вперёд пойти, а делает то что доступно сейчас - влево или вправо. А вперёд при ранее написанном условии не шагнёт, за время пока зелёная полоска растёт он несколько раз пройдётся по этому условию и тыркнется куда-нибудь ещё.
а 2 орешка + метровый член что получается???
Страшно даже подумать! ![]()
Более глубокие тесты показывают некорректную работу
Нужно дополнительное условие, чтобы бот ждал когда будет готов сделать шаг и лишь потом выполнял рандомные условия. В противном случае прямо он никогда не шагнёт, точнее с очень малой вероятностью. Поскольку несколько тактов проскакивает при которых бот уже может повернуться влево или вправо, но ещё не готов шагнуть вперёд.
Теперь нужна либо пауза либо условие готовности сделать шаг ![]()
ZhEkA_BK после Walk("rr") поставил точку с запятой (чисто чутьём чую что она там нужна, а может нет?).
Проверил. Работает! ![]()
У меня член около полуметра! 14 см это же скорее около полуметра, чем около метра.
А где включить фильтрацию?
Вот эта кнопка в БК 
Что можете посоветовать?
1. Почистить IE и больше его не засирать.
2. Фильтр чата всегда держать включённым. Нечего там флуд смотреть боту.
3. Поставить плагин SelectChat.js
Он переключает фрейм с лога боя на чат, что заметно разгружает систему.
function SelectChat(enabled)
{
if(enabled)
{
PluginsOnLoad["SelectChat"] = "SelectChatHandler";
}
else
{
PluginsOnLoad["SelectChat"] = "";
}
}
function SelectChatHandler(){
try
{
if(!top.Battle.bInBattle) return;
if(top.Battle.Self.oTab.arrTabs["chat"].bSelected == false)
top.Battle.Self.oTab.arrTabs["chat"].onmousedown();
}
catch(err)
{
//alert(err.description);
}
}
Вопрос: Возможно ли сделать так, чтобы когда перс набьет например 200хп он переставал бить, но при этом если он остался последним в группе - начинал действовать?
Ответ: ()
Combots Бот для БК » Сообщения от hyppo