Explorar o código

SVI Переделка на новую архитектуру

SVI hai 1 ano
pai
achega
16ede653e4

+ 455 - 0
app/lev0/bfunc/bf_mission_simple/bf_missin_simple.go

@@ -0,0 +1,455 @@
+// package bf_mission_simple -- простые миссии
+package bf_mission_simple
+
+import (
+	"strings"
+
+	. "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
+
+	. "wartank/app/lev0/types"
+)
+
+// МиссииПростыеЗабрать -- забирает выполненные простые миссии
+func МиссииПростыеЗабрать(конт ILocalCtx) {
+	сражениеЗащита(конт)
+	сражениеНаступление(конт)
+	проведиВойну(конт)
+	battle5Fiting(конт)
+	battle6win(конт)
+	battle10Fiting(конт)
+	battleDogFyting(конт)
+	makeResource(конт)
+	kill3tanks(конт)
+	топливоДив(конт)
+	upMan(конт)
+}
+
+// Проверяет награду за уничтожить 3 танка в бою
+func kill3tanks(конт ILocalCtx) {
+	арена := конт.Get("миссии_простые").Val().(ИАрена)
+	var (
+		strOut      string
+		lstMissions = арена.СписПолучить()
+		еслиНайдено bool
+		ind         int
+	)
+	for ind, strOut = range lstMissions {
+		if strings.Contains(strOut, `Уничтожь в бою 3 танка<br/>`) {
+			еслиНайдено = true
+			break
+		}
+	}
+	if !еслиНайдено {
+		return
+	}
+	// <a class="simple-but border" href="?70-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
+	ind += 23
+	strOut = lstMissions[ind]
+	if !strings.Contains(strOut, `>Получить награду<`) {
+		return
+	}
+	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
+	strLink := lstLink[1]
+	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
+	strLink = "https://wartank.ru/missions/" + lstLink[0]
+	lstMissions, err := арена.Сеть().Get(strLink)
+	if err != nil {
+		// log._rintf("ERRO Миссии.kill3tanks(): при выполнении GET-запроса, err=\n\t%v\n", err)
+		return
+	}
+	if err := арена.СтрОбновить(lstMissions); err != nil {
+		// log._rintf("ERRO Миссии.kill3tanks(): при обновлении lstMissions, err=\n\t%v\n", err)
+		return
+	}
+}
+
+// Проверяет награду оборонительного сражения
+func  сражениеЗащита(конт ILocalCtx) {
+	арена := конт.Get("миссии_простые").Val().(ИАрена)
+	var (
+		strOut      string
+		еслиНайдено bool
+	)
+	арена.Обновить()
+	списМиссия := арена.СписПолучить()
+	// <a class="simple-but border" href="?23-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
+	for _, strOut = range списМиссия {
+		if strings.Contains(strOut, `.ILinkListener-missions-cc-0-c-awardLink`) {
+			еслиНайдено = true
+			break
+		}
+	}
+	if !еслиНайдено {
+		return
+	}
+	// <a class="simple-but border" href="?70-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
+	_ссылка := strings.TrimPrefix(strOut, `<a class="simple-but border" href="`)
+	_ссылка = strings.TrimSuffix(_ссылка, `"><span><span>Получить награду</span></span></a>`)
+	strLink := "https://wartank.ru/missions/" + _ссылка
+	списМиссия, err := арена.Сеть().Get(strLink)
+	if err != nil {
+		// log._rintf("ERRO Миссии.battleDefence(): при выполнении GET-запроса, err=\n\t%v\n", err)
+		return
+	}
+	if err := арена.СтрОбновить(списМиссия); err != nil {
+		// log._rintf("ERRO Миссии.battleDefence(): при обновлении lstMissions, err=\n\t%v\n", err)
+		return
+	}
+}
+
+// Проверяет награду за одну войну
+func  проведиВойну(конт ILocalCtx) {
+	арена := конт.Get("миссии_простые").Val().(ИАрена)
+	var (
+		strOut      string
+		lstMissions = арена.СписПолучить()
+		еслиНайдено bool
+		ind         int
+	)
+	for ind, strOut = range lstMissions {
+		if strings.Contains(strOut, `Проведи одну войну<br/>`) {
+			еслиНайдено = true
+			break
+		}
+	}
+	if !еслиНайдено {
+		return
+	}
+	// <a class="simple-but border" href="?70-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
+	ind += 23
+	strOut = lstMissions[ind]
+	if !strings.Contains(strOut, `>Получить награду<`) {
+		return
+	}
+	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
+	strLink := lstLink[1]
+	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
+	strLink = "https://wartank.ru/missions/" + lstLink[0]
+	lstMissions, err := арена.Сеть().Get(strLink)
+	if err != nil {
+		// log._rintf("ERRO Миссии.battleWar(): при выполнении GET-запроса, err=\n\t%v\n", err)
+		return
+	}
+	if err := арена.СтрОбновить(lstMissions); err != nil {
+		// log._rintf("ERRO Миссии.battleWar(): при обновлении lstMissions, err=\n\t%v\n", err)
+		return
+	}
+}
+
+// Проверяет награду наступательного сражения
+func  сражениеНаступление(конт ILocalCtx) {
+	арена := конт.Get("миссии_простые").Val().(ИАрена)
+	var (
+		strOut      string
+		еслиНайдено bool
+		ind         int
+		lstMissions = арена.СписПолучить()
+	)
+	if len(lstMissions) == 0 {
+		арена.Обновить()
+		lstMissions = арена.СписПолучить()
+	}
+	for ind, strOut = range lstMissions {
+		if strings.Contains(strOut, "Проведи одно наступательное сражение<br/>") {
+			еслиНайдено = true
+			break
+		}
+	}
+	if !еслиНайдено {
+		return
+	}
+	// <a class="simple-but border" href="?70-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
+	ind += 23
+	strOut = lstMissions[ind]
+	if !strings.Contains(strOut, `>Получить награду<`) {
+		return
+	}
+	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
+	strLink := lstLink[1]
+	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
+	strLink = "https://wartank.ru/missions/" + lstLink[0]
+	lstMissions, err := арена.Сеть().Get(strLink)
+	if err != nil {
+		// log._rintf("ERRO Миссии.battleAttack(): при выполнении GET-запроса, err=\n\t%v\n", err)
+		return
+	}
+	if err := арена.СтрОбновить(lstMissions); err != nil {
+		// log._rintf("ERRO Миссии.battleAttack(): при обновлении lstMissions, err=\n\t%v\n", err)
+		return
+	}
+}
+
+// Проверяет награду за схватку
+func  battleDogFyting(конт ILocalCtx) {
+	арена := конт.Get("миссии_простые").Val().(ИАрена)
+	var (
+		strOut      string
+		lstMissions = арена.СписПолучить()
+		еслиНайдено bool
+		ind         int
+	)
+	for ind, strOut = range lstMissions {
+		if strings.Contains(strOut, `Проведи одну схватку<br/>`) {
+			еслиНайдено = true
+			break
+		}
+	}
+	if !еслиНайдено {
+		return
+	}
+	// <a class="simple-but border" href="?70-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
+	ind += 23
+	strOut = lstMissions[ind]
+	if !strings.Contains(strOut, `>Получить награду<`) {
+		return
+	}
+	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
+	strLink := lstLink[1]
+	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
+	strLink = "https://wartank.ru/missions/" + lstLink[0]
+	lstMissions, err := арена.Сеть().Get(strLink)
+	if err != nil {
+		// log._rintf("ERRO Миссии.battleDogFyting(): при выполнении GET-запроса, err=\n\t%v\n", err)
+		return
+	}
+	if err := арена.СтрОбновить(lstMissions); err != nil {
+		// log._rintf("ERRO Миссии.battleDogFyting(): при обновлении lstMissions, err=\n\t%v\n", err)
+		return
+	}
+}
+
+// Проверяет награду за ресурсы
+func  makeResource(конт ILocalCtx) {
+	арена := конт.Get("миссии_простые").Val().(ИАрена)
+	var (
+		strOut      string
+		lstMissions = арена.СписПолучить()
+		еслиНайдено bool
+		ind         int
+	)
+	for ind, strOut = range lstMissions {
+		if strings.Contains(strOut, `Произведи на базе 10 ресурсов<br/>`) {
+			еслиНайдено = true
+			break
+		}
+	}
+	if !еслиНайдено {
+		return
+	}
+	// <a class="simple-but border" href="?70-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
+	ind += 23
+	strOut = lstMissions[ind]
+	if !strings.Contains(strOut, `>Получить награду<`) {
+		return
+	}
+	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
+	strLink := lstLink[1]
+	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
+	strLink = "https://wartank.ru/missions/" + lstLink[0]
+	lstMissions, err := арена.Сеть().Get(strLink)
+	if err != nil {
+		// log._rintf("ERRO Миссии.makeResource(): при выполнении GET-запроса, err=\n\t%v\n", err)
+		return
+	}
+	if err := арена.СтрОбновить(lstMissions); err != nil {
+		// log._rintf("ERRO Миссии.makeResource(): при обновлении lstMissions, err=\n\t%v\n", err)
+		return
+	}
+}
+
+// Проверяет награду за ресурсы
+func  upMan(конт ILocalCtx) {
+	арена := конт.Get("миссии_простые").Val().(ИАрена)
+	var (
+		strOut      string
+		lstMissions = арена.СписПолучить()
+		еслиНайдено bool
+		ind         int
+	)
+	for ind, strOut = range lstMissions {
+		if strings.Contains(strOut, `Прокачай экипаж на 100 опыта экипажа<br/>`) {
+			еслиНайдено = true
+			break
+		}
+	}
+	if !еслиНайдено {
+		return
+	}
+	// <a class="simple-but border" href="?70-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
+	ind += 23
+	strOut = lstMissions[ind]
+	if !strings.Contains(strOut, `>Получить награду<`) {
+		return
+	}
+	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
+	strLink := lstLink[1]
+	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
+	strLink = "https://wartank.ru/missions/" + lstLink[0]
+	lstMissions, err := арена.Сеть().Get(strLink)
+	if err != nil {
+		// log._rintf("ERRO Миссии.upMan(): при выполнении GET-запроса, err=\n\t%v\n", err)
+		return
+	}
+	if err := арена.СтрОбновить(lstMissions); err != nil {
+		// log._rintf("ERRO Миссии.upMan(): при обновлении lstMissions, err=\n\t%v\n", err)
+		return
+	}
+	// log._rintf("INFO Миссии.upMan(): награда получена\n")
+}
+
+// Проверяет награду за топливо
+func  топливоДив(конт ILocalCtx) {
+	арена := конт.Get("миссии_простые").Val().(ИАрена)
+	var (
+		strOut      string
+		lstMissions = арена.СписПолучить()
+		еслиНайдено bool
+		ind         int
+	)
+	for ind, strOut = range lstMissions {
+		if strings.Contains(strOut, `Получи топливо в дивизии<br/>`) {
+			еслиНайдено = true
+			break
+		}
+	}
+	if !еслиНайдено {
+		return
+	}
+	// <a class="simple-but border" href="?157-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
+	ind += 19
+	strOut = lstMissions[ind]
+	if !strings.Contains(strOut, `>Получить награду</`) {
+		return
+	}
+	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
+	strLink := lstLink[1]
+	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
+	strLink = "https://wartank.ru/missions/" + lstLink[0]
+	lstMissions, err := арена.Сеть().Get(strLink)
+	if err != nil {
+		// log._rintf("ERRO Миссии.makeFuel(): при выполнении GET-запроса, err=\n\t%v\n", err)
+		return
+	}
+	if err := арена.СтрОбновить(lstMissions); err != nil {
+		// log._rintf("ERRO Миссии.makeFuel(): при обновлении lstMissions, err=\n\t%v\n", err)
+		return
+	}
+	// log._rintf("INFO Миссии.makeFuel(): награда получена")
+}
+
+// Проверяет награду 5 боёв
+func battle5Fiting(конт ILocalCtx) {
+	арена := конт.Get("миссии_простые").Val().(ИАрена)
+	var (
+		strOut      string
+		lstMissions = арена.СписПолучить()
+		еслиНайдено bool
+		ind         int
+	)
+	for ind, strOut = range lstMissions {
+		if strings.Contains(strOut, `Проведи 5 боев<br/>`) {
+			еслиНайдено = true
+			break
+		}
+	}
+	if !еслиНайдено {
+		return
+	}
+	// <a class="simple-but border" href="?113-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
+	ind += 23
+	strOut = lstMissions[ind]
+	if !strings.Contains(strOut, `>Получить награду<`) {
+		return
+	}
+	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
+	strLink := lstLink[1]
+	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
+	strLink = "https://wartank.ru/missions/" + lstLink[0]
+	lstMissions, err := арена.Сеть().Get(strLink)
+	if err != nil {
+		// log._rintf("ERRO Миссии.battle5Fiting(): при выполнении GET-запроса, err=\n\t%v\n", err)
+		return
+	}
+	if err := арена.СтрОбновить(lstMissions); err != nil {
+		// log._rintf("ERRO Миссии.battle5Fiting(): при обновлении lstMissions, err=\n\t%v\n", err)
+		return
+	}
+}
+
+// Проверяет награду 10 боёв
+func  battle10Fiting(конт ILocalCtx) {
+	арена := конт.Get("миссии_простые").Val().(ИАрена)
+	var (
+		strOut      string
+		lstMissions = арена.СписПолучить()
+		еслиНайдено bool
+		ind         int
+	)
+	for ind, strOut = range lstMissions {
+		if strings.Contains(strOut, `Уничтожь в бою 10 танков<br/>`) {
+			еслиНайдено = true
+			break
+		}
+	}
+	if !еслиНайдено {
+		return
+	}
+	// <a class="simple-but border" href="?113-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
+	ind += 23
+	strOut = lstMissions[ind]
+	if !strings.Contains(strOut, `>Получить награду<`) {
+		return
+	}
+	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
+	strLink := lstLink[1]
+	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
+	strLink = "https://wartank.ru/missions/" + lstLink[0]
+	lstMissions, err := арена.Сеть().Get(strLink)
+	if err != nil {
+		// log._rintf("ERRO Миссии.battle10Fiting(): при выполнении GET-запроса, err=\n\t%v\n", err)
+		return
+	}
+	if err := арена.СтрОбновить(lstMissions); err != nil {
+		// log._rintf("ERRO Миссии.battle10Fiting(): при обновлении lstMissions, err=\n\t%v\n", err)
+		return
+	}
+}
+
+// Проверяет награду за 6 побед подряд
+func  battle6win(конт ILocalCtx) {
+	арена := конт.Get("миссии_простые").Val().(ИАрена)
+	var (
+		strOut      string
+		lstMissions = арена.СписПолучить()
+		еслиНайдено bool
+		ind         int
+	)
+	for ind, strOut = range lstMissions {
+		if strings.Contains(strOut, `Победи 6 раз подряд<br/>`) {
+			еслиНайдено = true
+			break
+		}
+	}
+	if !еслиНайдено {
+		return
+	}
+	// <a class="simple-but border" href="?113-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
+	ind += 25
+	strOut = lstMissions[ind]
+	if !strings.Contains(strOut, `>Получить награду<`) {
+		return
+	}
+	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
+	strLink := lstLink[1]
+	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
+	strLink = "https://wartank.ru/missions/" + lstLink[0]
+	lstMissions, err := арена.Сеть().Get(strLink)
+	if err != nil {
+		// log._rintf("ERRO Миссии.battle6win(): при выполнении GET-запроса, err=\n\t%v\n", err)
+		return
+	}
+	if err := арена.СтрОбновить(lstMissions); err != nil {
+		// log._rintf("ERRO Миссии.battle6win(): при обновлении lstMissions, err=\n\t%v\n", err)
+		return
+	}
+}

