Browse Source

d04 Исправления постройки обновления

SVI 2 years ago
parent
commit
73284bee11
48 changed files with 577 additions and 506 deletions
  1. 1 1
      main.py
  2. 7 5
      pakApp/modApp.py
  3. 22 21
      pakApp/pakGui/pakWinMain/modWinMain.py
  4. 47 16
      pakApp/pakGui/pakWinMain/pakFrmCmd/modFrmCmd.py
  5. 10 1
      pakApp/pakLogic/modLogic.py
  6. 1 1
      pkg/components/section_net/netclient/netclient.go
  7. 0 0
      pkg/components/section_net/netstat/netstat.go
  8. 87 0
      pkg/components/section_net/section_net.go
  9. 0 84
      pkg/components/sectionnet/sectionnet.go
  10. 1 1
      pkg/types/ibattle_action.go
  11. 1 1
      pkg/types/idiv_war_action.go
  12. 1 1
      pkg/types/inetangar.go
  13. 1 1
      pkg/types/inetbase.go
  14. 4 4
      pkg/types/isectionnet.go
  15. 1 1
      server/serv_bots/warbot/angar/angar.go
  16. 4 4
      server/serv_bots/warbot/angar/angarnet/angarnet.go
  17. 136 129
      server/serv_bots/warbot/angar/base/arsenal/arsenal.go
  18. 4 4
      server/serv_bots/warbot/angar/base/arsenal/arsenalnet/arsenalnet.go
  19. 140 73
      server/serv_bots/warbot/angar/base/bank/bank.go
  20. 4 4
      server/serv_bots/warbot/angar/base/bank/banknet/banknet.go
  21. 5 57
      server/serv_bots/warbot/angar/base/base.go
  22. 4 4
      server/serv_bots/warbot/angar/base/basenet/basenet.go
  23. 1 1
      server/serv_bots/warbot/angar/base/market/market.go
  24. 4 4
      server/serv_bots/warbot/angar/base/market/marketnet/marketnet.go
  25. 1 1
      server/serv_bots/warbot/angar/base/mine/mine.go
  26. 4 4
      server/serv_bots/warbot/angar/base/mine/minenet/minenet.go
  27. 24 21
      server/serv_bots/warbot/angar/base/polygon/polygon.go
  28. 4 4
      server/serv_bots/warbot/angar/base/polygon/polygonnet/polygonnet.go
  29. 3 3
      server/serv_bots/warbot/angar/battle/battle_register/battle_register.go
  30. 4 4
      server/serv_bots/warbot/angar/battle/battle_wait/battle_wait.go
  31. 3 3
      server/serv_bots/warbot/angar/battle/battle_worker/battle_worker.go
  32. 4 4
      server/serv_bots/warbot/angar/battle/battle_worker/battleon/battleon.go
  33. 1 1
      server/serv_bots/warbot/angar/battle/battle_worker/battleon/shot/shot.go
  34. 4 4
      server/serv_bots/warbot/angar/battle/battlenet/battlenet.go
  35. 5 5
      server/serv_bots/warbot/angar/convoy/convoy.go
  36. 4 4
      server/serv_bots/warbot/angar/convoy/convoynet/convoynet.go
  37. 1 1
      server/serv_bots/warbot/angar/division/divwar/divwar.go
  38. 2 2
      server/serv_bots/warbot/angar/division/divwar/divwarnet/divwarnet.go
  39. 4 4
      server/serv_bots/warbot/angar/division/divwar/divwaron/divwaron.go
  40. 1 1
      server/serv_bots/warbot/angar/division/divwar/divwaron/health/health.go
  41. 1 1
      server/serv_bots/warbot/angar/division/divwar/divwaron/shot/shot.go
  42. 4 4
      server/serv_bots/warbot/angar/fuel_attack/fuel_attack.go
  43. 2 2
      server/serv_bots/warbot/angar/masters/bat_masters.go
  44. 2 2
      server/serv_bots/warbot/angar/masters/batmasnet/batmasnet.go
  45. 2 2
      server/serv_bots/warbot/angar/missions/missions.go
  46. 4 4
      server/serv_bots/warbot/angar/missions/missionsnet/missionsnet.go
  47. 6 6
      server/serv_bots/warbot/tank/tankstat/tankstat.go
  48. 1 1
      server/serv_bots/warbot/warbot_net/warbot_net.go

+ 1 - 1
main.py

@@ -6,7 +6,7 @@ from pakApp.modApp import App
 
 def main() -> None:
     """Пускач для всего монитора"""
-    app: App = App(isProd=False)
+    app: App = App(is_prod=False)
     app.run()
 
 

+ 7 - 5
pakApp/modApp.py

@@ -5,10 +5,12 @@ from pakApp.pakLogic.modLogic import Logic
 
 
 class App():
-    def __init__(self,isProd:bool)->None:
-        self.isProd=isProd
-        self.logic=Logic(self)
-        self.gui:Gui=Gui(self)
+    """Главный тип приложния"""
+    def __init__(self, is_prod: bool) -> None:
+        self.is_prod = is_prod
+        self.logic = Logic(self)
+        self.gui: Gui = Gui(self)
 
-    def run(self)->None:
+    def run(self) -> None:
+        """Запускает приложение в работу"""
         self.gui.run()

+ 22 - 21
pakApp/pakGui/pakWinMain/modWinMain.py

@@ -1,40 +1,41 @@
 """Главное окно приложения"""
 
-from typing import Any,Dict
-from tkinter import Tk,LabelFrame
+from typing import Any, Dict
+from tkinter import Tk, LabelFrame
 
 from pakApp.pakGui.pakWinMain.pakFrmCmd.modFrmCmd import FrmCmd
 from pakApp.pakGui.pakWinMain.pakFrmBot.modFrmBot import FrmBot
 
+
 class WinMain(Tk):
-    def __init__(self, gui:Any)->None:
+    """Главное окно приложения"""
+    def __init__(self, gui: Any) -> None:
         Tk.__init__(self)
-        self.app:Any=gui.app
-        self.gui:Any=gui
+        self.app: Any = gui.app
+        self.gui: Any = gui
         self.title("БотоФерма WarTank")
         self.geometry("800x640")
-        self.list_bot:list[str]=[]
-        self.listFrmBot:dict[str, FrmBot]={}
+        self.list_bot: list[str] = []
+        self.list_frm_bot: dict[str, FrmBot] = {}
+        self.frm_cmd = FrmCmd(self)
+        self.frm_list_bot = LabelFrame(self, text="Список ботов")
+        self.frm_list_bot.pack(fill="both", expand=1)
 
-    def run(self)->None:
-        self.frmCmd=FrmCmd(self)
-        self.frmListBot=LabelFrame(self,text="Список ботов")
-        self.frmListBot.pack(fill="both",expand=1)
-        self.update_list_bot()
+    def run(self) -> None:
+        """Запускает графику (главное окно) в работу"""
         self.mainloop()
 
-    def update_list_bot(self)->None:
+    def update_list_bot(self) -> None:
         """Обновляет список ботоов с сервера"""
         print("WinMain.update_list_bot()")
-        list_bot:list[Dict[str,str]]=self.app.logic.get_list_bot()
+        list_bot: list[Dict[str, str]] = self.app.logic.get_list_bot()
         print(f"WinMain.update_list_bot(): list_bot={list_bot}")
         for dict_bot in list_bot:
-            name=dict_bot["name"]
+            name = dict_bot["name"]
             if name not in self.list_bot:
-                statBot=FrmBot(self.app, self.frmListBot, name)
-                self.listFrmBot[name]=statBot
+                stat_bot = FrmBot(self.app, self.frm_list_bot, name)
+                self.list_frm_bot[name] = stat_bot
                 self.list_bot.append(name)
-            statBot=self.listFrmBot[name]
-            statBot.update_state(dict_bot)
-        self.after(5000,self.update_list_bot)
-
+            stat_bot = self.list_frm_bot[name]
+            stat_bot.update_state(dict_bot)
+        self.after(5000, self.update_list_bot)

+ 47 - 16
pakApp/pakGui/pakWinMain/pakFrmCmd/modFrmCmd.py

@@ -5,20 +5,51 @@ from tkinter import Frame, Button
 
 from pakApp.pakGui.pakWinAddBot.modWinAddBot import WinAddBot
 
+
 class FrmCmd(Frame):
-    def __init__(self,winMain:Any)->None:
-        Frame.__init__(self,master=winMain)
-        self.winMain:Any=winMain
-        self.pack(side="bottom",fill="x")
-        self.btnExit=Button(self, text="Выход",command=self.exit, bg="red")
-        self.btnExit.pack(side="right")
-
-        self.btnAddBot=Button(self, text="Нов бот", command=self.add_bot)
-        self.btnAddBot.pack(side="left")
-
-    def add_bot(self)->None:
-        winAdd:WinAddBot=WinAddBot(self.winMain)
-        winAdd.run()
-
-    def exit(self)->None:
-        self.winMain.destroy()
+    """Фрейм командных кнопок главного окна"""
+
+    def __init__(self, win_bot: Any) -> None:
+        Frame.__init__(self, master=win_bot)
+        self.win_main: Any = win_bot
+        self.pack(side="bottom", fill="x")
+        self.btn_exit = Button(self, text="Выход", command=self.exit, bg="red")
+        self.btn_exit.pack(side="right")
+
+        self.btn_set_dev = Button(self, text="Отладка", command=self.set_dev)
+        self.btn_set_dev.pack(side="left")
+
+        self.btn_set_prod = Button(self, text="Прод", command=self.set_prod)
+        self.btn_set_prod.pack(side="left")
+
+        self.btn_add_bot = Button(self, text="Нов бот", command=self.add_bot)
+        self.btn_add_bot.pack(side="left")
+        self.btn_add_bot["state"] = "disabled"
+
+    def set_dev(self):
+        """Устанавливает сервер отладки"""
+        logic = self.win_main.app.logic
+        logic.set_dev()
+        self.run_work()
+
+    def set_prod(self):
+        """Устанавливает сервер отладки"""
+        logic = self.win_main.app.logic
+        logic.set_prod()
+        self.run_work()
+
+    def run_work(self):
+        """Запускает в работу опрос"""
+        self.btn_set_dev["state"] = "disabled"
+        self.btn_set_prod["state"] = "disabled"
+        self.btn_add_bot["state"] = "active"
+        self.win_main.update_list_bot()
+
+    def add_bot(self) -> None:
+        """Добавляет бота в монитор"""
+        win_add: WinAddBot = WinAddBot(self.win_main)
+        win_add.run()
+
+    def exit(self) -> None:
+        """Завершает работу монитора"""
+        self.win_main.destroy()

+ 10 - 1
pakApp/pakLogic/modLogic.py

@@ -7,12 +7,21 @@ import requests
 
 class Logic():
     """Логика монитора"""
+
     def __init__(self, app: Any) -> None:
         self.app = app
         self.port = "18061"  # Для прода -- 18060
-        if app.isProd:
+        if app.is_prod:
             self.port = "18060"
 
