HLFX.Ru Forum Страницы (2): [1] 2 »
Показать все 21 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Кручёная загадка от valve (https://hlfx.ru/forum/showthread.php?threadid=4978)


Отправлено ~ X ~ 25-03-2017 в 08:02:

Question Кручёная загадка от valve

Всем бодрого утра.
Суть такова: на карте c0a0b есть тот самый крутой шлюз из трёх func_door_rotating.

http://pix.academ.info/img/2017/03/25/cf84686347278c4e8f097e30295444bb.png

Вопрос: как игра определяет, в какую сторону вращаются двери справа и слева?

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 25-03-2017 в 08:37:

~ X ~
Дизайнер задаёт сторону, используя флаги "One-way" и "Reverse dir", не?

__________________

xaerox on Vivino


Отправлено Skaarj 25-03-2017 в 08:55:

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


Отправлено ~ X ~ 25-03-2017 в 09:29:

XaeroX как видишь, здесь it's not the case Я специально сделал дамп энтитей. Если не веришь, сделай сам.

Skaarj с открыванием от игрока - это ясно, в двери это запрограммировано явно. Я даже пофиксил это с "игрок повёрнут в сторону" на "игрок движется в сторону", а то получалось что спиной дверь на себя тянешь. Но здесь таких флагов нет.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 25-03-2017 в 09:45:

~ X ~
Я не понимаю, что тебя смущает. То, что двери открываются в разные стороны? Так это очевидно из кода, а именно из фрагмента:

C++ Source Code:
1
if ( !FBitSet( pev->spawnflags, SF_DOOR_ONEWAY ) && pev->movedir.y ) 		// Y axis rotation, move away from the player
2
{
3
  Vector vec = pevActivator->origin - pev->origin;
4
  Vector angles = pevActivator->angles;
5
  angles.x = 0;
6
  angles.z = 0;
7
  UTIL_MakeVectors (angles);
8
  //			Vector vnext = (pevToucher->origin + (pevToucher->velocity * 10)) - pev->origin;
9
  UTIL_MakeVectors ( pevActivator->angles );
10
  Vector vnext = (pevActivator->origin + (gpGlobals->v_forward * 10)) - pev->origin;
11
  if ( (vec.x*vnext.y - vec.y*vnext.x) < 0 )
12
    sign = -1.0;
13
}

Мысленно построй векторы vec и vnext, и ты увидишь, что z-компонента их векторного произведения отличается знаком.

__________________

xaerox on Vivino


Отправлено ~ X ~ 25-03-2017 в 11:22:

Меня смущают абсолютно одинаковые key/value у этих "дверей". А активируются они path_track'ом.

XaeroX т.е. по-твоему на c0a0b игрок толкает двери?
Кто-нибудь может порпобовать запустить эту карту под ХЛ и посмотреть, что будет, если к двери стоять спиной?

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 25-03-2017 в 11:26:

Цитата:
~ X ~ писал:
по-твоему на c0a0b игрок толкает двери?

Ты решил поиграть в еврея и таки отвечать вопросом на вопрос?

__________________

xaerox on Vivino


Отправлено Дядя Миша 25-03-2017 в 13:00:

Цитата:
~ X ~ писал:
Вопрос: как игра определяет, в какую сторону вращаются двери справа и слева?

Да никак не определяет. Там левел-дизайнеру порукам дать надо. В ксаш-моде это говно в итоге и вылезло. Тот старый код определения куда надо открывать дверь неправильный. Но в данном конкретном случае он срабатывал как надо.

Цитата:
~ X ~ писал:
Кто-нибудь может порпобовать запустить эту карту под ХЛ и посмотреть, что будет, если к двери стоять спиной?

Причём тут спина? Находится плоскость двери и определяется где игрок - перед плоскостью или за плоскостью. Но прикол в том, что код срабатывает не на игрока, а на активатор, а активатором в данном случае выступает какая-то логическая энтить, может быть мультиманагер к примеру. Вот оно вроде бы и работает правильно, а на самом конечно деле - ничего подобного.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 25-03-2017 в 14:39:

XaeroX я таки решил узнать таки почему ты считаешь что там имеет значение положение игрока.

Цитата:
Дядя Миша писал:
В ксаш-моде это говно в итоге и вылезло

я ждал этого ответа, спасибо

Цитата:
Дядя Миша писал:
Причём тут спина?

ну, при том что ксероксы постят страшные коды:
Цитата:
XaeroX писал:
Vector angles = pevActivator->angles;


В общем, на вопрос практически ответили.
Я ожидал чуть более бурной реакции на такую мистику. (
И, да, левелдизайнеру надо дать по рукам. Молотком. Из-за одгоно targetname на все три двери, я не могу сделать патч. А писать идиотизмы как в SoHL типа if (mapname == "c100a500") { Find("lockeddoor")->Destroy(); } - это хуже всего.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 25-03-2017 в 14:41:

Активатор - это тот, кто ближе всего по цепочке. А там в этой роли мульти_манагер. Углы у него тоже есть, равны 0 0 0. Передвинь его за ворота и запоры начнут открываться в другую сторону.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 25-03-2017 в 14:45:

Цитата:
~ X ~ писал:
я таки решил узнать таки почему ты считаешь что там имеет значение положение игрока.

Ты поиздеваться решил, что ли? Покажи в моих постах в этой теме слово "игрок".
Цитата:
~ X ~ писал:
Я ожидал чуть более бурной реакции на такую мистику

Там не мистика, просто несколько запутанный код, особенно для людей с плохим пространственным представлением.

__________________

xaerox on Vivino


Отправлено ~ X ~ 25-03-2017 в 15:15:

XaeroX ты не говорил что pevActivator - не игрок. Я предположил что как раз так.
Для мапперов это настоящая мистика т.к. никто и нигде не ожидает, что двери с одними и теми же key/value будут вести себя по-разному без какой-либо видимой причины. За такой undefined behavior надо линчевать на bsp-дереве.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 25-03-2017 в 15:25:

Цитата:
Дядя Миша писал:
Передвинь его за ворота и запоры начнут открываться в другую сторону.

Ого. Ничего себе подробности. Для маппера тут конкретная засада. Он ведь не видит код, и не знает, откуда берутся углы. С одной стороны, это удобно, но с другой... Можно месяц ломать голову, почему они открываются в другую сторону, пока не разместишь мульти_манагер относительно ворот так же, как и в оригинале. Правда, до этого ещё додуматься надо.

Добавлено 25-03-2017 в 22:25:

Цитата:
XaeroX писал:
____UTIL_MakeVectors ( pevActivator->angles );
____Vector vnext = (pevActivator->origin + (gpGlobals->v_forward * 10)) - pev->origin;

Ага, вот оно. Я эту заразу сразу же переписал, чтобы игрок мог открывать двери, двигаясь жопой вперёд. Просто, когда я попробовал в своём моде погамать на карте cs_oldmansion, я заметил, что если игрок пятится, дверь всё равно открывается в направлении его взгляда. А в кс можно двери жопой открывать в правильном направлении


Отправлено ~ X ~ 25-03-2017 в 15:27:

Ku2zoff а двойная засада в том, что в XDM, например, это пофикшено и хак не прокатит. Тройная в том, что кто-нибудь обязательно обвинит меня в саботаже.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 25-03-2017 в 15:30:

Цитата:
~ X ~ писал:
Тройная в том, что кто-нибудь обязательно обвинит меня в саботаже.

Ты не обижайся, но XDM сам по себе почти сплошной саботаж Столько всего переписано, шопипец. Однако, экономия траффика и быстродействие по сети налицо.


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

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