HLFX.Ru Forum Страницы (12): « Первая ... « 3 4 5 6 [7] 8 9 10 11 » ... Последняя »
Показать все 178 сообщений этой темы на одной странице

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=4629)


Отправлено Chyvachok 15-09-2015 в 21:29:

Цитата:
Ku2zoff писал:
Скорее уж читает рэп и рукой машет


Или как будто ему в зад осиновый кол забили


Отправлено Ghoul [BB] 16-09-2015 в 07:53:

Забивать в зад кол .... ну каждый в меру своей испорченности видит этот мир.

Но все равно с говном связано

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

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


Отправлено XaeroX 16-09-2015 в 08:08:

Ghoul [BB]
Да что у тебя всё к говну сводится постоянно?


Отправлено thambs 16-09-2015 в 12:25:

>Что там вообще интересного?
monster_hostage

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Ghoul [BB] 16-09-2015 в 16:25:

Цитата:
XaeroX писал:
Да что у тебя всё к говну сводится постоянно?


Ну потому что это хлеб наш... сладкий. И жизнь наша вся такая.. и вообще вот про говно такая история есть:

За говно.
Да. Это один из врубов про говно. В каком-то виде это уже было, но здесь другое. Вот смотрите - Джа созаёт мир. Хороший. Растамана и растаманку, а потом ещё растаманов, а потом зверей и пр. и пр. Но никакого говна Джа не создаёт. Вы спросите "Как так? Ведь мы с вами каждый день делаем его." Вот тут то и загвоздка - это совсем не говно. "Говно" это имя злого духа. Этот злой дух скорее всего возник из какой-то ссоры растаманов, так бывает, растаманы конечно же потом помирились. Да. Но появляется такой вот дух, и первое что он делает это называет какашки своим грубым именем (а потом ещё и многое другое). То есть представить это можно так - раста идёт в туалет, делает доброе дело, а потом смотрит на какашки.. а невидимый злой дух ему говорит - "это Говно!" Здесь очень коварный замысел Говнова - он прикасается к расте.. и раста начинает видеть что это ужас какой-то из него вышел - и название подходящее сразу появилось в уме - "Говно!". И в общем поверил раста такому и начал каждый раз при посещении туалета так и думать - "Гавно какое - то". И таким образом он каждый раз в туалете призывал этого демона. И Гавнов являлся. И творил говно. И говна становилось больше в мире. И в общем получилось то что мы сейчас иногда видим. И вот вывод из этого вруба - видя какашку подумайте о ней хорошо и скажите ей пару добрых "привет! давно не виделись дружище, как твоё здоровье?" и тогда.. в нашем мире постепенно всё наладится

Добавлено 16-09-2015 в 19:25:

Цитата:
thambs писал:
monster_hostage



Не только. Еще забыааешь машинки. Еще режим дефьюз. Еще вот покупка. Да много чего еще. Это я на вскидку.

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

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


Отправлено Ku2zoff 16-09-2015 в 16:56:

UPD: с переключением анимаций на сервере вроде разобрался. Барник всё делает как надо. Нет залипаний секвенции или гейтсеквенции, или отсутствия переключения активностей. Даже пофиксил грязным хаком страшное раскачивание верхней половины модели, когда нижняя играет ту же анимацию, а кадры не совпадают. Ждите, немного потестирую и покажу видео.
З.Ы. А в свенкоопе барник не умеет на бегу стрелять

Добавлено 16-09-2015 в 22:51:



Добавлено 16-09-2015 в 22:56:

Что скажете? По-моему уже вполне годно. Надо только подкрутить константы расстояния, и поправить скедьюлы атаки. Ну ещё от хака на клиенте избавиться, и серверный гейт заанимировать, чтобы хитбоксы совпадали. Я это на потом отложу, а пока запилю хьюман_грантов, стреляющих на бегу. Заодно научу их ходить за игроком, как в опфоре. Давно хочу это грамотно сделать, а не так коряво, как в 2008 году накодил.


Отправлено Chyvachok 16-09-2015 в 17:41:

Очень класно, супер, надо его еще назад пятиться научиться, кстати прикольно вышло что он подходит к врагу, насчет врагов, конечно оно врядли к стрельбе на бегу относиться, было бы прикольно чтобы обстреляные враги уходили от обстрела и прятались где-то, если они не могут до игрока достать.


Отправлено XaeroX 16-09-2015 в 17:49:

Цитата:
Chyvachok писал:
Очень класно, супер, надо его еще назад пятиться научиться

+1, он должен уметь отбегать от монстров с ближней атакой. Иначе тот факт, что он подходит близко, сыграет с ним злую шутку.


Отправлено PLut 16-09-2015 в 17:59:

Ku2zoff Стрельба на бегу, конечно - это слишком, но когда барни идет и расстреливает зомби, то выглядит это эпично, в лучших традициях боевиков. Плюсую ораторов выше, хотелось бы увидеть как барник/грант отходят от милишных монстров.

...ну и, быть может, стрейфы?

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 16-09-2015 в 18:12:

Цитата:
PLut писал:
Плюсую ораторов выше, хотелось бы увидеть как барник/грант отходят от милишных монстров.

Тут загвоздка... Монстр движется только в том направлении, в которое повёрнут по оси YAW. Алиен_контроллеры конечно могут стрейфиться, пятиться и вообще всякое делать. Надо копать код движения однозначно. Видимо, придётся мне барника до идеала допиливать. Попробовал сделать грантов, стреляющих при ходьбе и на бегу - тихий ужас. Функция SetActivity у них ужасная, и модель тоже - активности не ко всем анимациям указаны. В результате всё глючит, секвенции и гейтсеквенции залипают. Ещё блендинг почему-то корявый - модель смотрит в пол, когда стреляет в движении. В общем, не до этого пока.
Цитата:
PLut писал:
...ну и, быть может, стрейфы?

Анимацый нету. Только у хьюгрантов есть стрейфы. Как заставить работать модель, у которой к половине анимаций не указаны ACT_ы, и эти анимации выбираются в коде монстра по имени, я пока ХЗ.


Отправлено XaeroX 16-09-2015 в 18:22:

Цитата:
Ku2zoff писал:
Анимацый нету.

А ты сделай контроллеры и gaityaw.


Отправлено Ku2zoff 16-09-2015 в 18:50:

Цитата:
XaeroX писал:
А ты сделай контроллеры и gaityaw.

Я запарился делать, уже глаза красные. Не могу заставить этого чукчу пятиться не поворачиваясь. Какие уж тут контроллеры. Ну в задницу этот убогий код. Всё равно до уровня хл2 не доделать.


Отправлено PLut 16-09-2015 в 19:04:

Ku2zoff Ну, не всё же сразу. Твоя работа - уже огромный прогресс!

__________________
Base Defense on Steam, ModDB


Отправлено Ghoul [BB] 16-09-2015 в 23:08:

Цитата:
Ku2zoff писал:
З.Ы. А в свенкоопе барник не умеет на бегу стрелять



А у нас будет. Да!

Кстати, про стрельбу. Где находится ограничение расстояние выстрела для монстров? Хотел сделать снайперов, чтоб били через всю карту, а они тупо не видят игрока... И расстояние что-то около 1000 юнитов, с которого начинают суетиться.

Вот, кстати, еще было бы интересно реализовать такую фишку, чтоб p_mdl оружия монстрам рисовать (а не пихать несколько субмоделей, как сейчас у солдатни есть)

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

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


Отправлено Ku2zoff 17-09-2015 в 10:28:

