Closed Aynekko closed 1 month ago
Движок sv_zmax из worldspawn не читает, но судя по XashXT, sv_zmax ставится из CWorld::Precache.
Действительно, закомментил код
if ( pev->speed > 0 )
CVAR_SET_FLOAT( "sv_zmax", pev->speed );
else
CVAR_SET_FLOAT( "sv_zmax", 4096 );
Но в таком случае я вообще на любой карте вижу sv_zmax 4096. Непонятно, как в таком случае пользоваться max viewable distance, которая выставляется в хаммере.
Проверил этот трюк на ксаше, на папке valve, стим-халфа. Баг остается вроде как. Должно быть на карте 8000, а показывает 4096, при maxplayers 5. Если игрок 1, то все ок.
В оригинальной халфе этот код тоже есть, кстати: https://github.com/ValveSoftware/halflife/blob/e5815c34e2772a247a6843b67eab7c3395bdba66/dlls/world.cpp#L629
А в голдсорсе он интересно тоже сломан?
Прекеш мира должен всегда исполняться...
А в голдсорсе он интересно тоже сломан?
Нет, проверил. Выставил sv_zmax 4096, потом maxplayers 10, потом карту где 8000 дальность. Заспавнился в режиме дезматча, sv_zmax 8000.
Выставил алерт в прекеше World. Прекеш выполняется. Судя по всему, установка sv_zmax просто-напросто игнорируется.
@Aynekko I had the same problem with my mod Flatline Arena. The engine is sending the value of 4096. This was a problem for me since I have shader skybox... and in some situations 4096 is not sufficient... There is however quite easy fix for it... I mean it's a bit ugly, but it does the job...
dlls\cbase.cpp
under function void DispatchThink( edict_t *pent )
add this:
auto sv_zmax = CVAR_GET_POINTER("sv_zmax"); if (sv_zmax && sv_zmax->value == 4096.0f) { CVAR_SET_FLOAT("sv_zmax", 8192); }
Maybe there is a better place to add it, but it does the job. You can also set the value to more than 8192; for me double the value is the max I need anyway. Also maybe I need to set it up to check if the value is 4096 or lower, but I think the engine is set to that value... so...
Another tip... this function can be used to change other engine cvars... Just make sure not to replace the vanilla dlls under /valve/dlls with a modified one... I hear VAC does not work for Gold Source, but you never know :D For mods it's ok.
I will rather wait until it is fixed in the engine. But thank you for the info.
I have not seen it reported in the HL SDK.. so I doubt it's on Valve's radar...
This issue is not present on hl25 update, that's the thing. So I need it fixed in Xash
Пофиксил в 29fd5f9fbe02678348699d91bc8d38c3ba774183. Чтобы фикс заработал, нужно удалить listenserver.cfg не только в корневом каталоге мода, но и в его базовом каталоге.
Шаги для проверки бага: Открываю игру, на фоне карта-бэкграунд В консоли ввожу sv_zmax, показывает 3000, что верно для данной карты. Захожу в LAN, Create game, выбираю карту с обширным пространством. Заспавнился на карте, ввожу sv_zmax, вижу 3000, что НЕ соответствует. Должно быть 65000, согласно прописанному значению в энтити worldspawn.
Баг не проявляется, если запустить карту из меню через команду map.
Баг проявляется, если не создавать сервер через LAN меню, а просто ввести команду maxplayers 2 и потом map karta, значение sv_zmax все еще будет с предыдущей карты-бэкграунда.