Сообщение отредактировал dragokas: 06 Октябрь 2019 - 15:36
[Сборка карт] Запрет входа со старой версии
#1
Отправлено 05 Октябрь 2019 - 18:01
#2
Отправлено 06 Октябрь 2019 - 7:08
А что если её вручную создать?
signed int __cdecl CNetworkStringTableDictionaryManager::WriteDictionaryToBSP(CNetworkStringTableDictionaryManager *this, const char *a2, CUtlBuffer *a3, bool a4)
#3
Отправлено 06 Октябрь 2019 - 14:33
Тогда уж проще наоборот удалять (WriteBaselines): https://forums.allie...977&postcount=9
Создавать то может и можно, только вопрос что. Под каждую карту нужно иметь подготовленный список строк для прекеша, но у нас его нет, пока вручную не введешь команду stringtabledictionary и движок запихнет файл stringtable_dictionary.dct в bsp перепаковав его. Может и можно получить список прекеша иначе, но я не в курсе.
PS. По хорошему, можно попробовать просто прочитать все строковые таблицы. Если другие игроки не крешатся при переходе между картами, то по идее внутри все необходимое уже должно быть, странно только как такое вообще может быть возможно - если списка прекеша нет, как все остальные игроки не вылетают. Чёт мне кажется этот список просто мигрирует с одной карты на другую, но на новой карте список объектов все равно больше/меньше (читай, другой), и для входа нового игрока со старым списком это может оказаться недостаточным.
Сейчас с ребятами начали эстафету - проходим вообще все-все какие есть доп. карты с gamemaps, так почти все-все карты, что мне попадаются под руку - всегда имеют этот баг хотя бы на одном из уровней.
Сообщение отредактировал dragokas: 06 Октябрь 2019 - 14:38
#4
Отправлено 06 Октябрь 2019 - 14:59
Здравствуйте!Можно ли и куда воткнуть номер версии в vpk (или bsp), чтобы выполнялась сверка и игрока выбрасывало еще до стадии кеширования объектов карты (string table)?(иначе говоря, до момента появления ошибки "String table differs from the server")Я пытаюсь сделать "патчи" для доп. карт Left 4 dead (хотя м.б. актуально и для L4D2/CS), где автора забыли про создание таблиц кеширования (файл stringtable_dictionary.dct).Признаки проблемы: https://forums.allie...386&postcount=3Кратко: серв. крашится при попытке игроков подключиться посреди карты (при этом, при переходе с карты на карту всё нормально).После локальной пересборки bsp-шек через команды stringtabledictionary + buildcubemaps и залития на серв и клиент проблема с крашем устраняется,но появляется новая - при попытке зайти посреди карты клиентом, у которого установлена старая версия карты, у всех клиентов на сервере происходит краш (а серв продолжает работу).Как временная мера, пока что ставлю пароль на серв.P.S. Полная перекомпиляция не допустима (в виду отсутствия исходников). Максимум, правка текст. файлов в VPK, и ресурсов bsp через pakrat.
Написал бы "вылет на раб. стол", а не краш. Если бы происходил краш, сервер бы перезапускался, а не продолжал работать.
Сейчас с ребятами начали эстафету - проходим вообще все-все какие есть доп. карты с gamemaps, так почти все-все карты, что мне попадаются под руку - всегда имеют этот баг хотя бы на одном из уровней.
Вероятно, проблема в сервере, а не в картах в таком случае.
Может, проще переустановить сервер и закинуть все плагины/конфиги обратно, чем компилировать заново стандартные кампании игры.
Сообщение отредактировал BloodyBlade: 06 Октябрь 2019 - 15:02
#5
Отправлено 06 Октябрь 2019 - 15:36
Написал бы "вылет на раб. стол", а не краш. Если бы происходил краш, сервер бы перезапускался, а не продолжал работать.
Вероятно, проблема в сервере, а не в картах в таком случае.
Может, проще переустановить сервер и закинуть все плагины/конфиги обратно, чем компилировать заново стандартные кампании игры.
спасибо, поправил.
Написал бы "вылет на раб. стол", а не краш. Если бы происходил краш, сервер бы перезапускался, а не продолжал работать.
Вероятно, проблема в сервере, а не в картах в таком случае.
Может, проще переустановить сервер и закинуть все плагины/конфиги обратно, чем компилировать заново стандартные кампании игры.
нет, ошибка видна в консоли даже при запуске локальной игры,
да и в этом не так сложно убедится - просто открой с помощью pakrat плохой bsp - и там в ресурсах будет отсутствовать файл stringtable_dictionary.dct
Вот тебе для примера список из последних карт с такими ошибками, что я тестировал и исправлял:
Brain 4 Dead
Derailed
Bloodact
Last Night
Last Train Home
Dead Zone 327
5 Five to Life
(не все уровни этих кампаний имеют проблему, только некоторые из bsp, и не все из них имеют полностью отсутствующий stringtable_dictionary.dct, у некоторых он просто неполный)
[spoiler="Примеры ошибок"]
Сообщение отредактировал dragokas: 06 Октябрь 2019 - 15:43
#6
Отправлено 06 Октябрь 2019 - 15:38
нет, ошибка видна в консоли даже при запуске локальной игры.
Ошибка то понятно, но ведь на локалке вылетов нет, так?
#7
Отправлено 06 Октябрь 2019 - 15:59
Прости, BloodyBlade, но я не понимаю к чему ты клонишь.
Вылет проявляется только когда игрок заходит, если карта уже загружена и кто-то уже есть на сервере.
Локалка здесь не при чем. При переходе нескольких игроков с одной карты на другую (при round_win) все нормально.
#8
Отправлено 08 Октябрь 2019 - 14:41
Прости, BloodyBlade, но я не понимаю к чему ты клонишь.
Вылет проявляется только когда игрок заходит, если карта уже загружена и кто-то уже есть на сервере.
Локалка здесь не при чем. При переходе нескольких игроков с одной карты на другую (при round_win) все нормально.
String Table dictionary for Scenes should be rebuilt, only found 4403 of 4986 strings in dictionary - такая ошибка у меня постоянно появляется, не знал что это из-за карт, хотя она появляется даже на стандартных компаниях (сервер l4d2) при этом вылетов из-за этого еще вроде небыло (с учетом что вылетает возможно из-за плагинов с говнокодом и то редкие случаи раз в 2-5 дней)
из решения я просто через расширение скрыл эти ошибки в консоли и тестирую сервер дальше, думал это типичная служебная инфа или не критическая ошибка, хз..
#9
Отправлено 08 Октябрь 2019 - 16:45
Потому что это не критичная ошибка.
Хз, почему на стандартных картах это появляется. Могу только предполагать, что Valve что-то поудаляли из файлов игры, а карты не были пересобраны, чтобы соответствовать этим изменениям,
но пересборка карты через команду stringtabledictionary убирает эти ошибки. Естественно, новая карта должна быть у всех, иначе клиент не сможет подключиться.
P.S. Чувствую тема ушла в оффтоп.
Название темы одно, а мне советуют и спрашивают совсем о другом. Печаль.
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных