Отправка разведчиков

Опубликовал Суббота, 07 марта 2020 14:40
Оцените материал
(3 голосов)

Приветствую сообщество!

Сейчас специалисты в игре плодятся аки тараканы. Вот пришло вдохновение и я решил оптимизировать отправку разведов в дальние страны. Лично у себя насчитал 14 пород их, не за горами новые ивенты, а в боте прописано только 6.

Теперь можно прикручивать к боту новых спецов в любом количестве, достаточно их соскринить. В код лезть больше будет не надо.

В изходном коде изменена функция RunRazved, вот исходный код:

local $i = 0, $ii = 0, $iii = 0, $tx, $ty, $Est_razved = 0
$kakih=StringSplit($kakih, ";")
WinActivate("The Settlers Онлайн")
Switch $TipPoiska
Case "Быстрый"
$KartinkaTipPoiska = "media\search_treasure_fast.bmp"
$KartinkaTipPoiska2 = "media\search_treasure_fast_.bmp"
Case "Средний"
$KartinkaTipPoiska = "media\search_treasure_sredny.bmp"
$KartinkaTipPoiska2 = "media\search_treasure_sredny_.bmp"
Case "Долгий"
$KartinkaTipPoiska = "media\search_treasure_long.bmp"
$KartinkaTipPoiska2 = "media\search_treasure_long_.bmp"
Case "ОченьДолгий"
$KartinkaTipPoiska = "media\search_treasure_very_long.bmp"
$KartinkaTipPoiska2 = "media\search_treasure_very_long_.bmp"
Case "Длительный"
$KartinkaTipPoiska = "media\search_treasure_super_long.bmp"
$KartinkaTipPoiska2 = "media\search_treasure_super_long_.bmp"
EndSwitch
Switch $VidPoiska
Case "Сокровища"
$KartinkaVidPoiska = "media\search_treasure_button.bmp"
$KartinkaVidPoiska2 = "media\search_treasure_button_.bmp"
Case "Приключения"
$KartinkaVidPoiska = "media\poisk_prikla.bmp"
$KartinkaVidPoiska2 = "media\poisk_prikla_.bmp"
EndSwitch
chatoff()
drugioff()
if openzvezda() = 0 then Return 0
if SelectTabAtZvezda("specialisti", 0) = 0 then Return 0
while 1
if openzvezda() = 1 then
$i = 0
$Est_razved = 0
while $i<$kakih[0]
TrayTip("", $kakih[$i+1], 0)
$Est_razved = _imagesearcharea("media\"&$kakih[$i+1], 1, $Zvezda_area[0], $Zvezda_area[1], $Zvezda_area[2], $Zvezda_area[3], $tx, $ty, 30)
if $Est_razved = 1 then exitloop
$i = $i + 1
wend
if $Est_razved = 1 then
$ii = 0
while $ii < 6
MouseMove($tx, $ty, 10 * $tormoza)
Sleep(300 * $tormoza)
MouseClick("left", $tx + Random(-2, 2, 1), $ty + Random(-2, 2, 1), 1)
removemouse(543, 0, 100)
sleepwhile("media\search_treasure_menu.bmp", 20, 10)
if haveimage("media\search_treasure_menu.bmp", 20) = 1 then exitloop
$ii = $ii + 1
;if $ii = 6 then Return 0
wend
ZmemSmennuyuKartinku($KartinkaVidPoiska, 30, $KartinkaVidPoiska2, 30)
go5()
Sleep(300 * $tormoza)
removemouse(500, 0, 500)
Sleep(300 * $tormoza)
go5()
Sleep(300 * $tormoza)
ZmemSmennuyuKartinkuIZdem($KartinkaTipPoiska, 40, $KartinkaTipPoiska2, 40, "media\search_button_OK_enabled.bmp", 20)
If $Arti = 1 Then ZmemSmennuyuKartinkuIZdem("media\search_artifact.bmp", 30, "media\search_artifact_.bmp", 30, "media\search_button_OK_enabled.bmp", 20)
ZmemSmennuyuKartinku("media\search_button_OK_enabled.bmp", 20, "media\search_button_OK_enabled_.bmp", 20)
else
$iii = $iii + 1
zvezdamovepolzunokdown(0)
zvezdamovepolzunokdown(0)
zvezdamovepolzunokdown(0)
sleep(Random(500, 1000, 1) * $tormoza)
If $iii > 9 then
If haveimageAREA("media\zvezda_polzunok_ewe_mojno_vniz.bmp", 70, $Zvezda_area[0] + 385, $Zvezda_area[1] + 200, $Zvezda_area[2]+25, $Zvezda_area[3] + 25) = 0 then
TrayTip("", "Разведчики кончились", 0)
Return 1
endif
else
if $iii > 10 then Return 0
endif
endif
Else
Return 0
EndIf
WEnd

Так же меняем Case "Разведчики" на следущее содержимое:

$parametr = StringSplit($komanda[2], ",")
Return RunRazved($parametr[1], $parametr[2], $parametr[3], $parametr[4])

В результате чего в нашем .txt файле для Автобота команда будет выглядить примерно так:

Разведчики=Сокровища,Длительный,Фотоморда1.bmp;ФотомордаN.bmp,1

 

В данный момент, отскринив всех 14 разных типов разведов, все пошли по своим делам))