+    def set_dev(self):
+        """Устанавливает порт для сервера дева"""
+        self.port = "18061"
+
+    def set_prod(self):
+        """Устанавливает порт для сервера прода"""
+        self.port = "18060"
+
     def add_new_bot(self, login: str, _pass: str) -> None:
         """Добавляет нового бота на бото ферму"""
         data: dict[str, str] = {

+ 1 - 1
pkg/components/sectionnet/netclient/netclient.go → pkg/components/section_net/netclient/netclient.go

@@ -9,7 +9,7 @@ import (
 	"sync"
 	"time"
 
-	"wartank/pkg/components/sectionnet/netstat"
+	"wartank/pkg/components/section_net/netstat"
 	"wartank/pkg/types"
 )
 

+ 0 - 0
pkg/components/sectionnet/netstat/netstat.go → pkg/components/section_net/netstat/netstat.go


+ 87 - 0
pkg/components/section_net/section_net.go

@@ -0,0 +1,87 @@
+// package section_net -- сетевая секция
+package section_net
+
+import (
+	"fmt"
+	"log"
+	"strings"
+	"sync"
+
+	// "time"
+
+	"wartank/pkg/types"
+)
+
+/*
+	Базовый тип для сетевых секций
+*/
+
+// СекцияСеть -- базовый тип для сетевых секций
+type СекцияСеть struct {
+	клиент types.ИСетьКлиент
+	секция types.ИСценаСтр
+	стрУрл string
+	блок   sync.Mutex
+}
+
+// НовСекцияСеть -- возвращает новый *СекцияСеть
+func НовСекцияСеть(сцена types.ИСценаСтр, стрУрл string) (*СекцияСеть, error) {
+	log.Printf("НовСекцияСеть(): url=%q\n", стрУрл)
+	{ // Предусловия
+		if сцена == nil {
+			return nil, fmt.Errorf("НовСекцияСеть(): ISection == nil")
+		}
+		if стрУрл == "" {
+			return nil, fmt.Errorf("НовСекцияСеть(): strUrl is empty")
+		}
+	}
+	сам := &СекцияСеть{
+		секция: сцена,
+		стрУрл: стрУрл,
+		клиент: сцена.Бот().Сеть().КлиентСеть(),
+	}
+	return сам, nil
+}
+
+// Обновляет список строк
+func (сам *СекцияСеть) ОбновитьСеть() (err error) {
+	if сам == nil {
+		return
+	}
+	сам.блок.Lock()
+	defer сам.блок.Unlock()
+	// FIXME: попытка разобраться, что за фигня творится
+	// time.Sleep(time.Millisecond * 500)
+	log.Printf("СекцияСеть.ОбновитьСеть(): bot=%s\tsection=%v\n", сам.секция.Бот().Имя(), сам.секция.Имя())
+	if сам.секция.Имя() == "Арсенал" {
+		log.Printf("СекцияСеть.ОбновитьСеть(): арсенал\n")
+	}
+	lstString, err := сам.клиент.Get(сам.стрУрл)
+	if err != nil {
+		return fmt.Errorf("СекцияСеть.ОбновитьСеть(): in make request, err=\n\t%w", err)
+	}
+	if err := сам.секция.СтрОбновить(lstString); err != nil {
+		return fmt.Errorf("СекцияСеть.ОбновитьСеть(): in update ISection, err=\n\t%w", err)
+	}
+	return nil
+}
+
+// Get -- выполняет GET-запрос по указанному URL
+func (sf *СекцияСеть) Get(strLink string) (lstString []string, err error) {
+	sf.блок.Lock()
+	defer sf.блок.Unlock()
+	// log._rintf("INFO СекцияСеть.Get(): link=%v\n", sf.strUrl)
+	if !strings.Contains(strLink, sf.стрУрл) {
+		return nil, fmt.Errorf("СекцияСеть.Get(): strLink(%v) не содержит strUrl(%v)", strLink, sf.стрУрл)
+	}
+	lstString, err = sf.клиент.Get(strLink)
+	if err != nil {
+		return nil, fmt.Errorf("СекцияСеть.Get(): err=\n\t%v", err)
+	}
+	return lstString, nil
+}
+
+// Клиент -- возвращает хранимого клиента
+func (сам *СекцияСеть) Клиент() types.ИСетьКлиент {
+	return сам.клиент
+}

+ 0 - 84
pkg/components/sectionnet/sectionnet.go

@@ -1,84 +0,0 @@
-// package sectionnet -- сетевая секция
-package sectionnet
-
-import (
-	"fmt"
-	"log"
-	"strings"
-	"sync"
-
-	// "time"
-
-	"wartank/pkg/types"
-)
-
-/*
-	Базовый тип для сетевых секций
-*/
-
-// SectionNet -- базовый тип для сетевых секций
-type SectionNet struct {
-	клиент  types.ИСетьКлиент
-	section types.ИСценаСтр
-	strUrl  string
-	block   sync.Mutex
-}
-
-// NewSectionNet -- возвращает новый *SectionNet
-func NewSectionNet(section types.ИСценаСтр, strUrl string) (*SectionNet, error) {
-	log.Printf("NewSectionNet(): url=%q\n", strUrl)
-	{ // Предусловия
-		if section == nil {
-			return nil, fmt.Errorf("NewSectionNet(): ISection == nil")
-		}
-		if strUrl == "" {
-			return nil, fmt.Errorf("NewSectionNet(): strUrl is empty")
-		}
-	}
-	sf := &SectionNet{
-		section: section,
-		strUrl:  strUrl,
-		клиент:  section.Бот().Сеть().КлиентСеть(),
-	}
-	return sf, nil
-}
-
-// Обновляет список строк
-func (sf *SectionNet) UpdateLst() (err error) {
-	if sf == nil {
-		return
-	}
-	sf.block.Lock()
-	defer sf.block.Unlock()
-	// FIXME: попытка разобраться, что за фигня творится
-	// time.Sleep(time.Millisecond * 500)
-	log.Printf("SectionNet.UpdateLst(): bot=%s\tsection=%v\n", sf.section.Бот().Имя(), sf.section.Имя())
-	lstString, err := sf.клиент.Get(sf.strUrl)
-	if err != nil {
-		return fmt.Errorf("SectionNet.UpdateLst(): in make request, err=\n\t%w", err)
-	}
-	if err := sf.section.СтрОбновить(lstString); err != nil {
-		return fmt.Errorf("SectionNet.UpdateLst(): in update ISection, err=\n\t%w", err)
-	}
-	return nil
-}
-
-// Get -- выполняет GET-запрос по указанному URL
-func (sf *SectionNet) Get(strLink string) (lstString []string, err error) {
-	sf.block.Lock()
-	defer sf.block.Unlock()
-	// log._rintf("INFO SectionNet.Get(): link=%v\n", sf.strUrl)
-	if !strings.Contains(strLink, sf.strUrl) {
-		return nil, fmt.Errorf("SectionNet.Get(): strLink(%v) не содержит strUrl(%v)", strLink, sf.strUrl)
-	}
-	lstString, err = sf.клиент.Get(strLink)
-	if err != nil {
-		return nil, fmt.Errorf("SectionNet.Get(): err=\n\t%v", err)
-	}
-	return lstString, nil
-}
-
-// Клиент -- возвращает хранимого клиента
-func (сам *SectionNet) Клиент() types.ИСетьКлиент {
-	return сам.клиент
-}

+ 1 - 1
pkg/types/ibattle_action.go

@@ -14,7 +14,7 @@ import (
 type ИСражениеДействие interface {
 	ИСценаСтр
 	// Сеть -- возвращает сетевой компонент сражения
-	Сеть() ISectionNet
+	Сеть() ИСекцияСеть
 	// МанёврНадоУст -- устанавливает признак необходимости манёвра
 	МанёврНадоУст()
 	// ВыстрелБлок -- признак запрета на стрельбу

+ 1 - 1
pkg/types/idiv_war_action.go

@@ -13,7 +13,7 @@ import (
 type ИДивизияВойнаДействие interface {
 	ИСценаСтр
 	// Сеть -- возвращает сетевой компонент сражения
-	Сеть() ISectionNet
+	Сеть() ИСекцияСеть
 	// IsEnd -- признак окончания сражения
 	// IsEnd() *isdivwar.IsDivWar
 	// Манёвр -- выполняет манёвр по требованию

+ 1 - 1
pkg/types/inetangar.go

@@ -6,5 +6,5 @@ package types
 
 // INetAngar -- интерфейс к сетевому ангару
 type INetAngar interface {
-	ISectionNet
+	ИСекцияСеть
 }

+ 1 - 1
pkg/types/inetbase.go

@@ -6,5 +6,5 @@ package types
 
 // INetBase -- интерфейс к сетевой базе
 type INetBase interface {
-	ISectionNet
+	ИСекцияСеть
 }

+ 4 - 4
pkg/types/isectionnet.go

@@ -4,10 +4,10 @@ package types
 	Базовый тип для сетевой секции
 */
 
-// ISectionNet --	базовый тип для сетевой секции
-type ISectionNet interface {
-	// UpdateLst -- обновляет список строк секции
-	UpdateLst() error
+// ИСекцияСеть --	базовый тип для сетевой секции
+type ИСекцияСеть interface {
+	// ОбновитьСеть -- обновляет список строк секции
+	ОбновитьСеть() error
 	// Get -- выполняет GET-запрос по указанному URL
 	Get(strLink string) ([]string, error)
 }

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

@@ -219,7 +219,7 @@ func (sf *Ангар) Пуск() error {
 
 // Обновляет ресурсы ангара
 func (sf *Ангар) РесурсыОбновить() {
-	if err := sf.сеть.UpdateLst(); err != nil {
+	if err := sf.сеть.ОбновитьСеть(); err != nil {
 		// log._rintf("ERRO Ангар.updateResurs(): при обработке ангара в сети, err=\n\t%v\n", err)
 		return
 	}

+ 4 - 4
server/serv_bots/warbot/angar/angarnet/angarnet.go

@@ -3,7 +3,7 @@ package angarnet
 import (
 	"fmt"
 
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 )
 
@@ -13,19 +13,19 @@ import (
 
 // AngarNet -- объект сетевого ангара
 type AngarNet struct {
-	*sectionnet.SectionNet
+	*section_net.СекцияСеть
 	angar types.ИАнгар
 }
 
 // NewAngarNet -- возвращает новый *AngarNet
 func NewAngarNet(angar types.ИАнгар) (*AngarNet, error) {
-	sectionNet, err := sectionnet.NewSectionNet(angar, "https://wartank.ru/angar")
+	sectionNet, err := section_net.НовСекцияСеть(angar, "https://wartank.ru/angar")
 	if err != nil {
 		return nil, fmt.Errorf("NewAngarNet(): in create *SectionNet, err=\n\t%w", err)
 	}
 
 	sf := &AngarNet{
-		SectionNet: sectionNet,
+		СекцияСеть: sectionNet,
 		angar:      angar,
 	}
 

+ 136 - 129
server/serv_bots/warbot/angar/base/arsenal/arsenal.go

@@ -17,6 +17,13 @@ import (
 	Объект оружейной на базе
 */
 
+const (
+	стрКумулятивы = "кумулятивы"
+	стрБронебойки = "бронебойки"
+	стрФугасы     = "фугасы"
+	стрРемки      = "ремки"
+)
+
 // Оружейная -- объект оружейной на базе
 type Оружейная struct {
 	*section.Секция
@@ -36,19 +43,19 @@ func НовОружейная(base types.ИБаза) (*Оружейная, error
 		return nil, fmt.Errorf("НовОружейная(): in create ISection, err=\n\t%w", err)
 	}
 
-	фугас, ош := static_param.НовСтатПарам("fugas")
+	фугас, ош := static_param.НовСтатПарам(стрФугасы)
 	if ош != nil {
 		return nil, fmt.Errorf("НовОружейная(): при создании статистики фугасов, ош=\n\t%w", ош)
 	}
-	бронейбойки, ош := static_param.НовСтатПарам("armor")
+	бронейбойки, ош := static_param.НовСтатПарам(стрБронебойки)
 	if ош != nil {
 		return nil, fmt.Errorf("НовОружейная(): при создании статистики бронебоек, ош=\n\t%w", ош)
 	}
-	кумулятив, ош := static_param.НовСтатПарам("kumul")
+	кумулятив, ош := static_param.НовСтатПарам(стрКумулятивы)
 	if ош != nil {
 		return nil, fmt.Errorf("НовОружейная(): при создании статистики  кумулятивов, ош=\n\t%w", ош)
 	}
-	ремка, ош := static_param.НовСтатПарам("remka")
+	ремка, ош := static_param.НовСтатПарам(стрРемки)
 	if ош != nil {
 		return nil, fmt.Errorf("НовОружейная(): при создании статистики  ремок, ош=\n\t%w", ош)
 	}
@@ -80,9 +87,22 @@ func (сам *Оружейная) Пуск() error {
 func (сам *Оружейная) пуск() {
 	// sf.getTime()
 	time.Sleep(time.Second * 3)
+	фнРабота := func() {
+		defer time.Sleep(time.Minute * 5) // Интервал 5 минут (кратно интервалу производства -- от 40 минут до 1 часа)
+		сам.СтатаОбновить()
+		if сам.забрать() {
+			if сам.сделать() {
+				time.Sleep(time.Minute * 5)
+			}
+		}
+		if сам.построитьУлучшить() {
+			time.Sleep(time.Minute * 25)
+			return
+		}
+	}
 	for {
 		select {
-		case <-сам.бот.Кнт().Done():
+		case <-сам.Кнт().Done():
 			return
 		// case <-сам.ВремяОпрос().КаналСиг():
 		// 	if сам.РежимТекущ().Получ() == "upgrade" {
@@ -92,20 +112,14 @@ func (сам *Оружейная) пуск() {
 		// 	return fmt.Errorf("ArsenalNet.Run(): in update arsenal, err=\n\t%w", err)
 		// }
 		default:
-			if сам.РежимТекущ().Получ() == "upgrade" {
-				continue
-			}
-			сам.проверитьЗабрать()
-			сам.Обновить()
-			сам.проверитьПостроить()
-			сам.сделать()
-			time.Sleep(time.Second * 305) // Интервал 5 минут и ещё 5 секунд (кратно интервалу производства -- от 40 минут до 1 часа)
+			фнРабота()
 		}
+
 	}
 }
 
 // Проверяет на забрать оружейную
-func (сам *Оружейная) проверитьЗабрать() {
+func (сам *Оружейная) забрать() bool {
 	var (
 		strOut      string
 		ind         int
@@ -121,10 +135,10 @@ func (сам *Оружейная) проверитьЗабрать() {
 		}
 	}
 	if !еслиНайдено {
-		return
+		return false
 	}
 	if !strings.Contains(strOut, `"><span><span>Забрать</span></span></a>`) {
-		return
+		return false
 	}
 	lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
 	strLink := lstLink[1]
@@ -135,25 +149,20 @@ func (сам *Оружейная) проверитьЗабрать() {
 		лстАрсенал []string
 		ош         error
 	)
-	фнЗабрать := func() bool {
-		time.Sleep(time.Millisecond * 100)
-		лстАрсенал, ош = сам.сеть.Get(strLink)
-		if ош != nil {
-			log.Printf("Оружейная.проверитьЗабрать(): при выполнении Get-запроса? err=\n\t%v\n", ош)
-			return false
-		}
-		if len(лстАрсенал) == 0 {
-			log.Printf("Оружейная.проверитьЗабрать(): len lstBase(%v)==0", len(lstBase))
+	time.Sleep(time.Millisecond * 100)
+	лстАрсенал, ош = сам.сеть.Get(strLink)
+	if ош != nil {
+		log.Printf("Оружейная.забрать(): при выполнении Get-запроса? err=\n\t%v\n", ош)
+		return false
+	}
+	if len(лстАрсенал) == 0 {
+		log.Printf("Оружейная.забрать(): len lstBase(%v)==0", len(lstBase))
+		return false
+	}
+	for _, strOut = range лстАрсенал {
+		if strings.Contains(strOut, `<title>Производство</title>`) {
 			return false
 		}
-		for _, strOut = range лстАрсенал {
-			if strings.Contains(strOut, `<title>Производство</title>`) {
-				return false
-			}
-		}
-		return true
-	}
-	for !фнЗабрать() {
 	}
 	if ош = сам.СтрОбновить(лстАрсенал); ош != nil {
 		log.Printf("Оружейная.checkArsenalGet(): при обновлении lstBase, err=\n\t%v\n", ош)
@@ -161,95 +170,92 @@ func (сам *Оружейная) проверитьЗабрать() {
 	if ош = сам.СтрОбновить(лстАрсенал); ош != nil {
 		log.Printf("Оружейная.checkArsenalGet(): при обновлении lstArsenal, err=\n\t%v\n", ош)
 	}
+	return true
 }
 
 // Проверяет необходимость постройки оружейной
-func (сам *Оружейная) проверитьПостроить() {
-	фнПостроить := func() bool {
-		var (
-			списПолигон []string
-			ош          error
-		)
-		{ // Зайти на страницу постройки
-			// https://wartank.ru/building-upgrade/Armory
-			списПолигон, ош = сам.сеть.Клиент().Get("https://wartank.ru/building-upgrade/Armory")
-			if ош != nil {
-				log.Printf("Оружейная.построитьПровер(): при чтении страницы строительства оружейки, ош=\n\t%v\n", ош)
-				return false
-			}
-			стрСсылка := ""
-			еслиНайти := false
-			// <a class="simple-but border mb5" href="Armory?163-1.ILinkListener-upgradeLink-link">
-			for _, стрСсылка = range списПолигон {
-				if strings.Contains(стрСсылка, `href="Armory?`) {
-					еслиНайти = true
-					break
-				}
-			}
-			if !еслиНайти { // Время полигона вышло
-				return false
-			}
-			_ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border mb5" href="`)
-			_ссылка = strings.TrimSuffix(_ссылка, `">`)
-			ссылка := "https://wartank.ru/building-upgrade/" + _ссылка
-			// https://wartank.ru/building-upgrade/Armory?162-1.ILinkListener-upgradeLink-link
-			списПолигон, ош = сам.сеть.Клиент().Get(ссылка)
-			if ош != nil {
-				log.Printf("Оружейная.построитьПровер(): при выполнении запроса на строительство, ош=\n\t%v\n", ош)
-				return false
-			}
+func (сам *Оружейная) построитьУлучшить() bool {
+	var (
+		списПолигон []string
+		ош          error
+	)
+	{ // Зайти на страницу постройки
+		// https://wartank.ru/building-upgrade/Armory
+		списПолигон, ош = сам.сеть.Клиент().Get("https://wartank.ru/building-upgrade/Armory")
+		if ош != nil {
+			log.Printf("Оружейная.построитьУлучшить(): при чтении страницы строительства оружейки, ош=\n\t%v\n", ош)
+			return false
 		}
-		{ // Заказать постройку
-			// https://wartank.ru/building-upgrade/Armory
-			стрСсылка := ""
-			еслиНайти := false
-			// <a class="simple-but border mb5" href="Armory?163-1.ILinkListener-upgradeLink-link">
-			for _, стрСсылка = range списПолигон {
-				if strings.Contains(стрСсылка, `href="Armory?`) {
-					еслиНайти = true
-					break
-				}
+		стрСсылка := ""
+		еслиНайти := false
+		// <a class="simple-but border mb5" href="Armory?163-1.ILinkListener-upgradeLink-link">
+		for _, стрСсылка = range списПолигон {
+			if strings.Contains(стрСсылка, `href="Armory?`) {
+				еслиНайти = true
+				break
 			}
-			if !еслиНайти { // Время полигона вышло
-				return false
+		}
+		if !еслиНайти { // Ссылка на постройку оружейной не найдена
+			return false
+		}
+		_ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border mb5" href="`)
+		_ссылка = strings.TrimSuffix(_ссылка, `">`)
+		ссылка := "https://wartank.ru/building-upgrade/" + _ссылка
+		// https://wartank.ru/building-upgrade/Armory?162-1.ILinkListener-upgradeLink-link
+		списПолигон, ош = сам.сеть.Клиент().Get(ссылка)
+		if ош != nil {
+			log.Printf("Оружейная.построитьУлучшить(): при выполнении запроса на строительство, ош=\n\t%v\n", ош)
+			return false
+		}
+	}
+	{ // Заказать постройку
+		// https://wartank.ru/building-upgrade/Armory
+		стрСсылка := ""
+		еслиНайти := false
+		// <a class="simple-but border mb5" href="Armory?163-1.ILinkListener-upgradeLink-link">
+		for _, стрСсылка = range списПолигон {
+			if strings.Contains(стрСсылка, `href="Armory?`) {
+				еслиНайти = true
+				break
 			}
+		}
+		if еслиНайти {
 			_ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border mb5" href="`)
 			_ссылка = strings.TrimSuffix(_ссылка, `">`)
 			ссылка := "https://wartank.ru/building-upgrade/" + _ссылка
 			// https://wartank.ru/building-upgrade/Armory?162-1.ILinkListener-upgradeLink-link
 			списПолигон, ош = сам.сеть.Клиент().Get(ссылка)
 			if ош != nil {
-				log.Printf("Оружейная.построитьПровер(): при выполнении запроса на строительство, ош=\n\t%v\n", ош)
+				log.Printf("Оружейная.построитьУлучшить(): при выполнении запроса на строительство, ош=\n\t%v\n", ош)
 				return false
 			}
 		}
-		{ // подтверждение постройки
-			// <a class="simple-but border w50 mXa mb10" w:id="confirmLink" href="../wicket/page?165-1.ILinkListener-confirmLink"><span><span>да, подтверждаю</span></span></a>
-			стрСсылка := ""
-			еслиНайти := false
-			for _, стрСсылка = range списПолигон {
-				if strings.Contains(стрСсылка, `.ILinkListener-confirmLink`) {
-					еслиНайти = true
-					break
-				}
-			}
-			if !еслиНайти { // Время полигона вышло
-				return false
-			}
-			_ссылка := strings.TrimPrefix(стрСсылка, "<a class=\"simple-but border w50 mXa mb10\" w:id=\"confirmLink\" href=\"../")
-			_ссылка = strings.TrimSuffix(_ссылка, "\"><span><span>да, подтверждаю</span></span></a>")
-			ссылка := "https://wartank.ru/" + _ссылка
-			// https://wartank.ru/wicket/page?135-1.ILinkListener-confirmLink
-			_, ош = сам.сеть.Клиент().Get(ссылка)
-			if ош != nil {
-				log.Printf("Оружейная.построитьПровер(): при выполнении запроса на строительство, ош=\n\t%v\n", ош)
-				return false
+	}
+	{ // подтверждение постройки
+		// <a class="simple-but border w50 mXa mb10" w:id="confirmLink" href="../wicket/page?165-1.ILinkListener-confirmLink"><span><span>да, подтверждаю</span></span></a>
+		стрСсылка := ""
+		еслиНайти := false
+		for _, стрСсылка = range списПолигон {
+			if strings.Contains(стрСсылка, `.ILinkListener-confirmLink`) {
+				еслиНайти = true
+				break
 			}
 		}
-		return true
+		if !еслиНайти { // Время полигона вышло
+			return false
+		}
+		_ссылка := strings.TrimPrefix(стрСсылка, "<a class=\"simple-but border w50 mXa mb10\" w:id=\"confirmLink\" href=\"../")
+		_ссылка = strings.TrimSuffix(_ссылка, "\"><span><span>да, подтверждаю</span></span></a>")
+		ссылка := "https://wartank.ru/" + _ссылка
+		// https://wartank.ru/wicket/page?135-1.ILinkListener-confirmLink
+		_, ош = сам.сеть.Клиент().Get(ссылка)
+		if ош != nil {
+			log.Printf("Оружейная.построитьУлучшить(): при выполнении запроса на строительство, ош=\n\t%v\n", ош)
+			return false
+		}
 	}
-	фнПостроить()
-	log.Printf("Оружейная.построитьПровер(): построен упешно\n")
+	log.Printf("Оружейная.построитьУлучшить(): построен упешно\n")
+	return true
 }
 
 // Фугасы -- возвращает объект числа фугасов
@@ -273,9 +279,9 @@ func (сам *Оружейная) Ремки() types.ИСтатПарам {
 }
 
 // Обновляет состояние арсенала по требованию
-func (сам *Оружейная) Обновить() (err error) {
+func (сам *Оружейная) СтатаОбновить() (err error) {
 	// _mt.Println("\tArsenalNet.updateArsenal()")
-	if err := сам.сеть.UpdateLst(); err != nil {
+	if err := сам.сеть.ОбновитьСеть(); err != nil {
 		return fmt.Errorf("Оружейная.Обновить(): при обновлении lstArsenal, err=%w", err)
 	}
 	var (
@@ -295,7 +301,7 @@ func (сам *Оружейная) Обновить() (err error) {
 		strFugas = lstFugas[0]
 		iFugas, err := strconv.Atoi(strFugas)
 		if err != nil {
-			return fmt.Errorf("Оружейная.Обновить(): fugas(%v) not number, err=\n\t%w", strFugas, err)
+			return fmt.Errorf("Оружейная.СтатаОбновить(): fugas(%v) not number, err=\n\t%w", strFugas, err)
 		}
 		сам.Фугасы().Уст(iFugas)
 	}
@@ -312,7 +318,7 @@ func (сам *Оружейная) Обновить() (err error) {
 		strArmor = lstArmor[0]
 		iArmor, err := strconv.Atoi(strArmor)
 		if err != nil {
-			return fmt.Errorf("Оружейная.Обновить(): armor(%v) not number, err=\n\t%w", strArmor, err)
+			return fmt.Errorf("Оружейная.СтатаОбновить(): armor(%v) not number, err=\n\t%w", strArmor, err)
 		}
 		сам.Бронебойки().Уст(iArmor)
 	}
@@ -329,7 +335,7 @@ func (сам *Оружейная) Обновить() (err error) {
 		strKumul = lstKumul[0]
 		iKumul, err := strconv.Atoi(strKumul)
 		if err != nil {
-			return fmt.Errorf("Оружейная.Обновить(): kumul(%v) not number, err=\n\t%w", strKumul, err)
+			return fmt.Errorf("Оружейная.СтатаОбновить(): kumul(%v) not number, err=\n\t%w", strKumul, err)
 		}
 		сам.Кумулятивы().Уст(iKumul)
 	}
@@ -346,7 +352,7 @@ func (сам *Оружейная) Обновить() (err error) {
 		strRemka = lstRemka[0]
 		iRemka, err := strconv.Atoi(strRemka)
 		if err != nil {
-			return fmt.Errorf("Оружейная.Обновить(): remka(%v) not number, err=\n\t%w", strRemka, err)
+			return fmt.Errorf("Оружейная.СтатаОбновить(): remka(%v) not number, err=\n\t%w", strRemka, err)
 		}
 		сам.Ремки().Уст(iRemka)
 	}
@@ -354,18 +360,17 @@ func (сам *Оружейная) Обновить() (err error) {
 }
 
 // Выбирает что надо делать, запускает процесс изготовления
-func (сам *Оружейная) сделать() {
-	err := сам.сеть.UpdateLst()
+func (сам *Оружейная) сделать() bool {
+	err := сам.сеть.ОбновитьСеть()
 	if err != nil {
 		// log._rintf("ERRO Оружейная.сделать(): при обновлении lstArsenal, err=\n\t%v\n", err)
-		return
+		return false
 	}
 	// _mt.Println("\tArsenalNet.сделать()")
 	{ // Контроль ремки по времени суток и минимальному количеству
 		iRemka := сам.Ремки().Получ()
 		if iRemka < 70 {
-			сам.сделатьРемку()
-			return
+			return сам.сделатьРемку()
 		}
 	}
 	{ // Контроль по числу снарядов. В равных долях без приоритетов
@@ -373,28 +378,29 @@ func (сам *Оружейная) сделать() {
 		iKumul := сам.Кумулятивы().Получ()
 		iArmor := сам.Бронебойки().Получ()
 
-		typeArmor := "fugas"
+		typeArmor := стрФугасы
 		typeVal := iFugas
 
 		if iKumul < typeVal {
-			typeArmor = "kumul"
+			typeArmor = стрКумулятивы
 			typeVal = iKumul
 		}
 
 		if iArmor < typeVal {
-			typeArmor = "armor"
+			typeArmor = стрБронебойки
 		}
 		switch typeArmor {
-		case "fugas": // Мало фугасов
+		case стрФугасы: // Мало фугасов
 			сам.сдлатьФугасы()
-		case "kumul": // Мало кумулятивов
+		case стрКумулятивы: // Мало кумулятивов
 			сам.сделатьКумули()
-		case "armor": // Мало бронебойных
+		case стрБронебойки: // Мало бронебойных
 			сам.сделатьБронебойки()
 		default:
 			// log._rintf("ERRO Оружейная.сделать(): неизвестный тип арсенала(%v)", typeArmor)
 		}
 	}
+	return true
 }
 
 // Создать бронебойные
@@ -429,7 +435,7 @@ func (сам *Оружейная) сделатьБронебойки() {
 		// log._rintf("ERRO ArsenalNet.makeArmor(): in update lstArsenal,  err=\n\t%v\n", err)
 		return
 	}
-	сам.РежимТекущ().РежимУст("бронебойные")
+	сам.РежимТекущ().РежимУст(стрБронебойки)
 }
 
 // Создать кумулятивные
@@ -463,7 +469,7 @@ func (сам *Оружейная) сделатьКумули() {
 		// log._rintf("ERRO ArsenalNet.makeKumul(): in make product arsenal kumul , err=\n\t%v\n", err)
 		return
 	}
-	сам.РежимТекущ().РежимУст("кумулятивы")
+	сам.РежимТекущ().РежимУст(стрКумулятивы)
 }
 
 // Создать фугасы
@@ -497,12 +503,12 @@ func (сам *Оружейная) сдлатьФугасы() {
 		// log._rintf("ERRO ArsenalNet.makeFugas(): in make request arsenal product, err=\n\t%v\n", err)
 		return
 	}
-	сам.РежимТекущ().РежимУст("фугасы")
+	сам.РежимТекущ().РежимУст(стрФугасы)
 	// log._rintf("INFO Оружейная.makeFugas()\n")
 }
 
 // Создать ремку. Выполняется если подходят условия
-func (сам *Оружейная) сделатьРемку() {
+func (сам *Оружейная) сделатьРемку() bool {
 	// _mt.Println("\tArsenalNet.makeRemka()")
 	var (
 		strOut = ""
@@ -511,7 +517,7 @@ func (сам *Оружейная) сделатьРемку() {
 	lstArsenal, ош := сам.сеть.Клиент().Get("https://wartank.ru/production/Armory")
 	if ош != nil {
 		log.Printf("Оружейная.сделатьРемку(): при получении страницы оружейки, err=\n\t%v\n", ош)
-		return
+		return false
 	}
 	// <a class="simple-but border" href="Armory?55-1.ILinkListener-productions-0-production-startProduceLink"><span><span>Начать производство</span></span></a>
 	for _, strOut = range lstArsenal {
@@ -521,7 +527,7 @@ func (сам *Оружейная) сделатьРемку() {
 		}
 	}
 	if !isFind {
-		return
+		return false
 	}
 	// Получить ссылку на ремку
 	_ссылка := strings.TrimPrefix(strOut, `<a class="simple-but border" href="`)
@@ -530,7 +536,8 @@ func (сам *Оружейная) сделатьРемку() {
 	ссылка := "https://wartank.ru/production/" + _ссылка
 	if _, err := сам.сеть.Клиент().Get(ссылка); err != nil {
 		log.Printf("Оружейная.сделатьРемку(): при отдаче команды сделать ремку, err=\n\t%v\n", err)
-		return
+		return false
 	}
-	сам.РежимТекущ().РежимУст("ремка")
+	сам.РежимТекущ().РежимУст(стрРемки)
+	return true
 }

+ 4 - 4
server/serv_bots/warbot/angar/base/arsenal/arsenalnet/arsenalnet.go

@@ -3,7 +3,7 @@ package arsenalnet
 import (
 	"fmt"
 
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 )
 
@@ -13,18 +13,18 @@ import (
 
 // ArsenalNet -- планировщик беоприпасов и ремок в сети
 type ArsenalNet struct {
-	*sectionnet.SectionNet
+	*section_net.СекцияСеть
 }
 
 // НовАрсеналСеть -- возвращает новый *ArsenalNet
 func НовАрсеналСеть(arsenal types.ИАрсенал) (*ArsenalNet, error) {
-	sectionNet, err := sectionnet.NewSectionNet(arsenal, "https://wartank.ru/production/Armory")
+	sectionNet, err := section_net.НовСекцияСеть(arsenal, "https://wartank.ru/production/Armory")
 	if err != nil {
 		return nil, fmt.Errorf("NewArsenalNet(): in create SectionNet, err=\n\t%w", err)
 	}
 
 	sf := &ArsenalNet{
-		SectionNet: sectionNet,
+		СекцияСеть: sectionNet,
 	}
 
 	return sf, nil

+ 140 - 73
server/serv_bots/warbot/angar/base/bank/bank.go

@@ -61,7 +61,7 @@ func (сам *Банк) Пуск() error {
 
 // UpdateLst -- принудительно обновляет состояние банка
 func (сам *Банк) UpdateLst() {
-	if err := сам.сеть.UpdateLst(); err != nil {
+	if err := сам.сеть.ОбновитьСеть(); err != nil {
 		log.Printf("Банк.UpdateLst(): err=\n\t%v\n", err)
 	}
 }
@@ -70,9 +70,16 @@ func (сам *Банк) UpdateLst() {
 func (сам *Банк) пуск() {
 	log.Printf("Банк.пуск()\n")
 	fnRun := func() {
-		defer time.Sleep(time.Minute * 2)
-		сам.проверитьПостроить()
-		if ош := сам.сеть.UpdateLst(); ош != nil {
+		time.Sleep(time.Minute * 5)
+		сам.забрать()
+		if сам.построитьУлучшить() {
+			time.Sleep(time.Minute * 30)
+		}
+		if сам.проверитьУскорить() {
+			time.Sleep(time.Minute * 30)
+			return
+		}
+		if ош := сам.сеть.ОбновитьСеть(); ош != nil {
 			// log._rintf("ERRO Банк.пуск():  при обновлении lstBank, err=\n\t%v\n", err)
 			return
 		}
@@ -92,56 +99,117 @@ func (сам *Банк) пуск() {
 	}
 }
 
+// Проверка на ускорение строительства
+func (сам *Банк) проверитьУскорить() bool {
+	var (
+		стрСсылка   = ""
+		еслиНайдено = false
+	)
+	списБанк, ош := сам.сеть.Клиент().Get("https://wartank.ru/buildings")
+	if ош != nil {
+		log.Printf("Банк.проверУскорить(): при получении страницы базы, ош=\n\t%v\n", ош)
+		return false
+	}
+	// <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`) {
+			еслиНайдено = true
+			break
+		}
+	}
+	if !еслиНайдено {
+		return false
+	}
+	_ссылка := 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/" + _ссылка
+	_, ош = сам.сеть.Клиент().Get(ссылка)
+	if ош != nil {
+		log.Printf("Банк.проверУскорить(): при выполнении ускорения, ош=\n\t%v\n", ош)
+		return false
+	}
+	return true
+}
+
+// Забирает серебро
+func (сам *Банк) забрать() {
+	var (
+		strOut      string
+		еслиНайдено bool
+	)
+	списБанк, ош := сам.сеть.Клиент().Get("https://wartank.ru/buildings")
+	if ош != nil {
+		log.Printf("Банк.забрать(): при выполнении GET-запроса 'получить страницу базы', ош=\n\t%v\n", ош)
+		return
+	}
+	// <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`) {
+			еслиНайдено = true
+			break
+		}
+	}
+	if !еслиНайдено {
+		return
+	}
+	_ссылка := strings.TrimPrefix(strOut, `<a class="simple-but border" href="`)
+	_ссылка = strings.TrimSuffix(_ссылка, `"><span><span>Забрать</span></span></a>`)
+	// https://wartank.ru/buildings?3-1.ILinkListener-buildings-1-building-rootBlock-actionPanel-takeProductionLink
+	ссылка := "https://wartank.ru/" + _ссылка
+	_, ош = сам.сеть.Клиент().Get(ссылка)
+	if ош != nil {
+		log.Printf("Банк.забрать(): при выполнении GET-запроса 'забрать серебро', err=\n\t%v\n", ош)
+		return
+	}
+}
+
 // Проверяет необходимость постройки полигона
-func (сам *Банк) проверитьПостроить() {
-	фнПостроить := func() bool {
-		var (
-			списБанк []string
-			ош       error
-		)
-		{ // Зайти на страницу постройки
-			// https://wartank.ru/building-upgrade/Bank
-			списБанк, ош = сам.сеть.Клиент().Get("https://wartank.ru/building-upgrade/Bank")
-			if ош != nil {
-				log.Printf("Банк.построитьПровер(): при чтении страницы строительства банка, ош=\n\t%v\n", ош)
-				return false
-			}
-			стрСсылка := ""
-			еслиНайти := false
-			// <a class="simple-but border mb5" href="Bank?192-1.ILinkListener-upgradeLink-link">
-			for _, стрСсылка = range списБанк {
-				if strings.Contains(стрСсылка, `href="Bank?`) {
-					еслиНайти = true
-					break
-				}
-			}
-			if !еслиНайти { // Время полигона вышло
-				return false
-			}
-			_ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border mb5" href="`)
-			_ссылка = strings.TrimSuffix(_ссылка, `">`)
-			ссылка := "https://wartank.ru/building-upgrade/" + _ссылка
-			// https://wartank.ru/building-upgrade/Bank?162-1.ILinkListener-upgradeLink-link
-			списБанк, ош = сам.сеть.Клиент().Get(ссылка)
-			if ош != nil {
-				log.Printf("Банк.построитьПровер(): при выполнении запроса на строительство, ош=\n\t%v\n", ош)
-				return false
-			}
+func (сам *Банк) построитьУлучшить() bool {
+	var (
+		списБанк []string
+		ош       error
+	)
+	{ // Зайти на страницу постройки
+		// https://wartank.ru/building-upgrade/Bank
+		списБанк, ош = сам.сеть.Клиент().Get("https://wartank.ru/building-upgrade/Bank")
+		if ош != nil {
+			log.Printf("Банк.построитьПровер(): при чтении страницы строительства банка, ош=\n\t%v\n", ош)
+			return false
 		}
-		{ // Заказать постройку
-			// https://wartank.ru/building-upgrade/Bank
-			стрСсылка := ""
-			еслиНайти := false
-			// <a class="simple-but border mb5" href="Bank?163-1.ILinkListener-upgradeLink-link">
-			for _, стрСсылка = range списБанк {
-				if strings.Contains(стрСсылка, `href="Bank?`) {
-					еслиНайти = true
-					break
-				}
+		стрСсылка := ""
+		еслиНайти := false
+		// <a class="simple-but border mb5" href="Bank?192-1.ILinkListener-upgradeLink-link">
+		for _, стрСсылка = range списБанк {
+			if strings.Contains(стрСсылка, `href="Bank?`) {
+				еслиНайти = true
+				break
 			}
-			if !еслиНайти { // Время полигона вышло
-				return false
+		}
+		if !еслиНайти { // Время полигона вышло
+			return false
+		}
+		_ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border mb5" href="`)
+		_ссылка = strings.TrimSuffix(_ссылка, `">`)
+		ссылка := "https://wartank.ru/building-upgrade/" + _ссылка
+		// https://wartank.ru/building-upgrade/Bank?162-1.ILinkListener-upgradeLink-link
+		списБанк, ош = сам.сеть.Клиент().Get(ссылка)
+		if ош != nil {
+			log.Printf("Банк.построитьПровер(): при выполнении запроса на строительство, ош=\n\t%v\n", ош)
+			return false
+		}
+	}
+	{ // Заказать постройку
+		// https://wartank.ru/building-upgrade/Bank
+		стрСсылка := ""
+		еслиНайти := false
+		// <a class="simple-but border mb5" href="Bank?163-1.ILinkListener-upgradeLink-link">
+		for _, стрСсылка = range списБанк {
+			if strings.Contains(стрСсылка, `href="Bank?`) {
+				еслиНайти = true
+				break
 			}
+		}
+		if еслиНайти { // Время полигона вышло
 			_ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border mb5" href="`)
 			_ссылка = strings.TrimSuffix(_ссылка, `">`)
 			ссылка := "https://wartank.ru/building-upgrade/" + _ссылка
@@ -152,33 +220,32 @@ func (сам *Банк) проверитьПостроить() {
 				return false
 			}
 		}
-		{ // подтверждение постройки
-			// <a class="simple-but border w50 mXa mb10" w:id="confirmLink" href="../wicket/page?187-1.ILinkListener-confirmLink"><span><span>да, подтверждаю</span></span></a>
-			стрСсылка := ""
-			еслиНайти := false
-			for _, стрСсылка = range списБанк {
-				if strings.Contains(стрСсылка, `.ILinkListener-confirmLink`) {
-					еслиНайти = true
-					break
-				}
-			}
-			if !еслиНайти { // Время полигона вышло
-				return false
-			}
-			_ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border w50 mXa mb10" w:id="confirmLink" href="../`)
-			_ссылка = strings.TrimSuffix(_ссылка, "\"><span><span>да, подтверждаю</span></span></a>")
-			ссылка := "https://wartank.ru/" + _ссылка
-			// https://wartank.ru/wicket/page?135-1.ILinkListener-confirmLink
-			_, ош = сам.сеть.Клиент().Get(ссылка)
-			if ош != nil {
-				log.Printf("Банк.построитьПровер(): при выполнении запроса на строительство, ош=\n\t%v\n", ош)
-				return false
+	}
+	{ // подтверждение постройки
+		// <a class="simple-but border w50 mXa mb10" w:id="confirmLink" href="../wicket/page?187-1.ILinkListener-confirmLink"><span><span>да, подтверждаю</span></span></a>
+		стрСсылка := ""
+		еслиНайти := false
+		for _, стрСсылка = range списБанк {
+			if strings.Contains(стрСсылка, `.ILinkListener-confirmLink`) {
+				еслиНайти = true
+				break
 			}
 		}
-		return true
+		if !еслиНайти { // Время полигона вышло
+			return false
+		}
+		_ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border w50 mXa mb10" w:id="confirmLink" href="../`)
+		_ссылка = strings.TrimSuffix(_ссылка, "\"><span><span>да, подтверждаю</span></span></a>")
+		ссылка := "https://wartank.ru/" + _ссылка
+		// https://wartank.ru/wicket/page?135-1.ILinkListener-confirmLink
+		_, ош = сам.сеть.Клиент().Get(ссылка)
+		if ош != nil {
+			log.Printf("Банк.построитьПровер(): при выполнении запроса на строительство, ош=\n\t%v\n", ош)
+			return false
+		}
 	}
-	фнПостроить()
 	log.Printf("Банк.построитьПровер(): построен упешно\n")
+	return true
 }
 
 // РежимРаботы2 -- возвращает объект режима2

+ 4 - 4
server/serv_bots/warbot/angar/base/bank/banknet/banknet.go

@@ -4,7 +4,7 @@ import (
 	"fmt"
 	"log"
 
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 )
 
@@ -14,19 +14,19 @@ import (
 
 // BankNet -- обзор базы
 type BankNet struct {
-	*sectionnet.SectionNet
+	*section_net.СекцияСеть
 }
 
 // NewBankNet -- возвращает новый *BankNet
 func NewBankNet(bank types.ИБанк) (*BankNet, error) {
 	log.Printf("NewBankNet()\n")
-	sectionNet, err := sectionnet.NewSectionNet(bank, "https://wartank.ru/production/Bank")
+	sectionNet, err := section_net.НовСекцияСеть(bank, "https://wartank.ru/production/Bank")
 	if err != nil {
 		return nil, fmt.Errorf("NewBankNet(): in create *SectionNet, err=\n\t%w", err)
 	}
 
 	sf := &BankNet{
-		SectionNet: sectionNet,
+		СекцияСеть: sectionNet,
 	}
 
 	return sf, nil

+ 5 - 57
server/serv_bots/warbot/angar/base/base.go

@@ -10,7 +10,6 @@ import (
 
 	"wartank/pkg/alias"
 	"wartank/pkg/components/section"
-	"wartank/pkg/components/sound"
 	"wartank/pkg/types"
 	"wartank/server/serv_bots/warbot/angar/base/arsenal"
 	"wartank/server/serv_bots/warbot/angar/base/bank"
@@ -105,7 +104,8 @@ func (sf *База) Пуск() error {
 // Собственная работа
 func (sf *База) пуск() {
 	фнЦикл := func() {
-		if err := sf.сеть.UpdateLst(); err != nil { // Обновить состояние базы
+		defer time.Sleep(time.Minute * 2)
+		if err := sf.сеть.ОбновитьСеть(); err != nil { // Обновить состояние базы
 			log.Printf("ERRO Base.Run(): при обновлении базы, err=\n\t%v\n", err)
 		}
 		sf.проверитьПолигонУсиление()              // Проверить усиление полигона
@@ -115,7 +115,7 @@ func (sf *База) пуск() {
 		sf.проверитьАрсенал() // Проверка арсенала
 		sf.проверитьШахту()   // Проверка шахты
 		sf.setCountDown()     // Установка счётчика времени
-		time.Sleep(time.Minute * 1)
+
 	}
 	for {
 		select {
@@ -389,7 +389,7 @@ func (sf *База) проверитьАрсенал() {
 	// if countTime > 3 {
 	// 	return
 	// }
-	if err := sf.арсенал.Обновить(); err != nil {
+	if err := sf.арсенал.СтатаОбновить(); err != nil {
 		// log._rintf("ERRO Base.checkArsenal(): при обновлении арсенала, err=\n\t%v\n", err)
 		return
 	}
@@ -459,7 +459,7 @@ func (sf *База) проверитьАрсеналРежим() {
 			return
 		}
 		if strings.Contains(strOut, `repairkit.gif`) {
-			sf.арсенал.РежимТекущ().РежимУст("ремка")
+			sf.арсенал.РежимТекущ().РежимУст("ремки")
 			return
 		}
 	}
@@ -553,7 +553,6 @@ func (sf *База) проверитьБанк() error {
 	if sf.банк.РежимТекущ().Получ() == "upgrade" {
 		return nil
 	}
-	sf.checkBankTake()    // Нужно ли забрать банк
 	sf.checkBankProduct() // Запуск производства в  банке
 	return nil
 }
@@ -640,57 +639,6 @@ func (sf *База) checkBankProduct() {
 }
 
 // Проверка получения серебра из банка
-func (sf *База) checkBankTake() {
-	var (
-		ind     int
-		strOut  string
-		isFind  bool
-		lstBank = sf.СписПолучить()
-		strLink string
-	)
-	for ind, strOut = range lstBank {
-		if strings.Contains(strOut, `<span class="green2">Банк - `) {
-			ind += 18
-			strLink = lstBank[ind]
-			isFind = true
-			break
-		}
-	}
-	if !isFind {
-		return
-	}
-	if !strings.Contains(strLink, `"><span><span>Забрать</span></span></a>`) {
-		return
-	}
-	lstLink := strings.Split(strLink, `<a class="simple-but border" href="`)
-	strLink = lstLink[1]
-	lstLink = strings.Split(strLink, `"><span><span>Забрать</span></span></a>`)
-	strLink = "https://wartank.ru/" + lstLink[0]
-	lstBank, err := sf.сеть.Get(strLink)
-	if err != nil {
-		// log._rintf("ERRO Base.checkBankTake(): при выполнении GET-запроса 'забрать серебро', err=\n\t%v\n", err)
-		return
-	}
-	sound.BankTake()
-	isFind = false
-	for _, strOut = range lstBank { // Проверка на производство в банке
-		if strings.Contains(strOut, `<title>Производство</title>`) {
-			isFind = true
-			break
-		}
-	}
-	if isFind {
-		if err := sf.банк.СтрОбновить(lstBank); err != nil {
-			log.Printf("ERRO Base.checkBankTake(): при установке lstBank, err=\n\t%v'n", err)
-		}
-		sf.банк.ОбратВремяУст("01:00")
-		return
-	}
-	if err := sf.СтрОбновить(lstBank); err != nil {
-		log.Printf("ERRO Base.checkBankTake(): при установке lstBase, err=\n\t%v'n", err)
-	}
-	sf.банк.ОбратВремяУст("01:00")
-}
 
 // Проверяет на ускорение апгрейда банка
 func (sf *База) checkBankForce() {

+ 4 - 4
server/serv_bots/warbot/angar/base/basenet/basenet.go

@@ -3,7 +3,7 @@ package basenet
 import (
 	"fmt"
 
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 )
 
@@ -13,20 +13,20 @@ import (
 
 // BaseNet -- обзор базы
 type BaseNet struct {
-	*sectionnet.SectionNet
+	*section_net.СекцияСеть
 	strUrl string
 }
 
 // NewBaseNet -- возвращает новый *BaseNet
 func NewBaseNet(base types.ИБаза) (*BaseNet, error) {
 	strUrl := "https://wartank.ru/buildings"
-	sectionNet, err := sectionnet.NewSectionNet(base, strUrl)
+	sectionNet, err := section_net.НовСекцияСеть(base, strUrl)
 	if err != nil {
 		return nil, fmt.Errorf("NewBaseNet(): in create SectionNet, err=\n\t%w", err)
 	}
 
 	sf := &BaseNet{
-		SectionNet: sectionNet,
+		СекцияСеть: sectionNet,
 		strUrl:     strUrl,
 	}
 	return sf, nil

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

@@ -77,7 +77,7 @@ func (сам *Рынок) проверОжидание() {
 	)
 	// countDown := sf.CountDown().Get()
 	фнЕслиСеребро := func() bool { // Найти счётчик цены серебра
-		if err := сам.сеть.UpdateLst(); err != nil { // Принудительное ПЕРВОЕ обновление рынка
+		if err := сам.сеть.ОбновитьСеть(); err != nil { // Принудительное ПЕРВОЕ обновление рынка
 			log.Printf("Market.checkTime(): при обновлении lstMarket, err=\n\t%v\n", err)
 			return false
 		}

+ 4 - 4
server/serv_bots/warbot/angar/base/market/marketnet/marketnet.go

@@ -3,7 +3,7 @@ package marketnet
 import (
 	"fmt"
 
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 )
 
@@ -13,18 +13,18 @@ import (
 
 // MarketNet -- обзор рынка
 type MarketNet struct {
-	*sectionnet.SectionNet
+	*section_net.СекцияСеть
 }
 
 // NewMarketNet -- возвращает новый *MarketNet
 func NewMarketNet(market types.ИРынок) (*MarketNet, error) {
-	sectionNet, err := sectionnet.NewSectionNet(market, "https://wartank.ru/market")
+	sectionNet, err := section_net.НовСекцияСеть(market, "https://wartank.ru/market")
 	if err != nil {
 		return nil, fmt.Errorf("NewMarketNet(): in create *SectionNet, err=\n\t%w", err)
 	}
 
 	sf := &MarketNet{
-		SectionNet: sectionNet,
+		СекцияСеть: sectionNet,
 	}
 
 	return sf, nil

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

@@ -326,7 +326,7 @@ func (сам *Шахта) построить(списСтр []string) {
 
 // Сделать -- вызывается с базы, если она обнаружила, что пора сделать продукцию
 func (сам *Шахта) Сделать() {
-	if err := сам.сеть.UpdateLst(); err != nil {
+	if err := сам.сеть.ОбновитьСеть(); err != nil {
 		log.Printf("ERRO Шахта.Сделать(): при обновлении lstMine, err=\n\t%v\n", err)
 		return
 	}

+ 4 - 4
server/serv_bots/warbot/angar/base/mine/minenet/minenet.go

@@ -2,7 +2,7 @@ package minenet
 
 import (
 	"fmt"
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 )
 
@@ -12,17 +12,17 @@ import (
 
 // MineNet -- опрашивает шахту на базе
 type MineNet struct {
-	*sectionnet.SectionNet
+	*section_net.СекцияСеть
 }
 
 // NewMineNet -- возвращает новый *MineNet
 func NewMineNet(mine types.ИБазаШахта) (*MineNet, error) {
-	sectionNet, err := sectionnet.NewSectionNet(mine, "https://wartank.ru/production/Mine")
+	sectionNet, err := section_net.НовСекцияСеть(mine, "https://wartank.ru/production/Mine")
 	if err != nil {
 		return nil, fmt.Errorf("NewMineNet(): in create *SectionNet, err=\n\t%w", err)
 	}
 	sf := &MineNet{
-		SectionNet: sectionNet,
+		СекцияСеть: sectionNet,
 	}
 	return sf, nil
 }

+ 24 - 21
server/serv_bots/warbot/angar/base/polygon/polygon.go

@@ -22,7 +22,10 @@ import (
 const (
 	времОжидПлат    = "05:00" // Время ожидания платного ускорения
 	времОжидБесплат = "30:00" // Время ожидания бесплатного ускорения
-
+	стрПрочность    = "прочность"
+	стрТочность     = "точность"
+	стрБроня        = "броня"
+	стрАтака        = "атака"
 )
 
 // Полигон -- объект полигона на базе
@@ -307,13 +310,13 @@ func (сам *Полигон) усилениеПровер() {
 	форсажИмя := ""
 	switch { // Вычисляем контрольную строку
 	case strings.Contains(strOut, `>улучшение точности<`):
-		форсажИмя = "fyne"
+		форсажИмя = стрТочность
 	case strings.Contains(strOut, `>увеличение прочности<`):
-		форсажИмя = "hard"
+		форсажИмя = стрПрочность
 	case strings.Contains(strOut, `>усиление брони<`):
-		форсажИмя = "armor"
+		форсажИмя = стрБроня
 	case strings.Contains(strOut, `>усиление атаки<`):
-		форсажИмя = "attack"
+		форсажИмя = стрАтака
 	}
 	// Вычислим на сколько
 	strOut = lstPolygon[ind+1]
@@ -333,7 +336,7 @@ func (сам *Полигон) усилениеПровер() {
 
 // Выбирает самый слабый параметр и усиливает его
 func (сам *Полигон) усилениеДобавить() {
-	if err := сам.сеть.UpdateLst(); err != nil {
+	if err := сам.сеть.ОбновитьСеть(); err != nil {
 		// log._rintf("Polygon.checkPolygon(): при принудительном обновлении lstPlygon, mode=%s\terr=\n\t%v\n", sf.ModeCurrent().Get(), err)
 		сам.ОбратВремяУст("05")
 		return
@@ -348,7 +351,7 @@ func (сам *Полигон) усилениеДобавить() {
 	iFyne := stat.Точность().Получ()
 	iHard := stat.Прочность().Получ()
 
-	strParam := "attack"
+	strParam := стрАтака
 	iParam := iHard
 	{
 		/*
@@ -363,14 +366,14 @@ func (сам *Полигон) усилениеДобавить() {
 
 		if iArmor <= iParam {
 			iParam = iArmor
-			strParam = "armor"
+			strParam = стрБроня
 		}
 		if iFyne <= iParam {
 			iParam = iFyne
-			strParam = "fyne"
+			strParam = стрТочность
 		}
 		if iAttack < iParam {
-			strParam = "attack"
+			strParam = стрАтака
 		}
 	}
 
@@ -381,7 +384,7 @@ func (сам *Полигон) усилениеДобавить() {
 		isFind bool
 	)
 	switch strParam {
-	case "attack": // Усиливаем атаку
+	case стрАтака: // Усиливаем атаку
 		for ind, strOut = range lstPoligon {
 			if strings.Contains(strOut, `>усиление атаки<`) {
 				isFind = true
@@ -416,9 +419,9 @@ func (сам *Полигон) усилениеДобавить() {
 				return
 			}
 			сам.танкСтат.ФорсажОбнов("attack", iForce)
-			сам.РежимТекущ().Уст("атака")
+			сам.РежимТекущ().Уст(стрАтака)
 		}
-	case "armor": // Усиливаем броню
+	case стрБроня: // Усиливаем броню
 		isFind = false
 		for ind, strOut = range lstPoligon {
 			if strings.Contains(strOut, `>усиление брони<`) {
@@ -453,10 +456,10 @@ func (сам *Полигон) усилениеДобавить() {
 				// log._rintf("ERRO NetPolygon.addForce(): strForceArmor(%v) not int, err=\n\t%v\n", strForce, err)
 				return
 			}
-			сам.танкСтат.ФорсажОбнов("armor", iForce)
-			сам.РежимТекущ().Уст("броня")
+			сам.танкСтат.ФорсажОбнов(стрБроня, iForce)
+			сам.РежимТекущ().Уст(стрБроня)
 		}
-	case "fyne": // Усиливаем точность
+	case стрТочность: // Усиливаем точность
 		isFind = false
 		for ind, strOut = range lstPoligon {
 			if strings.Contains(strOut, `>улучшение точности<`) {
@@ -491,10 +494,10 @@ func (сам *Полигон) усилениеДобавить() {
 				// log._rintf("ERRO NetPolygon.addForce(): strForceFyne(%v) not int, err=\n\t%v\n", strForce, err)
 				return
 			}
-			сам.танкСтат.ФорсажОбнов("fyne", iForce)
-			сам.РежимТекущ().Уст("точность")
+			сам.танкСтат.ФорсажОбнов(стрТочность, iForce)
+			сам.РежимТекущ().Уст(стрТочность)
 		}
-	case "hard": // Усиливаем мощность
+	case стрПрочность: // Усиливаем мощность
 		isFind = false
 		for ind, strOut = range lstPoligon {
 			if strings.Contains(strOut, `>увеличение прочности<`) {
@@ -526,8 +529,8 @@ func (сам *Полигон) усилениеДобавить() {
 				// log._rintf("ERRO NetPolygon.addForce(): strForceHard(%v) not int, err=\n\t%v\n", strForce, err)
 				return
 			}
-			сам.танкСтат.ФорсажОбнов("hard", iForce)
-			сам.РежимТекущ().Уст("прочность")
+			сам.танкСтат.ФорсажОбнов(стрПрочность, iForce)
+			сам.РежимТекущ().Уст(стрПрочность)
 		}
 	default: // Неизвестно что
 		сам.РежимТекущ().Уст("неизвестно")

+ 4 - 4
server/serv_bots/warbot/angar/base/polygon/polygonnet/polygonnet.go

@@ -3,7 +3,7 @@ package polygonnet
 import (
 	"fmt"
 
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 )
 
@@ -13,18 +13,18 @@ import (
 
 // ПолигонСеть -- опрашивает полигон на базе
 type ПолигонСеть struct {
-	*sectionnet.SectionNet
+	*section_net.СекцияСеть
 }
 
 // НовПолигонСеть -- возвращает новый *PolygonNet
 func НовПолигонСеть(polygon types.ИБазаПолигон) (*ПолигонСеть, error) {
-	sectionNet, err := sectionnet.NewSectionNet(polygon, "https://wartank.ru/polygon")
+	sectionNet, err := section_net.НовСекцияСеть(polygon, "https://wartank.ru/polygon")
 	if err != nil {
 		return nil, fmt.Errorf("NewPolygonNet(): in create *SectionNet, err=\n\t%w", err)
 	}
 
 	sf := &ПолигонСеть{
-		SectionNet: sectionNet,
+		СекцияСеть: sectionNet,
 	}
 
 	return sf, nil

+ 3 - 3
server/serv_bots/warbot/angar/battle/battle_register/battle_register.go

@@ -8,7 +8,7 @@ import (
 	"time"
 
 	"wartank/pkg/components/section"
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 )
 
@@ -16,7 +16,7 @@ import (
 type СражениеРегистрация struct {
 	*section.Секция
 	бот          types.ИБот
-	сеть         *sectionnet.SectionNet
+	сеть         *section_net.СекцияСеть
 	счётРегистер int // Счётчик регистраций на сражение
 }
 
@@ -31,7 +31,7 @@ func НовСражениеРегистрация(бот types.ИБот) (*Ср
 		бот:          бот,
 		счётРегистер: 10_000,
 	}
-	сам.сеть, ош = sectionnet.NewSectionNet(сам, "https://wartank.ru/pve")
+	сам.сеть, ош = section_net.НовСекцияСеть(сам, "https://wartank.ru/pve")
 	if ош != nil {
 		return nil, fmt.Errorf("НовСражениеРегистрация(): in create *SectionNet, err=\n\t%w", ош)
 	}

+ 4 - 4
server/serv_bots/warbot/angar/battle/battle_wait/battle_wait.go

@@ -9,7 +9,7 @@ import (
 
 	"wartank/pkg/alias"
 	"wartank/pkg/components/section"
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 )
 
@@ -17,7 +17,7 @@ import (
 type СражениеОжидание struct {
 	*section.Секция
 	bot types.ИБот
-	net *sectionnet.SectionNet
+	net *section_net.СекцияСеть
 }
 
 // НовСражениеОжидание -- возвращает новый ожидатель битвы
@@ -31,7 +31,7 @@ func НовСражениеОжидание(bot types.ИБот) (*Сражени
 		Секция: section,
 		bot:    bot,
 	}
-	сам.net, err = sectionnet.NewSectionNet(сам, "https://wartank.ru/pve")
+	сам.net, err = section_net.НовСекцияСеть(сам, "https://wartank.ru/pve")
 	if err != nil {
 		return nil, fmt.Errorf("NewBattleWait(): in create *SectionNet, err=\n\t%w", err)
 	}
@@ -78,7 +78,7 @@ func (сам *СражениеОжидание) Ожидать() {
 
 // Ждёт пока время не обнулится
 func (сам *СражениеОжидание) ждать() string {
-	if err := сам.net.UpdateLst(); err != nil { // Здесь может уже обратный отсчёт перед сражением
+	if err := сам.net.ОбновитьСеть(); err != nil { // Здесь может уже обратный отсчёт перед сражением
 		return ""
 	}
 	var (

+ 3 - 3
server/serv_bots/warbot/angar/battle/battle_worker/battle_worker.go

@@ -6,7 +6,7 @@ import (
 	"time"
 
 	"wartank/pkg/components/section"
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 	"wartank/server/serv_bots/warbot/angar/battle/battle_worker/battleon"
 	"wartank/server/serv_bots/warbot/angar/battle/battle_worker/battleon/battlesound"
@@ -17,7 +17,7 @@ import (
 type СражениеИсполнитель struct {
 	*section.Секция
 	бот  types.ИБот
-	сеть *sectionnet.SectionNet
+	сеть *section_net.СекцияСеть
 
 	еслиНачало types.ИСтатПарам
 
@@ -43,7 +43,7 @@ func НовСражениеИсполнитель(bot types.ИБот) (*Сраж
 		еслиНачало: еслиНачало,
 		sound:      battlesound.NewBattleSound(),
 	}
-	sf.сеть, err = sectionnet.NewSectionNet(sf, "https://wartank.ru/pve")
+	sf.сеть, err = section_net.НовСекцияСеть(sf, "https://wartank.ru/pve")
 	if err != nil {
 		return nil, fmt.Errorf("NewBattleWorker(): in create *SectionNet, err=\n\t%w", err)
 	}

+ 4 - 4
server/serv_bots/warbot/angar/battle/battle_worker/battleon/battleon.go

@@ -6,7 +6,7 @@ import (
 	"time"
 
 	"wartank/pkg/components/section"
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 	"wartank/server/serv_bots/warbot/angar/battle/battle_worker/battleon/health"
 	"wartank/server/serv_bots/warbot/angar/battle/battle_worker/battleon/manevr"
@@ -21,7 +21,7 @@ import (
 // СражениеДействие -- непосредственно танкует в сражении
 type СражениеДействие struct {
 	*section.Секция
-	сеть       *sectionnet.SectionNet
+	сеть       *section_net.СекцияСеть
 	бот        types.ИБот
 	кнт        context.Context // Контекст сражения
 	фнОтменить func()          // Функция отмены сражения
@@ -50,7 +50,7 @@ func НовСражениеДействие(бот types.ИБот) (*Сраже
 		логин:       бот.Имя(),
 		еслиВыстрел: isshot.NewIsShot(),
 	}
-	сам.сеть, ош = sectionnet.NewSectionNet(сам, "https://wartank.ru/pve")
+	сам.сеть, ош = section_net.НовСекцияСеть(сам, "https://wartank.ru/pve")
 	if ош != nil {
 		return nil, fmt.Errorf("NewBattleOn(): in create *SectionNet, err=\n\t%w", ош)
 	}
@@ -88,7 +88,7 @@ func (сам *СражениеДействие) пуск() {
 }
 
 // Сеть -- возвращает сетевой компонент секции
-func (sf *СражениеДействие) Сеть() types.ISectionNet {
+func (sf *СражениеДействие) Сеть() types.ИСекцияСеть {
 	return sf.сеть
 }
 

+ 1 - 1
server/serv_bots/warbot/angar/battle/battle_worker/battleon/shot/shot.go

@@ -73,7 +73,7 @@ func (сам *Выстрел) пуск() {
 //
 //	Вызывается из отдельного потока
 func (сам *Выстрел) выстрел() {
-	if err := сам.Сеть().UpdateLst(); err != nil { // Проверка на непосредственно битву
+	if err := сам.Сеть().ОбновитьСеть(); err != nil { // Проверка на непосредственно битву
 		// <span>закончилась 00:00:07 назад</span>
 		// log._rintf("ERRO Shot.shot(): при обновлении lstBattleOn, err=\n\t%v\n", err)
 		сам.Отменить()

+ 4 - 4
server/serv_bots/warbot/angar/battle/battlenet/battlenet.go

@@ -2,7 +2,7 @@ package battlenet
 
 import (
 	"fmt"
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 )
 
@@ -12,17 +12,17 @@ import (
 
 // BattleNet -- танкует в сражении
 type BattleNet struct {
-	*sectionnet.SectionNet
+	*section_net.СекцияСеть
 }
 
 // NewBattleNet -- возвращает новый *BattleNet
 func NewBattleNet(battle types.ИСражениеСцена) (*BattleNet, error) {
-	sectionNet, err := sectionnet.NewSectionNet(battle, "https://wartank.ru/pve")
+	sectionNet, err := section_net.НовСекцияСеть(battle, "https://wartank.ru/pve")
 	if err != nil {
 		return nil, fmt.Errorf("NewBattleNet(): in create *SectionNet, err=\n\t%w", err)
 	}
 	sf := &BattleNet{
-		SectionNet: sectionNet,
+		СекцияСеть: sectionNet,
 	}
 	return sf, nil
 }

+ 5 - 5
server/serv_bots/warbot/angar/convoy/convoy.go

@@ -58,7 +58,7 @@ func (sf *Конвой) Пуск() error {
 
 // UpdateLst -- принудительно обновляет состояние конвоя
 func (sf *Конвой) UpdateLst() {
-	if err := sf.net.UpdateLst(); err != nil {
+	if err := sf.net.ОбновитьСеть(); err != nil {
 		log.Printf("Конвой.UpdateLst(): err=\n\t%v\n", err)
 	}
 }
@@ -138,7 +138,7 @@ func (sf *Конвой) Обновить() {
 // Обновляет оставшееся время конвоя
 func (sf *Конвой) обновитьВремя() {
 	// Время подходит надо обновляться
-	if err := sf.net.UpdateLst(); err != nil {
+	if err := sf.net.ОбновитьСеть(); err != nil {
 		logrus.WithError(err).Error("Конвой.обновитьВремя(): при выполнении GET-команды обновления")
 		sf.ОбратВремяУст("20")
 		return
@@ -335,7 +335,7 @@ func (sf *Конвой) проверитьМиссияРазведкаКонво
 		strOut string
 		isFind bool
 	)
-	if err := sf.net.UpdateLst(); err != nil {
+	if err := sf.net.ОбновитьСеть(); err != nil {
 		// log._rintf("Конвой.проверитьМиссияРазведкаКонвой(): при обновлении пустого lstConvoy, err=\n\t%v\n", err)
 		return
 	}
@@ -376,7 +376,7 @@ func (sf *Конвой) проверитьМиссияМастерРазведк
 		ind       int
 	)
 	if len(lstConvoy) == 0 {
-		if err := sf.net.UpdateLst(); err != nil {
+		if err := sf.net.ОбновитьСеть(); err != nil {
 			// log._rintf("Конвой.проверитьМиссияМастерРазведки(): при обновлении пустого lstConvoy, err=\n\t%v\n", err)
 			return
 		}
@@ -420,7 +420,7 @@ func (sf *Конвой) проверитьМиссия6фрагов() {
 		strOut string
 		isFind bool
 	)
-	if err := sf.net.UpdateLst(); err != nil {
+	if err := sf.net.ОбновитьСеть(); err != nil {
 		// log._rintf("Конвой.check6frage(): при обновлении пустого lstConvoy, err=\n\t%v\n", err)
 		return
 	}

+ 4 - 4
server/serv_bots/warbot/angar/convoy/convoynet/convoynet.go

@@ -2,7 +2,7 @@ package convoynet
 
 import (
 	"fmt"
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 )
 
@@ -12,17 +12,17 @@ import (
 
 // ConvoyNet -- танкует с конвоем в сети
 type ConvoyNet struct {
-	*sectionnet.SectionNet
+	*section_net.СекцияСеть
 }
 
 // NewConvoyNet -- возвращает новый *ConvoyNet
 func NewConvoyNet(convoy types.Конвой) (*ConvoyNet, error) {
-	sectionNet, err := sectionnet.NewSectionNet(convoy, "https://wartank.ru/convoy")
+	sectionNet, err := section_net.НовСекцияСеть(convoy, "https://wartank.ru/convoy")
 	if err != nil {
 		return nil, fmt.Errorf("NewConvoyNet(): in create *SectionNet, err=\n\t%w", err)
 	}
 	sf := &ConvoyNet{
-		SectionNet: sectionNet,
+		СекцияСеть: sectionNet,
 	}
 	return sf, nil
 }

+ 1 - 1
server/serv_bots/warbot/angar/division/divwar/divwar.go

@@ -121,7 +121,7 @@ func (sf *DivWar) run() {
 
 // Ищет время до начала битвы дивизий
 func (sf *DivWar) findTimeCount() {
-	if err := sf.net.UpdateLst(); err != nil { // Здесь может уже обратный отсчёт перед сражением
+	if err := sf.net.ОбновитьСеть(); err != nil { // Здесь может уже обратный отсчёт перед сражением
 		sf.chDivWar <- 1
 		return
 	}

+ 2 - 2
server/serv_bots/warbot/angar/division/divwar/divwarnet/divwarnet.go

@@ -3,7 +3,7 @@ package divwarnet
 import (
 	"fmt"
 
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 )
 
@@ -13,7 +13,7 @@ import (
 
 // DivWarNet -- танкует в сражении
 type DivWarNet struct {
-	*sectionnet.SectionNet
+	*section_net.СекцияСеть
 	bot types.ИБот
 }
 

+ 4 - 4
server/serv_bots/warbot/angar/division/divwar/divwaron/divwaron.go

@@ -8,7 +8,7 @@ import (
 
 	"wartank/pkg/components/safe_bool"
 	"wartank/pkg/components/section"
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 	"wartank/server/serv_bots/warbot/angar/division/divwar/divwaron/health"
 	"wartank/server/serv_bots/warbot/angar/division/divwar/divwaron/manevr"
@@ -23,7 +23,7 @@ import (
 type DivWarOn struct {
 	*section.Секция
 	bot            types.ИБот
-	net            *sectionnet.SectionNet
+	net            *section_net.СекцияСеть
 	ctxDivWar      context.Context // Контекст сражения
 	fnCancelDivWar func()          // Функция отмены сражения
 
@@ -124,7 +124,7 @@ func (sf *DivWarOn) run() {
 }
 
 // Сеть -- возвращает сетевой компонент секции
-func (sf *DivWarOn) Сеть() types.ISectionNet {
+func (sf *DivWarOn) Сеть() types.ИСекцияСеть {
 	return sf.net
 }
 
@@ -137,7 +137,7 @@ func (sf *DivWarOn) checkEnd() bool {
 		}
 	}()
 
-	if err := sf.net.UpdateLst(); err != nil {
+	if err := sf.net.ОбновитьСеть(); err != nil {
 		// log._rintf("WARN DivWarOn.checkEnd(): при обновлении lstDivWarOn, err=\n\t%v\n", err)
 		sf.isEnd.Уст()
 		sf.fnCancelDivWar()

+ 1 - 1
server/serv_bots/warbot/angar/division/divwar/divwaron/health/health.go

@@ -250,7 +250,7 @@ func (sf *Health) findHealth() error {
 		lstBattle = sf.СписПолучить()
 	)
 	if len(lstBattle) == 0 { // Принудительно обновим сражение
-		if err := sf.Сеть().UpdateLst(); err != nil {
+		if err := sf.Сеть().ОбновитьСеть(); err != nil {
 			sf.isEnd.Уст()
 			sf.fnCancel()
 			return fmt.Errorf("Health.findHealth(): после принудительного обновления lsBattleOn, err=\n\t%w", err)

+ 1 - 1
server/serv_bots/warbot/angar/division/divwar/divwaron/shot/shot.go

@@ -122,7 +122,7 @@ func (sf *Shot) run() {
 //
 //	Вызывается из отдельного потока
 func (sf *Shot) shot() {
-	if err := sf.Сеть().UpdateLst(); err != nil { // Проверка на непосредственно битву
+	if err := sf.Сеть().ОбновитьСеть(); err != nil { // Проверка на непосредственно битву
 		// <span>закончилась 00:00:07 назад</span>
 		// log._rintf("ERRO Shot.shot(): при обновлении lstBattleOn, err=\n\t%v\n", err)
 		sf.isEnd.Уст()

+ 4 - 4
server/serv_bots/warbot/angar/fuel_attack/fuel_attack.go

@@ -8,25 +8,25 @@ import (
 	"strings"
 	"time"
 
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/cons"
 	"wartank/pkg/types"
 )
 
 // ТопливоБой -- объект боя на топливе
 type ТопливоБой struct {
-	*sectionnet.SectionNet
+	*section_net.СекцияСеть
 	ангар types.ИАнгар
 }
 
 // НовТопливоБой -- возвращает новый *ТопливоБойNet
 func НовТопливоБой(angar types.ИАнгар) (*ТопливоБой, error) {
-	sectionNet, err := sectionnet.NewSectionNet(angar, "https://wartank.ru/battle")
+	sectionNet, err := section_net.НовСекцияСеть(angar, "https://wartank.ru/battle")
 	if err != nil {
 		return nil, fmt.Errorf("NewТопливоБой(): in create SectionNet, err=\n\t%w", err)
 	}
 	sf := &ТопливоБой{
-		SectionNet: sectionNet,
+		СекцияСеть: sectionNet,
 		ангар:      angar,
 	}
 	return sf, nil

+ 2 - 2
server/serv_bots/warbot/angar/masters/bat_masters.go

@@ -86,7 +86,7 @@ func (sf *БитваМастеров) goBatMas() bool {
 	}
 
 	// Время меньше 25 сек, надо уточнять (тут возможна ошибка с экраном ожидания)
-	if err := sf.сеть.UpdateLst(); err != nil {
+	if err := sf.сеть.ОбновитьСеть(); err != nil {
 		// log._rintf("ERRO Battle.goBattle().fnCountDown(): при обновлении lstBattle, err=\n\t%v\n", err)
 		// Возможно времени уже не осталось
 		return true
@@ -128,7 +128,7 @@ func (sf *БитваМастеров) findTimeCount() {
 //
 //	вызывается только если есть награда
 func (sf *БитваМастеров) upBattle() bool {
-	if err := sf.сеть.UpdateLst(); err != nil {
+	if err := sf.сеть.ОбновитьСеть(); err != nil {
 		// log._rintf("ERRO BatMas.upBattle(): при обновлении lstBattle, err=\n\t%v\n", err)
 		return false
 	}

+ 2 - 2
server/serv_bots/warbot/angar/masters/batmasnet/batmasnet.go

@@ -3,7 +3,7 @@ package batmasnet
 import (
 	"fmt"
 
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 )
 
@@ -13,7 +13,7 @@ import (
 
 // BatMasNet -- танкует в битве мастеров
 type BatMasNet struct {
-	*sectionnet.SectionNet
+	*section_net.СекцияСеть
 	bot types.ИБот
 }
 

+ 2 - 2
server/serv_bots/warbot/angar/missions/missions.go

@@ -119,7 +119,7 @@ func (сам *Миссии) сражениеЗащита() {
 		strOut string
 		isFind bool
 	)
-	ош := сам.сеть.UpdateLst()
+	ош := сам.сеть.ОбновитьСеть()
 	if ош != nil {
 		log.Printf("Миссии.сражениеЗащита(): при обновлении списка строк миссий, ош:=\n\t%v\n", ош)
 		return
@@ -197,7 +197,7 @@ func (сам *Миссии) сражениеНаступление() {
 		lstMissions = сам.СписПолучить()
 	)
 	if len(lstMissions) == 0 {
-		if ош := сам.сеть.UpdateLst(); ош != nil {
+		if ош := сам.сеть.ОбновитьСеть(); ош != nil {
 			log.Printf("Миссии.сражениеНаступление(): при обновлении HTML миссий, ош=\n\t%v\n", ош)
 			return
 		}

+ 4 - 4
server/serv_bots/warbot/angar/missions/missionsnet/missionsnet.go

@@ -3,7 +3,7 @@ package missionsnet
 import (
 	"fmt"
 
-	"wartank/pkg/components/sectionnet"
+	"wartank/pkg/components/section_net"
 	"wartank/pkg/types"
 )
 
@@ -13,18 +13,18 @@ import (
 
 // MissionsNet -- автоматически собирает золото
 type MissionsNet struct {
-	*sectionnet.SectionNet
+	*section_net.СекцияСеть
 }
 
 // NewMissionsNet -- возвращает новый *MissionsNet
 func NewMissionsNet(mission types.ИМиссии) (*MissionsNet, error) {
-	sectionNet, err := sectionnet.NewSectionNet(mission, "https://wartank.ru/missions/")
+	sectionNet, err := section_net.НовСекцияСеть(mission, "https://wartank.ru/missions/")
 	if err != nil {
 		return nil, fmt.Errorf("NewMissionsNet(): in create *SectionNet, err=\n\t%w", err)
 	}
 
 	sf := &MissionsNet{
-		SectionNet: sectionNet,
+		СекцияСеть: sectionNet,
 	}
 	return sf, nil
 }

+ 6 - 6
server/serv_bots/warbot/tank/tankstat/tankstat.go

@@ -25,27 +25,27 @@ type TankStat struct {
 
 // NewTankStat -- возвращает новый *TankStat
 func NewTankStat() (*TankStat, error) {
-	атака, ош := static_param.НовСтатПарам("attack")
+	атака, ош := static_param.НовСтатПарам("атака")
 	if ош != nil {
 		return nil, fmt.Errorf("НовТанкСтат(): при создании статы атаки, ош=\n\t%w", ош)
 	}
-	точность, ош := static_param.НовСтатПарам("fyne")
+	точность, ош := static_param.НовСтатПарам("точность")
 	if ош != nil {
 		return nil, fmt.Errorf("НовТанкСтат(): при создании статы точности, ош=\n\t%w", ош)
 	}
-	прочность, ош := static_param.НовСтатПарам("armor")
+	прочность, ош := static_param.НовСтатПарам("прочность")
 	if ош != nil {
 		return nil, fmt.Errorf("НовТанкСтат(): при создании статы прочности, ош=\n\t%w", ош)
 	}
-	броня, ош := static_param.НовСтатПарам("hard")
+	броня, ош := static_param.НовСтатПарам("броня")
 	if ош != nil {
 		return nil, fmt.Errorf("НовТанкСтат(): при создании статы брони, ош=\n\t%w", ош)
 	}
-	мощь, ош := static_param.НовСтатПарам("power")
+	мощь, ош := static_param.НовСтатПарам("мощь")
 	if ош != nil {
 		return nil, fmt.Errorf("НовТанкСтат(): при создании статы мощи, ош=\n\t%w", ош)
 	}
-	усиление, ош := static_param.НовСтатПарам("force")
+	усиление, ош := static_param.НовСтатПарам("усиление")
 	if ош != nil {
 		return nil, fmt.Errorf("НовТанкСтат(): при создании статы усиления, ош=\n\t%w", ош)
 	}

+ 1 - 1
server/serv_bots/warbot/warbot_net/warbot_net.go

@@ -7,7 +7,7 @@ import (
 	"net/http"
 
 	"wartank/pkg/components/safe_bool"
-	"wartank/pkg/components/sectionnet/netclient"
+	"wartank/pkg/components/section_net/netclient"
 	"wartank/pkg/types"
 	"wartank/server/serv_bots/warbot/warbot_net/bot_net_conn"
 	"wartank/server/serv_bots/warbot/warbot_net/bot_net_login"