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

Фотография
- - - - -

Ошибка IWD Sum Mismatch


  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

  #1
Offline   PiratRu

PiratRu

    Генералисимус

  • Мастер-Админ
  • 460 сообщений
  • iD Юзера: 1
  • Пол:Мужчина
  • Город:Челябинск

Награды

              
Кликни для просмотра статистики

Steam Профиль


 
Участник
Это будет длинная статья. Тем не менее, эта информация будет очень важна для администраторов своих серверов, особенно если вы уже сталкивались с известной ошибкой IWD Sum/Mismatch.

╨б╨╜╨╕╨╝╨╛╨║1.JPG



Фактически ошибка возникает , потому что info_string имеет лимит в 1024 знака , и ошибка получается из-за того что клиент не может (или не успевает) выполнить основных операций, необходимых для проверки сервером идентичности (или легальности =) ) файлов клиента.

Давайте начнем с представления конечного варианта info_string:

\bg_fallDamageMaxHeight\480\bg_fallDamageMinHeight\252\g_synchronousClients\0\sv_cheats\0\sv_disableClientConsole\0\sv_iwdNames\z__svr_csv z_svr_sound_aliases_for_dhc_map_pack_4 z_svr_sound_aliases_for_dhc_map_pack_2 z_svr_sound_aliases_for_dhc_map_pack_02 z_svr_sound_aliases_for_dhc_map_pack_01 z_svr_pam____202 z_dhc_mp1 zzz_mp_powcamp iw_15 iw_14 iw_13 iw_12 iw_11 iw_10 iw_09 iw_08 iw_07 iw_06 iw_05 iw_04 iw_03 iw_00\sv_iwds\-675245519 1058077270 1058077270 1058077270 1058077270 -635133705 2070676332 -149688453 181429573 -1449716526 780394069 -1333623355 -1980843666 1334775335 -621896007 1101180720 1046874969 1053665859 1842349204 -1652414412 1659111092 178615151 \sv_pure\1\sv_referencedIwdNames\main/z__svr_csv main/z_svr_sound_aliases_for_dhc_map_pack_4 main/z_svr_pam____202 main/iw_15 main/iw_13 main/iw_08 main/iw_07 main/iw_06 main/iw_03\sv_referencedIwds\-675245519 1058077270 -635133705 181429573 780394069 1101180720 1046874969 1053665859 1659111092 \sv_serverid\16\sv_voice\0\sv_voiceQuality\1\timescale\1


Заметьте, что для этого info string характерно 1026 знаков, больше чем нужно для лимита на 2 знака (лимит соответственно 1024 знака, как было сказано выше) . Я выяснил, что с удалением этих 2 знаков, сервер не выдал бы ошибку info sting.

Используя эти знания, мы теперь знаем точно, что содержится в info string. Мы можем использовать полученную информацию для того , чтобы администраторы серверов смогли уменьшить длину этого stirng'a.

Замечаю, что все результаты проведены на ОС WINDOWS. Я не запускал сервер на Ликунсе, поэтому ваше рузультаты могут совпасть ( а могут и не совпасть) с моими результатами. Также, я беру на себя ответственность использования этой технологии. ВЫ ВСЁ ДЕЛАЕТЕ НА СВОЙ СТРАХ И РИСК.

Для начала, никто из нас не может менять большую часть настроек в string'e . Эти (представленные ниже) , должны быть в любом случае.


bg_fallDamageMaxHeight bg_fallDamageMinHeight g_synchronousClients sv_cheats sv_disableClientConsole sv_pure sv_serverid sv_voice sv_voiceQuality timescale


К счастью, эти данные составляют всего 188 знаков, соответственно оставляют нам 836 знаков, чтобы сервер запустился без ошибки. К остальным знакам относится настройки управления, Damage Control, или , как я люблю это называть в данном случае - "ghetto-riggin". Мы рассмотрим 4 основных назначения, находящихся в string'e. И рассмотрим каждый из них в отдельности.

1) sv_iwdNames


sv_iwdNames\z__svr_csv z_svr_sound_aliases_for_dhc_map_pack_4 z_svr_sound_aliases_for_dhc_map_pack_2 z_svr_sound_aliases_for_dhc_map_pack_02 z_svr_sound_aliases_for_dhc_map_pack_01 z_svr_pam____202 z_dhc_mp1 zzz_mp_powcamp iw_15 iw_14 iw_13 iw_12 iw_11 iw_10 iw_09 iw_08 iw_07 iw_06 iw_05 iw_04 iw_03 iw_00\


Это список всех названий IWD файлов на вашем сервере (или на моём сервере, к примеру)

