![]() |
Страницы (16): « Первая ... « 5 6 7 8 [9] 10 11 12 13 » ... Последняя » Показать все 232 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Глобальное изменение масштаба (https://hlfx.ru/forum/showthread.php?threadid=4593)
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
1 | case 0: // Normal player |
2 | mins = VEC_HULL_MIN; |
3 | maxs = VEC_HULL_MAX; |
4 | iret = 1; |
5 | break; |
1 | case 0: // Normal player |
2 | VEC_HULL_MIN.CopyToArray( mins ); |
3 | VEC_HULL_MAX.CopyToArray( maxs ); |
4 | iret = 1; |
5 | break; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Утащил в дллку функцию pfnWalkMove и всё, что она тянет за собой. В принципе, всё вполне переносимо из движка с минимумом изменений. Для загрузки моделей заюзал IEngineStudio.GetModelByIndex, как в тринити. Для синглового мода вполне достаточно.
Для мультиплеерного придётся в последствии составлять список моделей на сервере: грузить заново карту, и индексировать каждую model_t на манер того, как сделано в движке. Студиомодели и спрайты заново грузить не придётся. Во-первых, спрайты почти никогда не имеют физической оболочки, зависящей от их размера: все проджектайли имеют нулевой размер, по сути, тут можно оставить всё как есть. А во-вторых, у нас есть волшебная функция pfnGetModelPtr, которая может вытянуть из движка экстрадату студиомодели по модельиндексу. Собственно, если я ничего не напутал, этого будет достаточно, чтобы построить хулл для студиомодельки.
На данный момент код вроде даже работает. Правда крашится на функции SV_TouchLinks. Наверное, зацикливается намертво вот здесь:
// touch linked edicts |
for (l = node->trigger_edicts.next; l != &node->trigger_edicts; l = next) |
{ |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
1 | void SV_ClearWorld(void) |
2 | { |
3 | SV_InitBoxHull(); // for box testing |
4 |
5 | memset(sv_areanodes, 0, sizeof(sv_areanodes)); |
6 | iTouchLinkSemaphore = 0; |
7 | sv_numareanodes = 0; |
8 |
9 | SV_CreateAreaNode(0, sv_worldmodel->mins, sv_worldmodel->maxs); |
10 | } |
iTouchLinkSemaphore = 0; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ku2zoff самое смешное, что я убрал его вызов буквально в последнем билде, после тестирования мода battlegrounds.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Не хватило ума сразу запихать в него алерт и проверить. Значит, это всё и есть возможная причина крэша.
А нету никакого другого места. Это единственное возможное место было, откуда его следовало бы вызвать. А дальше спаун энтить, линкэдикт, вот это всё. Так что ой.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Попробовал вызвать из ServerActivate - вылет. Или мир в этот момент ещё не загружен, или IEngineStudio не инициализирован, и не может загрузить модельку. А без модельки мира SV_CreateAreaNode не пашет.
Добавлено 08-02-2017 в 02:42:
В общем, подумал я, и вот что придумал. Если я не ошибаюсь, все нужные в данном случае движковые экспорты физики всё равно вызываются из дллки. Значит, можно попытаться каким-то образом задержать спаун энтить до момента, пока не будет загружена модель мира, и не будут засетаплены ареаноды. Можно даже не задерживать спаун, а зациклить вызовы тех же pfnSetOrigin, pfnWalkMove и прочих (возвращая NULL грубо говоря), до тех пор, пока не будет возможно их выполнить с нужным результатом.
Ну или можно ещё поступить вот так:
1. Проверяем, загружена ли модель мира, готовы ли ареаноды. Если нет, то просто вызываем движковые экспорты.
2. Всё загружено и готово, вызываем функции из дллок.
3. Если нужно например поправить ориджин после спауна, или изменить хулл, то в классе CBaseEntity заводим особую функцию, которая будет гарантированно срабатывать уже после нужных нам операций. И будет вызывать pfnSetSize, pfnSetOrigin.
Просто теория, опять же может быть много подводных камней. Вдруг, придётся что-то ещё проделывать для клиентской стороны.
Добавлено 08-02-2017 в 14:30:
Тем временем, есть прогресс. Модели монстров перестали проваливаться в пол. Хотя физически они вообще чёрти где (как будто несолидные), и окружены жёлтыми партиклями.
Временная зона GMT. Текущее время 17:50. | Страницы (16): « Первая ... « 5 6 7 8 [9] 10 11 12 13 » ... Последняя » Показать все 232 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024