|
|
@@ -47,11 +47,9 @@ type Арсенал struct {
|
|
|
func НовАрсенал(база types.ИБаза) (types.ИАрсенал, error) {
|
|
|
лог := logger.НовЛоггер("Арсенал")
|
|
|
лог.Инфо("НовАрсенал()\n")
|
|
|
- арена := arena.НовАрена(база.Бот(), "Арсенал", `<span class="green2">Ремкомплект</span><br/>`)
|
|
|
|
|
|
кнт, фнОтмена := context.WithCancel(база.Контекст())
|
|
|
сам := &Арсенал{
|
|
|
- ИАрена: арена,
|
|
|
бот: база.Бот(),
|
|
|
база: база,
|
|
|
фугас: static_param.НовСтатПарам(стрФугасы),
|
|
|
@@ -65,9 +63,15 @@ func НовАрсенал(база types.ИБаза) (types.ИАрсенал, er
|
|
|
|
|
|
лог: лог,
|
|
|
}
|
|
|
+ аренаКонфиг := arena.АренаКонфиг{
|
|
|
+ Бот_: база.Бот(),
|
|
|
+ АренаИмя_: "Арсенал",
|
|
|
+ СтрКонтроль_: `<span class="green2">Ремкомплект</span><br/>`,
|
|
|
+ ФнПуск_: сам.пуск,
|
|
|
+ }
|
|
|
+ сам.ИАрена = arena.НовАрена(аренаКонфиг)
|
|
|
сам.вЛог = web_log.НовВебЛог(true)
|
|
|
сам.сеть = arena_net.НовАренаСеть(сам, "https://wartank.ru/production/Armory")
|
|
|
- // сам.сеть = arsenalnet.НовАрсеналСеть(сам)
|
|
|
go сам.пуск()
|
|
|
сам.вЛог.Добавить("НовАрсенал(): Арсенал создан")
|
|
|
return сам, nil
|
|
|
@@ -78,12 +82,12 @@ func (сам *Арсенал) Уровень() types.ИСтатПарам {
|
|
|
return сам.уровень
|
|
|
}
|
|
|
|
|
|
-// ПродуктКолСейчас -- возвращает количество прозводимого продукта
|
|
|
+// ПродуктКолСейчас -- возвращает количество производимого продукта
|
|
|
func (сам *Арсенал) ПродуктКолСейчас() int {
|
|
|
return сам.продуктКол.Получ()
|
|
|
}
|
|
|
|
|
|
-// ПродуктИмяСейчас -- возвращает имя прозводимого продукта
|
|
|
+// ПродуктИмяСейчас -- возвращает имя производимого продукта
|
|
|
func (сам *Арсенал) ПродуктИмяСейчас() string {
|
|
|
return сам.продуктИмя
|
|
|
}
|
|
|
@@ -156,7 +160,7 @@ func (сам *Арсенал) проверитьПостроить() bool {
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
-// Обновляет текущий уровень оружейки (может быть не построена)
|
|
|
+// Обновляет текущий уровень арсенала (может быть не построена)
|
|
|
func (сам *Арсенал) уровеньОбновить() bool {
|
|
|
сам.вЛог.Добавить("Арсенал.уровеньОбновить()\n")
|
|
|
списСтр, ош := сам.сеть.ВебВоркер().Получ("http://wartank.ru/buildings")
|
|
|
@@ -194,7 +198,7 @@ func (сам *Арсенал) уровеньОбновить() bool {
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
-// Строит оружейку при нулевом уровне
|
|
|
+// Строит арсенал при нулевом уровне
|
|
|
func (сам *Арсенал) построить() (bool, error) {
|
|
|
сам.вЛог.Добавить("Арсенал.построить()\n")
|
|
|
списСтр, ош := сам.сеть.ВебВоркер().Получ("https://wartank.ru/building-upgrade/Armory")
|
|
|
@@ -219,15 +223,15 @@ func (сам *Арсенал) построить() (bool, error) {
|
|
|
return true, nil
|
|
|
}
|
|
|
// <a class="simple-but border mb5" href="Armory?30-1.ILinkListener-upgradeLink-link">
|
|
|
- // Пробуем построить оружейку
|
|
|
+ // Пробуем построить арсенал
|
|
|
_стр := strings.TrimPrefix(стр, `<a class="simple-but border mb5" href="`)
|
|
|
_стр = strings.TrimSuffix(_стр, `">`)
|
|
|
ссылка := "https://wartank.ru/building-upgrade/" + _стр
|
|
|
// https://wartank.ru/building-upgrade/Armory?35-1.ILinkListener-upgradeLink-link
|
|
|
списСтр, ош = сам.сеть.ВебВоркер().Получ(ссылка)
|
|
|
if ош != nil {
|
|
|
- сам.лог.Ошибка("построить(): при GET-команде 'построить оружейку', ош=\n\t%v\n", ош)
|
|
|
- сам.вЛог.Добавить("ОШИБКА Арсенал.построить(): при GET-команде 'построить оружейку', err=\n\t%v\n", ош)
|
|
|
+ сам.лог.Ошибка("построить(): при GET-команде 'построить арсенал', ош=\n\t%v\n", ош)
|
|
|
+ сам.вЛог.Добавить("ОШИБКА Арсенал.построить(): при GET-команде 'построить арсенал', err=\n\t%v\n", ош)
|
|
|
return false, fmt.Errorf("")
|
|
|
}
|
|
|
еслиНайти = false
|
|
|
@@ -247,7 +251,7 @@ func (сам *Арсенал) построить() (bool, error) {
|
|
|
return true, nil
|
|
|
}
|
|
|
|
|
|
-// Пытается проапгрейдить оружейку
|
|
|
+// Пытается проапгрейдить арсенал
|
|
|
func (сам *Арсенал) проапгрейдить() bool {
|
|
|
сам.вЛог.Добавить("Арсенал.проапгрейдить()\n")
|
|
|
var (
|
|
|
@@ -260,7 +264,7 @@ func (сам *Арсенал) проапгрейдить() bool {
|
|
|
defer time.Sleep(time.Millisecond * 1000)
|
|
|
списСтр, ош = сам.сеть.ВебВоркер().Получ("https://wartank.ru/building-upgrade/Armory")
|
|
|
if ош != nil {
|
|
|
- сам.вЛог.Добавить("ОШИБКА Арсенал.проапгрейдить().фнКупить(): при GET-команде 'купить постройку оружейки', err=\n\t%v\n", ош)
|
|
|
+ сам.вЛог.Добавить("ОШИБКА Арсенал.проапгрейдить().фнКупить(): при GET-команде 'купить постройку арсенала', err=\n\t%v\n", ош)
|
|
|
return false
|
|
|
}
|
|
|
for _, стр = range списСтр {
|
|
|
@@ -282,13 +286,13 @@ func (сам *Арсенал) проапгрейдить() bool {
|
|
|
ссылка := "https://wartank.ru/building-upgrade/" + _стр
|
|
|
списСтр, ош = сам.сеть.ВебВоркер().Получ(ссылка)
|
|
|
if ош != nil {
|
|
|
- сам.вЛог.Добавить("ОШИБКА Арсенал.проапгрейдить().фнКупить(): при GET-команде 'купить постройку оружейки', err=\n\t%v\n", ош)
|
|
|
+ сам.вЛог.Добавить("ОШИБКА Арсенал.проапгрейдить().фнКупить(): при GET-команде 'купить постройку арсенала', err=\n\t%v\n", ош)
|
|
|
return false
|
|
|
}
|
|
|
// Проверить, что постройка состоялась
|
|
|
for _, стр := range списСтр {
|
|
|
if strings.Contains(стр, "ILinkListener-upgradeLink-link") {
|
|
|
- log.Printf("Арсенал.проапгрейдить().фнКупить(): покупка оружейкине прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
|
|
|
+ log.Printf("Арсенал.проапгрейдить().фнКупить(): покупка арсенала не прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
|
|
|
return false // Покупка не оплачена
|
|
|
}
|
|
|
}
|
|
|
@@ -428,23 +432,23 @@ func (сам *Арсенал) СтатаОбновить() (err error) {
|
|
|
lstArsenal = сам.СписПолучить()
|
|
|
)
|
|
|
{ // Найти маркер фугасного снаряда
|
|
|
- for _, strFugas := range lstArsenal {
|
|
|
- if strings.Contains(strFugas, `<span class="nwr"><img class="rico vm" src="/images/shells/HighExplosive.png" alt="Фугасный снаряд" title="Фугасный снаряд"/> `) {
|
|
|
- strOut = strFugas
|
|
|
+ for _, стрФугас := range lstArsenal {
|
|
|
+ if strings.Contains(стрФугас, `<span class="nwr"><img class="rico vm" src="/images/shells/HighExplosive.png" alt="Фугасный снаряд" title="Фугасный снаряд"/> `) {
|
|
|
+ strOut = стрФугас
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
- lstFugas := strings.Split(strOut, `<span class="nwr"><img class="rico vm" src="/images/shells/HighExplosive.png" alt="Фугасный снаряд" title="Фугасный снаряд"/> `)
|
|
|
- strFugas := lstFugas[1]
|
|
|
- lstFugas = strings.Split(strFugas, ` </span>`)
|
|
|
- strFugas = lstFugas[0]
|
|
|
- iFugas, err := strconv.Atoi(strFugas)
|
|
|
+ списФугас := strings.Split(strOut, `<span class="nwr"><img class="rico vm" src="/images/shells/HighExplosive.png" alt="Фугасный снаряд" title="Фугасный снаряд"/> `)
|
|
|
+ стрФугас := списФугас[1]
|
|
|
+ списФугас = strings.Split(стрФугас, ` </span>`)
|
|
|
+ стрФугас = списФугас[0]
|
|
|
+ целФугас, err := strconv.Atoi(стрФугас)
|
|
|
if err != nil {
|
|
|
- ош := fmt.Errorf("ОШИБКА Арсенал.СтатаОбновить(): fugas(%v) not number, err=\n\t%w", strFugas, err)
|
|
|
+ ош := fmt.Errorf("ОШИБКА Арсенал.СтатаОбновить(): фугас(%v) not number, err=\n\t%w", стрФугас, err)
|
|
|
сам.вЛог.Добавить("%v\n", ош)
|
|
|
return ош
|
|
|
}
|
|
|
- сам.Фугасы().Уст(iFugas)
|
|
|
+ сам.Фугасы().Уст(целФугас)
|
|
|
}
|
|
|
{ // Найти маркер бронебойного снаряда
|
|
|
for _, strArmor := range lstArsenal {
|
|
|
@@ -467,38 +471,38 @@ func (сам *Арсенал) СтатаОбновить() (err error) {
|
|
|
сам.вЛог.Добавить("Арсенал.СтатаОбновить(): бронебойки=%v\n", iArmor)
|
|
|
}
|
|
|
{ // Найти маркер кумулятивного снаряда
|
|
|
- for _, strKumul := range lstArsenal {
|
|
|
- if strings.Contains(strKumul, `<span class="nwr"><img class="rico vm" src="/images/shells/HollowCharge.png" alt="Кумулятивный снаряд" title="Кумулятивный снаряд"/> `) {
|
|
|
- strOut = strKumul
|
|
|
+ for _, стрКумул := range lstArsenal {
|
|
|
+ if strings.Contains(стрКумул, `<span class="nwr"><img class="rico vm" src="/images/shells/HollowCharge.png" alt="Кумулятивный снаряд" title="Кумулятивный снаряд"/> `) {
|
|
|
+ strOut = стрКумул
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
- lstKumul := strings.Split(strOut, `<span class="nwr"><img class="rico vm" src="/images/shells/HollowCharge.png" alt="Кумулятивный снаряд" title="Кумулятивный снаряд"/> `)
|
|
|
- strKumul := lstKumul[1]
|
|
|
- lstKumul = strings.Split(strKumul, ` </span>`)
|
|
|
- strKumul = lstKumul[0]
|
|
|
- iKumul, err := strconv.Atoi(strKumul)
|
|
|
+ списКумул := strings.Split(strOut, `<span class="nwr"><img class="rico vm" src="/images/shells/HollowCharge.png" alt="Кумулятивный снаряд" title="Кумулятивный снаряд"/> `)
|
|
|
+ стрКумул := списКумул[1]
|
|
|
+ списКумул = strings.Split(стрКумул, ` </span>`)
|
|
|
+ стрКумул = списКумул[0]
|
|
|
+ целКумул, err := strconv.Atoi(стрКумул)
|
|
|
if err != nil {
|
|
|
- return fmt.Errorf("Арсенал.СтатаОбновить(): kumul(%v) not number, err=\n\t%w", strKumul, err)
|
|
|
+ return fmt.Errorf("Арсенал.СтатаОбновить(): кумул(%v) not number, err=\n\t%w", стрКумул, err)
|
|
|
}
|
|
|
- сам.Кумулятивы().Уст(iKumul)
|
|
|
+ сам.Кумулятивы().Уст(целКумул)
|
|
|
}
|
|
|
{ // Найти маркер ремкомплекта
|
|
|
- for ind, strRemka := range lstArsenal {
|
|
|
- if strings.Contains(strRemka, `<span class="nwr"><img class="rico vm" src="/images/shells/repairkit.gif"/> `) {
|
|
|
+ for ind, стрРемка := range lstArsenal {
|
|
|
+ if strings.Contains(стрРемка, `<span class="nwr"><img class="rico vm" src="/images/shells/repairkit.gif"/> `) {
|
|
|
strOut = lstArsenal[ind]
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
- lstRemka := strings.Split(strOut, `<span class="nwr"><img class="rico vm" src="/images/shells/repairkit.gif"/> `)
|
|
|
- strRemka := lstRemka[1]
|
|
|
- lstRemka = strings.Split(strRemka, `</span>`)
|
|
|
- strRemka = lstRemka[0]
|
|
|
- iRemka, err := strconv.Atoi(strRemka)
|
|
|
+ списРемка := strings.Split(strOut, `<span class="nwr"><img class="rico vm" src="/images/shells/repairkit.gif"/> `)
|
|
|
+ стрРемка := списРемка[1]
|
|
|
+ списРемка = strings.Split(стрРемка, `</span>`)
|
|
|
+ стрРемка = списРемка[0]
|
|
|
+ целРемка, err := strconv.Atoi(стрРемка)
|
|
|
if err != nil {
|
|
|
- return fmt.Errorf("Арсенал.СтатаОбновить(): remka(%v) not number, err=\n\t%w", strRemka, err)
|
|
|
+ return fmt.Errorf("Арсенал.СтатаОбновить(): ремка(%v) not number, err=\n\t%w", стрРемка, err)
|
|
|
}
|
|
|
- сам.Ремки().Уст(iRemka)
|
|
|
+ сам.Ремки().Уст(целРемка)
|
|
|
}
|
|
|
return nil
|
|
|
}
|
|
|
@@ -606,13 +610,13 @@ func (сам *Арсенал) сделатьКумули() bool {
|
|
|
return false
|
|
|
}
|
|
|
// Получить ссылку на кумулятив
|
|
|
- lstKumul := strings.Split(стрВых, `<a class="simple-but border" href="`)
|
|
|
- strLink := lstKumul[1]
|
|
|
- lstKumul = strings.Split(strLink, `"><span><span>Начать производство</span></span></a>`)
|
|
|
- strLink = "https://wartank.ru/production/" + lstKumul[0]
|
|
|
+ списКумул := strings.Split(стрВых, `<a class="simple-but border" href="`)
|
|
|
+ strLink := списКумул[1]
|
|
|
+ списКумул = strings.Split(strLink, `"><span><span>Начать производство</span></span></a>`)
|
|
|
+ strLink = "https://wartank.ru/production/" + списКумул[0]
|
|
|
time.Sleep(time.Millisecond * 50)
|
|
|
if _, err := сам.сеть.Get(strLink); err != nil {
|
|
|
- // log._rintf("ERRO ArsenalNet.makeKumul(): in make product arsenal kumul , err=\n\t%v\n", err)
|
|
|
+ // log._rintf("ERRO ArsenalNet.makeКумуль(): in make product arsenal кумуль , err=\n\t%v\n", err)
|
|
|
return false
|
|
|
}
|
|
|
сам.АренаСостояние().СостояниеУст(стрКумулятивы)
|
|
|
@@ -622,19 +626,19 @@ func (сам *Арсенал) сделатьКумули() bool {
|
|
|
// Создать фугасы
|
|
|
func (сам *Арсенал) сделатьФугасы() bool {
|
|
|
var (
|
|
|
- lstArsenal = сам.СписПолучить()
|
|
|
- стрВых string
|
|
|
- еслиНадено bool
|
|
|
- инд int
|
|
|
+ lstArsenal = сам.СписПолучить()
|
|
|
+ стрВых string
|
|
|
+ еслиНайдено bool
|
|
|
+ инд int
|
|
|
)
|
|
|
|
|
|
for инд, стрВых = range lstArsenal {
|
|
|
if strings.Contains(стрВых, `<span class="green2">Фугасный снаряд</span><br/>`) {
|
|
|
- еслиНадено = true
|
|
|
+ еслиНайдено = true
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
- if !еслиНадено {
|
|
|
+ if !еслиНайдено {
|
|
|
return false
|
|
|
}
|
|
|
стрВых = lstArsenal[инд+10]
|
|
|
@@ -642,23 +646,23 @@ func (сам *Арсенал) сделатьФугасы() bool {
|
|
|
return false
|
|
|
}
|
|
|
// Получить ссылку на ремку
|
|
|
- lstKumul := strings.Split(стрВых, `<a class="simple-but border" href="`)
|
|
|
- strLink := lstKumul[1]
|
|
|
- lstKumul = strings.Split(strLink, `"><span><span>Начать производство</span></span></a>`)
|
|
|
- strLink = "https://wartank.ru/production/" + lstKumul[0]
|
|
|
+ списКумул := strings.Split(стрВых, `<a class="simple-but border" href="`)
|
|
|
+ strLink := списКумул[1]
|
|
|
+ списКумул = strings.Split(strLink, `"><span><span>Начать производство</span></span></a>`)
|
|
|
+ strLink = "https://wartank.ru/production/" + списКумул[0]
|
|
|
time.Sleep(time.Millisecond * 50)
|
|
|
if _, err := сам.сеть.Get(strLink); err != nil {
|
|
|
- // log._rintf("ERRO ArsenalNet.makeFugas(): in make request arsenal product, err=\n\t%v\n", err)
|
|
|
+ // log._rintf("ERRO ArsenalNet.makeФугас(): in make request arsenal product, err=\n\t%v\n", err)
|
|
|
return false
|
|
|
}
|
|
|
сам.АренаСостояние().СостояниеУст(стрФугасы)
|
|
|
- // log._rintf("INFO Арсенал.makeFugas()\n")
|
|
|
+ // log._rintf("INFO Арсенал.makeФугас()\n")
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
// Создать ремку. Выполняется если подходят условия
|
|
|
func (сам *Арсенал) сделатьРемку() bool {
|
|
|
- // _mt.Println("\tArsenalNet.makeRemka()")
|
|
|
+ // _mt.Println("\tArsenalNet.makeРемка()")
|
|
|
var (
|
|
|
стрВых string
|
|
|
еслиНайдено bool
|
|
|
@@ -666,7 +670,7 @@ func (сам *Арсенал) сделатьРемку() bool {
|
|
|
)
|
|
|
lstArsenal, ош := сам.сеть.ВебВоркер().Получ("https://wartank.ru/production/Armory")
|
|
|
if ош != nil {
|
|
|
- log.Printf("Арсенал.сделатьРемку(): при получении страницы оружейки, err=\n\t%v\n", ош)
|
|
|
+ log.Printf("Арсенал.сделатьРемку(): при получении страницы арсенала, err=\n\t%v\n", ош)
|
|
|
return false
|
|
|
}
|
|
|
// <span class="green2">Ремкомплект</span><br/>
|