Răsfoiți Sursa

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

SVI 1 an în urmă
părinte
comite
3f78afba50
51 a modificat fișierele cu 265 adăugiri și 289 ștergeri
  1. 2 0
      app/lev0/types/iarena.go
  2. 0 0
      app/lev1/sound/sound.go
  3. 3 3
      app/lev1/stat_param/stat_param.go
  4. 9 0
      app/lev2/arena/arena.go
  5. 1 1
      app/lev2/arena/arena_net/arena_net.go
  6. 45 0
      app/lev2/arena/arena_net/arena_web_worker/arena_web_worker.go
  7. 0 45
      app/lev2/arena/arena_net/scene_web_worker/scene_web_worker.go
  8. 2 5
      app/lev2/arena_angar/arena_angar.go
  9. 1 1
      app/lev2/arena_angar/fuel/fuel.go
  10. 9 9
      app/lev2/arena_angar/fuel_attack/fuel_attack.go
  11. 16 19
      app/lev2/arena_arsenal/arena_arsenal.go
  12. 12 15
      app/lev2/arena_bank/arena_bank.go
  13. 1 1
      app/lev2/arena_bank/bank_mode/bank_mode.go
  14. 8 12
      app/lev2/arena_base/arena_base.go
  15. 1 2
      app/lev2/arena_battle/battle_net/battle_net.go
  16. 1 1
      app/lev2/arena_battle/battle_worker/battle_worker.go
  17. 1 1
      app/lev2/arena_battle/battle_worker/battle_worker/battle_sound/battle_sound.go
  18. 1 1
      app/lev2/arena_battle/battle_worker/battle_worker/battlesound/battlesound.go
  19. 12 15
      app/lev2/arena_convoy/arena_convoy.go
  20. 1 1
      app/lev2/arena_death/death_worker/death_on/battle_sound/battle_sound.go
  21. 1 1
      app/lev2/arena_death/death_worker/death_on/battlesound/battlesound.go
  22. 1 1
      app/lev2/arena_death/death_worker/death_on/death_on.go
  23. 1 1
      app/lev2/arena_death/death_worker/death_worker.go
  24. 1 1
      app/lev2/arena_division/div_war/div_war.go
  25. 1 1
      app/lev2/arena_division/div_war/div_war_on/div_war_sound/div_war_sound.go
  26. 1 1
      app/lev2/arena_division/div_war/div_war_on/divwarsound/divwarsound.go
  27. 1 1
      app/lev2/arena_division/divwar/divwar.go
  28. 40 43
      app/lev2/arena_fuel_storage/arena_fuel_storage.go
  29. 11 14
      app/lev2/arena_market/arena_market.go
  30. 2 5
      app/lev2/arena_masters/arena_masters.go
  31. 18 21
      app/lev2/arena_mine/arena_mine.go
  32. 13 16
      app/lev2/arena_missions/arena_missions.go
  33. 1 1
      app/lev2/arena_polygon/arena_polygon.go
  34. 3 3
      app/lev3/farm_bots/bot/angar/base/base.go
  35. 1 1
      app/lev3/farm_bots/bot/angar/base/fuel/fuel.go
  36. 1 1
      app/lev3/farm_bots/bot/angar/base/market/market.go
  37. 1 1
      app/lev3/farm_bots/bot/angar/base/mine/mine.go
  38. 1 1
      app/lev3/farm_bots/bot/angar/base/polygon/polygon.go
  39. 1 1
      app/lev3/farm_bots/bot/angar/battle/battle_worker/battle_worker.go
  40. 1 1
      app/lev3/farm_bots/bot/angar/battle/battle_worker/battle_worker/battle_sound/battle_sound.go
  41. 1 1
      app/lev3/farm_bots/bot/angar/battle/battle_worker/battle_worker/battlesound/battlesound.go
  42. 1 1
      app/lev3/farm_bots/bot/angar/death_match/death_worker/death_on/battle_sound/battle_sound.go
  43. 1 1
      app/lev3/farm_bots/bot/angar/death_match/death_worker/death_on/battlesound/battlesound.go
  44. 1 1
      app/lev3/farm_bots/bot/angar/division/div_war/div_war.go
  45. 1 1
      app/lev3/farm_bots/bot/angar/division/div_war/div_war_on/div_war_sound/div_war_sound.go
  46. 1 1
      app/lev3/farm_bots/bot/angar/division/div_war/div_war_on/divwarsound/divwarsound.go
  47. 1 1
      app/lev3/farm_bots/bot/angar/division/divwar/divwar.go
  48. 1 1
      app/lev3/farm_bots/bot/angar/fuel/fuel.go
  49. 28 31
      app/lev3/farm_bots/bot/angar/stat_convoy_fixme/stat_convoy_fixme.go
  50. 1 1
      app/lev3/farm_bots/bot/bot_stat/stat_resurs/stat_resurs.go
  51. 1 1
      app/lev3/farm_bots/bot/bot_stat/tank_stat/tank_stat.go

+ 2 - 0
app/lev0/types/iarena.go

@@ -17,4 +17,6 @@ type ИАрена interface {
 	Обновить()
 	// Пуск -- запускает арену в обработку на текущий шаг
 	Пуск()
+	// Сеть -- возвращает ссылку на сеть арены
+	Сеть() ИАренаСеть
 }

+ 0 - 0
pkg/components/sound/sound.go → app/lev1/sound/sound.go


+ 3 - 3
app/lev3/bot/bot_stat/stat_param/stat_param.go → app/lev1/stat_param/stat_param.go

