|
@@ -100,11 +100,22 @@ func (сам *Шахта) пуск() {
|
|
|
time.Sleep(time.Second * 3)
|
|
time.Sleep(time.Second * 3)
|
|
|
фнРабота := func() {
|
|
фнРабота := func() {
|
|
|
defer time.Sleep(time.Minute * 5)
|
|
defer time.Sleep(time.Minute * 5)
|
|
|
- for !сам.шахтаЗабрать() {
|
|
|
|
|
|
|
+ счёт := 5
|
|
|
|
|
+ for счёт > 0 {
|
|
|
|
|
+ if сам.шахтаЗабрать() {
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+ счёт--
|
|
|
}
|
|
}
|
|
|
сам.уровеньОбновить()
|
|
сам.уровеньОбновить()
|
|
|
- сам.Сделать()
|
|
|
|
|
сам.ускорениеПровер()
|
|
сам.ускорениеПровер()
|
|
|
|
|
+ счёт = 5
|
|
|
|
|
+ for счёт > 0 {
|
|
|
|
|
+ if сам.проапгрейдить() {
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+ счёт--
|
|
|
|
|
+ }
|
|
|
сам.количествоПолучить()
|
|
сам.количествоПолучить()
|
|
|
сам.бот.Ангар().РесурсыОбновить()
|
|
сам.бот.Ангар().РесурсыОбновить()
|
|
|
сам.Сделать()
|
|
сам.Сделать()
|
|
@@ -271,15 +282,29 @@ func (сам *Шахта) уровеньОбновить() bool {
|
|
|
return false
|
|
return false
|
|
|
}
|
|
}
|
|
|
сам.уровень.Уст(иУровень)
|
|
сам.уровень.Уст(иУровень)
|
|
|
- if иУровень == 0 { // шахту надо построить
|
|
|
|
|
- сам.построить(списСтр)
|
|
|
|
|
- return false
|
|
|
|
|
|
|
+ switch иУровень {
|
|
|
|
|
+ case 0: // шахту надо построить
|
|
|
|
|
+ счёт := 5
|
|
|
|
|
+ for счёт > 0 {
|
|
|
|
|
+ if сам.построить(списСтр) {
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+ счёт--
|
|
|
|
|
+ }
|
|
|
|
|
+ default: // Пробуем проапгрейдить
|
|
|
|
|
+ счёт := 5
|
|
|
|
|
+ for счёт > 0 {
|
|
|
|
|
+ if сам.проапгрейдить() {
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+ счёт--
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
return true
|
|
return true
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Строит шахту при нулевом уровне
|
|
// Строит шахту при нулевом уровне
|
|
|
-func (сам *Шахта) построить(списСтр []string) {
|
|
|
|
|
|
|
+func (сам *Шахта) построить(списСтр []string) bool {
|
|
|
// <td style="width:50%;padding-left:1px;"><a class="simple-but border mb5" href="building-upgrade/Mine"><span><span>Построить</span></span></a></td>
|
|
// <td style="width:50%;padding-left:1px;"><a class="simple-but border mb5" href="building-upgrade/Mine"><span><span>Построить</span></span></a></td>
|
|
|
var (
|
|
var (
|
|
|
еслиНайти = false
|
|
еслиНайти = false
|
|
@@ -292,7 +317,7 @@ func (сам *Шахта) построить(списСтр []string) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
if !еслиНайти {
|
|
if !еслиНайти {
|
|
|
- return
|
|
|
|
|
|
|
+ return true
|
|
|
}
|
|
}
|
|
|
// Пробуем построить шахту
|
|
// Пробуем построить шахту
|
|
|
_стр := strings.TrimPrefix(стр, `<td style="width:50%;padding-left:1px;"><a class="simple-but border mb5" href="`)
|
|
_стр := strings.TrimPrefix(стр, `<td style="width:50%;padding-left:1px;"><a class="simple-but border mb5" href="`)
|
|
@@ -301,7 +326,7 @@ func (сам *Шахта) построить(списСтр []string) {
|
|
|
списСтр, ош := сам.сеть.Клиент().Get(ссылка)
|
|
списСтр, ош := сам.сеть.Клиент().Get(ссылка)
|
|
|
if ош != nil {
|
|
if ош != nil {
|
|
|
log.Printf("ERRO Шахта.построить(): при GET-команде 'построить шахту', err=\n\t%v\n", ош)
|
|
log.Printf("ERRO Шахта.построить(): при GET-команде 'построить шахту', err=\n\t%v\n", ош)
|
|
|
- return
|
|
|
|
|
|
|
+ return false
|
|
|
}
|
|
}
|
|
|
еслиНайти = false
|
|
еслиНайти = false
|
|
|
// "<a class=\"simple-but border mb5\" href=\"Mine?14-1.ILinkListener-upgradeLink-link\">"
|
|
// "<a class=\"simple-but border mb5\" href=\"Mine?14-1.ILinkListener-upgradeLink-link\">"
|
|
@@ -312,7 +337,7 @@ func (сам *Шахта) построить(списСтр []string) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
if !еслиНайти {
|
|
if !еслиНайти {
|
|
|
- return
|
|
|
|
|
|
|
+ return true
|
|
|
}
|
|
}
|
|
|
_стр = strings.TrimPrefix(стр, "<a class=\"simple-but border mb5\" href=\"")
|
|
_стр = strings.TrimPrefix(стр, "<a class=\"simple-but border mb5\" href=\"")
|
|
|
_стр = strings.TrimSuffix(_стр, "\">")
|
|
_стр = strings.TrimSuffix(_стр, "\">")
|
|
@@ -321,8 +346,104 @@ func (сам *Шахта) построить(списСтр []string) {
|
|
|
_, ош = сам.сеть.Клиент().Get(ссылка)
|
|
_, ош = сам.сеть.Клиент().Get(ссылка)
|
|
|
if ош != nil {
|
|
if ош != nil {
|
|
|
log.Printf("ERRO Шахта.построить(): при GET-команде 'купить постройку шахты', err=\n\t%v\n", ош)
|
|
log.Printf("ERRO Шахта.построить(): при GET-команде 'купить постройку шахты', err=\n\t%v\n", ош)
|
|
|
- return
|
|
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+ return true
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Пытается проапгрейдить топливный склад
|
|
|
|
|
+func (сам *Шахта) проапгрейдить() bool {
|
|
|
|
|
+ time.Sleep(time.Millisecond * 1000)
|
|
|
|
|
+ var (
|
|
|
|
|
+ еслиНайти = false
|
|
|
|
|
+ списСтр []string
|
|
|
|
|
+ стр = ""
|
|
|
|
|
+ ош error
|
|
|
|
|
+ )
|
|
|
|
|
+ фнКупить := func() bool {
|
|
|
|
|
+ defer time.Sleep(time.Millisecond * 1000)
|
|
|
|
|
+ списСтр, ош = сам.сеть.Клиент().Get("https://wartank.ru/building-upgrade/Mine")
|
|
|
|
|
+ if ош != nil {
|
|
|
|
|
+ log.Printf("Шахта.проапгрейдить().фнКупить(): при GET-команде 'купить постройку склада топлива', err=\n\t%v\n", ош)
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+ for _, стр = range списСтр {
|
|
|
|
|
+ // <a class="simple-but border mb5" href="FuelStorage?5-1.ILinkListener-upgradeLink-link">
|
|
|
|
|
+ if strings.Contains(стр, `ILinkListener-upgradeLink-link`) {
|
|
|
|
|
+ еслиНайти = true
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if !еслиНайти {
|
|
|
|
|
+ return true
|
|
|
|
|
+ }
|
|
|
|
|
+ // Пробуем улучшить шахту
|
|
|
|
|
+ _стр := strings.TrimPrefix(стр, "<a class=\"simple-but border mb5\" href=\"")
|
|
|
|
|
+ _стр = strings.TrimSuffix(_стр, "\">")
|
|
|
|
|
+ // https://wartank.ru/building-upgrade/Mine?4-1.ILinkListener-upgradeLink-link
|
|
|
|
|
+ // <a class="simple-but border mb5" href="FuelStorage?50-1.ILinkListener-upgradeLink-link">
|
|
|
|
|
+ ссылка := "https://wartank.ru/building-upgrade/" + _стр
|
|
|
|
|
+ списСтр, ош = сам.сеть.Клиент().Get(ссылка)
|
|
|
|
|
+ if ош != nil {
|
|
|
|
|
+ log.Printf("Шахта.проапгрейдить().фнКупить(): при 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", ссылка, стр)
|
|
|
|
|
+ return false // Покупка не оплачена
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ log.Printf("+++++Шахта.проапгрейдить().фнКупить(): покупка склада топлива прошла\n")
|
|
|
|
|
+ return true
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ фнПодтверждение := func() bool {
|
|
|
|
|
+ for _, стр = range списСтр {
|
|
|
|
|
+ // <a class="simple-but border w50 mXa mb10" w:id="confirmLink" href="../wicket/page?7-1.ILinkListener-confirmLink"><span><span>да, подтверждаю</span></span></a>
|
|
|
|
|
+ if strings.Contains(стр, `ILinkListener-confirmLink`) {
|
|
|
|
|
+ еслиНайти = true
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if !еслиНайти {
|
|
|
|
|
+ return true
|
|
|
|
|
+ }
|
|
|
|
|
+ // Пробуем построить шахту
|
|
|
|
|
+ _стр := strings.TrimPrefix(стр, `<a class="simple-but border w50 mXa mb10" w:id="confirmLink" href="..`)
|
|
|
|
|
+ _стр = strings.TrimSuffix(_стр, `"><span><span>да, подтверждаю</span></span></a>`)
|
|
|
|
|
+ // https://wartank.ru/wicket/page?6-1.ILinkListener-confirmLink
|
|
|
|
|
+ ссылка := "https://wartank.ru" + _стр
|
|
|
|
|
+ списСтр, ош = сам.сеть.Клиент().Get(ссылка)
|
|
|
|
|
+ if ош != nil {
|
|
|
|
|
+ log.Printf("СкладТоплива.проапгрейдить().фнПодтверждение(): при GET-команде 'подтвердить постройку склада топлива', err=\n\t%v\n", ош)
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+ // Проверить, что постройка состоялась
|
|
|
|
|
+ for _, стр := range списСтр {
|
|
|
|
|
+ if strings.Contains(стр, "<title>Вы сделали слишком большую паузу</title>") {
|
|
|
|
|
+ log.Printf("СкладТоплива.проапгрейдить().фнПодтверждение(): подтверждение покупка склада топлива не прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
|
|
|
|
|
+ return false // Покупка не оплачена
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ log.Printf("+++++СкладТоплива.проапгрейдить().фнПодтверждение(): подтверждение покупка склада топлива прошла\n")
|
|
|
|
|
+ return true
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ фнКомплекс := func() {
|
|
|
|
|
+ count := 5
|
|
|
|
|
+ for count > 0 {
|
|
|
|
|
+ if фнКупить() {
|
|
|
|
|
+ if фнПодтверждение() {
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ count--
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ фнКомплекс()
|
|
|
|
|
+ return true
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Сделать -- вызывается с базы, если она обнаружила, что пора сделать продукцию
|
|
// Сделать -- вызывается с базы, если она обнаружила, что пора сделать продукцию
|