Сканирует Ваши ордера и выводит сообщение в трей, если на рынке есть ордер лучше, чем Ваш. Сверяет ордера только станции, на которой размещен ордер. Реализация сканера на CREST.
Скачать
Если версия в списке багов в скобках указана выше, чем объявлено для ссылок скачивания, значит в новой версии есть не пофикшенные критические баги (найти ее можно на GitHub)
Звуковые оповещения и нотключение звуковых оповещений. (Кому не нравится звук оповещения, в sounds переименуйте alarm в alarm2. Для звука оповещения загружается alarm2.wav. В будущем приделаю настройки для выбора звука и выбора оповещений событий)
Анимированная иконка в трее. (При сканировании отображается, что идет процесс сканирования)
Баг фиксы
Ордера проверялись только в The Forge
Теперь config.ini восстанавливается со стандартными натсройками, если он был удален
Отключение оповещений отключает сообщение о fulfilled ордерах
EXE файл не запускался на 32 битных система (х86) (На WinXP не заведется. необходимо пересобрать EXE из под WinXP)
Удалялись все новые ордера (созданные менее 5 минут назад)
Если для одного предмета Ваши ордера одного типа были в топе подряд, все, кроме самого лучшего предложения, были с оповещением.
Версия 0.1.4
кастомизация таблиц (Возможность выбора отображения колонок, их порядок)
возможность пропускать ордера (Необходимо добавить столбец "Check" в настройках. 2 секунды таймаута между сканирование ордеров одного типа действует даже для таких ордеров. Уберу)
ордера в статусе fulfilled (ожидаемое число товаров = 0) удаляются с сообщением в трей
добавлена возможность выбора цен (станция/регион; солнечная система = регион; необходимо добавить столбец "range" в настройках)
Версия 0.1.1
Релиз
Список известных багов
Спойлер
Цены проверяются только в The Forge (!!!) (0.1.8)
exe файл закрывается с ошибкой
иногда не применяются изменения API Key
при удалении config.ini он не восстанавливается (0.1.8)
отключение настройки оповещения, не отключает сообщения о fulfilled ордерах (0.1.5)
Только для EXE. Не работает на x86 системах (Необходимо пересобрать EXE)
Только для EXE. Не запускается на WinXP (необходима функция GetFinalPathNameByHandleW из ядра windows. Появилась в windows Vista. Необходимо пересобрать приложение под windows XP)
Если все ордера с ценами лучше вашего были завершены, ордер все-равно отображается как требуемый внимания (красный крестик) (0.1.5 частично. 0.1.6 отменил изменение 0.1.5. реализация 0.1.5 не очень хорошая из-за бага ССP, когда последний json файл может содержать данные старее, чем полученные до этого)
удаляются все ордера созданные <5 минут назад (!!!) (0.1.5)
если для одного предмета Ваши ордера в топе идут подряд, все, кроме самого верхнего, будут с оповещением (0.1.5)
Иногда перестают сыпаться сообщения в трей
Точка входа в процедуру ucrtbase.terminate не найдена в библиотеке DLL api-ms-win-crt-runtime-l1-1-0.dll. Решение - установить Visual Studio 2015
Если вместо названия предмета пишется ERROR, то стоит проверить файл items.xml, скорей всего, там просто нет данных на этот предмет.
Как добавить:
Спойлер
Открываем OrderScaners/Data/items.xml
Делаем новую строчку вида:
<item id="ITEM_ID" name="ITEM_NAME"/>
Где ITEM_ID - внутри игровой id предмета (Например дял Kernite это 20)
И ITEM_NAME - название предмета (Можно писать как Вам угодно).
Для Kernite строчка будет выглядеть:
<item id="20" name="Kernite"/>
Важно, чтобы первой и последней строчкой файла было:
<Items>
...
</Items>
Об идее
Очень часто приходится играть в 0.01pvp (производство в основном), и где-то на вторые сутки такое PvP надоело. Игра стала рутиной работой робота. Прикинув расклад на кучу свободного времени, кучу времени проводимого у компьютера, не желание лишний раз разворачивать евку дабы убедиться, что мои ордера в топе, решил поискать приложение какое-нибудь ,чтобы делало это за меня.
Возможно не шибко умный, но предлагаемые варианты evemon и evernus не впечатлили (может быть не до конца разобрался, но ни одну не удалось настроить так, чтобы оповещение было почти моментальным), marketdata - ингейм браузер таки приходится открывать ручками и обновлять. Тем более их сканер фактически забирает окно игры, и если соберусь пострелять по крестикам - ордера без присмотра.
В итоге, не найдя альтернативу, но найдя способы для удовлетворения своих запросов, было решено написать собственное приложение. Изначальный вариант планировался python + evecache, но проект evecache был заброшен, с тех пор изменилась внутренняя структура кеш файла, о чем любезно говорили комментарии (два, если быть точным. За два месяца два комментария). Но почти сразу была найдена альтернатива в виде CREST MARKET.
Подробнее о программе
Спойлер
Основной интерфейс не затейливый:
Рассмотрим его подробнее
Выбор персонажа, чьи ордера просматривать.
Две кнопки загрузки: - API (Читает ордера из API для данного персонажа, необходимо учитывать время кеша. Из-за которого недавно выставленные ордера отсутствуют в API) - File (Читает ордера из самого свежего файла, который экспортируется в EVE в окне своих ордеров. Если файл был создан на другом персонаже, отличном от выбранного, ордера не загрузятся)
Две кнопки сканирования - Start scan ( Запускает сканирование ордеров. Ордера сканируются поочередно. Sell и Buy сканируются каждый в своей очереди, т.е. параллельно) - Stop scan ( Завершает сканирование. Следующий запуск начнется сначала)
Две таблицы содержащие информацию об ордерах и их статусе. Отображаемая информация настраивается через menu - settings.
Думаю, стоит уточнить смысл двух полей с иконками. В первом (Attension) отображает состояние ордера. - ордер предлагает лучшую цену на станции - ордер не предлагает лучшую цену на станции, но его изменение не доступно (тайм аут) - ордер не предлагает лучшую цену на станции, его изменение доступно (тайм аут прошел)
Во втором (Alarm) статус сообщения.
- сообщение не было показано (Если в настройках отключены оповещения, либо оповещение не требуется) - сообщение было показано (Либо в очереди)
Далее рассмотрим пункты меню
- API Manager (Здесь доступно добавление/удаление EVE API ключей; автоматическое сохранение всех изменений) - Character Manager (Позволяет изменять список персонажей доступных для выбора сканирования ордеров. Сохранение по кнопке save) - Settings (Получить бесплатное ничего, сохранение всех изменений по кнопке ok) - Exit (Уйти ни с чем)
Вид API Manager:
Вид Character Manager:
Update - загружает всех персонажей из введенных ключей
Стрелочки - переносят персонажа из списка неактивных персонажей в активных (и наоборот). Активный список выводится в главном окне в выпадающем меню.
Save - сохранение внесенных изменений (без нажатия, все внесенные изменения не сохраняются)
Окно настроек:
В этом меню необходимо убедиться, что путь до маркетлога указан верно. Примерное расположение для windows: %UserName%/Documents/EVE/logs/Marktlogs . В строке путь должен быть вида: C:/Users/UserName/EVE/logs/Marketlogs . Если путь указан не верно, то чтение ордеров из файла будет невозможно.
Scan settings:
Tray alarm enable - если галочка стоит, оповещения будут в трей. Если галочки нет - никаких оповещений.
Loop scan - если опция включена (галочка есть), то при завершении сканирования всех ордеров, приложение начнет сканировать их сначала. Если опция выключена - то сканирование завершится и Вам необходимо будет нажать еще раз Start Scan в главном окне.
Alarm every - в секундах указывает частоту оповещения (Не меньше 10 секунд). Необходимо для того, чтобы группировать все текущие оповещения в одно.
Кнопка Default просто нажимается. Ok - выход с сохранением настроек Close - выход без сохранения настроек
На вкладке Table settigns можно настроить отображаемые колонки для ордера и их порядок.
Слева - список не отображаемой информации Справа - список отображаемой информации (Сверху первая колонка, снизу последняя)
Поясню что означает каждый пункт, т.к. не все очевидны, в скобках напишу id пункта в config.ini
Char (0) - Имя персонажа, создавшего ордер Item (1) - Продаваемый предмет Count (2) - Остаток товаров
Price (3) - Цена за единицу товара Last check (4) - Дата последней проверки ордера (по факту, дата последнего запроса информации от CREST)
Attension (5) - Отображение иконки галочка-крестик (Ордер в топе; ордер необходимо изменить)
Alarm (6) - Отображение иконки сообщения в трей (Было/будет сообщение; не требуется)
Check (7) - Галочка для установление пропуска ордера (Стоит - ордер сканится; не стоит - не сканится. Но задержка 2 секунды между сканированием строк в таблице все равно будет. Поправлю потом)
Range (8) - Радиус сканирования цен (Station - станция; все остальное - регион)
Region (9) - Отображение региона, где находится данный ордер
Solar System (10) - Отображение солнечно системы, где находится данный ордер
Station (11) - Отображение станции, где находится данный ордер
Баги/Фичи/Будущее
Авто обновление ордера. При сканировании с помощью CREST находится Ваш ордер и обновляется информация о нем (Остаток товаров и цена), т.е. для новых данных по ордеру необходимо дождаться обновления данных CREST API, либо экспортировать файл и перезагрузить его в программу, что обновит данные мгновенно. Но т.к. все равно есть 5 минут таймаут на повторное изменение ордера, то те 5 минут обновления CREST API по сути ничего не значат.
И не удивляйтесь ситуации, когда программа выдает сообщение о новой лучшей цене на рынке, и Вы, развернув в панике игру, не находите ордеров лучше вашего. Бывают ситуации, когда программа верещит просто так из-за каких-то еще не пофикшенных багов (На данный момент такого замечено не было. Промолчать, да, может. Но ложное сообщение не отдаст). А бывает такое, что в игре данные немного старее, чем отдал CREST.
Файл EXE закрывается с сообщением об ошибке. Потому что Вы совершаете ошибку, закрывая данное приложение. (Серьезно, не знаю как исправить)
Тысяча других мелких багов, которые Вам доведется открыть и исправить. Благо исходники прилагаются.
Заключение
Python знаю две недели. До этого универские лабы на matlab и c++ не дальше консоли
Pyinstaller - есть сборник костылей, если у Вас что-то не работает из exe файла, мои костыли тут не причем.
Исходный код - лучше сделать закрытым. Он убог чуть более, чем сам автор топика. В свое оправдание, код писался по принципу индусского кода, и из двух недель разработки, вторая ушла на переписывание в более-менее адекватный вид уже существующих функций, а так же исправление мелких багов в виде синего экрана смерти.
Если у Вас есть предложения, пишите. Если предложения содержат оскорбления - точно пишите. Ну или идеи что сделать лучше, то тоже пишите.
Отдельное спасибо unti1x за советы и помощь в осваивании питона.
Сообщение отредактировал Nikakto: 20 June 2016 - 15:24
ордера в статусе fulfilled (ожидаемое число товаров = 0) удаляются с сообщением в трей
добавлена возможность выбора цен (станция/регион; солнечная система = регион)
Обновил скриншоты до соответствующих версии программы.
Обновил описание программы.
Основное изменение, требующее пояснения:
Спойлер
На вкладке Table settigns можно настроить отображаемые колонки для ордера и их порядок.
Слева - список не отображаемой информации
Справа - список отображаемой информации (Сверху первая колонка, снизу последняя)
Поясню что означает каждый пункт, т.к. не все очевидны, в скобках напишу id пункта в config.ini
Char (0) - Имя персонажа, создавшего ордер
Item (1) - Продаваемый предмет
Count (2) - Остаток товаров
Price (3) - Цена за еденицу товара
Last check (4) - Дата последней проверки ордера (по факту, дата последнего запроса информации от CREST)
Attension (5) - Отображение иконки галочка-крестик (Ордер в топе; ордер необходимо изменить)
Alarm (6) - Отображение иконки сообщения в трей (Было/будет сообщение; не требуется)
Check (7) - Галочка для установление пропуска ордера (Стоит - ордер сканится; не стоит - не сканится. Но задержка 2 секунды между сканированием строк в таблице все равно будет. Поправлю потом)
Range (8) - Радиус сканирования цен (Station - станция; все остальное - регион)
Region (9) - Отображение региона, где находится данный ордер
Solar System (10) - Отображение солнечно системы, где находится данный ордер
Station (11) - Отображение станции, где находится данный ордер
Отдельное спасибо unti1x за советы и помощь в осваивании питона.
Сообщение отредактировал Nikakto: 23 March 2016 - 3:10
Да. Функционал схож. Только цены для оповещения берутся самые свежие автоматически. И зациклено. Т.е. все сделано для того, чтобы как только твой ордер становится вторым, то тебе сразу (почти, максимум задержка 5 минут +-) приходило оповещение (окошко в трей, и сейчас в исходниках на GitHub уже залита версия с звуковым сигналом).
По оповещению ты идешь, переставляешь ордер, aka 0.01, pvp и программка сама это замечает (через время равное кешированию данных CREST, т.е. ~5 минут). Как только и новую цену перебьют, опять оповещение. И так пока все не продашь/ляжешь спать/бросишь EVE.
Сообщение отредактировал Nikakto: 27 March 2016 - 17:56
Звуковые оповещения и отключение звуковых оповещений. (Кому не нравится звук оповещения, в sounds переименуйте alarm в alarm2. Для звука оповещения загружается alarm2.wav. В будущем приделаю настройки для выбора звука и выбора оповещений событий)
Анимированная иконка в трее. (При сканировании отображается, что идет процесс сканирования)
Баг фиксы:
Ордера проверялись только в The Forge
Теперь config.ini восстанавливается со стандартными настройками, если он был удален
Отключение оповещений отключает сообщение о fulfilled ордерах
EXE файл не запускался на 32 битных система (х86) (На WinXP не заведется. необходимо пересобрать EXE из под WinXP)
Удалялись все новые ордера (созданные менее 5 минут назад)
Если для одного предмета Ваши ордера одного типа были в топе подряд, все, кроме самого лучшего предложения, были с оповещением.
Сообщение отредактировал Nikakto: 27 March 2016 - 20:03
Сейчас в маркет поставил на продажу предмет, которого нет в данных программы. Вручную добавлять все, чего не хватает - устанешь. Если вам нужно название предмета вместо "ERROR", то:
Спойлер
Открываем OrderScaners/Data/items.xml
Делаем новую строчку вида:
<item id="ITEM_ID" name="ITEM_NAME"/>
Где ITEM_ID - внутри игровой id предмета (Например для Kernite это 20)
И ITEM_NAME - название предмета (Можно писать как Вам угодно).
Для Kernite строчка будет выглядеть:
<item id="20" name="Kernite"/>
Важно, чтобы первой и последней строчкой файла было:
<Items>
...
</Items>
Сообщение отредактировал Nikakto: 03 June 2016 - 1:55
Спасибо за программку - аццки нужная вещь, но статус ордеров почему-то не обновляется(((. Тестил на двух чарах, ордера в жите, хеке и ренсе.. По апи обновляются - всё норм, но статус всегда зелёный. Ингейм конечно проверял - перебита половина. Может туплю где-то ?...