|
@@ -5,18 +5,18 @@ import (
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"strconv"
|
|
"strconv"
|
|
|
"strings"
|
|
"strings"
|
|
|
- "time"
|
|
|
|
|
|
|
|
|
|
. "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
|
|
. "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
|
|
|
|
|
|
|
|
// . "wartank/app/lev0/alias"
|
|
// . "wartank/app/lev0/alias"
|
|
|
- "wartank/app/lev0/cons"
|
|
|
|
|
. "wartank/app/lev0/types"
|
|
. "wartank/app/lev0/types"
|
|
|
"wartank/app/lev1"
|
|
"wartank/app/lev1"
|
|
|
"wartank/app/lev2/arena"
|
|
"wartank/app/lev2/arena"
|
|
|
"wartank/app/lev2/arena/arena_build"
|
|
"wartank/app/lev2/arena/arena_build"
|
|
|
"wartank/app/lev2/arena/arena_mine/bf_mine_accelerate"
|
|
"wartank/app/lev2/arena/arena_mine/bf_mine_accelerate"
|
|
|
"wartank/app/lev2/arena/arena_mine/bf_mine_build"
|
|
"wartank/app/lev2/arena/arena_mine/bf_mine_build"
|
|
|
|
|
+ "wartank/app/lev2/arena/arena_mine/bf_mine_make"
|
|
|
|
|
+ "wartank/app/lev2/arena/arena_mine/bf_mine_take"
|
|
|
"wartank/app/lev2/arena/arena_mine/bf_mine_time_work"
|
|
"wartank/app/lev2/arena/arena_mine/bf_mine_time_work"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
@@ -46,7 +46,6 @@ func НовШахта(конт ILocalCtx) *АренаШахта {
|
|
|
Конт_: сам.конт,
|
|
Конт_: сам.конт,
|
|
|
АренаИмя_: "Шахта",
|
|
АренаИмя_: "Шахта",
|
|
|
СтрКонтроль_: `<span class="green2">Руда</span><br/>`,
|
|
СтрКонтроль_: `<span class="green2">Руда</span><br/>`,
|
|
|
- ФнПуск_: сам.пуск,
|
|
|
|
|
СтрУрл_: "https://wartank.ru/production/Mine",
|
|
СтрУрл_: "https://wartank.ru/production/Mine",
|
|
|
}
|
|
}
|
|
|
сам.ИАренаСтроение = arena_build.НовАренаСтроение(конт, аренаКонфиг)
|
|
сам.ИАренаСтроение = arena_build.НовАренаСтроение(конт, аренаКонфиг)
|
|
@@ -60,74 +59,16 @@ func НовШахта(конт ILocalCtx) *АренаШахта {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (сам *АренаШахта) Пуск() {
|
|
func (сам *АренаШахта) Пуск() {
|
|
|
- фнОбновить := func() { // Когда арена не построена -- ничего не вернёт
|
|
|
|
|
- defer func() {
|
|
|
|
|
- _ = recover()
|
|
|
|
|
- }()
|
|
|
|
|
- сам.Обновить()
|
|
|
|
|
- }
|
|
|
|
|
- фнОбновить()
|
|
|
|
|
|
|
+ сам.ИАренаСтроение.Пуск()
|
|
|
bf_mine_build.ШахтаПостроить(сам.конт)
|
|
bf_mine_build.ШахтаПостроить(сам.конт)
|
|
|
bf_mine_accelerate.ШахтаУскорить(сам.конт)
|
|
bf_mine_accelerate.ШахтаУскорить(сам.конт)
|
|
|
|
|
+ bf_mine_take.ШахтаЗабрать(сам.конт)
|
|
|
|
|
+ bf_mine_make.ШахтаРаботать(сам.конт)
|
|
|
bf_mine_time_work.ШахтаРаботаВремя(сам.конт)
|
|
bf_mine_time_work.ШахтаРаботаВремя(сам.конт)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// пуск -- запускает обработку шахты
|
|
// пуск -- запускает обработку шахты
|
|
|
-func (сам *АренаШахта) пуск() {
|
|
|
|
|
- фнРабота := func() {
|
|
|
|
|
- defer func() {
|
|
|
|
|
- for сам.ВремяОстат().ПолучМилСек() > 0 {
|
|
|
|
|
- time.Sleep(time.Second * 5)
|
|
|
|
|
- }
|
|
|
|
|
- }()
|
|
|
|
|
- сам.лог.Добавить("Шахта.пуск().фнРабота()")
|
|
|
|
|
- { // Построить
|
|
|
|
|
- счёт := 5
|
|
|
|
|
- for счёт > 0 {
|
|
|
|
|
- break
|
|
|
|
|
- // еcлиНет := сам.построить()
|
|
|
|
|
- // if еcлиНет {
|
|
|
|
|
- // break
|
|
|
|
|
- // }
|
|
|
|
|
- // счёт--
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- { // Забрать из шахты
|
|
|
|
|
- счёт := 5
|
|
|
|
|
- for счёт > 0 { // Забрать из шахты
|
|
|
|
|
- if сам.шахтаЗабрать() {
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- счёт--
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- сам.уровеньОбновить()
|
|
|
|
|
- { // Получить продукцию
|
|
|
|
|
- счёт := 5
|
|
|
|
|
- for счёт > 0 {
|
|
|
|
|
- счёт--
|
|
|
|
|
- еслиПолуч, ош := сам.количествоПолучить()
|
|
|
|
|
- if ош != nil {
|
|
|
|
|
- continue
|
|
|
|
|
- }
|
|
|
|
|
- if еслиПолуч {
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- сам.Сделать()
|
|
|
|
|
- }
|
|
|
|
|
- for {
|
|
|
|
|
- select {
|
|
|
|
|
- case <-сам.конт.Ctx().Done():
|
|
|
|
|
- return
|
|
|
|
|
- case <-сам.ВремяОстат().КаналСиг():
|
|
|
|
|
- фнРабота()
|
|
|
|
|
- default:
|
|
|
|
|
- фнРабота()
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
|
|
+func (сам *АренаШахта) пуск() {}
|
|
|
|
|
|
|
|
// Проверяет количество продукта в шахте
|
|
// Проверяет количество продукта в шахте
|
|
|
func (сам *АренаШахта) количествоПолучить() (bool, error) {
|
|
func (сам *АренаШахта) количествоПолучить() (bool, error) {
|
|
@@ -137,21 +78,8 @@ func (сам *АренаШахта) количествоПолучить() (bool
|
|
|
еслиНайдено bool
|
|
еслиНайдено bool
|
|
|
режим string
|
|
режим string
|
|
|
)
|
|
)
|
|
|
- var lstMine []string
|
|
|
|
|
- фнЗабрать := func() (isOk bool) { // Здесь бывают задержки из-за того, что эта часть работает неправильно
|
|
|
|
|
- isOk = true
|
|
|
|
|
- defer func() {
|
|
|
|
|
- if _panic := recover(); _panic != nil {
|
|
|
|
|
- isOk = false
|
|
|
|
|
- }
|
|
|
|
|
- }()
|
|
|
|
|
- lstMine = сам.Сеть().ВебВоркер().Получ("https://wartank.ru/buildings")
|
|
|
|
|
- return isOk
|
|
|
|
|
- }
|
|
|
|
|
- if !фнЗабрать() {
|
|
|
|
|
- return false, nil
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
|
|
+ lstMine := сам.Сеть().ВебВоркер().Получ("https://wartank.ru/buildings")
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
|
Режим (руда-1):
|
|
Режим (руда-1):
|
|
@@ -246,56 +174,6 @@ func (сам *АренаШахта) количествоПолучить() (bool
|
|
|
return true, nil
|
|
return true, nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// Проверяет на забор из шахты
|
|
|
|
|
-func (сам *АренаШахта) шахтаЗабрать() bool {
|
|
|
|
|
- сам.лог.Добавить("Шахта.шахтаЗабрать()\n")
|
|
|
|
|
- var (
|
|
|
|
|
- strOut string
|
|
|
|
|
- еслиНайдено bool
|
|
|
|
|
- списШахта []string
|
|
|
|
|
- )
|
|
|
|
|
- фнЗабрать := func() (isOk bool) { // Здесь бывают задержки из-за того, что эта часть работает неправильно
|
|
|
|
|
- isOk = true
|
|
|
|
|
- defer func() {
|
|
|
|
|
- if _panic := recover(); _panic != nil {
|
|
|
|
|
- isOk = false
|
|
|
|
|
- }
|
|
|
|
|
- }()
|
|
|
|
|
- списШахта = сам.Сеть().ВебВоркер().Получ("https://wartank.ru/buildings")
|
|
|
|
|
- return isOk
|
|
|
|
|
- }
|
|
|
|
|
- if !фнЗабрать() {
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- // <a class="simple-but border" href="buildings?35-1.ILinkListener-buildings-0-building-rootBlock-actionPanel-takeProductionLink"><span><span>Забрать</span></span></a>
|
|
|
|
|
- for _, strOut = range списШахта {
|
|
|
|
|
- if strings.Contains(strOut, `.ILinkListener-buildings-0-building-rootBlock-actionPanel-takeProductionLink`) {
|
|
|
|
|
- еслиНайдено = true
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- if !еслиНайдено {
|
|
|
|
|
- сам.лог.Добавить("Шахта.шахтаЗабрать(): не надо\n")
|
|
|
|
|
- return true
|
|
|
|
|
- }
|
|
|
|
|
- _ссылка := strings.TrimPrefix(strOut, `<a class="simple-but border" href="`)
|
|
|
|
|
- _ссылка = strings.TrimSuffix(_ссылка, `"><span><span>Забрать</span></span></a>`)
|
|
|
|
|
- ссылка := "https://wartank.ru/" + _ссылка
|
|
|
|
|
- // http://wartank.ru/buildings?5-1.ILinkListener-buildings-0-building-rootBlock-actionPanel-takeProductionLink
|
|
|
|
|
- lstBase1 := сам.Сеть().ВебВоркер().Получ(ссылка)
|
|
|
|
|
- сам.СтрОбновить(lstBase1)
|
|
|
|
|
- сам.лог.Добавить("Шахта.шахтаЗабрать(): ОК\n")
|
|
|
|
|
- сост := сам.Состояние().Получ()
|
|
|
|
|
- if сост == cons.РежимНеСуществует {
|
|
|
|
|
- сам.Состояние().Уст(cons.РежимПостроено)
|
|
|
|
|
- }
|
|
|
|
|
- if сам.Состояние().Получ() == cons.РежимРабота {
|
|
|
|
|
- сам.Состояние().Уст(cons.РежимЗабрать)
|
|
|
|
|
- }
|
|
|
|
|
- сам.Состояние().Уст(cons.РежимОжидание)
|
|
|
|
|
- return true
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
// // Проверяет ускорение строительства FIXME: не работает
|
|
// // Проверяет ускорение строительства FIXME: не работает
|
|
|
// func (сам *АренаШахта) ускорениеПровер() {
|
|
// func (сам *АренаШахта) ускорениеПровер() {
|
|
|
// сам.лог.Добавить("")
|
|
// сам.лог.Добавить("")
|
|
@@ -321,20 +199,7 @@ func (сам *АренаШахта) шахтаЗабрать() bool {
|
|
|
// Обновляет текущий уровень шахты (может быть не построена)
|
|
// Обновляет текущий уровень шахты (может быть не построена)
|
|
|
func (сам *АренаШахта) уровеньОбновить() bool {
|
|
func (сам *АренаШахта) уровеньОбновить() bool {
|
|
|
сам.лог.Добавить("Шахта.уровеньОбновить()\n")
|
|
сам.лог.Добавить("Шахта.уровеньОбновить()\n")
|
|
|
- var списСтр []string
|
|
|
|
|
- фнУровень := func() (isOk bool) { // Здесь бывают задержки из-за того, что эта часть работает неправильно
|
|
|
|
|
- isOk = true
|
|
|
|
|
- defer func() {
|
|
|
|
|
- if _panic := recover(); _panic != nil {
|
|
|
|
|
- isOk = false
|
|
|
|
|
- }
|
|
|
|
|
- }()
|
|
|
|
|
- списСтр = сам.Сеть().ВебВоркер().Получ("http://wartank.ru/buildings")
|
|
|
|
|
- return isOk
|
|
|
|
|
- }
|
|
|
|
|
- if !фнУровень() {
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ списСтр := сам.Сеть().ВебВоркер().Получ("http://wartank.ru/buildings")
|
|
|
|
|
|
|
|
// <span class="green2">Шахта - 0</span><br/>
|
|
// <span class="green2">Шахта - 0</span><br/>
|
|
|
var (
|
|
var (
|
|
@@ -365,34 +230,7 @@ func (сам *АренаШахта) уровеньОбновить() bool {
|
|
|
|
|
|
|
|
// Сделать -- вызывается с базы, если она обнаружила, что пора сделать продукцию
|
|
// Сделать -- вызывается с базы, если она обнаружила, что пора сделать продукцию
|
|
|
func (сам *АренаШахта) Сделать() {
|
|
func (сам *АренаШахта) Сделать() {
|
|
|
- еслиПостроено := сам.Состояние().Получ() == cons.РежимПостроено
|
|
|
|
|
- еслиОжидание := сам.Состояние().Получ() == cons.РежимОжидание
|
|
|
|
|
- if !(еслиПостроено || еслиОжидание) {
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- сам.Сеть().Обновить()
|
|
|
|
|
- if err := сам.выбратьМеталл(); err != nil {
|
|
|
|
|
- сам.лог.Добавить("ERRO Шахта.Сделать(): при выборе продукции, err=\n\t%v\n", err)
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- продукт := сам.ПродуктСейчас().Имя()
|
|
|
|
|
- switch продукт {
|
|
|
|
|
- case "руда":
|
|
|
|
|
- for !сам.рудаСделать() {
|
|
|
|
|
- }
|
|
|
|
|
- case "железо":
|
|
|
|
|
- for !сам.железоСделать() {
|
|
|
|
|
- }
|
|
|
|
|
- case "сталь":
|
|
|
|
|
- for !сам.стальСделать() {
|
|
|
|
|
- }
|
|
|
|
|
- case "свинец":
|
|
|
|
|
- for !сам.свинецСделать() {
|
|
|
|
|
- }
|
|
|
|
|
- default:
|
|
|
|
|
- сам.лог.Добавить("ERRO Шахта.Сделать(): неизвестный режим производства, режим=%q\n", продукт)
|
|
|
|
|
- }
|
|
|
|
|
- сам.Состояние().Уст(cons.РежимРабота)
|
|
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Свинец -- возвращает объект свинца
|
|
// Свинец -- возвращает объект свинца
|
|
@@ -414,298 +252,3 @@ func (сам *АренаШахта) Железо() ИСтатПарам {
|
|
|
func (сам *АренаШахта) Руда() ИСтатПарам {
|
|
func (сам *АренаШахта) Руда() ИСтатПарам {
|
|
|
return сам.руда
|
|
return сам.руда
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-// Выбирает продукцию по возможности произвести и её количеству
|
|
|
|
|
-func (сам *АренаШахта) выбратьМеталл() error {
|
|
|
|
|
- var (
|
|
|
|
|
- диктПродукция = make(map[string]bool) // Словарь известной продукции
|
|
|
|
|
- lstMine = сам.СписПолучить()
|
|
|
|
|
- )
|
|
|
|
|
-
|
|
|
|
|
- фнВыбратьПродукт := func() { // вычисляет список допустимой продукции
|
|
|
|
|
- диктПродукция["руда"] = true // Руда есть всегда
|
|
|
|
|
- диктПродукция["железо"] = false
|
|
|
|
|
- диктПродукция["сталь"] = false
|
|
|
|
|
- диктПродукция["свинец"] = false
|
|
|
|
|
- for _, strProd := range lstMine { // Проверить руду
|
|
|
|
|
- if strings.Contains(strProd, `<span class="green2">Руда</span><br/>`) {
|
|
|
|
|
- диктПродукция["руда"] = true
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- for _, strProd := range lstMine { // Проверить руду
|
|
|
|
|
- if strings.Contains(strProd, `<span class="green2">Железо</span><br/>`) {
|
|
|
|
|
- диктПродукция["железо"] = true
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- for _, strProd := range lstMine { // Проверить сталь
|
|
|
|
|
- if strings.Contains(strProd, `<span class="green2">Сталь</span><br/>`) {
|
|
|
|
|
- диктПродукция["сталь"] = true
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- for _, strProd := range lstMine { // Проверить свинец
|
|
|
|
|
- if strings.Contains(strProd, `<span class="green2">Свинец</span><br/>`) {
|
|
|
|
|
- диктПродукция["свинец"] = true
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- фнВыбратьПродукт()
|
|
|
|
|
- сам.ПродуктСейчас().ИмяУст("руда")
|
|
|
|
|
- руда := сам.Руда().Получ()
|
|
|
|
|
- железо := сам.Железо().Получ()
|
|
|
|
|
- if диктПродукция["железо"] {
|
|
|
|
|
- if руда > железо*2 {
|
|
|
|
|
- сам.ПродуктСейчас().ИмяУст("железо")
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- сталь := сам.Сталь().Получ()
|
|
|
|
|
- if диктПродукция["сталь"] {
|
|
|
|
|
- if железо > сталь*2 {
|
|
|
|
|
- сам.ПродуктСейчас().ИмяУст("сталь")
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- свинец := сам.Свинец().Получ()
|
|
|
|
|
- if диктПродукция["свинец"] {
|
|
|
|
|
- if сталь > свинец*2 {
|
|
|
|
|
- сам.ПродуктСейчас().ИмяУст("свинец")
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- return nil
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// Создаёт руду
|
|
|
|
|
-func (сам *АренаШахта) рудаСделать() bool {
|
|
|
|
|
- time.Sleep(time.Millisecond * 55)
|
|
|
|
|
- lstMine, err := сам.Сеть().Get("https://wartank.ru/production/Mine")
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- // log._rintf("ERRO Шахта.сделатьРуду(): при GET-команде 'начать производство руды', err=\n\t%v\n", err)
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- var (
|
|
|
|
|
- инд int
|
|
|
|
|
- стрВых string
|
|
|
|
|
- // strTime string
|
|
|
|
|
- strLink string
|
|
|
|
|
- strNum string
|
|
|
|
|
- еслиНайдено bool
|
|
|
|
|
- )
|
|
|
|
|
- for инд, стрВых = range lstMine {
|
|
|
|
|
- if strings.Contains(стрВых, `<span class="green2">Руда</span><br/>`) { // <span class="green2">Руда</span><br/>
|
|
|
|
|
- strNum = lstMine[инд+1]
|
|
|
|
|
- // strTime = lstMine[инд+3]
|
|
|
|
|
- strLink = lstMine[инд+10]
|
|
|
|
|
- еслиНайдено = true
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- if !еслиНайдено {
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- if !strings.Contains(strLink, `>Начать производство<`) {
|
|
|
|
|
- return true
|
|
|
|
|
- }
|
|
|
|
|
- // "Mine?16-1.ILinkListener-productions-0-production-startProduceLink\"><span><span>Начать производство</span></span></a>"
|
|
|
|
|
- // "<a class=\"simple-but border\" href=\"Mine?16-1.ILinkListener-productions-0-production-startProduceLink\"><span><span>Начать производство</span></span></a>"
|
|
|
|
|
- _link := strings.TrimPrefix(strLink, `<a class="simple-but border" href="`)
|
|
|
|
|
- _link = strings.TrimSuffix(_link, "\"><span><span>Начать производство</span></span></a>")
|
|
|
|
|
- strLink = "https://wartank.ru/production/" + _link
|
|
|
|
|
- // https://wartank.ru/production/Mine?19-1.ILinkListener-productions-0-production-startProduceLink
|
|
|
|
|
- time.Sleep(time.Millisecond * 55)
|
|
|
|
|
- lstMine, err = сам.Сеть().Get(strLink)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- // log._rintf("ERRO Шахта.сделатьРуду(): при GET-команде 'начать производство руды', err=\n\t%v\n", err)
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- for _, стрВых = range lstMine {
|
|
|
|
|
- if strings.Contains(стрВых, `><span><span>Начать производство</span></span></a>`) {
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- // сам.СтрОбновить(lstMine)
|
|
|
|
|
- //сам.ОбратВремяУст(АВремя(strTime))
|
|
|
|
|
- lstNum := strings.Split(strNum, `Кол-во: <span class="green2">`)
|
|
|
|
|
- strNum = lstNum[1]
|
|
|
|
|
- lstNum = strings.Split(strNum, `</span><br/>`)
|
|
|
|
|
- strNum = lstNum[0]
|
|
|
|
|
- iNum, err := strconv.Atoi(strNum)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- // log._rintf("ERRO Шахта.сделатьРуду(): кол-во(%v) не число, err=\n\t%v\n", strNum, err)
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- сам.ПродуктСейчас().Уст(iNum)
|
|
|
|
|
- сам.ПродуктСейчас().ИмяУст("руда")
|
|
|
|
|
- return true
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// Создаёт железо
|
|
|
|
|
-func (сам *АренаШахта) железоСделать() bool {
|
|
|
|
|
- var (
|
|
|
|
|
- lstMine = сам.СписПолучить()
|
|
|
|
|
- ind int
|
|
|
|
|
- strOut string
|
|
|
|
|
- // strTime string
|
|
|
|
|
- strLink string
|
|
|
|
|
- strNum string
|
|
|
|
|
- еслиНайдено bool
|
|
|
|
|
- )
|
|
|
|
|
- for ind, strOut = range lstMine {
|
|
|
|
|
- if strings.Contains(strOut, `<span class="green2">Железо</span><br/>`) {
|
|
|
|
|
- // <span class="green2">Железо</span><br/>
|
|
|
|
|
- strNum = lstMine[ind+1]
|
|
|
|
|
- // Кол-во: <span class="green2">1</span><br/>
|
|
|
|
|
- // strTime = lstMine[ind+3]
|
|
|
|
|
- // <a class="simple-but border" href="Mine?4-1.ILinkListener-productions-1-production-startProduceLink"><span><span>Начать производство</span></span></a>
|
|
|
|
|
- strLink = lstMine[ind+10]
|
|
|
|
|
- еслиНайдено = true
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- if !еслиНайдено {
|
|
|
|
|
- return true
|
|
|
|
|
- }
|
|
|
|
|
- lstLink := strings.Split(strLink, `<a class="simple-but border" href="`)
|
|
|
|
|
- strLink = lstLink[1]
|
|
|
|
|
- lstLink = strings.Split(strLink, `"><span><span>Начать производство</span></span></a>`)
|
|
|
|
|
- strLink = "https://wartank.ru/production/" + lstLink[0]
|
|
|
|
|
- // https://wartank.ru/production/Mine?4-1.ILinkListener-productions-1-production-startProduceLink
|
|
|
|
|
- lstMine, err := сам.Сеть().Get(strLink)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- // log._rintf("ERRO MineNet.makeFerrum(): при GET-команде 'начать производство железа', err=\n\t%v\n", err)
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- for _, strOut := range lstMine { // Проверка на базу
|
|
|
|
|
- if strings.Contains(strOut, `<title>База</title>`) {
|
|
|
|
|
- // log._rintf("ERRO MineNet.makeFerrum(): при обновлении lstMine найден lstBase")
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- сам.СтрОбновить(lstMine)
|
|
|
|
|
- // сам.ОбратВремяУст(АВремя(strTime))
|
|
|
|
|
- lstNum := strings.Split(strNum, `Кол-во: <span class="green2">`)
|
|
|
|
|
- strNum = lstNum[1]
|
|
|
|
|
- lstNum = strings.Split(strNum, `</span><br/>`)
|
|
|
|
|
- strNum = lstNum[0]
|
|
|
|
|
- iNum, err := strconv.Atoi(strNum)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- // log._rintf("ERRO MineNet.makeFerrum(): кол-во(%v) не число, err=\n\t%v\n", strNum, err)
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- сам.ПродуктСейчас().Уст(iNum)
|
|
|
|
|
- сам.ПродуктСейчас().ИмяУст("железо")
|
|
|
|
|
- return true
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// Создаёт сталь
|
|
|
|
|
-func (сам *АренаШахта) стальСделать() bool {
|
|
|
|
|
- var (
|
|
|
|
|
- lstMine = сам.СписПолучить()
|
|
|
|
|
- ind int
|
|
|
|
|
- strOut string
|
|
|
|
|
- // strTime string
|
|
|
|
|
- strLink string
|
|
|
|
|
- strNum string
|
|
|
|
|
- еслиНайдено bool
|
|
|
|
|
- )
|
|
|
|
|
- for ind, strOut = range lstMine {
|
|
|
|
|
- if strings.Contains(strOut, `<span class="green2">Сталь</span><br/>`) {
|
|
|
|
|
- strNum = lstMine[ind+1]
|
|
|
|
|
- // strTime = lstMine[ind+3]
|
|
|
|
|
- strLink = lstMine[ind+10]
|
|
|
|
|
- еслиНайдено = true
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- if !еслиНайдено {
|
|
|
|
|
- return true
|
|
|
|
|
- }
|
|
|
|
|
- lstLink := strings.Split(strLink, `<a class="simple-but border" href="`)
|
|
|
|
|
- strLink = lstLink[1]
|
|
|
|
|
- lstLink = strings.Split(strLink, `"><span><span>Начать производство</span></span></a>`)
|
|
|
|
|
- strLink = "https://wartank.ru/production/" + lstLink[0]
|
|
|
|
|
- time.Sleep(time.Millisecond * 55)
|
|
|
|
|
- lstMine, err := сам.Сеть().Get(strLink)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- // log._rintf("ERRO MineNet.makeSteel(): при GET-команде 'начать производство стали', err=\n\t%v\n", err)
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- for _, strOut := range lstMine { // Проверка на базу
|
|
|
|
|
- if strings.Contains(strOut, `<title>База</title>`) {
|
|
|
|
|
- // log._rintf("ERRO MineNet.makeSteel(): при обновлении lstMine найден lstBase")
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- сам.СтрОбновить(lstMine)
|
|
|
|
|
- // сам.ОбратВремяУст(АВремя(strTime))
|
|
|
|
|
- lstNum := strings.Split(strNum, `Кол-во: <span class="green2">`)
|
|
|
|
|
- strNum = lstNum[1]
|
|
|
|
|
- lstNum = strings.Split(strNum, `</span><br/>`)
|
|
|
|
|
- strNum = lstNum[0]
|
|
|
|
|
- iNum, err := strconv.Atoi(strNum)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- // log._rintf("ERRO MineNet.makeSteel(): кол-во(%v) не число, err=\n\t%v\n", strNum, err)
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- сам.ПродуктСейчас().Уст(iNum)
|
|
|
|
|
- сам.ПродуктСейчас().ИмяУст("сталь")
|
|
|
|
|
- return true
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// Создаёт свинец
|
|
|
|
|
-func (сам *АренаШахта) свинецСделать() bool {
|
|
|
|
|
- var (
|
|
|
|
|
- lstMine = сам.СписПолучить()
|
|
|
|
|
- ind int
|
|
|
|
|
- strOut string
|
|
|
|
|
- // strTime string
|
|
|
|
|
- strLink string
|
|
|
|
|
- strNum string
|
|
|
|
|
- еслиНайдено bool
|
|
|
|
|
- )
|
|
|
|
|
- for ind, strOut = range lstMine {
|
|
|
|
|
- if strings.Contains(strOut, `<span class="green2">Свинец</span><br/>`) {
|
|
|
|
|
- strNum = lstMine[ind+1]
|
|
|
|
|
- // strTime = lstMine[ind+3]
|
|
|
|
|
- strLink = lstMine[ind+10]
|
|
|
|
|
- еслиНайдено = true
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- if !еслиНайдено {
|
|
|
|
|
- return true
|
|
|
|
|
- }
|
|
|
|
|
- lstLink := strings.Split(strLink, `<a class="simple-but border" href="`)
|
|
|
|
|
- strLink = lstLink[1]
|
|
|
|
|
- lstLink = strings.Split(strLink, `"><span><span>Начать производство</span></span></a>`)
|
|
|
|
|
- strLink = "https://wartank.ru/production/" + lstLink[0]
|
|
|
|
|
- time.Sleep(time.Millisecond * 55)
|
|
|
|
|
- lstMine, err := сам.Сеть().Get(strLink)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- // log._rintf("ERRO Шахта.сделатьСвинец(): при GET-команде 'начать производство стали', err=\n\t%v\n", err)
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- for _, strOut := range lstMine { // Проверка на базу
|
|
|
|
|
- if strings.Contains(strOut, `<title>База</title>`) {
|
|
|
|
|
- // log._rintf("ERRO Шахта.сделатьСвинец(): при обновлении lstMine найден lstBase")
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- сам.СтрОбновить(lstMine)
|
|
|
|
|
- // сам.ОбратВремяУст(АВремя(strTime))
|
|
|
|
|
- lstNum := strings.Split(strNum, `Кол-во: <span class="green2">`)
|
|
|
|
|
- strNum = lstNum[1]
|
|
|
|
|
- lstNum = strings.Split(strNum, `</span><br/>`)
|
|
|
|
|
- strNum = lstNum[0]
|
|
|
|
|
- iNum, err := strconv.Atoi(strNum)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- // log._rintf("ERRO Шахта.сделатьСвинец(): кол-во(%v) не число, err=\n\t%v\n", strNum, err)
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- сам.ПродуктСейчас().Уст(iNum)
|
|
|
|
|
- сам.ПродуктСейчас().ИмяУст("свинец")
|
|
|
|
|
- return true
|
|
|
|
|
-}
|
|
|