HLFX.Ru Forum
Показать все 11 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Проблема с func_tracktrain'ами (https://hlfx.ru/forum/showthread.php?threadid=3653)


Отправлено FreeSlave 21-10-2012 в 13:00:

Half-Life Проблема с func_tracktrain'ами

https://dl.dropbox.com/u/40401686/train_test_a.rmf
https://dl.dropbox.com/u/40401686/train_test_b.rmf

Суть: есть две карты, назовем их A и B.

1. Игрок садится на поезд на карте A.
2. Загружается карта B
3. Поезд едет по карте B
4. Поезд останавливается и снова загружается карта A, но игрок уже находится в другой её части.
5. Игрок делает что-то хорошее в этой части карты A и возвращается к поезду.
6. Загружается карта B
7. Поезд едет в обратном направлении

Так как с обратным направлением в HL беда (можно задать отрицательную скорость, однако при вызове поезда он всё равно до следующего path_track'а будет ехать в соответствии со знаком своей собственной скорости (плюс - вперед, минус - назад), я решил схитрить и заменить поезд на другой, с соответствующим направлением, пока игрок делает "что-то хорошее" в пункте 5. Т.е. по возвращении всё выглядит так, будто ничего и не изменилось.
Но появляется совсем непонятная проблема - в одном из двух случаев первый поезд не желает уезжать с глаз долой в своём направлении и выбирает path_track второго; второй же наоборот предпочитает развернуться и пойти по пути, предназначенном для первого. path_track'и я не раз проверял - эти два пути никак не пересекаются.

По ссылкам две карты, показывающие мой план. Для проверки нужно загрузить train_test_a и сесть в ближний поезд, проехаться так через карту B вновь на карту A и там нажать кнопку. Снова сесть на поезд (уже второй). Перед нажатием кнопки лучше сохраниться, так как глюк появляется не всегда - иногда поезда всё-таки едут в правильных направлениях.

Второй поезд обычно едет в неверном направлении, когда игрок стоит в определенном месте - где-то около места для инвалидов.


Отправлено FreeSlave 21-10-2012 в 18:31:

Решил пойти другим путем. Теперь использую один поезд и развилку. На одной карте всё нормально, но при разделении на две возникает проблема - поезд не понимает развилку.

https://dl.dropbox.com/u/40401686/train_test_.rmf - отдельная карта, где всё работает (нужно нажать кнопку и поезд едет в обратном направлении)

https://dl.dropbox.com/u/40401686/train_test.rmf и https://dl.dropbox.com/u/40401686/train_test_2.rmf - две соединенные карты. После нажатия кнопки нужно сесть в поезд, он поедет обратно, но тем же путем, что и приехал (т.е. не по развилке) и потом зациклится - собственно, здесь и проблема.


Отправлено Дядя Миша 21-10-2012 в 18:53:

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено FreeSlave 21-10-2012 в 20:05:

На "одинокой" карте развилка работает нормально.

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


Отправлено Дядя Миша 21-10-2012 в 20:21:

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено FreeSlave 21-10-2012 в 20:28:

У поезда стоит давно. У path_track'ов глобал неймов нет, по крайней мере в моем fgd. В коде, кажется, тоже.


Отправлено Дядя Миша 21-10-2012 в 20:40:

Цитата:
FreeSlave писал:
В коде, кажется, тоже.

оно не там где ты думаешь. Глобальные имена можно проставлять всем объектам кроме конечно игрока и ворлдспавна.

__________________
My Projects: download page

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

Цитата:

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


Отправлено FreeSlave 21-10-2012 в 21:19:

Отключил smart edit и прописал глобальные имена каждому path_track'у - не помогло.
Кажется, я понял в чем проблема - поезд идет на развилку лишь после того, как пересекает path_track с альтернативным путем (Хотя на карте train_track_ работает нормально). Пока не знаю, как исправить в данном случае.


Отправлено -=DrTressi=- 22-10-2012 в 07:22:

FreeSlave А ты HL или XashXT юзаешь?

Если КсашХТ, то патч_трэки можно смело заменить патч_корнерами) У меня недавно похожая проблема была.

__________________
How interesting, just look at that!
© Scientist


Отправлено FreeSlave 04-11-2012 в 12:10:

Обычный HL.

Вернулся к проблеме, боролся, боролся и кое-что понял. Почему-то после повторной активации поезд первым делом возвращается на точку p0. Сначала думал, что это из-за того, что p0 прописана у поезда в First Stop Target. Сделал другой First Stop Target - безрезультатно, поезд упорно едет в p0. Сделал промежуточный path_track между p1 и p0 - поезд всё равно сначала едет в p0, затем возвращается назад до точки с развилкой и едет как надо. В чем магия?

Перезалил train_test и train_test_2. По тем же ссылкам.


Отправлено FreeSlave 05-11-2012 в 11:31:

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

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


Временная зона GMT. Текущее время 18:43.
Показать все 11 сообщений этой темы на одной странице

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