Перейти к содержимому


Фотография

Баг с исчезновением Танков

Баг Танк исчезает

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 20

#1 PawnLomaster

PawnLomaster

    Участник

  • Пользователь
  • PipPip
  • 116 сообщений

Отправлено 05 Март 2021 - 15:36

Привет, форумчане!
Довольно давно столкнулся с проблемой, но сейчас серьёзно встал вопрос её решения.
Ситуация следующая. Появляется Танк. Потом появляется ещё один Танк. Дальше могут быть следующие аномалии. Первый Танк исчезнет сразу. Первый появившийся Танк не исчезнет, но если кто-нибудь из Танков потеряет контроль, то он исчезнет.
Аналогичная ситуация. 4 Танка (или 3. Число не так важно). 1 теряет контроль. Остаётся только 1 Танк  (скорее всего последний появившийся). Причём этот последний Танк передаётся другому игроку.
Кто-нибудь с подобным сталкивался?
Я грешу на плагин передачи контроля Танком, так как всегда с недоверием относился с SDK вызовам. В том плагине для передачи используется SDK вызов к функции ZombieManager::ReplaceTank(CTerrorPlayer *, CTerrorPlayer *). Скорее всего он работает криво.


  • Lesdure это нравится

#2 8rutu5

8rutu5

    Пользователь

  • Пользователь
  • PipPipPip
  • 399 сообщений

Отправлено 05 Март 2021 - 18:19

Привет, форумчане!
Довольно давно столкнулся с проблемой, но сейчас серьёзно встал вопрос её решения.
Ситуация следующая. Появляется Танк. Потом появляется ещё один Танк. Дальше могут быть следующие аномалии. Первый Танк исчезнет сразу. Первый появившийся Танк не исчезнет, но если кто-нибудь из Танков потеряет контроль, то он исчезнет.
Аналогичная ситуация. 4 Танка (или 3. Число не так важно). 1 теряет контроль. Остаётся только 1 Танк  (скорее всего последний появившийся). Причём этот последний Танк передаётся другому игроку.
Кто-нибудь с подобным сталкивался?
Я грешу на плагин передачи контроля Танком, так как всегда с недоверием относился с SDK вызовам. В том плагине для передачи используется SDK вызов к функции ZombieManager::ReplaceTank(CTerrorPlayer *, CTerrorPlayer *). Скорее всего он работает криво.

 

Ну так ты пробовал сначала плагин отключить и убедиться, что не в нем дело?



#3 PawnLomaster

PawnLomaster

    Участник

  • Пользователь
  • PipPip
  • 116 сообщений

Отправлено 05 Март 2021 - 20:16

Ну так ты пробовал сначала плагин отключить и убедиться, что не в нем дело?

Не воспроизводится в соло игре. То есть нужно 2 и более игрока. Потестить с кем нибудь ещё на локалке пока для меня накладно. Но как вариант можно подобрать другой плагин на передачу Танка.



#4 8rutu5

8rutu5

    Пользователь

  • Пользователь
  • PipPipPip
  • 399 сообщений

Отправлено 05 Март 2021 - 23:31

Не воспроизводится в соло игре. То есть нужно 2 и более игрока. Потестить с кем нибудь ещё на локалке пока для меня накладно. Но как вариант можно подобрать другой плагин на передачу Танка.

 

Ну в любом случае, сначала лучше этот вариант протестить, а потом уже думать над другими



#5 PawnLomaster

PawnLomaster

    Участник

  • Пользователь
  • PipPip
  • 116 сообщений

Отправлено 05 Март 2021 - 23:48

Ну в любом случае, сначала лучше этот вариант протестить, а потом уже думать над другими

Проверили. Баг остался.



#6 Goldfish

Goldfish

    Пользователь

  • Пользователь
  • PipPipPip
  • 392 сообщений

Отправлено 06 Март 2021 - 4:26

Не воспроизводится в соло игре. То есть нужно 2 и более игрока. Потестить с кем нибудь ещё на локалке пока для меня накладно.

Я один тестирую плагины на сервере где больше 15 игроков?)



#7 PawnLomaster

PawnLomaster

    Участник

  • Пользователь
  • PipPip
  • 116 сообщений

Отправлено 06 Март 2021 - 21:04

Я один тестирую плагины на сервере где больше 15 игроков?)

Неподходящая игровая ситуация. Но всё равно работоспособность плагина я тестирую на локалке, где можно легко и быстро воссоздать нужные игровые условия.
Но эта ситуация - исключение. Приходится собирать помощников, где на моей локалке им приходится стоять афк по 10 минут, пока я придумываю новые решения и меняю код + подгружаю заново плагины, чтобы потом за 1 минуту понять, что проблема не решилась. Как показывает практика не все настолько усидчивые.