Ghoul [BB] смотри, во-первых, в самом коде монстра константы в функции CheckRangeAttack1. Во вторых, если есть, гляди кейс SCHED_RANGE_ATTACK1 в функции GetScheduleOfType. И в третьих, смотри код самих скедьюлов, которые называются slGruntRangeAttack1A, slGruntRangeAttack1B (у хьюгранта такие, у твоего снайпера могут быть другие). В коде скедьюла, во втором блоке, то есть в самом скедьюле (первый блок это таск - описание последовательности действий, а второй это скедьюл - описание условий, которые могут прервать выполнение таска). Смотри флаг bits_COND_ENEMY_TOOFAR. Если этот флаг есть в скедьюле, то скедьюл будет фейлиться, если игрок от монстра находится на расстоянии, большем, чем m_flDistTooFar. m_flDistTooFar по-умолчанию равен 1024 юнита, это значение задаётся в функции CBaseMonster::MonsterInit(). Но, думаю, его можно оверрайдить в спауне монстра, просто указав нужное значение после вызова MonsterInit().

Добавлено 17-09-2015 в 12:25:

Граждане, помогите мне вот с какой бедой: придумайте мне условие переключения секвенций. С гейтсеквенциями очень просто:

C++ Source Code:
if ((iSequence != pev->gaitsequence) && (iSequence == LookupActivity(m_movementActivity)))
  pev->gaitsequence = iSequence;

Если новая анимация не совпадает с текущей гейтсеквенцией и является двигательной активностью, то есть ACT_WALK, ACT_RUN, ACT_IDLE и т.д., то переключаем.
С секвенциями всё сложнее. Загнать обратное условие не выйдет, т.к. иногда секвенция должна совпадать с гейтсеквенцией, то есть быть m_movementActivity, когда монстр бежит и не стреляет. У барника условие немного другое, для него работает. Правда, из-за этого происходят паузы в стрельбе, на последнем видео видно.

Добавлено 17-09-2015 в 16:03:

Цитата:
Ghoul [BB] писал:
Вот, кстати, еще было бы интересно реализовать такую фишку, чтоб p_mdl оружия монстрам рисовать (а не пихать несколько субмоделей, как сейчас у солдатни есть)

Ну ё-маё.. Ну чё там реализовывать? pev->weaponmodel для монстров прекрасно передаётся по сети. По крайней мере в оригинальной халфе. В XDM я не смотрел, возможно тов. ~X~ закомментил строчки в коде и в delta.lst, чтобы трафик сэкономить. Берёшь на клиенте условие
C++ Source Code:
1
if (pplayer->weaponmodel)
2
{
3
  cl_entity_t saveent = *m_pCurrentEntity;
4
 
5
  model_t *pweaponmodel = IEngineStudio.GetModelByIndex( pplayer->weaponmodel );
6
 
7
  m_pStudioHeader = (studiohdr_t *)IEngineStudio.Mod_Extradata (pweaponmodel);
8
  IEngineStudio.StudioSetHeader( m_pStudioHeader );
9
 
10
  StudioMergeBones( pweaponmodel);
11
 
12
  IEngineStudio.StudioSetupLighting (&lighting);
13
 
14
  StudioRenderModel( );
15
 
16
  StudioCalcAttachments( );
17
 
18
  *m_pCurrentEntity = saveent;
19
}

из int CStudioModelRenderer::StudioDrawPlayer( int flags, entity_state_t *pplayer ), и копируешь его в int CStudioModelRenderer::StudioDrawModel( int flags ) с такими изменениями:
C++ Source Code:
1
if (!m_pCurrentEntity->player && m_pCurrentEntity->curstate.weaponmodel)
2
{
3
  cl_entity_t saveent = *m_pCurrentEntity;
4
 
5
  model_t *pweaponmodel = IEngineStudio.GetModelByIndex(m_pCurrentEntity->curstate.weaponmodel);
6
 
7
  m_pStudioHeader = (studiohdr_t *)IEngineStudio.Mod_Extradata(pweaponmodel);
8
  IEngineStudio.StudioSetHeader(m_pStudioHeader);
9
 
10
  StudioMergeBones(pweaponmodel);
11
 
12
  IEngineStudio.StudioSetupLighting(&lighting);
13
 
14
  StudioRenderModel();
15
 
16
  StudioCalcAttachments();
17
 
18
  *m_pCurrentEntity = saveent;
19
}