Что мы можем сделать здесь, что уменьшить количество знаков ?

А)Уберите ненужные IWD файлы.
Если вы посмотрите внимательно на имена файлов, вы можете заметить, что файлы iw_01 и iw_02 пропущены. Но это не так. Они удалены ! Так как они содержат карты для сингла (single player's maps =) ) , они оказались бесполезны для моего выделенного мультиплеерного сервера. Также выяснилось, что сервер на Windows'e не препятствует удалению iw_11 и iw_12 файлам. Для меня это составило уже 4 файла, которые можно убрать с сервера.

Также убедитесь , что Вы не используете старых версий модов, которые не используются и только добавляют "себя" в список имён IWD .

Б)Используйте короткие имена для IWD файлов. IW немного помогли нам, оставив запас знаков до 5 штук каждый, но не создавайте их слишком много, так как опять таки они заполняют info_string

В)Комбинируете моды как только можете. Попытайтесь создать только серверный IWD файл, и такой же клиентский файл (грубо говоря, чтобы и у того и у другого название было одинаковое)

Г)Только для серверов с доступом через папку fx_game : Вы можете извлечь serverside компоненты вашего мода в папке fx_game вашего сервера и окончательно удалить его IWD название из info_string'a . Это старый метод создания server-side-only модов, перед тем как патч 1.2 вернёт нам возможность '_svr_' naming

Д)Для серверов без fx_game доступа, но с высокоскоростным HTTP Re-direct скомбинируйте (то бишь соедините) server-side и client-side компоненты вашего мода в ОДИН IWD файл. Понятно, что клиент будет качать этот мод, но с redirect'om это займёт чуть больше секунды. Таким образом вы "спасаете" IWD файл от нахождения его названия в info-string'e

2) sv_iwds


sv_iwds\-675245519 1058077270 1058077270 1058077270 1058077270 -635133705 2070676332 -149688453 181429573 -1449716526 780394069 -1333623355 -1980843666 1334775335 -621896007 1101180720 1046874969 1053665859 1842349204 -1652414412 1659111092 178615151


Это внутриигровая проверка знаков/кодов. Она используется, чтобы удостоверится, что на сервере используется одинаковая с клиентом версия IWD.

Что мы можем сделать, чтобы уменьшить количество знаков в string'e ?

A)Еще раз, удалите все ненужные IWD .

Б)Соедините все моды в один iwd файл, где это возможно. Это не только уменьшит количество знаков по отдельным IWD, но так же уменьшит число контрольных сумм. Двойной бонус за это !

В)Только для серверов с доступом к папке fx_game: Извлечение serverside только папки / секции mods и соответственно удаление IWD файла так же избавляет от контрольной суммы в info_string'e .

**** Уточнение о sv_iwdNames и sv_iwds , применяемых к отдельным/выборочным (custom) картам***

Мы ничего не можем сделать с этим. Название IWD будет в любом случае добавлено. Место, где оно сохраняется в info_space, называется sv_referencedIWDnames , о коротом я сейчас расскажу

3) sv_referencediwdNames


sv_referencedIwdNames\main/z__svr_csv main/z_svr_sound_aliases_for_dhc_map_pack_4 main/z_svr_pam____202 main/iw_15 main/iw_13 main/iw_08 main/iw_07 main/iw_06 main/iw_03


Это список всех активно загружаемых сервером IWD имён. Заметьте слово "заг
ружаемых" , так как это будет очень важно при применение custom карт

Что мы можем сделать, чтобы уменьшить количество знаков в string'e ?

А) Еще раз, соедините все моды в один IWD файл, дабы уменьшить общее количество IWD имён

Б) Короткие названия IWD также важны, поскольку число знаков в загружаемых IWD рассчитывается ДВАЖДЫ ! Один раз в sv_iwdNames и один раз в sv_referencediwdNames

В) Только для серверов с доступом к папке fx_game: Вы можете извлечь компоненты serverside вашего мода в папку fx_game вашего сервера и окончательно УДАЛИТЬ название IWD из info_string'a

Г) Для серверов без fx_game доступа, но с высокоскоростным HTTP Re-direct скомбинируйте (то бишь соедините) server-side и client-side компоненты вашего мода в ОДИН IWD файл. Понятно, что клиент будет качать этот мод, но с redirect'om это займёт чуть больше секунды. Таким образом вы "спасаете" IWD файл от нахождения его названия в info-string'e . ДВАЖДЫ !

4) sv_referencedIwds


sv_referencedIwds\-675245519 1058077270 -635133705 181429573 780394069 1101180720 1046874969 1053665859 1659111092


