Дядя Миша писал: А ты уже собирался CRenderManager заюзать под это дело? Это всё от полного непонимания происходящих процессов идёт чрезмерное усложнение. Там где можно (бла бла бла...)
Третий раз прошу уйти из этого треда. Несёшь чушь полную.
Цитата:
Дядя Миша писал: Да ну! И где же там крэш и где же overflow? Покажи.
Оставлю это твоим пользователям.
XaeroX может у него тогда и спросишь? Чего меня-то?
Цитата:
Ku2zoff писал: Вот ненавижу Валвэ за такие гадости.
~ X ~ писал: cl_entity_t *view = GET_VIEWMODEL();
не проверяется на валидность.
C++ Source Code:
1
/*
2
=============
3
pfnGetViewModel
4
5
=============
6
*/
7
static cl_entity_t* pfnGetViewModel( void )
8
{
9
return &clgame.viewent;
10
}
Проверять такое на валидность - последняя стадия паранои.
Игрок, тот да, может отсутствовать потенциально.
Цитата:
~ X ~ писал: CLaserSpot *pSpot
не проверяется на валидность.
C++ Source Code:
if( i >= svgame.globals->maxEntities )
Sys_Error( "ED_AllocEdict: no free edicts\n" );
Цитата:
~ X ~ писал: pev->owner->v.effects |= EF_LASERSPOT;
хак
Где хак?
А ты бы вместо одного бита передал целый эвент, а на клиенте написал очередной CRenderManager для обработки этого эвента?
Я же говорю, что из XDM можно выкинуть 98% кода и будет работать только лучше от этого. Старый XDM потому хорошо и работал, что тов. Хвидор еще не научился писать свои рендер-менеджеры для обработки одного бита. И там в основном была либо копипаста из туторов на wavelength, либо новые пушки. И вот оно как-то работало. А рендер-менеджеры написанные при полном непонимании того как работает движок приводят к тому, что приходят полностью зануленые структуры.
Зато каждый вызов GetClassPtr проверяется на NULL, да.
Добавлено 13-10-2016 в 11:58:
ЗЫ. мой код после лёгкой доработки позволит иметь эту лазерную точку не только у локального игрока, а вообще у любого персонажа. И подцепить её к аттачменту оружия этого персонажа. И вот "хак" уже превратился в систему. А тебе для этого понадобится писать новый рендер-менеджер.
Нет слов...
Тебе хоть раз NULL возвращался в описанных случаях?
Проверка на нулл там, где нулла быть не может - это самая настоящая пессимизация. Может быть, ты ещё и проверяешь на нулл то, что возвращает обычный оператор new? А может быть, ты пишешь проверку на нулл перед вызовом delete? Я не удивлюсь, чо.
Цитата:
Дядя Миша писал: тарый XDM потому хорошо и работал, что тов. Хвидор еще не научился писать свои рендер-менеджеры для обработки одного бита.
Это беда всех людей, кто попадает в коммерческую фирму и начинает следовать их кодерским стандартам. Когда речь о банковском софте и миллионах заказчиков, тут волей-неволей станешь параноиком.
mittorn что значит "при отсутствии поддержки исключений"? Что за фантазии?
Единственный вариант, при котором new может вернуть нулл - это вызвать его с параметром std::nothrow, но это не "обычный new", а его перегруженная версия.
mittorn и с исключениями тоже. Хотя компелятор M$ требует проверять конкретно и исключения, и нулевые указатели прям-таки везде.
Цитата:
Дядя Миша писал: ЗЫ. мой код после лёгкой доработки позволит иметь
всех в заднее место, как КС.
Введи тогда ещё биты EF_DYADYAMISHA_ANGRY, EF_TERRORIST, EF_FUNC_DETAIL, EF_FLYING_SAUCER, EF_CONNECT_TO_RDACH_AND_FLOOD.
Давайте так: либо я в этой тебе, либо Дядя Миша. Мне его флуд в разработке не помогает, а только мешает. Я-то его сообщения фильтровать могу, а у остальных будет головокружение от успехов.
XaeroX WARNING! your bullshit level will soon reach "Дядя Миша"!
Да, кстати, тут не хотят проверять, а потом мне FreeSlave жалуется что ошибка сегментирования при нехватке памяти.
Добавлено 13-10-2016 в 15:20:
XaeroX ну я не знаю, как поведёт себя new, если код компилируется с -fno-exceptions. Скорее всего исключение прокинется через main до crt. Но это если new вообще исключение кидает в данном crt. Не думаю, что поддержка их является обязательной, как и rtti к примеру.
Что касается разработки 3038: баг с weapondata[] реально попадается и не даёт жить! С какого наскока массив становится дырявым с нулями мне не понятно вообще никак! На выходе с серверного калбака всё ровно и красиво. В массиве, приходящем на клиент - дыры. Буду тестить ещё.
Дядя Миша писал: Я же говорю, что из XDM можно выкинуть 98% кода и будет работать только лучше от этого.
Я думаю, что рендер-систем таки имеет право на жизнь, потому что она систематизирована. Если будет подробная документация, она сильно облегчит создание эффектов моддерам, либо слабым в кодинге, либо не желающим сильно увлекаться кодом. Не все же доросли до уровня Дяди Миши и написали свой ксаш.
Добавлено 13-10-2016 в 21:36:
Вы меня до такой паранойи скоро доведёте, что начну переписывать код оригинальной халфы (для своего мода) с оглядкой на сорцы, где исправлены разные баги. Ну и на XDM с оглядкой на оптимизацию сети.