![]() |
Показать все 20 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Наши проекты (https://hlfx.ru/forum/forumdisplay.php?forumid=1)
-- Steam патч для Invasion (https://hlfx.ru/forum/showthread.php?threadid=5890)
Steam патч для Invasion
Те, кто внимательно читают форум, знают, что Invasion является одним из моих любимых модов. В своё время (2005 или чуть позже) я был очень восхищён этим модом: в него и качественную музыку завезли, и красивые декали, и ленсфлаеры, и прострелы стен, и даже отстреливание частей тел монстров. И субтитры ещё.
Когда его сорцы стали доступны, я сразу же поглядел всё, что меня давно интересовало. Ориентируясь на французский код, точнее, используя его примерно на 80%, я написал спрайтовые декали, что сохраняются и ходят через уровни. К этому времени у меня накопилось несколько своих наработок, которые народ видел только на видео в ютубе. И тогда я подумал, что неплохо бы их встроить в какой-нибудь известный мод для обкатки, чтобы норот оценил, как оно в игре.
Наконец-то руки дошли. Я начал ворошить сорцы стим-патча для Инвазион. Ну, мягко говоря, не айс. Одна из самых бросающихся в глаза фич - декали и партикли, закомменчена с пометкой "пофикшу позже". Что автор собрался фиксить, мне не совсем понятно, ведь оно работает ровно так, как позволяет голдсорс. Естественно, в патче прикручены клиентские эвенты для пушек, опять же непонятно зачем, ведь в моде нет мультиплеера. Ещё одна пакость в том, что автор выкинул фмод, заботливо прикрученный французами, и перевесил музыку на встроенный в движок плеер. Который невозбранно глушит треки после чейнджлевела или загрузки сейва. Вишенкой на торте является то, что иногда скрипты могут слегка ломаться: с оригинальными дллками учёный при нападении грантов на лабораторию на карте l1m1_a2 умирает сразу возле окна, а с "пофикшенными" может бегать по комнате и не умереть. Поначалу я думал, что это мой косяк, потому что применил фикс DispatchAnimEvents, чтобы его протестировать в реальной игре. Но нет, с готовыми дллками из патча то же самое.
Итак, что уже готово:
1. MP3-плеер на основе fmod для windows и linux. Умеет менять громкость, ставиться на паузу, сохранять имя трека и позицию воспроизведения в сейв, восстанавливать это при загрузке сейва, поддерживает текстовые плейлисты из Инвазиона.
2. Сохраняемые спрайтовые декали. Ходят через чейнджлевелы, сохраняются в сейвы и загружаются из них. Есть небольшие проблемы с движущимися энтитями, возможно, это нерешаемо.
3. Выделение юзабельной энтити. Требует пройти всю игру, чтобы проверить, нет ли гигантских кнопок метр на два с половиной, как в блушифте.
4. Типа фикс DispatchAnimEvents. Дошёл до карты l2m3, заметил только один сломанный скрипт с учёным, упомянутый выше, и то не из-за этого, а вообще из-за нового сдк 2.4.
В планах поправить подбор некоторых предметов, например для ракет рпг не отображается спрайт. Если будет желание - поправить модели NPC, чтобы они не елозили ногами по полу в некоторых анимациях, да выкинуть хдпачного барника, а то он не сочетается с лоуполи учёными, грантами и снайперами.
В общем, спустя некоторое время я выкачу тестовую версию на публику. Когда разберусь со сборкой для linux и пройду мод два раза. Пишите в этой теме ваши соображения.
Какие тут могут быть соображения? Ты уже сделал столько наработок, пора их оформлять в законченное произведение и становиться автором.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ну скорее не соображения, а предложения, что ещё включить в патч. Вполне возможно, я упустил некоторые моменты из-за синдрома утъонка и большой продолжительности мода. Навскидку, припомню разве что отстреливание частей тела мелкокалиберным оружием. Я бы сделал, чтобы такое было только от взрывов и мощных пушек.
Вырежи защиту от читёров эту дурацкую.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша а, ну это само собой. В документации нигде не написано ни про консольную команду test, ни про ключ командной строки -testmode. В юности это меня очень калило, некоторые места было трудно пройти, а при вводе читов мод вылетал. Вообще не понимаю, зачем это было нужно придумывать. В WON-халфе и так по-умолчанию консоль вообще не открывается, и ещё нужна команда sv_cheats и перезапуск карты. Защита в коде - это мелочи. Авторы TheGate пошли ещё дальше. Они разместили на каждой карте маленькую комнатку с триггером, который затемняет экран и пишет, что игрок читер. То есть, ходить между картами можно только через чейнджлевелы. Загрузить какую-то одну и протестить невозможно. Наверное это чтобы поиздеваться над игроками, потому что TheGate местами аццки сложный, сложнее Инвазиона. Но кинематографичный.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В ксаше-можно сдампить entpatch и подглядеть
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Почему? Лумп энтитей текстовый. Просто ищешь там поиском trigger_changelevel и смотришь поля map и landmark.
__________________
Потому что форматирование поедет. Неудобно в той каше ориентироваться.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
С горем пополам разобрался с интерфейсом, то есть главным меню. Вообще бы туда не лез, но поскольку инвазион имеет в комплекте замечательную утилиту переключения языков и переводы аж на 4 языка (французский, английский, немецкий и испанский), я решил, что не стоит добру пропадать, и надо бы применить локализацию к главному меню. Заодно завести ещё русский перевод.
Так вот. Документации нифига нету, а та что есть - она для сорса, есть отличия. Пришлось ковыряться самому. Как устроена локализация меню в стим-халфе? VGUI2 и GameUI парсят res файлы, а так же kb_act.lst, settings.scr, user.scr. Если лейбелы в res'ах, и строчки в lst и scr начинаются с #, то движок пытается искать их локализованные версии в файлах valve/resource/gameui_english.txt, valve/resource/valve_english.txt, invasion/resource/gameui_english.txt, invasion/resource/valve_english.txt, invasion/resource/invasion_english.txt. Такой вот зоопарк получается.
Причём, invasion/resource/invasion_english.txt не обязательно содержать все строчки, которые требует меню, достаточно только те, которых нет valve/resource/valve_english.txt. А вот если нет каких-то строчек в invasion/resource/gameui_english.txt, то их и не будет, поскольку грузится только один файл, в отличие от предыдущего случая, где грузятся оба. Неважно, в каком из файлов gameui_english.txt или имямода_english.txt находятся локализованные строчки, меню в любом случае их подхватит. Разве что я ещё не проверял названия глав, что пишутся в кач-ве комментария в сейв. Думаю, что разницы нет.
Короче говоря, сделать волшебные файлики локализации меню для каждого из официальных языков мода, а так же для русского и положить их в папку invasion/resource - не проблема. Проблема - переключать язык уже внутри игры, чтобы менялись тексты титров и vgui-менюшек. Можно завести под каждый из языков свою папку типа invasion_french, invasion_russian, invasion_german, и положить туда соответствующие titles.txt и texts.txt. Но мне это категорически не нравится. Гораздо удобнее сделать автоматическое переключение языка, ведь все нужные текстовики имеются. В случае с текстами ничего мудрить не надо, файлы грузятся самой клиенткой. С титрами - другое дело, надо либо использовать парсер-локализатор (вчера написал), либо загружать титры прямо на клиентке в обход движка (можно невозбранно позаимствовать из ксаша). Так или иначе, нужен способ узнать, какой язык установлен для халфы в стиме.
Подскажите, есть ли какой-то экспорт, торчащий из стима, позволяющий узнать язык запущенной игры? Или это только искать в реестре? Опять же, в реестре я нашёл только язык стима, который может отличаться от языков установленных игр.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
XaeroX мовы вообще нет, даже текста. Двойная дискриминацыя!
В процессе русификации текста я нашёл забавный недосмотр французов. Вот пример описания шрифтов из двух текстовых схем:
1 | // 640x480 text scheme file |
2 |
3 | // SchemeName defines a new scheme |
4 | SchemeName = "Basic Text" |
5 |
6 | // FontName is the string name of the font the scheme uses |
7 | FontName = "Arial" |
8 |
9 | // FontSize defines the height of the font (the rest is derived from that) |
10 | FontSize = 17 |
11 |
12 | // FontWeight thickens the font (700 is bold, 1400 very bold) |
13 | FontWeight = 0 |
14 |
15 |
16 | // Invasion radio |
17 | SchemeName = "Invasion Text" |
18 | FontName = "Arial" |
19 | FontSize = 17 |
20 | FontWeight = 0 |
21 | FgColor = "255 255 255 170" |
1 | // 800x600 text scheme file |
2 |
3 | // COMMAND MENU TEXT |
4 | SchemeName = "CommandMenu Text" |
5 | FontName = "Arial" |
6 | FontSize = 17 |
7 | FgColor = "255 170 0 255" |
8 | BgColor = "0 0 0 141" |
9 | FgColorArmed = "255 255 255 255" |
10 | BgColorArmed = "255 170 0 67" |
11 |
12 |
13 | // Invasion radio |
14 | SchemeName = "Invasion Text" |
15 | FontName = "Arial" |
16 | FontSize = 17 |
17 | FontWeight = 0 |
18 | FgColor = "255 255 255 170" |
Временная зона GMT. Текущее время 15:01. | Показать все 20 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024