![]() |
Показать все 18 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Вопросы по вазимодействию hl.dll и движка (https://hlfx.ru/forum/showthread.php?threadid=1638)
Вопросы по вазимодействию hl.dll и движка
Я к сожалению уделил слишком мало времени этой проблеме в своё время, поэтому прошу тех знает (Ксерокса или Бузера) помочь осветить некоторые моменты:
1. сохраняется ли текущее положение дел на карте в файл, после вызова CHANGE_LEVEL ? или тихо лежит в оперативке, до вызова настоящего сохранения?
2. в каком порядке движок вызывает Dispatch - функции при:
а. первичной загрузке карты
b. по команде restart
c. при загрузке из сохранялки
d. после changelevel
Имеются в виду DispatchSpawn, DispatchSave, DispatchRestore
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
1. нет
2. не понял вопрос. при создании вызывается DispatchSpawn, при сейве - DispatchSave, при загрузке - DispatchRestore. Что значит - "в каком порядке"? В индивидуальном порядке
DispatchRestore может сам вызвать DispatchSpawn, если у энтити стоит капс FCAP_MUST_SPAWN.
__________________
XaeroX ладно, попозже сформулирую более точно.
Добавлено 14-12-2008 в 00:28:
Чем pfnEmitAmbientSound отличается от pfnEmitSound ?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша примерно тем же, чем StartSound от AddLoopingSound в ку3
__________________
XaeroX AmbientSound юзается для воспроизведения electro4.wav
а он вроде бы не закольцован
Самый главный вопрос:
при рестарте или смене карты дллка выгружается полностью из памяти, как это происходит во всех трех квейках?
или попросту вызывает resetGlobals или что-то такое?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Что делают
code:
edict_t* (*pfnPEntityOfEntOffset)( int iEntOffset ); int (*pfnEntOffsetOfPEntity)( const edict_t *pEdict );
code:
edict_t* pfnPEntityOfEntOffset( int iEntOffset ) { return sv.edicts + iEntOffset; } int pfnEntOffsetOfPEntity( const edict_t *pEdict ) { return pEdict - sv.edicts; }
code:
int (*pfnIndexOfEdict)( const edict_t *pEdict ); edict_t* (*pfnPEntityOfEntIndex)( int iEntIndex );
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вопрос по MAKE_STRING и ALLOC_STRING:
Система в хл очень простая - по сути string_t хранит смещение от куска памяти, указывающего на начало строки до некоей абсолютной точки, на которую указывает gpGlobals->pStringBase;
Вопрос - к чему привязать указатель этой точки?
Я тупо привязал к указателю на GiveFnptrsToDll - MAKE_STRING не работает из дллок. ALLOC_STRING работает нормально.
В чем причина может быть?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Я в свое время реализовывал обе функции. Все нормально работало. Не привязывал ни к чему - смещение оно и есть смещение. А в чем проблема-то?
__________________
XaeroX ну pBaseString у тебя чему равно? в воздухе болтается?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ну разумеется, оно было равно базе zone memory. Это еще с кушным мемори манагером я делал. И ALLOC_STRING выделял память именно в зоне.
__________________
Мучился полчиса, потом плюнул и заюзал встроенную xash StringTable.
Сразу все ошыбки исчезли. И заодно избавился от этой дури с MAKE_STRING, поскольку Xash StringTable перед регистрацией новой строчки проверяет её наличие.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Прилаживаю клиент Вопрос простой - что делает флаг
PM_TRACELINE_PHYSENTSONLY для TraceLine ?
что такое PhysEntity с точки зрения Valve ?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Там на клиенте их массив хранится, где-то в pmove. Выводи его каждый кадр в консоль и проанализируй, какие объекты в него входят. По-моему, в него входят все солидные брашевые объекты.
__________________
>> По-моему, в него входят все солидные брашевые объекты.
судя по исходникам q1\q2 так оно и есть.
ну пофиг, добавлю еще моделек и спрайтов.
Добавлено 23-12-2008 в 17:25:
И снова я
Прикручиваю пользовательские мессаги из халфы.
Алгоритм их работы, мне представляется следующим образом:
Регистриуем мессагу на сервере по имени, при загрузке карты передаем все имена и размеры на клиент, но эта информация так же доступна на сервере. Создаем на клиенте структурку вида
code:
typedef struct cl_msg_s { const char *msgName; // указатель на клиентское хранилище имени мессаги int svcnum; // номер мессаги int iSize; pfnUserMessage func; // указатель на клиентскую функцию мессаги typedef struct cl_msg_s *next; } cl_msg_t;
code:
for( i = 0; i < iSize; i++ ) { *buffer++ = MSG_ReadByte() }
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
С посылкой размера - это хорошая идея.
Приму к сведению.
__________________
Да там вроде просто шлётся размер мессаги перед её данными, если он не фиксирован.
BUzer да, я именно так и сделал.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Временная зона GMT. Текущее время 20:51. | Показать все 18 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024