FWGS / xash3d-fwgs

Xash3D FWGS engine.
1.51k stars 224 forks source link

Исчезает курсор в меню при определенных условиях #524

Closed Aynekko closed 1 year ago

Aynekko commented 3 years ago

Баг воспроизводится только если developer больше нуля. Нужно запустить любую карту. Затем прописать в консоли: disconnect;map_background karta Тем самым отключимся от сервера и запустим карту-бэкграунд. Меню и карта есть, а курсора нет. При developer 0 все нормально.

Vladislav4KZ commented 3 years ago

Проверил на последней сборке Xash3D FWGS 0.20.1 для Windows, режим разработчика включён (developer 2) И сделал то же самое что вы говорили, курсор не исчезает

SNMetamorph commented 3 years ago

Так может оно через раз проявляется? Я вчера тестил на последнем билде, у меня курсор исчез. Причем, у меня фуллскрин был отключен

Aynekko commented 3 years ago

Тут вообще непонятно. Вроде бы даже от девелопера не зависит. Я тестил разные ксаши. И параною 2 в том числе. Но одном компе у меня стабильно нет курсора после этих действий (независимо от девелопера). А на другом он есть почти всегда, если девелопера нет, но иногда проскакивает что нет. С девелопером стабильно нет.

Vladislav4KZ commented 3 years ago

Так может оно через раз проявляется? Я вчера тестил на последнем билде, у меня курсор исчез. Причем, у меня фуллскрин был отключен

Пробовал и с фуллскрином и без, курсор ни разу не исчез

Vladislav4KZ commented 3 years ago

Заметил эту проблему у себя с оригинальным client.dll из Half-Life, до этого стоял из OpenAG и в нем курсор не исчезал.

Но с клиентом из OpenAG курсор исчезает когда сворачиваешь игру, и появляется после входа/выхода из консоли

0x4E69676874466F78 commented 2 years ago

Проблема здесь: https://github.com/FWGS/xash3d-fwgs/blob/947b94d29f0c87a4fd20c6ff3998ed6aea9c721a/engine/client/input.c#L223 Если у !CL_IsBackgroundMap() убрать ! то указатель в главном меню появляется при chapterbackgrounds.txt, однако если загрузиться в игру и переключиться в меню снова этот баг вылезает где его раньше не было.

Выкрутился так:

    if( ( newstate == key_menu  || newstate == key_console || newstate == key_message ) && ( !cl.paused || CL_IsBackgroundDemo( )))

Это оказалось не совсем корректно так что сделал:

    if( ( newstate == key_menu  || newstate == key_console || newstate == key_message ) && ( !GameState->backgroundMap || CL_IsBackgroundDemo( )))
a1batross commented 2 years ago

May be fixed with #470

0x4E69676874466F78 commented 2 years ago

@a1batross вроде всё ок, спасибо!

Aynekko commented 2 years ago

May be fixed with #470

Нет, похоже что-то сломалось. У меня на ксашмоде мышка стала вести себя неадекватно. В PrimeXT тоже. Если запустить игру без бекграунд карты, мышка все время в центре и сдвинуть нельзя. Помогает заход в консоль и обратно. Во время игры вроде бы все нормально. Играю в оконном режиме. Но нажимаю паузу, переключаюсь на другое окно и обратно в игру, и вижу как мышка крутит камеру игрока. В прайме мышка в оконном режиме ограничивает обзор, будто курсор упирается в границы окна. В общем, раньше было лучше и все было нормально.

SNMetamorph commented 2 years ago

@Aynekko попробуй какие-нибудь m_ квары потыкать, может быть в них дело

0x4E69676874466F78 commented 2 years ago

Ксашмод и PrimeXT не тестировал. С hlsdk всё ок с фоновой картой, без, не имеет значения.

Единственно есть недостаток (это поведение было и до) что при pause мышь всё равно захватывается (стоит снять паузу как видна новая позиция) и указатель не появляется.

Aynekko commented 2 years ago

Я посмотрел inputw32.cpp в ксашмоде и прайме, они какие-то совсем разные, по сравнению с хлсдк у вальвы и ксашевским хлсдк. https://github.com/SNMetamorph/PrimeXT/blob/master/client/inputw32.cpp Возможно, дело в этом :(

Aynekko commented 2 years ago

Сейчас еще проверил ксаш со стимовской версией хл. Нужно для начала сделать ui_renderworld 1 чтобы это увидеть. Игра в оконном режиме, нажимаем паузу, переключаемся на другое окно и обратно - мышь крутит камеру игрока.

a1batross commented 1 year ago

Fixed in 023f6712f994dbe4f1667b974fd59cbe58ed92a2