|
|
@@ -99,6 +99,7 @@ func (сам *Шахта) Пуск() error {
|
|
|
func (сам *Шахта) пуск() {
|
|
|
time.Sleep(time.Second * 3)
|
|
|
фнРабота := func() {
|
|
|
+ defer time.Sleep(time.Minute * 5)
|
|
|
сам.шахтаЗабрать()
|
|
|
сам.уровеньОбновить()
|
|
|
сам.Сделать()
|
|
|
@@ -112,11 +113,9 @@ func (сам *Шахта) пуск() {
|
|
|
case <-сам.кнт.Done():
|
|
|
return
|
|
|
case <-сам.ВремяОстат().КаналСиг():
|
|
|
-
|
|
|
default:
|
|
|
log.Printf("Шахта.пуск()\n")
|
|
|
фнРабота()
|
|
|
- time.Sleep(time.Minute * 5)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -340,13 +339,17 @@ func (сам *Шахта) Сделать() {
|
|
|
работа := сам.СценаРежим().Работа()
|
|
|
switch работа {
|
|
|
case "руда":
|
|
|
- сам.рудаСделать()
|
|
|
+ for !сам.рудаСделать() {
|
|
|
+ }
|
|
|
case "железо":
|
|
|
- сам.железоСделать()
|
|
|
+ for !сам.железоСделать() {
|
|
|
+ }
|
|
|
case "сталь":
|
|
|
- сам.стальСделать()
|
|
|
+ for !сам.стальСделать() {
|
|
|
+ }
|
|
|
case "свинец":
|
|
|
- сам.свинецСделать()
|
|
|
+ for !сам.свинецСделать() {
|
|
|
+ }
|
|
|
default:
|
|
|
log.Printf("ERRO Шахта.Сделать(): неизвестный режим производства, режим=%q\n", работа)
|
|
|
}
|
|
|
@@ -454,51 +457,57 @@ func (сам *Шахта) выбратьМеталл() error {
|
|
|
}
|
|
|
|
|
|
// Создаёт руду
|
|
|
-func (сам *Шахта) рудаСделать() {
|
|
|
+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 (
|
|
|
- lstMine = сам.СписПолучить()
|
|
|
- ind int
|
|
|
- strOut string
|
|
|
+ инд int
|
|
|
+ стрВых 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]
|
|
|
+ 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
|
|
|
+ return false
|
|
|
}
|
|
|
if !strings.Contains(strLink, `>Начать производство<`) {
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
// "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
|
|
|
- lstMine, err := сам.сеть.Get(strLink)
|
|
|
+ // 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
|
|
|
+ return false
|
|
|
}
|
|
|
еслиНайдено = false
|
|
|
- for _, strOut = range lstMine {
|
|
|
- if strings.Contains(strOut, `<title>База</title>`) {
|
|
|
- // log._rintf("WARN Шахта.сделатьРуду(): при обновлении lstMine обнаружено lstBase\n")
|
|
|
- return
|
|
|
+ for инд, стрВых = range lstMine {
|
|
|
+ if strings.Contains(стрВых, `><span><span>Начать производство</span></span></a>`) {
|
|
|
+ return false
|
|
|
}
|
|
|
}
|
|
|
if err = сам.СтрОбновить(lstMine); err != nil {
|
|
|
// log._rintf("ERRO Шахта.сделатьРуду(): при обновлении lstMine, err=\n\t%v\n", err)
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
if err := сам.Уст(alias.Время(strTime)); err != nil {
|
|
|
log.Printf("ERRO Шахта.сделатьРуду(): при установке времени ожидания добычи руды(%v)\n\terr=%v\n", strTime, err)
|
|
|
@@ -510,13 +519,14 @@ func (сам *Шахта) рудаСделать() {
|
|
|
iNum, err := strconv.Atoi(strNum)
|
|
|
if err != nil {
|
|
|
// log._rintf("ERRO Шахта.сделатьРуду(): кол-во(%v) не число, err=\n\t%v\n", strNum, err)
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
сам.продуктКол.Уст(iNum)
|
|
|
+ return true
|
|
|
}
|
|
|
|
|
|
// Создаёт железо
|
|
|
-func (сам *Шахта) железоСделать() {
|
|
|
+func (сам *Шахта) железоСделать() bool {
|
|
|
var (
|
|
|
lstMine = сам.СписПолучить()
|
|
|
ind int
|
|
|
@@ -536,29 +546,30 @@ func (сам *Шахта) железоСделать() {
|
|
|
}
|
|
|
}
|
|
|
if !еслиНайдено {
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
if !strings.Contains(strLink, `>Начать производство<`) {
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
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.makeFerrum(): при GET-команде 'начать производство железа', err=\n\t%v\n", err)
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
for _, strOut := range lstMine { // Проверка на базу
|
|
|
if strings.Contains(strOut, `<title>База</title>`) {
|
|
|
// log._rintf("ERRO MineNet.makeFerrum(): при обновлении lstMine найден lstBase")
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
}
|
|
|
if err = сам.СтрОбновить(lstMine); err != nil {
|
|
|
// log._rintf("ERRO MineNet.makeFerrum(): при обновлении lstMine, err=\n\t%v\n", err)
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
if err := сам.Уст(alias.Время(strTime)); err != nil {
|
|
|
log.Printf("ERRO Mine.makeFerrum(): при установке времени производства железа(%v)\n\terr=%v\n", strTime, err)
|
|
|
@@ -570,13 +581,14 @@ func (сам *Шахта) железоСделать() {
|
|
|
iNum, err := strconv.Atoi(strNum)
|
|
|
if err != nil {
|
|
|
// log._rintf("ERRO MineNet.makeFerrum(): кол-во(%v) не число, err=\n\t%v\n", strNum, err)
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
сам.продуктКол.Уст(iNum)
|
|
|
+ return true
|
|
|
}
|
|
|
|
|
|
// Создаёт сталь
|
|
|
-func (сам *Шахта) стальСделать() {
|
|
|
+func (сам *Шахта) стальСделать() bool {
|
|
|
var (
|
|
|
lstMine = сам.СписПолучить()
|
|
|
ind int
|
|
|
@@ -596,29 +608,30 @@ func (сам *Шахта) стальСделать() {
|
|
|
}
|
|
|
}
|
|
|
if !еслиНайдено {
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
if !strings.Contains(strLink, `>Начать производство<`) {
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
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
|
|
|
+ return false
|
|
|
}
|
|
|
for _, strOut := range lstMine { // Проверка на базу
|
|
|
if strings.Contains(strOut, `<title>База</title>`) {
|
|
|
// log._rintf("ERRO MineNet.makeSteel(): при обновлении lstMine найден lstBase")
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
}
|
|
|
if err = сам.СтрОбновить(lstMine); err != nil {
|
|
|
// log._rintf("ERRO MineNet.makeSteel(): при обновлении lstMine, err=\n\t%v\n", err)
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
if err := сам.Уст(alias.Время(strTime)); err != nil {
|
|
|
log.Printf("ERRO Mine.makeSteel(): при установке времени производства железа(%v)\n\terr=%v\n", strTime, err)
|
|
|
@@ -630,13 +643,14 @@ func (сам *Шахта) стальСделать() {
|
|
|
iNum, err := strconv.Atoi(strNum)
|
|
|
if err != nil {
|
|
|
// log._rintf("ERRO MineNet.makeSteel(): кол-во(%v) не число, err=\n\t%v\n", strNum, err)
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
сам.продуктКол.Уст(iNum)
|
|
|
+ return true
|
|
|
}
|
|
|
|
|
|
// Создаёт свинец
|
|
|
-func (сам *Шахта) свинецСделать() {
|
|
|
+func (сам *Шахта) свинецСделать() bool {
|
|
|
var (
|
|
|
lstMine = сам.СписПолучить()
|
|
|
ind int
|
|
|
@@ -656,29 +670,30 @@ func (сам *Шахта) свинецСделать() {
|
|
|
}
|
|
|
}
|
|
|
if !еслиНайдено {
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
if !strings.Contains(strLink, `>Начать производство<`) {
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
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
|
|
|
+ return false
|
|
|
}
|
|
|
for _, strOut := range lstMine { // Проверка на базу
|
|
|
if strings.Contains(strOut, `<title>База</title>`) {
|
|
|
// log._rintf("ERRO Шахта.сделатьСвинец(): при обновлении lstMine найден lstBase")
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
}
|
|
|
if err = сам.СтрОбновить(lstMine); err != nil {
|
|
|
// log._rintf("ERRO Шахта.сделатьСвинец(): при обновлении lstMine, err=\n\t%v\n", err)
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
if err := сам.Уст(alias.Время(strTime)); err != nil {
|
|
|
log.Printf("ERRO Шахта.сделатьСвинец(): при установке времени производства железа(%v)\n\terr=%v\n", strTime, err)
|
|
|
@@ -690,7 +705,8 @@ func (сам *Шахта) свинецСделать() {
|
|
|
iNum, err := strconv.Atoi(strNum)
|
|
|
if err != nil {
|
|
|
// log._rintf("ERRO Шахта.сделатьСвинец(): кол-во(%v) не число, err=\n\t%v\n", strNum, err)
|
|
|
- return
|
|
|
+ return false
|
|
|
}
|
|
|
сам.продуктКол.Уст(iNum)
|
|
|
+ return true
|
|
|
}
|