Преглед на файлове

d03 Исправления шахты

SVI преди 2 години
родител
ревизия
84ae21abc5

+ 9 - 9
server/serv_bots/warbot/angar/angar.go

@@ -140,7 +140,7 @@ func НовАнгар(bot types.ИБот) (*Ангар, error) {
 		}
 	}
 	{ // Миссии
-		сам.миссии, err = missions.NewMissions(сам.бот)
+		сам.миссии, err = missions.НовМиссии(сам.бот)
 		if err != nil {
 			return nil, fmt.Errorf("НовАнгар(): in make *Missions, err=\n\t%w", err)
 		}
@@ -158,22 +158,22 @@ func НовАнгар(bot types.ИБот) (*Ангар, error) {
 func (sf *Ангар) Пуск() error {
 	{ // Запуск компонентов
 		if err := sf.топливоБой.Пуск(); err != nil {
-			return fmt.Errorf("Angar.Run(): при пуске сетевой секции опыт за топливо, err=\n\t%w", err)
+			return fmt.Errorf("Ангар.Пуск(): при пуске сетевой секции опыт за топливо, err=\n\t%w", err)
 		}
 		if err := sf.конвой.Run(); err != nil {
-			return fmt.Errorf("Angar.Run(): при пуске конвоя, err=\n\t%w", err)
+			return fmt.Errorf("Ангар.Пуск(): при пуске конвоя, err=\n\t%w", err)
 		}
 		if err := sf.сражение.Пуск(); err != nil {
-			return fmt.Errorf("Angar.Run(): при пуске сражения, err=\n\t%w", err)
+			return fmt.Errorf("Ангар.Пуск(): при пуске сражения, err=\n\t%w", err)
 		}
 		if err := sf.битва.Run(); err != nil {
-			return fmt.Errorf("Angar.Run(): при пуске схватки, err=\n\t%w", err)
+			return fmt.Errorf("Ангар.Пуск(): при пуске схватки, err=\n\t%w", err)
 		}
 		if err := sf.база.Пуск(); err != nil {
-			return fmt.Errorf("Angar.Run(): при пуске базы, err=\n\t%w", err)
+			return fmt.Errorf("Ангар.Пуск(): при пуске базы, err=\n\t%w", err)
 		}
 		if err := sf.миссии.Пуск(); err != nil {
-			return fmt.Errorf("Angar.Run(): при пуске наград, err=\n\t%w", err)
+			return fmt.Errorf("Ангар.Пуск(): при пуске наград, err=\n\t%w", err)
 		}
 		go sf.топливо.Run()
 	}
@@ -183,7 +183,7 @@ func (sf *Ангар) Пуск() error {
 		sf.checkConvoy()
 		if err := sf.Section.SetCountDown(60); err != nil {
 			sf.Закончить()
-			logrus.WithError(err).Errorln("Angar.Run(): in update ICountTime")
+			logrus.WithError(err).Errorln("Ангар.Run(): in update ICountTime")
 			return false
 		}
 		return true
@@ -213,7 +213,7 @@ func (sf *Ангар) Пуск() error {
 // Обновляет ресурсы ангара
 func (sf *Ангар) РесурсыОбновить() {
 	if err := sf.сеть.UpdateLst(); err != nil {
-		// log._rintf("ERRO Angar.updateResurs(): при обработке ангара в сети, err=\n\t%v\n", err)
+		// log._rintf("ERRO Ангар.updateResurs(): при обработке ангара в сети, err=\n\t%v\n", err)
 		return
 	}
 	sf.золотоНайти()

+ 1 - 1
server/serv_bots/warbot/angar/base/base.go

@@ -285,7 +285,7 @@ func (sf *База) шахтаЗабрать() {
 		// log._rintf("ERRO Base.checkMineGet(): при обновлении lstMine, err=\n\t%v\n", err)
 		return
 	}
-	sf.шахта.SetCountDown(1)
+	sf.шахта.Сделать()
 }
 
 // Проверка статистики шахты

+ 2 - 2
server/serv_bots/warbot/angar/base/market/market.go

@@ -49,7 +49,7 @@ func (сам *Рынок) Пуск() error {
 
 // выполняет опрос рынка базы, должен работать как горутина
 func (сам *Рынок) пуск() {
-	сам.SetCountDown(25)
+	time.Sleep(time.Second * 25)
 	for {
 		select {
 		case <-сам.бот.Кнт().Done():
@@ -65,7 +65,7 @@ func (сам *Рынок) пуск() {
 		for сам.купитьЗолото() {
 
 		}
-		time.Sleep(time.Minute * 1)
+		time.Sleep(time.Minute * 10)
 	}
 }
 

+ 36 - 33
server/serv_bots/warbot/angar/base/mine/mine.go

@@ -89,41 +89,44 @@ func (сам *Шахта) пуск() {
 		case <-сам.ВремяОпрос().КаналСиг():
 		default:
 			log.Printf("Шахта.пуск()\n")
-			сам.Section.SetCountDown(120)
-			работа := сам.РежимТекущ().Режим()
-			log.Printf("Шахта.пуск(): work=%v\n", работа)
-			if работа == "upgrade" {
-				continue
+			руда := сам.Руда().Получ()
+			if руда == 0 {
+				time.Sleep(time.Second * 5)
+				сам.бот.Ангар().РесурсыОбновить()
 			}
-			if err := сам.сеть.UpdateLst(); err != nil {
-				log.Printf("ERRO Mine.Run(): при обновлении lstMine, err=\n\t%v\n", err)
-				continue
-			}
-			if err := сам.выбратьМеталл(); err != nil {
-				log.Printf("ERRO Шахта.пуск(): при выборе продукции, err=\n\t%v\n", err)
-				continue
-			}
-			работа = сам.РежимТекущ().Режим()
-			switch работа {
-			case "руда":
-				сам.рудаСделать()
-			case "железо":
-				сам.железоСделать()
-			case "сталь":
-				сам.стальСделать()
-			case "свинец":
-				сам.свинецСделать()
-			default:
-				// log._rintf("ERRO Шахта.Run(): неизвестный режим производства, режим=%q\n", work)
-			}
-		}
-		руда := сам.Руда().Получ()
-		if руда == 0 {
-			time.Sleep(time.Second * 5)
-			сам.бот.Ангар().РесурсыОбновить()
-			continue
+			сам.Сделать()
+			time.Sleep(time.Minute * 5)
 		}
-		time.Sleep(time.Minute * 5)
+	}
+}
+
+// Сделать -- вызывается с базы, если она обнаружила, что пора сделать продукцию
+func (сам *Шахта) Сделать() {
+	работа := сам.РежимТекущ().Режим()
+	log.Printf("Шахта.Сделать(): work=%v\n", работа)
+	if работа == "upgrade" {
+		return
+	}
+	if err := сам.сеть.UpdateLst(); err != nil {
+		log.Printf("ERRO Шахта.Сделать(): при обновлении lstMine, err=\n\t%v\n", err)
+		return
+	}
+	if err := сам.выбратьМеталл(); err != nil {
+		log.Printf("ERRO Шахта.Сделать(): при выборе продукции, err=\n\t%v\n", err)
+		return
+	}
+	работа = сам.РежимТекущ().Режим()
+	switch работа {
+	case "руда":
+		сам.рудаСделать()
+	case "железо":
+		сам.железоСделать()
+	case "сталь":
+		сам.стальСделать()
+	case "свинец":
+		сам.свинецСделать()
+	default:
+		log.Printf("ERRO Шахта.Сделать(): неизвестный режим производства, режим=%q\n", работа)
 	}
 }
 

+ 23 - 15
server/serv_bots/warbot/angar/missions/missions.go

@@ -2,6 +2,7 @@ package missions
 
 import (
 	"fmt"
+	"log"
 	"strings"
 	"time"
 
@@ -21,11 +22,11 @@ type Миссии struct {
 	сеть *missionsnet.MissionsNet
 }
 
-// NewMissions -- возвращает новый *Миссии
-func NewMissions(бот types.ИБот) (*Миссии, error) {
+// НовМиссии -- возвращает новый *Миссии
+func НовМиссии(бот types.ИБот) (*Миссии, error) {
 	section, err := section.NewSection(бот, "Миссии", `<title>Миссии</title>`)
 	if err != nil {
-		return nil, fmt.Errorf("NewMissions(): in create *Section, err=\n\t%w", err)
+		return nil, fmt.Errorf("НовМиссии(): in create *Section, err=\n\t%w", err)
 	}
 	сам := &Миссии{
 		Section: section,
@@ -33,7 +34,7 @@ func NewMissions(бот types.ИБот) (*Миссии, error) {
 	}
 	сам.сеть, err = missionsnet.NewMissionsNet(сам)
 	if err != nil {
-		return nil, fmt.Errorf("NewMissions(): in create *SectionNet, err=\n\t%w", err)
+		return nil, fmt.Errorf("НовМиссии(): in create *SectionNet, err=\n\t%w", err)
 	}
 	return сам, nil
 }
@@ -49,7 +50,7 @@ func (sf *Миссии) пуск() {
 	defer func() {
 		sf.ВремяОпрос().Стоп()
 	}()
-	time.Sleep(time.Second * 15)
+	time.Sleep(time.Second * 5)
 	for { // Время истекло
 		select {
 		case <-sf.бот.Кнт().Done():
@@ -71,9 +72,9 @@ func (sf *Миссии) пуск() {
 
 // Забирает всё самое вкусное
 func (sf *Миссии) проверНаграда() {
-	sf.битваЗащита()
-	sf.battleAttack()
-	sf.БитваВойна()
+	sf.сражениеЗащита()
+	sf.сражениеНаступление()
+	sf.проведиВойну()
 	sf.battle5Fiting()
 	sf.battle6win()
 	sf.battle10Fiting()
@@ -123,7 +124,7 @@ func (sf *Миссии) kill3tanks() {
 }
 
 // Проверяет награду оборонительного сражения
-func (sf *Миссии) битваЗащита() {
+func (sf *Миссии) сражениеЗащита() {
 	var (
 		strOut      string
 		lstMissions = sf.СписПолучить()
@@ -161,7 +162,7 @@ func (sf *Миссии) битваЗащита() {
 }
 
 // Проверяет награду за одну войну
-func (sf *Миссии) БитваВойна() {
+func (sf *Миссии) проведиВойну() {
 	var (
 		strOut      string
 		lstMissions = sf.СписПолучить()
@@ -199,15 +200,22 @@ func (sf *Миссии) БитваВойна() {
 }
 
 // Проверяет награду наступательного сражения
-func (sf *Миссии) battleAttack() {
+func (сам *Миссии) сражениеНаступление() {
 	var (
 		strOut      string
-		lstMissions = sf.СписПолучить()
 		isFind      bool
 		ind         int
+		lstMissions = сам.СписПолучить()
 	)
+	if len(lstMissions) == 0 {
+		if ош := сам.сеть.UpdateLst(); ош != nil {
+			log.Printf("Миссии.сражениеНаступление(): при обновлении HTML миссий, ош=\n\t%v\n", ош)
+			return
+		}
+		lstMissions = сам.СписПолучить()
+	}
 	for ind, strOut = range lstMissions {
-		if strings.Contains(strOut, `Проведи одно наступательное сражение<br/>`) {
+		if strings.Contains(strOut, "Проведи одно наступательное сражение<br/>") {
 			isFind = true
 			break
 		}
@@ -225,12 +233,12 @@ func (sf *Миссии) battleAttack() {
 	strLink := lstLink[1]
 	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
 	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := sf.сеть.Get(strLink)
+	lstMissions, err := сам.сеть.Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Миссии.battleAttack(): при выполнении GET-запроса, err=\n\t%v\n", err)
 		return
 	}
-	if err := sf.СтрОбновить(lstMissions); err != nil {
+	if err := сам.СтрОбновить(lstMissions); err != nil {
 		// log._rintf("ERRO Миссии.battleAttack(): при обновлении lstMissions, err=\n\t%v\n", err)
 		return
 	}