Жили весело и на широкую ногу.
Честно говоря, если бы я был в каком-нить враждующем клане, считал бы их кончеными уродами.
А если в их клане - считал бы талантливыми программерами и тестерами ![]()
1 776 2009-11-14 18:40:19
Re: Кто был в эти времена? (14 ответов, оставленных в Флейм)
1 777 2009-11-14 13:49:49
Re: автополучение задания (9 ответов, оставленных в Подземелье / Маршруты)
Кто-то что-то умалчивает...
Говоришь, что квесты берёт, а куска сбора квеста нету(top.frames[3].document.all.getquest.click();) ![]()
Есть кусок, чтоб он зашёл в окно квестов, чтоб он сдал задание, плюс попытка организовать выход к окну с группами...
Ретурны там не понять, зачем.
Недостаток в логики состоит в том, что необходимо, чтоб перед походом он только один раз проверял задания, а так он зациклится и будет выходить из задания - входить в задания.
Выход из окна заданий лучше сделать:
top.frames[3].location = "http://" + external.SCity.Text + ".combats.com/dungeon.pl?" + Math.random();
как минимум ради наглядности
А для однократной проверки нужно внести переменную ещё одну будет и её в условия подабавлять + продумать, когда изменит своё состояние на другое, мол пройдена проверка. А возврат к начальному значению можно задать во время начала похода по самому данжу.
Да и прописывать было лучше else if, чем просто if ![]()
оно же по-кругу повторяться тогда будет со скоростью, указанной в настройках бота.
Т.е. проверилось одно условие, через, допустим, 4000мс второе условие...
1 778 2009-11-13 15:46:19
Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов (95 ответов, оставленных в Настройки / Плагины)
эм...не, не реально ![]()
статы противника не хранятся нигде а только снимаются с текущего противника...
просто сменить на другого противника - это ещё можно, наверное, как-то изхитриться.....но вот учёт статов того, на кого хочешь переключиться - это покачто не возможно...
1 779 2009-11-13 15:03:31
Re: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов (95 ответов, оставленных в Настройки / Плагины)
Интеллект я вписал только как пример, чтоб показать ветвление приёма.
Т.е. получается, что приём применяется либо если моб подчёркнут, либо если его интеллектслишком низок(т.е. он не маг).
Если ты хочешь по имени бота указывать, то там надо писать || Если имя противника НЕ равно Пленник.
Если несколько ботов хочешь учесть, то надо писать || (имя противника Не равно Пленник && имя противника Не равно ЕщёКто-Нить).
Вот, ещё хочу сказать, что имена у ботов бывают разные (цифры в скобках, например, если в бою два бота одинаковых).
Поэтому проверку лучше ставить так
!top.Battle.oBattle.sEnemyLogin.match(\Пленник\);
С другой стороны, если выйдешь из данжа, а в бою будет человек с ником, содержащим Пленник, то приём его как бота распознает.
Как вариант, не очень красивый, можно прописывать сразу несколько вариантов обычного Не равно:
if(IsUnderlined || (top.Battle.oBattle.sEnemyLogin!="Пленник" && top.Battle.oBattle.sEnemyLogin!="Пленник (1)" && top.Battle.oBattle.sEnemyLogin!="Пленник (2)" && top.Battle.oBattle.sEnemyLogin!="Пленник (3)"))
{
...
}else{
top.Battle.oBattle.arrButtons.refresh.click();
}
1 780 2009-11-13 01:41:53
Re: МОД: Ремонт вещей почти везде и без учёта карманов. (122 ответов, оставленных в Настройки / Плагины)
Принцып использовал самый обычный....если я нахожусь в указанной комнате и на странице существует такой-то текст, то перейти по указанной ссылке.
1 781 2009-11-12 23:55:14
Тема: МОД: Ремонт вещей почти везде и без учёта карманов. (122 ответов, оставленных в Настройки / Плагины)
Совместимость: версия 8.4+
Города: нубские города, Ангелс, Кэп, Сансити, Мун, Сэнд.
Изменения:
1) бот возвращается в ту комнату, откуда ушёл.
Список поддерживаемых комнат: Секретная Комната ,Будуар, ЗВ-ЗВ3, Рыцарский зал, Торговый зал, Башня рыцарей-магов, комнаты третьего этажа(не проверены, но проблем быть не должно).
2) В настройках теперь указывать надо не износ вещи, а разницу между максимальным износом и текущим.
Т.е. если выставить 1, то бот пойдёт чиниться только при 18/19, или 49/50...или 47/48 и т.д.
При 2, соответственно, 18/19 или 17/19, 47/49 или 48/49 и т.п.
3) Чинит только те вещи, которые отвечают условию. Т.е. разница между максимальным износом и текущим меньше или равна указанной в настройках
*NEW*4) не учитывает одетые в карманы предметы(во всяком случае те, картинки которых начинаются на invoke)
Установка:
Перед началом правки делаем резервную копию файла Repair.js (на случай голода во время ядерной зимы).
Новое содержание для файла Repair.js
var repaired = false;
var room_return = '';
function RepairMain()
{
var curDurability;
var mask = /Долговечность\:\s(\d+)\/(\d+)\,/g;
var temp_objects = external.objects.replace(/invoke[^,]*,/g,'');
while(curDurability = mask.exec(temp_objects)){
if(curDurability != null){
if((curDurability[2]-curDurability[1]) <= parseInt(external.SRepairNumber.Text) && curDurability[1]>0 && curDurability[2]>1)
{
external.SetStatusLabel("Ремонт");
external.repairEnabled = true;
repaired = false;
external.healWeared = false;
external.battleWeared = false;
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?setdown=all&sd4="+sd4+"&"+Math.random();
return true;
}
}
}
if(external.repairEnabled)
{
external.SetStatusLabel("Ремонт");
if(!repaired)
{
if(external.room_name == "Ремонтная мастерская")
{
repairing();
}
else if(external.room_name == "Центральная грибница" && external.SCity.Text=='suncity')
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o3&rnd=" + Math.random(); //suncity
else if(external.room_name == "Центральная Площадь" && external.SCity.Text=='capitalcity')
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=" + Math.random();
else if(external.room_name == "Центральный Оазис")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o4&rnd=" + Math.random();
else if(external.room_name == "Центральная Площадь" || external.room_name == "Центральный утес")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o4&rnd=" + Math.random();
else if(external.room_name == "Центр падения")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o3&rnd=" + Math.random();
else if(external.room_name == "Бойцовский Клуб")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o6&rnd=" + Math.random();
else if(external.room_name == "Секретная Комната"){
room_return = "Секретная Комната";
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?rnd=" + Math.random()+"&path=1.100.1.6.5";
}
else if(external.room_name == "Будуар"){
room_return = "Будуар";
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
}
else if(external.room_name == "Зал воинов"){
room_return = "Зал воинов";
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
}
else if(external.room_name == "Зал воинов 2"){
room_return = "Зал воинов 2";
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
}
else if(external.room_name == "Зал воинов 3"){
room_return = "Зал воинов 3";
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
}
else if(external.room_name == "Этаж 2")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o4&rnd=" + Math.random();
else if(external.room_name == "Этаж 3")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o4&rnd=" + Math.random();
else if(external.room_name == "Огненный мир"){
room_return = "Огненный мир";
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o5&rnd=" + Math.random();
}
else if(external.room_name == "Колдовской мир"){
room_return = "Колдовской мир";
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o5&rnd=" + Math.random();
}
else if(external.room_name == "Астральные миры"){
room_return = "Астральные миры";
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o5&rnd=" + Math.random();
}
else if(external.room_name== "Башня рыцарей-магов"){
room_return = "Башня рыцарей-магов";
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o2&rnd=" + Math.random();
}
else if(external.room_name== "Рыцарский зал"){
if(room_return==='')room_return = "Рыцарский зал";
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
}
else if(external.room_name.match(/Торговый\sЗал/) != null){
room_return = "Торговый Зал";
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o7&rnd=" + Math.random();
}
else if (top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Кто\sздесь?/) || top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Бронзо \- чинить/))
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?move_dialog=2&" + Math.random();
else if(external.room_name == "Ремонтный цех" && external.SCity.Text=='suncity')
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=" + Math.random(); //suncity
else if(external.room_name == "Мастерская Удивительного Бронзо")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o0&rnd=" + Math.random(); //sandcity
else if(external.room_name == "Ремонтный цех" && external.SCity.Text=="mooncity"){
if(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/грязно\sругается/i)){
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?move_dialog=2&" + Math.random();
}
else if(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Масса/)){
repairing();
}
else
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=&" + Math.random();
}
else if(external.room_name == "Ремонтный цех"){
if(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Хочу/)){
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?move_dialog=1&" + Math.random();
}
else if(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Масса/)){
repairing();
}
else
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o0&rnd=&" + Math.random();
}
else
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?homeworld=" + Math.random();
}
else
{
if(external.room_name == "Ремонтная мастерская" && external.SCity.Text!="angelscity" && external.SCity.Text!="suncity" && external.SCity.Text!="sandcity")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/repare.pl?path=1.100&rnd=" + Math.random();
else if(external.room_name == "Центральная грибница")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o0&rnd=" + Math.random(); //suncity
else if(external.room_name == "Ремонтный цех" && external.SCity.Text=="suncity")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o0&rnd=" + Math.random(); //suncity
else if(external.room_name == "Ремонтная мастерская" && external.SCity.Text=="suncity")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/repare.pl?rnd=" + Math.random()+"&path=1.100.4"; //suncity
else if(external.room_name == "Ремонтная мастерская" && external.SCity.Text=="sandcity")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/repare.pl?rnd=" + Math.random()+"&path=1.100.2"; //sandcity
else if(external.room_name == "Мастерская Удивительного Бронзо")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=" + Math.random(); //sandcity
else if(external.room_name == "Ремонтный цех")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=" + Math.random();
else if(external.room_name == "Ремонтная мастерская" && external.SCity.Text=="angelscity")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/repare.pl?rnd=" + Math.random()+"&path=1.100.2";
else if(external.room_name == "Центральная Площадь" && external.SCity.Text=='capitalcity')
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o0&rnd=" + Math.random();
else if(external.room_name == "Центральная Площадь")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o6&rnd=" + Math.random();
else if(external.room_name == "Центральный утес")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o0&rnd=" + Math.random();
else if(external.room_name == "Центральный Оазис")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o3&rnd=" + Math.random();
else if(external.room_name == "Центр падения")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o2&rnd=" + Math.random();
else if(external.room_name == room_return){
room_return='';
external.repairEnabled = false;
repaired = false;
}
else if(external.room_name == "Бойцовский Клуб"){
if(room_return=="Зал воинов")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=" + Math.random();
else if(room_return=="Зал воинов 2")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o2&rnd=" + Math.random();
else if(room_return=="Зал воинов 3")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o3&rnd=" + Math.random();
else if(room_return=="Будуар")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o0&rnd=" + Math.random();
else if(room_return=="Секретная Комната")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?rnd=" + Math.random()+"&path=1.100.1.50";
else if(room_return==""){
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o2&rnd=" + Math.random();
room_return="Зал воинов 2";
}
else
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o4&rnd=" + Math.random();
}
else if(external.room_name == "Этаж 2"){
if(room_return=="Рыцарский зал" || room_return=="Башня рыцарей-магов")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o2&rnd=" + Math.random();
else if(room_return=="Торговый Зал")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=" + Math.random();
else
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o3&rnd=" + Math.random();
}
else if(external.room_name == "Рыцарский зал")
if(room_return=="Башня рыцарей-магов")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o5&rnd=" + Math.random();
else if(external.room_name == "Этаж 3"){
if(room_return=="Огненный мир")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o1&rnd=" + Math.random();
else if(room_return=="Астральные миры")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o3&rnd=" + Math.random();
else if(room_return=="Колдовской мир")
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?path=o2&rnd=" + Math.random();
}
}
return true;
}
return false;
}
function repairing(){
var s = top.frames[external.mainFrameIndex].document.all[0];
var x=4;
var item ='';
var maskA = /Долговечность\:\s(\<FONT\scolor\=\#990000\>)?(\d+)\/(\d+)\</;
while(s.getElementsByTagName('TR')[x] && s.getElementsByTagName('TR')[x].innerHTML.match(/Ремонт\s1/)){
var iznos = maskA.exec(s.getElementsByTagName('TR')[x].innerHTML);
if((iznos[3]-iznos[2]) <= parseInt(external.SRepairNumber.Text)){
if(external.SRepairType.SelectedIndex == 1)
item = s.getElementsByTagName('TR')[x].innerHTML.match(/repare.pl\?rp=[A-Za-z_0-9]+?\&full=1\&n=\d+\&tooth=1\&0\.\d+/);
else
item = s.getElementsByTagName('TR')[x].innerHTML.match(/repare.pl\?rp=[A-Za-z_0-9]+?\&full=0\.\d+&n=\d+/);
if(item != '')
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + item;
return;
}
x++;
}
if(item == '')
repaired = true;
}
Выражаю благодарность Мунгу за предоставленную базовую информацию для изменения и особенно Петро за помощь в тестировании и поиске багов ![]()
Выражаю благодарность Петро, за создание маршрута для Suncity
Выражаю благодарность Anton2009, за предоставление возможности составить маршрут для Муна
1 782 2009-11-11 18:49:43
Тема: МОД от форумчан: Учёт параметров противника, гибкая настройка приёмов (95 ответов, оставленных в Настройки / Плагины)
Прежде чем вносить правки в файлы всегда делайте резервную копию!
Задача модификации: сделать доступными условия типа "Если у противника > 15 интеллекта, то..." по отношению к статам сила, ловкость, интуиция, выносливость, интеллект.
Также добавлена проверка, поставил ли размен ваш текущий противник.
Совместимость: версия 8.4+
Установка:
Открываем файл Main.js и находим функции "function DoWarriorBattle()" если вы играете за воина и "function DoWizardBattle()" если вы играете магом. Если вы играете с одной копии клиента и магом, и воином и вобще всеми своими персонажами - вносите изменения в обе функции.
Приводим их к виду:
function DoWarriorBattle()
{
var k = document.all[0].innerHTML;
var name = top.Battle.oBattle.sEnemyLogin;
if(name==top.Battle.oBattle.sMyLogin){
top.Battle.oBattle.arrButtons.refresh.click();
return;
}
name = name.replace(/\(/g,"\\(");
name = name.replace(/\-/g,"\\-");
name = name.replace(/\)/g,"\\)");
stati = k.match(name+"\<\/B\>\<BR\>Сила\: ([\-]{0,1}[0-9]+)\<BR\>Ловкость\: ([\-]{0,1}[0-9]+)\<BR\>Интуиция: ([\-]{0,1}[0-9]+)\<BR\>Выносливость: ([\-]{0,1}[0-9]+)\<BR\>(?:.){0,11}([\-]{0,1}[0-9]{0,3})");
Sila = stati[1];
Lovka = stati[2];
Inta = stati[3];
Vinos = stati[4];
if(stati[5]!="")Intell = stati[5];
else Intell = 0;
var checked = 0;
for(x=0;x<top.Battle.oBattle.oGroupsLayer.innerHTML.split(", ").length;x++)
{
var currEnemyLayer = top.Battle.oBattle.oGroupsLayer.innerHTML.split(", ")[x];
if(currEnemyLayer.match("/underline\".{1,2} \?\>"+name+"\</")){
IsUnderlined = true;
checked = 1;
}
if(checked == 0)
IsUnderlined = false;
}
var team1 = top.Battle.oBattle.oGroupsLayer.getElementsByTagName('IMG')[0].sList;
var team2 = top.Battle.oBattle.oGroupsLayer.getElementsByTagName('IMG')[1].sList;
var count_team1=top.Battle.oBattle.oGroupsLayer.getElementsByTagName("IMG")[0].sList.split(", ").length;
var count_team2=top.Battle.oBattle.oGroupsLayer.getElementsByTagName("IMG")[1].sList.split(", ").length;
if(team1.indexOf(top.Battle.oBattle.sMyLogin)>=0){
EnemiesCount=count_team2;
SoratnikiCount=count_team1;
}
if(team2.indexOf(top.Battle.oBattle.sMyLogin)>=0){
EnemiesCount=count_team1;
SoratnikiCount=count_team2;
}
DoWarriorPriem(1);
DoHit();
}
function DoWizardBattle()
{
var k = document.all[0].innerHTML;
var name = top.Battle.oBattle.sEnemyLogin;
if(name==top.Battle.oBattle.sMyLogin){
top.Battle.oBattle.arrButtons.refresh.click();
return;
}
name = name.replace(/\(/g,"\\(");
name = name.replace(/\-/g,"\\-");
name = name.replace(/\)/g,"\\)");
stati = k.match(name+"\<\/B\>\<BR\>Сила\: ([\-]{0,1}[0-9]+)\<BR\>Ловкость\: ([\-]{0,1}[0-9]+)\<BR\>Интуиция: ([\-]{0,1}[0-9]+)\<BR\>Выносливость: ([\-]{0,1}[0-9]+)\<BR\>(?:.){0,11}([\-]{0,1}[0-9]{0,3})");
Sila = stati[1];
Lovka = stati[2];
Inta = stati[3];
Vinos = stati[4];
if(stati[5]!="")Intell = stati[5];
else Intell = 0;
var checked = 0;
for(x=0;x<top.Battle.oBattle.oGroupsLayer.innerHTML.split(", ").length;x++)
{
var currEnemyLayer = top.Battle.oBattle.oGroupsLayer.innerHTML.split(", ")[x];
if(currEnemyLayer.match("/underline\".{1,2} \?\>"+name+"\</")){
IsUnderlined = true;
checked = 1;
}
if(checked == 0)
IsUnderlined = false;
}
var team1 = top.Battle.oBattle.oGroupsLayer.getElementsByTagName('IMG')[0].sList;
var team2 = top.Battle.oBattle.oGroupsLayer.getElementsByTagName('IMG')[1].sList;
var count_team1=top.Battle.oBattle.oGroupsLayer.getElementsByTagName("IMG")[0].sList.split(", ").length;
var count_team2=top.Battle.oBattle.oGroupsLayer.getElementsByTagName("IMG")[1].sList.split(", ").length;
if(team1.indexOf(top.Battle.oBattle.sMyLogin)>=0){
EnemiesCount=count_team2;
SoratnikiCount=count_team1;
}
if(team2.indexOf(top.Battle.oBattle.sMyLogin)>=0){
EnemiesCount=count_team1;
SoratnikiCount=count_team2;
}
DoWizardPriem(1);
}
Учитывая, что у меня под рукой не оказалось оригинального файла Main.js, то тут приведён тот, в котором работают проверки колличества противников/соратников. По сути, вам от этого ни тепло, ни холодно.
Обозначения:
EnemiesCount - количество противников
SoratnikiCount - количество соратников
Sila - сила противника
Lovka - ловкость противника
Inta - интуиция противника
Vinos - выносливость противника
Intell - интеллект противника
IsUnderlined - подчеркнут ли ваш враг(выставил ли размен)
Да, я знаю, что хреново придумываю названия для переменных, но меня это не обламывает.
Пример использования в приёме:
if(Intell > 1)
_name = "wis_earth_flower";
Проверка работоспособности:
В новый приём вписать
external.AddToChat("Персонаж: "+top.Battle.oBattle.sEnemyLogin+";"+"Сила: "+Sila+";"+"Ловкость: "+Lovka+";"+"Интуиция: "+Inta+";"+"Выносливость: "+Vinos+";"+"Интеллект: "+Intell+";");
в чате будет прописано имя противника и перечислены его статы.
Отдельная благодарность DrsN'у![]()
По поводу проверки размена с противником:
напоминаю, что если вам требуется дождаться выставленного размена, то необходимо не просто прописать нечто подобное
if(IsUnderlined || Intel <=10){
...
}
Необходимо обновлять фрейм до тех пор, пока размен не выставится:
if(IsUnderlined || Intel <=10){
...
}
else{
top.Battle.oBattle.arrButtons.refresh.click();
}
1 783 2009-11-10 21:55:19
Re: Приемы в Combots 8+ (347 ответов, оставленных в Настройки / Плагины)
Ну...с этой стороны я на проблему как-то и не посмотрел даже...мне просто статы были интереснее ![]()
постараюсь скоро сделать
1 784 2009-11-10 21:20:03
Re: Приемы в Combots 8+ (347 ответов, оставленных в Настройки / Плагины)
Есть два варианта:
1) тупо смотрим, какая шмотка на враге: щит, посох и т.п. и через это определяем, кто перед нами. Просто, как кирпич. И надежно.
2) выдираем статы противника и используем их в приёмах типа: Если у противника интеллект выше 5, то применям какую-нить фигню против мага. По статам можно кого угодно вычислить - было бы время на придумывание приёмов.
Вам какой нужен?
1 785 2009-11-09 21:57:35
Re: Приемы в Combots 8+ (347 ответов, оставленных в Настройки / Плагины)
Кхм...
я помню, про что ты замечание делал ![]()
И уж никак не ожидал упрека о том, что ману мы не у себя проверям.... ![]()
Думал делать вставку о том, что "бот встретил неопределенную переменную и застопорился. про свойства объектов я не знаю, но может оказаться тоже самое". Может хоть с ней бы было понятнее, к чему я вёл.
Однако, не важно. Сейчас читаю про объекты на яве и тут какрас написано, что при обращении к несуществующему свойству не вызовет ошибки.
Однако, проведённый в каналке эксперимент, мне покачто говорит о том, что такой метод проверки верным не является.
Мана у пауков 705 стабильно. У других мобов ещё не знаю. Можете пару боёв провести, если хотите.
external.AddToChat(top.Battle.oBattle.oEnemySlot.nMagic);
в приём новый это вписать - в чате будет писаться мана персонажей.
по завершении боя посмотрите и скажете, какие результаты...мне самому интересно даже)
1 786 2009-11-09 21:41:20
Re: Приемы в Combots 8+ (347 ответов, оставленных в Настройки / Плагины)
Вот у меня мелькала эта мысль, но без проверки я не решился её писать ![]()
в прошлый раз не учёл, что если ты воин и пропишешь в приёмах tkMana, он просто не будет драться...совсем ![]()
Гипп вовремя поправил тогда ![]()
Если работает - тогда в чём вобще вопрос у тебя? логическое ИЛИ пишется || хп противника на 1-й странице...
Update:
проверил в каналке на пауках ![]()
если верить этому top.Battle.oBattle.oEnemySlot.nMagic, то у них 705 маны ![]()
1 787 2009-11-09 21:13:06
Re: Приемы в Combots 8+ (347 ответов, оставленных в Настройки / Плагины)
У противника на лбу не написано, что он - маг ![]()
Такчто под это приёмы ещё никто не писал....хотя это вполне реально... ![]()
пойду поэксперементирую слегка на эту тему ![]()
1 788 2009-11-08 23:06:00
Re: При открытии фильма на весь экран, прога останавливается (9 ответов, оставленных в Проблемы / Баги / Неполадки)
Ленивый.
Живу на MediaPlayer Classic.:/
1 789 2009-11-07 18:43:40
Re: 100 раз сказано а не понятно) (22 ответов, оставленных в Проблемы / Баги / Неполадки)
Поддерживаю мнение, что дистрибутив должен быть оригинальным.
Лучше даже лицензионным + кряк активации.
Хотя, опять же, как кому удобнее. Для меня проще все самому установить и быть уверенным, что все будет работать. А некоторых ломает или просто не могут это сделать самостоятельно - для них и созданы подобные дистрибы ![]()
1 790 2009-11-07 18:32:02
Re: Бот-проводник и Бот-прицеп (164 ответов, оставленных в Настройки / Плагины)
Там не true/false.
Там реальный ник того, кто проводником будет.
Алгоритм такой: если твой текущий ник совпадает с указанным в файле - ты лидер и создаешь заявку. Если ник с твоим не совпадает, то прицеп по этому нику ищет созданную группу.
1 791 2009-11-05 21:00:14
Re: Бот-проводник и Бот-прицеп (164 ответов, оставленных в Настройки / Плагины)
City
attackmobs
выдрал эти из kanal.txt,
Проверять не буду...Вся фишка переписки под 7-ю версию заключалась, чтоб найти что менять и на что менять...а ты пишешь "разберусь" и просишь сделать всю работу....жестоко ![]()
1 792 2009-11-05 20:49:03
Re: Бот-проводник и Бот-прицеп (164 ответов, оставленных в Настройки / Плагины)
Нет, нету... ![]()
и я, вроде как, не планирую делать под 7.1.
Хотя там вся переделка заключается только в замене "external.SDungeonAttackMobs.Checked" и "external.SCity.Text " на те параметры, что в 7-й версии используются...
1 793 2009-11-05 19:00:27
Re: 100 раз сказано а не понятно) (22 ответов, оставленных в Проблемы / Баги / Неполадки)
но ему же 7.1 надо ![]()
ему самое то ![]()
1 794 2009-11-05 18:59:23
Re: Бот-проводник и Бот-прицеп (164 ответов, оставленных в Настройки / Плагины)
Я уже думал над вопросом синхронизации ![]()
если есть идеи - поделись ![]()
1 795 2009-11-05 18:32:22
Re: Бот-проводник и Бот-прицеп (164 ответов, оставленных в Настройки / Плагины)
А есть такая возможность сделать, чтоб проводник останавливался в бою если у него менее 10% хп? ну допустим если прицеп влез в бой и прицеп может добить а вот проводник если сделает ещё размен то сольёться
Неее....это уже не плагина задача ![]()
это задача настройки приёмов ![]()
Т.е. там условия к каждому приёму добавляется, что выполнять его: Если ХП 10% ИЛИ Если Количество членов в команде >1
Но тут надо всё взвешивать, т.к. проводник с 10% может суметь добить, а прицеп и с 50% сольётся ![]()
1 796 2009-11-04 15:34:26
Re: Плагин логирования дропа в подземельях (20 ответов, оставленных в Настройки / Плагины)
net framework ставил хоть на свежую ось?
1 797 2009-11-04 00:51:27
Тема: Плагин логирования дропа в подземельях (20 ответов, оставленных в Настройки / Плагины)
Название: Плагин логирования дропа в подземельях
Совместимость: 8.4+
Версия: 1.2
Изменения:
1)Добавлена возможность логировать событие "Вы получили ..."
2)Налажена совместимость со всеми остальными плагинами.
3)Добавлено условие проверки, находитесь ли Вы в бою
Установка:
1)Создаем папку Logs в корневой дирректории бота
2)В папке Plugins создается файл DungeLog.js с содержанием(для 7.1 в данном скрипте в 4 местах заменить "Logs/" на "../Logs/"):
function DungeLog(enabled)
{
if(enabled)
{
PluginsOnLoad["DungeLog"] = "LogHandler";
}
else
{
PluginsOnLoad["DungeLog"] = "";
}
}
function LogHandler(){
if (!external.inBattle)
{
var itemlog1 = top.frames[external.mainFrameIndex].document.all[0].outerHTML.match(/Вы подняли \'(.+)\'/);
var itemlog2 = top.frames[external.mainFrameIndex].document.all[0].outerHTML.match(/Вы получили \'(.+)\'/);
if(itemlog1){SaveLog(itemlog1[1]);}
if(itemlog2){SaveLog2(itemlog2[1]);}
}
}
function SaveLog(Mes){
var now1 = new Date();
var localtime1 = now1.toString();
var resultfile = external.LoadFile("Logs/"+mylogin+"_DungeLog.txt");
resultfile=resultfile+localtime1+"\n Вы подняли "+Mes+"\r\n\r\n";
external.SaveFile("Logs/"+mylogin+"_DungeLog.txt",resultfile);
index++;
}
function SaveLog2(Mes){
var now1 = new Date();
var localtime1 = now1.toString();
var resultfile = external.LoadFile("Logs/"+mylogin+"_DungeLog.txt");
resultfile=resultfile+localtime1+"\n Вы получили "+Mes+"\r\n\r\n";
external.SaveFile("Logs/"+mylogin+"_DungeLog.txt",resultfile);
index++;
}
1 798 2009-11-01 15:43:36
Re: Мечтаю о плагине "чек на 400 кр" (45 ответов, оставленных в Настройки / Плагины)
Выложил 21-го числа...
уже 1-е ноября...
Неужели никто не хочет потестить?
Это же так просто ![]()
А как все говорили, что полезная вещь.....нужно писать... ![]()
Эх вы ![]()
1 799 2009-10-31 20:44:20
Re: "Тихая загрузка" или как сткрыть программу (10 ответов, оставленных в Флейм)
Я бы за это всего бота удалил ![]()
И наслаждался бы каждым мгновением, пока человек с дикой натугой пытается настроить приёмы, плагины и прочее ![]()
Дари настоящую и не слишком страшную ![]()
1 800 2009-10-31 16:35:42
Re: Каменный страж - Защитить (48 ответов, оставленных в Настройки / Плагины)
if(top.Battle.oBattle.oGroupsLayer.getElementsByTagName("IMG")[0].sList.split(", ").length >= 2)
{
if(typeof(top.Battle.oBattle.oMySlot.arrEffects["Тут надо узнать идентификатор эффекта, на тебе висящий в бою от защиты"]) == "object")
{
_name = "Боевой скилл Или вставить тут свой обычный прием с условием";
}
else{top.Battle.oBattle.arrButtons.refresh.click();}
}
else
{
if(top.Battle.oBattle.arrMethods["wis_earth_summon"].oMethod.bEnable)_name="wis_earth_summon";
else {
_name = "Тот же Боевой скилл, что и выше";
}
}
Идентификатор эффекта защиты можешь у DrsN'a спросить ![]()
может скажет ![]()