Тема: Бот-проводник и Бот-прицеп
НЕ ПОДХОДИТ ДЛЯ 9-Й ВЕРСИИ, Т.К. КОД СТАЛ ЗАКРЫТЫМ. ПЛАНИРУЕТСЯ ИНТЕГРИРОВАНИЕ В БОТА(во всяком случае я планирую...Зерг может одобрит, а может и не одобрит - это его авторское дело:) )
В прошлой теме все скрипты расползлись по разным страницам и даже я сам уже не понимаю, какие рабочие, а какие нет.
Поэтому создана новая тема, где всё рабочее будет публиковаться в первом посте.
Здесь буду вывешивать все обновления, изменения части скриптов, затрагивающих тему прохождения данжей группой ботов.
Для 8.4+ версии
1. Модификация файла Dungeon.js для автоматического создания и приёма в группы.
Последнии внесённые изменения:
1) добавлены списки отказа/подбора вещей(прописывается в файле контретного пользователя...читать ниже)
2) прицеп часто тупо вставал перед монстрами и ждал обновления экрана, хотя монстра проводник уже убил. Введено обновление с частотой, прописанной в настройках как Интервал действий бота(обновляет только если у прицепа достаточное ХП для условия нападения, а галочка нападения выключена)
3) теперь можно использовать в приёмах переменную death_count, которая хранит количество смертей в текущем походе.
Пример:
если вы умерли в данже менее 3-х раз - используем последний удар
if(death_count<3)
_name='hp_laststrike';
4) встроены "фразы Грибницы" от Петро.
Установка:
1) Открытый код файла в мессаг не влез....а жаль. Пришлось выложить на серваке:
(Please log in or register to see this URL)
Сделайте резервную копию своего Dungeon.js, а потом выставьте скаченный как основной файл.
2) после изменения обязательно в папке Modules создаете папку DungeonUsers.
В ней, для каждого используемого данным клиентом, создаёте файл ТочноеИмяПерсонажаВключаяПробелыИЗаглавныеБуквы.txt
Пример содержания файлов(список поднимаемых предметов и предметов для отказа вы формировать должны САМИ):
var groupkanal = true; //Если идёте один - false
var items_pass = []; //Вещи, от которых будем ОТКАЗЫВАТЬСЯ )))
items_pass.push('грибах');
items_pass.push('заживляющ(?:ая|ий)');
var items_get = []; //Вещи, которые будем подбирать даже при выключенной галочке
items_get.push('ключ');
items_get.push('ман(?:а|ы)');
items_get.push('жижи');
items_get.push('Грибочки');
var not_your = true; //Пытаться подобрать чужие вещи. true - пытаться. false - не пытаться
if(groupkanal==true){
//////////////////// Групповой поход ////////////////////
//Если вы идете один, просто выставьте groupkanal = false и параметры ниже можно
//не изменять.
var provodnik = "НЕ ЗАБЫТЬ УКАЗАТЬ"; //Кто является проводником/лидером. Это обязательно надо указать и для самого проводника, и для прицепа.
if(provodnik==mylogin){var liderstvo = true;}else{var liderstvo = false;}
var grouppass = "321456"; //Пароль группы
var partija = "2"; //Количество людей в партии, включая вас.
}
var provodnik = "НЕ ЗАБЫТЬ УКАЗАТЬ"; - Тут ник того, кто будет создавать заявку для похода.
provodnik==mylogin - ЭТО НЕ ТРОГАТЬ!!! И прекратите это спрашивать!!!!
Примечание:
items_get - массив, хранящий вещи, которые бот будет пытаться поднять даже при выключенной галочке.
items_get - массив, хранящий вещи, от которых бот будет отказываться....совсем отказываться. и даже не попытается поднять.
Оба массива не чувствительны к регистру и вы можете вписать 'ключ' и он будет срабатывать на предметах и "Ключ", и "ключ" и даже "КлЮч"
Примеры:
items_get.push('ключ'); - поднимать любой предмет, в названии которого есть "ключ"
items_get.push('ман(?:а|ы)'); - поднимать любой предмет, в названии которого есть "мана" или "маны". т.е. эта страшная конструкция может быть записана двумя строками, если вы боитесь ошибиться:items_get.push('мана');items_get.push('маны');
items_get.push('ман(?:а|ы|у)'); - это для примера, как сделать три вида окончания, дл распознавания "маны", "мана" и "ману"
Тот же принцып работы у ОТКАЗА ОТ ПОДБОРА:
items_pass.push('грибах'); - отказ от любого предмета, в названии которого есть "грибах"
items_pass.push('заживляющ(?:ая|ий)');
Строки типа items_pass.push и items_get.push МОЖНО добавлять свои. И не просто можно, а НУЖНО ДАЖЕ!
а можно ещё и убирать лишние.
Не надо путать items_pass и items_get при формировании настроек!!! Буду злиться.
2. Плагин для прицепа.
Описание: если у прицепа достаточно ХП для нападения, проводник в бою и его ХП отвечает заданному условию(например если ХП проводника <50%), то прицеп вламывается в бой и помогает крошить врагов(на деле ему просто делается активной галочка Нападать на монстров, а когда условие перестает быть верным - снимается)
Установка: в папке Plugins создаем файл PricepHelp.js с содержанием
function PricepHelp(enabled)
{
if(enabled)
{
PluginsOnLoad["PricepHelp"] = "PricepHelpHandler";
}
else
{
PluginsOnLoad["PricepHelp"] = "";
}
}
function PricepHelpHandler(){
if(IsProvodFighting(provodnik) && getPersHPproc(provodnik)<=100){
external.SDungeonAttackMobs.Checked=true;
}
else {
external.SDungeonAttackMobs.Checked=false;
}
}
function getPersHPproc(nick){
var personalInf="";
var re = new RegExp(/HP\=([0-9\.]{1,})\/([0-9]{1,})/);
personalInf = doLoad("http://" + external.SCity.Text + ".combats.com/inf.pl?short=1&login="+nick);
if(personalInf){
var matched = re.exec(personalInf);
var procentHP=matched[1]*100/matched[2];
return procentHP;
}
}
function IsProvodFighting(nick){
var personalInf="";
var re = new RegExp(/battle_id=/);
personalInf = doLoad("http://" + external.SCity.Text + ".combats.com/inf.pl?short=1&login="+nick);
if(personalInf){
var matched = re.exec(personalInf);
if(matched){ return true }else{return false}
}
}
function doLoad(url) {
var req;
if (window.XMLHttpRequest)
req = new XMLHttpRequest();
else
req = new ActiveXObject("Microsoft.XMLHTTP");
req.open("GET", url, false);
req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); //чтоб не кэшировались GET запросы
req.send(null); // отправить запрос
return req.responseText;
}
Проводником считается именно тот, кто создавал группу.
Если у вас создал группу тот персонаж, который должен быть прицепом - в плагине замените переменную provodnik на "ТочныйНикАтакующегоПерсонажа".
Отредактировано anahronik (2010-05-03 23:44:13)