![]() |
Страницы (2): [1] 2 » Показать все 22 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Общие вопросы по кодингу (https://hlfx.ru/forum/showthread.php?threadid=2860)
Общие вопросы по кодингу
Дабы не создавать кучу тем с маленькими вопросами, создам одну для всех, если админы не против.
Решил создать зависимость между френдлифаером и возможностью наносить урон дружественным монстрам.
Итак, записал в CHalf-LifeMultiplay функцию
virtual BOOL FMonsterCanTakeDamage ( CBaseMonster *pMonster, CBaseEntity *pAttacker ); |
virtual BOOL FMonsterCanTakeDamage ( CBaseMonster *pMonster, CBaseEntity *pAttacker ) = 0; |
1 | BOOL CHalfLifeMultiplay::FMonsterCanTakeDamage ( CBaseMonster *pMonster, CBaseEntity *pAttacker ) |
2 | { |
3 | if ( (pMonster) && (pMonster->IRelationship(pAttacker) == R_AL)) |
4 | if ( (friendlyfire.value == 0) && (pMonster != pAttacker) ) |
5 | return FALSE; |
6 | return TRUE; |
7 | } |
CBaseEntity *pAttacker = CBaseEntity::Instance(pevAttacker); |
if ( !g_pGameRules->FMonsterCanTakeDamage( this, pAttacker ) ) |
return 0; |
__________________
I'm on github
I'm on opendesktop.org
FreeSlave у барни свой тейк-демедж, через который и наносится дамага.
ищи место в Combap.cpp где эта функция вызывается в принципе, и там делай условие.
Добавлено 29-05-2011 в 18:44:
Это по идее в CheckTraceHullAttack, но не только там.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
1 | if ( iDamage > 0 ) |
2 | { |
3 | CBaseEntity *pAttacker = CBaseEntity::Instance(pev); |
4 | if ( !g_pGameRules->FMonsterCanTakeDamage( this, pAttacker ) ) |
5 | return pEntity; |
6 | pEntity->TakeDamage( pev, pev, iDamage, iDmgType ); |
7 | } |
__________________
I'm on github
I'm on opendesktop.org
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Поднимаю эту тему, чтобы не создавать новую.
Первое:
if ( !stricmp( строка1, строка2 ) ) |
break; |
if ( строка[0] == '\0' ) |
1 - да
2 - если в начале строка стоит 0x00
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
То есть? Можно подробнее про второе?
\0 - нулевой символ.Это не цифра ноль а именно символ с кодом 0.Обозначает конец строки.Если строка пустая то в ней только нулевой символ.Если не пустая то он в конце строки.
То есть в случае
строка[0] == '\0' |
Получается да )
if( str && *str ) |
{ |
} |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А в чём отличие между
if (str[0] == '\0') |
if (str[0] == 0) |
Разницы нет так как код символа '\0' = 0
В одиночных кавычках пишется не число, а код символа, который впоследствии преобразуется в число.
Вот допустим, нам требуется сделать проверку на пробел.
Но не каждый знает, что код пробела равен 32. К тому же это не для всех наглядно. Поэтому пишут
if( *str == ' ' ) |
if( *str == 32 ) |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Временная зона GMT. Текущее время 11:37. | Страницы (2): [1] 2 » Показать все 22 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024