HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > NextThink для всех
разборки с движком
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


Half-Life NextThink для всех

Поскольку уже пару месяцев меня беспокоили просьбами запилить модели для всего и вся - возникла очередная халвопроблема. В первую очередь моделями надо было сделать поезда и кнопки. Но хедкрабец подкрался незаметно. Для брашей не работают вызовы по nextthink так, как работют для моделей, и наоборот. Потому - вопрос к знающим: как сделать универсально рабочую функцию?

C++ Source Code:
1
//-----------------------------------------------------------------------------
2
// Purpose: Should be used instead of setting pev->nextthink manually
3
// Warning: We have to make sure doors, buttons and trains work REGARDLESS of their model type!
4
// Input  : &delay - seconds
5
//-----------------------------------------------------------------------------
6
void CBaseEntity::SetNextThink(const float &delay)
7
{
8
  if (pev->movetype == MOVETYPE_PUSH)// hacking around engine stuff
9
  {
10
    SetBits(pev->flags, FL_ALWAYSTHINK);// hack?
11
    float oldthink = pev->nextthink;
12
    pev->nextthink = pev->ltime + delay;// WTF! nextthink always > ltime
13
    if (oldthink > pev->nextthink)// ??
14
      pev->nextthink = oldthink;
15
  }
16
  else
17
    pev->nextthink = gpGlobals->time + delay;
18
 
19
#if defined(MOVEWITH)
20
  m_fPevNextThink = pev->nextthink;
21
#endif
22
}
23
 

(это просто набросок, он не работает)
Вообще, как я догадываюсь, pev->ltime - что-то для сглаживания движений брашей. Вот только оно влияет на вызовы Think() как-то рандомно. Т.е. SetNextThin(0) не работает никогда, например. А надо.

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

Сообщить модератору | | IP: Записан
Сообщение: 171757

Старое сообщение 24-02-2018 14:39
- За что?
a1batross
Житель форума

Дата регистрации: May 2016
Проживает: Москва
Сообщений: 516
Возраст: 26

Рейтинг



Не по теме, но зачем delay ссылкой?

Сообщить модератору | | IP: Записан
Сообщение: 171758

Старое сообщение 24-02-2018 15:13
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32130
Нанёс повреждений: 392 ед.

Рейтинг



А кто такой Хеадкрабовец?

Цитата:
~ X ~ писал:
Для брашей не работают вызовы по nextthink так, как работют для моделей, и наоборот.

Брашы непричём, это зависит от MOVETYPE_PUSH. Это говно растёт из того обстоятельства, что брашам надо как-то задавать MoveDone, а отдельного каллбэка для этого непредусмотрено. И идёт завязка на ltime (Local Time).

В общем случае это выглядит как-то так:
C++ Source Code:
// set nextthink to trigger a call to LinearMoveDone when dest is reached
pev->nextthink = pev->ltime + flTravelTime;
SetThink( LinearMoveDone );

То есть вместо gpGlobals->time юзаем pev->ltime. Но это в принципе ерунда и можно привыкнуть. Самое мерзкое, что когда think используется для вызова MoveDone, мы же не можем его юзать больше ни для чего, так сказать. Вальва для этого ввела особый флаг FL_ALWAYSTHINK, который используется, например в трак-трейнах. Но это тоже неслишком удобно.
В ксаш-моде я понятное дело избавился от всего этого дерьма. Там тчинк работает независимо от движения.

Добавлено 24-02-2018 в 18:59:

Цитата:
a1batross писал:
Не по теме, но зачем delay ссылкой?

Мастер где-то вычитал что это здорово оптимизирует и ускоряет код.

Добавлено 24-02-2018 в 19:04:

Цитата:
~ X ~ писал:
pev->ltime - что-то для сглаживания движений брашей

Шёл 18-й год ковыряния халфы...

__________________
My Projects: download page

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

Цитата:

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

Сообщить модератору | | IP: Записан
Сообщение: 171759

Старое сообщение 24-02-2018 16:04
-
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


За инфу, конечно, спасибо, только главного из этого не понял:

Цитата:
Дядя Миша писал:
То есть вместо gpGlobals->time юзаем pev->ltime.

- зачем. Я знаю что MoveDone() - это фикция, которая не считает позицию, а тупо вычисляет через какое время брашка будет в точке с заданной скоростью. И это не в движке.
В итоге, предполагаю, что ltime нужна для того чтобы во время блокады двигло могло "переносить" время старта. Охрененная физика, наверняка Машина-мак придумал.

Цитата:
Дядя Миша писал:
тчинк

:_D сделал мой вечер. Тимч в бане сейчас бугуртует. ))

Цитата:
Дядя Миша писал:
Шёл 18-й год ковыряния халфы...

вот и мне не понятно - зачем ты её ковыряешь

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

Отредактировано ~ X ~ 24-02-2018 в 22:18

