HLFX.Ru Forum Страницы (2): [1] 2 »
Показать все 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)


Отправлено Andrei 13-06-2014 в 17:25:

Алгоритм монстров.

Здравствуйте. Помогите разобрать как двигаются монстры. Хочу на кс1.6 создать монстрика.

Начал сам разбираться, застрял на построении , поставил movetype STEP, монстр невидимкой стал О_о А так обычно стоит PUSHSTEP


Отправлено XaeroX 13-06-2014 в 18:06:

Pushstep - это для ящиков.
Монстры двигаются очень просто. Есть точка начала, есть точка конца пути. Они протаскиваются между этими точками трассой по хуллу. Если не могут протащиться - пытаются триангулировать обход препятствия. Ну и плюс отдельный код, чтобы по ступенькам подниматься. Вот и вся хитрость, тащемта.

__________________

xaerox on Vivino


Отправлено Andrei 13-06-2014 в 18:23:

Цитата:
XaeroX писал:
триангулировать обход препятствия


Это интересует.

И

Цитата:
XaeroX писал:
Ну и плюс отдельный код, чтобы по ступенькам подниматься.


А в чем проблема, то, что зомбак невидимый ?

C++ Source Code:
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
}


Отправлено XaeroX 13-06-2014 в 18:41:

Цитата:
Andrei писал:
Это интересует.

Этот код есть в серверной библиотеке.
Цитата:
Andrei писал:
А в чем проблема, то, что зомбак невидимый ?

Проверь pEntity->v.effects, может, там EF_NODRAW стоит?
Ну и rendermode заодно.

__________________

xaerox on Vivino


Отправлено Andrei 13-06-2014 в 19:08:

Всё равно невидимко:

C++ Source Code:
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
}


Цитата:
XaeroX писал:
Этот код есть в серверной библиотеке.


А можно конкретней ?


Отправлено XaeroX 13-06-2014 в 19:27:

Цитата:
Andrei писал:
А можно конкретней ?

Find in files -> "Triangulate"
Цитата:
Andrei писал:
Всё равно невидимко:

SET_ORIGIN ещё надо бы добавить.

__________________

xaerox on Vivino


Отправлено Andrei 13-06-2014 в 19:43:

Спасиб. А ступеньки ? С SET_ORIGIN ничего не изменилось.


Отправлено XaeroX 13-06-2014 в 20:10:

Ступеньки автоматически, если MOVETYPE_STEP стоит.

pEntity->v.modelindex = g_iModelIndex; - а вот это зачем? Ты же уже вызвал SET_MODEL.

__________________

xaerox on Vivino


Отправлено Andrei 13-06-2014 в 20:54:

Убрал.. Ничего не изменилось.

Я это ставил, мол типа сказали попробуй, вдруг поможет и забыл убрать.


Отправлено XaeroX 13-06-2014 в 21:12:

Да, загадка.
Я всегда подозревал, что эти метамод-хаки до добра не доведут.

__________________

xaerox on Vivino


Отправлено Ghoul [BB] 13-06-2014 в 21:27:

Может, потому не видно, что в КС 1.6 монстры вырезаны? Это мультиплерный мод.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено XaeroX 13-06-2014 в 21:47:

Ghoul [BB]
Ну так он своего монстра кодит.
Понятно, что в кс вырезаны.

__________________

xaerox on Vivino


Отправлено Ghoul [BB] 14-06-2014 в 12:08:

Так под контру исходников нету...

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено XaeroX 14-06-2014 в 12:29:

Ghoul [BB]
Ты из какого года вылез? Из 2002-го?

__________________

xaerox on Vivino


Отправлено Ku2zoff 14-06-2014 в 14:14:

Да там скорее всего что-то наговнокодено в AddToFullPack и передаче энтварсов. А вполне возможно, что в клиентке, коде рисования моделек. Там вроде как продвинутый предиктинг для игрока. А вообще:

Цитата:
Andrei писал:
edict_t* pEntity = CREATE_NAMED_ENTITY( ALLOC_STRING( "info_target" ) );

SET_MODEL( pEntity, "models/barney.mdl" );
SET_SIZE( pEntity, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX );

pEntity->v.solid = SOLID_SLIDEBOX;
pEntity->v.movetype = MOVETYPE_STEP;

pEntity->v.modelindex = g_iModelIndex;
pEntity->v.health = pPlayer->v.health;
pEntity->v.max_health = pPlayer->v.health;
pEntity->v.origin = pPlayer->v.origin + gpGlobals->v_forward * 100;

pEntity->v.effects &= ~EF_NODRAW;
pEntity->v.rendermode = kRenderNormal;
pEntity->v.renderamt = 255;
pEntity->v.takedamage = DAMAGE_AIM;
pEntity->v.deadflag = DEAD_NO;

pEntity->v.nextthink = gpGlobals->time + 0.1;

Что это за ауно? Почему мы насильно делаем монстра из инфо_таргета? Инфо таргет у нас что? Правильно, CPointEntity. А монстр должен наследоваться от CBaseMonster. Не в этом ли затык? Может быть что-то специфическое для монстров пропущено. И эта, UTIL_SetOrigin где?


Временная зона GMT. Текущее время 14:52. Страницы (2): [1] 2 »
Показать все 28 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024