Sidebar

Xash3D SDL2 форк

gfdjr5

[NULL]
Nov 25, 2012
562
0
0
Дядя Миша said:
Там один наш общий товарищ что-то нарушил. Но пока сложно сказать, что именно.
Ну, что-то с реакцией на получение урона, предположу
Если бы я мог посмотреть код, сказал бы точнее
Я думал, за код ответственен только ты

Дядя Миша said:
А не, так не получится, об этом меня еще Elber просил.
Ну, давай я тебе такой запилю
 

gfdjr5

[NULL]
Nov 25, 2012
562
0
0
Дядя Миша said:
Не запилиш... там всю обработку кнопок в классе пушек переделывать. Ну нахер.
Ты бы показал её хотя бы
 

mittorn

Active member
Apr 22, 2010
1,229
22
38
2 Aptem:
А разве она уже уже ломалась? Видел только комментарий, где клиент не загружался, но он свой был, так что скорее всего файл студии забыли кинуть туда какой-то.
Не так давно проверял - XashXT работал. Ок, проверю снова.
 

mittorn

Active member
Apr 22, 2010
1,229
22
38
2 Aptem:
Баг локализован, там структуру публичную бездумно изменили
 

mittorn

Active member
Apr 22, 2010
1,229
22
38
2 Дядя Миша:
Не совсем так.
Оно и раньше там крашилось. Просто не успевало из-за краша в темпентитях (или даже успевало, не помню уже).
 

mittorn

Active member
Apr 22, 2010
1,229
22
38
2 Дядя Миша:
Если тебе вдруг интересно, о чём была речь - вот:
Code:
diff --git a/engine/client/cl_tent.c b/engine/client/cl_tent.c
index 3a56f2b..dd69407 100644
--- a/engine/client/cl_tent.c
+++ b/engine/client/cl_tent.c
@@ -2084,7 +2084,10 @@ void CL_ParseTempEntity( sizebuf_t *msg )
 		if( type == TE_DECALHIGH || type == TE_WORLDDECALHIGH )
 			decalIndex += 256;
 		pEnt = CL_GetEntityByIndex( entityIndex );
-		if( pEnt ) modelIndex = pEnt->curstate.modelindex;
+		if( pEnt )
+			modelIndex = pEnt->curstate.modelindex;
+		else
+			modelIndex = 0;
 		CL_DecalShoot( CL_DecalIndex( decalIndex ), entityIndex, modelIndex, pos, 0 );
 		break;
 	case TE_FIZZ:
 
Staff member
VIP
Mar 28, 2010
15,566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Code:
+		if( pEnt )
+			modelIndex = pEnt->curstate.modelindex;
+		else
+			modelIndex = 0;
Code:
void CL_ParseTempEntity( sizebuf_t *msg )
{
	sizebuf_t		buf;
	byte		pbuf[256];
	int		iSize = BF_ReadByte( msg );
	int		type, color, count, flags;
	int		decalIndex, modelIndex, entityIndex;
	float		scale, life, frameRate, vel, random;
	float		brightness, r, g, b;
	vec3_t		pos, pos2, ang;
	int		decalIndices[1];	// just stub
	TEMPENTITY	*pTemp;
	cl_entity_t	*pEnt;
	dlight_t		*dl;

[b][color=red]----->[/color][/b]decalIndex = modelIndex = entityIndex = 0;
не по глазам?
 

mittorn

Active member
Apr 22, 2010
1,229
22
38
Значит в этом месте раньше краш исправился?
 

mittorn

Active member
Apr 22, 2010
1,229
22
38
2 Дядя Миша:
да всё, разобрался, как только до кода дополз.
Не так понял сначала.
В основном все эти исправления - результат использования проверок, доступных в разных компиляторах (в т.ч runtime проверок). Это позволяет выявить подобные некорректные места Из-за этого и исправление не очень удачным оказалось - лучше конечно при инициализации. Просто иногда такие ошибки правятся там, где их увидели.
А сразу увидеть, что не очень хорошо вышло, не получилось т.к обычно читается diff - только изменённые строки, а не вся функция.
 
Staff member
VIP
Mar 28, 2010
15,566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 mittorn: ты не понял. Ваше исправление по сути ничего не меняет из-за вышеприведенной строчки. Но ты утверждаешь, что баг исправился. как так?
 

a1batross

Umu~!
Jan 6, 2015
674
27
2 Дядя Миша:
посмотрел сейчас код с master-ветки. Такой строки с инициализацией нет.

В твоём 3224 есть. Лол. :facepalm: