|
|
@@ -51,7 +51,7 @@ func НовКонвой(bot types.ИБот) (*Конвой, error) {
|
|
|
|
|
|
// Пуск -- запускает конвой в работу
|
|
|
func (sf *Конвой) Пуск() error {
|
|
|
- go sf.run()
|
|
|
+ go sf.пуск()
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
@@ -68,7 +68,7 @@ func (sf *Конвой) Слава() types.ИСтатПарам {
|
|
|
}
|
|
|
|
|
|
// обрабатывает конвой
|
|
|
-func (сам *Конвой) run() {
|
|
|
+func (сам *Конвой) пуск() {
|
|
|
for {
|
|
|
select {
|
|
|
case <-сам.бот.Кнт().Done():
|
|
|
@@ -81,12 +81,20 @@ func (сам *Конвой) run() {
|
|
|
}
|
|
|
|
|
|
func (сам *Конвой) атаковать() {
|
|
|
- сам.updateTime()
|
|
|
- сам.атакаНачать() // в этом месте только атаковать
|
|
|
- сам.проверитьМиссияКонвой()
|
|
|
- сам.проверитьМиссияМастерДозора()
|
|
|
- сам.проверитьМиссия6фрагов()
|
|
|
- сам.славаОбновить()
|
|
|
+ if false {
|
|
|
+ сам.обновитьВремя()
|
|
|
+ }
|
|
|
+ for {
|
|
|
+ стрВбой := сам.найтиВбой()
|
|
|
+ if стрВбой == "" {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ сам.атакаНачать() // в этом месте только атаковать
|
|
|
+ сам.проверитьМиссияКонвой()
|
|
|
+ сам.проверитьМиссияМастерДозора()
|
|
|
+ сам.проверитьМиссия6фрагов()
|
|
|
+ сам.славаОбновить()
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Обновляет славу по требованию
|
|
|
@@ -119,10 +127,10 @@ func (sf *Конвой) славаОбновить() {
|
|
|
}
|
|
|
|
|
|
// Обновляет оставшееся время конвоя
|
|
|
-func (sf *Конвой) updateTime() {
|
|
|
+func (sf *Конвой) обновитьВремя() {
|
|
|
// Время подходит надо обновляться
|
|
|
if err := sf.net.UpdateLst(); err != nil {
|
|
|
- logrus.WithError(err).Error("ConvoyNet.updateTime(): при выполнении GET-команды обновления")
|
|
|
+ logrus.WithError(err).Error("Конвой.обновитьВремя(): при выполнении GET-команды обновления")
|
|
|
sf.SetCountDown(20)
|
|
|
return
|
|
|
}
|
|
|
@@ -162,7 +170,7 @@ func (sf *Конвой) updateTime() {
|
|
|
lstTime := strings.Split(strLastTime, `До следующего конвоя: `)
|
|
|
strLastTime = lstTime[1]
|
|
|
if err := sf.ParseCountDown(strLastTime); err != nil {
|
|
|
- // log._rintf("WARN Convoy.updateTime(): при установке времени ожидания конвоя(%v)\n\terr=%v\n", strLastTime, err)
|
|
|
+ // log._rintf("WARN Конвой.обновитьВремя(): при установке времени ожидания конвоя(%v)\n\terr=%v\n", strLastTime, err)
|
|
|
sf.SetCountDown(10)
|
|
|
}
|
|
|
case isMask: // Если маскировка между конвоями
|
|
|
@@ -170,23 +178,33 @@ func (sf *Конвой) updateTime() {
|
|
|
lstTime := strings.Split(strLastTime, `Полная маскировка через `)
|
|
|
strLastTime = lstTime[1]
|
|
|
if err := sf.ParseCountDown(strLastTime); err != nil {
|
|
|
- // log._rintf("ERRO Bank.getAllMode(): при установке времени банка для 1го режима(%v)\n\terr=%v\n", strLastTime, err)
|
|
|
+ // log._rintf("ERRO BКонвой.обновитьВремя(): при установке времени банка для 1го режима(%v)\n\terr=%v\n", strLastTime, err)
|
|
|
sf.SetCountDown(10)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// Проводит атаку на конвой
|
|
|
-func (сам *Конвой) атакаНачать() {
|
|
|
- // Найти контрольную строку
|
|
|
+func (сам *Конвой) найтиВбой() string {
|
|
|
var (
|
|
|
strOut = ""
|
|
|
lstConvoy = сам.СписПолучить()
|
|
|
isFind bool
|
|
|
)
|
|
|
-
|
|
|
+ if сам.бот.Имя() == "prospero tank" {
|
|
|
+ log.Printf("")
|
|
|
+ }
|
|
|
+ if len(lstConvoy) == 0 {
|
|
|
+ ош := сам.net.UpdateLst()
|
|
|
+ if ош != nil {
|
|
|
+ log.Printf("Конвой.атакаНачать(): при обновлении lstConvoy, ош=\n\t%v\n", ош)
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ lstConvoy = сам.СписПолучить()
|
|
|
+ }
|
|
|
for _, strLink := range lstConvoy {
|
|
|
- if strings.Contains(strLink, `>Начать разведку<`) {
|
|
|
+ если1 := strings.Contains(strLink, `>Начать разведку<`)
|
|
|
+ если2 := strings.Contains(strLink, `<span>В БОЙ!</span>`)
|
|
|
+ if если1 {
|
|
|
strOut = strLink
|
|
|
lstLink := strings.Split(strOut, `<div class="bot"><a class="simple-but border" w:id="findEnemy" href="`)
|
|
|
strOut = lstLink[1]
|
|
|
@@ -195,7 +213,7 @@ func (сам *Конвой) атакаНачать() {
|
|
|
isFind = true
|
|
|
break
|
|
|
}
|
|
|
- if strings.Contains(strLink, `<span>В БОЙ!</span>`) {
|
|
|
+ if если2 {
|
|
|
strOut = strLink
|
|
|
lstLink := strings.Split(strOut, `<div class="bot"><a class="simple-but border" w:id="startMasking" href="`)
|
|
|
if len(lstLink) == 1 {
|
|
|
@@ -218,38 +236,51 @@ func (сам *Конвой) атакаНачать() {
|
|
|
}
|
|
|
}
|
|
|
if !isFind { // Время ожидания
|
|
|
- if err := сам.SetCountDown(1); err != nil {
|
|
|
- panic(fmt.Errorf("ConvoyNet.attackConvoy(): пр установке CountDown, err=\n\t%w", err))
|
|
|
- }
|
|
|
+ // if err := сам.SetCountDown(1); err != nil {
|
|
|
+ // panic(fmt.Errorf("Конвой.атакаНачать(): прb установке CountDown, err=\n\t%w", err))
|
|
|
+ // }
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ return strOut
|
|
|
+}
|
|
|
+
|
|
|
+// Проводит атаку на конвой
|
|
|
+func (сам *Конвой) атакаНачать() {
|
|
|
+ // Найти контрольную строку
|
|
|
+ strOut := сам.найтиВбой()
|
|
|
+ if strOut == "" { // Время ожидания
|
|
|
+ // if err := сам.SetCountDown(1); err != nil {
|
|
|
+ // panic(fmt.Errorf("Конвой.атакаНачать(): прb установке CountDown, err=\n\t%w", err))
|
|
|
+ // }
|
|
|
return
|
|
|
}
|
|
|
strLink := strOut
|
|
|
// Можно начать разведку
|
|
|
lstConvoy, err := сам.net.Get(strLink)
|
|
|
if err != nil {
|
|
|
- // log._rintf("ERRO ConvoyNet.attackConvoy(): при выполнении GET-команды 'В атаку!', err=\n\t%v\n", err)
|
|
|
+ log.Printf("ERRO Конвой.атакаНачать(): при выполнении GET-команды 'В атаку!', err=\n\t%v\n", err)
|
|
|
return
|
|
|
}
|
|
|
if err = сам.СтрОбновить(lstConvoy); err != nil {
|
|
|
for _, strOut = range lstConvoy {
|
|
|
if strings.Contains(strOut, `<title>Ошибка на сервере. Сообщение админу уже отправлено.</title>`) {
|
|
|
- // log._rintf("ERRO ConvoyNet.attackConvoy(): при обновлении lstConvoy, strOut=\n\t%v\n", strOut)
|
|
|
+ // log._rintf("ERRO Конвой.атакаНачать(): при обновлении lstConvoy, strOut=\n\t%v\n", strOut)
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
for _, strOut = range lstConvoy {
|
|
|
if strings.Contains(strOut, `<title>База</title>`) {
|
|
|
- // log._rintf("ERRO ConvoyNet.attackConvoy(): при обновлении lstConvoy (найдено lstBase), strOut=\n\t%v\n", strOut)
|
|
|
+ // log._rintf("ERRO Конвой.атакаНачать(): при обновлении lstConvoy (найдено lstBase), strOut=\n\t%v\n", strOut)
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
- // log._rintf("ERRO ConvoyNet.attackConvoy(): при обновлении lstConvoy, err=\n\t%v\n", err)
|
|
|
+ // log._rintf("ERRO Конвой.атакаНачать(): при обновлении lstConvoy, err=\n\t%v\n", err)
|
|
|
return
|
|
|
}
|
|
|
for сам.атакаИскать() {
|
|
|
}
|
|
|
if err := сам.SetCountDown(1); err != nil {
|
|
|
- panic(fmt.Errorf("ConvoyNet.attackConvoy(): при установке CountDown, err=\n\t%w", err))
|
|
|
+ panic(fmt.Errorf("Конвой.атакаНачать(): при установке CountDown, err=\n\t%w", err))
|
|
|
}
|
|
|
}
|
|
|
|