Posted: 2005-03-24 14:40:39
Code: Select all
#===================================================================#
# MINING & LUMBERJACKING. #
#===================================================================#
# v.1.00 - 3.22b (с) Edred, 2004-2005 #
#===================================================================#
Многофункциональный скрипт на мининг и ламбер с возможностью выбирать
режим работы через меню и заданием настроек в ини-файле (то есть нет
необходимости редактировать скрипт!)
Поддерживаются 6 режимов работы:
1. Режим копки по краям скал
2. Режим копки по полу шахт
3. Режим рубки леса
4. Режим разметки маршрутов
5. Режим тестов мининга (ВИП-шахта)
6. Режим тестов ламбера (ВИП-лес)
Все добывающие режимы работают по маршрутам. Разметка маршрута осуще-
ствляется так: выбираете режим 4, задаете номер машрута (из меню),
скрипт дополнительно спросит о том режиме скрипта, в котором данный
маршрут будет задействован. После этого на экран будет выведено окош-
ко с кнопкой подтверждения окончания разметки маршрута. Переключитесь
обратно на игру и проведите чара по планируемому маршруту. Скрипт бу-
дет автоматически записывать этот маршрут. В конечной точке маршрута
переключитесь на окно с кнопкой и нажмите Enter. Помните - начальной
точкой маршрута всегда является месторасположения чара в момент нача-
ла разметки. Обратите внимание: скрипт будет сам находить деревья в
случае ламбера и скалу в случае копки вокруг скал. Также автоматиче-
ски определяются тайлы, пригодные для копки по полу шахты.
В первых трех режимах скрипта задействованы по 8 маршрутов, в послед-
них двух (тестовых) - по 2 маршрута. После окончания последнего мар-
шрута чар автоматически перейдет на первый. Стартовый номер маршрута
задается из стартового меню. В первых трех режимах работы чар между
маршрутами реколлится на базу для разгрузки (при этом сделана возмож-
ность подходить к месту разгрузки на базе из реколлки), в тестовых
режимах - чар без реколлов подходит к месту разгрузки (прилоченный
сундук). В первых трех режимах начальные точки всех маршрутов необхо-
димо отмарчить рунами, которые поместить в соответствующие рунбуки
(см. mine&lumb.ini, комментарии).
В стартовом меню вы можете задать:
1. Использовать ли во время добычи хайд.
2. Пить ли инвизы при тревоге (тревога от ПК).
3. Использовать процедуру хождения с обходом препятствий ( в дан-
ной версии скрипта она используется независимо от вашего выбора)
4. Использовать новые команды на перемещение чара (AddStep). Режим
пока ненаписан - ваш выбор игнорируется.
5. Вести подробный лог. В этом случае в файл лога сбрасываются
данные о каждом шаге чара, о каждом ударе киркой и его резуль-
тате. Также после разрушения инструмента в лог записывается
сводная таблица добытого с его помощью и счетчики обнуляются.
Нажатие кнопки Save в стартовом меню приводит к продолжению работы
скрипта, нажатие Cancel прерывает скрипт. При нажатии Save меню запи-
сывает ваш выбор в соответствующие параметры файла mine&lumb.ini и
передает управление обратно скрипту (при запуске скрипта тот запуска-
ет меню и встает в ожидание вашего выбора).
Во время работы первых трех режимов скрипта осуществляется отслежива-
ние появления других чаров, эти чары сортируются на ПК и АПК по цве-
ту, для каждого типа существуют обособленные параметры (см. ини-файл)
расстояний, на которые те могут приблизиться. Если другой чар прибли-
жается ближе указанного расстояния - ваш чар выпьет инвиз (если вклю-
чено) и среколлится на базу для разгрузки, после чего отправится на
следующий маршрут. Существует список исключений, то есть чаров, чье
появление скриптом будет игнорироваться (В данной версии исключения
указываются в теле скрипта в функции ControlPK, в дальнейшем будут
вынесены в ини-файл). Также в дальнейшем планируется добавить убега-
ние от ПК во время ожидания реколла (в случае отказа от инвизов).
Также во время работы первых трех режимов скрипта осуществляется от-
слеживание появления елементалей, медведей, духов деревьев (последнее
пока не сделано). В случае их появления, чар сбрасывает инструмент в
пак, берет в руки оружие и щит и сражается с врагом. После убийства
он вскрывает труп и лутит его. После этого вновь берет в руки инстру-
мент и продолжает добычу ресурсов. Во время сражения чар автоматиче-
ски отхиливается с бинтов, пьет греат хилл поушен (в случае если здо-
ровья меньше 60). Процедура отслеживания ПК работает и во время сра-
жения!
При разгрузке на базе чар сбрасывает в указанные (файл mine&lumb.ini)
сундуки и контейнеры в них добытое, лишние реги (оставляет себе толь-
ко по 6 шт. регов для реколлов), при необходимости добирает реги,
аналогично с бинтами, кровавыми бинтами, поушенами, кливерами, нож-
ницами. Также поверяется на целостность инструмент и при необходимо-
сти (разрушение) берется новый.
Во время работы по маршруту осуществляется контроль веса чара. В слу-
чае перевеса (макс. величина задается в файле mine&lumb.ini) добыча
прерывается и чар отправляется на разгрузку.
В тестовых режимах: контроль за ПК не осуществляется, также в данной
версии нету контроля за елементалями, медведями, духами леса. При
разгрузке структура контейнеров другая (один сундук), реги, бинты,
поушены, кливеры, ножницы отключены. Контроль инструмента при этом
осуществляется.
В тестовых режимах осуществляется контроль за состоянием сытости ча-
ра, при этом производится подкормка чара медом, который должен быть в
паке чара. Добор меда и контроль сытости чара в других режимах в дан-
ной версии не подключен.
Также пока не подключено: авторес чара в случае смерти, реколлы через
заряды рунбуки (после автореса), реконнектор.
В подробный лог пишется: при запуске скрипта пишется записать в лог 3
пустые строки, после этого пишется информация о старте скрипта ио со-
стоянии инструмента. Потом записывается номер маршрута и в процессе
работы по маршруту записываются координаты куда идет чар, координаты
точек добычи, результат каждого удара. При вылезании елема или рипера
скидываем информацию о нем. В процессе боя с элемом/рипером/медведем
скидываем информацию о выпитых греат хиллах. В случае килла элема
скидываем информацию об этом, и о луте с этого элема/рипера. При убе-
гании от ПК или зверя скидываем информацию об этом а также сериал ча-
ра, от которого убегаем. А также о выпитых инвизах. В случае смерти
чара скидываем информацию об этом и сериал объекта, который нас убил.
При разгрузке скидываем информацию обо всех разгруженных ресурсах с
количеством. Количество суммируем с ранее добытым. Суммарную информа-
цию показываем в логе в квадратных скобках и записываем в ини-файл.
Пишем обо всех добранных ресурсах. Пишем о состоянии инструмента. Пи-
шем номер следующего массива.
В случае разрушения инструмента информация об этом сбрасывается в лог
и сбрасывается информация о количестве добытого с этим инструментом.
Во время работы по маршруту все точки копки/рубки заносятся в массив
usep. Этот массив организован по типу стека и имеет длину в 1000 ком-
плектов координат (в дальнейшем уменьшить). При приближении к концу
массива (заполнение) вызывается спец функция, сдвигающая массив вниз
на 100 ячеек. Каждая новая точка копки/рубки сначала проверяется по
массиву, если есть - пропускается. В конце маршрута или в случае его
прерывания массив usep очищается.
History:
v.1.00b - Делаем только копку по одному массиву
v.1.01b - Добавил скрипт на разметку массива
v.1.02b - Добавил альтернативную ходилку, потом поймем какая лучше
v.1.03b - С копкой по массиву разобрались, вводим срочно контроль
элемов. Пока с остановом скрипта на копку.
v.1.04b - C отслеживаниеи и лутом элемов похоже разобрались
v.1.05b - Вводим 5 массивов копки, реколлы между ними и на базу, разгрузку
v.1.06b - мелкие правки вар-режима, разгрузки, хайда.
v.1.07b - еще куча мелких отладочных правок. Теперь все более-менее работает.
v.1.08b - массивов уже 7. Боремся за респаун руды ;)
v.1.09b - добавляем контроль за приходом ПК
v.1.10b - что-то глючит у нас с хайдиванием, правим до упора
v.1.11b - увеличиваем кол-во массивов до 10. Теперь должно хватить.
v.1.12b - Переписан скрипт на разметку массива. Теперь он сам создает
файл с массивом, траханье с логами игры исключено.
v.2.00b - Пересобираем весь скрипт, вводим глобальные переменные контроля,
причесываем всю структуру скрипта.
v.2.01b - Ввел ведение лога (пока только начало скрипта, переход к массиву,
к разгрузке, сколько какой руды выгружено). Лог ведется в файл.
v.2.02b - временно лог ведется в текстовое окно. Ввел полное обновление
регов и бинтов, чтобы не копилось регов лута с элемов, теперь
при доборе регов и прочего на экране открываются все необходимые
контейнеры.
v.2.03b - ввел питие инвизок (от ПК) и грит хилов (от кристалл элемов).
v.2.04b - добор кирки и реакция на ее разрушение.
v.2.05b - пробуем новую версию скрипта на реколл. Теперь проверка успешности
идет через проверку звуков.
v.2.06b - приводим в порядок даты и время в логе, определяем тип элема,
вводим еще дополнительные сообщения.
v.2.07b - реколл через проверку звука отключаем, переписываем реколл
с учетом траты маны и смену координат
v.2.08b - вводим систему проверок лагов при реколле и разгрузке.
v.2.09b - вводим проверку глюка на считывание строки 'end of file' в
массиве как строки координат.
v.2.10b - Оптимизируем паузы, доп мессаги по телу скрипта.
v.2.11b - вводим глобальные счетчики для подсчета суммы всех выкопанных
и доставленных на базу руд. Итог по счетчикам помещаем в лог
после разгрузки.
v.2.12b - оказывается текстовое окно с логом имеет ограничение по размеру,
правим вывод лога, заодно правим форматирование дат...
v.2.13b - срочно добавляем проверку и добор на базе кливеров... блин, как
жалко мне этого необлутенного кристалл-элема...
v.2.14b - разбираемся. Почему-то иногда чар не хочет вскрывать элема,
выдает ругательство "You can't reach this"... Правим... Посмотрим,
получилось ли... Сделал через подход к трупу ходилкой.
v.2.15b - Получилось. Делаем это стандартным способом вскрытия элемов.
v.2.16b - вновь пробуем сделать запись лога в файл.
v.2.17b - Делаем два раздельных лога - один так и ведется в текстовом
окне, это удобно для контроля чара во время работы скрипта, второй
пишется в файл один раз за круг, подводя итоги копки, килла
элемов и убегания от ПК за круг (10 массивов копки).
v.2.18b - Пытаемся поправить подвисы (редкие) при подходе к элему,
вводим возможность задать стартовый массив копки.
v.2.19b - Правим глюки предыдущей правки. Не туда запрос на номер массива
вставил. Заодно введу-ка проверку что номер массива в допустимых
пределах, а то ведь найдутся любопытные, которые введут...
v.2.20b - переписываем часть, отвечающую за лут элема, отменяем попытку
подойти к элему (глюков много), контролируем - если элем не
лутится - в лог скидывается вся инфа что возможно о чаре и
трупе элема...
v.2.21b - вводим усовершенствование системы контроля ПК - проверяем цвет
найденного чара, если красный - драпаем сразу, если не красный,
контролируем в цикле расстояние до него, если меньше минимального
(задается переменной) - тоже драпаем.
v.2.22b - Еще раз разбираемся с лутом элемов. Почему-то не лутит. Не лутит
почти всегда. Выделяем вскрытие и лут элемов в отдельный модуль
и бьемся над разгадкой... Похоже, ларчик просто открывался...
Тестим.
v.2.23b - Наконец руки дошли сделать нормальное обновление регов при
разгрузке. Заодно проверим смену кирок.
v.2.24b - Вроде все работает стабильно, так что чистим структуру и
готовимся в переходу на версию 3.00 (в скрипт будет интегрирован
скрипт на ламберджекинг).
v.2.25b - реагируем на сообщение в журнале 'bear is attacking you*'.
Берем в руки оружие и выходим из хайда. Затем ждем мессаги о
трупе и продолжаем копку.
v.2.26b - и опять, в который раз, правим лут элемов... :)
v.2.27b - Правка контроля дистанции до ПК. Правка именования элемов в
выводе в лог.
v.2.28b - Ввожу диалоги ASM. Ввожу изменение паузы при хотьбе в зависимости
от места. Пока пауза до 300 уменьшается только на разгрузке.
v.2.29b - Новая разметка массива. Почти полный автомат. Но это разметка
массива для новой версии мининга, которую буду вводить в ближ
время. При этом изменяется формат файла массивов и придется
их перемарчивать.
v.2.30b - Вводим начальные запросы на тип мининга. Пока доступен только
вариант мининга по краям скал и разметки массива.
v.2.31b - вновь делаем 8 массивов. Еще 8 идут в данжи и пещеры. Итого
полная рунбука.
v.2.32b - Вводим список исключений чаров. Вводим флаг пить или не пить инвиз.
v.2.33b - делаем новую процедуру копки с использованием ASM (новые массивы)
v.2.34b - в разметке массивов вводим контроль уже занесенных тайлов
v.2.35b - Мелкие улучшения процедуры разметки массивов, больше запросов,
удобнее работать.
v.3.00a - Сделан второй режим работы чара: копка в пещерах.
v.3.00b - На фиг массивы, делаем маршруты движения. Теперь разметка
превращается в автоматическое запоминание маршрута передвижения
вдоль скалы или по лесу. Сам перебор тайлов осуществляется в самих
процедурах копки/рубки. Маршруты хранятся одной строкой
и пишутся в один файл, mining.ini. При этом можно сменить процедуру
движения на более простую и быструю, потому что обход препятствий
не требуется.
v.3.00c - Перелопачиваем весь скрипт на предмет соответсвия названий процедур.
Вводим ламбер. Отделяем хистори в отдельный файл. Перегруппировы-
ваем функции и процедуры. Переименовываем часть из них.
Переименовываем сам скрипт (старое название minewalls)
v.3.00d - Присобачиваем ламбер. Переделываем разгрузку чтобы не брать лишнего
при ламбере.
v.3.01 - Первый релиз. Ловите момент!
v.3.01b - 3.01e - куча мелкой правки и мелких усовершенствований.
v.3.10b - Неосуществленная версия, наработки перешли в следующую:
Все режимы работают. Но не работала проверка на то, что тайл уже
копался/рубился. Поправил. Но поправлю еще - надо уменьшать массив
и делать его наподобие стека, что чар всегда помнил последние 5-10
шагов. Заодно избавляемся от "наследия" прошлого - теперь массивов
копки всего 8, остальные 8 - ламбер. Соответственно сливаем в один
режимы копки по скалам и по стенам данжей. Режим же контроля элемов
при мининге включаем, ориентируясь на кирку. Если обычная - нет,
если цветная - контролируем. Также контролируем выкопанную руду
в процессе копки по мессаге. Если выкопана старшая руда (задается
спецпеременной) - используем инвизы при удирании от ПК. Также
инвизы используются если копаем старшей цветной киркой или в арме.
Ламберджекинг аналогично. Перекомпоновываем разгрузку для поддержки новых
режимов. Проверка кирок и топоров включает их цветность. Искореняем
режим копки по полу - это все равно будет реализовано отдельным
скриптом с вариантом копки в ГЗ-пещере. Вводим проверку версии инжекта
и хождение в зависимости от нее либо через нажатие клавиш, либо
через Addstep/Adddir. Также начинаем вводить новые возможности
поиска в журнале (повышает читаемость скриптов).
v.3.20b - Перерабатываем скрипт версии 3.01е с добавлением наработанного
в версии 3.10b и с добавлением кучи нового. Теперь стандартным комплектом
софта для скрипта является инжект версии 312.19 и ASM 501.06. Далее
будем придерживаться этой же линии - фиксированная версия инжекта
и последняя версия АСМа. По крайней мере до тех пор пока Йоко не
избавится от неустойчивости последних версий инжекта. Также добавляем
сразу менюшку в дельфи, копку по полу, два тестовых режима, подробный лог,
стелс-режим. После отладки эта версия будет переименована в 4.00b.
Уточнение: требуется ASM не ниже 503.01PE (корректная работа с
ini-файлами).
v.3.21b - Счетчики логов и руды вынесены в ини=файл, туда же они скидываются при
разгрузке. При запуске скрипта они оттуда считываются, в случае отсутствия
принимаются за 0.
v.3.22b - Выносим в ини-файл все остальные настройки. Оттуда они будут считываться
при старте скрипта, туда при необходимости будут сохраняться.
Активно комментируем настройки в ини-файле.