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)
Отправлено илья2 21-04-2022 в 22:39:
Цитата:
илья2 писал:
как превысить лимит прекеша моделей с 512 на 1000 ? и возможно ли такое ?
все сам справился кое какие баги пришлось пофиксить в своём моде путем исправления кода. Теперь точно проблем с прекешами быть не должно !__________________
илья
Отправлено илья2 25-04-2022 в 21:37:
New message started when msg *23* has not been sent yet: вот такая вот ошибка вылетает когда я пытаюсь добавить такой код:
// ExplodeTouch( pOther );
//initialize a vector that finds the center of the RPG models hitbox
Vector vecSpot2 = pev->origin + (pev->mins + pev->maxs) * 0.5;
killit++;
if ( killit == 1 )
{
// blast circle "The Infamous Disc of Death"
MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, pev->origin );
WRITE_BYTE( TE_BEAMCYLINDER );
WRITE_COORD( pev->origin.x);//center of effect on x axis
WRITE_COORD( pev->origin.y);//center of effect on y axis
WRITE_COORD( pev->origin.z);//center of effect on z axis
WRITE_COORD( pev->origin.x);//axis of effect on x axis
WRITE_COORD( pev->origin.y);//axis of effect on y axis
WRITE_COORD( pev->origin.z + 300 ); // z axis and Radius of effect
WRITE_SHORT( PRECACHE_MODEL( "sprites/white.spr" ) );//Name of the sprite to use, as defined at begining of tut
WRITE_BYTE( 0 ); // startframe
WRITE_BYTE( 0 ); //framerate in 0.1's
WRITE_BYTE( 40 ); //Life in 0.1's
WRITE_BYTE( 302 ); //Line Width in .1 units
WRITE_BYTE( 0 ); //Noise Amplitude in 0.01's
WRITE_BYTE( 255 ); // Red Color Value
WRITE_BYTE( 255 ); // Green Color Value
WRITE_BYTE( 192 ); // Blue Color Value
WRITE_BYTE( 128 ); // brightness
WRITE_BYTE( 0 ); // speed
MESSAGE_END();
pev->effects |= EF_NODRAW;//stop showing the model!!
pev->velocity = g_vecZero;//set velocity to "0"
UTIL_ScreenShake( pev->origin, 500.0, 400.0, 6.0, 1800 );
entvars_t *pevOwner;
if ( pev->owner )
pevOwner = VARS( pev->owner );
else
pevOwner = NULL;
pev->owner = NULL; // can't traceline attack owner if this is set
/*Big Damage
The first parameter is the center of where the damage radiates from. The second is the inflictor
( or what caused it ). The third is the attacker (or what caused this ). The fourth parameter is the
damage to inflict, the fifth is the class to ignore ( or what entity not apply damage to ). The final
parameter is the damage type--(with multiple damage types delineated by a | ).*/
::RadiusDamage( pev->origin, pev, pevOwner, 400, 1000, CLASS_NONE, DMG_BLAST | DMG_BURN | DMG_ALWAYSGIB );
EMIT_SOUND(ENT(pev), CHAN_STATIC, "weapons/nuke1.wav", 1.0, 0.3);
MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, pev->origin );
WRITE_BYTE( TE_SPRITE );//additive sprite plays though once
WRITE_COORD( pev->origin.x );//where to make the sprite appear on x axis
WRITE_COORD( pev->origin.y );//where to make the sprite appear on y axis
WRITE_COORD( pev->origin.z + 128 );//Creates sprite 128 units above model's center
WRITE_SHORT( PRECACHE_MODEL( "sprites/fexplo.spr" ) );//Name of the sprite to use, as defined at begining of tut
WRITE_BYTE( 400 ); // scale in .1 units --by comparison the player is 72 units tall
WRITE_BYTE( 255 ); // brightness (this is as bright as it gets)
MESSAGE_END();
UTIL_Remove( this );
}
killit = 0;
в функцию взрыва гранаты CGrenade::Explode( TraceResult *pTrace, int bitsDamageType )
вопрос как исправить эту големотью ?
__________________
илья
Отправлено Napoleon321 25-04-2022 в 22:46:
I think you're using too many TEMPENTITY-es. Try reducing them.
btw: are you making a nuke launcher?
__________________
FlatLine Arena | Tutorials
If you don't like something, MOD it!
Отправлено Дядя Миша 26-04-2022 в 05:51:
Перед этим идёт еще какая-то мессага, у которой ты забыл вызвать MESSAGE_END();
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено илья2 26-04-2022 в 07:25:
ну все проблема легко решается сам справился во первых вместо
PRECACHE_MODEL( "sprites/white.spr" )
PRECACHE_MODEL( "sprites/fexplo.spr" )
надо поставить
m_iSpriteTexture
и
m_iExplode
еще надо поставить extern в grenade
extern short m_iSpriteTexture;
extern short m_iExplode;
и сам прекеш в weapons.cpp
DLL_GLOBAL short m_iSpriteTexture;
DLL_GLOBAL short m_iExplode;
m_iSpriteTexture = PRECACHE_MODEL("sprites/white.spr");
m_iExplode = PRECACHE_MODEL( "sprites/fexplo.spr" );
все все просто оказывается. Итог получилась ядерная граната
__________________
илья
Отправлено Napoleon321 26-04-2022 в 08:14:
Цитата:
илья2 писал:
все все просто оказывается. Итог получилась ядерная граната [/B]
Good job. So I was right you're making a nuke. , I would suggest you to put bigger throw distance for that grenade... else the player will get nuked by their own grenade.__________________
FlatLine Arena | Tutorials
If you don't like something, MOD it!
Отправлено илья2 26-04-2022 в 09:43:
Цитата:
Napoleon321 писал:
Good job. So I was right you're making a nuke. , I would suggest you to put bigger throw distance for that grenade... else the player will get nuked by their own grenade.
this is a test version, I just needed to insert a CYLINDERBEAM into a gluon grenade for a gluon cannon
Добавлено 26-04-2022 в 12:43:
о дядя миша а это случайно не ты говорил:
https://csm.dev/threads/dobovljaem-...hockwave.29503/
нельзя кэшировать модель в том месте где передаешь мессагу на клиент.
И уж тем более нежелательно объявлять её индекс как глобальную переменную.
ну теперь понятно почему ошибка вылазит__________________
илья
Отправлено Дядя Миша 26-04-2022 в 12:10:
Цитата:
илья2 писал:
о дядя миша а это случайно не ты говорил:
Аватар совпадает, ник совпадает, ну разумеется это кто угодно, но только не я.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Crystallize 26-04-2022 в 17:35:
илья2 меня впечатляет твой прогресс, на самом деле.
Отправлено илья2 26-04-2022 в 17:54:
Цитата:
Crystallize писал:
илья2 меня впечатляет твой прогресс, на самом деле.
Да это просто опыт. Когда очень много занимаешься одним и тем же, со временем набирается опыт, и ты уже сам знаешь, как и что делать. А как всем известно, опыт круче знаний .__________________
илья
Отправлено hgrunt_2020 02-05-2022 в 03:08:
Непонятно откуда взявшийся ACT 23
после того как я добавил SetActivity для барни у меня в консоли начала вылазить ошибка
monster_barney has no sequence for act:23
что с ней делать и как её починить?
Добавлено 02-05-2022 в 06:08:
Вот функция
C++ Source Code:
1 | void CBarney :: SetActivity ( Activity NewActivity ) |
3 | int iSequence = ACTIVITY_NOT_AVAILABLE; |
4 | void *pmodel = GET_MODEL_PTR( ENT(pev) ); |
9 | if ( pev->health <= BARNEY_LIMP_HEALTH ) |
12 | iSequence = LookupActivity ( ACT_RUN_HURT ); |
16 | iSequence = LookupActivity ( NewActivity ); |
20 | if ( pev->health <= BARNEY_LIMP_HEALTH ) |
23 | iSequence = LookupActivity ( ACT_WALK_HURT ); |
27 | iSequence = LookupActivity ( NewActivity ); |
31 | if ( m_MonsterState == MONSTERSTATE_COMBAT ) |
33 | NewActivity = ACT_IDLE_ANGRY; |
35 | iSequence = LookupActivity ( NewActivity ); |
38 | iSequence = LookupActivity ( NewActivity ); |
42 | m_Activity = NewActivity; // Go ahead and set this so it doesn't keep trying when the anim is not present |
44 | // Set to the desired anim, or default anim if the desired is not present |
45 | if ( iSequence > ACTIVITY_NOT_AVAILABLE ) |
47 | if ( pev->sequence != iSequence || !m_fSequenceLoops ) |
52 | pev->sequence = iSequence; // Set to the reset anim (if it's there) |
58 | // Not available try to get default anim |
59 | ALERT ( at_console, "%s has no sequence for act:%d\n", STRING(pev->classname), NewActivity ); |
60 | pev->sequence = 0; // Set to the reset anim (if it's there) |
__________________
И главное, Артём, помни: не ешь желтый снег!
Отправлено Ku2zoff 02-05-2022 в 04:55:
hgrunt_2020 это ACT_SIGNAL3, CTalkMonster используют эту активность во время разговора. Подразумевается кивок головой или какое-то другое движение, например жест рукой. Т.к. в моделях барника и учёного такой активности нету, сделана проверка. Видимо, планировалась целая куча анимаций во время разговора, но что-то пошло не так, и от этого отказались. Добавь проверку в CBarney::SetActivity, проблема исчезнет.
C++ Source Code:
if (NewActivity == ACT_SIGNAL3 && (LookupActivity(ACT_SIGNAL3) == ACTIVITY_NOT_AVAILABLE)) |
Это вставь в самое начало функции.
Отправлено hgrunt_2020 02-05-2022 в 05:14:
Ku2zoff О,спасибо. только все же остается вопрос, у меня ни в SetActivity ни в модели нет ACT_SIGNAL3, что же тогда источник ошибки
__________________
И главное, Артём, помни: не ешь желтый снег!
Отправлено Дядя Миша 02-05-2022 в 06:21:
Цитата:
hgrunt_2020 писал:
что с ней делать и как её починить?
Нету такой анимации в модели в Барни.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 02-05-2022 в 07:08:
Цитата:
hgrunt_2020 писал:
что же тогда источник ошибки
То, что такой активности нет в модели - и есть источник ошибки. В базовом классе CTalkMonster в SetActivity есть проверка на её отсутствие, а в классе CHGrunt, откуда ты скопировал барнику SetActivity, нет.
C++ Source Code:
1 | void CTalkMonster :: SetActivity ( Activity newActivity ) |
3 | if (newActivity == ACT_IDLE && IsTalking() ) |
4 | newActivity = ACT_SIGNAL3; |
6 | if ( newActivity == ACT_SIGNAL3 && (LookupActivity ( ACT_SIGNAL3 ) == ACTIVITY_NOT_AVAILABLE)) |
7 | newActivity = ACT_IDLE; |
9 | CBaseMonster::SetActivity( newActivity ); |
Если внимательно посмотришь таски CTalkMonster, то найдёшь там много вызовов { TASK_SET_ACTIVITY, (float)ACT_SIGNAL3 }. Как раз во время разговоров. Что интересно, даже у учёных нет такой активности. Или вэлв не наделали анимаций, или что-то пошло не так, например жестикуляция при каждой фразе выглядела странно, и они воткнули в код заглушку.