Фсё. Остаётся только на сервере в коде монстра заменить SetBodygroup на pev->weaponmodel = MAKE_STRING("имямодели"). Кажется MAKE_STRING, а не что-то другое. Я когда-то делал для барников аж целых две веапонмодели - один пистолет на бедре, а другой в руках. Но это метод удобен только когда у монстра всего лишь одно оружие. Если, к примеру, научить монстра оружия менять (одно убирать на пояс или за спину и доставать другое), начнётся аццкий геморрой. С чем я столкнулся, пытаясь обвесить игрока четырьмя оружиями: pev->vuser1.x - первое, vuser1.y -второе, vuser1.z - третье, pev->weaponmodel - активное в руках. При доставании какого либо оружия, его vuser1.ЦЫФРА освобождается, на свободную цифру вешается убираемое текущее, а доставаемое занимает, как положено pev->weaponmodel. Слишком много кодерской писанины ради сомнительной фичи.

Добавлено 17-09-2015 в 16:23:

Цитата:
Ghoul [BB] писал:
Еще забыааешь машинки.

Кощьмарнэ энтитя, тащем-то. Там исправлять и исправлять. Чего только коллизия стоит. Буэээ...
Цитата:
Ghoul [BB] писал:
Еще режим дефьюз.

Да ну. В принципе, всё достаточно просто:
1. Проверяем, находится ли игрок внутри триггера закладки бомбы.
2. Проверяем, чтобы игрок стоял на браше, а не висел в воздухе, или стоял на голове другого игрока.
3. Проверяем, чтобы игрок не двигался.
4. Проверяем, чтобы внутри триггера были именно ноги игрока, а не голова или что-то другое... Видел, как в каэсочке задроты ставят бомбу в каком-нибудь недоступном закутке, зацепив самый краешек триггера, который к тому же находится на высоте взгляда игрока.
5. Проверяем расстояние от центра триггера до игрока. Тогда можно пропустить четвёртый пункт. Можно конечно создать "круглый" триггер в хаммере.
6. Разрешаем минировать.

А разминирование ещё проще:
1. Когда игрок юзает бомбу - фризим его и запрещаем прыгать, переключать оружие и т.д.
2. Бомба испытывает юзанье определённое время. Если прервать на середине, можно сбросить прогресс, а можно оставить для реалистичности.
3. Бомба разминирована.
Цитата:
Ghoul [BB] писал:
Еще вот покупка.

ВГУИ менюшки и команды управления ими делаем строго на клиенте, чтобы при высоком пинге закупка не тормозила. То есть она всё равно будет тормозить, но переключение между меню будет без лагов. При выборе нужного предмета в "магазине" отправляем на сервер команду "buy наш_ствол". Вот тут и будет лаг, но всего лишь один, а не так как в кс, когда при переключении меню лаг.
Цитата:
Ghoul [BB] писал:
Да много чего еще.

Самое интересное в кс - это боты. К счастью, почти весь их код доступен вместе с ХЛСДК на гитхабе. Надо только зареверсить те участки кода mp.dll, где они внедрены в сервер. Моя голубая мечта - встроить каэсных ботов в хлдм и модифицировать, добавив самообучение из паработов, которое будет постоянно обновляться. То есть, основная навигация и всякие зоны строятся один раз при первом запуске ботов на карте. А потом боты учатся у игроков всяким трюкам. Ну и учатся на чужих ошибках.

Добавлено 17-09-2015 в 16:28:

Вообще, самые умные в плане геймплея боты, которых я видел, это паработ и джамбот (десматч), збот (дефьюз, спасение заложников) и фоксбот (ЗФ). Хотя любые из них довольно плохо работают в команде.


Временная зона GMT. Текущее время 22:00. Страницы (12): « Первая ... « 3 4 5 6 [7] 8 9 10 11 » ... Последняя »
Показать все 178 сообщений этой темы на одной странице

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