jemxx / autobot

Autobot for TSO
3 stars 2 forks source link

СборОстатков и отправка домой #53

Closed ghost closed 3 years ago

ghost commented 3 years ago

Пока вчера разбирался с набором, заодно придумал, как совместить СборОстатковАрмии с отправкой: при помощи необязательного параметра "Отправить" исключительно для удобства написания текстов.

Выглядит так СборОстатковАрмии=ЗолотойИнтендант,1,Э,Отправить

модифицировал обработку команды СборОстатковАрмии в autobot.au3

        Case "СборОстатковАрмии"
            Local $perebor = 1, $flag_otpravka = 1
            $parametr = StringSplit($komanda[2], ",")
            $komand_na_massiv = UBound($parametr)
            While $perebor < $komand_na_massiv
                If $parametr[$perebor] = "Отправить" Then
                    $flag_otpravka = 2
                    ExitLoop
                EndIf
                $perebor = $perebor + 1
            WEnd

            ; $parametr = StringSplit($komanda[2], ",")
            $generalData = getGeneralData($parametr[1])
            $gena = $generalData[0]
            $full = $generalData[1]
            While 1
                If openzvezdap() = 1 Then
                    If selecttabatzvezda("specialisti", 0) = 1 Then
                        If generali($gena, $parametr[2]) = 1 Then
                            If $parametr[3] = "Э" Then
                                While sborostatkovarmii(1, $flag_otpravka) <> 1
                                    openzvezdap()
                                    selecttabatzvezda("specialisti", 1)
                                    generali($gena, $parametr[2])
                                WEnd
                                Return 1
                            EndIf
                            If $parametr[3] = "П" Then
                                While sborostatkovarmii(0, $flag_otpravka) <> 1
                                    openzvezdap()
                                    selecttabatzvezda("specialisti", 1)
                                    generali($gena, $parametr[2])
                                WEnd
                                Return 1
                            EndIf
                        EndIf
                    EndIf
                EndIf
            WEnd

$fl_otpravka намеренно равен 1 или 2 (а не 0 или 1), т.к. это связано с флагами в Команде "Отправить": 1 - закрыть окно генерала, 2 - оправить в прикл/домой, чтобы не громоздить лишних условий

функция sborostatkovarmii() в globalfuncWAR.au3

Func sborostatkovarmii($army_type, $fl_otpravka)
    Local $tx = 0, $ty = 0
    If $army_type = 1 Then
        If smena_armii($army_type) = 1 Then
            _imagesearch("media\mechnik.bmp", 1, $tx, $ty, 20)
            MouseClick("left", $tx + 83, $ty + 131, 1) ; мастера осады
            MouseClick("left", $tx + 332, $ty + 78, 1) ; конные стрелки
            MouseClick("left", $tx + 208, $ty + 78, 1) ; стрелки в броне
            MouseClick("left", $tx + 83, $ty + 78, 1)  ; стрелки
            MouseClick("left", $tx + 332, $ty + 24, 1) ; рыцари
            MouseClick("left", $tx + 208, $ty + 24, 1) ; конные мечники
            MouseClick("left", $tx + 83, $ty + 24, 1)  ; мечники
            Sleep(500 * $tormoza)
            Return okclose_elitnoy_gena($fl_otpravka)
        EndIf
    ElseIf $army_type = 0 Then
        If smena_armii($army_type) = 1 Then
            _imagesearch("media\nub_gena.bmp", 1, $tx, $ty, 20)
            MouseClick("left", $tx + 332, $ty + 132, 1)
            MouseClick("left", $tx + 208, $ty + 132, 1)
            MouseClick("left", $tx + 83, $ty + 132, 1)
            MouseClick("left", $tx + 332, $ty + 78, 1)
            MouseClick("left", $tx + 208, $ty + 78, 1)
            MouseClick("left", $tx + 83, $ty + 78, 1)
            MouseClick("left", $tx + 332, $ty + 24, 1)
            MouseClick("left", $tx + 208, $ty + 24, 1)
            MouseClick("left", $tx + 83, $ty + 24, 1)
            Sleep(500 * $tormoza)
            Return okclosegena($fl_otpravka)
        EndIf
    Else
        Return 0
    EndIf
EndFunc

Если неинтересен этот функционал, можно просто закрыть задачу.

jemxx commented 3 years ago

Добавим, почем нет.

Я не совсем понял про функцию sborostatkovarmii Она сейчас ровно такая какую вы привели выше.

ghost commented 3 years ago

Нет, там две правки, в функции закрытия гены передается не 1, а значение флага $fl_otpravka.

Return okclose_elitnoy_gena($fl_otpravka) 
Return okclosegena($fl_otpravka)

А сам флаг передается вторым параметом в функцию сбора армии sborostatkovarmii($army_type, $fl_otpravka)