#8 anarki1980

anarki1980

    Участник

  • Пользователь
  • PipPip
  • 147 сообщений

Отправлено 07 Март 2021 - 2:34

Неподходящая игровая ситуация. Но всё равно работоспособность плагина я тестирую на локалке, где можно легко и быстро воссоздать нужные игровые условия.
Но эта ситуация - исключение. Приходится собирать помощников, где на моей локалке им приходится стоять афк по 10 минут, пока я придумываю новые решения и меняю код + подгружаю заново плагины, чтобы потом за 1 минуту понять, что проблема не решилась. Как показывает практика не все настолько усидчивые.

 

я бы купил еще одну копию игры и зашел с нетбука



#9 Goldfish

Goldfish

    Пользователь

  • Пользователь
  • PipPipPip
  • 392 сообщений

Отправлено 07 Март 2021 - 17:34

Неподходящая игровая ситуация. Но всё равно работоспособность плагина я тестирую на локалке, где можно легко и быстро воссоздать нужные игровые условия.
Но эта ситуация - исключение. Приходится собирать помощников, где на моей локалке им приходится стоять афк по 10 минут, пока я придумываю новые решения и меняю код + подгружаю заново плагины, чтобы потом за 1 минуту понять, что проблема не решилась. Как показывает практика не все настолько усидчивые.

ну если я могу к тебе подключиться постоять афк обращайся, ситуация мне тоже знакома когда не с кем тестировать плаги, будет время, не трудно помочь)


Сообщение отредактировал Goldfish: 07 Март 2021 - 17:34


#10 Accelerator

Accelerator

    Пользователь

  • Пользователь
  • PipPipPip
  • 209 сообщений

Отправлено 07 Март 2021 - 17:39

Вы это не исправите. Игра не понимает более, чем одного Танка. Если пропадает контроль у одного Танка и при этом на карте есть еще Танк, то он исчезает.  Возможно патчингом памяти и можно что то решить, но сомневаюсь.

 

Можете даже на Ваниле проверить, будет то же самое.


Сообщение отредактировал Accelerator: 07 Март 2021 - 17:41

  • history_maker, Goldfish и PawnLomaster это нравится

#11 PawnLomaster

PawnLomaster

    Участник

  • Пользователь
  • PipPip
  • 116 сообщений

Отправлено 07 Март 2021 - 23:39

Вы это не исправите. Игра не понимает более, чем одного Танка. Если пропадает контроль у одного Танка и при этом на карте есть еще Танк, то он исчезает.  Возможно патчингом памяти и можно что то решить, но сомневаюсь.

 

Можете даже на Ваниле проверить, будет то же самое.

До слёз.
Зато можно открыть ещё один issue. Для полной коллекции так сказать.



#12 Accelerator

Accelerator

    Пользователь

  • Пользователь
  • PipPipPip
  • 209 сообщений

Отправлено 08 Март 2021 - 7:25

Это не есть баг) При стандартной игре более одного Танка на картах нигде нет.

Как вариант, можете написать свой перехват функции потери Танка и перенаправлять уже на свои функции управления контролем, а то, что идет от игры, глушить. Можно сделать как с использованием dhooks, так и без него.

Сообщение отредактировал Accelerator: 08 Март 2021 - 7:27


#13 8rutu5

8rutu5

    Пользователь

  • Пользователь
  • PipPipPip
  • 399 сообщений

Отправлено 08 Март 2021 - 12:08

Это не есть баг) При стандартной игре более одного Танка на картах нигде нет.

Как вариант, можете написать свой перехват функции потери Танка и перенаправлять уже на свои функции управления контролем, а то, что идет от игры, глушить. Можно сделать как с использованием dhooks, так и без него.

 

Так на финалке The Last Stand вроде в конце 2 танка появляются?



#14 anarki1980

anarki1980

    Участник

  • Пользователь
  • PipPip
  • 147 сообщений

Отправлено 08 Март 2021 - 13:36

Не очень понятно как у меня работает если это невозможно, балуемся и респаем несколько танков, никто никуда не исчезает. На некоторых кастомках тоже бывает два танка, Bloody moors например, One 4 Nine. Мутация была раньше где надо от кучи танков бегать, как это все работало?



#15 Весельчак

Весельчак

    Новичок

  • Пользователь
  • Pip
  • 28 сообщений