Это контрольная сумма всех загружаемых IWD файлов. Это косяк IW , так как это, по существу, повторения номеров в sv_iwds. Но я предполагаю, что это сделано для того, чтобы проще осуществлялось соответствие имён файлов с их контрольными суммами и они вероятно не ожидали проблему длины info_string'a

Что мы можем сделать, чтобы уменьшить количество знаков в string'e ?

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

А) Объединение модов в один IWD файл не только очевидно уменьшит число IWD имён , но также уменьшит и общую контрольную сумму, что даст УЧЕТВЕРЁННЫЙ БОНУС ! (при активной загрузке объединенного IWD файла) . Вы только что убрали потраченное впустую место в sv_iwdnames, sv_iwds, sv_referencediwdNames, и sv_referencediwds. То , что Вы сделали, очень уменьшит количество знаков в Вашем info_string'e

Б) Только для серверов с доступом к папке fx_game: извлечение только serverside папки модов и удаление IWD файла также избавит вас от ТОЙ контрольной суммы в info_string'e ! Бонус !


Далее. Хочется сделать важное замечание о баге в custom maps, который я назвал "sound csv bug". Для тех кто не в курсе поясняю : это проблема CODa 2 , когда сервер автоматически загружает (смотри вышеупомянутые IWD файлы) soundaliases/*.csv файлы ВСЕЙ кастомной карты , даже если эта карта активно не играется/используется.

Это вызывает 2 проблемы :

1. Когда конектится клиент, он будет вынужден скачать все "загружаемые" (упомянутые) IWD файлы, имеющиеся на сервере. Это означает что клиент должен будет скачать каждую SINGLE CUSTOM карту или маппак прежде, чем клиент сможет играть, даже если в настоящее время на сервере запущена STOCK (хз как перевести =) ) карта

2. Вторая проблема непосредственно касается нашей темы, то есть IWD Sum/Mismatch . Если Вы загрузили каждую карту, соответственно у каждой будет этот sound csv bug и карта будет внесена не только в sv_iwdnames и sv_iwds, но также и в sv_referencediwdNames и sv_referencediwds.

Чтобы работать аккуратно с csv bug, который позволит вашим игрокам скачивать ТОЛЬКО карту, которая запущена в данный момент и "спасти" свободное место в info_string'e , делаем следующее:

Вариант 1. Лучший вариант, но только для тех кто имеет доступ к папке fx_game

1) создаем директорию в вашей папке fx_game под названием "soundaliases" (без кавычек)

2) Откройте каждый IWD файл в custom карте (или маппаке) , извлеките содержимое из папки soundaliases и перенесите его в свою , толькосозданную, папку с аналогичным названием. (fx_game/soundaliases). Не удаляйте файлы из IWD файла

3) Поместите все IWD файлы в /main директорию

Вариант 2.. Не лучший вариант, поскольку он осуществляется в большее количество ходов и трубует добавление IWD , но если Вы не имеете доступа в fx_game, то лучше воспользоватся этим вариантом

1) Создайте новую папку на вашем диске C:\ под названием ":soundaliases" ( без кавычек)

2)Откройте каждый IWD файл в custom карте (или маппаке) , извлеките содержимое из папки soundaliases и перенесите его в свою , толькосозданную, папку с аналогичным названием. Не удаляйте файлы из IWD файла

3) Как только вы "соскладируете" все csv файлы в эту директорию, упакуйте её в архив ZIP (обязательно). Это очень важно, чтобы структура только созданных файлов была такой же, как и у оригинала

4) Присвойте вашему .zip файлу имя "z__svr_" + специфичный только для вашего сервера текст (обратите внимание, что 2 подчёркивания после z сделано намеренно) . После этого проверьте, чтобы не было конфликтов с другим сервером

Замечание 1: Если вы не хотите особо парится со свободным местом в string'e , то можете оставить файлы без ключа _svr, оставив при этом 2 подчёркивания после z

Замечание 2: Также имейте ввиду, как только вы добавите как то новый IWD файл (карту , мод) , вам нужно будет создать новый скомбинированный IWD , предварительно перегнав его по вышеописанным параметрам

5) Создайте формат вашего .zip файла в .iwd , просто переименовав его

6) Поместите созданный .iwd файл в /main директорию вашего сервера, наряду с остальными картами и файлами.

Статья взята с CALLOFDUTY.RU
  • 0

b_350_20_692108_381007_FFFFFF_000000.png
ab172180.gif

PiratRu.gif





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

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

Здесь находится аттестат нашего WM идентификатора 348738271915