Итак... Когда сравнить HL1 и HL2 то замечается различие в зарядниках здоровья и костюм... Правильно! В HL2 зарядники прекращают свою работу, когда игрок будет заряжен полностью... В HL1 они не останавливаются... точнее они не заряжают, но звук зарядки проигрывается... Как-то неправильно получается... Это можно исправить очень простым способом. Вся робота будет вестись на серверной части.
Для func_recharger: Открываем h_battery.cpp, там ищем класс CRecharge, заходим в процедуру CRecharge::Use, ищем вот этот текст:
C++ Source Code:
if ((m_iJuice <= 0) || (!(pActivator->pev->weapons & (1<{ if (m_flSoundTime <= gpGlobals->time) { m_flSoundTime = gpGlobals->time + 0.62; EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/suitchargeno1.wav", 0.85, ATTN_NORM ); } return; }
тут нам стоит доработать условие, при котором проигрывается звук отказа, чтобы оно приходило в истину ещё и когда игрок полностью заряжен. Условие заряжености игрока формулируется так:
C++ Source Code:
pActivator->pev->armorvalue == MAX_NORMAL_BATTERY
то есть, у нас должно получится вот что:
C++ Source Code:
if ((m_iJuice <= 0) || (!(pActivator->pev->weapons & (1<pev->armorvalue == MAX_NORMAL_BATTERY) ) { if (m_flSoundTime <= gpGlobals->time) { m_flSoundTime = gpGlobals->time + 0.62; EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/suitchargeno1.wav", 0.85, ATTN_NORM ); } return; }
Итак зарядник костюма пофиксили.
Для func_healthcharger: Делается аналогично до зарядника костюма. Файл: healthkit.cpp Класс: CWallHealth Процедура: CWallHealth::Use Ищем текст:
C++ Source Code:
if ((m_iJuice <= 0) || (!(pActivator->pev->weapons & (1<{ if (m_flSoundTime <= gpGlobals->time) { m_flSoundTime = gpGlobals->time + 0.62; EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/medshotno1.wav", 1.0, ATTN_NORM ); } return; }
Добавляем ещё одно условие:
C++ Source Code:
pActivator->pev->health == 100
(обратите внимание, тут используем не задефайненное значение, а точное 100) Получим:
C++ Source Code:
if ((m_iJuice <= 0) || (!(pActivator->pev->weapons & (1<pev->health == 100)) { if (m_flSoundTime <= gpGlobals->time) { m_flSoundTime = gpGlobals->time + 0.62; EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/medshotno1.wav", 1.0, ATTN_NORM ); } return; }
Теперь и зарядник здоровья тоже пофиксили.
Казалось бы, что мелочь какую-то фиксили, но всё же надо было, чтобы всё правильно выглядело для игрока
Источник: http://www.hlfx.ru/forum/showthread.php?s=08077d3c0f5c95eb3c499ca8c7341ced&threadid=602 |