Boriska69,
хм... точняк... экстернал поломался... надо думать...
код
external.AddToChat("Lvl соперника = "+top.Battle.oBattle.oEnemySlot.nLevel);
выдает
20:30:34 Lvl соперника = undefined
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Combots Бот для БК » Сообщения от Andy_SPB
Boriska69,
хм... точняк... экстернал поломался... надо думать...
код
external.AddToChat("Lvl соперника = "+top.Battle.oBattle.oEnemySlot.nLevel);
выдает
20:30:34 Lvl соперника = undefined
что то пропустил в списке... ![]()
есть ли external на интервал действий "вне боя/в бою/в пещере"?
vad802, создаешь текстовый фаил в блокноте.
Забиваешь в него код.
Жмешь "Фаил" -> "Сохранить как... " -> в поле "Имя файла" вводишь -> Melter.js -> Кнопка "Сохранить".
подсчет кастов не корректно работает...
так сказать ошибка в идеологии кода...
по коду
if (kast == 'undefined') {var kast = 0;}
if (kast == 0) {
}
if (kast == 4){ kast = 0;} else { kast = kast + 1; } // подсчет циклов -> 4
Как допилить, пока не придумал...
Как вариант проверка, через регулярные выражения из всплывающего текста при наведении на свиток... насколько помню там пишется что то вроде "задержка еще 4 хода"
Но с регулярками у меня трудно... ![]()
Евжений,
if(top.Battle.oBattle.oGroupsLayer.getElementsByTagName("IMG")[1].sList.split(", ").length > 2)
{
_name = "wis_air_speed";
_target = top.Battle.oBattle.sEnemyLogin;_name = "wis_air_chainlight12";
_break = true;
}
Уверен, что нет ошибки?
В приеме идет два приема в подряд...
_name = "wis_air_speed";
и
_name = "wis_air_chainlight12";
по моему бот не использует два приема в одном слоте?
{_target = top.Battle.oBattle.sEnemyLogin;_name = "wis_air_shaft12";
_break = true;}
Зачем {} скобки?
или это какая то часть кода, а не готовый прием для слота?
Boriska69,
if((top.Battle.oBattle.oEnemySlot.nLevel > 9) && (top.Battle.oBattle.oEnemySlot.nLevel < 12)) { _name = "pet_unleash"; }
на простом языке зчанчит
если ( уровень противника > 9 и уровень противника < 12) выпускаем зверя
В вашем случае надо просто больше 10 ![]()
if(top.Battle.oBattle.oEnemySlot.nLevel > 10) { _name = "pet_unleash"; }
Евжений,
ааа.... ну тогда так ![]()
if((top.Battle.oBattle.oEnemySlot.nLevel > 9) && (top.Battle.oBattle.oEnemySlot.nLevel < 12)) { _name = "pet_unleash"; }
Евжений,
как вариант через экстернал - external.SCity.Text
function AllDialog(enabled) {
if(enabled) {
PluginsOnLoad["AllDialog"] = "AllFunctionDialog";
}else{
PluginsOnLoad["AllDialog"] = "";
}
}
function AllFunctionDialog(){
if (external.SCity.Text == "dreamscity"){
// <- код для Дриамсити
}else if(external.SCity.Text == "devilscity"){
// <- код для Девилсити
}else{
// <- и т.д.
}
}
external.room_name == "ХХХХХ"
Как сделать что бы зверя бот вызывал только на 10-11 ботов ?
Я вот так написал , но не сработало
if(top.Battle.oBattle.oGroupsLayer.getElementsByTagName("IMG")[1].sList.split(", ").length > 9)
_name = "pet_unleash"
как то так
if((EnemiesCount > 9) && (EnemiesCount < 12)) { _name = "pet_unleash"; }
Евжений,
в строке
.each(function();
не надо ";" после function() - вроде
и я правильно понимаю, что после function() идет код функции в { ... } ?
+ еще ошибка в последней строке... со скобками намудрили и у оператора if должна идти проверка "==" , а не присвоение значения "=" ![]()
if (say == 0) {each(function(Razgovor_1)); say = say + 1; } else {each(function(Razgovor_2))}
и честно скажу не видел я что то отдельного вызова как у вас...
each(function(Razgovor_1))
может в этом и косяк
И я бы попробовал бы такой вариант...
if (typeof(say) == "undefined") {var say = 0;} if (say == 0) { say = say + 1; $('area[title="..."]',get_mainframe().document).each(function() { ...... } ) } else { $('area[title="..."]',get_mainframe().document).each(function() { ...... } ) }
З.Ы. Чуть чуть код поправил... скобку потерял... в последней строке
*обшибся мальца* ![]()
378f623a6ffd92a4219d1d25a6836e12 : if (say == 1) { Walk("rr"); var say = 0; } else { say = 1; $('area
[title="Оборванец"]',get_mainframe().document).each(function() { this.click(); $('a
[onclick*="tn3_poors_default_2"]',get_mainframe().document).each(function(){this.click()})}); }
а у меня что тут неверно ,стоит перед ботом и некакой реакции
Это условие выполнили?
В клетке предыдущей 378f623a6ffd92a4219d1d25a6836e12, необходимо перед функцией Walk() задать переменную
var say = 0;
подскажите пожалуйста или скиньте ссылку как прописывать одевание шмота... после ремонта бот заходит в хаоты голым...
боевой комплект сохранен в настойках?
Какой выход? в самом начале пещеры? да и заход то в гору 1 раз в сутки )
ну там не был... не знаю ![]()
подумаю как быть ![]()
тут вся беда, я не знаю как привязаться к изменению верхнего фрейма...
наверное слишком проблематично реализовать данный момент.
вполне вероятен конфликт плагина и бота. Так как бот повторные предметы подбирать не будет, а плагин будет его заставлять это делать.. может получиться беда.
Но надо проверить.
П.Р. наверное поставить отсечку: сдача задания -> выход -> повторный вход.
Так насчет моей просьбы кто нибудь поможет?
так я ж поправил код?
()
что то не понял сути проблемы? ![]()
Евжений,
честно скажу, сложных комбинаций стараюсь не использовать...
Бот использует принцип... 1 слот - 1 прием... т.е. он может в слоте с кодом вызвать только один прием...
по этому есть смысл прописывать приемы связанные с друг с другом по логике - либо первый... либо второй...
По твоему коду...
if((!top.Battle.oBattle.arrMethods["wis_air_chainlight12"].oMethod.bEnable) || (!top.Battle.oBattle.arrMethods["wis_air_shaft12"].oMethod.bEnable)) _name ="wis_gray_meditation"; else DoHit();
if(!top.Battle.oBattle.arrMethods["wis_water_strike"].oMethod.bEnable && !top.Battle.oBattle.arrMethods["wis_water_frost12"].oMethod.bEnable && !top.Battle.oBattle.arrMethods["wis_water_cloud12"].oMethod.bEnable && !top.Battle.oBattle.arrMethods["wis_gray_meditation"].oMethod.bEnable)
{
DoHit();
_break = true;
}
Это должны быть два разных слота с кодами... иначе на запашет
{if(typeof(top.Battle.oBattle.oEnemySlot.arrEffects["wis_water_frost12"]) == "object" && (top.Battle.oBattle.oEnemySlot.nHP * 100 / top.Battle.oBattle.oEnemySlot.nMaxHP) < 30) _target = top.Battle.oBattle.sEnemyLogin; _name = "wis_water_break";} || { if(typeof(top.Battle.oBattle.oMySlot.arrEffects["wis_water_poison12"]) != "object") _target = top.Battle.oBattle.sEnemyLogin; _name = "wis_water_poison12";_name = "wis_water_strike";}||{_name = "wis_water_frost12";}|| {_name = "wis_water_cloud12";}|| {_name = "wis_white_meditation";}|| {DoHit();}
тут неверен синтаксис... да и в общем беда ![]()
1. У тебя не верно используются {}, они описывают границы цикла или функции
if (условие) {код если условие верно} else {код если условие не верно}
2. Беда с перечислением приемов?!
{_name = "wis_water_cloud12";}|| {_name = "wis_white_meditation";}
так не запашет...
в одном слоте кода, должен выполняться 1 прием... перечислить можешь 10, но по условиям они не должны пересекаться... а у тебя просто без условия либо тот... либо этот... как определить какой?
по логике должны быть как то так:
if (мои больше хп 90%) {супер удар} else if (у меня хп больше 50% и меньше 90%) {супер защита} else {готовимся к смерти}
как то так...
а у тебя получается по нескольку приемов в подряд... в одном условии... бот так не работает...
Насчет фигурных незнал, а внутри круглых скобок фигурные могут быть?
нет.
у круглых принцип действия как в математики, {} - границы кода цикла/функции
Не работает
Qwerty помоги с этим вопросом
ошибка в коде или опечатка...
оператор if идет с круглыми скобками, а не с фигуристыми скобками...
if((EnemiesCount < 2) && ((top.Battle.oBattle.sEnemyLogin.nHP * 100 / top.Battle.oBattle.sEnemyLogin.nMaxHP) < 33))
_name="pet_unleash";
так то по логике все вроде как верно...
Нет, как и в обычном варианте стоит и постоянно в диалоги заходит
ну это почти тоже самое, как я делал тут... ()
только переменную задавал предыдущей клетке... вариант рабочий...
сделай аналогично...
Понял в чем косяк, обнуление почему работает не корректно...
Данный код рабочий.
if (typeof(say) == "undefined") {var say = 0;} if (say < 2) { say = say + 1; $('area[title="Оборванец"]',get_mainframe().document).each(function() { this.click(); $('a[onclick*="tn3_poors_default_2"]',get_mainframe().document).each(function(){this.click()})}); } else { Walk (XX); }
единственное не будет сбрасываться переменная say, отвечающая за количество совершенных диалогов. Т.е. если за один поход тебе надо будет только один подход сделать (пришел поговорил с ботом 5 раз и больше к нему не приходишь), то конструкция будет работать на ура... если надо больше одно подхода (т.е. пришел поговорил 5 раз, ушел... потом еще раз пришел и еще 5 раз поговорил)... то надо обнулять количество совершенных разговоров (переменную say)
Можно как в ссылке выше, добавить в предыдущей клетке значение (или в следующей клетке за ботом)...
Конструкцию
if (typeof(say) == "undefined") {var say = 0;}
лучше оставить, на случай зависания бота, так как если бот потеряет переменную say он просто остановится в данной клетке и все...
как то так...
external.DungeonLoadPath("Название маршрута без расширения .path");
вот тут можно найти примеры
()
Одним словом вот черновик скрипта...
// Черновик покупки ключей
// Info
var name = "Черновик Покупки ключей от Склепа";
var ver = "0.0";
var test_ver_bot = "9.2.8.31";
var delay_id = '';
// меняем по месту
var nameShop = /Этаж 1 - Каморка Луки/;
var nameSection = /Отдел \"Амуниция: Странные предметы\"/;
var nameLinkSection = "Амуниция: Странные предметы";
var nameItem = /Кристалл Знаний/;
var buttomCoords = "40,64,8";
function BuyKey(enabled) {
if(enabled) {
PluginsOnLoad["BuyKey"] = "BuyKeyFun";
external.AddToChat("Плагин: "+name+" - <font color='green'>Включен!</font>");
external.AddToChat("Версия: "+ver+". Тестировалася на Combots версии "+test_ver_bot);
}else{
PluginsOnLoad["BuyKey"] = "";
external.AddToChat("Плагин: "+name+" - <font color='red'>Выключен!</font>");
clearInterval(delay_id);
}
}
function BuyKeyFun(){
if (get_mainframe().document.all[0].innerHTML.match(nameShop)){
if (!get_mainframe().document.all[0].innerHTML.match(nameSection)){
external.AddToChat("Не в разделе Амуниция");
external.ClickLink(nameLinkSection,2);
}else{
external.AddToChat("В разделе Амуниция");
if (get_mainframe().document.all[0].innerHTML.match(nameItem)){
external.AddToChat("тут надо купить");
// !!!!!! ВАЖНО !!!!!!
external.ClickLink("купить",2); // в случае если на странице только один предмет для покупки!!!! Иначе надо мутить поиск
clearInterval(delay_id);
if(top.frames[external.mainFrameIndex].check_access()){
external.AddToChat("Вызываем функцию выхода!");
exitShop();
}else{
external.AddToChat("Ожидаем и вызываем функцию выхода!");
delay_id = setInterval("exitShop()", 10000);
}
}
}
} else {
clearInterval(delay_id);
}
}
function exitShop(){
external.AddToChat("Вызвали!");
$('area[coords="'+buttomCoords+'"]',get_mainframe().document).each(function() { this.click(); } )
clearInterval(delay_id);
}
Проверял в каморке у луки на кристалле знаний. Соответственно все метки настроены под луку...
Важно сейчас скрипт написан исходя из того, что в разделе амуниция 1 единственны предмет... и мы тупо его покупаем не глядя...
По коду найдешь сроку покупки...
Фаил назовешь BuyKey.js
Дальше думаю сам по месту настроишь...
фраза "Вы получили...." где прописывается в чате или в главном фрейме?
попробуй заменить строки
var itemlog1 = top.frames[external.mainFrameIndex].document.documentElement.outerHTML.match(/Вы подняли \'(.+)\'/);
var itemlog2 = top.frames[external.mainFrameIndex].document.documentElement.outerHTML.match(/Вы получили \'(.+)\'/);
или попробовать так:
var itemlog1 = get_mainframe().document.all[0].innerHTML.match(/Вы подняли \'(.+)\'/);
var itemlog2 = get_mainframe().document.all[0].innerHTML.match(/Вы получили \'(.+)\'/);
скорее всего косяк в приемах.
удали все приемы, если бот будет бить.. то тогда по очереди вставляй приемы и увидишь какой косячит.
Combots Бот для БК » Сообщения от Andy_SPB