Оставить комментарий

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены

2 комментарии

  • Комментировать Vasuta Среда, 18 марта 2020 14:16 написал Vasuta

    Доброго дня!
    Я не знаком с Автоитом, но хорошо знаком с программированием, потому вопрос может и нубский: а нельзя прикрутить функцию, которая по имени спеца (гена, геолог, развед) будет возвращать имя картинки с ним?
    что-то типа

    function spec_picture (name : string) : string;
    ...
    Case "Интендант"
    spec_picture = "media\army_values\avtobus.bmp"

    Case "НовыйИнт"
    spec_picture = "media\army_values\avtobus_valent.bmp"

    и т.д.

    и тогда да серьезно надо будет переделать ОДИН РАЗ КОД, но потом достаточно будет только добавить столько строк кода, сколько новых спецов каждого вида и перекомпилировать екзешник.

    Ну и пара комментов, а рабочий архив будет доступен кому-то кроме автора?
    У меня так и не скомпилировался екзешник, а то сам бы этим занялся. Читая дискуссию ВК, вижу, что эта не только у меня.

    Есть куча мелких ошибок, например, картинки Вета и Нинзи лежат не в папке media\army_values\ а на уровень выше, т.е. просто в папке media\. Это для тех кто хочет обрезать под обсерваторию.

    Далеко не все функции генералов допрописаны, например, команда ОтправитьДомой не знает про существование Медика, и бот вылетает с ошибкой на этой строке.
    Мне кажется, что если реализовать мой вариант, то такие ошибки "забывчивости" будут исключены.

  • Комментировать Администратор Суббота, 07 марта 2020 15:18 написал Администратор

    Оконцовка функции (когда даём проге понять что разведов нет) RunRazved кривоватая, велкам на исправления))

    У кого есть реальные апгрейды по функционалу кричите, давайте объединим всё и выложу готовый скомпилированый бот на сайт))

Войти (зарегистрироваться) с помощью

Избранные статьи

Зарегистрируйтесь или войдите для возможности просматривать избранные статьи.

Избранные разделы

Зарегистрируйтесь или войдите для возможности просматривать избранные разделы.

Последние комментарии

https://clck.ru/MNc5U - Короткая ссылка на страницу для ИГРОВОГО чата

Голосуйте! Все материалы сортируются на сайте динамически, с учётом рейтинга. Ваш голос поможет разместить наиболее интересные материалы с самого начала страницы.
Открыть \ Закрыть чат