+ 6 - 0
app/lev0/types/iarena_missin_simple.go

@@ -0,0 +1,6 @@
+package types
+
+// ИАренаМиссииПростые -- простые миссии
+type ИАренаМиссииПростые interface {
+	ИАрена
+}

+ 0 - 12
app/lev0/types/imissions.go

@@ -1,12 +0,0 @@
-package types
-
-/*
-	Объект миссий(сбор золы)
-*/
-
-// ИМиссии -- интерфейс к объекту миссий
-type ИМиссии interface {
-	ИАрена
-	// Пуск -- запускает в работу миссии
-	Пуск()
-}

+ 12 - 466
app/lev2/arena/arena_missions/arena_missions.go

@@ -1,8 +1,7 @@
 package arena_missions
 
 import (
-	"strings"
-	"time"
+	. "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
 
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
@@ -15,481 +14,28 @@ import (
 // АренаМиссии -- забирает золотишко
 type АренаМиссии struct {
 	ИАрена
-	бот ИБот
+	конт ILocalCtx
+	бот  ИБот
 }
 
 // НовМиссии -- возвращает новый *Миссии
-func НовМиссии(бот ИБот) (*АренаМиссии, error) {
+func НовМиссии(конт ILocalCtx) *АренаМиссии {
 	сам := &АренаМиссии{
-		бот: бот,
+		конт: конт,
+		бот:  конт.Get("бот").Val().(ИБот),
 	}
 	аренаКонфиг := arena.АренаКонфиг{
-		Бот_:         бот,
+		Бот_:         сам.бот,
 		АренаИмя_:    "Миссии",
 		СтрКонтроль_: "<title>Миссии</title>",
 		ФнПуск_:      сам.пуск,
 		СтрУрл_:      "https://wartank.ru/missions/", // https://wartank.ru/missions/
 	}
-	сам.ИАрена = arena.НовАрена(бот.КонтБот(), аренаКонфиг)
-	_ = ИМиссии(сам)
-	return сам, nil
-}
-
-// // Бот -- возвращает бота
-// func (сам *Миссии) Бот() types.ИБот {
-// 	return сам.бот
-// }
-
-// Пуск -- запускает в работу сбор миссий
-func (сам *АренаМиссии) Пуск() {
-	go сам.пуск()
+	сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
+	конт.Set("миссии_простые", сам, "Арена простых миссий")
+	_ = ИАренаМиссииПростые(сам)
+	return сам
 }
 
 // обрабатывает конвой
-func (сам *АренаМиссии) пуск() {
-	time.Sleep(time.Second * 5)
-	for { // Время истекло
-		// time.Sleep(time.Minute * 1)
-		select {
-		case <-сам.бот.КонтБот().Ctx().Done():
-			return
-		default:
-			сам.проверНаграда()
-			time.Sleep(time.Minute * 1)
-		}
-	}
-}
-
-// Забирает всё самое вкусное
-func (сам *АренаМиссии) проверНаграда() {
-	сам.сражениеЗащита()
-	сам.сражениеНаступление()
-	сам.проведиВойну()
-	сам.battle5Fiting()
-	сам.battle6win()
-	сам.battle10Fiting()
-	сам.battleDogFyting()
-	сам.makeResource()
-	сам.kill3tanks()
-	сам.топливоДив()
-	сам.upMan()
-}
-
-// Проверяет награду за уничтожить 3 танка в бою
-func (сам *АренаМиссии) kill3tanks() {
-	var (
-		strOut      string
-		lstMissions = сам.СписПолучить()
-		еслиНайдено bool
-		ind         int
-	)
-	for ind, strOut = range lstMissions {
-		if strings.Contains(strOut, `Уничтожь в бою 3 танка<br/>`) {
-			еслиНайдено = true
-			break
-		}
-	}
-	if !еслиНайдено {
-		return
-	}
-	// <a class="simple-but border" href="?70-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
-	ind += 23
-	strOut = lstMissions[ind]
-	if !strings.Contains(strOut, `>Получить награду<`) {
-		return
-	}
-	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
-	strLink := lstLink[1]
-	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
-	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.Сеть().Get(strLink)
-	if err != nil {
-		// log._rintf("ERRO Миссии.kill3tanks(): при выполнении GET-запроса, err=\n\t%v\n", err)
-		return
-	}
-	if err := сам.СтрОбновить(lstMissions); err != nil {
-		// log._rintf("ERRO Миссии.kill3tanks(): при обновлении lstMissions, err=\n\t%v\n", err)
-		return
-	}
-}
-
-// Проверяет награду оборонительного сражения
-func (сам *АренаМиссии) сражениеЗащита() {
-	var (
-		strOut      string
-		еслиНайдено bool
-	)
-	сам.Обновить()
-	списМиссия := сам.СписПолучить()
-	// <a class="simple-but border" href="?23-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
-	for _, strOut = range списМиссия {
-		if strings.Contains(strOut, `.ILinkListener-missions-cc-0-c-awardLink`) {
-			еслиНайдено = true
-			break
-		}
-	}
-	if !еслиНайдено {
-		return
-	}
-	// <a class="simple-but border" href="?70-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
-	_ссылка := strings.TrimPrefix(strOut, `<a class="simple-but border" href="`)
-	_ссылка = strings.TrimSuffix(_ссылка, `"><span><span>Получить награду</span></span></a>`)
-	strLink := "https://wartank.ru/missions/" + _ссылка
-	списМиссия, err := сам.Сеть().Get(strLink)
-	if err != nil {
-		// log._rintf("ERRO Миссии.battleDefence(): при выполнении GET-запроса, err=\n\t%v\n", err)
-		return
-	}
-	if err := сам.СтрОбновить(списМиссия); err != nil {
-		// log._rintf("ERRO Миссии.battleDefence(): при обновлении lstMissions, err=\n\t%v\n", err)
-		return
-	}
-}
-
-// Проверяет награду за одну войну
-func (сам *АренаМиссии) проведиВойну() {
-	var (
-		strOut      string
-		lstMissions = сам.СписПолучить()
-		еслиНайдено bool
-		ind         int
-	)
-	for ind, strOut = range lstMissions {
-		if strings.Contains(strOut, `Проведи одну войну<br/>`) {
-			еслиНайдено = true
-			break
-		}
-	}
-	if !еслиНайдено {
-		return
-	}
-	// <a class="simple-but border" href="?70-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
-	ind += 23
-	strOut = lstMissions[ind]
-	if !strings.Contains(strOut, `>Получить награду<`) {
-		return
-	}
-	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
-	strLink := lstLink[1]
-	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
-	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.Сеть().Get(strLink)
-	if err != nil {
-		// log._rintf("ERRO Миссии.battleWar(): при выполнении GET-запроса, err=\n\t%v\n", err)
-		return
-	}
-	if err := сам.СтрОбновить(lstMissions); err != nil {
-		// log._rintf("ERRO Миссии.battleWar(): при обновлении lstMissions, err=\n\t%v\n", err)
-		return
-	}
-}
-
-// Проверяет награду наступательного сражения
-func (сам *АренаМиссии) сражениеНаступление() {
-	var (
-		strOut      string
-		еслиНайдено bool
-		ind         int
-		lstMissions = сам.СписПолучить()
-	)
-	if len(lstMissions) == 0 {
-		сам.Обновить()
-		lstMissions = сам.СписПолучить()
-	}
-	for ind, strOut = range lstMissions {
-		if strings.Contains(strOut, "Проведи одно наступательное сражение<br/>") {
-			еслиНайдено = true
-			break
-		}
-	}
-	if !еслиНайдено {
-		return
-	}
-	// <a class="simple-but border" href="?70-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
-	ind += 23
-	strOut = lstMissions[ind]
-	if !strings.Contains(strOut, `>Получить награду<`) {
-		return
-	}
-	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
-	strLink := lstLink[1]
-	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
-	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.Сеть().Get(strLink)
-	if err != nil {
-		// log._rintf("ERRO Миссии.battleAttack(): при выполнении GET-запроса, err=\n\t%v\n", err)
-		return
-	}
-	if err := сам.СтрОбновить(lstMissions); err != nil {
-		// log._rintf("ERRO Миссии.battleAttack(): при обновлении lstMissions, err=\n\t%v\n", err)
-		return
-	}
-}
-
-// Проверяет награду за схватку
-func (сам *АренаМиссии) battleDogFyting() {
-	var (
-		strOut      string
-		lstMissions = сам.СписПолучить()
-		еслиНайдено bool
-		ind         int
-	)
-	for ind, strOut = range lstMissions {
-		if strings.Contains(strOut, `Проведи одну схватку<br/>`) {
-			еслиНайдено = true
-			break
-		}
-	}
-	if !еслиНайдено {
-		return
-	}
-	// <a class="simple-but border" href="?70-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
-	ind += 23
-	strOut = lstMissions[ind]
-	if !strings.Contains(strOut, `>Получить награду<`) {
-		return
-	}
-	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
-	strLink := lstLink[1]
-	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
-	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.Сеть().Get(strLink)
-	if err != nil {
-		// log._rintf("ERRO Миссии.battleDogFyting(): при выполнении GET-запроса, err=\n\t%v\n", err)
-		return
-	}
-	if err := сам.СтрОбновить(lstMissions); err != nil {
-		// log._rintf("ERRO Миссии.battleDogFyting(): при обновлении lstMissions, err=\n\t%v\n", err)
-		return
-	}
-}
-
-// Проверяет награду за ресурсы
-func (сам *АренаМиссии) makeResource() {
-	var (
-		strOut      string
-		lstMissions = сам.СписПолучить()
-		еслиНайдено bool
-		ind         int
-	)
-	for ind, strOut = range lstMissions {
-		if strings.Contains(strOut, `Произведи на базе 10 ресурсов<br/>`) {
-			еслиНайдено = true
-			break
-		}
-	}
-	if !еслиНайдено {
-		return
-	}
-	// <a class="simple-but border" href="?70-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
-	ind += 23
-	strOut = lstMissions[ind]
-	if !strings.Contains(strOut, `>Получить награду<`) {
-		return
-	}
-	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
-	strLink := lstLink[1]
-	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
-	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.Сеть().Get(strLink)
-	if err != nil {
-		// log._rintf("ERRO Миссии.makeResource(): при выполнении GET-запроса, err=\n\t%v\n", err)
-		return
-	}
-	if err := сам.СтрОбновить(lstMissions); err != nil {
-		// log._rintf("ERRO Миссии.makeResource(): при обновлении lstMissions, err=\n\t%v\n", err)
-		return
-	}
-}
-
-// Проверяет награду за ресурсы
-func (сам *АренаМиссии) upMan() {
-	var (
-		strOut      string
-		lstMissions = сам.СписПолучить()
-		еслиНайдено bool
-		ind         int
-	)
-	for ind, strOut = range lstMissions {
-		if strings.Contains(strOut, `Прокачай экипаж на 100 опыта экипажа<br/>`) {
-			еслиНайдено = true
-			break
-		}
-	}
-	if !еслиНайдено {
-		return
-	}
-	// <a class="simple-but border" href="?70-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
-	ind += 23
-	strOut = lstMissions[ind]
-	if !strings.Contains(strOut, `>Получить награду<`) {
-		return
-	}
-	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
-	strLink := lstLink[1]
-	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
-	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.Сеть().Get(strLink)
-	if err != nil {
-		// log._rintf("ERRO Миссии.upMan(): при выполнении GET-запроса, err=\n\t%v\n", err)
-		return
-	}
-	if err := сам.СтрОбновить(lstMissions); err != nil {
-		// log._rintf("ERRO Миссии.upMan(): при обновлении lstMissions, err=\n\t%v\n", err)
-		return
-	}
-	// log._rintf("INFO Миссии.upMan(): награда получена\n")
-}
-
-// Проверяет награду за топливо
-func (сам *АренаМиссии) топливоДив() {
-	var (
-		strOut      string
-		lstMissions = сам.СписПолучить()
-		еслиНайдено bool
-		ind         int
-	)
-	for ind, strOut = range lstMissions {
-		if strings.Contains(strOut, `Получи топливо в дивизии<br/>`) {
-			еслиНайдено = true
-			break
-		}
-	}
-	if !еслиНайдено {
-		return
-	}
-	// <a class="simple-but border" href="?157-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
-	ind += 19
-	strOut = lstMissions[ind]
-	if !strings.Contains(strOut, `>Получить награду</`) {
-		return
-	}
-	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
-	strLink := lstLink[1]
-	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
-	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.Сеть().Get(strLink)
-	if err != nil {
-		// log._rintf("ERRO Миссии.makeFuel(): при выполнении GET-запроса, err=\n\t%v\n", err)
-		return
-	}
-	if err := сам.СтрОбновить(lstMissions); err != nil {
-		// log._rintf("ERRO Миссии.makeFuel(): при обновлении lstMissions, err=\n\t%v\n", err)
-		return
-	}
-	// log._rintf("INFO Миссии.makeFuel(): награда получена")
-}
-
-// Проверяет награду 5 боёв
-func (сам *АренаМиссии) battle5Fiting() {
-	var (
-		strOut      string
-		lstMissions = сам.СписПолучить()
-		еслиНайдено bool
-		ind         int
-	)
-	for ind, strOut = range lstMissions {
-		if strings.Contains(strOut, `Проведи 5 боев<br/>`) {
-			еслиНайдено = true
-			break
-		}
-	}
-	if !еслиНайдено {
-		return
-	}
-	// <a class="simple-but border" href="?113-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
-	ind += 23
-	strOut = lstMissions[ind]
-	if !strings.Contains(strOut, `>Получить награду<`) {
-		return
-	}
-	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
-	strLink := lstLink[1]
-	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
-	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.Сеть().Get(strLink)
-	if err != nil {
-		// log._rintf("ERRO Миссии.battle5Fiting(): при выполнении GET-запроса, err=\n\t%v\n", err)
-		return
-	}
-	if err := сам.СтрОбновить(lstMissions); err != nil {
-		// log._rintf("ERRO Миссии.battle5Fiting(): при обновлении lstMissions, err=\n\t%v\n", err)
-		return
-	}
-}
-
-// Проверяет награду 10 боёв
-func (сам *АренаМиссии) battle10Fiting() {
-	var (
-		strOut      string
-		lstMissions = сам.СписПолучить()
-		еслиНайдено bool
-		ind         int
-	)
-	for ind, strOut = range lstMissions {
-		if strings.Contains(strOut, `Уничтожь в бою 10 танков<br/>`) {
-			еслиНайдено = true
-			break
-		}
-	}
-	if !еслиНайдено {
-		return
-	}
-	// <a class="simple-but border" href="?113-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
-	ind += 23
-	strOut = lstMissions[ind]
-	if !strings.Contains(strOut, `>Получить награду<`) {
-		return
-	}
-	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
-	strLink := lstLink[1]
-	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
-	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.Сеть().Get(strLink)
-	if err != nil {
-		// log._rintf("ERRO Миссии.battle10Fiting(): при выполнении GET-запроса, err=\n\t%v\n", err)
-		return
-	}
-	if err := сам.СтрОбновить(lstMissions); err != nil {
-		// log._rintf("ERRO Миссии.battle10Fiting(): при обновлении lstMissions, err=\n\t%v\n", err)
-		return
-	}
-}
-
-// Проверяет награду за 6 побед подряд
-func (сам *АренаМиссии) battle6win() {
-	var (
-		strOut      string
-		lstMissions = сам.СписПолучить()
-		еслиНайдено bool
-		ind         int
-	)
-	for ind, strOut = range lstMissions {
-		if strings.Contains(strOut, `Победи 6 раз подряд<br/>`) {
-			еслиНайдено = true
-			break
-		}
-	}
-	if !еслиНайдено {
-		return
-	}
-	// <a class="simple-but border" href="?113-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
-	ind += 25
-	strOut = lstMissions[ind]
-	if !strings.Contains(strOut, `>Получить награду<`) {
-		return
-	}
-	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
-	strLink := lstLink[1]
-	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
-	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.Сеть().Get(strLink)
-	if err != nil {
-		// log._rintf("ERRO Миссии.battle6win(): при выполнении GET-запроса, err=\n\t%v\n", err)
-		return
-	}
-	if err := сам.СтрОбновить(lstMissions); err != nil {
-		// log._rintf("ERRO Миссии.battle6win(): при обновлении lstMissions, err=\n\t%v\n", err)
-		return
-	}
-}
+func (сам *АренаМиссии) пуск() {}

+ 7 - 0
app/lev2/lev2.go

@@ -10,9 +10,16 @@ import (
 	"wartank/app/lev2/arena/arena_base"
 	"wartank/app/lev2/arena/arena_fuel"
 	"wartank/app/lev2/arena/arena_mine"
+	"wartank/app/lev2/arena/arena_missions"
 	"wartank/app/lev2/arena/arena_polygon"
 )
 
+// НовМиссииПростые -- возвращает арену новых простых миссий
+func НовМиссииПростые(конт ILocalCtx)ИАренаМиссииПростые{
+	миссии:=arena_missions.НовМиссии(конт)
+	return миссии
+}
+
 // НовАренаТопливо -- возвращает арену боя за топливо
 func НовАренаТопливо(конт ILocalCtx) ИАрена {
 	арена := arena_fuel.НовАренаТопливо(конт)

+ 3 - 0
app/lev3/bot/bot.go

@@ -15,6 +15,7 @@ import (
 	"wartank/app/lev0/bfunc/bf_fuel_attack"
 	"wartank/app/lev0/bfunc/bf_fuel_find"
 	"wartank/app/lev0/bfunc/bf_gold_find"
+	"wartank/app/lev0/bfunc/bf_mission_simple"
 	"wartank/app/lev0/bfunc/bf_silver_find"
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2"
@@ -115,6 +116,7 @@ func создатьЯдроВарБот(конфиг *bot_config.БотКонф
 		сам.Пуск()
 	}
 	сам.ангар = lev2.НовАнгар(сам.конт)
+	_ = lev2.НовМиссииПростые(сам.конт)
 	_ = lev2.НовПолигон(сам.конт)
 	_ = lev2.НовБаза(сам.конт)
 	_ = lev2.НовШахта(сам.конт)
@@ -165,6 +167,7 @@ func (сам *Бот) пуск() {
 			bf_silver_find.СереброНайти(сам.конт)
 			bf_fuel_find.ТопливоНайти(сам.конт)
 			bf_fuel_attack.ТопливоАтаковать(сам.конт)
+			bf_mission_simple.МиссииПростыеЗабрать(сам.конт)
 		}
 	}
 }