HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Нубские вопросы от <censored> и других нубов (https://hlfx.ru/forum/showthread.php?threadid=4535)
Отправлено JPEG 11-06-2020 в 02:28:
Цитата:
Crystallize писал:
Надо её где-то забэкапить на форуме потому что не то что прогу а даже инфу о ней трудно загуглить даже если знаешь что искать.
даже автор нигде не указан)__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Отправлено Cybermax 11-06-2020 в 13:37:
Цитата:
Crystallize писал:
Надо её где-то забэкапить на форуме потому что не то что прогу а даже инфу о ней трудно загуглить даже если знаешь что искать.
Самое верное это загрузить на moddb.com, gambanana.com gamer-lab.com потому что аттачи имею свойство исчезать впрочем как и ссылки на облака.
Отправлено Vadiman 14-06-2020 в 12:39:
Пытаюсь добавить новый мощный тип патронов
C++ Source Code:
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_BULLETU | ((iDamage = 30) ? DMG_ALWAYSGIB : DMG_NEVERGIB) ); |
Можно ли сделать разрыв цели на куски в зависимости от его уровня здоровья? Или хотя бы рандомно?
PS:
C++ Source Code:
// Gargantua is immune to any damage but this |
#define GARG_DAMAGE (DMG_ENERGYBEAM|DMG_CRUSH|DMG_MORTAR|DMG_BLAST|DMG_BULLETU) |
Добавил этот тип пули воздействию на Гаргантюа, однако урон по нему не проходит, просто ревет от боли.
Отправлено Ku2zoff 14-06-2020 в 15:42:
Цитата:
Vadiman писал:
Можно ли сделать разрыв цели на куски в зависимости от его уровня здоровья?
Можно. Оно так и есть, на самом деле. Но если хочешь указать какой-то конкретный уровень, то копай TakeDamage. Ставь условие if (bitsDamageType & DMG_BULLETU), а в нём проверку на уровень здоровья. Если здоровье меньше нужного уровня, вызывай GibMonster().
Вроде бы ты всё правильно сделал. Попробуй вместо DMG_BULLETU использовать уже имеющийся бит, например DMG_ENERGYBEAM. И сравни результат.
C++ Source Code:
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_ENERYGEAM | ((iDamage >= 30) ? DMG_ALWAYSGIB : DMG_NEVERGIB) ); |
Добавлено 14-06-2020 в 22:42:
P.S. эти новые пули от гарга рикошетят?
Отправлено Vadiman 14-06-2020 в 22:30:
Цитата:
Ku2zoff писал:
Можно. Оно так и есть, на самом деле. Но если хочешь указать какой-то конкретный уровень, то копай TakeDamage. Ставь условие if (bitsDamageType & DMG_BULLETU), а в нём проверку на уровень здоровья. Если здоровье меньше нужного уровня, вызывай GibMonster().
Вроде бы ты всё правильно сделал. Попробуй вместо DMG_BULLETU использовать уже имеющийся бит, например DMG_ENERGYBEAM. И сравни результат.
C++ Source Code:
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_ENERYGEAM | ((iDamage >= 30) ? DMG_ALWAYSGIB : DMG_NEVERGIB) ); |
Добавлено 14-06-2020 в 22:42:
P.S. эти новые пули от гарга рикошетят?
Спасибо, попробую)
Да, рикошетят и заставляют просто реветь. Даже если заменить на DMG_ENERGYBEAM или DMG_BLAST
Добавлено 15-06-2020 в 01:30:
Вообщем с первым вопросом все оказалось проще
C++ Source Code:
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_BULLETU | ((pev->health < 20) ? DMG_ALWAYSGIB : DMG_NEVERGIB) ); |
А вот с гаргом пока неясно.
Еще такой вопросец: В player.cpp в TakeDamage решил сделать выкрики игрока при получении урона
C++ Source Code:
1 | bool Painsnd = bitsDamage & (DMG_CLUB | DMG_FALL | DMG_CRUSH | DMG_BULLET | DMG_SLASH | DMG_ACID | DMG_SHOCK) ? true : false; |
5 | switch (RANDOM_LONG(0,2)) |
8 | EMIT_SOUND(ENT(pev), CHAN_VOICE, "player/pain1.wav", 1, ATTN_NORM); |
11 | EMIT_SOUND(ENT(pev), CHAN_VOICE, "player/pain2.wav", 1, ATTN_NORM); |
14 | EMIT_SOUND(ENT(pev), CHAN_VOICE, "player/pain3.wav", 1, ATTN_NORM); |
Как сделать интервалы между срабатываниями звуков, чтобы при получении какой-нибудь автоматной очереди они не проигрывались слишком часто?
Отправлено Ku2zoff 14-06-2020 в 23:17:
C++ Source Code:
if (gpGlobals->time < m_flPainTime) |
В начало функции CBasePlayer::Pain.
C++ Source Code:
m_flPainTime = gpGlobals->time + 1.0; |
В её конец. m_flPainTime только задекларировать в классе игрока, в сейвдату добавлять не надо. Pain вызывать из CBasePlayer::TakeDamage по условию bool Painsnd, вместо продублированного кода.
Добавлено 15-06-2020 в 06:09:
Цитата:
Vadiman писал:
Вообщем с первым вопросом все оказалось проще
Неправильно. Надо так:
C++ Source Code:
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_BULLETU | ((pEntity->pev->health < 20) ? DMG_ALWAYSGIB : DMG_NEVERGIB) ); |
А то делаешь проверку по здоровью стреляющего, а не того, в кого стреляют.
Добавлено 15-06-2020 в 06:17:
Цитата:
Vadiman писал:
Да, рикошетят и заставляют просто реветь. Даже если заменить на DMG_ENERGYBEAM или DMG_BLAST
Странно. У гарга большой иммунитет ко всем видам урона, кроме указанных в GARG_DAMAGE. Может быть дело именно в самой функции FireBullets? Не должно ничего рикошетить, если твой тип урона в списке GARG_DAMAGE.
Отправлено Vadiman 15-06-2020 в 14:26:
Цитата:
Ku2zoff писал:
C++ Source Code:
if (gpGlobals->time < m_flPainTime) |
В начало функции CBasePlayer::Pain.
C++ Source Code:
m_flPainTime = gpGlobals->time + 1.0; |
В её конец. m_flPainTime только задекларировать в классе игрока, в сейвдату добавлять не надо. Pain вызывать из CBasePlayer::TakeDamage по условию bool Painsnd, вместо продублированного кода.
Добавлено 15-06-2020 в 06:09:
Неправильно. Надо так:
C++ Source Code:
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmg050, vecDir, &tr, DMG_BULLETU | ((pEntity->pev->health < 20) ? DMG_ALWAYSGIB : DMG_NEVERGIB) ); |
А то делаешь проверку по здоровью стреляющего, а не того, в кого стреляют.
Спасибо, теперь работает как надо
Цитата:
Добавлено 15-06-2020 в 06:17:
Странно. У гарга большой иммунитет ко всем видам урона, кроме указанных в GARG_DAMAGE. Может быть дело именно в самой функции FireBullets? Не должно ничего рикошетить, если твой тип урона в списке GARG_DAMAGE.
Вот то-то и оно. Скорее всего в самой функции надо ковырять.
Кстати по аналогичной схеме, например:
C++ Source Code:
//Броня не защищает от газа и яда |
if (pev->armorvalue && !(bitsDamageType & (DMG_FALL | DMG_DROWN | DMG_POISON | DMG_NERVEGAS | DMG_PARALYZE | DMG_CLUB | DMG_SLASH)) ) |
когда я получаю DMG_POISON у меня все равно отнимается именно броня.
PS как считаешь, снайперская винтовка Barret со своим 0.50 калибром пробила бы шкурку Гарга? Может я зря парюсь просто и не стоит эту пушку так возвышать по мощности. Вон, терминаторам в кино бошки она сносила
Отправлено JPEG 18-06-2020 в 16:01:
хм, а возможно ли в коде гс сделать, чтобы ambient_generic звучал, как бы не располагаясь в 3д-пространстве (с постоянной громкостью каналов). Как, допустим, при воспроизведении его через play в консоли, не заходя в игру. Хочу сделать в кооп-моде динамический саундтрек, с постепенным наложением и убиранием инструментов за счёт касания триггеров
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Отправлено Дядя Миша 18-06-2020 в 16:11:
Ну вот только если всем команду play рассылать по сети, только так.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено JPEG 18-06-2020 в 20:22:
Цитата:
Дядя Миша писал:
Ну вот только если всем команду play рассылать по сети, только так.
так при вызове play во время уже созданной игры спавнится звук с реагированием на пространство (кароч обычный амб-дженерик). Ну ладно, видимо никак. Можно, конечно, дублировать звуки по-разным концам карты, но это всё равно так себе эффект__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Отправлено Ku2zoff 19-06-2020 в 05:55:
Yo Den прицепи фмод, инициализируй его на несколько каналов, и крути каждый инструмент в отдельном канале. DSP эффектов не будет + формат можно не только лишь wav.
Отправлено Дядя Миша 19-06-2020 в 08:23:
Цитата:
Yo Den писал:
спавнится звук с реагированием на пространство
как ты это определил? play команда именно для локального звука. Она всегда привязана координатами к конкретному игроку.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 19-06-2020 в 09:24:
Цитата:
Vadiman писал:
PS как считаешь, снайперская винтовка Barret со своим 0.50 калибром пробила бы шкурку Гарга? Может я зря парюсь просто и не стоит эту пушку так возвышать по мощности. Вон, терминаторам в кино бошки она сносила
Проведи аналогию с чужими-преторианцами из AvP2. Мелкокалиберное их броню не берёт, а вот миниган и снайперка прошибают. В принципе, неплохой геймплейный ход.
Отправлено JPEG 19-06-2020 в 14:04:
Цитата:
Дядя Миша писал:
как ты это определил? play команда именно для локального звука. Она всегда привязана координатами к конкретному игроку.
возможно в won/xash так, но в стим-версии это не так, достаточно воспроизвести звук и отбежать на пару метров, покрутить головой__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Отправлено Дядя Миша 19-06-2020 в 14:58:
Понял. Он спавнится в точке нахождения игрока, но не следует за ним.
Тогда ой.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'