Отправлено 08 Март 2021 - 14:04

Речь ведь идет про версус, где существует функция потери контроля игрока над танком. Заспавнить можно и 10 танков, вопрос в том, что некорректно будет работать потеря контроля танками, когда их несколько на карте.
  • Accelerator это нравится

#16 Profanuch

Profanuch

    Пользователь

  • Пользователь
  • PipPipPip
  • 161 сообщений

Отправлено 08 Март 2021 - 22:12

У меня на картах из первой части, в спасении, вообще всегда только 1 танк появляется, хотя должно быть до 5-ти. Использую плагин tankspawn от dragokas.



#17 dr_lex

dr_lex

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 053 сообщений

Отправлено 08 Март 2021 - 22:54

Это не есть баг) При стандартной игре более одного Танка на картах нигде нет.

Как вариант, можете написать свой перехват функции потери Танка и перенаправлять уже на свои функции управления контролем, а то, что идет от игры, глушить. Можно сделать как с использованием dhooks, так и без него.

Могу ошибаться но по моему в Swamp Fever и The Last Stand на финале два танка всегда. Так же при спасении из может быть больше двух.
Скорее всего проблема в режимах где больше +8 игроков.

Как вариант перед потерей контроля просто убивать этого танка, тем самым остальные танки будет в игре (это теория).



#18 Accelerator

Accelerator

    Пользователь

  • Пользователь
  • PipPipPip
  • 209 сообщений

Отправлено 09 Март 2021 - 5:33

В стандартной игре сражения никогда не появляется более одного Танка.

Да посмотрите хотя бы тот же left4dhooks

// Gets the number of times the tank has passed to a player.
native int L4D2Direct_GetTankPassedCount();

// Sets the number of times the tank has passed to a player.
native void L4D2Direct_SetTankPassedCount(int passes);
Как думаете, почему здесь не фигурирует индекс клиента? Правильно, потому что игрой задуман только один живой Танк на карте в версусах.

Финалы и vscrpt'ы отличаются в режимах coop и versus...

Сообщение отредактировал Accelerator: 09 Март 2021 - 5:35


#19 anarki1980

anarki1980

    Участник

  • Пользователь
  • PipPip
  • 147 сообщений

Отправлено 10 Март 2021 - 17:34

В стандартной игре сражения никогда не появляется более одного Танка.

Да посмотрите хотя бы тот же left4dhooks
 

// Gets the number of times the tank has passed to a player.
native int L4D2Direct_GetTankPassedCount();

// Sets the number of times the tank has passed to a player.
native void L4D2Direct_SetTankPassedCount(int passes);
Как думаете, почему здесь не фигурирует индекс клиента? Правильно, потому что игрой задуман только один живой Танк на карте в версусах.

Финалы и vscrpt'ы отличаются в режимах coop и versus...

 

Кстати в Жертве на финалке если больше одного генератора сразу запускать возникает два танка сразу, не помню чтобы при этом было какое то нештатное поведение



#20 PawnLomaster

PawnLomaster

    Участник

  • Пользователь
  • PipPip
  • 116 сообщений

Отправлено 10 Март 2021 - 20:39

В стандартной игре сражения никогда не появляется более одного Танка.

Да посмотрите хотя бы тот же left4dhooks

// Gets the number of times the tank has passed to a player.
native int L4D2Direct_GetTankPassedCount();

// Sets the number of times the tank has passed to a player.
native void L4D2Direct_SetTankPassedCount(int passes);
Как думаете, почему здесь не фигурирует индекс клиента? Правильно, потому что игрой задуман только один живой Танк на карте в версусах.

Финалы и vscrpt'ы отличаются в режимах coop и versus...

 

Тем не менее. Почему остальные Танки исчезают? Было бы понятно, если бы исчезал Танк, который взял контроль над другим Танком. Это более-менее логично. 
Кстати про left4dhooks

/**
 * @brief Gets the number of tanks currently in play.
 * @remarks This value is tracked by the director, and should be a good
 *		indicator that a tank is in play
 *
 * @return			Current Tank count
 */
native int L4D2_GetTankCount();

И это не внутренняя функция по типу пройтись по всем игрокам, если Танк, то count++ и return count. Это значение, которое внутри игры и используется Режиссером.


В голове только одно решение. Глобальный таймер, который каждые 2 секунды проходится по всем игрокам и проверяет контроль. Если контроля мало, то искусственно передавать Танка другому игроку не Танку, иначе боту.





Темы с аналогичным тегами Баг, Танк, исчезает

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных