|
@@ -1,7 +1,6 @@
|
|
|
package arena_convoy
|
|
package arena_convoy
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
- "fmt"
|
|
|
|
|
"log"
|
|
"log"
|
|
|
"strconv"
|
|
"strconv"
|
|
|
"strings"
|
|
"strings"
|
|
@@ -27,9 +26,9 @@ type АренаКонвой struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// НовКонвой -- возвращает новый *Convoy
|
|
// НовКонвой -- возвращает новый *Convoy
|
|
|
-func НовКонвой(конт ILocalCtx, бот ИБот) *АренаКонвой {
|
|
|
|
|
|
|
+func НовКонвой(конт ILocalCtx) *АренаКонвой {
|
|
|
сам := &АренаКонвой{
|
|
сам := &АренаКонвой{
|
|
|
- бот: бот,
|
|
|
|
|
|
|
+ бот: конт.Get("бот").Val().(ИБот),
|
|
|
слава: lev1.НовСтатПарам("слава"),
|
|
слава: lev1.НовСтатПарам("слава"),
|
|
|
}
|
|
}
|
|
|
аренаКонфиг := arena.АренаКонфиг{
|
|
аренаКонфиг := arena.АренаКонфиг{
|
|
@@ -40,26 +39,28 @@ func НовКонвой(конт ILocalCtx, бот ИБот) *АренаКонв
|
|
|
СтрУрл_: "https://wartank.ru/convoy",
|
|
СтрУрл_: "https://wartank.ru/convoy",
|
|
|
}
|
|
}
|
|
|
сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
|
|
сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
|
|
|
|
|
+ конт.Set("конвой", сам, "Арена конвоя бота")
|
|
|
|
|
+ _ = ИАренаКонвой(сам)
|
|
|
return сам
|
|
return сам
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// Слава -- возвращает славу конвоя
|
|
|
|
|
+func (сам *АренаКонвой) Слава() ИСтатПарам {
|
|
|
|
|
+ return сам.слава
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// UpdateLst -- принудительно обновляет состояние конвоя
|
|
// UpdateLst -- принудительно обновляет состояние конвоя
|
|
|
func (сам *АренаКонвой) UpdateLst() {
|
|
func (сам *АренаКонвой) UpdateLst() {
|
|
|
сам.Обновить()
|
|
сам.Обновить()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// Слава --возвращает счётчик славы конвоя
|
|
|
|
|
-func (сам *АренаКонвой) Слава() ИСтатПарам {
|
|
|
|
|
- return сам.слава
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
// обрабатывает конвой
|
|
// обрабатывает конвой
|
|
|
func (сам *АренаКонвой) пуск() {
|
|
func (сам *АренаКонвой) пуск() {
|
|
|
фнЦикл := func() {
|
|
фнЦикл := func() {
|
|
|
сам.проверитьМиссия6фрагов()
|
|
сам.проверитьМиссия6фрагов()
|
|
|
сам.проверитьМиссияРазведкаКонвой()
|
|
сам.проверитьМиссияРазведкаКонвой()
|
|
|
сам.проверитьМиссияМастерРазведки()
|
|
сам.проверитьМиссияМастерРазведки()
|
|
|
- сам.атаковать()
|
|
|
|
|
|
|
+ сам.призыВзять()
|
|
|
}
|
|
}
|
|
|
for {
|
|
for {
|
|
|
select {
|
|
select {
|
|
@@ -74,16 +75,11 @@ func (сам *АренаКонвой) пуск() {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (сам *АренаКонвой) атаковать() {
|
|
|
|
|
|
|
+func (сам *АренаКонвой) призыВзять() {
|
|
|
if false {
|
|
if false {
|
|
|
сам.обновитьВремя()
|
|
сам.обновитьВремя()
|
|
|
}
|
|
}
|
|
|
for {
|
|
for {
|
|
|
- стрВбой := сам.найтиВбой()
|
|
|
|
|
- if стрВбой == "" {
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- сам.атакаНачать() // в этом месте только атаковать
|
|
|
|
|
сам.проверитьМиссияРазведкаКонвой()
|
|
сам.проверитьМиссияРазведкаКонвой()
|
|
|
сам.проверитьМиссияМастерРазведки()
|
|
сам.проверитьМиссияМастерРазведки()
|
|
|
сам.проверитьМиссия6фрагов()
|
|
сам.проверитьМиссия6фрагов()
|
|
@@ -188,129 +184,6 @@ func (сам *АренаКонвой) обновитьВремя() {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (сам *АренаКонвой) найтиВбой() string {
|
|
|
|
|
- var (
|
|
|
|
|
- strOut = ""
|
|
|
|
|
- еслиНайдено bool
|
|
|
|
|
- )
|
|
|
|
|
- lstConvoy := сам.Сеть().ВебВоркер().Получ("https://wartank.ru/convoy")
|
|
|
|
|
- if сам.бот.Имя() == "prospero tank" {
|
|
|
|
|
- log.Printf("")
|
|
|
|
|
- }
|
|
|
|
|
- for _, strOut = range lstConvoy {
|
|
|
|
|
- // <div class="bot"><a class="simple-but border" w:id="findEnemy" href="convoy?50-1.ILinkListener-root-findEnemy"><span><span>Начать разведку</span></span></a></div>
|
|
|
|
|
- если1 := strings.Contains(strOut, `.ILinkListener-root-findEnemy"`)
|
|
|
|
|
- if если1 {
|
|
|
|
|
- _ссылка := strings.TrimPrefix(strOut, `<div class="bot"><a class="simple-but border" w:id="findEnemy" href="`)
|
|
|
|
|
- _ссылка = strings.TrimSuffix(_ссылка, `"><span><span>Начать разведку</span></span></a></div>`)
|
|
|
|
|
- strOut = "https://wartank.ru/" + _ссылка
|
|
|
|
|
- еслиНайдено = true
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- если2 := strings.Contains(strOut, `<span>В БОЙ!</span>`)
|
|
|
|
|
- if если2 {
|
|
|
|
|
- lstLink := strings.Split(strOut, `<div class="bot"><a class="simple-but border" w:id="startMasking" href="`)
|
|
|
|
|
- if len(lstLink) == 1 {
|
|
|
|
|
- lstLink = strings.Split(strOut, `<div class="bot"><a class="simple-but border red" w:id="startFight" href="`)
|
|
|
|
|
- }
|
|
|
|
|
- strOut = lstLink[1]
|
|
|
|
|
- lstLink = strings.Split(strOut, `"><span><span>В БОЙ!</span></span></a></div>`)
|
|
|
|
|
- strOut = "https://wartank.ru/" + lstLink[0]
|
|
|
|
|
- еслиНайдено = true
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- // <div class="bot"><a class="simple-but border" w:id="findEnemy" href="convoy?15-1.ILinkListener-root-findEnemy"><span><span>Начать разведку</span></span></a></div>
|
|
|
|
|
- если3 := strings.Contains(strOut, "<span>Начать разведку</span>")
|
|
|
|
|
- if если3 {
|
|
|
|
|
- _ссылка := strings.TrimPrefix(strOut, `<<div class="bot"><a class="simple-but border" w:id="findEnemy" href="`)
|
|
|
|
|
- _ссылка = strings.TrimSuffix(_ссылка, `"><span><span>Начать разведку</span></span></a></div>`)
|
|
|
|
|
- strOut = "https://wartank.ru/" + _ссылка
|
|
|
|
|
- еслиНайдено = true
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- if strings.Contains(strOut, `>ОБЫЧНЫЕ<`) {
|
|
|
|
|
- lstLink := strings.Split(strOut, `<a href="`)
|
|
|
|
|
- strOut = lstLink[1]
|
|
|
|
|
- lstLink = strings.Split(strOut, `" class="simple-but gray"><span><span>ОБЫЧНЫЕ</span></span></a>`)
|
|
|
|
|
- strOut = "https://wartank.ru/" + lstLink[0]
|
|
|
|
|
- еслиНайдено = true
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- if !еслиНайдено { // Время ожидания
|
|
|
|
|
- // 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 := сам.Сеть().ВебВоркер().Получ(strLink)
|
|
|
|
|
- if err := сам.СтрОбновить(lstConvoy); err != nil {
|
|
|
|
|
- for _, strOut = range lstConvoy {
|
|
|
|
|
- if strings.Contains(strOut, `<title>Ошибка на сервере. Сообщение админу уже отправлено.</title>`) {
|
|
|
|
|
- // log._rintf("ERRO Конвой.атакаНачать(): при обновлении lstConvoy, strOut=\n\t%v\n", strOut)
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- for _, strOut = range lstConvoy {
|
|
|
|
|
- if strings.Contains(strOut, `<title>База</title>`) {
|
|
|
|
|
- // log._rintf("ERRO Конвой.атакаНачать(): при обновлении lstConvoy (найдено lstBase), strOut=\n\t%v\n", strOut)
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- // log._rintf("ERRO Конвой.атакаНачать(): при обновлении lstConvoy, err=\n\t%v\n", err)
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- сам.начатьРазведку()
|
|
|
|
|
- if err := сам.ОбратВремяУст("01"); err != nil {
|
|
|
|
|
- panic(fmt.Errorf("Конвой.атакаНачать(): при установке CountDown, err=\n\t%w", err))
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// Выполняет атаку на конвой
|
|
|
|
|
-func (сам *АренаКонвой) начатьРазведку() {
|
|
|
|
|
- // Вырезать ссылку на атаку
|
|
|
|
|
- strOut := ""
|
|
|
|
|
- еслиНайдено := false
|
|
|
|
|
- lstConvoy := сам.СписПолучить()
|
|
|
|
|
- // <div class="bot"><a class="simple-but border" w:id="findEnemy" href="convoy?50-1.ILinkListener-root-findEnemy"><span><span>Начать разведку</span></span></a></div>
|
|
|
|
|
- for _, strOut = range lstConvoy {
|
|
|
|
|
- if strings.Contains(strOut, `.ILinkListener-root-findEnemy`) {
|
|
|
|
|
- еслиНайдено = true
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- if !еслиНайдено { // Нечего атаковать
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- // Атакуем конвой
|
|
|
|
|
- _link := strings.TrimPrefix(strOut, `<div class="bot"><a class="simple-but border" w:id="findEnemy" href="`)
|
|
|
|
|
- _link = strings.TrimSuffix(_link, `"><span><span>Начать разведку</span></span></a></div>`)
|
|
|
|
|
- // https://wartank.ru/convoy?52-1.ILinkListener-root-findEnemy
|
|
|
|
|
- link := "https://wartank.ru/" + _link
|
|
|
|
|
- { // Выполнить атаку
|
|
|
|
|
- lstConvoy = сам.Сеть().ВебВоркер().Получ(link)
|
|
|
|
|
- if err := сам.СтрОбновить(lstConvoy); err != nil {
|
|
|
|
|
- log.Printf("Конвой.attack(): при обновлении lstConvoy, err=\n\t%v\n", err)
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
// Забирает награду в конвое "Активируй боевую силу"
|
|
// Забирает награду в конвое "Активируй боевую силу"
|
|
|
func (сам *АренаКонвой) проверитьМиссияРазведкаКонвой() {
|
|
func (сам *АренаКонвой) проверитьМиссияРазведкаКонвой() {
|
|
|
var (
|
|
var (
|