Giter Club home page Giter Club logo

bot's People

Contributors

disfated avatar surgun avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

bot's Issues

перечень требуемых файлов для инсталла

указать в your_task или еще где что надо чтобы работало.
ну по наитию ясно что лучше слить все файлы в одну папку, но все же.

и вообще, можно подумать о каком-то инсталл-паке с формой редактирования своих заданий.

написать парсер пакетов.

основная цель - получить доступ к каналу чата news.
я тут начал писать и выяснил чо в отличии от чата и торговли новости проходят не через xmpp. видимо они зашифрованны в amf. как с помощью pyamf их расшифровывать я так и не воткнул.
свою попытку парсера под никсу залил под именем tcp_parser.py
запускается из-под рута.

Определение размеров клиента

Задача

Требуется кроссплатформенно получить размеры окна флэш-плагина с игрой, то есть:

(
  left    # x-координата относительно экрана левого верхнего угла
  top     # y-координата относительно экрана левого верхнего угла
  width   # ширина клиента
  height  # высота клиента
)

Решения

Здесь текущее решение. Ниже - старый трэш.

Windows

Пока рабочий код из автоита. С небольшими правками должен работать.

https://gist.github.com/915744

В кратце так:

import win32gui
hwnd = win32gui.НайтиОкноКонтролаПоЗаданнымПараметрам(class_name, window_name)
win32gui.ActivateWindow(hwnd)
l, t, r, b = win32gui.GetWindowRect(hwnd)

Unix

Через скриншот это сделать проблематично, т.к. зацепиться не за что. В особенности правый нижний угол...

Так что надо что-то придумывать!!! Без этого никуда не двинемся!

Окошко активируется так:

import wnck
import gtk
from time import time

browser_title = 'Google Chrome'

wnck_screen = wnck.screen_get_default()
while gtk.events_pending(): gtk.main_iteration()

wnck_windows = [w for w in wnck_screen.get_windows() if w.get_name().find(browser_title) >= 0]
if len(wnck_windows) == 0:
    print 'Not found browser window'
else:
    wnck_window = wnck_windows[0]
    wnck_window.activate(int(time()))

Кстати, wnck - гномовская тема, она вообще будет не в гноме работать? Кто знает?

OSX

??

автозаказ бафов и их выполнение

в целях реализации http://settlers.onbb.ru/viewtopic.php?id=124#p1600

задачи:
0. определение количества ресурсов

  1. заказ в провиантлагере бафа по мере накопления ресурсов
  2. выполнение бафа на указанное здание (поиск либо по координатам либо по хэшу одного из его частей)
  3. возможность выполнения бафа другу \ члену гильдии (выбирается в порядке очереди, например баф 1му члену гильдии, 2му и т.д. очередность в гильдии задается статусом руководством гильдии)

Автокормчий

Пытаюсь наклепать тот функционал, что есть в автоитовской версии.

Не хватает для полного счастья:
В первую очередь нужны сниппеты под unix

  1. Как получить размеры клиента игры?
    Отдельная ветка
  2. Как послать нажатия клавиш ("1" - "9")?
  3. Как послать событие скролла?
    Временное решение - с помощью клавиатуры...
    Но всё же хотелось бы mouse.wheelup(5), mouse.wheeldown(5).
    Может pyMouse сделают...
  4. GUI Alert'ы, MessageBox'ы, InputBox'ы.
    Кроссбраузерно чтоб.

Кто чего знает - отзовись!

Система позиционирования на объектах

Т.к. клавиши 1-9 теперь не действуют, нужна новая система позиционирования.
Т.к. действует клавиша 0 - от неё и плясать будем.
Далее, варианта 2:

  1. Клавишами курсора двигаться.
  2. drag'n'drop.

Ну, и, собственно, надо написать что-типо client.goto(some_in_game_coordinate)

Создать теймплейты

Для нахождения ключевых элементов окна, всех видов всплывающих окон и иконок бафов в звезде.

Написать функцию торговли.

Должна принимать кортеж с координатой товара на продажу вида (вкладка, строка, столбец), координаты товара на покупку, кол-во того и другого.

Автосажалка ферм и колодцев

http://settlers.onbb.ru/viewtopic.php?id=104&p=4#p1498

1 сажать поля ферм
2 сажать колодцы

реализовать путем поиска высохших колодцев и высохших ферм и обновлением их на новые
во время обновления надо ждать завершения 3х слотов строительства
обновлять пока может находить высохшие фермы и колодцы

В автоит добавить

Автологин

http://settlers.onbb.ru/viewtopic.php?id=104&p=6#p1586

Кстати, я пропатчил малость функцию _BitmapMatch в autofeed, теперь она находит большую часть засохших ферм и родников - кроме тех, которые зданиями и деревьями закрыты. Суть в том, что 1-3 пикселя не совпадают в квадрате 5х5 пикселей:

; Для целей BitmapSearch - проверяет соответствие $bitmap и экрана в точке ($x0; $y0)
Func _BitmapMatch($bitmap, $x0, $y0, $tolerance = 0)

    Local $x, $y
    Local $falses = 0
    For $x = 0 To UBound($bitmap, 1) - 1
    For $y = 0 To UBound($bitmap, 2) - 1
        If Not ColorMatches(PixelGetColor($x0 + $x, $y0 + $y), $bitmap[$x][$y], 0) Then $falses=$falses + 1
        if $falses > 0 and $x = 0 and $y = 0 then return False
        if $falses > 3 then return False
    Next
    Next
    Return True
EndFunc

Если надо, хеши:

1257575554 новый хеш корма для животных

1021843579 +250 к емкости шахты

2416911497 +2к рыбы


выполнение задач в указанное время

необходима возможность сделать скрипт

цикл ожидания клавиши esc либо наступления 22:00 {
здесь указаны задачи и время их выполнения

}

подробнее описание:

+еще туду: построить шахту на свободном месте.
либо тупо запрос постройки шахты + выбор какой.

+еще очень нужное туду:
расписание задач!!!! добавить время рядом с каждой задачей время выполнения ( в скобках например)
по умолчанию - "после предыдущей", но и чтобы юзер сам мог указать условия запуска задачи.

возможные значения:
1 "после предыдущей"
2 "по завершении очереди строительства"
3 "через Х минут после завершения предыдущей задачи"
4 "в указанное время: ХХ:ХХ"

простейший пример использования:
отправить геолога - камень
отправить геолога - камень - через 20 минут
отправить геолога - золото - через 20 минут
отправить геолога - золото - через 3 часа 10 минут
отправить геолога - камень ...

либо параллельная очередь:
постройка шахт золота \ меди \ руды каждые 2 часа - 10 задач.

понятно что все ограничиваться может на время жизни сессии. в таком случае сам может смотреть что если суммарное время выполнения задач более 2х часов - то последующие задачи можешь не принимать с надписью "невозможно запустить ввиду ограничения времени жизни кук" или чтото в этом роде.

Возможный пример чего хочется:

TaskList[] = { Drop, Feed, Settle , Build("gold_mine", "15:00"), Build(gold_mine, "after before"), SendGeolog("stone","16:00")};
Exec(TaskList); - разовое выполнение задач с их удаление по завершении \ ошибке
Loop_Exec(TaskLIst) - бесконечное выполнение задач в цикле, выход - ESC

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.