HLFX.Ru Forum Страницы (78): « Первая ... « 32 33 34 35 [36] 37 38 39 40 » ... Последняя »
Показать все 1159 сообщений этой темы на одной странице

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


Отправлено marikcool 04-01-2012 в 07:45:

кто может скинуть хорошую статью плюсы и минусы по работе со строкой через указатель или объявленный массив ну вообще с любыми объектами по типу:
char * s1 = "test" и char s2[32]= "test"


Отправлено Дядя Миша 04-01-2012 в 08:58:

Цитата:
marikcool писал:
само выставление флага FL_ONGROUND я чето ненашол, походу сам движок

в SV_FinishPmove
C++ Source Code:
1
if( svgame.pmove->onground == -1 )
2
  clent->v.flags &= ~FL_ONGROUND;
3
else if( pmove->onground >= 0 && pmove->onground < pmove->numphysent )
4
{
5
  clent->v.flags |= FL_ONGROUND;
6
  clent->v.groundentity = EDICT_NUM( svgame.pmove->physents[svgame.pmove->onground].info );
7
}

По сути ускорение начинает нарастать за счёт аддитации гравитации.
То есть это не ускорение. Это просто прибавляется гравитация.
Если игрока подкинул триггер_пуш, то ускорение записывается в basevelocity.

Добавлено 04-01-2012 в 12:58:

Цитата:
marikcool писал:
кто может скинуть хорошую статью плюсы и минусы по работе со строкой через указатель или объявленный массив ну вообще с любыми объектами по типу:
char * s1 = "test" и char s2[32]= "test"

вообще по работе с указателями? или именно со строками?
Я давно хочу написать статью про арифметику указателей, потому что многие боятся её пользовать.

__________________
My Projects: download page

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

Цитата:

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


Отправлено VXP 04-01-2012 в 09:35:

Цитата:
Дядя Миша писал:
Я давно хочу написать статью про арифметику указателей, потому что многие боятся её пользовать.

Напиши и про это , пожалуйста


Отправлено marikcool 04-01-2012 в 10:55:

Цитата:
Дядя Миша писал:
вообще по работе с указателями? или именно со строками?
Я давно хочу написать статью про арифметику указателей, потому что многие боятся её пользовать.

интересует строки а также другие классы, в чем преимущества, и в каком месте и как и где выделяется память в случае с указателем.
а также моменты как утечка/порча памяти.

еще хотел узнать static переменные после рестарта сервера (через команду restart) значения сохраняют?

также вопрос про memset, если я буду использовать значения 0, его следует вызывать если переменая больше 4 байт?


Отправлено Дядя Миша 04-01-2012 в 11:32:

Во-во, вижу
Работа с памятью - это самое больное место современных программистов.
Потому что поверх современных языков понаворочено столько слоёв абстракции. призванных именно облегчить вот эту работу с паматью, что программист зачастую вообще не понимает и боится с ней работать напрямую. Я уже не говорю, что при виде конструкции такого плана:

C++ Source Code:
1
// give space for textures and skinrefs
2
size1 = thdr->numtextures * sizeof( mstudiotexture_t );
3
size2 = thdr->numskinfamilies * thdr->numskinref * sizeof( short );
4
mod->cache.data = Mem_Alloc( loadmodel->mempool, phdr->length + size1 + size2 );
5
Q_memcpy( loadmodel->cache.data, buffer, phdr->length ); // copy main mdl buffer
6
phdr = (studiohdr_t *)loadmodel->cache.data; // get the new pointer on studiohdr
7
phdr->numskinfamilies = thdr->numskinfamilies;
8
phdr->numtextures = thdr->numtextures;
9
phdr->numskinref = thdr->numskinref;
10
phdr->textureindex = phdr->length;
11
phdr->skinindex = phdr->textureindex + size1;
12
 
13
in = (byte *)thdr + thdr->textureindex;
14
out = (byte *)phdr + phdr->textureindex;
15
Q_memcpy( out, in, size1 + size2 );	// copy textures + skinrefs
16
phdr->length += size1 + size2;

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

