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

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Dispatch-функции и другие неосновные элементы... (https://hlfx.ru/forum/showthread.php?threadid=1566)


Отправлено LLAPb 03-11-2008 в 16:10:

Dispatch-функции и другие неосновные элементы...

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

Вопрос № 1: Есть такие Dispatch-функции, которые вызывает непосредственно движок. В первую очередь, это DispatchTouch и DispatchThink.
А вот вызывается ли вообще функция DispatchUse? В большинстве случаев CAnyEntity::Use вызывается непосредственно из библиотеки ентитей, а не через DispatchUse.
Так же интересно, когда вызывается DispatchSpawn? Как я помню, функция, создающая ентитю, экспортируется макросом LINK_ENTITY_TO_CLASS, и из неё непосредственно вызывается CAnyEntity::Spawn и ещё запрашивается память. А DispatchSpawn тут при чём?

И вот вопрос № 2: Что случается с глобальными переменными, объявленными в библиотеке ентитей, при смене уровня в сингплеере?
Ну то есть обнуляются они, или нет?

И ещё попутный вопрос № 3: При смене уровня в сингле вызываются ли функции ServerActivate/ServerDeactivate? Происходит ли при смене уровня сохранение всех нужных переменных в сэйвв-файл?

Заранее премного благодарен.


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

Цитата:
LLAPb писал:
А вот вызывается ли вообще функция DispatchUse?

Из движка, имхо, не вызывается. Но может вызываться сторонними дллками, которые идут как прокладки между движком и игровой дллкой.
Цитата:
LLAPb писал:
Так же интересно, когда вызывается DispatchSpawn?

Энтити не всегда создаются через LINK_ENTITY_TO_CLASS. Иногда они создаются динамически. И еще - при смене уровня или загрузке сохранения вызываются спавн-функции.
Цитата:
LLAPb писал:
Что случается с глобальными переменными, объявленными в библиотеке ентитей, при смене уровня в сингплеере?
Ну то есть обнуляются они, или нет?

Нет, неявно они не обнуляются. Только при выгрузке/загрузке длл или явно в коде.
Цитата:
LLAPb писал:
При смене уровня в сингле вызываются ли функции ServerActivate/ServerDeactivate?

Тебе проще поставить MessageBox и проверить самому
Цитата:
LLAPb писал:
Происходит ли при смене уровня сохранение всех нужных переменных в сэйвв-файл?

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

__________________

xaerox on Vivino


Отправлено LLAPb 03-11-2008 в 17:03:

XaeroX Спасибо, ты сразу и исчерпывающе ответил на все мои вопросы


Отправлено Дядя Миша 02-12-2008 в 09:36:

DispatchUse никак не вызывается из движка - попросту не нужно, хотя вальвовцы и предусмотрели подобную возможность.
а вот три остальных фундаментальных каллбэка - тоуч, тчинк и блокед - вызываются.

__________________
My Projects: download page

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

Цитата:

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


Отправлено LLAPb 02-12-2008 в 10:52:

Да, кстати, извиняюсь за 3,14здёж, DispatchSpawn тож вызывается всегда, LINK_ENTITY_TO_CLASS его не вызывает.


Отправлено Дядя Миша 02-12-2008 в 15:27:

LLAPb LINK_ENTITY_TO_CLASS попросту превращает имя энтити в экспорт из библиотеки.
Движок вызывает spawn через getProcAddress

__________________
My Projects: download page

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

Цитата:

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


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

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