XaeroX ну разумеется, это только огрызок кода. Из файла без проблем читается заголовок и всякие int-ы. А вот с char-ами проблема. ХЗ, возможно, просто не срабатывает gEngfuncs.COM_LoadFile по читаемому из файла пути. Халфа же.
Воткнул проверку с помощью strcmp, выяснил, что новая строка txt больше исходной, которая была записана в файл. Стал грешить на отсутствие нуль-терминатора, хотя дополнительную длину для него пробовал выделять. Погуглил и выяснил, что для записи и чтения строк правильнее использовать fputs/fgets, а не fwrite/fread, т.к. последние просто пишут символы по порядку, а не строку, и не пишут в файл терминатор. Проблема решена.
Добавлено 17-07-2018 в 21:21:
З.Ы. щас немного потестирую, и выложу тутор по сохраняемому фмоду.
Ku2zoff я надеюсь ты записываешь позицию времени в файлик HL4, а читаешь на клиенте, иначе это ерунда, а не тутор. В противном случае можно вообще это время в квар записывать клиентский с флажком ARCHIVE.
Дядя Миша писал: я надеюсь ты записываешь позицию времени в файлик HL4, а читаешь на клиенте, иначе это ерунда, а не тутор.
Да, записываю в HL4, и читаю естественно на клиенте, чтобы для каждого уровня текущий трек и позиция сохранялись. Сигурт предположил, что можно бы писать в какой-нибудь файл .clsv, и грузить из него, чтобы не засирать зазря сейвбуффер и sav-файл. Но так как раз ерунда и получится, т.к. грузиться будет всегда один файл для каждой карты, независимо от названия сохранёнки. Тем более, что в дальнейшем я планирую ещё кое-что в этот файл сохранять. Хотя бы кастомные клиентские декали.
Осталось разобраться с автосейвами и замолканием музыки при смене уровней. Последнее, кстати, стандартное поведение фмода в спирите 1.9. Пробовал с помощью квара sv_newunit управлять этим - не работает. Наверное, надо просто отправлять на клиент мессагу с пустым именем MP3 файла, а не затыкать плеер насильно в функции VidInit.
Я вот что подумал. Чтобы не писать сразу много нового кода, опробую это всё на инвазионе. Сорцы открыты, можно юзать. Почему инвазион? Меня всегда бесил в нём MP3-плеер, который не ставится на паузу, и у которого не регулируется громкость. А ещё декали не сохраняются, т.к. они нарисованы через TriAPI. Если не будет лениво, сделаю ещё сошки для linux и выложу на moddb. Отличная возможность всё проверить и попрактиковаться в кодинге.
Дядя Миша ну тоже вариант. Посмотрим. Вот избавить первую паранойю от хакнутой opengl32.dll, и сделать там мигающие лайтстили, это да. А не вот это всё.