Добавлено 04-01-2012 в 15:32:

А и кстати, маленький тест на профпригодность:
чем вот эта конструкция
C++ Source Code:
ptr1 = ptr2;

отличается от вот этой
C++ Source Code:
*ptr1 = *ptr2;

__________________
My Projects: download page

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

Цитата:

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


Отправлено XaeroX 04-01-2012 в 11:36:

Цитата:
marikcool писал:
еще хотел узнать static переменные после рестарта сервера (через команду restart) значения сохраняют?

я всегда удивлялся программистам, которые не знают языка, на котором пишут. Это как русский писатель, пишущий книги и не знающий русского языка (а что, и такие есть).

__________________

xaerox on Vivino


Отправлено FiEctro 04-01-2012 в 11:37:

XaeroX
Можно сказать ты пряма прочитав Страуструпа прямо сразу сел и за вечер написал волатилу . В этом деле практика, практика.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Дядя Миша 04-01-2012 в 11:43:

Цитата:
FiEctro писал:
В этом деле практика, практика.

ну ты вон уже сколько лет практикуешься и что и где?

__________________
My Projects: download page

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

Цитата:

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


Отправлено XaeroX 04-01-2012 в 11:45:

FiEctro
Прочитав Страуструпа (которого я, кстати, не читал), я не задавал глупых вопросов по основам языка. А в самом деле сел и написал волатилу, правда, не эту - а старую и глючную, и вообще на DirectX 7. Но тем не менее.

Добавлено 04-01-2012 в 18:45:

Цитата:
Дядя Миша писал:
ну ты вон уже сколько лет практикуешься и что и где?

В подписи у него, где ж ещё?

__________________

xaerox on Vivino


Отправлено FiEctro 04-01-2012 в 11:54:

Дядя Миша
В том то и дело что забросил это дело, не практикуюсь давно.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено XaeroX 04-01-2012 в 11:55:

FiEctro
Тогда и не советуй другим.

__________________

xaerox on Vivino


Отправлено marikcool 04-01-2012 в 13:06:

ptr1 = ptr2; - присваивание значений
*ptr1 = *ptr2; - указателю ptr1 присваиваем указатель ptr2,
отсюда значение переменной ptr1 будет ровно значению ptr2,
если ptr2 = NULL то и ptr1 станет NULL.
вроде так.

мне интересно когда мы тупо в указатель char пишем например 2000 байт букв, он же атким образом портит память в другом месте?
надо выделить память либо объявить char text[2000]
а потом уже можно *text работать?

вот пример:

C++ Source Code:
1
const char *pszName;
2
if (!II.pszName)
3
  pszName = "Empty";
4
else
5
  pszName = II.pszName;

куда слово "Empty" сохранилось, и как под нее память выделилась?


Отправлено Дядя Миша 04-01-2012 в 18:58:

Цитата:
marikcool писал:
куда слово "Empty" сохранилось, и как под нее память выделилась?

прямо при компиляции. Открой дллку в блокноте и найди своё слово.
Когда дллка загружена в память, там есть и несколько байт для твоего слова.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Government-Man 04-01-2012 в 19:20:

Цитата:
Дядя Миша писал:
Открой дллку в блокноте и найди своё слово.


Изучая текстовые строки внутри бинарника зачастую можно узнать много нового и интересного о программе и программистах ее писавших. Из утекшей беты клиента Dota 2 таким образом половину исходников Ep3 достали...


Отправлено Дядя Миша 04-01-2012 в 19:53:

Цитата:
Government-Man писал:
Из утекшей беты клиента Dota 2 таким образом половину исходников Ep3 достали...

лучше бы они оттуда достали целый иписод с текстураме.

__________________
My Projects: download page

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

Цитата:

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


Временная зона GMT. Текущее время 22:46. Страницы (78): « Первая ... « 32 33 34 35 [36] 37 38 39 40 » ... Последняя »
Показать все 1159 сообщений этой темы на одной странице

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