arena_convoy.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package arena_convoy
  2. import (
  3. "strings"
  4. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  5. . "wartank/app/lev0/alias"
  6. . "wartank/app/lev0/types"
  7. "wartank/app/lev2/arena"
  8. "wartank/app/lev2/arena/arena_build"
  9. "wartank/app/lev2/arena/arena_convoy/bf_glory_find"
  10. "wartank/app/lev2/arena/arena_convoy/bf_glory_make"
  11. "wartank/app/lev2/arena/arena_convoy/bf_glory_take"
  12. )
  13. /*
  14. Объект конвоя в ангаре
  15. */
  16. // АренаКонвой -- объект конвоя в ангаре
  17. type АренаКонвой struct {
  18. ИАренаСтроение
  19. конт ILocalCtx
  20. }
  21. // НовКонвой -- возвращает новый *Convoy
  22. func НовКонвой(конт ILocalCtx) *АренаКонвой {
  23. сам := &АренаКонвой{
  24. конт: конт,
  25. }
  26. аренаКонфиг := arena.АренаКонфиг{
  27. Конт_: конт,
  28. АренаИмя_: "Конвой",
  29. СтрКонтроль_: `<title>Конвой</title>`,
  30. ФнПуск_: сам.пуск,
  31. СтрУрл_: "https://wartank.ru/convoy",
  32. }
  33. сам.ИАренаСтроение = arena_build.НовАренаСтроение(конт, аренаКонфиг)
  34. конт.Set("конвой", сам, "Арена конвоя бота")
  35. _ = ИАренаКонвой(сам)
  36. return сам
  37. }
  38. func (сам *АренаКонвой) Пуск() {
  39. сам.Обновить()
  40. bf_glory_find.СлаваНайти(сам.конт)
  41. bf_glory_make.СлаваБой(сам.конт)
  42. bf_glory_take.СлаваВзять(сам.конт)
  43. сам.обновитьВремя()
  44. }
  45. // обрабатывает конвой
  46. func (сам *АренаКонвой) пуск() {}
  47. // Обновляет оставшееся время конвоя
  48. func (сам *АренаКонвой) обновитьВремя() {
  49. // Время подходит надо обновляться
  50. сам.Обновить()
  51. сам.ОбратВремяУст("20")
  52. // Найти строку с упоминанием оставшегося времени конвоя
  53. lstConvoy := сам.СписПолучить()
  54. var (
  55. strLastTime string
  56. еслиНайдено bool
  57. isMask bool
  58. )
  59. for _, lastTime := range lstConvoy {
  60. if strings.Contains(lastTime, `До следующего конвоя: `) {
  61. strLastTime = lastTime
  62. еслиНайдено = true
  63. break
  64. }
  65. if strings.Contains(lastTime, `Полная маскировка через `) {
  66. strLastTime = lastTime
  67. isMask = true
  68. break
  69. }
  70. // <div class="bot"><a class="simple-but border red" w:id="startFight" href="convoy?7-1.ILinkListener-root-startFight"><span><span>В БОЙ!</span></span></a></div>
  71. if strings.Contains(lastTime, `ILinkListener-root-startFight`) {
  72. return
  73. }
  74. if strings.Contains(lastTime, `ILinkListener-root-findEnemy`) {
  75. return
  76. }
  77. // <div class="bot"><a class="simple-but border" w:id="startMasking" href="convoy?12-1.ILinkListener-root-startMasking"><span><span>В БОЙ!</span></span></a></div>
  78. if strings.Contains(lastTime, `ILinkListener-root-startMasking`) {
  79. return
  80. }
  81. }
  82. switch {
  83. case еслиНайдено: // Большая пауза между конвоями
  84. // Ждём окончания ожидания конвоя
  85. lstTime := strings.Split(strLastTime, `До следующего конвоя: `)
  86. strLastTime = lstTime[1]
  87. сам.ОбратВремяУст(АВремя(strLastTime))
  88. case isMask: // Если маскировка между конвоями
  89. // Ждём окончания ожидания конвоя
  90. lstTime := strings.Split(strLastTime, `Полная маскировка через `)
  91. strLastTime = lstTime[1]
  92. сам.ОбратВремяУст(АВремя(strLastTime))
  93. }
  94. }