@@ -1,4 +1,4 @@
-// package stat_param -- отдельный параметр статистики бота
+// package stat_param -- отдельный параметр статистики
 package stat_param
 
 import (
@@ -9,14 +9,14 @@ import (
 	"wartank/pkg/kernel/kernel_log"
 )
 
-// СтатПарам -- потокобезопасная статистика бота
+// СтатПарам -- потокобезопасная статистика
 type СтатПарам struct {
 	имя  string // Имя параметра
 	знач int    // Значение параметра
 	блок sync.RWMutex
 }
 
-// НовБотСтатистика -- возвращает новую статистику бота
+// НовБотСтатистика -- возвращает новую статистику
 func НовСтатПарам(имя string) *СтатПарам {
 	лог := kernel_log.НовЛоггер("СтатПарам")
 	лог.Инфо("НовСтатПарам(%s)\n", имя)

+ 9 - 0
app/lev2/arena/arena.go

@@ -7,6 +7,7 @@ import (
 	"sync"
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena/arena_context"
+	"wartank/app/lev2/arena/arena_net"
 	"wartank/app/lev2/arena/arena_string"
 	"wartank/app/lev2/arena/down_time"
 	"wartank/pkg/alias"
@@ -37,6 +38,7 @@ type Арена struct {
 	времяОстат ИВремяОстат               // Обратный отсчёт до окончания работы режима
 	списСтр    *arena_string.АренаСтроки // Список строк из сети для анализа секции
 	конф       АренаКонфиг
+	сеть       ИАренаСеть
 	блок       sync.RWMutex
 }
 
@@ -51,6 +53,7 @@ func НовАрена(конт ИБотКонтекст, конф АренаКо
 		списСтр:        arena_string.НовАренаСтроки(конт, конф.СтрКонтроль_),
 		конф:           конф,
 	}
+	сам.сеть = arena_net.НовАренаСеть_(конт, сам, конф.СтрУрл_) //"https://wartank.ru/angar")
 	_ = ИАрена(сам)
 	return сам
 }
@@ -63,6 +66,7 @@ func (сам *Арена) Пуск() {
 
 // Обновить -- обновляет арену
 func (сам *Арена) Обновить() {
+	сам.сеть.Обновить()
 	списСтр := сам.СписПолучить()
 	if len(списСтр) == 0 {
 		списСтр = сам.Бот().Сеть().ВебВоркер().Получ(сам.конф.СтрУрл_)
@@ -102,3 +106,8 @@ func (сам *Арена) ВремяОстат() ИВремяОстат {
 	defer сам.блок.RUnlock()
 	return сам.времяОстат
 }
+
+// Сеть -- возвращает объект сети
+func (сам *Арена) Сеть() ИАренаСеть {
+	return сам.сеть
+}

+ 1 - 1
app/lev2/arena/arena_net/arena_net.go

@@ -22,7 +22,7 @@ type АренаСеть struct {
 }
 
 // НовАренаСеть -- возвращает новый *АренаСеть
-func НовАренаСеть(конт ИБотКонтекст, сцена ИСценаСтр, стрУрл string) *АренаСеть {
+func НовАренаСеть_(конт ИБотКонтекст, сцена ИСценаСтр, стрУрл string) *АренаСеть {
 	лог := kernel_log.НовЛоггер("АренаСеть")
 	лог.Инфо("НовАренаСеть(): strUrl=%q\n", стрУрл)
 	лог.Паника(сцена == nil, "НовАренаСеть(): ИСценаСтр == nil")

+ 45 - 0
app/lev2/arena/arena_net/arena_web_worker/arena_web_worker.go

@@ -0,0 +1,45 @@
+// package arena_web_worker -- веб-воркер  арены
+package arena_web_worker
+
+import (
+	"sync"
+
+	. "wartank/app/lev0/types"
+	"wartank/pkg/kernel/kernel_log"
+	. "wartank/pkg/kernel/kernel_types"
+)
+
+/*
+	Объект сетевого соединения
+*/
+
+// АренаВебВоркер -- объект сетевого соединения
+type АренаВебВоркер struct {
+	ботСеть   ИБотСеть
+	вебВоркер ИХттпВоркер
+	лог       ИЯдроЛог
+	block     sync.Mutex
+}
+
+// НовАренаВебВоркер -- возвращает сетевого клиента
+func НовАренаВебВоркер(конт ИБотКонтекст)  *АренаВебВоркер {//, ботСеть ИБотСеть)
+	лог := kernel_log.НовЛоггер("АренаВебВоркер")
+	лог.Инфо("НовАренаВебВоркер()\n")
+	сам := &АренаВебВоркер{
+		ботСеть:   конт.Получ("ботСеть").(ИБотСеть),
+		вебВоркер: конт.Получ("хттпВоркер").(ИХттпВоркер), //ботСеть.ВебВоркер(),
+		лог:       лог,
+	}
+	return сам
+}
+
+// Получ -- выполняет безопасный GET-запрос в сеть
+func (сам *АренаВебВоркер) Получ(ссылка string) (lstString []string, err error) {
+	сам.block.Lock()
+	defer сам.block.Unlock()
+	// if ссылка == "https://wartank.ru/production/Mine" {
+	сам.лог.Отладка("АренаВебВоркер.Получ(): link=%v\n", ссылка)
+	// }
+	списОтвет := сам.вебВоркер.Получ(ссылка)
+	return списОтвет, nil
+}

+ 0 - 45
app/lev2/arena/arena_net/scene_web_worker/scene_web_worker.go

@@ -1,45 +0,0 @@
-// package scene_web_worker -- веб-воркер  сцены
-package scene_web_worker
-
-import (
-	"sync"
-
-	. "wartank/app/lev0/types"
-	"wartank/pkg/kernel/kernel_log"
-	. "wartank/pkg/kernel/kernel_types"
-)
-
-/*
-	Объект сетевого соединения
-*/
-
-// СценаВебВоркер -- объект сетевого соединения
-type СценаВебВоркер struct {
-	ботСеть   ИБотСеть
-	вебВоркер ИХттпВоркер
-	лог       ИЯдроЛог
-	block     sync.Mutex
-}
-
-// НовСценаВебВоркер -- возвращает сетевого клиента
-func НовСценаВебВоркер(конт ИЯдроКонтекст, ботСеть ИБотСеть) *СценаВебВоркер {
-	лог := kernel_log.НовЛоггер("СценаВебВоркер")
-	лог.Инфо("НовСценаВебВоркер()\n")
-	сам := &СценаВебВоркер{
-		ботСеть:   ботСеть,
-		вебВоркер: ботСеть.ВебВоркер(),
-		лог:       лог,
-	}
-	return сам
-}
-
-// Получ -- выполняет безопасный GET-запрос в сеть
-func (сам *СценаВебВоркер) Получ(ссылка string) (lstString []string, err error) {
-	сам.block.Lock()
-	defer сам.block.Unlock()
-	// if ссылка == "https://wartank.ru/production/Mine" {
-	сам.лог.Отладка("СценаВебВоркер.Получ(): link=%v\n", ссылка)
-	// }
-	списОтвет := сам.вебВоркер.Получ(ссылка)
-	return списОтвет, nil
-}

+ 2 - 5
app/lev2/arena_angar/arena_angar.go

@@ -8,8 +8,8 @@ import (
 	"time"
 
 	. "wartank/app/lev0/types"
+	"wartank/app/lev1/stat_param"
 	"wartank/app/lev2/arena"
-	"wartank/app/lev2/arena/arena_net"
 	"wartank/app/lev2/arena_angar/fuel_attack"
 	"wartank/app/lev2/arena_base"
 	"wartank/app/lev2/arena_battle"
@@ -18,7 +18,6 @@ import (
 	"wartank/app/lev2/arena_missions"
 	"wartank/app/lev2/arena_upgrade"
 	"wartank/app/lev3/bot/bot_net/bot_net_stat"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
 	"wartank/app/lev3/bot/bot_stat/stat_resurs"
 	"wartank/pkg/alias"
 )
@@ -31,7 +30,6 @@ import (
 type АренаАнгар struct {
 	ИАрена
 	прилож ИПриложение
-	сеть   ИАренаСеть
 	бот    ИБот
 
 	уровень  ИСтатПарам
@@ -69,7 +67,6 @@ func НовАнгар(конт ИБотКонтекст) (*АренаАнгар,
 	}
 	конт.Уст("ангар", сам)
 	сам.ИАрена = arena.НовАрена(конт, аренаКонф)
-	сам.сеть = arena_net.НовАренаСеть(конт, сам, "https://wartank.ru/angar")
 	var err error
 	топливоБой, err := fuel_attack.НовТопливоБой(конт, сам)
 	if err != nil {
@@ -154,7 +151,7 @@ func (сам *АренаАнгар) пуск() {
 
 // Обновляет ресурсы ангара
 func (сам *АренаАнгар) РесурсыОбновить() {
-	сам.сеть.Обновить()
+	сам.ИАрена.Обновить()
 	сам.золотоНайти()
 	сам.сереброНайти()
 }

+ 1 - 1
app/lev2/arena_angar/fuel/fuel.go

@@ -9,7 +9,7 @@ import (
 	"time"
 
 	. "wartank/app/lev0/types"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 )
 
 // Топливо -- топливо в баке, +1 каждые 15 сек

+ 9 - 9
app/lev2/arena_angar/fuel_attack/fuel_attack.go

@@ -10,7 +10,6 @@ import (
 
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
-	"wartank/app/lev2/arena/arena_net"
 	"wartank/pkg/cons"
 )
 
@@ -18,22 +17,23 @@ import (
 type ТопливоБой struct {
 	ИАрена
 	ангар     ИАнгар
-	аренаСеть *arena_net.АренаСеть
+	клиент ИХттпВоркер
 }
 
 // НовТопливоБой -- возвращает новый *ТопливоБойNet
 func НовТопливоБой(конт ИБотКонтекст, ангар ИАнгар) (*ТопливоБой, error) {
-	аренаСеть := arena_net.НовАренаСеть(конт, ангар, "https://wartank.ru/battle")
+		хттпВоркер:=конт.Получ("хттпВоркер").(ИХттпВоркер)
 	сам := &ТопливоБой{
 		ангар:     ангар,
-		аренаСеть: аренаСеть,
+		клиент: хттпВоркер,
 	}
+
 	аренаКонфиг := arena.АренаКонфиг{
 		Бот_:         ангар.Бот(),
 		АренаИмя_:    "ТопливоБой",
 		СтрКонтроль_: `<title>Бой</title>`,
 		ФнПуск_:      сам.пуск,
-		СтрУрл_:      "https://wartank.ru/angar",
+		СтрУрл_:      "https://wartank.ru/battle",
 	}
 	сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
 	_ = ИАрена(сам)
@@ -87,7 +87,7 @@ func (сам *ТопливоБой) начатьБой() (списСтрБой [
 	бойСсылка := списАнгар[1]
 	списАнгар = strings.Split(бойСсылка, `"><span><span>В бой!</span></span></a>`)
 	бойСсылка = "https://wartank.ru/" + списАнгар[0]
-	списСтрБой, err = сам.аренаСеть.Get(бойСсылка)
+	списСтрБой, err = сам.Сеть().Get(бойСсылка)
 	if err != nil {
 		return nil, fmt.Errorf("ТопливоБой.начатьБой(): in make GET-request to battle, err=\n\t%w", err)
 	}
@@ -144,7 +144,7 @@ func (сам *ТопливоБой) выбратьБойСлабый(списС
 		списСтрБой = strings.Split(ссылкаБой, `"><img class="tank-img" alt="tank" src="/tankimg?`)
 		ссылкаБой = "https://wartank.ru/" + списСтрБой[0]
 	}
-	списСтрВыстрел1, err = сам.аренаСеть.Get(ссылкаБой)
+	списСтрВыстрел1, err = сам.Сеть().Get(ссылкаБой)
 	if err != nil {
 		return nil, fmt.Errorf("ТопливоБой.makeSelectBattle(): in GET-response select battle tank, err=\n\t%w", err)
 	}
@@ -218,7 +218,7 @@ func (сам *ТопливоБой) сделатьВыстрелы(lstShoot2 []s
 			lstShoot2 = strings.Split(linkShoot2, `"><span><span>Добить</span></span></a>`)
 			linkShoot2 = "https://wartank.ru/" + lstShoot2[0]
 		}
-		списВыстрел3, err = сам.аренаСеть.Get(linkShoot2)
+		списВыстрел3, err = сам.Сеть().Get(linkShoot2)
 		if err != nil {
 			return fmt.Errorf("ТопливоБой.makeShooting(): in Get-response shoot2, err=\n\t%w", err)
 		}
@@ -292,7 +292,7 @@ func (сам *ТопливоБой) сделатьВыстрелы(lstShoot2 []s
 			linkShoot3 = "https://wartank.ru/" + списВыстрел3[0]
 		}
 
-		if _, err = сам.аренаСеть.Get(linkShoot3); err != nil {
+		if _, err = сам.Сеть().Get(linkShoot3); err != nil {
 			return fmt.Errorf("ТопливоБой.makeShooting(): in Get-response shoot3, err=\n\t%w", err)
 		}
 		fuel := сам.ангар.Топливо().Получ()

+ 16 - 19
app/lev2/arena_arsenal/arena_arsenal.go

@@ -11,8 +11,7 @@ import (
 
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
-	"wartank/app/lev2/arena/arena_net"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 	"wartank/pkg/components/web_log"
 	"wartank/pkg/kernel/kernel_log"
 	. "wartank/pkg/kernel/kernel_types"
@@ -32,7 +31,6 @@ type АренаАрсенал struct {
 	лог          ИЯдроЛог
 	бот          ИБот
 	база         ИБаза
-	сеть         ИАренаСеть
 	фугас        ИСтатПарам
 	бронебойка   ИСтатПарам
 	кумулятив    ИСтатПарам
@@ -74,7 +72,6 @@ func НовАрсенал(конт ИБотКонтекст, база ИБаза
 	}
 	сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
 	сам.вЛог = web_log.НовВебЛог(true)
-	сам.сеть = arena_net.НовАренаСеть(конт, сам, "https://wartank.ru/production/Armory")
 	go сам.пуск()
 	сам.вЛог.Добавить("НовАрсенал(): Арсенал создан")
 	return сам, nil
@@ -154,14 +151,14 @@ func (сам *АренаАрсенал) пуск() {
 // Проверяет необходимость постройки
 func (сам *АренаАрсенал) проверитьПостроить() bool {
 	сам.вЛог.Добавить("Арсенал.проверитьПостроить()\n")
-	_ = сам.сеть.ВебВоркер().Получ("https://wartank.ru/building-upgrade/Armory")
+	_ = сам.Сеть().ВебВоркер().Получ("https://wartank.ru/building-upgrade/Armory")
 	return true
 }
 
 // Обновляет текущий уровень арсенала (может быть не построена)
 func (сам *АренаАрсенал) уровеньОбновить() bool {
 	сам.вЛог.Добавить("Арсенал.уровеньОбновить()\n")
-	списСтр := сам.сеть.ВебВоркер().Получ("http://wartank.ru/buildings")
+	списСтр := сам.Сеть().ВебВоркер().Получ("http://wartank.ru/buildings")
 	// <span class="green2">Оружейная - 0</span><br/>
 	var (
 		еслиНайти = false
@@ -194,7 +191,7 @@ func (сам *АренаАрсенал) уровеньОбновить() bool {
 // Строит арсенал при нулевом уровне
 func (сам *АренаАрсенал) построить() (bool, error) {
 	сам.вЛог.Добавить("Арсенал.построить()\n")
-	списСтр := сам.сеть.ВебВоркер().Получ("https://wartank.ru/building-upgrade/Armory")
+	списСтр := сам.Сеть().ВебВоркер().Получ("https://wartank.ru/building-upgrade/Armory")
 	// <span class="green2">Арсенал - 0</span><br/>
 	var (
 		еслиНайти = false
@@ -216,7 +213,7 @@ func (сам *АренаАрсенал) построить() (bool, error) {
 	_стр = strings.TrimSuffix(_стр, `">`)
 	ссылка := "https://wartank.ru/building-upgrade/" + _стр
 	// https://wartank.ru/building-upgrade/Armory?35-1.ILinkListener-upgradeLink-link
-	списСтр = сам.сеть.ВебВоркер().Получ(ссылка)
+	списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
 	еслиНайти = false
 	// "<a class=\"simple-but border mb5\" href=\"Armory?14-1.ILinkListener-upgradeLink-link\">"
 	for _, стр = range списСтр {
@@ -244,7 +241,7 @@ func (сам *АренаАрсенал) проапгрейдить() bool {
 	)
 	фнКупить := func() bool {
 		defer time.Sleep(time.Millisecond * 1000)
-		списСтр = сам.сеть.ВебВоркер().Получ("https://wartank.ru/building-upgrade/Armory")
+		списСтр = сам.Сеть().ВебВоркер().Получ("https://wartank.ru/building-upgrade/Armory")
 		for _, стр = range списСтр {
 			// <a class="simple-but border mb5" href="Armory?5-1.ILinkListener-upgradeLink-link">
 			if strings.Contains(стр, `ILinkListener-upgradeLink-link`) {
@@ -262,7 +259,7 @@ func (сам *АренаАрсенал) проапгрейдить() bool {
 		// https://wartank.ru/building-upgrade/Armory?4-1.ILinkListener-upgradeLink-link
 		// <a class="simple-but border mb5" href="Armory?50-1.ILinkListener-upgradeLink-link">
 		ссылка := "https://wartank.ru/building-upgrade/" + _стр
-		списСтр = сам.сеть.ВебВоркер().Получ(ссылка)
+		списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
 		// Проверить, что постройка состоялась
 		for _, стр := range списСтр {
 			if strings.Contains(стр, "ILinkListener-upgradeLink-link") {
@@ -291,7 +288,7 @@ func (сам *АренаАрсенал) проапгрейдить() bool {
 		_стр = strings.TrimSuffix(_стр, `"><span><span>да, подтверждаю</span></span></a>`)
 		// https://wartank.ru/wicket/page?6-1.ILinkListener-confirmLink
 		ссылка := "https://wartank.ru" + _стр
-		списСтр = сам.сеть.ВебВоркер().Получ(ссылка)
+		списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
 		// Проверить, что постройка состоялась
 		for _, стр := range списСтр {
 			if strings.Contains(стр, "<title>Вы сделали слишком большую паузу</title>") {
@@ -350,7 +347,7 @@ func (сам *АренаАрсенал) забрать() bool {
 		ош         error
 	)
 	time.Sleep(time.Millisecond * 100)
-	лстАрсенал, ош = сам.сеть.Get(strLink)
+	лстАрсенал, ош = сам.Сеть().Get(strLink)
 	if ош != nil {
 		log.Printf("Арсенал.забрать(): при выполнении Get-запроса? err=\n\t%v\n", ош)
 		return false
@@ -396,7 +393,7 @@ func (сам *АренаАрсенал) Ремки() ИСтатПарам {
 // Обновляет состояние арсенала по требованию
 func (сам *АренаАрсенал) СтатаОбновить() (err error) {
 	сам.вЛог.Добавить("Арсенал.СтатаОбновить()\n")
-	сам.сеть.Обновить()
+	сам.Сеть().Обновить()
 	var (
 		strOut     string
 		lstArsenal = сам.СписПолучить()
@@ -479,7 +476,7 @@ func (сам *АренаАрсенал) СтатаОбновить() (err error)
 
 // Выбирает что надо делать, запускает процесс изготовления
 func (сам *АренаАрсенал) сделать() bool {
-	сам.сеть.Обновить()
+	сам.Обновить()
 	// _mt.Println("\tArsenalNet.сделать()")
 	var (
 		ремкаКол  = сам.Ремки().Получ()
@@ -550,7 +547,7 @@ func (сам *АренаАрсенал) сделатьБронебойки() boo
 	lstArmor = strings.Split(strLink, `"><span><span>Начать производство</span></span></a>`)
 	strLink = "https://wartank.ru/production/" + lstArmor[0]
 	time.Sleep(time.Millisecond * 50)
-	if _, err := сам.сеть.Get(strLink); err != nil {
+	if _, err := сам.Сеть().Get(strLink); err != nil {
 		// log._rintf("ERRO ArsenalNet.makeArmor(): in update lstArsenal,  err=\n\t%v\n", err)
 		return false
 	}
@@ -585,7 +582,7 @@ func (сам *АренаАрсенал) сделатьКумули() bool {
 	списКумул = strings.Split(strLink, `"><span><span>Начать производство</span></span></a>`)
 	strLink = "https://wartank.ru/production/" + списКумул[0]
 	time.Sleep(time.Millisecond * 50)
-	if _, err := сам.сеть.Get(strLink); err != nil {
+	if _, err := сам.Сеть().Get(strLink); err != nil {
 		// log._rintf("ERRO ArsenalNet.makeКумуль(): in make product arsenal кумуль , err=\n\t%v\n", err)
 		return false
 	}
@@ -621,7 +618,7 @@ func (сам *АренаАрсенал) сделатьФугасы() bool {
 	списКумул = strings.Split(strLink, `"><span><span>Начать производство</span></span></a>`)
 	strLink = "https://wartank.ru/production/" + списКумул[0]
 	time.Sleep(time.Millisecond * 50)
-	if _, err := сам.сеть.Get(strLink); err != nil {
+	if _, err := сам.Сеть().Get(strLink); err != nil {
 		// log._rintf("ERRO ArsenalNet.makeФугас(): in make request arsenal product, err=\n\t%v\n", err)
 		return false
 	}
@@ -638,7 +635,7 @@ func (сам *АренаАрсенал) сделатьРемку() bool {
 		еслиНайдено bool
 		инд         int
 	)
-	lstArsenal := сам.сеть.ВебВоркер().Получ("https://wartank.ru/production/Armory")
+	lstArsenal := сам.Сеть().ВебВоркер().Получ("https://wartank.ru/production/Armory")
 	// <span class="green2">Ремкомплект</span><br/>
 	for инд, стрВых = range lstArsenal {
 		if strings.Contains(стрВых, `<span class="green2">Ремкомплект</span><br/>`) {
@@ -660,7 +657,7 @@ func (сам *АренаАрсенал) сделатьРемку() bool {
 	// https://wartank.ru/production/Armory?37-1.ILinkListener-productions-3-production-startProduceLink
 	ссылка := "https://wartank.ru/production/" + _ссылка
 	time.Sleep(time.Millisecond * 50)
-	_ = сам.сеть.ВебВоркер().Получ(ссылка)
+	_ = сам.Сеть().ВебВоркер().Получ(ссылка)
 	сам.АренаСостояние().СостояниеУст(стрРемки)
 	return true
 }

+ 12 - 15
app/lev2/arena_bank/arena_bank.go

@@ -9,9 +9,8 @@ import (
 
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
-	"wartank/app/lev2/arena/arena_net"
 	"wartank/app/lev2/arena_bank/bank_mode"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 	"wartank/pkg/alias"
 )
 
@@ -22,7 +21,6 @@ import (
 // Банк -- объект банка на базе
 type АренаБанк struct {
 	ИАрена
-	сеть       ИАренаСеть
 	сереброБот ИСтатПарам
 	режим1     *bank_mode.BankMode // 1 режим работы на выбор
 	режим2     *bank_mode.BankMode // 2 режим работы на выбор
@@ -44,7 +42,6 @@ func НовБанк(конт ИБотКонтекст, база ИБаза) (*А
 		СтрУрл_:      "https://wartank.ru/production/Bank",
 	}
 	сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
-	сам.сеть = arena_net.НовАренаСеть(конт, сам, "https://wartank.ru/production/Bank")
 	return сам, nil
 }
 
@@ -57,7 +54,7 @@ func (сам *АренаБанк) Пуск() error {
 
 // UpdateLst -- принудительно обновляет состояние банка
 func (сам *АренаБанк) UpdateLst() {
-	сам.сеть.Обновить()
+	сам.Обновить()
 }
 
 // запускает банк в опрос
@@ -74,7 +71,7 @@ func (сам *АренаБанк) пуск() {
 			time.Sleep(time.Minute * 25)
 			return
 		}
-		сам.сеть.Обновить()
+		сам.Обновить()
 
 		if ош := сам.получитьВсеРежимы(); ош != nil {
 			log.Printf("ERRO Банк.пуск(): при получении списка режимов банка, err=\n\t%v\n", ош)
@@ -96,7 +93,7 @@ func (сам *АренаБанк) проверитьУскорить() bool {
 		стрСсылка   = ""
 		еслиНайдено = false
 	)
-	списБанк := сам.сеть.ВебВоркер().Получ("https://wartank.ru/buildings")
+	списБанк := сам.Сеть().ВебВоркер().Получ("https://wartank.ru/buildings")
 	// <td style="width:50%;padding-left:1px;"><a class="simple-but border" href="buildings?1-1.ILinkListener-buildings-1-building-rootBlock-actionPanel-freeBoostLink"><span><span>Ускорение</span></span></a>
 	for _, стрСсылка = range списБанк {
 		if strings.Contains(стрСсылка, `.ILinkListener-buildings-1-building-rootBlock-actionPanel-freeBoostLink`) {
@@ -110,7 +107,7 @@ func (сам *АренаБанк) проверитьУскорить() bool {
 	_ссылка := strings.TrimPrefix(стрСсылка, `<td style="width:50%;padding-left:1px;"><a class="simple-but border" href="`)
 	_ссылка = strings.TrimSuffix(_ссылка, `"><span><span>Ускорение</span></span></a>`)
 	ссылка := "https://wartank.ru/" + _ссылка
-	_ = сам.сеть.ВебВоркер().Получ(ссылка)
+	_ = сам.Сеть().ВебВоркер().Получ(ссылка)
 	return true
 }
 
@@ -120,7 +117,7 @@ func (сам *АренаБанк) забрать() {
 		strOut      string
 		еслиНайдено bool
 	)
-	списБанк := сам.сеть.ВебВоркер().Получ("https://wartank.ru/buildings")
+	списБанк := сам.Сеть().ВебВоркер().Получ("https://wartank.ru/buildings")
 	// <a class="simple-but border" href="buildings?0-1.ILinkListener-buildings-1-building-rootBlock-actionPanel-takeProductionLink"><span><span>Забрать</span></span></a>
 	for _, strOut = range списБанк {
 		if strings.Contains(strOut, `.ILinkListener-buildings-1-building-rootBlock-actionPanel-takeProductionLink`) {
@@ -135,7 +132,7 @@ func (сам *АренаБанк) забрать() {
 	_ссылка = strings.TrimSuffix(_ссылка, `"><span><span>Забрать</span></span></a>`)
 	// https://wartank.ru/buildings?3-1.ILinkListener-buildings-1-building-rootBlock-actionPanel-takeProductionLink
 	ссылка := "https://wartank.ru/" + _ссылка
-	_ = сам.сеть.ВебВоркер().Получ(ссылка)
+	_ = сам.Сеть().ВебВоркер().Получ(ссылка)
 }
 
 // Проверяет необходимость постройки полигона
@@ -144,7 +141,7 @@ func (сам *АренаБанк) построитьУлучшить() bool {
 
 	{ // Зайти на страницу постройки
 		// https://wartank.ru/building-upgrade/Bank
-		списБанк = сам.сеть.ВебВоркер().Получ("https://wartank.ru/building-upgrade/Bank")
+		списБанк = сам.Сеть().ВебВоркер().Получ("https://wartank.ru/building-upgrade/Bank")
 		стрСсылка := ""
 		еслиНайти := false
 		// <a class="simple-but border mb5" href="Bank?192-1.ILinkListener-upgradeLink-link">
@@ -161,7 +158,7 @@ func (сам *АренаБанк) построитьУлучшить() bool {
 		_ссылка = strings.TrimSuffix(_ссылка, `">`)
 		ссылка := "https://wartank.ru/building-upgrade/" + _ссылка
 		// https://wartank.ru/building-upgrade/Bank?162-1.ILinkListener-upgradeLink-link
-		списБанк = сам.сеть.ВебВоркер().Получ(ссылка)
+		списБанк = сам.Сеть().ВебВоркер().Получ(ссылка)
 	}
 	{ // Заказать постройку
 		// https://wartank.ru/building-upgrade/Bank
@@ -179,7 +176,7 @@ func (сам *АренаБанк) построитьУлучшить() bool {
 			_ссылка = strings.TrimSuffix(_ссылка, `">`)
 			ссылка := "https://wartank.ru/building-upgrade/" + _ссылка
 			// https://wartank.ru/building-upgrade/Bank?162-1.ILinkListener-upgradeLink-link
-			списБанк = сам.сеть.ВебВоркер().Получ(ссылка)
+			списБанк = сам.Сеть().ВебВоркер().Получ(ссылка)
 		}
 	}
 	{ // подтверждение постройки
@@ -199,7 +196,7 @@ func (сам *АренаБанк) построитьУлучшить() bool {
 		_ссылка = strings.TrimSuffix(_ссылка, "\"><span><span>да, подтверждаю</span></span></a>")
 		ссылка := "https://wartank.ru/" + _ссылка
 		// https://wartank.ru/wicket/page?135-1.ILinkListener-confirmLink
-		_ = сам.сеть.ВебВоркер().Получ(ссылка)
+		_ = сам.Сеть().ВебВоркер().Получ(ссылка)
 	}
 	log.Printf("Банк.построитьПровер(): построен успешно\n")
 	return true
@@ -247,7 +244,7 @@ func (сам *АренаБанк) сделатьСеребро() (alias.МилС
 		strLink = lstLink[1]
 		lstLink = strings.Split(strLink, `"><span><span>Начать производство</span></span></a>`)
 		strLink = "https://wartank.ru/production/" + lstLink[0]
-		lstBank, err := сам.сеть.Get(strLink)
+		lstBank, err := сам.Сеть().Get(strLink)
 		if err != nil {
 			return 0, fmt.Errorf("BankNet.makeProduct(): при выполнении GET-запроса начать производство, err=%w", err)
 		}

+ 1 - 1
app/lev2/arena_bank/bank_mode/bank_mode.go

@@ -2,7 +2,7 @@ package bank_mode
 
 import (
 	. "wartank/app/lev0/types"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+"wartank/app/lev1/stat_param"
 )
 
 /*

+ 8 - 12
app/lev2/arena_base/arena_base.go

@@ -11,10 +11,9 @@ import (
 
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
-	"wartank/app/lev2/arena/arena_net"
 	"wartank/app/lev2/arena_arsenal"
 	"wartank/app/lev2/arena_bank"
-	"wartank/app/lev2/arena_base/fuel"
+	"wartank/app/lev2/arena_fuel_storage"
 	"wartank/app/lev2/arena_laborator"
 	"wartank/app/lev2/arena_market"
 	"wartank/app/lev2/arena_mine"
@@ -36,13 +35,12 @@ const (
 type АренаБаза struct {
 	ИАрена
 	бот          ИБот
-	сеть         ИАренаСеть
 	арсенал      ИАренаАрсенал
 	банк         *arena_bank.АренаБанк
 	полигон      *arena_polygon.АренаПолигон
 	шахта        ИАренаШахта
 	рынок        *arena_market.АренаРынок
-	складТоплива *fuel.СкладТоплива
+	складТоплива *arena_fuel_storage.АренаСкладТоплива
 	лаборатория  *arena_laborator.АренаЛаборатория
 	времОстат    int // Сколько времени спать до опроса базы
 	блок         sync.Mutex
@@ -62,8 +60,6 @@ func НовБаза(конт ИБотКонтекст, ангар ИАнгар)
 		СтрУрл_:      "https://wartank.ru/buildings",
 	}
 	сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
-	strUrl := "https://wartank.ru/buildings"
-	сам.сеть = arena_net.НовАренаСеть(конт, сам, strUrl)
 	var ош error
 	{ // Arsenal
 		сам.арсенал, ош = arena_arsenal.НовАрсенал(конт, сам)
@@ -93,7 +89,7 @@ func НовБаза(конт ИБотКонтекст, ангар ИАнгар)
 		}
 	}
 	{ // Склад топлива
-		сам.складТоплива, ош = fuel.НовСкладТоплива(конт, сам)
+		сам.складТоплива, ош = arena_fuel_storage.НовСкладТоплива(конт, сам)
 		if ош != nil {
 			return nil, fmt.Errorf("НовБаза(): при создании склада топлива, err=\n\t%w", ош)
 		}
@@ -114,7 +110,7 @@ func (сам *АренаБаза) Пуск() {
 func (сам *АренаБаза) пуск() {
 	фнЦикл := func() {
 		defer time.Sleep(time.Minute * 2)
-		сам.сеть.Обновить()
+		сам.Обновить()
 		сам.проверитьПолигонУсиление()              // Проверить усиление полигона
 		if err := сам.проверитьБанк(); err != nil { // Проверка режимов банка
 			log.Printf("ERRO Base.Run(): при проверке банка, err=\n\t%v\n", err)
@@ -540,7 +536,7 @@ func (сам *АренаБаза) проверитьАрсеналУскорен
 		strLink := lstLink[1]
 		lstLink = strings.Split(strLink, `"><span><span>Ускорение</span></span></a>`)
 		strLink = "https://wartank.ru/" + lstLink[0]
-		lstBase, err := сам.сеть.Get(strLink)
+		lstBase, err := сам.Сеть().Get(strLink)
 		if err != nil {
 			// log._rintf("ERRO NetBank.checkArsenalForce(): при GET-запросе на бесплатном ускорении апгрейда арсенала, err=\n\t%v\n", err)
 			return
@@ -712,7 +708,7 @@ func (сам *АренаБаза) checkBankForce() {
 			strLink := lstLink[1]
 			lstLink = strings.Split(strLink, `"><span><span>Ускорение</span></span></a>`)
 			strLink = "https://wartank.ru/" + lstLink[0]
-			lstBase, err := сам.сеть.Get(strLink)
+			lstBase, err := сам.Сеть().Get(strLink)
 			if err != nil {
 				// log._rintf("ERRO NetBank.checkBankForce(): при GET-запросе на бесплатном ускорении апгрейда банка, err=\n\t%v\n", err)
 				return
@@ -775,7 +771,7 @@ func (сам *АренаБаза) шахтаАпгрейдФорсаж() {
 			strLink := lstLink[1]
 			lstLink = strings.Split(strLink, `"><span><span>Ускорение</span></span></a>`)
 			strLink = "https://wartank.ru/" + lstLink[0]
-			lstBase, err := сам.сеть.Get(strLink)
+			lstBase, err := сам.Сеть().Get(strLink)
 			if err != nil {
 				// log._rintf("ERRO NetBank.checkMineForce(): при GET-запросе на бесплатном ускорении апгрейда шахты, err=\n\t%v\n", err)
 				return
@@ -854,7 +850,7 @@ func (сам *АренаБаза) проверитьПолигонУсилени
 			strLink := lstLink[1]
 			lstLink = strings.Split(strLink, `"><span><span>Ускорение</span></span></a>`)
 			strLink = "https://wartank.ru/" + lstLink[0]
-			lstBase, err := сам.сеть.Get(strLink)
+			lstBase, err := сам.Сеть().Get(strLink)
 			if err != nil {
 				// log._rintf("ERRO NetBank.checkPolygonForce(): при GET-запросе на бесплатном ускорении апгрейда полигона, err=\n\t%v\n", err)
 				return

+ 1 - 2
app/lev2/arena_battle/battle_net/battle_net.go

@@ -3,7 +3,6 @@ package battle_net
 import (
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena/arena_net"
-	. "wartank/pkg/kernel/kernel_types"
 )
 
 /*
@@ -16,7 +15,7 @@ type BattleNet struct {
 }
 
 // NewBattleNet -- возвращает новый *BattleNet
-func NewBattleNet(конт ИЯдроКонтекст, battle ИСражениеСцена) *BattleNet {
+func NewBattleNet(конт ИБотКонтекст, battle ИСражениеСцена) *BattleNet {
 	sectionNet := arena_net.НовАренаСеть(конт, battle, "https://wartank.ru/pve")
 	сам := &BattleNet{
 		ИАренаСеть: sectionNet,

+ 1 - 1
app/lev2/arena_battle/battle_worker/battle_worker.go

@@ -9,7 +9,7 @@ import (
 	"wartank/app/lev2/arena/arena_net"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 )
 
 // СражениеДействие -- исполнение битвы

+ 1 - 1
app/lev2/arena_battle/battle_worker/battle_worker/battle_sound/battle_sound.go

@@ -3,7 +3,7 @@ package battle_sound
 import (
 	"time"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound/is_sound_play"
-	"wartank/pkg/components/sound"
+	"wartank/app/lev1/sound"
 )
 
 /*

+ 1 - 1
app/lev2/arena_battle/battle_worker/battle_worker/battlesound/battlesound.go

@@ -3,7 +3,7 @@ package battle_sound
 import (
 	"time"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound/is_sound_play"
-	"wartank/pkg/components/sound"
+		"wartank/app/lev1/sound"
 )
 
 /*

+ 12 - 15
app/lev2/arena_convoy/arena_convoy.go

@@ -9,8 +9,7 @@ import (
 
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
-	"wartank/app/lev2/arena/arena_net"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 	"wartank/pkg/alias"
 )
 
@@ -21,7 +20,6 @@ import (
 // АренаКонвой -- объект конвоя в ангаре
 type АренаКонвой struct {
 	ИАрена
-	сеть  ИАренаСеть
 	бот   ИБот
 	слава ИСтатПарам // Количество славы
 }
@@ -40,13 +38,12 @@ func НовКонвой(конт ИБотКонтекст, бот ИБот) *А
 		СтрУрл_:      "https://wartank.ru/convoy",
 	}
 	сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
-	сам.сеть = arena_net.НовАренаСеть(конт, сам, "https://wartank.ru/convoy")
 	return сам
 }
 
 // UpdateLst -- принудительно обновляет состояние конвоя
 func (сам *АренаКонвой) UpdateLst() {
-	сам.сеть.Обновить()
+	сам.Обновить()
 }
 
 // Слава --возвращает счётчик славы конвоя
@@ -124,7 +121,7 @@ func (сам *АренаКонвой) Обновить() {
 // Обновляет оставшееся время конвоя
 func (сам *АренаКонвой) обновитьВремя() {
 	// Время подходит надо обновляться
-	сам.сеть.Обновить()
+	сам.Обновить()
 	ош := сам.ОбратВремяУст("20")
 	if ош != nil {
 		log.Printf("Конвой.обновитьВремя(): при обновлении времени, ош=\n\t%v\n", ош)
@@ -194,7 +191,7 @@ func (сам *АренаКонвой) найтиВбой() string {
 		strOut      = ""
 		еслиНайдено bool
 	)
-	lstConvoy := сам.сеть.ВебВоркер().Получ("https://wartank.ru/convoy")
+	lstConvoy := сам.Сеть().ВебВоркер().Получ("https://wartank.ru/convoy")
 	if сам.бот.Имя() == "prospero tank" {
 		log.Printf("")
 	}
@@ -259,7 +256,7 @@ func (сам *АренаКонвой) атакаНачать() {
 	}
 	strLink := strOut
 	// Можно начать разведку
-	lstConvoy := сам.сеть.ВебВоркер().Получ(strLink)
+	lstConvoy := сам.Сеть().ВебВоркер().Получ(strLink)
 	if err := сам.СтрОбновить(lstConvoy); err != nil {
 		for _, strOut = range lstConvoy {
 			if strings.Contains(strOut, `<title>Ошибка на сервере. Сообщение админу уже отправлено.</title>`) {
@@ -304,7 +301,7 @@ func (сам *АренаКонвой) начатьРазведку() {
 	// https://wartank.ru/convoy?52-1.ILinkListener-root-findEnemy
 	link := "https://wartank.ru/" + _link
 	{ // Выполнить атаку
-		lstConvoy = сам.сеть.ВебВоркер().Получ(link)
+		lstConvoy = сам.Сеть().ВебВоркер().Получ(link)
 		if err := сам.СтрОбновить(lstConvoy); err != nil {
 			log.Printf("Конвой.attack(): при обновлении lstConvoy, err=\n\t%v\n", err)
 			return
@@ -318,7 +315,7 @@ func (сам *АренаКонвой) проверитьМиссияРазвед
 		strOut      string
 		еслиНайдено bool
 	)
-	сам.сеть.Обновить()
+	сам.Сеть().Обновить()
 	lstConvoy := сам.СписПолучить()
 	// <a class="simple-but border" href="convoy?21-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
 	for _, strOut = range lstConvoy {
@@ -335,7 +332,7 @@ func (сам *АренаКонвой) проверитьМиссияРазвед
 	_ссылка = strings.TrimSuffix(_ссылка, `"><span><span>Получить награду</span></span></a>`)
 	// https://wartank.ru/convoy?23-1.ILinkListener-missions-cc-0-c-awardLink
 	ссылка := "https://wartank.ru/" + _ссылка
-	lstConvoy = сам.сеть.ВебВоркер().Получ(ссылка)
+	lstConvoy = сам.Сеть().ВебВоркер().Получ(ссылка)
 	if err := сам.СтрОбновить(lstConvoy); err != nil {
 		log.Printf("Конвой.проверитьМиссияРазведкаКонвой(): пр обновлении lstConvoy, err=\n\t%v\n", err)
 		return
@@ -352,7 +349,7 @@ func (сам *АренаКонвой) проверитьМиссияМастер
 		ind         int
 	)
 	if len(lstConvoy) == 0 {
-		сам.сеть.Обновить()
+		сам.Обновить()
 		lstConvoy = сам.СписПолучить()
 	}
 	for ind, strOut = range lstConvoy {
@@ -375,7 +372,7 @@ func (сам *АренаКонвой) проверитьМиссияМастер
 	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
 	// https://wartank.ru/convoy?61-1.ILinkListener-missions-cc-0-c-awardLink
 	strLink = "https://wartank.ru/" + lstLink[0]
-	lstConvoy, err := сам.сеть.Get(strLink)
+	lstConvoy, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Конвой.checkMaster(): при выполнении команды GET, err=\n\t%v\n", err)
 		return
@@ -393,7 +390,7 @@ func (сам *АренаКонвой) проверитьМиссия6фраго
 		strOut      string
 		еслиНайдено bool
 	)
-	сам.сеть.Обновить()
+	сам.Обновить()
 	lstConvoy := сам.СписПолучить()
 	// <a class="simple-but border" href="convoy?8-1.ILinkListener-missions-cc-1-c-awardLink"><span><span>Получить награду</span></span></a>
 	for _, strOut = range lstConvoy {
@@ -410,7 +407,7 @@ func (сам *АренаКонвой) проверитьМиссия6фраго
 	_ссылка = strings.TrimSuffix(_ссылка, `"><span><span>Получить награду</span></span></a>`)
 	// https://wartank.ru/convoy?15-1.ILinkListener-missions-cc-1-c-awardLink
 	ссылка := "https://wartank.ru/" + _ссылка
-	lstConvoy = сам.сеть.ВебВоркер().Получ(ссылка)
+	lstConvoy = сам.Сеть().ВебВоркер().Получ(ссылка)
 	if err := сам.СтрОбновить(lstConvoy); err != nil {
 		log.Printf("Конвой.проверитьМиссия6фрагов(): при обновлении lstConvoy, ош=\n\t%v\n", err)
 		return

+ 1 - 1
app/lev2/arena_death/death_worker/death_on/battle_sound/battle_sound.go

@@ -3,7 +3,7 @@ package battle_sound
 import (
 	"time"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound/is_sound_play"
-	"wartank/pkg/components/sound"
+		"wartank/app/lev1/sound"
 )
 
 /*

+ 1 - 1
app/lev2/arena_death/death_worker/death_on/battlesound/battlesound.go

@@ -3,7 +3,7 @@ package battle_sound
 import (
 	"time"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound/is_sound_play"
-	"wartank/pkg/components/sound"
+		"wartank/app/lev1/sound"
 )
 
 /*

+ 1 - 1
app/lev2/arena_death/death_worker/death_on/death_on.go

@@ -49,9 +49,9 @@ func НовСхваткаДействие(конт ИЯдроКонтекст, 
 		АренаИмя_:    "Исполнитель схватки",
 		СтрКонтроль_: `<title>Схватка</title>`,
 		ФнПуск_:      сам.пуск,
+		СтрУрл_: "https://wartank.ru/de",
 	}
 	сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
-	сам.сеть = arena_net.НовАренаСеть(конт, сам, "https://wartank.ru/de")
 	go сам.пуск()
 	return сам
 }

+ 1 - 1
app/lev2/arena_death/death_worker/death_worker.go

@@ -9,7 +9,7 @@ import (
 	"wartank/app/lev2/arena/arena_net"
 	"wartank/app/lev2/arena_death/death_worker/death_on"
 	"wartank/app/lev2/arena_death/death_worker/death_on/battle_sound"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 	. "wartank/pkg/kernel/kernel_types"
 )
 

+ 1 - 1
app/lev2/arena_division/div_war/div_war.go

@@ -12,7 +12,7 @@ import (
 	"wartank/app/lev2/arena_division/div_war/div_war_net"
 	"wartank/app/lev2/arena_division/div_war/div_war_on"
 	"wartank/app/lev2/arena_division/div_war/div_war_on/div_war_sound"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+		"wartank/app/lev1/stat_param"
 	"wartank/pkg/alias"
 	. "wartank/pkg/kernel/kernel_types"
 )

+ 1 - 1
app/lev2/arena_division/div_war/div_war_on/div_war_sound/div_war_sound.go

@@ -3,7 +3,7 @@ package div_war_sound
 import (
 	"time"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound/is_sound_play"
-	"wartank/pkg/components/sound"
+		"wartank/app/lev1/sound"
 )
 
 /*

+ 1 - 1
app/lev2/arena_division/div_war/div_war_on/divwarsound/divwarsound.go

@@ -3,7 +3,7 @@ package div_war_sound
 import (
 	"time"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound/is_sound_play"
-	"wartank/pkg/components/sound"
+		"wartank/app/lev1/sound"
 )
 
 /*

+ 1 - 1
app/lev2/arena_division/divwar/divwar.go

@@ -12,7 +12,7 @@ import (
 	"wartank/app/lev2/arena_division/div_war/div_war_net"
 	"wartank/app/lev2/arena_division/div_war/div_war_on"
 	"wartank/app/lev2/arena_division/div_war/div_war_on/div_war_sound"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 	"wartank/pkg/alias"
 	. "wartank/pkg/kernel/kernel_types"
 )

+ 40 - 43
app/lev2/arena_base/fuel/fuel.go → app/lev2/arena_fuel_storage/arena_fuel_storage.go

@@ -1,5 +1,5 @@
-// package fuel -- склад топлива
-package fuel
+// package arena_fuel_storage -- склад топлива
+package arena_fuel_storage
 
 import (
 	"context"
@@ -10,14 +10,12 @@ import (
 
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
-	"wartank/app/lev2/arena/arena_net"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 )
 
-// СкладТоплива -- склад топлива
-type СкладТоплива struct {
+// АренаСкладТоплива -- склад топлива
+type АренаСкладТоплива struct {
 	ИАрена
-	сеть         ИАренаСеть
 	бот          ИБот
 	база         ИБаза
 	топливо      ИСтатПарам
@@ -28,9 +26,9 @@ type СкладТоплива struct {
 }
 
 // НовТопливо -- возвращает новой склад топлива
-func НовСкладТоплива(конт ИБотКонтекст, база ИБаза) (*СкладТоплива, error) {
+func НовСкладТоплива(конт ИБотКонтекст, база ИБаза) (*АренаСкладТоплива, error) {
 	кнт, фнОтмена := context.WithCancel(база.Контекст())
-	сам := &СкладТоплива{
+	сам := &АренаСкладТоплива{
 		бот:      база.Бот(),
 		база:     база,
 		топливо:  stat_param.НовСтатПарам("топливо"),
@@ -43,20 +41,19 @@ func НовСкладТоплива(конт ИБотКонтекст, база
 		АренаИмя_:    "Склад_топлива",
 		СтрКонтроль_: `<span class="green2">Склад топлива - `,
 		ФнПуск_:      сам.пуск,
-		СтрУрл_:      "https://wartank.ru/angar",
+		СтрУрл_:      "https://wartank.ru/fuelStore",
 	}
 	сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
-	сам.сеть = arena_net.НовАренаСеть(конт, сам, "https://wartank.ru/fuelStore")
 	_ = ИАренаТопливо(сам)
 	return сам, nil
 }
 
-func (сам *СкладТоплива) Пуск() {
+func (сам *АренаСкладТоплива) Пуск() {
 	go сам.пуск()
 }
 
 // пуск -- запускает обработку шахты
-func (сам *СкладТоплива) пуск() {
+func (сам *АренаСкладТоплива) пуск() {
 	time.Sleep(time.Second * 3)
 	фнРабота := func() {
 		defer time.Sleep(time.Minute * 30)
@@ -71,19 +68,19 @@ func (сам *СкладТоплива) пуск() {
 			return
 		case <-сам.ВремяОстат().КаналСиг():
 		default:
-			log.Printf("СкладТоплива.пуск()\n")
+			log.Printf("АренаСкладТоплива.пуск()\n")
 			фнРабота()
 		}
 	}
 }
 
 // Проверяет количество продукта в шахте
-func (сам *СкладТоплива) количествоПолучить() {
+func (сам *АренаСкладТоплива) количествоПолучить() {
 	var (
 		strOut      string
 		еслиНайдено bool
 	)
-	lstMine := сам.сеть.ВебВоркер().Получ("https://wartank.ru/buildings")
+	lstMine := сам.Сеть().ВебВоркер().Получ("https://wartank.ru/buildings")
 	/*
 		<img class="ico vm" src="/images/icons/fuel.png?2" alt="Топливо" title="Топливо"> 720
 	*/
@@ -99,15 +96,15 @@ func (сам *СкладТоплива) количествоПолучить() {
 	_число := strings.TrimPrefix(strOut, `<img class="ico vm" src="/images/icons/fuel.png?2" alt="Топливо" title="Топливо"> `)
 	iNum, err := strconv.Atoi(_число)
 	if err != nil {
-		log.Printf("СкладТоплива.количествоПолучить(): кол-во топлива (%v) не число, err=\n\t%v\n", _число, err)
+		log.Printf("АренаСкладТоплива.количествоПолучить(): кол-во топлива (%v) не число, err=\n\t%v\n", _число, err)
 		return
 	}
 	сам.топливо.Уст(iNum)
 }
 
 // Проверяет ускорение строительства
-func (сам *СкладТоплива) ускорениеПровер() {
-	списСтр := сам.сеть.ВебВоркер().Получ("http://wartank.ru/buildings")
+func (сам *АренаСкладТоплива) ускорениеПровер() {
+	списСтр := сам.Сеть().ВебВоркер().Получ("http://wartank.ru/buildings")
 	// <span class="green2">Склад топлива -
 	var (
 		еслиНайти = false
@@ -125,8 +122,8 @@ func (сам *СкладТоплива) ускорениеПровер() {
 }
 
 // Обновляет текущий уровень шахты (может быть не построена)
-func (сам *СкладТоплива) уровеньОбновить() bool {
-	списСтр := сам.сеть.ВебВоркер().Получ("http://wartank.ru/buildings")
+func (сам *АренаСкладТоплива) уровеньОбновить() bool {
+	списСтр := сам.Сеть().ВебВоркер().Получ("http://wartank.ru/buildings")
 	// <span class="green2">Склад топлива -
 	var (
 		еслиНайти = false
@@ -146,7 +143,7 @@ func (сам *СкладТоплива) уровеньОбновить() bool {
 	_стр = strings.TrimSuffix(_стр, `</span><br/>`)
 	иУровень, ош := strconv.Atoi(_стр)
 	if ош != nil {
-		log.Printf("СкладТоплива.уровеньОбновить(): строка уровня сбойная, стр=%q, ош=\n\t%v\n", стр, ош)
+		log.Printf("АренаСкладТоплива.уровеньОбновить(): строка уровня сбойная, стр=%q, ош=\n\t%v\n", стр, ош)
 		return false
 	}
 	сам.уровень.Уст(иУровень)
@@ -168,7 +165,7 @@ func (сам *СкладТоплива) уровеньОбновить() bool {
 }
 
 // Пытается проапгрейдить топливный склад
-func (сам *СкладТоплива) проапгрейдить() bool {
+func (сам *АренаСкладТоплива) проапгрейдить() bool {
 	time.Sleep(time.Millisecond * 1000)
 	var (
 		еслиНайти = false
@@ -177,7 +174,7 @@ func (сам *СкладТоплива) проапгрейдить() bool {
 	)
 	фнКупить := func() bool {
 		defer time.Sleep(time.Millisecond * 1000)
-		списСтр = сам.сеть.ВебВоркер().Получ("https://wartank.ru/building-upgrade/FuelStorage")
+		списСтр = сам.Сеть().ВебВоркер().Получ("https://wartank.ru/building-upgrade/FuelStorage")
 		for _, стр = range списСтр {
 			// <a class="simple-but border mb5" href="FuelStorage?5-1.ILinkListener-upgradeLink-link">
 			if strings.Contains(стр, `ILinkListener-upgradeLink-link`) {
@@ -194,15 +191,15 @@ func (сам *СкладТоплива) проапгрейдить() bool {
 		// https://wartank.ru/building-upgrade/FuelStorage?4-1.ILinkListener-upgradeLink-link
 		// <a class="simple-but border mb5" href="FuelStorage?50-1.ILinkListener-upgradeLink-link">
 		ссылка := "https://wartank.ru/building-upgrade/" + _стр
-		списСтр = сам.сеть.ВебВоркер().Получ(ссылка)
+		списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
 		// Проверить, что постройка состоялась
 		for _, стр := range списСтр {
 			if strings.Contains(стр, "ILinkListener-upgradeLink-link") {
-				log.Printf("СкладТоплива.проапгрейдить().фнКупить(): покупка склада топлива не прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
+				log.Printf("АренаСкладТоплива.проапгрейдить().фнКупить(): покупка склада топлива не прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
 				return false // Покупка не оплачена
 			}
 		}
-		log.Printf("+++++СкладТоплива.проапгрейдить().фнКупить(): покупка склада топлива прошла\n")
+		log.Printf("+++++АренаСкладТоплива.проапгрейдить().фнКупить(): покупка склада топлива прошла\n")
 		return true
 	}
 
@@ -222,15 +219,15 @@ func (сам *СкладТоплива) проапгрейдить() bool {
 		_стр = strings.TrimSuffix(_стр, `"><span><span>да, подтверждаю</span></span></a>`)
 		// https://wartank.ru/wicket/page?6-1.ILinkListener-confirmLink
 		ссылка := "https://wartank.ru" + _стр
-		списСтр = сам.сеть.ВебВоркер().Получ(ссылка)
+		списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
 		// Проверить, что постройка состоялась
 		for _, стр := range списСтр {
 			if strings.Contains(стр, "<title>Вы сделали слишком большую паузу</title>") {
-				log.Printf("СкладТоплива.проапгрейдить().фнПодтверждение(): подтверждение покупка склада топлива не прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
+				log.Printf("АренаСкладТоплива.проапгрейдить().фнПодтверждение(): подтверждение покупка склада топлива не прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
 				return false // Покупка не оплачена
 			}
 		}
-		log.Printf("+++++СкладТоплива.проапгрейдить().фнПодтверждение(): подтверждение покупка склада топлива прошла\n")
+		log.Printf("+++++АренаСкладТоплива.проапгрейдить().фнПодтверждение(): подтверждение покупка склада топлива прошла\n")
 		return true
 	}
 
@@ -250,7 +247,7 @@ func (сам *СкладТоплива) проапгрейдить() bool {
 }
 
 // Строит шахту при нулевом уровне
-func (сам *СкладТоплива) построить() bool {
+func (сам *АренаСкладТоплива) построить() bool {
 	time.Sleep(time.Millisecond * 1000)
 	// <td style="width:50%;padding-left:1px;"><a class="simple-but border mb5" href="building-upgrade/FuelStorage"><span><span>Построить</span></span></a></td>
 	var (
@@ -260,7 +257,7 @@ func (сам *СкладТоплива) построить() bool {
 	)
 	фнКупить := func() bool {
 		defer time.Sleep(time.Millisecond * 1000)
-		списСтр = сам.сеть.ВебВоркер().Получ("https://wartank.ru/building-upgrade/FuelStorage")
+		списСтр = сам.Сеть().ВебВоркер().Получ("https://wartank.ru/building-upgrade/FuelStorage")
 		for _, стр = range списСтр {
 			// <a class="simple-but border mb5" href="FuelStorage?71-1.ILinkListener-upgradeLink-link">
 			if strings.Contains(стр, `ILinkListener-upgradeLink-link`) {
@@ -278,15 +275,15 @@ func (сам *СкладТоплива) построить() bool {
 		// <a class="simple-but border mb5" href="FuelStorage?50-1.ILinkListener-upgradeLink-link">
 		// https://wartank.ru/building-upgrade/FuelStorage?72-1.ILinkListener-upgradeLink-link
 		ссылка := "https://wartank.ru/building-upgrade/" + _стр
-		списСтр = сам.сеть.ВебВоркер().Получ(ссылка)
+		списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
 		// Проверить, что постройка состоялась
 		for _, стр := range списСтр {
 			if strings.Contains(стр, "ILinkListener-upgradeLink-link") {
-				log.Printf("СкладТоплива.построить().фнКупить(): покупка склада топлива не прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
+				log.Printf("АренаСкладТоплива.построить().фнКупить(): покупка склада топлива не прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
 				return false // Покупка не оплачена
 			}
 		}
-		log.Printf("+++++СкладТоплива.построить().фнКупить(): покупка склада топлива прошла\n")
+		log.Printf("+++++АренаСкладТоплива.построить().фнКупить(): покупка склада топлива прошла\n")
 		return true
 	}
 
@@ -307,15 +304,15 @@ func (сам *СкладТоплива) построить() bool {
 		// https://wartank.ru/wicket/page?4-1.ILinkListener-confirmLink
 		// <a class="simple-but border mb5" href="FuelStorage?50-1.ILinkListener-upgradeLink-link">
 		ссылка := "https://wartank.ru" + _стр
-		списСтр = сам.сеть.ВебВоркер().Получ(ссылка)
+		списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
 		// Проверить, что постройка состоялась
 		for _, стр := range списСтр {
 			if strings.Contains(стр, "<title>Вы сделали слишком большую паузу</title>") {
-				log.Printf("СкладТоплива.построить().фнПодтверждение(): подтверждение покупка склада топлива не прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
+				log.Printf("АренаСкладТоплива.построить().фнПодтверждение(): подтверждение покупка склада топлива не прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
 				return false // Покупка не оплачена
 			}
 		}
-		log.Printf("+++++СкладТоплива.построить().фнПодтверждение(): подтверждение покупка склада топлива прошла\n")
+		log.Printf("+++++АренаСкладТоплива.построить().фнПодтверждение(): подтверждение покупка склада топлива прошла\n")
 		return true
 	}
 
@@ -333,26 +330,26 @@ func (сам *СкладТоплива) построить() bool {
 }
 
 // Уровень -- возвращает уровень топливного склада
-func (сам *СкладТоплива) Уровень() ИСтатПарам {
+func (сам *АренаСкладТоплива) Уровень() ИСтатПарам {
 	return сам.уровень
 }
 
 // Топливо -- возвращает топливо
-func (сам *СкладТоплива) Топливо() ИСтатПарам {
+func (сам *АренаСкладТоплива) Топливо() ИСтатПарам {
 	return сам.топливо
 }
 
 // ПродуктКолСейчас -- возвращает кол-во продукта прямо сейчас
-func (сам *СкладТоплива) ПродуктКолСейчас() int {
+func (сам *АренаСкладТоплива) ПродуктКолСейчас() int {
 	return сам.топливо.Получ()
 }
 
 // ПродуктИмяСейчас -- возвращает имя продукта прямо сейчас
-func (сам *СкладТоплива) ПродуктИмяСейчас() string {
+func (сам *АренаСкладТоплива) ПродуктИмяСейчас() string {
 	return "топливо"
 }
 
 // ПродуктВремяСейчас -- возвращает сколько осталось времени прямо сейчас
-func (сам *СкладТоплива) ПродуктВремяСейчас() string {
+func (сам *АренаСкладТоплива) ПродуктВремяСейчас() string {
 	return сам.продуктВремя
 }

+ 11 - 14
app/lev2/arena_market/arena_market.go

@@ -9,8 +9,7 @@ import (
 
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
-	"wartank/app/lev2/arena/arena_net"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 	"wartank/pkg/alias"
 )
 
@@ -18,7 +17,6 @@ import (
 type АренаРынок struct {
 	ИАрена
 	бот     ИБот
-	сеть    ИАренаСеть
 	уровень ИСтатПарам
 }
 
@@ -36,7 +34,6 @@ func НовРынок(конт ИБотКонтекст, база ИБаза) *
 		СтрУрл_:      "https://wartank.ru/market",
 	}
 	сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
-	сам.сеть = arena_net.НовАренаСеть(конт, сам, "https://wartank.ru/market")
 	return сам
 }
 
@@ -70,7 +67,7 @@ func (сам *АренаРынок) пуск() {
 
 // Проверяет ускорение строительства
 func (сам *АренаРынок) ускорениеПровер() {
-	списСтр := сам.сеть.ВебВоркер().Получ("http://wartank.ru/buildings")
+	списСтр := сам.Сеть().ВебВоркер().Получ("http://wartank.ru/buildings")
 	// <span class="green2">Склад топлива -
 	var (
 		еслиНайти = false
@@ -89,7 +86,7 @@ func (сам *АренаРынок) ускорениеПровер() {
 
 // Обновляет текущий уровень рынка (может быть не построен)
 func (сам *АренаРынок) уровеньОбновить() bool {
-	списСтр := сам.сеть.ВебВоркер().Получ("http://wartank.ru/buildings")
+	списСтр := сам.Сеть().ВебВоркер().Получ("http://wartank.ru/buildings")
 	// <span class="green2">Рынок -
 	var (
 		еслиНайти = false
@@ -141,7 +138,7 @@ func (сам *АренаРынок) построить() bool {
 	)
 	фнКупить := func() bool {
 		defer time.Sleep(time.Millisecond * 1000)
-		списСтр = сам.сеть.ВебВоркер().Получ("https://wartank.ru/building-upgrade/Market")
+		списСтр = сам.Сеть().ВебВоркер().Получ("https://wartank.ru/building-upgrade/Market")
 		for _, стр = range списСтр {
 			// <a class="simple-but border mb5" href="Market?19-1.ILinkListener-upgradeLink-link">
 			if strings.Contains(стр, `ILinkListener-upgradeLink-link`) {
@@ -158,7 +155,7 @@ func (сам *АренаРынок) построить() bool {
 		// https://wartank.ru/building-upgrade/Market?18-1.ILinkListener-upgradeLink-link
 		// <a class="simple-but border mb5" href="Market?19-1.ILinkListener-upgradeLink-link">
 		ссылка := "https://wartank.ru/building-upgrade/" + _стр
-		списСтр = сам.сеть.ВебВоркер().Получ(ссылка)
+		списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
 		// Проверить, что постройка состоялась
 		for _, стр := range списСтр {
 			if strings.Contains(стр, "ILinkListener-upgradeLink-link") {
@@ -186,7 +183,7 @@ func (сам *АренаРынок) построить() bool {
 		_стр = strings.TrimSuffix(_стр, `"><span><span>да, подтверждаю</span></span></a>`)
 		// https://wartank.ru/wicket/page?20-1.ILinkListener-confirmLink
 		ссылка := "https://wartank.ru" + _стр
-		списСтр = сам.сеть.ВебВоркер().Получ(ссылка)
+		списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
 		// Проверить, что постройка состоялась
 		for _, стр := range списСтр {
 			if strings.Contains(стр, "<title>Вы сделали слишком большую паузу</title>") {
@@ -221,7 +218,7 @@ func (сам *АренаРынок) проапгрейдить() bool {
 	)
 	фнКупить := func() bool {
 		defer time.Sleep(time.Millisecond * 1000)
-		списСтр = сам.сеть.ВебВоркер().Получ("https://wartank.ru/building-upgrade/Market")
+		списСтр = сам.Сеть().ВебВоркер().Получ("https://wartank.ru/building-upgrade/Market")
 		for _, стр = range списСтр {
 			// <a class="simple-but border mb5" href="Market?5-1.ILinkListener-upgradeLink-link">
 			if strings.Contains(стр, `ILinkListener-upgradeLink-link`) {
@@ -238,7 +235,7 @@ func (сам *АренаРынок) проапгрейдить() bool {
 		// https://wartank.ru/building-upgrade/Market?4-1.ILinkListener-upgradeLink-link
 		// <a class="simple-but border mb5" href="Market?50-1.ILinkListener-upgradeLink-link">
 		ссылка := "https://wartank.ru/building-upgrade/" + _стр
-		списСтр = сам.сеть.ВебВоркер().Получ(ссылка)
+		списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
 		// Проверить, что постройка состоялась
 		for _, стр := range списСтр {
 			if strings.Contains(стр, "ILinkListener-upgradeLink-link") {
@@ -266,7 +263,7 @@ func (сам *АренаРынок) проапгрейдить() bool {
 		_стр = strings.TrimSuffix(_стр, `"><span><span>да, подтверждаю</span></span></a>`)
 		// https://wartank.ru/wicket/page?6-1.ILinkListener-confirmLink
 		ссылка := "https://wartank.ru" + _стр
-		списСтр = сам.сеть.ВебВоркер().Получ(ссылка)
+		списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
 		// Проверить, что постройка состоялась
 		for _, стр := range списСтр {
 			if strings.Contains(стр, "<title>Вы сделали слишком большую паузу</title>") {
@@ -301,7 +298,7 @@ func (сам *АренаРынок) проверОжидание() {
 	)
 	// countDown := сам.CountDown().Get()
 	фнЕслиСеребро := func() bool { // Найти счётчик цены серебра
-		сам.сеть.Обновить()
+		сам.Обновить()
 		еслиНайдено := false
 		lstMarket := сам.СписПолучить()
 		for _, strOut = range lstMarket {
@@ -398,7 +395,7 @@ func (сам *АренаРынок) купитьЗолото() bool {
 	strLink := lstLink[1]
 	lstLink = strings.Split(strLink, `"><span><span>Получить `)
 	strLink = "https://wartank.ru/" + lstLink[0]
-	lstMarket, err := сам.сеть.Get(strLink)
+	lstMarket, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Market.buyGold(): при выполнении GET-команды на покупку золота, err=\n\t%v\n", err)
 		return true

+ 2 - 5
app/lev2/arena_masters/arena_masters.go

@@ -7,7 +7,6 @@ import (
 
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
-	"wartank/app/lev2/arena/arena_net"
 	"wartank/pkg/alias"
 	"wartank/pkg/kernel/kernel_log"
 	. "wartank/pkg/kernel/kernel_types"
@@ -23,7 +22,6 @@ import (
 type БитваМастеров struct {
 	ИАрена
 	бот  ИБот
-	сеть ИАренаСеть
 	лог  ИЯдроЛог
 }
 
@@ -44,7 +42,6 @@ func НовБитваМастеров(конт ИБотКонтекст, бот
 		СтрУрл_:      "https://wartank.ru/pvp",
 	}
 	сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
-	сам.сеть = arena_net.НовАренаСеть(конт, сам, "https://wartank.ru/pvp")
 	return сам
 }
 
@@ -83,7 +80,7 @@ func (сам *БитваМастеров) goBatMas() bool {
 	}
 
 	// Время меньше 25 сек, надо уточнять (тут возможна ошибка с экраном ожидания)
-	сам.сеть.Обновить()
+	сам.Обновить()
 	// Время ожидания вышло, надо начать атаку
 	if err := сам.ОбратВремяУст("00"); err != nil {
 		log.Printf("ERRO BatMas.goBatMas(): при установке времени ожидания битвы мастеров(0)\n\terr=%v\n", err)
@@ -121,7 +118,7 @@ func (сам *БитваМастеров) findTimeCount() {
 //
 //	вызывается только если есть награда
 func (сам *БитваМастеров) upBattle() bool {
-	сам.сеть.Обновить()
+	сам.Обновить()
 	// log.Error("BatMas.upBattle(): доделать")
 	// var (
 	// 	strOut    string

+ 18 - 21
app/lev2/arena_mine/arena_mine.go

@@ -10,15 +10,13 @@ import (
 
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
-	"wartank/app/lev2/arena/arena_net"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 	"wartank/pkg/alias"
 )
 
 // АренаШахта -- объект шахты на базе
 type АренаШахта struct {
 	ИАрена
-	сеть         ИАренаСеть
 	лог          ИВебЛог
 	бот          ИБот
 	база         ИБаза
@@ -58,7 +56,6 @@ func НовШахта(конт ИБотКонтекст, база ИБаза) (
 	}
 	сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
 	сам.лог = сам.ВебЛог()
-	сам.сеть = arena_net.НовАренаСеть(конт, сам, "https://wartank.ru/production/Mine")
 	go сам.пуск()
 	сам.лог.ОтклВывод()
 	сам.лог.Добавить("Шахта.НовШахта(): бот=%q\n", сам.бот.Имя())
@@ -140,7 +137,7 @@ func (сам *АренаШахта) количествоПолучить() (bool
 		еслиНайдено bool
 		режим       string
 	)
-	lstMine := сам.сеть.ВебВоркер().Получ("https://wartank.ru/buildings")
+	lstMine := сам.Сеть().ВебВоркер().Получ("https://wartank.ru/buildings")
 	/*
 		Режим (руда-1):
 		<td class="vam"><div class="nwr pr5 gray1"><img class="rico vm" src="/images/icons/ore.png?2" alt="ore"/>&nbsp;1</div></td>
@@ -251,7 +248,7 @@ func (сам *АренаШахта) шахтаЗабрать() bool {
 		strOut      string
 		еслиНайдено bool
 	)
-	списШахта := сам.сеть.ВебВоркер().Получ("https://wartank.ru/buildings")
+	списШахта := сам.Сеть().ВебВоркер().Получ("https://wartank.ru/buildings")
 	// <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`) {
@@ -267,7 +264,7 @@ func (сам *АренаШахта) шахтаЗабрать() bool {
 	_ссылка = 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 := сам.Сеть().ВебВоркер().Получ(ссылка)
 	if err := сам.СтрОбновить(lstBase1); err != nil {
 		сам.лог.Добавить("Шахта.шахтаЗабрать(): при обновлении lstMine, err=\n\t%v\n", err)
 		return false
@@ -279,7 +276,7 @@ func (сам *АренаШахта) шахтаЗабрать() bool {
 // Проверяет ускорение строительства FIXME: не работает
 func (сам *АренаШахта) ускорениеПровер() {
 	сам.лог.Добавить("")
-	списСтр := сам.сеть.ВебВоркер().Получ("http://wartank.ru/buildings")
+	списСтр := сам.Сеть().ВебВоркер().Получ("http://wartank.ru/buildings")
 	// <span class="green2">Шахта - 0</span><br/>
 	var (
 		еслиНайти bool
@@ -306,7 +303,7 @@ func (сам *АренаШахта) Уровень() ИСтатПарам {
 // Обновляет текущий уровень шахты (может быть не построена)
 func (сам *АренаШахта) уровеньОбновить() bool {
 	сам.лог.Добавить("Шахта.уровеньОбновить()\n")
-	списСтр := сам.сеть.ВебВоркер().Получ("http://wartank.ru/buildings")
+	списСтр := сам.Сеть().ВебВоркер().Получ("http://wartank.ru/buildings")
 	// <span class="green2">Шахта - 0</span><br/>
 	var (
 		еслиНайти = false
@@ -342,7 +339,7 @@ func (сам *АренаШахта) построить() bool {
 		еслиНайти = false
 		стр       = ""
 	)
-	списСтр := сам.сеть.ВебВоркер().Получ("http://wartank.ru/buildings")
+	списСтр := сам.Сеть().ВебВоркер().Получ("http://wartank.ru/buildings")
 	for _, стр = range списСтр {
 		if strings.Contains(стр, `href="building-upgrade/Mine"><span><span>Построить</span></span>`) {
 			еслиНайти = true
@@ -357,7 +354,7 @@ func (сам *АренаШахта) построить() bool {
 	_стр := strings.TrimPrefix(стр, `<td style="width:50%;padding-left:1px;"><a class="simple-but border mb5" href="`)
 	_стр = strings.TrimSuffix(_стр, `"><span><span>Построить</span></span></a></td>`)
 	ссылка := "https://wartank.ru/" + _стр
-	списСтр = сам.сеть.ВебВоркер().Получ(ссылка)
+	списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
 	еслиНайти = false
 	// "<a class=\"simple-but border mb5\" href=\"Mine?14-1.ILinkListener-upgradeLink-link\">"
 	for _, стр = range списСтр {
@@ -374,7 +371,7 @@ func (сам *АренаШахта) построить() bool {
 	_стр = strings.TrimSuffix(_стр, "\">")
 	// http://wartank.ru/building-upgrade/Mine?16-1.ILinkListener-upgradeLink-link
 	ссылка = "https://wartank.ru/building-upgrade/" + _стр
-	_ = сам.сеть.ВебВоркер().Получ(ссылка)
+	_ = сам.Сеть().ВебВоркер().Получ(ссылка)
 	return true
 }
 
@@ -388,7 +385,7 @@ func (сам *АренаШахта) проапгрейдить() bool {
 	)
 	фнКупить := func() (bool, error) {
 		defer time.Sleep(time.Millisecond * 1000)
-		списСтр = сам.сеть.ВебВоркер().Получ("https://wartank.ru/building-upgrade/Mine")
+		списСтр = сам.Сеть().ВебВоркер().Получ("https://wartank.ru/building-upgrade/Mine")
 		for _, стр = range списСтр {
 			// <a class="simple-but border mb5" href="Mine?5-1.ILinkListener-upgradeLink-link">
 			if strings.Contains(стр, `ILinkListener-upgradeLink-link`) {
@@ -406,7 +403,7 @@ func (сам *АренаШахта) проапгрейдить() bool {
 		// 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/" + _стр
-		списСтр = сам.сеть.ВебВоркер().Получ(ссылка)
+		списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
 		// Проверить, что постройка состоялась
 		for _, стр := range списСтр {
 			if strings.Contains(стр, "ILinkListener-upgradeLink-link") {
@@ -435,7 +432,7 @@ func (сам *АренаШахта) проапгрейдить() bool {
 		_стр = strings.TrimSuffix(_стр, `"><span><span>да, подтверждаю</span></span></a>`)
 		// https://wartank.ru/wicket/page?6-1.ILinkListener-confirmLink
 		ссылка := "https://wartank.ru" + _стр
-		списСтр = сам.сеть.ВебВоркер().Получ(ссылка)
+		списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
 		// Проверить, что постройка состоялась
 		for _, стр := range списСтр {
 			if strings.Contains(стр, "<title>Вы сделали слишком большую паузу</title>") {
@@ -470,7 +467,7 @@ func (сам *АренаШахта) проапгрейдить() bool {
 
 // Сделать -- вызывается с базы, если она обнаружила, что пора сделать продукцию
 func (сам *АренаШахта) Сделать() {
-	сам.сеть.Обновить()
+	сам.Сеть().Обновить()
 	if err := сам.выбратьМеталл(); err != nil {
 		сам.лог.Добавить("ERRO Шахта.Сделать(): при выборе продукции, err=\n\t%v\n", err)
 		return
@@ -598,7 +595,7 @@ func (сам *АренаШахта) выбратьМеталл() error {
 // Создаёт руду
 func (сам *АренаШахта) рудаСделать() bool {
 	time.Sleep(time.Millisecond * 55)
-	lstMine, err := сам.сеть.Get("https://wartank.ru/production/Mine")
+	lstMine, err := сам.Сеть().Get("https://wartank.ru/production/Mine")
 	if err != nil {
 		// log._rintf("ERRO Шахта.сделатьРуду(): при GET-команде 'начать производство руды', err=\n\t%v\n", err)
 		return false
@@ -633,7 +630,7 @@ func (сам *АренаШахта) рудаСделать() bool {
 	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)
+	lstMine, err = сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Шахта.сделатьРуду(): при GET-команде 'начать производство руды', err=\n\t%v\n", err)
 		return false
@@ -694,7 +691,7 @@ func (сам *АренаШахта) железоСделать() bool {
 	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)
+	lstMine, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO MineNet.makeFerrum(): при GET-команде 'начать производство железа', err=\n\t%v\n", err)
 		return false
@@ -753,7 +750,7 @@ func (сам *АренаШахта) стальСделать() bool {
 	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)
+	lstMine, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO MineNet.makeSteel(): при GET-команде 'начать производство стали', err=\n\t%v\n", err)
 		return false
@@ -812,7 +809,7 @@ func (сам *АренаШахта) свинецСделать() bool {
 	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)
+	lstMine, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Шахта.сделатьСвинец(): при GET-команде 'начать производство стали', err=\n\t%v\n", err)
 		return false

+ 13 - 16
app/lev2/arena_missions/arena_missions.go

@@ -6,7 +6,6 @@ import (
 
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
-	"wartank/app/lev2/arena/arena_net"
 )
 
 /*
@@ -17,7 +16,6 @@ import (
 type АренаМиссии struct {
 	ИАрена
 	бот  ИБот
-	сеть ИАренаСеть
 }
 
 // НовМиссии -- возвращает новый *Миссии
@@ -33,7 +31,6 @@ func НовМиссии(конт ИБотКонтекст, бот ИБот) (*А
 		СтрУрл_:      "https://wartank.ru/missions/", // https://wartank.ru/missions/
 	}
 	сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
-	сам.сеть = arena_net.НовАренаСеть(конт, сам, "https://wartank.ru/missions/")
 	_ = ИМиссии(сам)
 	return сам, nil
 }
@@ -105,7 +102,7 @@ func (сам *АренаМиссии) kill3tanks() {
 	strLink := lstLink[1]
 	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
 	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.сеть.Get(strLink)
+	lstMissions, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Миссии.kill3tanks(): при выполнении GET-запроса, err=\n\t%v\n", err)
 		return
@@ -122,7 +119,7 @@ func (сам *АренаМиссии) сражениеЗащита() {
 		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 списМиссия {
@@ -138,7 +135,7 @@ func (сам *АренаМиссии) сражениеЗащита() {
 	_ссылка := strings.TrimPrefix(strOut, `<a class="simple-but border" href="`)
 	_ссылка = strings.TrimSuffix(_ссылка, `"><span><span>Получить награду</span></span></a>`)
 	strLink := "https://wartank.ru/missions/" + _ссылка
-	списМиссия, err := сам.сеть.Get(strLink)
+	списМиссия, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Миссии.battleDefence(): при выполнении GET-запроса, err=\n\t%v\n", err)
 		return
@@ -176,7 +173,7 @@ func (сам *АренаМиссии) проведиВойну() {
 	strLink := lstLink[1]
 	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
 	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.сеть.Get(strLink)
+	lstMissions, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Миссии.battleWar(): при выполнении GET-запроса, err=\n\t%v\n", err)
 		return
@@ -196,7 +193,7 @@ func (сам *АренаМиссии) сражениеНаступление() {
 		lstMissions = сам.СписПолучить()
 	)
 	if len(lstMissions) == 0 {
-		сам.сеть.Обновить()
+		сам.Обновить()
 		lstMissions = сам.СписПолучить()
 	}
 	for ind, strOut = range lstMissions {
@@ -218,7 +215,7 @@ func (сам *АренаМиссии) сражениеНаступление() {
 	strLink := lstLink[1]
 	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
 	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.сеть.Get(strLink)
+	lstMissions, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Миссии.battleAttack(): при выполнении GET-запроса, err=\n\t%v\n", err)
 		return
@@ -256,7 +253,7 @@ func (сам *АренаМиссии) battleDogFyting() {
 	strLink := lstLink[1]
 	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
 	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.сеть.Get(strLink)
+	lstMissions, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Миссии.battleDogFyting(): при выполнении GET-запроса, err=\n\t%v\n", err)
 		return
@@ -294,7 +291,7 @@ func (сам *АренаМиссии) makeResource() {
 	strLink := lstLink[1]
 	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
 	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.сеть.Get(strLink)
+	lstMissions, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Миссии.makeResource(): при выполнении GET-запроса, err=\n\t%v\n", err)
 		return
@@ -332,7 +329,7 @@ func (сам *АренаМиссии) upMan() {
 	strLink := lstLink[1]
 	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
 	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.сеть.Get(strLink)
+	lstMissions, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Миссии.upMan(): при выполнении GET-запроса, err=\n\t%v\n", err)
 		return
@@ -371,7 +368,7 @@ func (сам *АренаМиссии) топливоДив() {
 	strLink := lstLink[1]
 	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
 	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.сеть.Get(strLink)
+	lstMissions, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Миссии.makeFuel(): при выполнении GET-запроса, err=\n\t%v\n", err)
 		return
@@ -410,7 +407,7 @@ func (сам *АренаМиссии) battle5Fiting() {
 	strLink := lstLink[1]
 	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
 	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.сеть.Get(strLink)
+	lstMissions, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Миссии.battle5Fiting(): при выполнении GET-запроса, err=\n\t%v\n", err)
 		return
@@ -448,7 +445,7 @@ func (сам *АренаМиссии) battle10Fiting() {
 	strLink := lstLink[1]
 	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
 	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.сеть.Get(strLink)
+	lstMissions, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Миссии.battle10Fiting(): при выполнении GET-запроса, err=\n\t%v\n", err)
 		return
@@ -486,7 +483,7 @@ func (сам *АренаМиссии) battle6win() {
 	strLink := lstLink[1]
 	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
 	strLink = "https://wartank.ru/missions/" + lstLink[0]
-	lstMissions, err := сам.сеть.Get(strLink)
+	lstMissions, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Миссии.battle6win(): при выполнении GET-запроса, err=\n\t%v\n", err)
 		return

+ 1 - 1
app/lev2/arena_polygon/arena_polygon.go

@@ -9,7 +9,7 @@ import (
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
 	"wartank/app/lev2/arena/arena_net"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 	"wartank/pkg/alias"
 	"wartank/pkg/cons"
 	"wartank/pkg/kernel/kernel_log"

+ 3 - 3
app/lev3/farm_bots/bot/angar/base/base.go

@@ -14,7 +14,7 @@ import (
 	"wartank/app/lev2/arena/arena_net"
 	"wartank/app/lev2/arena_arsenal"
 	"wartank/app/lev2/arena_bank"
-	"wartank/app/lev2/arena_base/fuel"
+	"wartank/app/lev2/arena_base/arena_fuel_storage"
 	"wartank/app/lev2/arena_laborator"
 	"wartank/app/lev2/arena_market"
 	"wartank/app/lev2/arena_mine"
@@ -42,7 +42,7 @@ type База struct {
 	полигон      *arena_polygon.АренаПолигон
 	шахта        ИАренаШахта
 	рынок        *arena_market.АренаРынок
-	складТоплива *fuel.СкладТоплива
+	складТоплива *arena_fuel_storage.АренаСкладТоплива
 	лаборатория  *arena_laborator.АренаЛаборатория
 	времОстат    int // Сколько времени спать до опроса базы
 	блок         sync.Mutex
@@ -93,7 +93,7 @@ func НовБаза(конт ИБотКонтекст, ангар ИАнгар)
 		}
 	}
 	{ // Склад топлива
-		сам.складТоплива, ош = fuel.НовСкладТоплива(конт, сам)
+		сам.складТоплива, ош = arena_fuel_storage.НовСкладТоплива(конт, сам)
 		if ош != nil {
 			return nil, fmt.Errorf("НовБаза(): при создании склада топлива, err=\n\t%w", ош)
 		}

+ 1 - 1
app/lev3/farm_bots/bot/angar/base/fuel/fuel.go

@@ -11,7 +11,7 @@ import (
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
 	"wartank/app/lev2/arena/arena_net"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 )
 
 // СкладТоплива -- склад топлива

+ 1 - 1
app/lev3/farm_bots/bot/angar/base/market/market.go

@@ -10,7 +10,7 @@ import (
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
 	"wartank/app/lev2/arena/arena_net"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 	"wartank/pkg/alias"
 )
 

+ 1 - 1
app/lev3/farm_bots/bot/angar/base/mine/mine.go

@@ -11,7 +11,7 @@ import (
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
 	"wartank/app/lev2/arena/arena_net"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 	"wartank/pkg/alias"
 )
 

+ 1 - 1
app/lev3/farm_bots/bot/angar/base/polygon/polygon.go

@@ -9,7 +9,7 @@ import (
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena"
 	"wartank/app/lev2/arena/arena_net"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 	"wartank/pkg/alias"
 	"wartank/pkg/cons"
 	"wartank/pkg/kernel/kernel_log"

+ 1 - 1
app/lev3/farm_bots/bot/angar/battle/battle_worker/battle_worker.go

@@ -9,7 +9,7 @@ import (
 	"wartank/app/lev2/arena/arena_net"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 )
 
 // СражениеДействие -- исполнение битвы

+ 1 - 1
app/lev3/farm_bots/bot/angar/battle/battle_worker/battle_worker/battle_sound/battle_sound.go

@@ -3,7 +3,7 @@ package battle_sound
 import (
 	"time"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound/is_sound_play"
-	"wartank/pkg/components/sound"
+		"wartank/app/lev1/sound"
 )
 
 /*

+ 1 - 1
app/lev3/farm_bots/bot/angar/battle/battle_worker/battle_worker/battlesound/battlesound.go

@@ -3,7 +3,7 @@ package battle_sound
 import (
 	"time"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound/is_sound_play"
-	"wartank/pkg/components/sound"
+		"wartank/app/lev1/sound"
 )
 
 /*

+ 1 - 1
app/lev3/farm_bots/bot/angar/death_match/death_worker/death_on/battle_sound/battle_sound.go

@@ -3,7 +3,7 @@ package battle_sound
 import (
 	"time"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound/is_sound_play"
-	"wartank/pkg/components/sound"
+		"wartank/app/lev1/sound"
 )
 
 /*

+ 1 - 1
app/lev3/farm_bots/bot/angar/death_match/death_worker/death_on/battlesound/battlesound.go

@@ -3,7 +3,7 @@ package battle_sound
 import (
 	"time"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound/is_sound_play"
-	"wartank/pkg/components/sound"
+		"wartank/app/lev1/sound"
 )
 
 /*

+ 1 - 1
app/lev3/farm_bots/bot/angar/division/div_war/div_war.go

@@ -12,7 +12,7 @@ import (
 	"wartank/app/lev2/arena_division/div_war/div_war_net"
 	"wartank/app/lev2/arena_division/div_war/div_war_on"
 	"wartank/app/lev2/arena_division/div_war/div_war_on/div_war_sound"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 	"wartank/pkg/alias"
 	. "wartank/pkg/kernel/kernel_types"
 )

+ 1 - 1
app/lev3/farm_bots/bot/angar/division/div_war/div_war_on/div_war_sound/div_war_sound.go

@@ -3,7 +3,7 @@ package div_war_sound
 import (
 	"time"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound/is_sound_play"
-	"wartank/pkg/components/sound"
+		"wartank/app/lev1/sound"
 )
 
 /*

+ 1 - 1
app/lev3/farm_bots/bot/angar/division/div_war/div_war_on/divwarsound/divwarsound.go

@@ -3,7 +3,7 @@ package div_war_sound
 import (
 	"time"
 	"wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound/is_sound_play"
-	"wartank/pkg/components/sound"
+		"wartank/app/lev1/sound"
 )
 
 /*

+ 1 - 1
app/lev3/farm_bots/bot/angar/division/divwar/divwar.go

@@ -12,7 +12,7 @@ import (
 	"wartank/app/lev2/arena_division/div_war/div_war_net"
 	"wartank/app/lev2/arena_division/div_war/div_war_on"
 	"wartank/app/lev2/arena_division/div_war/div_war_on/div_war_sound"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 	"wartank/pkg/alias"
 	. "wartank/pkg/kernel/kernel_types"
 )

+ 1 - 1
app/lev3/farm_bots/bot/angar/fuel/fuel.go

@@ -9,7 +9,7 @@ import (
 	"time"
 
 	. "wartank/app/lev0/types"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 )
 
 // Топливо -- топливо в баке, +1 каждые 15 сек

+ 28 - 31
app/lev3/farm_bots/bot/angar/convoy/convoy.go → app/lev3/farm_bots/bot/angar/stat_convoy_fixme/stat_convoy_fixme.go

@@ -1,4 +1,4 @@
-package convoy
+package stat_convoy_fixme
 
 import (
 	"fmt"
@@ -8,9 +8,8 @@ import (
 	"time"
 
 	. "wartank/app/lev0/types"
+	"wartank/app/lev1/stat_param"
 	"wartank/app/lev2/arena"
-	"wartank/app/lev2/arena/arena_net"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
 	"wartank/pkg/alias"
 )
 
@@ -19,16 +18,15 @@ import (
 */
 
 // Конвой -- объект конвоя в ангаре
-type Конвой struct {
+type СтатКонвой struct {
 	ИАрена
-	сеть  ИАренаСеть
 	бот   ИБот
 	слава ИСтатПарам // Количество славы
 }
 
 // НовКонвой -- возвращает новый *Convoy
-func НовКонвой(конт ИБотКонтекст, бот ИБот) *Конвой {
-	сам := &Конвой{
+func НовСтатКонвой(конт ИБотКонтекст, бот ИБот) *СтатКонвой {
+	сам := &СтатКонвой{
 		бот:   бот,
 		слава: stat_param.НовСтатПарам("слава"),
 	}
@@ -40,22 +38,21 @@ func НовКонвой(конт ИБотКонтекст, бот ИБот) *К
 		СтрУрл_:      "https://wartank.ru/convoy",
 	}
 	сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
-	сам.сеть = arena_net.НовАренаСеть(конт, сам, "https://wartank.ru/convoy")
 	return сам
 }
 
 // UpdateLst -- принудительно обновляет состояние конвоя
-func (сам *Конвой) UpdateLst() {
-	сам.сеть.Обновить()
+func (сам *СтатКонвой) UpdateLst() {
+	сам.Обновить()
 }
 
 // Слава --возвращает счётчик славы конвоя
-func (сам *Конвой) Слава() ИСтатПарам {
+func (сам *СтатКонвой) Слава() ИСтатПарам {
 	return сам.слава
 }
 
 // обрабатывает конвой
-func (сам *Конвой) пуск() {
+func (сам *СтатКонвой) пуск() {
 	фнЦикл := func() {
 		сам.проверитьМиссия6фрагов()
 		сам.проверитьМиссияРазведкаКонвой()
@@ -75,7 +72,7 @@ func (сам *Конвой) пуск() {
 	}
 }
 
-func (сам *Конвой) атаковать() {
+func (сам *СтатКонвой) атаковать() {
 	if false {
 		сам.обновитьВремя()
 	}
@@ -93,7 +90,7 @@ func (сам *Конвой) атаковать() {
 }
 
 // Обновляет славу по требованию
-func (сам *Конвой) Обновить() {
+func (сам *СтатКонвой) Обновить() {
 	// Найти строку с упоминанием оставшегося времени конвоя
 	lstConvoy := сам.СписПолучить()
 	var (
@@ -122,9 +119,9 @@ func (сам *Конвой) Обновить() {
 }
 
 // Обновляет оставшееся время конвоя
-func (сам *Конвой) обновитьВремя() {
+func (сам *СтатКонвой) обновитьВремя() {
 	// Время подходит надо обновляться
-	сам.сеть.Обновить()
+	сам.Обновить()
 	ош := сам.ОбратВремяУст("20")
 	if ош != nil {
 		log.Printf("Конвой.обновитьВремя(): при обновлении времени, ош=\n\t%v\n", ош)
@@ -189,12 +186,12 @@ func (сам *Конвой) обновитьВремя() {
 	}
 }
 
-func (сам *Конвой) найтиВбой() string {
+func (сам *СтатКонвой) найтиВбой() string {
 	var (
 		strOut      = ""
 		еслиНайдено bool
 	)
-	lstConvoy := сам.сеть.ВебВоркер().Получ("https://wartank.ru/convoy")
+	lstConvoy := сам.Сеть().ВебВоркер().Получ("https://wartank.ru/convoy")
 	if сам.бот.Имя() == "prospero tank" {
 		log.Printf("")
 	}
@@ -248,7 +245,7 @@ func (сам *Конвой) найтиВбой() string {
 }
 
 // Проводит атаку на конвой
-func (сам *Конвой) атакаНачать() {
+func (сам *СтатКонвой) атакаНачать() {
 	// Найти контрольную строку
 	strOut := сам.найтиВбой()
 	if strOut == "" { // Время ожидания
@@ -259,7 +256,7 @@ func (сам *Конвой) атакаНачать() {
 	}
 	strLink := strOut
 	// Можно начать разведку
-	lstConvoy := сам.сеть.ВебВоркер().Получ(strLink)
+	lstConvoy := сам.Сеть().ВебВоркер().Получ(strLink)
 	if err := сам.СтрОбновить(lstConvoy); err != nil {
 		for _, strOut = range lstConvoy {
 			if strings.Contains(strOut, `<title>Ошибка на сервере. Сообщение админу уже отправлено.</title>`) {
@@ -283,7 +280,7 @@ func (сам *Конвой) атакаНачать() {
 }
 
 // Выполняет атаку на конвой
-func (сам *Конвой) начатьРазведку() {
+func (сам *СтатКонвой) начатьРазведку() {
 	// Вырезать ссылку на атаку
 	strOut := ""
 	еслиНайдено := false
@@ -304,7 +301,7 @@ func (сам *Конвой) начатьРазведку() {
 	// https://wartank.ru/convoy?52-1.ILinkListener-root-findEnemy
 	link := "https://wartank.ru/" + _link
 	{ // Выполнить атаку
-		lstConvoy = сам.сеть.ВебВоркер().Получ(link)
+		lstConvoy = сам.Сеть().ВебВоркер().Получ(link)
 		if err := сам.СтрОбновить(lstConvoy); err != nil {
 			log.Printf("Конвой.attack(): при обновлении lstConvoy, err=\n\t%v\n", err)
 			return
@@ -313,12 +310,12 @@ func (сам *Конвой) начатьРазведку() {
 }
 
 // Забирает награду в конвое "Активируй боевую силу"
-func (сам *Конвой) проверитьМиссияРазведкаКонвой() {
+func (сам *СтатКонвой) проверитьМиссияРазведкаКонвой() {
 	var (
 		strOut      string
 		еслиНайдено bool
 	)
-	сам.сеть.Обновить()
+	сам.Обновить()
 	lstConvoy := сам.СписПолучить()
 	// <a class="simple-but border" href="convoy?21-1.ILinkListener-missions-cc-0-c-awardLink"><span><span>Получить награду</span></span></a>
 	for _, strOut = range lstConvoy {
@@ -335,7 +332,7 @@ func (сам *Конвой) проверитьМиссияРазведкаКон
 	_ссылка = strings.TrimSuffix(_ссылка, `"><span><span>Получить награду</span></span></a>`)
 	// https://wartank.ru/convoy?23-1.ILinkListener-missions-cc-0-c-awardLink
 	ссылка := "https://wartank.ru/" + _ссылка
-	lstConvoy = сам.сеть.ВебВоркер().Получ(ссылка)
+	lstConvoy = сам.Сеть().ВебВоркер().Получ(ссылка)
 	if err := сам.СтрОбновить(lstConvoy); err != nil {
 		log.Printf("Конвой.проверитьМиссияРазведкаКонвой(): пр обновлении lstConvoy, err=\n\t%v\n", err)
 		return
@@ -344,7 +341,7 @@ func (сам *Конвой) проверитьМиссияРазведкаКон
 }
 
 // Забирает награду в конвое "Мастер дозора"
-func (сам *Конвой) проверитьМиссияМастерРазведки() {
+func (сам *СтатКонвой) проверитьМиссияМастерРазведки() {
 	var (
 		strOut      string
 		еслиНайдено bool
@@ -352,7 +349,7 @@ func (сам *Конвой) проверитьМиссияМастерРазве
 		ind         int
 	)
 	if len(lstConvoy) == 0 {
-		сам.сеть.Обновить()
+		сам.Обновить()
 		lstConvoy = сам.СписПолучить()
 	}
 	for ind, strOut = range lstConvoy {
@@ -375,7 +372,7 @@ func (сам *Конвой) проверитьМиссияМастерРазве
 	lstLink = strings.Split(strLink, `"><span><span>Получить награду</span></span></a>`)
 	// https://wartank.ru/convoy?61-1.ILinkListener-missions-cc-0-c-awardLink
 	strLink = "https://wartank.ru/" + lstLink[0]
-	lstConvoy, err := сам.сеть.Get(strLink)
+	lstConvoy, err := сам.Сеть().Get(strLink)
 	if err != nil {
 		// log._rintf("ERRO Конвой.checkMaster(): при выполнении команды GET, err=\n\t%v\n", err)
 		return
@@ -388,12 +385,12 @@ func (сам *Конвой) проверитьМиссияМастерРазве
 }
 
 // Забирает награду в конвое "Уничтожь 6 врагов в конвое"
-func (сам *Конвой) проверитьМиссия6фрагов() {
+func (сам *СтатКонвой) проверитьМиссия6фрагов() {
 	var (
 		strOut      string
 		еслиНайдено bool
 	)
-	сам.сеть.Обновить()
+	сам.Обновить()
 	lstConvoy := сам.СписПолучить()
 	// <a class="simple-but border" href="convoy?8-1.ILinkListener-missions-cc-1-c-awardLink"><span><span>Получить награду</span></span></a>
 	for _, strOut = range lstConvoy {
@@ -410,7 +407,7 @@ func (сам *Конвой) проверитьМиссия6фрагов() {
 	_ссылка = strings.TrimSuffix(_ссылка, `"><span><span>Получить награду</span></span></a>`)
 	// https://wartank.ru/convoy?15-1.ILinkListener-missions-cc-1-c-awardLink
 	ссылка := "https://wartank.ru/" + _ссылка
-	lstConvoy = сам.сеть.ВебВоркер().Получ(ссылка)
+	lstConvoy = сам.Сеть().ВебВоркер().Получ(ссылка)
 	if err := сам.СтрОбновить(lstConvoy); err != nil {
 		log.Printf("Конвой.проверитьМиссия6фрагов(): при обновлении lstConvoy, ош=\n\t%v\n", err)
 		return

+ 1 - 1
app/lev3/farm_bots/bot/bot_stat/stat_resurs/stat_resurs.go

@@ -6,7 +6,7 @@ import (
 
 	. "wartank/app/lev0/types"
 	"wartank/app/lev2/arena_angar/fuel"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 )
 
 // СтатРесурсы -- статистика ресурсов

+ 1 - 1
app/lev3/farm_bots/bot/bot_stat/tank_stat/tank_stat.go

@@ -3,7 +3,7 @@ package tank_stat
 
 import (
 	. "wartank/app/lev0/types"
-	"wartank/app/lev3/bot/bot_stat/stat_param"
+	"wartank/app/lev1/stat_param"
 )
 
 // ТанкСтат -- статические параметры танка