WRITE_BYTE(m_iMp3NeedsUpdate == 3 ? 2 : 1); // play
18
WRITE_STRING(STRING(m_strCurrentMp3));
19
MESSAGE_END();
20
//ALERT(at_console, "MP3 player: playing file [%s]\n", STRING(m_strCurrentMp3));
21
// Sigurth
22
if( m_iMp3NeedsUpdate == 3 )
23
m_strCurrentMp3 = iStringNull;
24
25
}
26
27
m_iMp3NeedsUpdate = 0;
28
}
Я думаю, может мне просто посылать номер трека, а на клиенте уже определять, какой трек будет соответствовать этому номеру? Скорее всего и проблема исчезнет. Но в Паранойе то точно такой же код, и он не вызывает багов (ну кроме вылетов). Хотя может дело в том, что Паранойя изначально строилась на спирите?
__________________ Никогда не поздно сделать мод под хл1
Говорю же, проблема в несанкционированном вызове мп3 плеера, и походу не с сервера мессагой, а чисто с клиента. Потому что в коде ошибок нет, плеер работает исправно. Но вот почему-то он пытается при старте уровня включить мне музычку с названием сейва, который я загружаю, например quick, autosave или half-life-000. А потом в консоль ругается, что не может загрузить такой файл. Причем ругань выдает только клиент, на сервере походу мессага вообще не отправлялась, потому что я там что в ALERTe написано, в консоль не пишется при developer 5. А если я сам активирую плеер, то все пишется.
__________________ Никогда не поздно сделать мод под хл1
Sigurth так поставь брейкпоинт на клиенте и смотри кто же тебе её вызывает.
Если в трейсе будет CL_DispatchUserMessage(или что-то в этом роде), значит её точно выслал сервер, если так, то ищи все вхождения gmsgPlayMP3 на сервере, ставь везде брейкпоинты и смотри что происходит.
Я так понимаю, вся проблема в том, что вместо реального названия трека в сейв записывается нечто другое?
a1batrossДядя Миша
Короче, я понял в чем проблема. Альбатросс был прав, что вместо реального названия трека в сейв записывается нечто другое. А именно m_strCurrentMp3 каждый кадр принимает различные значения. Они меняются в зависимости от нажатия клавиш, а после сохранения игры - название сейва. Я решу проблему, как и хотел. Уберу эти проклятые строки и буду сохранять индекс трека, а на клиенте сопоставлять индекс и название. Всем спасибо
__________________ Никогда не поздно сделать мод под хл1
Кстати а как зарядить оружие меньше чем p->iMaxClip? Хочу сделать имитацию патронника, то есть сделать допустим МП5 обойму 31 патрон, если оружие полностью разряжено то заряжать 30 патронов, если не полностью то 31. Или вот эта базука, в ней должно заряжаться 12 патронов если полностью разряжена, 15 если нет (типа ракеты остаются в барабане): http://imgur.com/a/tmccL
Если к примеру написать так, то оно не работает, заряжает 31 патрон, а не на 1 меньше, хотя анимация проигрывается нужная:
Поэтому и не работает то, что ты указываешь при вызове DefaultReload. Заводи в базовом классе оружия новую переменную, например, m_iReloadingAmmo, задавай ей значение iClipSize в DefaultReload, а потом в ItemPostFrame подсовывай её вместо iMaxClip(). И сразу же по завершении перезарядки зануляй. Не знаю, нужно ли сохранять её в сейв, наверное нет. Можешь ещё воткнуть проверку, чтобы m_iReloadingAmmo не было больше iMaxClip().
Фишка в том, что DefaultReload только проверяет оружие на возможность перезарядиться, считая патроны. Сама перезарядка происходит в ItemPostFrame.
Добавлено 28-06-2017 в 00:51:
И да, наверное вальвовцы хотели что-то такое сделать с количеством патронов, но не дописали код, сделав проверку только в DefaultReload.
Добавлено 28-06-2017 в 01:03:
P.S. Я буду делать у себя нечто подобное, только с выбрасываемыми магазинами, как в Firearms. Если в магазине осталось меньше половины патронов - он выкидывается, если больше - сохраняется. Для отображения магазинов две цифры - одна означает полные магазины, другая неполные.
Кстати твой старый тутор по wallpuff-ам ( http://hlfx.ru/forum/showthread.php?s=&threadid=1151 ) мне очень пригодился как самая идея как вызывать эффекты на клиенте, плюс мне еще помог Gunship_Mark_II поделившись кодом своих эффектов что подобным образом вызываются через эвенты на клиенте, попробовал через них реализовать эффекты для плазмогана и кровяхи:
Ku2zoff а в чем вообще достоинство тех партиклей? Никогда не обращал внимание что они там вообще есть. Я вообще в эффектах не разбираюсь особо, те на видео это вообще первые эффекты что я в игру добавил.
Вообще я помню из инвазиона из новых эффектов разве что эффект попадания пуль в стены, ну или огонь из огнемета "поджарь себя", та же плазма супергана там просто спрайт.