Сообщить модератору | | IP: Записан
Сообщение: 171760

Старое сообщение 24-02-2018 22:08
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34491
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
~ X ~ писал:
Тимч в бане сейчас бугуртует

Я сначала было подумал, что его забанили, но смотрю - нет. Тогда в какой бане? У вас с ним что, традиция есть, каждый год 23 февраля ходить в баню?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 171761

Старое сообщение 25-02-2018 11:42
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32130
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
~ X ~ писал:
Я знаю что MoveDone() - это фикция, которая не считает позицию, а тупо вычисляет через какое время брашка будет в точке с заданной скоростью

MoveDone, это каллбэк такой, технически объединенный с тчинком. Если открыть исходники куси первокваки, легко увидеть, оно оттуда и пошло.
Ну видимо рассудили, что муверам не нужен тчинк на какие-то иные потребности.

Цитата:
~ X ~ писал:
В итоге, предполагаю, что ltime нужна для того чтобы во время блокады двигло могло "переносить" время старта

Ну вот видишь, сидел 18 лет сортировал строчки в delta.lst, а как пня дали в нужном направлении, так сразу во всём и газобгался

Цитата:
~ X ~ писал:
:_D сделал мой вечер

Ну признайся, peace data мы тебе нос utterly?

__________________
My Projects: download page

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

Цитата:

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

Сообщить модератору | | IP: Записан
Сообщение: 171762

Старое сообщение 25-02-2018 12:53
-
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


Дядя Миша fffffffuuuuuuuнкцию-то ты не написал же ж. В итоге на свой вопрос я ответил сам. Но не совсем. Если есть желание - поделись ксашмодокодом, а то гонка велосипедистов уже подзаела немного. А то один перец тут дергает "сделай себе паренты" (хотя я подозреваю, они ему не нужны). Хотя, вощем-то, уже, похоже, никому кроме меня ничего не нужно.

Цитата:
Дядя Миша писал:
MoveDone, это каллбэк такой, технически объединенный с тчинком.

чинко-чинко!
dagobah.net/flash/chinko.swf

XaeroX я тоже думал что он в бане. Мне так Гульмэн сказал. Потому что он тоже любитель банных процедур. o_O

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

Сообщить модератору | | IP: Записан
Сообщение: 171763

Старое сообщение 25-02-2018 16:30
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Цитата:
~ X ~ писал:
"сделай себе паренты"

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

Сообщить модератору | | IP: Записан
Сообщение: 171764

Старое сообщение 25-02-2018 17:10
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34491
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
~ X ~ писал:
Мне так Гульмэн сказал. Потому что он тоже любитель банных процедур.

Гульман это наш Гуль что ли? Так тот любитель не банных, а бананных процедур. И вообще он много чего такого говорит, что слушать не надо.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 171765

Старое сообщение 25-02-2018 17:22
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32130
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
~ X ~ писал:
Если есть желание - поделись ксашмодокодом

ксашмодокод доступен всем желающим уже лет пять наверное.

Добавлено 25-02-2018 в 22:11:

Цитата:
Ku2zoff писал:
Но увы и ах, интерполяции нема.

r_bmodelinterp 1

__________________
My Projects: download page

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

Цитата:

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

Сообщить модератору | | IP: Записан
Сообщение: 171768

Старое сообщение 25-02-2018 19:11
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Цитата:
Дядя Миша писал:
r_bmodelinterp 1

Ну так это в ксаше же. В халфе вообще нету.

Сообщить модератору | | IP: Записан
Сообщение: 171770

Старое сообщение 26-02-2018 07:06
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32130
Нанёс повреждений: 392 ед.

Рейтинг



Ku2zoff именно в халфе и есть.

__________________
My Projects: download page

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

Цитата:

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

Сообщить модератору | | IP: Записан
Сообщение: 171771

Старое сообщение 26-02-2018 10:39
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Ух ты, круто! Я поставил r_bmodelinterp 0, и двери, прикреплённые мовевитчем, перестали отставать от поезда в сетевой игре.

Добавлено 26-02-2018 в 18:00:

Ну всё, делаю мовевитч себе в мод. Наверное, по сети будет дёргаться, но он нужен мне в основном для стёкол в дверях.

Сообщить модератору | | IP: Записан
Сообщение: 171772

Старое сообщение 26-02-2018 11:00
- За что?
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


Ku2zoff а как же кнопки? И почему не хочешь делать нормальыне паренты?

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

Сообщить модератору | | IP: Записан
Сообщение: 171773

Старое сообщение 26-02-2018 11:03
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32130
Нанёс повреждений: 392 ед.

Рейтинг



Там всё сломано, абсолютно всё.

__________________
My Projects: download page

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

Цитата:

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

Сообщить модератору | | IP: Записан
Сообщение: 171774

Старое сообщение 26-02-2018 11:07
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 04:23. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > NextThink для всех
разборки с движком
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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