death_register.go 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // package death_register -- регистрирует танк в схватке
  2. package death_register
  3. import (
  4. "log"
  5. "strings"
  6. "time"
  7. . "wartank/app/lev0/types"
  8. "wartank/app/lev2/arena"
  9. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  10. )
  11. // СхваткаРегистрация -- регистрирует танк к началу схватки
  12. type СхваткаРегистрация struct {
  13. ИАрена
  14. конт ILocalCtx
  15. счётРегистер int // Счётчик регистраций на сражение
  16. }
  17. // НовСхваткаРегистрация -- возвращает новый ожидатель битвы
  18. func НовСхваткаРегистрация(конт IKernelCtx) *СхваткаРегистрация {
  19. сам := &СхваткаРегистрация{
  20. конт: конт,
  21. счётРегистер: 10_000,
  22. }
  23. аренаКонфиг := arena.АренаКонфиг{
  24. Конт_: конт,
  25. АренаИмя_: "Сражение",
  26. СтрКонтроль_: `<title>Сражения</title>`,
  27. СтрУрл_: "https://wartank.ru/dm",
  28. }
  29. сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
  30. return сам
  31. }
  32. // Зарегистрироваться -- регистрирует танк на сражение
  33. func (сам *СхваткаРегистрация) Зарегистрироваться() {
  34. // Найдено приглашение на участие
  35. // https://wartank.ru/dm?{count}-1.ILinkListener-currentOverview-apply
  36. фнРегис := func() []string {
  37. стрСсылка := "https://wartank.ru/dm?0-1.ILinkListener-currentOverview-apply"
  38. стрКонтроль := "" // "https://wartank.ru/dm?0-1.ILinkListener-currentOverview-apply"
  39. for {
  40. time.Sleep(time.Second * 1)
  41. res := сам.Сеть().Get(стрСсылка)
  42. if res.IsErr() {
  43. log.Printf("ERRO СхваткаРегистрация.Зарегистрироваться(): при выполнении GET-команды на подъём в атаку, err=\n\t%v\n", res.Error())
  44. }
  45. лстСражение := res.Unwrap()
  46. if len(лстСражение) < 113 {
  47. continue
  48. }
  49. стрКонтроль = лстСражение[113]
  50. if !strings.Contains(стрКонтроль, "ILinkListener-currentOverview-apply") {
  51. return лстСражение
  52. }
  53. log.Printf("СхваткаРегистрация.Зарегистрироваться(): регистрация не прошла\n")
  54. стрСсылка = strings.TrimPrefix(стрКонтроль, `<a class="simple-but border" href="`)
  55. стрСсылка = strings.TrimSuffix(стрСсылка, `.ILinkListener-currentOverview-apply"><span><span>Взвод, подъем! В атаку!</span></span></a>`)
  56. стрСсылка = "https://wartank.ru/" + стрСсылка + ".ILinkListener-currentOverview-apply"
  57. }
  58. }
  59. сам.СтрОбновить(фнРегис())
  60. }