![]() |
Показать все 28 сообщений этой темы на одной странице |
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=4436)
Алгоритм монстров.
Здравствуйте. Помогите разобрать как двигаются монстры. Хочу на кс1.6 создать монстрика.
Начал сам разбираться, застрял на построении , поставил movetype STEP, монстр невидимкой стал О_о А так обычно стоит PUSHSTEP
Pushstep - это для ящиков.
Монстры двигаются очень просто. Есть точка начала, есть точка конца пути. Они протаскиваются между этими точками трассой по хуллу. Если не могут протащиться - пытаются триангулировать обход препятствия. Ну и плюс отдельный код, чтобы по ступенькам подниматься. Вот и вся хитрость, тащемта.
__________________
1 | void CZombie::Spawn( edict_t* pPlayer ) |
2 | { |
3 | edict_t* pEntity = CREATE_NAMED_ENTITY( ALLOC_STRING( "info_target" ) ); |
4 |
5 | SET_MODEL( pEntity, "models/barney.mdl" ); |
6 | SET_SIZE( pEntity, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX ); |
7 |
8 | pEntity->v.solid = SOLID_SLIDEBOX; |
9 | pEntity->v.movetype = MOVETYPE_STEP; |
10 |
11 | pEntity->v.modelindex = g_iModelIndex; |
12 | pEntity->v.health = pPlayer->v.health; |
13 | pEntity->v.origin = pPlayer->v.origin + gpGlobals->v_forward * 100; |
14 |
15 | pEntity->v.takedamage = DAMAGE_AIM; |
16 | pEntity->v.max_health = pPlayer->v.health; |
17 | pEntity->v.deadflag = DEAD_NO; |
18 |
19 | pPlayer->v.nextthink = gpGlobals->time + 0.1; |
20 | } |
__________________
Всё равно невидимко:
1 | void CZombies::Spawn( edict_t* pPlayer ) |
2 | { |
3 | edict_t* pEntity = CREATE_NAMED_ENTITY( ALLOC_STRING( "info_target" ) ); |
4 |
5 | SET_MODEL( pEntity, "models/barney.mdl" ); |
6 | SET_SIZE( pEntity, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX ); |
7 |
8 | pEntity->v.solid = SOLID_SLIDEBOX; |
9 | pEntity->v.movetype = MOVETYPE_STEP; |
10 |
11 | pEntity->v.modelindex = g_iModelIndex; |
12 | pEntity->v.health = pPlayer->v.health; |
13 | pEntity->v.max_health = pPlayer->v.health; |
14 | pEntity->v.origin = pPlayer->v.origin + gpGlobals->v_forward * 100; |
15 |
16 | pEntity->v.effects &= ~EF_NODRAW; |
17 | pEntity->v.rendermode = kRenderNormal; |
18 | pEntity->v.renderamt = 255; |
19 | pEntity->v.takedamage = DAMAGE_AIM; |
20 | pEntity->v.deadflag = DEAD_NO; |
21 |
22 | pEntity->v.nextthink = gpGlobals->time + 0.1; |
23 | } |
__________________
Спасиб. А ступеньки ? С SET_ORIGIN ничего не изменилось.
Ступеньки автоматически, если MOVETYPE_STEP стоит.
pEntity->v.modelindex = g_iModelIndex; - а вот это зачем? Ты же уже вызвал SET_MODEL.
__________________
Убрал.. Ничего не изменилось.
Я это ставил, мол типа сказали попробуй, вдруг поможет и забыл убрать.
Да, загадка.
Я всегда подозревал, что эти метамод-хаки до добра не доведут.
__________________
Может, потому не видно, что в КС 1.6 монстры вырезаны? Это мультиплерный мод.
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ghoul [BB]
Ну так он своего монстра кодит.
Понятно, что в кс вырезаны.
__________________
Так под контру исходников нету...
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ghoul [BB]
Ты из какого года вылез? Из 2002-го?
__________________
Да там скорее всего что-то наговнокодено в AddToFullPack и передаче энтварсов. А вполне возможно, что в клиентке, коде рисования моделек. Там вроде как продвинутый предиктинг для игрока. А вообще:
Ну так, по идее, какая разница, от кого монстр наследуется? Да, ходить и думать не будет, но рисоваться-то должен.
__________________
__________________
PRoSToTeM@, ничего не на продажу. Разрабатываю сервер для себя.
Andrei Есть уже такой плагин для кс, который может на карту ставить монстров из хл. Или вам нужны только некоторые?
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ghoul [BB]
Нет, я хочу сказать, что метамод изобрели давным-давно.
__________________
Я просто задал анимацию монстру и чудо, он появился. Проверил в монстр моде, если закоментить StudioFrameAdvance, то и монстер станет невидимый.
Если анима не задана, монстрик будет невидимый и только такая ситуация с мувтупом степ.
Добавлено 15-06-2014 в 19:43:
Если я верно понял:
Всё построено на анимации, выстрелы, бег и прочее.
Вся инфа храниться в структуре MonsterEvent_t.
Данные записываются в неё с GetAnimationEvent
А каким образом происходит работа в GetAnimationEvent ? То есть как монстер понимает когда ему бежать, когда ему атаковать ?
А в чем может быть проблема, что монстер иногда застревает ?
FTriangulate тут не сработал.
Выполняется:
if ( ShouldAdvanceRoute( flWaypointDist ) )///!!!BUGBUG- magic number |
{ |
printf( "ShouldAdvanceRoute %2.f\n", flWaypointDist ); |
AdvanceRoute( flWaypointDist ); |
} |
1 | if ( MovementIsComplete() ) |
2 | { |
3 | printf( "MovementIsComplete\n" ); |
4 | Stop(); |
5 | RouteClear(); |
6 | } |
__________________
Не, я просто тестирую монстер мод. Монстра zombie. Построил его и он погнал за мной. Бывает когда я за бочками, он не может найти путь ко мне и стоит на месте. Стоит выстрелить в него или выбежать, он опять меня находит.
В void CMBaseMonster :: Move ( float flInterval )
Косяк думаю в CheckLocalMove, а именно flWaypointDist = ( m_Route[ m_iRouteIndex ].vecLocation - pev->origin ).Length2D();
Вобщем даже когда я за бочками, он меня находит, обходит но вот иногда почему-то у него не выходит это сделать.
А как кстати вэйпоинты подключать?)
Временная зона GMT. Текущее время 17:41. | Показать все 28 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024