![]() |
Показать все 27 сообщений этой темы на одной странице |
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=2252)
Проблема с кешированием модели
Я пишу NPC который бы при респавне проигрывал нужные мне анимации и воспроизводил заданные в текстовом файле записи.
Так вот, по не известной мне причине, мне не удается закешировать модель.
Если я в скрипте задам уже кешированную модель, то все ОК, а если нет, то ошибка Host_Error: no precache: %modelname%
Сначала я подумал, что ошибка где-то в коде парсера, но консольный его вариант работает нормально, так что и в халфе он должен тоже работать.
Код NPC, а так же тестовый скрипт прилагаю.
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
fire64 вот это что за гамно?
1 | void CActorNpc::Precache( void ) |
2 | { |
3 | char ModelName[MEMALLOC]; |
4 | memset( ModelName, 0, sizeof(ModelName) ); |
5 |
6 | if( !GetModel( partbuff, ModelName ) ) |
7 | { |
8 | ALERT( at_warning, "Can not get model name" ); |
9 |
10 | return; |
11 | } |
12 | else |
13 | { |
14 | ALERT( at_warning, "Preceching model: %s\n", ModelName ); |
15 |
16 | return; |
17 | } |
18 |
19 | PRECACHE_MODEL( ModelName ); |
20 | PRECACHE_SOUND( SSOUNDNAME ); |
21 |
22 | CBaseMonster::Precache(); |
23 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Да, действительно
Только это не помогло.
1 | Usage: |
2 | Setmaster unavailable, start a server first. |
3 | Spawn Server test |
4 | Clearing memory |
5 | Using WAD File: halflife.wad |
6 | Using WAD File: liquids.wad |
7 | Using WAD File: xeno.wad |
8 | Using WAD File: opfor.wad |
9 | Using WAD File: rdm2.wad |
10 | Using WAD File: crossbounce.wad |
11 | Texture load: 21.3ms |
12 | WARNING: failed to locate sequence file test |
13 | Building PAS... |
14 | Average leaves visible / audible / total: 10 / 11 / 24 |
15 |
16 | GAME SKILL LEVEL:1 |
17 | Executing listen server config file |
18 | WARNING: Preceching model: |
19 | Last 32 messages parsed. |
20 | 0 0000 svc_bad |
21 | ... |
22 | 0 0000 svc_bad |
23 | BAD: -1:svc_bad |
24 | Wrote erroneous message to buffer.dat |
25 | Host_Error: PF_prec |
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
fire64 ты проверь содержимое ModelName. Есть подозрение, что там пусто.
Добавлено 01-08-2010 в 22:51:
И еще: WARNING: failed to locate sequence file test - это он у тебя не смог загрузить твой скрипт? Не юзай fopen, GET_GAME_DIR далеко не всегда возвращает валидную директорию.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Немного разобрался.
Дело в том, что загрузка скрипта у меня вызывается из Spawn функции.
А саму энтити я создаю из другой энтити, при этом предварительно использую UTIL_PrecacheOther
Соответственно кеширование происходит из другой энтити минуя Spawn, при этом загрузка скрипта не происходит.
Добавлено 02-08-2010 в 14:11:
гм
очень странно.
1 | char ModelName[102400]; |
2 |
3 | memset( ModelName, 0, sizeof(ModelName) ); |
4 |
5 | if( !GetModel( partbuff, ModelName ) ) |
6 | { |
7 | ALERT( at_warning, "Can not get model name" ); |
8 |
9 | return false; |
10 | } |
11 | else |
12 | { |
13 | ALERT( at_warning, "Get model name: %s\n", ModelName ); |
14 | } |
PRECACHE_MODEL( ModelName ); |
1 | char *mmname = ( char * )malloc( strlen(ModelName) ); |
2 | memset( mmname, 0, sizeof(mmname) ); |
3 | sprintf( mmname, "%s", ModelName ); |
4 |
5 | PRECACHE_MODEL( mmname ); |
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
fire64 у тебя нолик-то дописан в ModelName ?
sprintf его в любом случае его добавляет.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, хм вполне возможно.
Выкладываю новую версию кода и скрипта.
п.с.
насчет
char ModelName[MEMALLOC]; |
char SoundName[MEMALLOC]; |
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
та я не про MEMALLOC, убедись что у тебя строки в адекватном состоянии.
Вообще стандартные strncpy и strncat из CRT удивительно кривые.
ну просто мега-кривые. Я в ксаше заюзал кастомные из FreeBSD, с тех пор вообще не имел ни одной проблемы со строками.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Выкладываю небольшую демку + код.
Как выяснилось, появилась новая бага, причина которой мне не известна.
Дело в том, что после проигрывания второй секции скрипта, игра вылетает в главное меню, при этом в консоли сообщение:
Host_Error: UserMsg: Not Present on Client 23 |
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
fire64 тысячу раз пережовывалось. Халфа не любит букву 'я', она считает её за конец мессаги почему-то.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
омг
Ну да конечно,
ведь я это если я не ошибаюсь, в Hexе 'я' выглядит как FF
А это служебный код используемый для сетевых пакетов.
Добавлено 02-08-2010 в 21:40:
На то, что получилось, можно посмотреть здесь
http://narod.ru/disk/23354526000/te...script.rar.html
п.с
стандартная система вывода сообщений на экран мне сильно не понравилась, придется еще и на клиент лезть
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Причем, легко поправляемый редактированием parsemsg.cpp на клиенте (или что-то типа того).
__________________
Народ еще вопрос, никто не даст ссылку на код диалогов или комментариев, короче на систему вывода текста.
Так как UTIL_HudMessage мне совершенно не подходит.
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
UTIL_HudMessage должна подходить, ты, очевидно, что-то делаешь неправильно.
__________________
Обновил код, добавил UTIL_PrecacheActorScript для кеширования контента.
А так же перенес код парсера в CBaseEntity.
Добавил CActorNpc::Create для создания Actor Npc
Добавил KeyValue, теперь через редактор карт можно задавать Actor скрипт.
Добавлено 04-08-2010 в 11:57:
В UTIL_HudMessage размер шрифта регулируется ?
Так же интересует сам шрифт и длина текста.
Дело в том, что там стоит ограничение в 80 символов.
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
__________________
XaeroX, гм вообще-то сам текст я и передаю
Добавлено 04-08-2010 в 13:08:
Это субтитры для речи NPC
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
__________________
гм
И зачем я спрашивается велосипед изобретаю ?
Имхо проще взять код scripted_sequence и переделать под работу со скриптами.
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
fire64
Вообще говоря, в HL 1.1.2.0 (CS:CZ) есть поддержка секвенсов, и появились новые функции движка типа SequenceGet, SequencePickSentence и т.д. Но увы - они не документированы
__________________
XaeroX ну ничего, я в ксаше сделаю и задокументироваю
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вот кстати.
http://metamod.org/engine_notes.html
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
fire64
Вот кстати что?
__________________
Что-то типа документации)
Тогда вот:
__________________
XaeroX гуру баянов
Временная зона GMT. Текущее время 09:04. | Показать все 27 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024