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

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Адская карта (WTF) (https://hlfx.ru/forum/showthread.php?threadid=2900)


Отправлено Дядя Миша 22-06-2011 в 13:46:

Адская карта (WTF)

Если среди вас есть специалисты по маппингу, то быть может мне кто-нибудь объяснит, почему вот эта простенькая карта убивает халфу в момент загрузки, а ксаш убивает при попытке выстрелить из ракетницы\при наборе impulse 101, а то и просто при убийстве об пол.
Тем не менее в мультиплеере всё работает как надо.
Мои версии по поводу происходящего:
1. недостаточно итераций физики при загрузке карты в сингле (2 против 16 в мульте)
2. старый баг HL SDK, при котором подобранное оружие потенциально продолжает тчинкать (можно без проблем вынести халфу, если разместить оружие на определенной высоте над info_player_start).
Других вариантов, у меня собственно нету.
Но тогда почему происходит вылет при убийстве игрока об землю?

__________________
My Projects: download page

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

Цитата:

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


Отправлено n00b 22-06-2011 в 14:24:

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


Отправлено Skaarj 22-06-2011 в 15:32:

Когда в ХЛ запустил ДМ, отключил в консоле ДМ и прописал restart, то при убийстве об пол вылетело с ошибкой.
entity is not a player: 7

Халфа.
Protocol version 47
Exe version 1.1.2.0 (valve)
Exe build: 21:31:56 Oct 19 2006 (3647)


Отправлено Дядя Миша 22-06-2011 в 15:36:

то что ошибка где-то в коде hl.dll это понятно. Вопрос - где именно

Добавлено 22-06-2011 в 19:36:

И как это баг был достигнут чисто мапперским путём - это куда интереснее.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Skaarj 22-06-2011 в 15:45:

Декомпиль и смотри.


Отправлено n00b 22-06-2011 в 17:08:

Цитата:
Дядя Миша писал:
(можно без проблем вынести халфу, если разместить оружие на определенной высоте над info_player_start).

Да да, там такое есть:

После перекомпила без этого сатчела, вылетать перестало.

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

А нет, вру. Оригинальная карта и на импульсе с ракетницей xash вешает, а перекомпилированая только об пол.

Добавлено 22-06-2011 в 21:08:

Своим ентэдитом вырезал из оригенальной карты этот глупый сатчел, халва вылетать перестала! Но xash её не запускает, говорит мол funny lump size при Mod_LoadPlanes. Это что за, здрасте?) Почему халва грузит а ксаш не хочет?


Отправлено Дядя Миша 22-06-2011 в 17:23:

Цитата:
n00b писал:
говорит мол funny lump size при Mod_LoadPlanes

в ксаше есть детектор блушифтовских карт, которые отличаются от обычного BSP 30 тем занимательным фактом, что LUMP_PLANES и LUMP_ENTITIES попутаны мистаме.
Само детектирование происходит так:
C++ Source Code:
1
if( header->lumps[LUMP_ENTITIES].fileofs <= 1024 )
2
{
3
  // Blue-Shift ordering
4
  lumpofs = header->lumps[LUMP_PLANES].fileofs;
5
  lumplen = header->lumps[LUMP_PLANES].filelen;
6
}
7
else
8
{
9
  lumpofs = header->lumps[LUMP_ENTITIES].fileofs;
10
  lumplen = header->lumps[LUMP_ENTITIES].filelen;
11
}

Ксаш исходит из того простого соображения, что энтити всегда дописываются в конец карты и если ты их дописал в начало, то движок решит, что это блушифтовская карта (поскольку никаких других, ч0тких критериев попросту нету), и естественно поменяет лумпы местами, пытаясь загрузить энтити как планесы. Проверить данное предположение очень легко - выведи список карт, напротив твоей отредактированной ксаш с большой долей вероятности напишет Blue Shift.
Исправляй свой риппер.

__________________
My Projects: download page

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

Цитата:

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


Отправлено n00b 22-06-2011 в 17:34:


Я как раз по этому поводу думал, когда его делал. Почему лумпы записаны не в том порядке, в котором задефайнены. И будет ли плохо если я их запишу не так как было в карте. Оказалось будет.

Вот простым рипентом убрал этот сатчел, теперь все работает и в ксаше.


Отправлено Дядя Миша 22-06-2011 в 18:59:

Цитата:
n00b писал:
Почему лумпы записаны не в том порядке, в котором задефайнены

потому что энтити, виз и лайтдату удобнее дописывать в конец, а сама система лумпов для того и создана, чтобы не заботится о реальном порядке их следования.
Цитата:
n00b писал:
Вот простым рипентом убрал этот сатчел, теперь все работает и в ксаше.

мог бы набрать в консоли entpatch и отредактировать killbox.ent - ксаш их грузит.

Добавлено 22-06-2011 в 22:42:

Кстати под спиритом этот баг проявится не должен

Добавлено 22-06-2011 в 22:59:

Да, кстати. Поскольку вы разыскали баг и дело оказалось в этом злополучном сатчеле, я расскажу как его исправить в своём моде:
Откройте weapons.cpp и найдите функцию
C++ Source Code:
void CBasePlayerItem::AttachToPlayer ( CBasePlayer *pPlayer )

В самый её конец надо добавить строчку
C++ Source Code:
SetThink(NULL);

Как вы уже наверное догадались, данная строчка отменяет дальнейшую работу тчинка по падению предмета на землю, приводя к непредсказуемым последствиям, при условии, что игрок уже взял этот предмет. Данный баг исправил еще BUzer в далеком 2005 году, за што ему спасибо.

__________________
My Projects: download page

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

Цитата:

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


Отправлено n00b 22-06-2011 в 19:08:

Дядя Миша писал:
мог бы набрать в консоли entpatch и отредактировать killbox.ent - ксаш их грузит.[/QUOTE]
Я про это в какой-то теме читал, но забыл.

Можешь обьяснить, почему из-за сатчела над спауном, такая жуть получается?

Добавлено 22-06-2011 в 23:08:

Цитата:
n00b писал:
Как вы уже наверное догадались, данная строчка отменяет дальнейшую работу тчинка по падению предмета на землю, приводя к непредсказуемым последствиям, при условии, что игрок уже взял этот предмет.


Ну теперь понятно, когда писал свой пост этого ещё небыло.


Отправлено IPwnMice 01-08-2011 в 12:38:

Вылетает


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

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