user messages tested and working
authorBorja Ferrer <faluco@alliedmods.net>
Sun Mar 11 19:26:47 2007 +0000 (2007-03-11)
changeset 5972309b109e2af
parent 596 20a01c05806d
child 598 991d7e247a2c
user messages tested and working
fixed some floating point casts
core/UserMessages.cpp
core/UserMessages.h
core/smn_entities.cpp
     1.1 --- a/core/UserMessages.cpp	Sun Mar 11 18:37:55 2007 +0000
     1.2 +++ b/core/UserMessages.cpp	Sun Mar 11 19:26:47 2007 +0000
     1.3 @@ -244,6 +244,7 @@
     1.4  	m_CurId = msg_type;
     1.5  	m_CurRecFilter = filter;
     1.6  	m_InHook = true;
     1.7 +	m_BlockEndPost = false;
     1.8  
     1.9  	if (!is_intercept_empty)
    1.10  	{
    1.11 @@ -268,7 +269,7 @@
    1.12  
    1.13  void CUserMessages::OnMessageEnd_Post()
    1.14  {
    1.15 -	if (!m_InHook || (META_RESULT_STATUS == MRES_SUPERCEDE))
    1.16 +	if (!m_InHook || m_BlockEndPost)
    1.17  	{
    1.18  		RETURN_META(MRES_IGNORED);
    1.19  	}
    1.20 @@ -340,6 +341,8 @@
    1.21  		pInfo->IsHooked = true;
    1.22  		res = pInfo->Callback->InterceptUserMessage(m_CurId, &m_InterceptBuffer, m_CurRecFilter);
    1.23  
    1.24 +		intercepted = true;
    1.25 +
    1.26  		switch (res)
    1.27  		{
    1.28  		case Pl_Stop:
    1.29 @@ -375,10 +378,10 @@
    1.30  					_DecRefCounter();
    1.31  					continue;
    1.32  				}
    1.33 +				break;
    1.34  			}
    1.35  		}
    1.36  		pInfo->IsHooked = false;
    1.37 -		intercepted = true;
    1.38  		iter++;
    1.39  	}
    1.40  
    1.41 @@ -395,8 +398,6 @@
    1.42  		m_ReadBuffer.StartReading(m_InterceptBuffer.GetBasePointer(), m_InterceptBuffer.GetNumBytesWritten());
    1.43  		engine_bfw->WriteBitsFromBuffer(&m_ReadBuffer, m_InterceptBuffer.GetNumBitsWritten());
    1.44  		ENGINE_CALL(MessageEnd)();
    1.45 -
    1.46 -		goto supercede;
    1.47  	}
    1.48  
    1.49  	pList = &m_msgHooks[m_CurId];
    1.50 @@ -418,8 +419,9 @@
    1.51  		iter++;
    1.52  	}
    1.53  
    1.54 -	RETURN_META(MRES_IGNORED);
    1.55 +	RETURN_META((intercepted) ? MRES_SUPERCEDE : MRES_IGNORED);
    1.56  supercede:
    1.57  	m_InHook = false;
    1.58 +	m_BlockEndPost = true;
    1.59  	RETURN_META(MRES_SUPERCEDE);
    1.60  }
     2.1 --- a/core/UserMessages.h	Sun Mar 11 18:37:55 2007 +0000
     2.2 +++ b/core/UserMessages.h	Sun Mar 11 19:26:47 2007 +0000
     2.3 @@ -71,6 +71,7 @@
     2.4  	bf_read m_ReadBuffer;
     2.5  	size_t m_HookCount;
     2.6  	bool m_InHook;
     2.7 +	bool m_BlockEndPost;
     2.8  
     2.9  	Trie *m_Names;
    2.10  	CellRecipientFilter m_CellRecFilter;
     3.1 --- a/core/smn_entities.cpp	Sun Mar 11 18:37:55 2007 +0000
     3.2 +++ b/core/smn_entities.cpp	Sun Mar 11 19:26:47 2007 +0000
     3.3 @@ -351,9 +351,9 @@
     3.4  	cell_t *vec;
     3.5  	pContext->LocalToPhysAddr(params[3], &vec);
     3.6  
     3.7 -	vec[0] = v->x;
     3.8 -	vec[1] = v->y;
     3.9 -	vec[2] = v->z;
    3.10 +	vec[0] = sp_ftoc(v->x);
    3.11 +	vec[1] = sp_ftoc(v->y);
    3.12 +	vec[2] = sp_ftoc(v->z);
    3.13  
    3.14  	return 1;
    3.15  }
    3.16 @@ -379,9 +379,9 @@
    3.17  	cell_t *vec;
    3.18  	pContext->LocalToPhysAddr(params[3], &vec);
    3.19  
    3.20 -	v->x = vec[0];
    3.21 -	v->y = vec[1];
    3.22 -	v->z = vec[2];
    3.23 +	v->x = sp_ctof(vec[0]);
    3.24 +	v->y = sp_ctof(vec[1]);
    3.25 +	v->z = sp_ctof(vec[2]);
    3.26  
    3.27  	if (params[4])
    3.28  	{