HLFX.Ru Forum Страницы (2): « 1 [2]
Показать все 21 сообщений этой темы на одной странице

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=2045)


Отправлено XaeroX 05-01-2010 в 12:25:

Цитата:
PLut писал:
Дык такие клавиши вроде как в самом движке, это вот, которые IN_ALT?

Ну да. Зареганы на клиенте, и их надо передавать на сервер. А переменная 16 битов, т.е. только на 16 клавиш. Из-за того и сыр-бор.

__________________

xaerox on Vivino


Отправлено 0xf35 06-01-2010 в 11:02:

В общем, в итоге получается, что проблему можно решить несколькими способами:
Подвинуть ненужные серверу клавиши, вроде IN_SCORE, за пределы 16 бит (/common/in_buttons.h). Можно использовать переменную int impact_index и структуру vec3 impact_position, в которой вообще ещё три переменные (imact_position.x, impact_position.y, impact_position.z). Но, если нет необходимости проверять состояние клавиши, лучше сэкономить место для других клавиш, и обработать её как консольную команду в функции ClientCommand в файле client.cpp. Команда, поступившая от конкретного игрока, будет обрабатываться кодом, относящимся к этому конкретному игроку - проблем никаких.

XaeroX, Дядя Миша, спасибо, проблема решена.

Да, и, Дядя Миша, к вопросу об unhandled exception и segmentation fault - здесь, скорее, второе. Unhandled exception возникает, когда какой-то объект вызвал exception, но он не был нигде обработан. А ошибка сегментации памяти - когда программа пытается записать или считать значение из сегмента памяти, ей не принадлежащего. Когда мы увеличиваем размер структуры, какая-то её часть выходит за пределы выделенного сегмента памяти - происходит ошибка сегментации.

Ещё раз, спасибо.


Отправлено Дядя Миша 06-01-2010 в 11:54:

0xf35 я очень редко ловлю segfault. Это скорее для доса характерно, нежели для винды.

__________________
My Projects: download page

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

Цитата:

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


Отправлено 0xf35 06-01-2010 в 19:11:

На линуксе, когда я подобное вытворяю, у меня всегда выходит segmentation fault. Ради интереса написал консольную программку, вызывающую segmentation fault. Исходники одни и те же запускаю на разных платформах - на линуксе segmentation fault, на Windows - сообщение с отчётом (Отправить / Не отправлять). Windows просто не показывает, что конкретно произошло, да и в отладчике тоже почти всегда неясно - здесь, спасибо Microsoft, об этом можно только догадываться.


Отправлено XaeroX 06-01-2010 в 21:14:

Цитата:
0xf35 писал:
Windows просто не показывает, что конкретно произошло, да и в отладчике тоже почти всегда неясно - здесь, спасибо Microsoft, об этом можно только догадываться.

Да, есть такая фигня...

__________________

xaerox on Vivino


Отправлено Дядя Миша 06-01-2010 в 21:17:

0xf35 ну можно по возвращемому адресу сделать некоторые выводы.
Например Acess Violation 0x00005 - это вызов указателя на функцию, который не проинициализирован.

__________________
My Projects: download page

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

Цитата:

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


Временная зона GMT. Текущее время 08:38. Страницы (2): « 1 [2]
Показать все 21 сообщений этой темы на одной странице

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