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

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 35

Рейтинг



Проблема с кешированием модели

Я пишу NPC который бы при респавне проигрывал нужные мне анимации и воспроизводил заданные в текстовом файле записи.

Так вот, по не известной мне причине, мне не удается закешировать модель.

Если я в скрипте задам уже кешированную модель, то все ОК, а если нет, то ошибка Host_Error: no precache: %modelname%

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

Код NPC, а так же тестовый скрипт прилагаю.

Вложение: actors.rar (3.5 кб)
Этот файл был скачан 240 раз.

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

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

Старое сообщение 01-08-2010 13:41
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



fire64 вот это что за гамно?

C++ Source Code:
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
}

У тебя Precache не вызывается ни в одном случае. Внимательнее надо быть.

Добавлено 01-08-2010 в 19:21:

ЗЫ. а вообще у тебя парсер вырвиглазный. Зачем хранить буффер и парсить его по мере обращения? Не проще ли сразу всё распарсить?

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 01-08-2010 15:21
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 35

Рейтинг



Да, действительно
Только это не помогло.

C++ Source Code:
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


гм, а может ли быть так, что функция Precache вызывается до Spawn ?

Добавлено 01-08-2010 в 20:38:

Дядя Миша, ну вообще-то буфер файла приходится хранить, так как в скрипте может быть несколько секций, а ParseScript при каждом вызове должен обращаться к новой секции.

Насчет же буфера с содержимым секции согласен.

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

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

Старое сообщение 01-08-2010 16:38
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



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'

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

Старое сообщение 01-08-2010 18:51
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 35

Рейтинг



Немного разобрался.
Дело в том, что загрузка скрипта у меня вызывается из Spawn функции.

А саму энтити я создаю из другой энтити, при этом предварительно использую UTIL_PrecacheOther

Соответственно кеширование происходит из другой энтити минуя Spawn, при этом загрузка скрипта не происходит.

Добавлено 02-08-2010 в 14:11:

гм
очень странно.

C++ Source Code:
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
}


если написать

C++ Source Code:
PRECACHE_MODEL( ModelName );


то игра падает, а если написать

C++ Source Code:
1
char *mmname = ( char * )malloc( strlen(ModelName) );
2
memset( mmname, 0, sizeof(mmname) );
3
sprintf( mmname, "%s", ModelName );
4
 
5
PRECACHE_MODEL( mmname );


то работает

Добавлено 02-08-2010 в 14:35:

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

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

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

Старое сообщение 02-08-2010 10:35
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



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'

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

Старое сообщение 02-08-2010 10:44
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 35

Рейтинг



Дядя Миша, хм вполне возможно.

Выкладываю новую версию кода и скрипта.

п.с.
насчет

C++ Source Code:
char ModelName[MEMALLOC];
char SoundName[MEMALLOC];


это временно, потом сделаю полный парсинг скрипта специально для кеширования моделей и звуков.

Вложение: actors.rar (3.8 кб)
Этот файл был скачан 229 раз.

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

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

Старое сообщение 02-08-2010 10:58
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



та я не про 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'

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

Старое сообщение 02-08-2010 11:13
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 35

Рейтинг



Выкладываю небольшую демку + код.

Как выяснилось, появилась новая бага, причина которой мне не известна.

Дело в том, что после проигрывания второй секции скрипта, игра вылетает в главное меню, при этом в консоли сообщение:

C++ Source Code:
Host_Error: UserMsg: Not Present on Client 23


Скачать с народа

update:

хм
Очень странно.

Дядя Миша, как выяснилось падение после конца 2 секции происходит из-за кириллического текста. не подскажешь как быть ?

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

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

Старое сообщение 02-08-2010 16:17
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



fire64 тысячу раз пережовывалось. Халфа не любит букву 'я', она считает её за конец мессаги почему-то.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 02-08-2010 17:03
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 35

Рейтинг



омг
Ну да конечно,
ведь я это если я не ошибаюсь, в Hexе 'я' выглядит как FF
А это служебный код используемый для сетевых пакетов.

Добавлено 02-08-2010 в 21:40:

На то, что получилось, можно посмотреть здесь
http://narod.ru/disk/23354526000/te...script.rar.html

п.с
стандартная система вывода сообщений на экран мне сильно не понравилась, придется еще и на клиент лезть

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

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

Старое сообщение 02-08-2010 17:40
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
fire64 писал:
А это служебный код используемый для сетевых пакетов.

-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: Записан
Сообщение: 62273

Старое сообщение 02-08-2010 17:58
-
 XaeroX
Crystice Softworks

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

Рейтинг



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


Причем, легко поправляемый редактированием parsemsg.cpp на клиенте (или что-то типа того).

__________________

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

Старое сообщение 02-08-2010 19:03
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 35

Рейтинг



Народ еще вопрос, никто не даст ссылку на код диалогов или комментариев, короче на систему вывода текста.

Так как UTIL_HudMessage мне совершенно не подходит.

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

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

Старое сообщение 04-08-2010 07:44
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


UTIL_HudMessage должна подходить, ты, очевидно, что-то делаешь неправильно.

__________________

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

Старое сообщение 04-08-2010 07:49
-
Тема: (Опционально)
Ваш ответ:



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


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

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

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

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

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

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