Догадка не оправдалась. Игра крашится даже при наличии папок с другими модами.a1batross сказав(ла):2 TigerHeart01: Проверю кастом гейм. Падать там вроде нечему.
Я думаю, что логично было бы в качестве ключа указывать суффикс, идущий после gamedir, как в стим-версии. При -lang russian движок и меню ищут файлы локализации (и вообще любые файлы) в modname_russian, например. Локализация, это ведь не толькоTigerHeart01 сказав(ла):Или может быть даже так : -lang fargus, -lang 7wolf.... Это сработает ?
То есть в случае с локализациями не нужно выделываться, а просто прибегнуть к обычной подмене файлов ? То есть, папка будет всегда одна - modname_russian, например, а в ней просто заменять звуковые и текстовые файлы ?Ku2zoff сказав(ла):Я думаю, что логично было бы в качестве ключа указывать суффикс, идущий после gamedir, как в стим-версии. При -lang russian движок и меню ищут файлы локализации (и вообще любые файлы) в modname_russian, например. Локализация, это ведь не толькоценный мехтекст, но вообще любые ресурсы. Можно ведь и надписи-декали локализировать, и любые текстуры из вадов, моделей и спрайтов.
Ба ! Знакомая функция MenuStrings... Скопипастили у Дяди Миши ? )))resumeGame.SetNameAndStatus( L( "GameUI_GameMenu_ResumeGame" ), MenuStrings[IDS_MAIN_RETURNHELP] );
...
newGame.SetNameAndStatus( L( "GameUI_NewGame" ), MenuStrings[IDS_MAIN_NEWGAMEHELP] );
А если юзер назовёт папку с этим модом как-нибудь по-другому ?...// disable playermodel preview for HLRally to prevent crash
if( !stricmp( gMenu.m_gameinfo.gamefolder, "hlrally" ))
hideModels = true;
Заворачивать строку в L() ?Q_strncpy( profileDesc, "Presets:", CS_SIZE );
Q_strncpy( profileDesc, "Presets:", CS_SIZE );
А MenuStrings[ idx ] в таком случае выносить в отдельный файл ?a1batross сказав(ла):А. Кстати. Можно делать так:
L( MenuStrings[ idx ] )
Я имел в виду, что папок может быть несколько. modname_russian7wolf, modname_russianFargus или просто modname_russian. Какие ресурсы хочешь, такие и подгружаешь, запуская с разных батников или ярлыков. Самый нормальный, на мой взгляд, подход. И мешанины из файлов в главной папке мода не будет.TigerHeart01 сказав(ла):папка будет всегда одна - modname_russian, например, а в ней просто заменять звуковые и текстовые файлы ?
Ну я так и поменял.a1batross сказав(ла):2 TigerHeart01:
не, я имел ввиду менять так:
Было: MenuStrings[IDS_MAIN_NEWGAMEHELP]
Стало: L( MenuStrings[IDS_MAIN_NEWGAMEHELP] )
Что значит "забудь" ? Я уже всё поменял.a1batross сказав(ла):Хотя нет, забудь, плохая идея.
А в чём принцыпиальная разница между IDS_MAIN_NEWGAMEHELP и Xash_NewGameHelp ? Почему нельзя оставить L( "IDS_MAIN_NEWGAMEHELP" ) ?a1batross сказав(ла):Лучше избавиться от MenuStrings в данном случае. Сделать L( "Xash_NewGameHelp" ), например.
Всё работает идеально !a1batross сказав(ла):https://github.com/FWGS/xash3d-deploy/tree/menudll_orig-latest
Сделал автосборку шестой студией на Travis CI и загрузку по ссылке выше. Теперь там всегда будет последняя версия mainui_cpp собранная под оригинальнй движок