initial import of fakemeta_amxx
This commit is contained in:
		
							
								
								
									
										442
									
								
								dlls/fakemeta/CVector.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										442
									
								
								dlls/fakemeta/CVector.h
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,442 @@
 | 
			
		||||
/* AMX Mod X
 | 
			
		||||
*
 | 
			
		||||
* by the AMX Mod X Development Team
 | 
			
		||||
*  originally developed by OLO
 | 
			
		||||
*
 | 
			
		||||
*
 | 
			
		||||
*  This program is free software; you can redistribute it and/or modify it
 | 
			
		||||
*  under the terms of the GNU General Public License as published by the
 | 
			
		||||
*  Free Software Foundation; either version 2 of the License, or (at
 | 
			
		||||
*  your option) any later version.
 | 
			
		||||
*
 | 
			
		||||
*  This program is distributed in the hope that it will be useful, but
 | 
			
		||||
*  WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 | 
			
		||||
*  General Public License for more details.
 | 
			
		||||
*
 | 
			
		||||
*  You should have received a copy of the GNU General Public License
 | 
			
		||||
*  along with this program; if not, write to the Free Software Foundation,
 | 
			
		||||
*  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 | 
			
		||||
*
 | 
			
		||||
*  In addition, as a special exception, the author gives permission to
 | 
			
		||||
*  link the code of this program with the Half-Life Game Engine ("HL
 | 
			
		||||
*  Engine") and Modified Game Libraries ("MODs") developed by Valve,
 | 
			
		||||
*  L.L.C ("Valve"). You must obey the GNU General Public License in all
 | 
			
		||||
*  respects for all of the code used other than the HL Engine and MODs
 | 
			
		||||
*  from Valve. If you modify this file, you may extend this exception
 | 
			
		||||
*  to your version of the file, but you are not obligated to do so. If
 | 
			
		||||
*  you do not wish to do so, delete this exception statement from your
 | 
			
		||||
*  version.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef __CVECTOR_H__
 | 
			
		||||
#define __CVECTOR_H__
 | 
			
		||||
 | 
			
		||||
// Vector
 | 
			
		||||
template <class T> class CVector
 | 
			
		||||
{
 | 
			
		||||
	bool Grow()
 | 
			
		||||
	{
 | 
			
		||||
		// automatic grow
 | 
			
		||||
		size_t newSize = m_Size * 2;
 | 
			
		||||
		if (newSize == 0)
 | 
			
		||||
			newSize = 8;					// a good init value
 | 
			
		||||
		T *newData = new T[newSize];
 | 
			
		||||
		if (!newData)
 | 
			
		||||
			return false;
 | 
			
		||||
		if (m_Data)
 | 
			
		||||
		{
 | 
			
		||||
			memcpy(newData, m_Data, m_Size * sizeof(T));
 | 
			
		||||
			delete [] m_Data;
 | 
			
		||||
		}
 | 
			
		||||
		m_Data = newData;
 | 
			
		||||
		m_Size = newSize;
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bool GrowIfNeeded()
 | 
			
		||||
	{
 | 
			
		||||
		if (m_CurrentUsedSize >= m_Size)
 | 
			
		||||
			return Grow();
 | 
			
		||||
		else
 | 
			
		||||
			return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bool ChangeSize(size_t size)
 | 
			
		||||
	{
 | 
			
		||||
		// change size
 | 
			
		||||
		if (size == m_Size)
 | 
			
		||||
			return true;
 | 
			
		||||
		T *newData = new T[size];
 | 
			
		||||
		if (!newData)
 | 
			
		||||
			return false;
 | 
			
		||||
		if (m_Data)
 | 
			
		||||
		{
 | 
			
		||||
			memcpy(newData, m_Data, (m_Size < size) ? (m_Size * sizeof(T)) : (size * sizeof(T)));
 | 
			
		||||
			delete [] m_Data;
 | 
			
		||||
		}
 | 
			
		||||
		if (m_Size < size)
 | 
			
		||||
			m_CurrentUsedSize = size;
 | 
			
		||||
		m_Data = newData;
 | 
			
		||||
		m_Size = size;
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void FreeMemIfPossible()
 | 
			
		||||
	{
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
protected:
 | 
			
		||||
	T *m_Data;
 | 
			
		||||
	size_t m_Size;
 | 
			
		||||
	size_t m_CurrentUsedSize;
 | 
			
		||||
	size_t m_CurrentSize;
 | 
			
		||||
public:
 | 
			
		||||
	class iterator
 | 
			
		||||
	{
 | 
			
		||||
	protected:
 | 
			
		||||
		T *m_Ptr;
 | 
			
		||||
	public:
 | 
			
		||||
		// constructors / destructors
 | 
			
		||||
		iterator()
 | 
			
		||||
		{
 | 
			
		||||
			m_Ptr = NULL;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator(T * ptr)
 | 
			
		||||
		{
 | 
			
		||||
			m_Ptr = ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// member functions
 | 
			
		||||
		T * base()
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		const T * base() const
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// operators
 | 
			
		||||
		T & operator*()
 | 
			
		||||
		{
 | 
			
		||||
			return *m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		T * operator->()
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator & operator++()		// preincrement
 | 
			
		||||
		{
 | 
			
		||||
			++m_Ptr;
 | 
			
		||||
			return (*this);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator operator++(int)	// postincrement
 | 
			
		||||
		{
 | 
			
		||||
			iterator tmp = *this;
 | 
			
		||||
			++m_Ptr;
 | 
			
		||||
			return tmp;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator & operator--()		// predecrement
 | 
			
		||||
		{
 | 
			
		||||
			--m_Ptr;
 | 
			
		||||
			return (*this);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator operator--(int)	// postdecrememnt
 | 
			
		||||
		{
 | 
			
		||||
			iterator tmp = *this;
 | 
			
		||||
			--m_Ptr;
 | 
			
		||||
			return tmp;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator==(T * right) const
 | 
			
		||||
		{
 | 
			
		||||
			return (m_Ptr == right);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator==(const iterator & right) const
 | 
			
		||||
		{
 | 
			
		||||
			return (m_Ptr == right.m_Ptr);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator!=(T * right) const
 | 
			
		||||
		{
 | 
			
		||||
			return (m_Ptr != right);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator!=(const iterator & right) const
 | 
			
		||||
		{
 | 
			
		||||
			return (m_Ptr != right.m_Ptr);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator & operator+=(size_t offset)
 | 
			
		||||
		{
 | 
			
		||||
			m_Ptr += offset;
 | 
			
		||||
			return (*this);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator & operator-=(size_t offset)
 | 
			
		||||
		{
 | 
			
		||||
			m_Ptr += offset;
 | 
			
		||||
			return (*this);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator operator+(size_t offset) const
 | 
			
		||||
		{
 | 
			
		||||
			iterator tmp(*this);
 | 
			
		||||
			tmp.m_Ptr += offset;
 | 
			
		||||
			return tmp;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator operator-(size_t offset) const
 | 
			
		||||
		{
 | 
			
		||||
			iterator tmp(*this);
 | 
			
		||||
			tmp.m_Ptr += offset;
 | 
			
		||||
			return tmp;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		T & operator[](size_t offset)
 | 
			
		||||
		{
 | 
			
		||||
			return (*(*this + offset));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		const T & operator[](size_t offset) const
 | 
			
		||||
		{
 | 
			
		||||
			return (*(*this + offset));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator<(const iterator & right) const
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr < right.m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator>(const iterator & right) const
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr > right.m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator<=(const iterator & right) const
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr <= right.m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator>=(const iterator & right) const
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr >= right.m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		size_t operator-(const iterator & right) const
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr - right.m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	// constructors / destructors
 | 
			
		||||
	CVector<T>()
 | 
			
		||||
	{
 | 
			
		||||
		m_Size = 0;
 | 
			
		||||
		m_CurrentUsedSize = 0;
 | 
			
		||||
		m_Data = NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	CVector<T>(const CVector<T> & other)
 | 
			
		||||
	{
 | 
			
		||||
		// copy data
 | 
			
		||||
		m_Data = new T [other.m_Size];
 | 
			
		||||
		m_Size = other.m_Size;
 | 
			
		||||
		m_CurrentUsedSize = other.m_CurrentUsedSize;
 | 
			
		||||
		memcpy(m_Data, other.m_Data, m_CurrentUsedSize * sizeof(T));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	~CVector<T>()
 | 
			
		||||
	{
 | 
			
		||||
		clear();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// interface
 | 
			
		||||
	size_t size() const
 | 
			
		||||
	{
 | 
			
		||||
		return m_CurrentUsedSize;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	size_t capacity() const
 | 
			
		||||
	{
 | 
			
		||||
		return m_Size;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	iterator begin()
 | 
			
		||||
	{
 | 
			
		||||
		return iterator(m_Data);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	iterator end()
 | 
			
		||||
	{
 | 
			
		||||
		return iterator(m_Data + m_CurrentUsedSize);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	iterator iterAt(size_t pos)
 | 
			
		||||
	{
 | 
			
		||||
		if (pos > m_CurrentUsedSize)
 | 
			
		||||
			ASSERT(0);
 | 
			
		||||
		return iterator(m_Data + pos);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bool reserve(size_t newSize)
 | 
			
		||||
	{
 | 
			
		||||
		return ChangeSize(newSize);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bool push_back(const T & elem)
 | 
			
		||||
	{
 | 
			
		||||
		++m_CurrentUsedSize;
 | 
			
		||||
		if (!GrowIfNeeded())
 | 
			
		||||
		{
 | 
			
		||||
			--m_CurrentUsedSize;
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		m_Data[m_CurrentUsedSize - 1] = elem;
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void pop_back()
 | 
			
		||||
	{
 | 
			
		||||
		--m_CurrentUsedSize;
 | 
			
		||||
		if (m_CurrentUsedSize < 0)
 | 
			
		||||
			m_CurrentUsedSize = 0;
 | 
			
		||||
		// :TODO: free memory sometimes
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bool resize(size_t newSize)
 | 
			
		||||
	{
 | 
			
		||||
		if (!ChangeSize(newSize))
 | 
			
		||||
			return false;
 | 
			
		||||
		FreeMemIfPossible();
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bool empty() const
 | 
			
		||||
	{
 | 
			
		||||
		return (m_CurrentUsedSize == 0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	T & at(size_t pos)
 | 
			
		||||
	{
 | 
			
		||||
		if (pos > m_CurrentUsedSize)
 | 
			
		||||
		{
 | 
			
		||||
			ASSERT(0);
 | 
			
		||||
		}
 | 
			
		||||
		return m_Data[pos];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const  T & at(size_t pos) const
 | 
			
		||||
	{
 | 
			
		||||
		if (pos > m_CurrentUsedSize)
 | 
			
		||||
		{
 | 
			
		||||
			ASSERT(0);
 | 
			
		||||
		}
 | 
			
		||||
		return m_Data[pos];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	T & operator[](size_t pos)
 | 
			
		||||
	{
 | 
			
		||||
		return at(pos);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const T & operator[](size_t pos) const
 | 
			
		||||
	{
 | 
			
		||||
		return at(pos);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	T & front()
 | 
			
		||||
	{
 | 
			
		||||
		if (m_CurrentUsedSize < 1)
 | 
			
		||||
		{
 | 
			
		||||
			ASSERT(0);
 | 
			
		||||
		}
 | 
			
		||||
		return m_Data[0];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const T & front() const
 | 
			
		||||
	{
 | 
			
		||||
		if (m_CurrentUsedSize < 1)
 | 
			
		||||
		{
 | 
			
		||||
			ASSERT(0);
 | 
			
		||||
		}
 | 
			
		||||
		return m_Data[0];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	T & back()
 | 
			
		||||
	{
 | 
			
		||||
		if (m_CurrentUsedSize < 1)
 | 
			
		||||
		{
 | 
			
		||||
			ASSERT(0);
 | 
			
		||||
		}
 | 
			
		||||
		return m_Data[m_CurrentUsedSize - 1];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const T & back() const
 | 
			
		||||
	{
 | 
			
		||||
		if (m_CurrentUsedSize < 1)
 | 
			
		||||
		{
 | 
			
		||||
			ASSERT(0);
 | 
			
		||||
		}
 | 
			
		||||
		return m_Data[m_CurrentUsedSize - 1];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bool insert(iterator where, const T & value)
 | 
			
		||||
	{
 | 
			
		||||
		// we have to insert before
 | 
			
		||||
		// if it is begin, don't decrement
 | 
			
		||||
		if (where != m_Data)
 | 
			
		||||
			--where;
 | 
			
		||||
		// validate iter
 | 
			
		||||
		if (where < m_Data || where >= (m_Data + m_CurrentUsedSize))
 | 
			
		||||
			return false;
 | 
			
		||||
 | 
			
		||||
		++m_CurrentUsedSize;
 | 
			
		||||
		if (!GrowIfNeeded())
 | 
			
		||||
		{
 | 
			
		||||
			--m_CurrentUsedSize;
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		memmove(where.base() + 1, where.base(), m_CurrentUsedSize - (where - m_Data));
 | 
			
		||||
		memcpy(where.base(), &value, sizeof(T));
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void erase(iterator where)
 | 
			
		||||
	{
 | 
			
		||||
		// validate iter
 | 
			
		||||
		if (where < m_Data || where >= (m_Data + m_CurrentUsedSize))
 | 
			
		||||
			return false;
 | 
			
		||||
 | 
			
		||||
		if (m_CurrentUsedSize > 1)
 | 
			
		||||
		{
 | 
			
		||||
			// move
 | 
			
		||||
			memmove(where.base(), where.base() + 1, m_CurrentUsedSize - 1);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		--m_CurrentUsedSize;
 | 
			
		||||
		// :TODO: free memory sometimes
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void clear()
 | 
			
		||||
	{
 | 
			
		||||
		m_Size = 0;
 | 
			
		||||
		m_CurrentUsedSize = 0;
 | 
			
		||||
		delete [] m_Data;
 | 
			
		||||
		m_Data = NULL;
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // __CVECTOR_H__
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										224
									
								
								dlls/fakemeta/dllfunc.cpp
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										224
									
								
								dlls/fakemeta/dllfunc.cpp
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,224 @@
 | 
			
		||||
#include "fakemeta_amxx.h"
 | 
			
		||||
 | 
			
		||||
//by mahnsawce from his NS module
 | 
			
		||||
static cell AMX_NATIVE_CALL dllfunc(AMX *amx,cell *params)
 | 
			
		||||
{
 | 
			
		||||
	int type;
 | 
			
		||||
	int index;
 | 
			
		||||
	int indexb;
 | 
			
		||||
	char *temp = "";
 | 
			
		||||
	char *temp2 = "";
 | 
			
		||||
	char *temp3 = "";
 | 
			
		||||
	vec3_t Vec1;
 | 
			
		||||
	vec3_t Vec2;
 | 
			
		||||
	int iparam1;
 | 
			
		||||
	int len;
 | 
			
		||||
	cell *cRet;
 | 
			
		||||
	type = params[1];
 | 
			
		||||
	switch(type)
 | 
			
		||||
	{
 | 
			
		||||
 | 
			
		||||
		// pfnGameInit
 | 
			
		||||
	case	DLLFunc_GameInit:	// void)			( void );				
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnGameInit();
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
		// pfnSpawn
 | 
			
		||||
	case	DLLFunc_Spawn:	// int )				( edict_t *pent );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		return gpGamedllFuncs->dllapi_table->pfnSpawn(INDEXENT(index));
 | 
			
		||||
 | 
			
		||||
		// pfnThink
 | 
			
		||||
	case	DLLFunc_Think:	// void )				( edict_t *pent );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnThink(INDEXENT(index));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
		// pfnUse
 | 
			
		||||
	case	DLLFunc_Use:	// void )				( edict_t *pentUsed, edict_t *pentOther );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		indexb=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(indexb);
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnUse(INDEXENT(index),INDEXENT(indexb));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
		// pfnTouch
 | 
			
		||||
	case	DLLFunc_Touch:	// void )				( edict_t *pentTouched, edict_t *pentOther );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		indexb=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(indexb);
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnTouch(INDEXENT(index),INDEXENT(indexb));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	case	DLLFunc_Blocked:	// void )			( edict_t *pentBlocked, edict_t *pentOther );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		indexb=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(indexb);
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnBlocked(INDEXENT(index),INDEXENT(indexb));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
		
 | 
			
		||||
	case	DLLFunc_SetAbsBox:			// void )			( edict_t *pent );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnSetAbsBox(INDEXENT(index));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	case	DLLFunc_ClientConnect:		// bool)		( edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ] );
 | 
			
		||||
		// index,szName,szAddress,szRetRejectReason,size
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[3],0,&len);
 | 
			
		||||
		temp2 = MF_GetAmxString(amx,params[4],1,&len);
 | 
			
		||||
		//temp3 = GET_AMXSTRING(amx,params[5],2,len);
 | 
			
		||||
		iparam1 = MDLL_ClientConnect(INDEXENT(index),STRING(ALLOC_STRING(temp)),STRING(ALLOC_STRING(temp2)),temp3);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[6]);
 | 
			
		||||
		MF_SetAmxString(amx,params[5],temp3,cRet[0]);
 | 
			
		||||
		return 1;
 | 
			
		||||
	
 | 
			
		||||
	case	DLLFunc_ClientDisconnect:	// void )	( edict_t *pEntity );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnClientDisconnect(INDEXENT(index));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	case	DLLFunc_ClientKill:		// void )		( edict_t *pEntity );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnClientKill(INDEXENT(index));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	case	DLLFunc_ClientPutInServer:	// void )	( edict_t *pEntity );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnClientPutInServer(INDEXENT(index));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	case	DLLFunc_ServerDeactivate:	// void)	( void );
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnServerDeactivate();
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	case	DLLFunc_PlayerPreThink:		// void )	( edict_t *pEntity );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnPlayerPreThink(INDEXENT(index));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	case	DLLFunc_PlayerPostThink:		// void )	( edict_t *pEntity );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnPlayerPostThink(INDEXENT(index));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	case	DLLFunc_StartFrame:		// void )		( void );
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnStartFrame();
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	case	DLLFunc_ParmsNewLevel:		// void )		( void );
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnParmsNewLevel();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	case	DLLFunc_ParmsChangeLevel:	// void )	( void );
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnParmsChangeLevel();
 | 
			
		||||
 | 
			
		||||
	 // Returns string describing current .dll.  E.g., TeamFotrress 2, Half-Life
 | 
			
		||||
	case	DLLFunc_GetGameDescription:	 // const char * )( void );     
 | 
			
		||||
		temp = (char*)gpGamedllFuncs->dllapi_table->pfnGetGameDescription();
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		MF_SetAmxString(amx,params[2],temp,cRet[0]);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
		// Spectator funcs
 | 
			
		||||
	case	DLLFunc_SpectatorConnect:	// void)		( edict_t *pEntity );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnSpectatorConnect(INDEXENT(index));
 | 
			
		||||
		return 1;
 | 
			
		||||
	case	DLLFunc_SpectatorDisconnect:	// void )	( edict_t *pEntity );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnSpectatorDisconnect(INDEXENT(index));
 | 
			
		||||
		return 1;
 | 
			
		||||
	case	DLLFunc_SpectatorThink:		// void )		( edict_t *pEntity );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnSpectatorThink(INDEXENT(index));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	// Notify game .dll that engine is going to shut down.  Allows mod authors to set a breakpoint.
 | 
			
		||||
	case	DLLFunc_Sys_Error:		// void )			( const char *error_string );
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[2],0,&len);
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnSys_Error(STRING(ALLOC_STRING(temp)));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	case	DLLFunc_PM_FindTextureType:	// char )( char *name );
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[2],0,&len);
 | 
			
		||||
		return gpGamedllFuncs->dllapi_table->pfnPM_FindTextureType(temp);
 | 
			
		||||
 | 
			
		||||
	case	DLLFunc_RegisterEncoders:	// void )	( void );
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnRegisterEncoders;
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	// Enumerates player hulls.  Returns 0 if the hull number doesn't exist, 1 otherwise
 | 
			
		||||
	case	DLLFunc_GetHullBounds:	// int)	( int hullnumber, float *mins, float *maxs );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		iparam1 = gpGamedllFuncs->dllapi_table->pfnGetHullBounds(cRet[0],Vec1,Vec2);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		cRet[0]=amx_ftoc(Vec1[0]);
 | 
			
		||||
		cRet[1]=amx_ftoc(Vec1[1]);
 | 
			
		||||
		cRet[2]=amx_ftoc(Vec1[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		cRet[0]=amx_ftoc(Vec2[0]);
 | 
			
		||||
		cRet[1]=amx_ftoc(Vec2[1]);
 | 
			
		||||
		cRet[2]=amx_ftoc(Vec2[2]);
 | 
			
		||||
		return iparam1;
 | 
			
		||||
 | 
			
		||||
	// Create baselines for certain "unplaced" items.
 | 
			
		||||
	case	DLLFunc_CreateInstancedBaselines:	// void ) ( void );
 | 
			
		||||
		gpGamedllFuncs->dllapi_table->pfnCreateInstancedBaselines();
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	case	DLLFunc_pfnAllowLagCompensation:	// int )( void );
 | 
			
		||||
		return gpGamedllFuncs->dllapi_table->pfnAllowLagCompensation();
 | 
			
		||||
		// I know this doesn't fit with dllfunc, but I dont want to create another native JUST for this.
 | 
			
		||||
	case	MetaFunc_CallGameEntity:	// bool	(plid_t plid, const char *entStr,entvars_t *pev);
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[2],0,&len);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		iparam1 = gpMetaUtilFuncs->pfnCallGameEntity(PLID,STRING(ALLOC_STRING(temp)),VARS(INDEXENT(index)));
 | 
			
		||||
		return iparam1;
 | 
			
		||||
	default:
 | 
			
		||||
		MF_Log("Unknown dllfunc entry.");
 | 
			
		||||
		MF_RaiseAmxError(amx, AMX_ERR_NATIVE);
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AMX_NATIVE_INFO dllfunc_natives[] = {
 | 
			
		||||
	{"dllfunc",			dllfunc},
 | 
			
		||||
	{NULL,				NULL},
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										54
									
								
								dlls/fakemeta/dllfunc.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										54
									
								
								dlls/fakemeta/dllfunc.h
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
#ifndef _INCLUDE_DLLFUNC_H
 | 
			
		||||
#define _INCLUDE_DLLFUNC_H
 | 
			
		||||
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
	DLLFunc_GameInit,	// void)			( void );				
 | 
			
		||||
	DLLFunc_Spawn,	// int )				( edict_t *pent );
 | 
			
		||||
	DLLFunc_Think,	// void )				( edict_t *pent );
 | 
			
		||||
	DLLFunc_Use,	// void )				( edict_t *pentUsed, edict_t *pentOther );
 | 
			
		||||
	DLLFunc_Touch,	// void )				( edict_t *pentTouched, edict_t *pentOther );
 | 
			
		||||
	DLLFunc_Blocked,	// void )			( edict_t *pentBlocked, edict_t *pentOther );
 | 
			
		||||
	DLLFunc_KeyValue,	// void )			( edict_t *pentKeyvalue, KeyValueData *pkvd );
 | 
			
		||||
	DLLFunc_SetAbsBox,			// void )			( edict_t *pent );
 | 
			
		||||
	DLLFunc_ClientConnect,		// bool)		( edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ] );
 | 
			
		||||
	
 | 
			
		||||
	DLLFunc_ClientDisconnect,	// void )	( edict_t *pEntity );
 | 
			
		||||
	DLLFunc_ClientKill,		// void )		( edict_t *pEntity );
 | 
			
		||||
	DLLFunc_ClientPutInServer,	// void )	( edict_t *pEntity );
 | 
			
		||||
	DLLFunc_ClientCommand,		// void )		( edict_t *pEntity );
 | 
			
		||||
 | 
			
		||||
	DLLFunc_ServerDeactivate,	// void)	( void );
 | 
			
		||||
 | 
			
		||||
	DLLFunc_PlayerPreThink,		// void )	( edict_t *pEntity );
 | 
			
		||||
	DLLFunc_PlayerPostThink,		// void )	( edict_t *pEntity );
 | 
			
		||||
 | 
			
		||||
	DLLFunc_StartFrame,		// void )		( void );
 | 
			
		||||
	DLLFunc_ParmsNewLevel,		// void )		( void );
 | 
			
		||||
	DLLFunc_ParmsChangeLevel,	// void )	( void );
 | 
			
		||||
 | 
			
		||||
	 // Returns string describing current .dll.  E.g., TeamFotrress 2, Half-Life
 | 
			
		||||
	DLLFunc_GetGameDescription,	 // const char * )( void );     
 | 
			
		||||
 | 
			
		||||
	// Spectator funcs
 | 
			
		||||
	DLLFunc_SpectatorConnect,	// void)		( edict_t *pEntity );
 | 
			
		||||
	DLLFunc_SpectatorDisconnect,	// void )	( edict_t *pEntity );
 | 
			
		||||
	DLLFunc_SpectatorThink,		// void )		( edict_t *pEntity );
 | 
			
		||||
 | 
			
		||||
	// Notify game .dll that engine is going to shut down.  Allows mod authors to set a breakpoint.
 | 
			
		||||
	DLLFunc_Sys_Error,		// void )			( const char *error_string );
 | 
			
		||||
 | 
			
		||||
	DLLFunc_PM_FindTextureType,	// char )( char *name );
 | 
			
		||||
	DLLFunc_RegisterEncoders,	// void )	( void );
 | 
			
		||||
 | 
			
		||||
	// Enumerates player hulls.  Returns 0 if the hull number doesn't exist, 1 otherwise
 | 
			
		||||
	DLLFunc_GetHullBounds,	// int)	( int hullnumber, float *mins, float *maxs );
 | 
			
		||||
 | 
			
		||||
	// Create baselines for certain "unplaced" items.
 | 
			
		||||
	DLLFunc_CreateInstancedBaselines,	// void ) ( void );
 | 
			
		||||
	DLLFunc_pfnAllowLagCompensation,	// int )( void );
 | 
			
		||||
	// I know this does not fit with DLLFUNC(), but I dont want another native just for it.
 | 
			
		||||
	MetaFunc_CallGameEntity	// bool	(plid_t plid, const char *entStr,entvars_t *pev);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //_INCLUDE_DLLFUNC_H
 | 
			
		||||
							
								
								
									
										975
									
								
								dlls/fakemeta/engfunc.cpp
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										975
									
								
								dlls/fakemeta/engfunc.cpp
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,975 @@
 | 
			
		||||
#include "fakemeta_amxx.h"
 | 
			
		||||
 | 
			
		||||
TraceResult g_tr;
 | 
			
		||||
 | 
			
		||||
//by mahnsawce from his NS module
 | 
			
		||||
static cell AMX_NATIVE_CALL engfunc(AMX *amx, cell *params)
 | 
			
		||||
{
 | 
			
		||||
	// Variables I will need throughout all the different calls.
 | 
			
		||||
	int type = params[1];
 | 
			
		||||
//	LOG_CONSOLE(PLID,"Called: %i %i",type,*params/sizeof(cell));
 | 
			
		||||
	int len;
 | 
			
		||||
	char *temp;
 | 
			
		||||
	char *temp2;
 | 
			
		||||
	cell *cRet;
 | 
			
		||||
	vec3_t	Vec1;
 | 
			
		||||
	vec3_t	Vec2;
 | 
			
		||||
	vec3_t	Vec3;
 | 
			
		||||
	vec3_t	Vec4;
 | 
			
		||||
	int iparam1;
 | 
			
		||||
	int iparam2;
 | 
			
		||||
	int iparam3;
 | 
			
		||||
	int iparam4;
 | 
			
		||||
	int iparam5;
 | 
			
		||||
	int iparam6;
 | 
			
		||||
	float fparam1;
 | 
			
		||||
	float fparam2;
 | 
			
		||||
	float fparam3;
 | 
			
		||||
//	float fTemp[3];
 | 
			
		||||
	int index;
 | 
			
		||||
	edict_t *pRet=NULL;
 | 
			
		||||
	// Now start calling.. :/
 | 
			
		||||
	switch (type)
 | 
			
		||||
	{
 | 
			
		||||
		// pfnPrecacheModel
 | 
			
		||||
	case 	EngFunc_PrecacheModel:	// int  )			(char* s);
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[2],0,&len);
 | 
			
		||||
		if (temp[0]==0)
 | 
			
		||||
			return 0;
 | 
			
		||||
		return (*g_engfuncs.pfnPrecacheModel)((char*)STRING(ALLOC_STRING(temp)));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnPrecacheSound
 | 
			
		||||
	case	EngFunc_PrecacheSound:	// int  )			(char* s);
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[2],0,&len);
 | 
			
		||||
		if (temp[0]==0)
 | 
			
		||||
			return 0;
 | 
			
		||||
		return (*g_engfuncs.pfnPrecacheSound)((char*)STRING(ALLOC_STRING(temp)));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnSetModel
 | 
			
		||||
	case	EngFunc_SetModel:		// void )				(edict_t *e, const char *m);
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[3],0,&len);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		(*g_engfuncs.pfnSetModel)(INDEXENT(index),(char*)STRING(ALLOC_STRING(temp)));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnModelIndex
 | 
			
		||||
	case 	EngFunc_ModelIndex:
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[2],0,&len);
 | 
			
		||||
		return (*g_engfuncs.pfnModelIndex)(temp);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnModelFrames
 | 
			
		||||
	case	EngFunc_ModelFrames:	// int	)			(int modelIndex);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		return (*g_engfuncs.pfnModelFrames)(index);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnSetSize
 | 
			
		||||
	case	EngFunc_SetSize:		// void )				(edict_t *e, const float *rgflMin, const float *rgflMax);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		Vec2[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec2[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec2[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		(*g_engfuncs.pfnSetSize)(INDEXENT(index),Vec1,Vec2);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnChangeLevel (is this needed?)
 | 
			
		||||
	case		EngFunc_ChangeLevel:			// void )			(char* s1, char* s2);
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[2],0,&len);
 | 
			
		||||
		temp2 = MF_GetAmxString(amx,params[3],1,&len);
 | 
			
		||||
		(*g_engfuncs.pfnChangeLevel)(temp,temp2);
 | 
			
		||||
		return 1;
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
		// pfnVecToYaw
 | 
			
		||||
	case		EngFunc_VecToYaw:			// float)				(const float *rgflVector);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		fparam1= (*g_engfuncs.pfnVecToYaw)(Vec1);
 | 
			
		||||
		cRet[0] = amx_ftoc(fparam1);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnVecToAngles
 | 
			
		||||
	case		EngFunc_VecToAngles:			// void )			(const float *rgflVectorIn, float *rgflVectorOut);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
 | 
			
		||||
		(*g_engfuncs.pfnVecToAngles)(Vec1,Vec2);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		cRet[0]=amx_ftoc(Vec2[0]);
 | 
			
		||||
		cRet[1]=amx_ftoc(Vec2[1]);
 | 
			
		||||
		cRet[2]=amx_ftoc(Vec2[2]);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnMoveToOrigin
 | 
			
		||||
	case		EngFunc_MoveToOrigin:		// void )			(edict_t *ent, const float *pflGoal, float dist, int iMoveType);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		fparam1=amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		iparam1=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		(*g_engfuncs.pfnMoveToOrigin)(INDEXENT(index),Vec1,fparam1,iparam1);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnChangeYaw
 | 
			
		||||
	case		EngFunc_ChangeYaw:			// void )				(edict_t* ent);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		(*g_engfuncs.pfnChangeYaw)(INDEXENT(index));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnChangePitch
 | 
			
		||||
	case		EngFunc_ChangePitch:			// void )			(edict_t* ent);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		(*g_engfuncs.pfnChangePitch)(INDEXENT(index));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnFindEntityByString
 | 
			
		||||
	case		EngFunc_FindEntityByString:	// edict)	(edict_t *pEdictStartSearchAfter, const char *pszField, const char *pszValue);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[3],0,&len);
 | 
			
		||||
		temp2 = MF_GetAmxString(amx,params[4],1,&len);
 | 
			
		||||
		pRet = (*g_engfuncs.pfnFindEntityByString)(index == -1 ? NULL : INDEXENT(index),temp,temp2);
 | 
			
		||||
		if (pRet)
 | 
			
		||||
			return ENTINDEX(pRet);
 | 
			
		||||
		return -1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnGetEntityIllum
 | 
			
		||||
	case	EngFunc_GetEntityIllum:		// int	)		(edict_t* pEnt);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		return (*g_engfuncs.pfnGetEntityIllum)(INDEXENT(index));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnFindEntityInSphere
 | 
			
		||||
	case 	EngFunc_FindEntityInSphere:	// edict)	(edict_t *pEdictStartSearchAfter, const float *org, float rad);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		fparam1 = amx_ctof(cRet[0]);
 | 
			
		||||
		pRet = (*g_engfuncs.pfnFindEntityInSphere)(index == -1 ? NULL : INDEXENT(index),Vec1,fparam1);
 | 
			
		||||
		if (pRet)
 | 
			
		||||
				return ENTINDEX(pRet);
 | 
			
		||||
		return -1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnFindClientsInPVS
 | 
			
		||||
	case	EngFunc_FindClientInPVS:		// edict)		(edict_t *pEdict);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		pRet=(*g_engfuncs.pfnFindClientInPVS)(INDEXENT(index));
 | 
			
		||||
		return ENTINDEX(pRet);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnEntitiesInPVS
 | 
			
		||||
	case	EngFunc_EntitiesInPVS:		// edict)			(edict_t *pplayer);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		pRet=(*g_engfuncs.pfnEntitiesInPVS)(INDEXENT(index));
 | 
			
		||||
		return ENTINDEX(pRet);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnMakeVectors
 | 
			
		||||
	case	EngFunc_MakeVectors:			// void )			(const float *rgflVector);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		(*g_engfuncs.pfnMakeVectors)(Vec1);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
		
 | 
			
		||||
		// pfnAngleVectors
 | 
			
		||||
	case	EngFunc_AngleVectors:		// void )			(const float *rgflVector, float *forward, float *right, float *up);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		(*g_engfuncs.pfnAngleVectors)(Vec1,Vec2,Vec3,Vec4);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		cRet[0] = amx_ftoc(Vec2[0]);
 | 
			
		||||
		cRet[1] = amx_ftoc(Vec2[1]);
 | 
			
		||||
		cRet[2] = amx_ftoc(Vec2[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		cRet[0] = amx_ftoc(Vec3[0]);
 | 
			
		||||
		cRet[1] = amx_ftoc(Vec3[1]);
 | 
			
		||||
		cRet[2] = amx_ftoc(Vec3[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		cRet[0] = amx_ftoc(Vec4[0]);
 | 
			
		||||
		cRet[1] = amx_ftoc(Vec4[1]);
 | 
			
		||||
		cRet[2] = amx_ftoc(Vec4[2]);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnCreateEntity
 | 
			
		||||
	case	EngFunc_CreateEntity:		// edict)			(void);
 | 
			
		||||
		pRet = (*g_engfuncs.pfnCreateEntity)();
 | 
			
		||||
		if (pRet)
 | 
			
		||||
			return ENTINDEX(pRet);
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnRemoveEntity
 | 
			
		||||
	case	EngFunc_RemoveEntity:		// void )			(edict_t* e);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		if (index == 0)
 | 
			
		||||
			return 0;
 | 
			
		||||
		(*g_engfuncs.pfnRemoveEntity)(INDEXENT(index));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnCreateNamedEntity
 | 
			
		||||
	case	EngFunc_CreateNamedEntity:	// edict)		(int className);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		pRet = (*g_engfuncs.pfnCreateNamedEntity)(iparam1);
 | 
			
		||||
		if (pRet)
 | 
			
		||||
			return ENTINDEX(pRet);
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnMakeStatic
 | 
			
		||||
	case	EngFunc_MakeStatic:			// void )			(edict_t *ent);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		(*g_engfuncs.pfnMakeStatic)(INDEXENT(index));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnEntIsOnFloor
 | 
			
		||||
	case	EngFunc_EntIsOnFloor:		// int  )			(edict_t *e);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		return (*g_engfuncs.pfnEntIsOnFloor)(INDEXENT(index));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnDropToFloor
 | 
			
		||||
	case	EngFunc_DropToFloor:			// int  )			(edict_t* e);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		return (*g_engfuncs.pfnDropToFloor)(INDEXENT(index));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnWalkMove
 | 
			
		||||
	case	EngFunc_WalkMove:			// int  )				(edict_t *ent, float yaw, float dist, int iMode);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		fparam1 = amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		fparam2 = amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		return (*g_engfuncs.pfnWalkMove)(INDEXENT(index),fparam1,fparam2,iparam1);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnSetOrigin
 | 
			
		||||
	case	EngFunc_SetOrigin:			// void )				(edict_t *e, const float *rgflOrigin);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		(*g_engfuncs.pfnSetOrigin)(INDEXENT(index),Vec1);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnEmitSound
 | 
			
		||||
	case	EngFunc_EmitSound:			// void )				(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		iparam1=cRet[0];
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[4],0,&len);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		fparam1=amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[6]);
 | 
			
		||||
		fparam2=amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[7]);
 | 
			
		||||
		iparam2=cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[8]);
 | 
			
		||||
		iparam3=cRet[0];
 | 
			
		||||
		(*g_engfuncs.pfnEmitSound)(INDEXENT(index),iparam1,temp,fparam1,fparam2,iparam2,iparam3);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnEmitAmbientSound
 | 
			
		||||
	case	EngFunc_EmitAmbientSound:	// void )		(edict_t *entity, float *pos, const char *samp, float vol, float attenuation, int fFlags, int pitch);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[4],0,&len);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		fparam1=amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[6]);
 | 
			
		||||
		fparam2=amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[7]);
 | 
			
		||||
		iparam1=cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[8]);
 | 
			
		||||
		iparam2=cRet[0];
 | 
			
		||||
		(*g_engfuncs.pfnEmitAmbientSound)(INDEXENT(index),Vec1,temp,fparam1,fparam2,iparam1,iparam2);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
		// pfnTraceLine
 | 
			
		||||
	case EngFunc_TraceLine:			// void )				(const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		Vec2[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec2[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec2[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		iparam1=cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		(*g_engfuncs.pfnTraceLine)(Vec1,Vec2,iparam1,index != -1 ? INDEXENT(index) : NULL, &g_tr);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnTraceToss
 | 
			
		||||
	case	EngFunc_TraceToss:			// void )				(edict_t* pent, edict_t* pentToIgnore, TraceResult *ptr);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		(*g_engfuncs.pfnTraceToss)(INDEXENT(index),iparam1 == -1 ? NULL : INDEXENT(iparam1),&g_tr);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnTraceMonsterHull
 | 
			
		||||
	case	EngFunc_TraceMonsterHull:	// int  )		(edict_t *pEdict, const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		Vec2[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec2[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec2[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		iparam1=cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[6]);
 | 
			
		||||
		iparam2=cRet[0];
 | 
			
		||||
		(*g_engfuncs.pfnTraceMonsterHull)(INDEXENT(index),Vec1,Vec2,iparam1,iparam2 == 0 ? NULL : INDEXENT(iparam2),&g_tr);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnTraceHull
 | 
			
		||||
	case	EngFunc_TraceHull:			// void )				(const float *v1, const float *v2, int fNoMonsters, int hullNumber, edict_t *pentToSkip, TraceResult *ptr);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		Vec2[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec2[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec2[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		iparam2 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[6]);
 | 
			
		||||
		iparam3 = cRet[0];
 | 
			
		||||
		(*g_engfuncs.pfnTraceHull)(Vec1,Vec2,iparam1,iparam2,iparam3 == 0 ? 0 : INDEXENT(iparam3),&g_tr);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnTraceModel
 | 
			
		||||
	case	EngFunc_TraceModel:			// void )			(const float *v1, const float *v2, int hullNumber, edict_t *pent, TraceResult *ptr);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		Vec2[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec2[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec2[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		iparam2 = cRet[0];
 | 
			
		||||
		(*g_engfuncs.pfnTraceModel)(Vec1,Vec2,iparam1,iparam2 == 0 ? NULL : INDEXENT(iparam2),&g_tr);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnTraceTexture
 | 
			
		||||
	case EngFunc_TraceTexture:		// const char *)			(edict_t *pTextureEntity, const float *v1, const float *v2 );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		Vec2[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec2[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec2[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		temp = (char*)(*g_engfuncs.pfnTraceTexture)(INDEXENT(index),Vec1,Vec2);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[6]);
 | 
			
		||||
		MF_SetAmxString(amx, params[5], temp, cRet[0]);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
		
 | 
			
		||||
		// pfnTraceSphere
 | 
			
		||||
	case EngFunc_TraceSphere:			// void )			(const float *v1, const float *v2, int fNoMonsters, float radius, edict_t *pentToSkip, TraceResult *ptr);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		Vec2[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec2[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec2[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		fparam1 = amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[6]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		(*g_engfuncs.pfnTraceSphere)(Vec1,Vec2,iparam1,fparam1,index == 0 ? NULL : INDEXENT(index),&g_tr);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnGetAimVector
 | 
			
		||||
	case	EngFunc_GetAimVector:		// void )			(edict_t* ent, float speed, float *rgflReturn);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		fparam1 = amx_ctof(cRet[0]);
 | 
			
		||||
		(*g_engfuncs.pfnGetAimVector)(INDEXENT(index),fparam1,Vec1);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		cRet[0] = amx_ftoc(Vec1[0]);
 | 
			
		||||
		cRet[1] = amx_ftoc(Vec1[1]);
 | 
			
		||||
		cRet[2] = amx_ftoc(Vec1[2]);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnParticleEffect
 | 
			
		||||
	case	EngFunc_ParticleEffect:		// void )		(const float *org, const float *dir, float color, float count);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		Vec2[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec2[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec2[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		fparam1=amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		fparam2=amx_ctof(cRet[0]);
 | 
			
		||||
		(*g_engfuncs.pfnParticleEffect)(Vec1,Vec2,fparam1,fparam2);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
		
 | 
			
		||||
		// pfnLightStyle
 | 
			
		||||
	case	EngFunc_LightStyle:			// void )			(int style, char* val);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		iparam1=cRet[0];
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[3],0,&len);
 | 
			
		||||
		(*g_engfuncs.pfnLightStyle)(iparam1,temp);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnDecalIndex
 | 
			
		||||
	case	EngFunc_DecalIndex:			// int  )			(const char *name);
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[2],0,&len);
 | 
			
		||||
		return (*g_engfuncs.pfnDecalIndex)(temp);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnPointContents
 | 
			
		||||
	case	EngFunc_PointContents:		// int )			(const float *rgflVector);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		return (*g_engfuncs.pfnPointContents)(Vec1);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnFreeEntPrivateData
 | 
			
		||||
	case	EngFunc_FreeEntPrivateData:	// void )	(edict_t *pEdict);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		(*g_engfuncs.pfnFreeEntPrivateData)(INDEXENT(index));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnSzFromIndex
 | 
			
		||||
	case	EngFunc_SzFromIndex:			// const char * )			(int iString);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		temp = (char*)(*g_engfuncs.pfnSzFromIndex)(iparam1);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		MF_SetAmxString(amx, params[3], temp, cRet[0]);
 | 
			
		||||
		return 1;
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
		// pfnAllocString
 | 
			
		||||
	case	EngFunc_AllocString:			// int )			(const char *szValue);
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[2],0,&len);
 | 
			
		||||
		return (*g_engfuncs.pfnAllocString)((const char *)temp);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnRegUserMsg
 | 
			
		||||
	case	EngFunc_RegUserMsg:			// int	)			(const char *pszName, int iSize);
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[2],0,&len);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		return (*g_engfuncs.pfnRegUserMsg)(temp,iparam1);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnAnimationAutomove
 | 
			
		||||
	case	EngFunc_AnimationAutomove:	// void )		(const edict_t* pEdict, float flTime);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		fparam1 = amx_ctof(cRet[0]);
 | 
			
		||||
		(*g_engfuncs.pfnAnimationAutomove)(INDEXENT(index),fparam1);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnGetBonePosition
 | 
			
		||||
	case	EngFunc_GetBonePosition:		// void )		(const edict_t* pEdict, int iBone, float *rgflOrigin, float *rgflAngles );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		iparam1=cRet[0];
 | 
			
		||||
		(*g_engfuncs.pfnGetBonePosition)(INDEXENT(index),iparam1,Vec1,Vec2);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		cRet[0]=amx_ftoc(Vec1[0]);
 | 
			
		||||
		cRet[1]=amx_ftoc(Vec1[1]);
 | 
			
		||||
		cRet[2]=amx_ftoc(Vec1[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		cRet[0]=amx_ftoc(Vec2[0]);
 | 
			
		||||
		cRet[1]=amx_ftoc(Vec2[1]);
 | 
			
		||||
		cRet[2]=amx_ftoc(Vec2[2]);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnGetAttachment
 | 
			
		||||
	case	EngFunc_GetAttachment:		// void	)			(const edict_t *pEdict, int iAttachment, float *rgflOrigin, float *rgflAngles );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index=cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		iparam1=cRet[0];
 | 
			
		||||
		(*g_engfuncs.pfnGetAttachment)(INDEXENT(index),iparam1,Vec1,Vec2);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		cRet[0]=amx_ftoc(Vec1[0]);
 | 
			
		||||
		cRet[1]=amx_ftoc(Vec1[1]);
 | 
			
		||||
		cRet[2]=amx_ftoc(Vec1[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		cRet[0]=amx_ftoc(Vec2[0]);
 | 
			
		||||
		cRet[1]=amx_ftoc(Vec2[1]);
 | 
			
		||||
		cRet[2]=amx_ftoc(Vec2[2]);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnSetView
 | 
			
		||||
	case	EngFunc_SetView:				// void )				(const edict_t *pClient, const edict_t *pViewent );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		iparam2 = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(iparam1);
 | 
			
		||||
		CHECK_ENTITY(iparam2);
 | 
			
		||||
		(*g_engfuncs.pfnSetView)(INDEXENT(iparam1),INDEXENT(iparam2));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnTime
 | 
			
		||||
	case	EngFunc_Time:				// float)					( void );
 | 
			
		||||
		fparam1 = (*g_engfuncs.pfnTime)();
 | 
			
		||||
		return amx_ftoc(fparam1);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnCrosshairAngle
 | 
			
		||||
	case	EngFunc_CrosshairAngle:		// void )		(const edict_t *pClient, float pitch, float yaw);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		fparam1 = amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		fparam2 = amx_ctof(cRet[0]);
 | 
			
		||||
		(*g_engfuncs.pfnCrosshairAngle)(INDEXENT(index),fparam1,fparam2);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnFadeClientVolume
 | 
			
		||||
	case	EngFunc_FadeClientVolume:	// void )      (const edict_t *pEdict, int fadePercent, int fadeOutSeconds, int holdTime, int fadeInSeconds);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		iparam2 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		iparam3 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[6]);
 | 
			
		||||
		iparam4 = cRet[0];
 | 
			
		||||
		(*g_engfuncs.pfnFadeClientVolume)(INDEXENT(index),iparam1,iparam2,iparam3,iparam4);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnSetClientMaxSpeed
 | 
			
		||||
	case	EngFunc_SetClientMaxspeed:	// void )     (const edict_t *pEdict, float fNewMaxspeed);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		fparam1 = amx_ctof(cRet[0]);
 | 
			
		||||
		(*g_engfuncs.pfnSetClientMaxspeed)(INDEXENT(index),fparam1);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnCreateFakeClient
 | 
			
		||||
	case	EngFunc_CreateFakeClient:	// edict)		(const char *netname);	// returns NULL if fake client can't be created
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[2],0,&len);
 | 
			
		||||
		pRet = (*g_engfuncs.pfnCreateFakeClient)(STRING(ALLOC_STRING(temp)));
 | 
			
		||||
		if (pRet == 0)
 | 
			
		||||
			return 0;
 | 
			
		||||
		return ENTINDEX(pRet);
 | 
			
		||||
 | 
			
		||||
		
 | 
			
		||||
		// pfnRunPlayerMove
 | 
			
		||||
	case	EngFunc_RunPlayerMove:		// void )			(edict_t *fakeclient, const float *viewangles, float forwardmove, float sidemove, float upmove, unsigned short buttons, byte impulse, byte msec );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		fparam1=amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		fparam2=amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[6]);
 | 
			
		||||
		fparam3=amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[7]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[8]);
 | 
			
		||||
		iparam2 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[9]);
 | 
			
		||||
		iparam3 = cRet[0];
 | 
			
		||||
		(*g_engfuncs.pfnRunPlayerMove)(INDEXENT(index),Vec1,fparam1,fparam2,fparam3,iparam1,iparam2,iparam3);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnNumberOfEntities
 | 
			
		||||
	case	EngFunc_NumberOfEntities:	// int  )		(void);
 | 
			
		||||
		return (*g_engfuncs.pfnNumberOfEntities)();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnStaticDecal
 | 
			
		||||
	case	EngFunc_StaticDecal:			// void )			( const float *origin, int decalIndex, int entityIndex, int modelIndex );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		iparam2 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		iparam3 = cRet[0];
 | 
			
		||||
		(*g_engfuncs.pfnStaticDecal)(Vec1,iparam1,iparam2,iparam3);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnPrecacheGeneric
 | 
			
		||||
	case	EngFunc_PrecacheGeneric:		// int  )		(char* s);
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[2],0,&len);
 | 
			
		||||
		return (*g_engfuncs.pfnPrecacheGeneric)((char*)STRING(ALLOC_STRING(temp)));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnBuildSoundMsg
 | 
			
		||||
	case	EngFunc_BuildSoundMsg:		// void )			(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[4],0,&len);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		fparam1 = amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[6]);
 | 
			
		||||
		fparam2 = amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[7]);
 | 
			
		||||
		iparam2 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[8]);
 | 
			
		||||
		iparam3 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[9]);
 | 
			
		||||
		iparam4 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[10]);
 | 
			
		||||
		iparam5 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[11]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet=MF_GetAmxAddr(amx,params[12]);
 | 
			
		||||
		iparam6=cRet[0];
 | 
			
		||||
		/* don't check, it might not be included 
 | 
			
		||||
		CHECK_ENTITY(iparam5); 
 | 
			
		||||
		*/
 | 
			
		||||
		(*g_engfuncs.pfnBuildSoundMsg)(INDEXENT(index),iparam1,temp,fparam1,fparam2,iparam2,iparam3,iparam4,iparam5,Vec1,iparam6 == 0 ? NULL : INDEXENT(iparam6));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnGetPhysicsKeyValue
 | 
			
		||||
	case	EngFunc_GetPhysicsKeyValue:	// const char* )	( const edict_t *pClient, const char *key );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[3],0,&len);
 | 
			
		||||
		temp2 = (char*)(*g_engfuncs.pfnGetPhysicsKeyValue)(INDEXENT(index),(const char *)temp);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		MF_SetAmxString(amx,params[4],temp2,cRet[0]);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnSetPhysicsKeyValue
 | 
			
		||||
	case	EngFunc_SetPhysicsKeyValue:	// void )	( const edict_t *pClient, const char *key, const char *value );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[3],0,&len);
 | 
			
		||||
		temp2 = MF_GetAmxString(amx,params[4],1,&len);
 | 
			
		||||
		(*g_engfuncs.pfnSetPhysicsKeyValue)(INDEXENT(index),STRING(ALLOC_STRING(temp)),STRING(ALLOC_STRING(temp2)));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnGetPhysicsInfoString
 | 
			
		||||
	case	EngFunc_GetPhysicsInfoString:	// const char* )	( const edict_t *pClient );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		temp = (char*)(*g_engfuncs.pfnGetPhysicsInfoString)(INDEXENT(index));
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
 | 
			
		||||
		MF_SetAmxString(amx,params[3],temp,cRet[0]);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnPrecacheEvent
 | 
			
		||||
	case	EngFunc_PrecacheEvent:		// unsigned short )		( int type, const char*psz );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[3],0,&len);
 | 
			
		||||
		return (*g_engfuncs.pfnPrecacheEvent)(iparam1,(char*)STRING(ALLOC_STRING(temp)));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnPlaybackEvent (grr)
 | 
			
		||||
	case	EngFunc_PlaybackEvent:		// void )			
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		iparam2 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		fparam1 = amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[6]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[7]);
 | 
			
		||||
		Vec2[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec2[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec2[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[8]);
 | 
			
		||||
		fparam2 = amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[9]);
 | 
			
		||||
		fparam3 = amx_ctof(cRet[0]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[10]);
 | 
			
		||||
		iparam3 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[11]);
 | 
			
		||||
		iparam4 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[12]);
 | 
			
		||||
		iparam5 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[13]);
 | 
			
		||||
		iparam6 = cRet[0];
 | 
			
		||||
		(*g_engfuncs.pfnPlaybackEvent)(iparam1,INDEXENT(index),iparam2,fparam1,Vec1,Vec2,fparam2,fparam3,iparam3,iparam4,iparam5,iparam6);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
		// pfnGetCurrentPlayer
 | 
			
		||||
	case	EngFunc_GetCurrentPlayer:			// int )		( void );
 | 
			
		||||
		return (*g_engfuncs.pfnGetCurrentPlayer)();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnCanSkipPlayer
 | 
			
		||||
	case	EngFunc_CanSkipPlayer:			// int )			( const edict_t *player );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		return (*g_engfuncs.pfnCanSkipPlayer)(INDEXENT(index));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnSetGroupMask
 | 
			
		||||
	case	EngFunc_SetGroupMask:				// void )			( int mask, int op );
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		iparam2 = cRet[0];
 | 
			
		||||
		(*g_engfuncs.pfnSetGroupMask)(iparam1,iparam2);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnGetClientListening
 | 
			
		||||
	case	EngFunc_GetClientListening:	// bool (int iReceiver, int iSender)
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		iparam2 = cRet[0];
 | 
			
		||||
		return (*g_engfuncs.pfnVoice_GetClientListening)(iparam1,iparam2);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnSetClientListening
 | 
			
		||||
	case	EngFunc_SetClientListening:	// bool (int iReceiver, int iSender, bool Listen)
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		iparam2 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		iparam3 = cRet[0];
 | 
			
		||||
		return (*g_engfuncs.pfnVoice_SetClientListening)(iparam1,iparam2,iparam3);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnMessageBegin (AMX doesn't support MSG_ONE_UNRELIABLE, so I should add this incase anyone needs it.)
 | 
			
		||||
	case	EngFunc_MessageBegin:	// void (int msg_dest, int msg_type, const float *pOrigin, edict_t *ed)
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
		iparam2 = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[4]);
 | 
			
		||||
		Vec1[0]=amx_ctof(cRet[0]);
 | 
			
		||||
		Vec1[1]=amx_ctof(cRet[1]);
 | 
			
		||||
		Vec1[2]=amx_ctof(cRet[2]);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		(*g_engfuncs.pfnMessageBegin)(iparam1,iparam2,Vec1,index == 0 ? NULL : INDEXENT(index));
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnWriteCoord
 | 
			
		||||
	case	EngFunc_WriteCoord:		// void (float)
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		fparam1 = amx_ctof(cRet[0]);
 | 
			
		||||
		(*g_engfuncs.pfnWriteCoord)(fparam1);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// pfnWriteAngle
 | 
			
		||||
	case	EngFunc_WriteAngle:		// void (float)
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		fparam1 = amx_ctof(cRet[0]);
 | 
			
		||||
		(*g_engfuncs.pfnWriteAngle)(fparam1);
 | 
			
		||||
		return 1;
 | 
			
		||||
	case	EngFunc_InfoKeyValue:	// char*	)			(char *infobuffer, char *key);
 | 
			
		||||
		// Modify the syntax a bit.
 | 
			
		||||
		// index, key
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[5]);
 | 
			
		||||
		iparam1 = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		temp2 = MF_GetAmxString(amx,params[3],0,&len);
 | 
			
		||||
		temp = (*g_engfuncs.pfnInfoKeyValue)((*g_engfuncs.pfnGetInfoKeyBuffer)(INDEXENT(index)),temp2);
 | 
			
		||||
		MF_SetAmxString(amx,params[4],temp,iparam1);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	case	EngFunc_SetKeyValue:	// void )			(char *infobuffer, char *key, char *value);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[3],0,&len);
 | 
			
		||||
		temp2 = MF_GetAmxString(amx,params[4],1,&len);
 | 
			
		||||
		(*g_engfuncs.pfnSetKeyValue)((*g_engfuncs.pfnGetInfoKeyBuffer)(INDEXENT(index)),temp,temp2);
 | 
			
		||||
		return 1;
 | 
			
		||||
	case	EngFunc_SetClientKeyValue:	 // void )		(int clientIndex, char *infobuffer, char *key, char *value);
 | 
			
		||||
		cRet = MF_GetAmxAddr(amx,params[2]);
 | 
			
		||||
		index = cRet[0];
 | 
			
		||||
		CHECK_ENTITY(index);
 | 
			
		||||
		temp = MF_GetAmxString(amx,params[3],0,&len);
 | 
			
		||||
		temp2 = MF_GetAmxString(amx,params[4],1,&len);
 | 
			
		||||
		(*g_engfuncs.pfnSetClientKeyValue)(index,(*g_engfuncs.pfnGetInfoKeyBuffer)(INDEXENT(index)),temp,temp2);
 | 
			
		||||
		return 1;
 | 
			
		||||
 | 
			
		||||
	default:
 | 
			
		||||
		LOG_CONSOLE(PLID,"[NS2AMX] Unknown engfunc type provided.");
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AMX_NATIVE_INFO engfunc_natives[] = {
 | 
			
		||||
	{"engfunc",			engfunc},
 | 
			
		||||
	{NULL,				NULL},
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										83
									
								
								dlls/fakemeta/engfunc.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										83
									
								
								dlls/fakemeta/engfunc.h
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,83 @@
 | 
			
		||||
#ifndef _ENGFUNC_INCLUDE_H
 | 
			
		||||
#define _ENGFUNC_INCLUDE_H
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	EngFunc_PrecacheModel,	// int  )			(char* s);
 | 
			
		||||
	EngFunc_PrecacheSound,	// int  )			(char* s);
 | 
			
		||||
	EngFunc_SetModel,		// void )				(edict_t *e, const char *m);
 | 
			
		||||
	EngFunc_ModelIndex,		// int  )			(const char *m);
 | 
			
		||||
	EngFunc_ModelFrames,	// int	)			(int modelIndex);
 | 
			
		||||
	EngFunc_SetSize,		// void )				(edict_t *e, const float *rgflMin, const float *rgflMax);
 | 
			
		||||
	EngFunc_ChangeLevel,			// void )			(char* s1, char* s2);
 | 
			
		||||
	EngFunc_VecToYaw,			// float)				(const float *rgflVector);
 | 
			
		||||
	EngFunc_VecToAngles,			// void )			(const float *rgflVectorIn, float *rgflVectorOut);
 | 
			
		||||
	EngFunc_MoveToOrigin,		// void )			(edict_t *ent, const float *pflGoal, float dist, int iMoveType);
 | 
			
		||||
	EngFunc_ChangeYaw,			// void )				(edict_t* ent);
 | 
			
		||||
	EngFunc_ChangePitch,			// void )			(edict_t* ent);
 | 
			
		||||
	EngFunc_FindEntityByString,	// edict)	(edict_t *pEdictStartSearchAfter, const char *pszField, const char *pszValue);
 | 
			
		||||
	EngFunc_GetEntityIllum,		// int	)		(edict_t* pEnt);
 | 
			
		||||
	EngFunc_FindEntityInSphere,	// edict)	(edict_t *pEdictStartSearchAfter, const float *org, float rad);
 | 
			
		||||
	EngFunc_FindClientInPVS,		// edict)		(edict_t *pEdict);
 | 
			
		||||
	EngFunc_EntitiesInPVS,		// edict)			(edict_t *pplayer);
 | 
			
		||||
	EngFunc_MakeVectors,			// void )			(const float *rgflVector);
 | 
			
		||||
	EngFunc_AngleVectors,		// void )			(const float *rgflVector, float *forward, float *right, float *up);
 | 
			
		||||
	EngFunc_CreateEntity,		// edict)			(void);
 | 
			
		||||
	EngFunc_RemoveEntity,		// void )			(edict_t* e);
 | 
			
		||||
	EngFunc_CreateNamedEntity,	// edict)		(int className);
 | 
			
		||||
	EngFunc_MakeStatic,			// void )			(edict_t *ent);
 | 
			
		||||
	EngFunc_EntIsOnFloor,		// int  )			(edict_t *e);
 | 
			
		||||
	EngFunc_DropToFloor,			// int  )			(edict_t* e);
 | 
			
		||||
	EngFunc_WalkMove,			// int  )				(edict_t *ent, float yaw, float dist, int iMode);
 | 
			
		||||
	EngFunc_SetOrigin,			// void )				(edict_t *e, const float *rgflOrigin);
 | 
			
		||||
	EngFunc_EmitSound,			// void )				(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch);
 | 
			
		||||
	EngFunc_EmitAmbientSound,	// void )		(edict_t *entity, float *pos, const char *samp, float vol, float attenuation, int fFlags, int pitch);
 | 
			
		||||
	EngFunc_TraceLine,			// void )				(const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr);
 | 
			
		||||
	EngFunc_TraceToss,			// void )				(edict_t* pent, edict_t* pentToIgnore, TraceResult *ptr);
 | 
			
		||||
	EngFunc_TraceMonsterHull,	// int  )		(edict_t *pEdict, const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr);
 | 
			
		||||
	EngFunc_TraceHull,			// void )				(const float *v1, const float *v2, int fNoMonsters, int hullNumber, edict_t *pentToSkip, TraceResult *ptr);
 | 
			
		||||
	EngFunc_TraceModel,			// void )			(const float *v1, const float *v2, int hullNumber, edict_t *pent, TraceResult *ptr);
 | 
			
		||||
	EngFunc_TraceTexture,		// const char *)			(edict_t *pTextureEntity, const float *v1, const float *v2 );
 | 
			
		||||
	EngFunc_TraceSphere,			// void )			(const float *v1, const float *v2, int fNoMonsters, float radius, edict_t *pentToSkip, TraceResult *ptr);
 | 
			
		||||
	EngFunc_GetAimVector,		// void )			(edict_t* ent, float speed, float *rgflReturn);
 | 
			
		||||
	EngFunc_ParticleEffect,		// void )		(const float *org, const float *dir, float color, float count);
 | 
			
		||||
	EngFunc_LightStyle,			// void )			(int style, char* val);
 | 
			
		||||
	EngFunc_DecalIndex,			// int  )			(const char *name);
 | 
			
		||||
	EngFunc_PointContents,		// int )			(const float *rgflVector);
 | 
			
		||||
	EngFunc_FreeEntPrivateData,	// void )	(edict_t *pEdict);
 | 
			
		||||
	EngFunc_SzFromIndex,			// const char * )			(int iString);
 | 
			
		||||
	EngFunc_AllocString,			// int )			(const char *szValue);
 | 
			
		||||
	EngFunc_RegUserMsg,			// int	)			(const char *pszName, int iSize);
 | 
			
		||||
	EngFunc_AnimationAutomove,	// void )		(const edict_t* pEdict, float flTime);
 | 
			
		||||
	EngFunc_GetBonePosition,		// void )		(const edict_t* pEdict, int iBone, float *rgflOrigin, float *rgflAngles );
 | 
			
		||||
	EngFunc_GetAttachment,		// void	)			(const edict_t *pEdict, int iAttachment, float *rgflOrigin, float *rgflAngles );
 | 
			
		||||
	EngFunc_SetView,				// void )				(const edict_t *pClient, const edict_t *pViewent );
 | 
			
		||||
	EngFunc_Time,				// float)					( void );
 | 
			
		||||
	EngFunc_CrosshairAngle,		// void )		(const edict_t *pClient, float pitch, float yaw);
 | 
			
		||||
	EngFunc_FadeClientVolume,	// void )      (const edict_t *pEdict, int fadePercent, int fadeOutSeconds, int holdTime, int fadeInSeconds);
 | 
			
		||||
	EngFunc_SetClientMaxspeed,	// void )     (const edict_t *pEdict, float fNewMaxspeed);
 | 
			
		||||
	EngFunc_CreateFakeClient,	// edict)		(const char *netname);	// returns NULL if fake client can't be created
 | 
			
		||||
	EngFunc_RunPlayerMove,		// void )			(edict_t *fakeclient, const float *viewangles, float forwardmove, float sidemove, float upmove, unsigned short buttons, byte impulse, byte msec );
 | 
			
		||||
	EngFunc_NumberOfEntities,	// int  )		(void);
 | 
			
		||||
	EngFunc_StaticDecal,			// void )			( const float *origin, int decalIndex, int entityIndex, int modelIndex );
 | 
			
		||||
	EngFunc_PrecacheGeneric,		// int  )		(char* s);
 | 
			
		||||
	EngFunc_BuildSoundMsg,		// void )			(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed);
 | 
			
		||||
	EngFunc_GetPhysicsKeyValue,	// const char* )	( const edict_t *pClient, const char *key );
 | 
			
		||||
	EngFunc_SetPhysicsKeyValue,	// void )	( const edict_t *pClient, const char *key, const char *value );
 | 
			
		||||
	EngFunc_GetPhysicsInfoString,// const char* )	( const edict_t *pClient );
 | 
			
		||||
	EngFunc_PrecacheEvent,		// unsigned short )		( int type, const char*psz );
 | 
			
		||||
	EngFunc_PlaybackEvent,		// void )			( int flags, const edict_t *pInvoker, unsigned short eventindex, float delay, float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 );
 | 
			
		||||
	EngFunc_CheckVisibility,			//)		( const edict_t *entity, unsigned char *pset );
 | 
			
		||||
	EngFunc_GetCurrentPlayer,			//)		( void );
 | 
			
		||||
	EngFunc_CanSkipPlayer,			//)			( const edict_t *player );
 | 
			
		||||
	EngFunc_SetGroupMask,				//)			( int mask, int op );
 | 
			
		||||
	EngFunc_GetClientListening,	// bool (int iReceiver, int iSender)
 | 
			
		||||
	EngFunc_SetClientListening,	// bool (int iReceiver, int iSender, bool Listen)
 | 
			
		||||
	EngFunc_MessageBegin,	// void (int msg_dest, int msg_type, const float *pOrigin, edict_t *ed)
 | 
			
		||||
	EngFunc_WriteCoord,		// void (float)
 | 
			
		||||
	EngFunc_WriteAngle,		// void (float)
 | 
			
		||||
	EngFunc_InfoKeyValue,	// char*	)			(char *infobuffer, char *key);
 | 
			
		||||
	EngFunc_SetKeyValue,	// void )			(char *infobuffer, char *key, char *value);
 | 
			
		||||
	EngFunc_SetClientKeyValue	 // void )		(int clientIndex, char *infobuffer, char *key, char *value);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //_ENGFUNC_INCLUDE_H
 | 
			
		||||
							
								
								
									
										179
									
								
								dlls/fakemeta/fakemeta.vcproj
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										179
									
								
								dlls/fakemeta/fakemeta.vcproj
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,179 @@
 | 
			
		||||
<?xml version="1.0" encoding="Windows-1252"?>
 | 
			
		||||
<VisualStudioProject
 | 
			
		||||
	ProjectType="Visual C++"
 | 
			
		||||
	Version="7.10"
 | 
			
		||||
	Name="fakemeta"
 | 
			
		||||
	ProjectGUID="{5E393C37-22F2-4CA2-9022-6400DC582447}"
 | 
			
		||||
	Keyword="Win32Proj">
 | 
			
		||||
	<Platforms>
 | 
			
		||||
		<Platform
 | 
			
		||||
			Name="Win32"/>
 | 
			
		||||
	</Platforms>
 | 
			
		||||
	<Configurations>
 | 
			
		||||
		<Configuration
 | 
			
		||||
			Name="Debug|Win32"
 | 
			
		||||
			OutputDirectory="Debug"
 | 
			
		||||
			IntermediateDirectory="Debug"
 | 
			
		||||
			ConfigurationType="2"
 | 
			
		||||
			CharacterSet="2">
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCCLCompilerTool"
 | 
			
		||||
				Optimization="0"
 | 
			
		||||
				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FAKEMETA_EXPORTS"
 | 
			
		||||
				MinimalRebuild="TRUE"
 | 
			
		||||
				BasicRuntimeChecks="3"
 | 
			
		||||
				RuntimeLibrary="5"
 | 
			
		||||
				UsePrecompiledHeader="0"
 | 
			
		||||
				WarningLevel="3"
 | 
			
		||||
				Detect64BitPortabilityProblems="FALSE"
 | 
			
		||||
				DebugInformationFormat="4"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCCustomBuildTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCLinkerTool"
 | 
			
		||||
				OutputFile="$(OutDir)/fakemeta_amxx.dll"
 | 
			
		||||
				LinkIncremental="2"
 | 
			
		||||
				GenerateDebugInformation="TRUE"
 | 
			
		||||
				ProgramDatabaseFile="$(OutDir)/fakemeta.pdb"
 | 
			
		||||
				SubSystem="2"
 | 
			
		||||
				ImportLibrary="$(OutDir)/fakemeta.lib"
 | 
			
		||||
				TargetMachine="1"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCMIDLTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCPostBuildEventTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCPreBuildEventTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCPreLinkEventTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCResourceCompilerTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCWebServiceProxyGeneratorTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCXMLDataGeneratorTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCWebDeploymentTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCManagedWrapperGeneratorTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
 | 
			
		||||
		</Configuration>
 | 
			
		||||
		<Configuration
 | 
			
		||||
			Name="Release|Win32"
 | 
			
		||||
			OutputDirectory="Release"
 | 
			
		||||
			IntermediateDirectory="Release"
 | 
			
		||||
			ConfigurationType="2"
 | 
			
		||||
			CharacterSet="2">
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCCLCompilerTool"
 | 
			
		||||
				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FAKEMETA_EXPORTS"
 | 
			
		||||
				RuntimeLibrary="4"
 | 
			
		||||
				UsePrecompiledHeader="0"
 | 
			
		||||
				WarningLevel="3"
 | 
			
		||||
				Detect64BitPortabilityProblems="FALSE"
 | 
			
		||||
				DebugInformationFormat="3"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCCustomBuildTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCLinkerTool"
 | 
			
		||||
				OutputFile="$(OutDir)/fakemeta_amxx.dll"
 | 
			
		||||
				LinkIncremental="1"
 | 
			
		||||
				GenerateDebugInformation="TRUE"
 | 
			
		||||
				SubSystem="2"
 | 
			
		||||
				OptimizeReferences="2"
 | 
			
		||||
				EnableCOMDATFolding="2"
 | 
			
		||||
				ImportLibrary="$(OutDir)/fakemeta.lib"
 | 
			
		||||
				TargetMachine="1"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCMIDLTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCPostBuildEventTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCPreBuildEventTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCPreLinkEventTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCResourceCompilerTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCWebServiceProxyGeneratorTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCXMLDataGeneratorTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCWebDeploymentTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCManagedWrapperGeneratorTool"/>
 | 
			
		||||
			<Tool
 | 
			
		||||
				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
 | 
			
		||||
		</Configuration>
 | 
			
		||||
	</Configurations>
 | 
			
		||||
	<References>
 | 
			
		||||
	</References>
 | 
			
		||||
	<Files>
 | 
			
		||||
		<Filter
 | 
			
		||||
			Name="Source Files"
 | 
			
		||||
			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
 | 
			
		||||
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\CVector.h">
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\fakemeta_amxx.cpp">
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\fakemeta_amxx.h">
 | 
			
		||||
			</File>
 | 
			
		||||
			<Filter
 | 
			
		||||
				Name="AMXXSDK"
 | 
			
		||||
				Filter="">
 | 
			
		||||
				<File
 | 
			
		||||
					RelativePath=".\sdk\amxxmodule.cpp">
 | 
			
		||||
				</File>
 | 
			
		||||
				<File
 | 
			
		||||
					RelativePath=".\sdk\amxxmodule.h">
 | 
			
		||||
				</File>
 | 
			
		||||
				<File
 | 
			
		||||
					RelativePath=".\sdk\moduleconfig.h">
 | 
			
		||||
				</File>
 | 
			
		||||
			</Filter>
 | 
			
		||||
		</Filter>
 | 
			
		||||
		<Filter
 | 
			
		||||
			Name="engfunc"
 | 
			
		||||
			Filter="">
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\dllfunc.cpp">
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\dllfunc.h">
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\engfunc.cpp">
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\engfunc.h">
 | 
			
		||||
			</File>
 | 
			
		||||
		</Filter>
 | 
			
		||||
		<Filter
 | 
			
		||||
			Name="pev"
 | 
			
		||||
			Filter="">
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\pev.cpp">
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\pev.h">
 | 
			
		||||
			</File>
 | 
			
		||||
		</Filter>
 | 
			
		||||
		<Filter
 | 
			
		||||
			Name="forward"
 | 
			
		||||
			Filter="">
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\forward.cpp">
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\forward.h">
 | 
			
		||||
			</File>
 | 
			
		||||
		</Filter>
 | 
			
		||||
	</Files>
 | 
			
		||||
	<Globals>
 | 
			
		||||
	</Globals>
 | 
			
		||||
</VisualStudioProject>
 | 
			
		||||
							
								
								
									
										7
									
								
								dlls/fakemeta/fakemeta_amxx.cpp
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										7
									
								
								dlls/fakemeta/fakemeta_amxx.cpp
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
#include "fakemeta_amxx.h"
 | 
			
		||||
 | 
			
		||||
void OnAmxxAttach()
 | 
			
		||||
{
 | 
			
		||||
	MF_AddNatives(engfunc_natives);
 | 
			
		||||
	MF_AddNatives(dllfunc_natives);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								dlls/fakemeta/fakemeta_amxx.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								dlls/fakemeta/fakemeta_amxx.h
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
#ifndef _FAKEMETA_INCLUDE_H
 | 
			
		||||
#define _FAKEMETA_INCLUDE_H
 | 
			
		||||
 | 
			
		||||
#include "sdk/amxxmodule.h"
 | 
			
		||||
#include "CVector.h"
 | 
			
		||||
#include "engfunc.h"
 | 
			
		||||
#include "dllfunc.h"
 | 
			
		||||
#include "pev.h"
 | 
			
		||||
#include "forward.h"
 | 
			
		||||
 | 
			
		||||
#define CHECK_ENTITY(x) if (x != 0 && (FNullEnt(INDEXENT(x)) || x < 0 || x > gpGlobals->maxEntities)) { MF_RaiseAmxError(amx,AMX_ERR_NATIVE); return 0; }
 | 
			
		||||
 | 
			
		||||
extern AMX_NATIVE_INFO engfunc_natives[];
 | 
			
		||||
extern AMX_NATIVE_INFO dllfunc_natives[];
 | 
			
		||||
extern AMX_NATIVE_INFO pev_natives[];
 | 
			
		||||
extern TraceResult g_tr;
 | 
			
		||||
 | 
			
		||||
extern enginefuncs_t g_EngineFuncs_Table;
 | 
			
		||||
extern enginefuncs_t g_EngineFuncs_Post_Table;
 | 
			
		||||
 | 
			
		||||
#endif //_FAKEMETA_INCLUDE_H
 | 
			
		||||
							
								
								
									
										493
									
								
								dlls/fakemeta/forward.cpp
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										493
									
								
								dlls/fakemeta/forward.cpp
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,493 @@
 | 
			
		||||
#include "fakemeta_amxx.h"
 | 
			
		||||
 | 
			
		||||
CVector<int> Engine[ENGFUNC_NUM+10];
 | 
			
		||||
CVector<int> EnginePost[ENGFUNC_NUM+10];
 | 
			
		||||
cell mCellResult;
 | 
			
		||||
cell mlCellResult;
 | 
			
		||||
float mFloatResult;
 | 
			
		||||
float mlFloatResult;
 | 
			
		||||
const char *mStringResult;
 | 
			
		||||
const char *mlStringResult;
 | 
			
		||||
int retType = 0;
 | 
			
		||||
int lastFmRes = FMRES_IGNORED;
 | 
			
		||||
 | 
			
		||||
#define ENGHOOK(pfnCall) \
 | 
			
		||||
	if (engtable->pfn##pfnCall == NULL) \
 | 
			
		||||
		engtable->pfn##pfnCall = pfnCall
 | 
			
		||||
 | 
			
		||||
#define FM_ENG_HANDLE(pfnCall, pfnArgs) \
 | 
			
		||||
	register unsigned int i = 0; \
 | 
			
		||||
	clfm(); \
 | 
			
		||||
	int fmres = FMRES_IGNORED; \
 | 
			
		||||
	for (i=0; i<Engine[pfnCall].size(); i++) \
 | 
			
		||||
	{ \
 | 
			
		||||
		fmres = MF_ExecuteForward pfnArgs; \
 | 
			
		||||
		if (fmres >= lastFmRes) { \
 | 
			
		||||
			if (retType == FMV_STRING) \
 | 
			
		||||
				mlStringResult = mStringResult; \
 | 
			
		||||
			else if (retType == FMV_CELL) \
 | 
			
		||||
				mlCellResult = mCellResult; \
 | 
			
		||||
			else if (retType == FMV_FLOAT) \
 | 
			
		||||
				mlFloatResult = mFloatResult; \
 | 
			
		||||
			lastFmRes = fmres; \
 | 
			
		||||
		} \
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
META_RES mswi(int fmres)
 | 
			
		||||
{
 | 
			
		||||
	if (fmres == FMRES_IGNORED)
 | 
			
		||||
		return MRES_IGNORED;
 | 
			
		||||
	if (fmres == FMRES_HANDLED)
 | 
			
		||||
		return MRES_HANDLED;
 | 
			
		||||
	if (fmres == FMRES_SUPERCEDE)
 | 
			
		||||
		return MRES_SUPERCEDE;
 | 
			
		||||
	if (fmres == FMRES_OVERRIDE)
 | 
			
		||||
		return MRES_OVERRIDE;
 | 
			
		||||
	return (META_RES)0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void clfm()
 | 
			
		||||
{
 | 
			
		||||
	mCellResult = 0;
 | 
			
		||||
	mlCellResult = 0;
 | 
			
		||||
	mStringResult = "";
 | 
			
		||||
	mlStringResult = "";
 | 
			
		||||
	lastFmRes = FMRES_IGNORED;
 | 
			
		||||
	mFloatResult = 0.0;
 | 
			
		||||
	mlFloatResult = 0.0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static cell AMX_NATIVE_CALL fm_return(AMX *amx, cell *params)
 | 
			
		||||
{
 | 
			
		||||
	int len;
 | 
			
		||||
	switch (params[1])
 | 
			
		||||
	{
 | 
			
		||||
	case FMV_STRING:
 | 
			
		||||
		{
 | 
			
		||||
			mStringResult = STRING(ALLOC_STRING(MF_GetAmxString(amx, params[2], 0 ,&len)));
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	case FMV_FLOAT:
 | 
			
		||||
		{
 | 
			
		||||
			mFloatResult = amx_ctof(params[2]);
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	case FMV_CELL:
 | 
			
		||||
		{
 | 
			
		||||
			mCellResult = params[2];
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	default:
 | 
			
		||||
		{
 | 
			
		||||
		return 0;
 | 
			
		||||
		break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	retType = params[1];
 | 
			
		||||
 | 
			
		||||
	return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int PrecacheModel(char *s)
 | 
			
		||||
{
 | 
			
		||||
	FM_ENG_HANDLE(FM_PrecacheModel, (Engine[FM_PrecacheModel].at(i), s));
 | 
			
		||||
	RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int PrecacheSound(char *s)
 | 
			
		||||
{
 | 
			
		||||
	FM_ENG_HANDLE(FM_PrecacheSound, (Engine[FM_PrecacheSound].at(i), s));
 | 
			
		||||
	RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SetModel(edict_t *e, const char *m)
 | 
			
		||||
{
 | 
			
		||||
	FM_ENG_HANDLE(FM_SetModel, (Engine[FM_SetModel].at(i), ENTINDEX(e), m));
 | 
			
		||||
	RETURN_META(mswi(lastFmRes));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ModelIndex(const char *m)
 | 
			
		||||
{
 | 
			
		||||
	FM_ENG_HANDLE(FM_ModelIndex, (Engine[FM_ModelIndex].at(i), m));
 | 
			
		||||
	RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ModelFrames(int modelIndex)
 | 
			
		||||
{
 | 
			
		||||
	FM_ENG_HANDLE(FM_ModelIndex, (Engine[FM_ModelIndex].at(i), modelIndex));
 | 
			
		||||
	RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SetSize(edict_t *e, const float *rgflMin, const float *rgflMax)
 | 
			
		||||
{
 | 
			
		||||
	cell vec1[3] = {amx_ftoc(rgflMin[0]), amx_ftoc(rgflMin[1]), amx_ftoc(rgflMin[2])};
 | 
			
		||||
	cell vec2[3] = {amx_ftoc(rgflMax[0]), amx_ftoc(rgflMax[1]), amx_ftoc(rgflMax[2])};;
 | 
			
		||||
	cell retvec1 = MF_PrepareCellArray(vec1, 3);
 | 
			
		||||
	cell retvec2 = MF_PrepareCellArray(vec2, 3);
 | 
			
		||||
	FM_ENG_HANDLE(FM_SetSize, (Engine[FM_SetSize].at(i), ENTINDEX(e), retvec1, retvec2));
 | 
			
		||||
	RETURN_META(mswi(lastFmRes));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ChangeLevel(char *s1, char *s2)
 | 
			
		||||
{
 | 
			
		||||
	FM_ENG_HANDLE(FM_ChangeLevel, (Engine[FM_ChangeLevel].at(i), s1, s2));
 | 
			
		||||
	RETURN_META(mswi(lastFmRes));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float VecToYaw(const float *rgflVector)
 | 
			
		||||
{
 | 
			
		||||
	cell vec[3] = {amx_ftoc(rgflVector[0]), amx_ftoc(rgflVector[1]), amx_ftoc(rgflVector[2])};
 | 
			
		||||
	cell retvec = MF_PrepareCellArray(vec, 3);
 | 
			
		||||
	FM_ENG_HANDLE(FM_VecToYaw, (Engine[FM_VecToYaw].at(i), retvec));
 | 
			
		||||
	RETURN_META_VALUE(mswi(lastFmRes), mlFloatResult);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void VecToAngles(const float *rgflVectorIn, float *rgflVectorOut)
 | 
			
		||||
{
 | 
			
		||||
	cell vec1[3] = {amx_ftoc(rgflVectorIn[0]), amx_ftoc(rgflVectorIn[1]), amx_ftoc(rgflVectorIn[2])};
 | 
			
		||||
	cell vec2[3] = {amx_ftoc(rgflVectorOut[0]), amx_ftoc(rgflVectorOut[1]), amx_ftoc(rgflVectorOut[2])};;
 | 
			
		||||
	cell retvec1 = MF_PrepareCellArray(vec1, 3);
 | 
			
		||||
	cell retvec2 = MF_PrepareCellArray(vec2, 3);
 | 
			
		||||
	FM_ENG_HANDLE(FM_VecToAngles, (Engine[FM_VecToAngles].at(i),  retvec1, retvec2));
 | 
			
		||||
	RETURN_META(mswi(lastFmRes));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MoveToOrigin(edict_t *ent, const float *pflGoal, float dist, int iMoveType)
 | 
			
		||||
{
 | 
			
		||||
	cell vec[3] = {amx_ftoc(pflGoal[0]), amx_ftoc(pflGoal[1]), amx_ftoc(pflGoal[2])};
 | 
			
		||||
	cell retvec = MF_PrepareCellArray(vec, 3);
 | 
			
		||||
	FM_ENG_HANDLE(FM_MoveToOrigin, (Engine[FM_MoveToOrigin].at(i),  ENTINDEX(ent), retvec, dist, iMoveType));
 | 
			
		||||
	RETURN_META(mswi(lastFmRes));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ChangeYaw(edict_t *ent)
 | 
			
		||||
{
 | 
			
		||||
	FM_ENG_HANDLE(FM_ChangeYaw, (Engine[FM_ChangeYaw].at(i),  ENTINDEX(ent)));
 | 
			
		||||
	RETURN_META(mswi(lastFmRes));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ChangePitch(edict_t *ent)
 | 
			
		||||
{
 | 
			
		||||
	FM_ENG_HANDLE(FM_ChangePitch, (Engine[FM_ChangePitch].at(i),  ENTINDEX(ent)));
 | 
			
		||||
	RETURN_META(mswi(lastFmRes));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
edict_t *FindEntityByString(edict_t *pEdictStartSearchAfter, const char *pszField, const char *pszValue)
 | 
			
		||||
{
 | 
			
		||||
	FM_ENG_HANDLE(FM_FindEntityByString, (Engine[FM_FindEntityByString].at(i),  ENTINDEX(pEdictStartSearchAfter), pszField, pszValue));
 | 
			
		||||
	RETURN_META_VALUE(mswi(lastFmRes), INDEXENT((int)mlCellResult));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int GetEntityIllum(edict_t *pent)
 | 
			
		||||
{
 | 
			
		||||
	FM_ENG_HANDLE(FM_ChangePitch, (Engine[FM_ChangePitch].at(i),  ENTINDEX(pent)));
 | 
			
		||||
	RETURN_META_VALUE(mswi(lastFmRes), (int)mlCellResult);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params)
 | 
			
		||||
{
 | 
			
		||||
	int func = params[1];
 | 
			
		||||
	int post = params[2];
 | 
			
		||||
	if (func > ENGFUNC_NUM || func < 1)
 | 
			
		||||
	{
 | 
			
		||||
		MF_RaiseAmxError(amx, AMX_ERR_NATIVE);
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	int len, fId=0;
 | 
			
		||||
	const char *funcname = MF_GetAmxString(amx, params[2], 0, &len);
 | 
			
		||||
 | 
			
		||||
	enginefuncs_t *engtable;
 | 
			
		||||
 | 
			
		||||
	if (post)
 | 
			
		||||
		engtable = &g_EngineFuncs_Table;
 | 
			
		||||
	else
 | 
			
		||||
		engtable = &g_EngineFuncs_Post_Table;
 | 
			
		||||
	
 | 
			
		||||
	switch (func)
 | 
			
		||||
	{
 | 
			
		||||
	case FM_PrecacheModel:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_STRING, FP_DONE);
 | 
			
		||||
		ENGHOOK(PrecacheModel);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_PrecacheSound:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_STRING, FP_DONE);
 | 
			
		||||
		ENGHOOK(PrecacheSound);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_SetModel:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_STRING, FP_DONE);
 | 
			
		||||
		ENGHOOK(SetModel);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_ModelIndex:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_STRING, FP_DONE);
 | 
			
		||||
		ENGHOOK(ModelIndex);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_ModelFrames:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_DONE);
 | 
			
		||||
		ENGHOOK(ModelFrames);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_SetSize:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_ARRAY, FP_ARRAY, FP_DONE);
 | 
			
		||||
		ENGHOOK(SetSize);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_ChangeLevel:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_STRING, FP_STRING, FP_DONE);
 | 
			
		||||
		ENGHOOK(ChangeLevel);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_VecToYaw:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_DONE);
 | 
			
		||||
		ENGHOOK(VecToYaw);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_VecToAngles:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_DONE);
 | 
			
		||||
		ENGHOOK(VecToAngles);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_MoveToOrigin:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_ARRAY, FP_FLOAT, FP_CELL, FP_DONE);
 | 
			
		||||
		ENGHOOK(MoveToOrigin);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_ChangeYaw:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_DONE);
 | 
			
		||||
		ENGHOOK(ChangeYaw);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_ChangePitch:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_DONE);
 | 
			
		||||
		ENGHOOK(ChangePitch);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_FindEntityByString:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_STRING, FP_STRING, FP_DONE);
 | 
			
		||||
		ENGHOOK(FindEntityByString);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_GetEntityIllum:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_DONE);
 | 
			
		||||
		ENGHOOK(GetEntityIllum);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_FindEntityInSphere:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_ARRAY, FP_FLOAT, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_FindClientInPVS:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_EntitiesInPVS:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_MakeVectors:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_AngleVectors:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_ARRAY, FP_ARRAY, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_CreateEntity:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_RemoveEntity:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_CreateNamedEntity:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_STRING, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_MakeStatic:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_EntIsOnFloor:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_DropToFloor:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_WalkMove:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_FLOAT, FP_FLOAT, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_SetOrigin:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_ARRAY, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_EmitSound:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_STRING, FP_FLOAT, FP_FLOAT, FP_CELL, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_EmitAmbientSound:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_ARRAY, FP_STRING, FP_FLOAT, FP_FLOAT, FP_CELL, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_TraceLine:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_TraceToss:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_TraceMonsterHull:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_TraceHull:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_TraceModel:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_CELL, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_TraceTexture:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_ARRAY, FP_ARRAY, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_TraceSphere:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_CELL, FP_FLOAT, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_GetAimVector:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_FLOAT, FP_ARRAY, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_ParticleEffect:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_ARRAY, FP_FLOAT, FP_FLOAT, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_LightStyle:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_STRING, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_DecalIndex:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_STRING, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_PointContents:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_FreeEntPrivateData:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_SzFromIndex:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_STRING, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_AllocString:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_STRING, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_RegUserMsg:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_STRING, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_AnimationAutomove:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_FLOAT, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_GetBonePosition:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_ARRAY, FP_ARRAY, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_GetAttachment:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_ARRAY, FP_ARRAY, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_SetView:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_Time:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_CrosshairAngle:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_FLOAT, FP_FLOAT, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_FadeClientVolume:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_SetClientMaxspeed:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_FLOAT, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_CreateFakeClient:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_STRING, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_RunPlayerMove:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_ARRAY, FP_FLOAT, FP_FLOAT, FP_FLOAT, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_NumberOfEntities:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_StaticDecal:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_ARRAY, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_PrecacheGeneric:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_STRING, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_BuildSoundMsg:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_STRING, FP_FLOAT, FP_FLOAT, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_ARRAY, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_GetPhysicsKeyValue:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_STRING, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_SetPhysicsKeyValue:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_STRING, FP_STRING, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_GetPhysicsInfoString:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_PrecacheEvent:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_STRING, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
	case FM_PlaybackEvent:
 | 
			
		||||
		fId = MF_RegisterSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_CELL, FP_FLOAT, FP_ARRAY, FP_ARRAY, FP_FLOAT, FP_FLOAT, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
 | 
			
		||||
		break;
 | 
			
		||||
#if 0
 | 
			
		||||
	EngFunc_CheckVisibility,			//)		( const edict_t *entity, unsigned char *pset );
 | 
			
		||||
	EngFunc_GetCurrentPlayer,			//)		( void );
 | 
			
		||||
	EngFunc_CanSkipPlayer,			//)			( const edict_t *player );
 | 
			
		||||
	EngFunc_SetGroupMask,				//)			( int mask, int op );
 | 
			
		||||
	EngFunc_GetClientListening,	// bool (int iReceiver, int iSender)
 | 
			
		||||
	EngFunc_SetClientListening,	// bool (int iReceiver, int iSender, bool Listen)
 | 
			
		||||
	EngFunc_MessageBegin,	// void (int msg_dest, int msg_type, const float *pOrigin, edict_t *ed)
 | 
			
		||||
	EngFunc_WriteCoord,		// void (float)
 | 
			
		||||
	EngFunc_WriteAngle,		// void (float)
 | 
			
		||||
	EngFunc_InfoKeyValue,	// char*	)			(char *infobuffer, char *key);
 | 
			
		||||
	EngFunc_SetKeyValue,	// void )			(char *infobuffer, char *key, char *value);
 | 
			
		||||
	EngFunc_SetClientKeyValue	 // void )		(int clientIndex, char *infobuffer, char *key, char *value);
 | 
			
		||||
	DLLFunc_GameInit,	// void)			( void );				
 | 
			
		||||
	DLLFunc_Spawn,	// int )				( edict_t *pent );
 | 
			
		||||
	DLLFunc_Think,	// void )				( edict_t *pent );
 | 
			
		||||
	DLLFunc_Use,	// void )				( edict_t *pentUsed, edict_t *pentOther );
 | 
			
		||||
	DLLFunc_Touch,	// void )				( edict_t *pentTouched, edict_t *pentOther );
 | 
			
		||||
	DLLFunc_Blocked,	// void )			( edict_t *pentBlocked, edict_t *pentOther );
 | 
			
		||||
	DLLFunc_KeyValue,	// void )			( edict_t *pentKeyvalue, KeyValueData *pkvd );
 | 
			
		||||
	DLLFunc_SetAbsBox,			// void )			( edict_t *pent );
 | 
			
		||||
	DLLFunc_ClientConnect,		// bool)		( edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ] );
 | 
			
		||||
	
 | 
			
		||||
	DLLFunc_ClientDisconnect,	// void )	( edict_t *pEntity );
 | 
			
		||||
	DLLFunc_ClientKill,		// void )		( edict_t *pEntity );
 | 
			
		||||
	DLLFunc_ClientPutInServer,	// void )	( edict_t *pEntity );
 | 
			
		||||
	DLLFunc_ClientCommand,		// void )		( edict_t *pEntity );
 | 
			
		||||
 | 
			
		||||
	DLLFunc_ServerDeactivate,	// void)	( void );
 | 
			
		||||
 | 
			
		||||
	DLLFunc_PlayerPreThink,		// void )	( edict_t *pEntity );
 | 
			
		||||
	DLLFunc_PlayerPostThink,		// void )	( edict_t *pEntity );
 | 
			
		||||
 | 
			
		||||
	DLLFunc_StartFrame,		// void )		( void );
 | 
			
		||||
	DLLFunc_ParmsNewLevel,		// void )		( void );
 | 
			
		||||
	DLLFunc_ParmsChangeLevel,	// void )	( void );
 | 
			
		||||
 | 
			
		||||
	 // Returns string describing current .dll.  E.g., TeamFotrress 2, Half-Life
 | 
			
		||||
	DLLFunc_GetGameDescription,	 // const char * )( void );     
 | 
			
		||||
 | 
			
		||||
	// Spectator funcs
 | 
			
		||||
	DLLFunc_SpectatorConnect,	// void)		( edict_t *pEntity );
 | 
			
		||||
	DLLFunc_SpectatorDisconnect,	// void )	( edict_t *pEntity );
 | 
			
		||||
	DLLFunc_SpectatorThink,		// void )		( edict_t *pEntity );
 | 
			
		||||
 | 
			
		||||
	// Notify game .dll that engine is going to shut down.  Allows mod authors to set a breakpoint.
 | 
			
		||||
	DLLFunc_Sys_Error,		// void )			( const char *error_string );
 | 
			
		||||
 | 
			
		||||
	DLLFunc_PM_FindTextureType,	// char )( char *name );
 | 
			
		||||
	DLLFunc_RegisterEncoders,	// void )	( void );
 | 
			
		||||
 | 
			
		||||
	// Enumerates player hulls.  Returns 0 if the hull number doesn't exist, 1 otherwise
 | 
			
		||||
	DLLFunc_GetHullBounds,	// int)	( int hullnumber, float *mins, float *maxs );
 | 
			
		||||
 | 
			
		||||
	// Create baselines for certain "unplaced" items.
 | 
			
		||||
	DLLFunc_CreateInstancedBaselines,	// void ) ( void );
 | 
			
		||||
	DLLFunc_pfnAllowLagCompensation,	// int )( void );
 | 
			
		||||
	// I know this does not fit with DLLFUNC(), but I dont want another native just for it.
 | 
			
		||||
	MetaFunc_CallGameEntity	// bool	(plid_t plid, const char *entStr,entvars_t *pev);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	default:
 | 
			
		||||
		fId = 0;
 | 
			
		||||
		break;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!fId)
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
	if (post)
 | 
			
		||||
	{
 | 
			
		||||
		EnginePost[func].push_back(fId);
 | 
			
		||||
	} else {
 | 
			
		||||
		Engine[func].push_back(fId);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 1;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										149
									
								
								dlls/fakemeta/forward.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										149
									
								
								dlls/fakemeta/forward.h
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,149 @@
 | 
			
		||||
#ifndef _INCLUDE_FORWARD_H
 | 
			
		||||
#define _INCLUDE_FORWARD_H
 | 
			
		||||
 | 
			
		||||
#define ENGFUNC_NUM		108
 | 
			
		||||
 | 
			
		||||
#define	FMV_STRING		1
 | 
			
		||||
#define FMV_FLOAT		2
 | 
			
		||||
#define FMV_CELL		3
 | 
			
		||||
 | 
			
		||||
#define FMRES_HANDLED	2
 | 
			
		||||
#define FMRES_SUPERCEDE	4
 | 
			
		||||
#define FMRES_IGNORED	1
 | 
			
		||||
#define FMRES_OVERRIDE	3
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	FM_PrecacheModel = 1,	// int  )			(char* s);
 | 
			
		||||
	FM_PrecacheSound,	// int  )			(char* s);
 | 
			
		||||
	FM_SetModel,		// void )				(edict_t *e, const char *m);
 | 
			
		||||
	FM_ModelIndex,		// int  )			(const char *m);
 | 
			
		||||
	FM_ModelFrames,	// int	)			(int modelIndex);
 | 
			
		||||
	FM_SetSize,		// void )				(edict_t *e, const float *rgflMin, const float *rgflMax);
 | 
			
		||||
	FM_ChangeLevel,			// void )			(char* s1, char* s2);
 | 
			
		||||
	FM_VecToYaw,			// float)				(const float *rgflVector);
 | 
			
		||||
	FM_VecToAngles,			// void )			(const float *rgflVectorIn, float *rgflVectorOut);
 | 
			
		||||
	FM_MoveToOrigin,		// void )			(edict_t *ent, const float *pflGoal, float dist, int iMoveType);
 | 
			
		||||
	FM_ChangeYaw,			// void )				(edict_t* ent);
 | 
			
		||||
	FM_ChangePitch,			// void )			(edict_t* ent);
 | 
			
		||||
	FM_FindEntityByString,	// edict)	(edict_t *pEdictStartSearchAfter, const char *pszField, const char *pszValue);
 | 
			
		||||
	FM_GetEntityIllum,		// int	)		(edict_t* pEnt);
 | 
			
		||||
	FM_FindEntityInSphere,	// edict)	(edict_t *pEdictStartSearchAfter, const float *org, float rad);
 | 
			
		||||
	FM_FindClientInPVS,		// edict)		(edict_t *pEdict);
 | 
			
		||||
	FM_EntitiesInPVS,		// edict)			(edict_t *pplayer);
 | 
			
		||||
	FM_MakeVectors,			// void )			(const float *rgflVector);
 | 
			
		||||
	FM_AngleVectors,		// void )			(const float *rgflVector, float *forward, float *right, float *up);
 | 
			
		||||
	FM_CreateEntity,		// edict)			(void);
 | 
			
		||||
	FM_RemoveEntity,		// void )			(edict_t* e);
 | 
			
		||||
	FM_CreateNamedEntity,	// edict)		(int className);
 | 
			
		||||
	FM_MakeStatic,			// void )			(edict_t *ent);
 | 
			
		||||
	FM_EntIsOnFloor,		// int  )			(edict_t *e);
 | 
			
		||||
	FM_DropToFloor,			// int  )			(edict_t* e);
 | 
			
		||||
	FM_WalkMove,			// int  )				(edict_t *ent, float yaw, float dist, int iMode);
 | 
			
		||||
	FM_SetOrigin,			// void )				(edict_t *e, const float *rgflOrigin);
 | 
			
		||||
	FM_EmitSound,			// void )				(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch);
 | 
			
		||||
	FM_EmitAmbientSound,	// void )		(edict_t *entity, float *pos, const char *samp, float vol, float attenuation, int fFlags, int pitch);
 | 
			
		||||
	FM_TraceLine,			// void )				(const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr);
 | 
			
		||||
	FM_TraceToss,			// void )				(edict_t* pent, edict_t* pentToIgnore, TraceResult *ptr);
 | 
			
		||||
	FM_TraceMonsterHull,	// int  )		(edict_t *pEdict, const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr);
 | 
			
		||||
	FM_TraceHull,			// void )				(const float *v1, const float *v2, int fNoMonsters, int hullNumber, edict_t *pentToSkip, TraceResult *ptr);
 | 
			
		||||
	FM_TraceModel,			// void )			(const float *v1, const float *v2, int hullNumber, edict_t *pent, TraceResult *ptr);
 | 
			
		||||
	FM_TraceTexture,		// const char *)			(edict_t *pTextureEntity, const float *v1, const float *v2 );
 | 
			
		||||
	FM_TraceSphere,			// void )			(const float *v1, const float *v2, int fNoMonsters, float radius, edict_t *pentToSkip, TraceResult *ptr);
 | 
			
		||||
	FM_GetAimVector,		// void )			(edict_t* ent, float speed, float *rgflReturn);
 | 
			
		||||
	FM_ParticleEffect,		// void )		(const float *org, const float *dir, float color, float count);
 | 
			
		||||
	FM_LightStyle,			// void )			(int style, char* val);
 | 
			
		||||
	FM_DecalIndex,			// int  )			(const char *name);
 | 
			
		||||
	FM_PointContents,		// int )			(const float *rgflVector);
 | 
			
		||||
	FM_FreeEntPrivateData,	// void )	(edict_t *pEdict);
 | 
			
		||||
	FM_SzFromIndex,			// const char * )			(int iString);
 | 
			
		||||
	FM_AllocString,			// int )			(const char *szValue);
 | 
			
		||||
	FM_RegUserMsg,			// int	)			(const char *pszName, int iSize);
 | 
			
		||||
	FM_AnimationAutomove,	// void )		(const edict_t* pEdict, float flTime);
 | 
			
		||||
	FM_GetBonePosition,		// void )		(const edict_t* pEdict, int iBone, float *rgflOrigin, float *rgflAngles );
 | 
			
		||||
	FM_GetAttachment,		// void	)			(const edict_t *pEdict, int iAttachment, float *rgflOrigin, float *rgflAngles );
 | 
			
		||||
	FM_SetView,				// void )				(const edict_t *pClient, const edict_t *pViewent );
 | 
			
		||||
	FM_Time,				// float)					( void );
 | 
			
		||||
	FM_CrosshairAngle,		// void )		(const edict_t *pClient, float pitch, float yaw);
 | 
			
		||||
	FM_FadeClientVolume,	// void )      (const edict_t *pEdict, int fadePercent, int fadeOutSeconds, int holdTime, int fadeInSeconds);
 | 
			
		||||
	FM_SetClientMaxspeed,	// void )     (const edict_t *pEdict, float fNewMaxspeed);
 | 
			
		||||
	FM_CreateFakeClient,	// edict)		(const char *netname);	// returns NULL if fake client can't be created
 | 
			
		||||
	FM_RunPlayerMove,		// void )			(edict_t *fakeclient, const float *viewangles, float forwardmove, float sidemove, float upmove, unsigned short buttons, byte impulse, byte msec );
 | 
			
		||||
	FM_NumberOfEntities,	// int  )		(void);
 | 
			
		||||
	FM_StaticDecal,			// void )			( const float *origin, int decalIndex, int entityIndex, int modelIndex );
 | 
			
		||||
	FM_PrecacheGeneric,		// int  )		(char* s);
 | 
			
		||||
	FM_BuildSoundMsg,		// void )			(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed);
 | 
			
		||||
	FM_GetPhysicsKeyValue,	// const char* )	( const edict_t *pClient, const char *key );
 | 
			
		||||
	FM_SetPhysicsKeyValue,	// void )	( const edict_t *pClient, const char *key, const char *value );
 | 
			
		||||
	FM_GetPhysicsInfoString,// const char* )	( const edict_t *pClient );
 | 
			
		||||
	FM_PrecacheEvent,		// unsigned short )		( int type, const char*psz );
 | 
			
		||||
	FM_PlaybackEvent,		// void )			( int flags, const edict_t *pInvoker, unsigned short eventindex, float delay, float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 );
 | 
			
		||||
	FM_CheckVisibility,			//)		( const edict_t *entity, unsigned char *pset );
 | 
			
		||||
	FM_GetCurrentPlayer,			//)		( void );
 | 
			
		||||
	FM_CanSkipPlayer,			//)			( const edict_t *player );
 | 
			
		||||
	FM_SetGroupMask,				//)			( int mask, int op );
 | 
			
		||||
	FM_GetClientListening,	// bool (int iReceiver, int iSender)
 | 
			
		||||
	FM_SetClientListening,	// bool (int iReceiver, int iSender, bool Listen)
 | 
			
		||||
	FM_MessageBegin,	// void (int msg_dest, int msg_type, const float *pOrigin, edict_t *ed)
 | 
			
		||||
	FM_WriteCoord,		// void (float)
 | 
			
		||||
	FM_WriteAngle,		// void (float)
 | 
			
		||||
	FM_InfoKeyValue,	// char*	)			(char *infobuffer, char *key);
 | 
			
		||||
	FM_SetKeyValue,	// void )			(char *infobuffer, char *key, char *value);
 | 
			
		||||
	FM_SetClientKeyValue,	 // void )		(int clientIndex, char *infobuffer, char *key, char *value);
 | 
			
		||||
	FM_GameInit,	// void)			( void );				
 | 
			
		||||
	FM_Spawn,	// int )				( edict_t *pent );
 | 
			
		||||
	FM_Think,	// void )				( edict_t *pent );
 | 
			
		||||
	FM_Use,	// void )				( edict_t *pentUsed, edict_t *pentOther );
 | 
			
		||||
	FM_Touch,	// void )				( edict_t *pentTouched, edict_t *pentOther );
 | 
			
		||||
	FM_Blocked,	// void )			( edict_t *pentBlocked, edict_t *pentOther );
 | 
			
		||||
	FM_KeyValue,	// void )			( edict_t *pentKeyvalue, KeyValueData *pkvd );
 | 
			
		||||
	FM_SetAbsBox,			// void )			( edict_t *pent );
 | 
			
		||||
	FM_ClientConnect,		// bool)		( edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ] );
 | 
			
		||||
	
 | 
			
		||||
	FM_ClientDisconnect,	// void )	( edict_t *pEntity );
 | 
			
		||||
	FM_ClientKill,		// void )		( edict_t *pEntity );
 | 
			
		||||
	FM_ClientPutInServer,	// void )	( edict_t *pEntity );
 | 
			
		||||
	FM_ClientCommand,		// void )		( edict_t *pEntity );
 | 
			
		||||
 | 
			
		||||
	FM_ServerDeactivate,	// void)	( void );
 | 
			
		||||
 | 
			
		||||
	FM_PlayerPreThink,		// void )	( edict_t *pEntity );
 | 
			
		||||
	FM_PlayerPostThink,		// void )	( edict_t *pEntity );
 | 
			
		||||
 | 
			
		||||
	FM_StartFrame,		// void )		( void );
 | 
			
		||||
	FM_ParmsNewLevel,		// void )		( void );
 | 
			
		||||
	FM_ParmsChangeLevel,	// void )	( void );
 | 
			
		||||
 | 
			
		||||
	 // Returns string describing current .dll.  E.g., TeamFotrress 2, Half-Life
 | 
			
		||||
	FM_GetGameDescription,	 // const char * )( void );     
 | 
			
		||||
 | 
			
		||||
	// Spectator funcs
 | 
			
		||||
	FM_SpectatorConnect,	// void)		( edict_t *pEntity );
 | 
			
		||||
	FM_SpectatorDisconnect,	// void )	( edict_t *pEntity );
 | 
			
		||||
	FM_SpectatorThink,		// void )		( edict_t *pEntity );
 | 
			
		||||
 | 
			
		||||
	// Notify game .dll that engine is going to shut down.  Allows mod authors to set a breakpoint.
 | 
			
		||||
	FM_Sys_Error,		// void )			( const char *error_string );
 | 
			
		||||
 | 
			
		||||
	FM_PM_FindTextureType,	// char )( char *name );
 | 
			
		||||
	FM_RegisterEncoders,	// void )	( void );
 | 
			
		||||
 | 
			
		||||
	// Enumerates player hulls.  Returns 0 if the hull number doesn't exist, 1 otherwise
 | 
			
		||||
	FM_GetHullBounds,	// int)	( int hullnumber, float *mins, float *maxs );
 | 
			
		||||
 | 
			
		||||
	// Create baselines for certain "unplaced" items.
 | 
			
		||||
	FM_CreateInstancedBaselines,	// void ) ( void );
 | 
			
		||||
	FM_pfnAllowLagCompensation,	// int )( void );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
extern CVector<int> Engine[];
 | 
			
		||||
extern CVector<int> EnginePost[];
 | 
			
		||||
extern cell mCellResult;
 | 
			
		||||
extern float mFloatResult;
 | 
			
		||||
extern const char *mStringResult;
 | 
			
		||||
extern cell mlCellResult;
 | 
			
		||||
extern float mlFloatResult;
 | 
			
		||||
extern const char *mlStringResult;
 | 
			
		||||
extern int lastFmRes;
 | 
			
		||||
extern int retType;
 | 
			
		||||
 | 
			
		||||
#endif //_INCLUDE_FORWARD_H
 | 
			
		||||
							
								
								
									
										608
									
								
								dlls/fakemeta/pev.cpp
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										608
									
								
								dlls/fakemeta/pev.cpp
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,608 @@
 | 
			
		||||
#include "fakemeta_amxx.h"
 | 
			
		||||
 | 
			
		||||
// originally by mahnsawce
 | 
			
		||||
static cell AMX_NATIVE_CALL amx_pev(AMX *amx,cell *params)
 | 
			
		||||
{
 | 
			
		||||
	int index=params[1];
 | 
			
		||||
	if (index >= 1 && index <= 32)
 | 
			
		||||
	{
 | 
			
		||||
		if (!MF_IsPlayerIngame(index))
 | 
			
		||||
		{
 | 
			
		||||
			MF_RaiseAmxError(amx, AMX_ERR_NATIVE);
 | 
			
		||||
			return 0;
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		if (index > gpGlobals->maxEntities)
 | 
			
		||||
		{
 | 
			
		||||
			MF_RaiseAmxError(amx, AMX_ERR_NATIVE);
 | 
			
		||||
			return 0;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	edict_t *pPlayer = INDEXENT(index);
 | 
			
		||||
	int		returntype = *params/sizeof(cell);
 | 
			
		||||
	int		valuetype=0;
 | 
			
		||||
	int		iReturn=0;
 | 
			
		||||
	float	fReturn=0;
 | 
			
		||||
	Vector	vReturn=Vector(0,0,0);
 | 
			
		||||
	byte	bReturn[4]={0,0,0,0};
 | 
			
		||||
	int		iSwitch	= params[2];
 | 
			
		||||
	if (iSwitch > pev_int_start && iSwitch < pev_int_end)
 | 
			
		||||
		valuetype=VALUETYPE_INT;
 | 
			
		||||
	else if (iSwitch > pev_float_start && iSwitch < pev_float_end)
 | 
			
		||||
		valuetype=VALUETYPE_FLOAT;
 | 
			
		||||
	else if (iSwitch > pev_vecarray_start && iSwitch < pev_vecarray_end)
 | 
			
		||||
		valuetype=VALUETYPE_VECTOR;
 | 
			
		||||
	else if (iSwitch > pev_byte_start && iSwitch < pev_byte_end)
 | 
			
		||||
		valuetype=VALUETYPE_BYTE;
 | 
			
		||||
	else if (iSwitch > pev_string_start && iSwitch < pev_string_end)
 | 
			
		||||
		valuetype=VALUETYPE_STRING;
 | 
			
		||||
	if (iSwitch > pev_int_start && iSwitch < pev_int_end)
 | 
			
		||||
	{
 | 
			
		||||
		valuetype=VALUETYPE_INT;
 | 
			
		||||
		switch(iSwitch)
 | 
			
		||||
		{
 | 
			
		||||
			case fixangle:
 | 
			
		||||
				iReturn = pPlayer->v.fixangle;
 | 
			
		||||
				break;
 | 
			
		||||
			case modelindex:
 | 
			
		||||
				iReturn = pPlayer->v.modelindex;
 | 
			
		||||
				break;
 | 
			
		||||
			case viewmodel:
 | 
			
		||||
				iReturn = pPlayer->v.viewmodel;
 | 
			
		||||
				break;
 | 
			
		||||
			case weaponmodel:
 | 
			
		||||
				iReturn = pPlayer->v.weaponmodel;
 | 
			
		||||
				break;
 | 
			
		||||
			case movetype:
 | 
			
		||||
				iReturn = pPlayer->v.movetype;
 | 
			
		||||
				break;
 | 
			
		||||
			case solid:
 | 
			
		||||
				iReturn = pPlayer->v.solid;
 | 
			
		||||
				break;
 | 
			
		||||
			case skin:
 | 
			
		||||
				iReturn = pPlayer->v.skin;
 | 
			
		||||
				break;
 | 
			
		||||
			case body:
 | 
			
		||||
				iReturn = pPlayer->v.body;
 | 
			
		||||
				break;
 | 
			
		||||
			case effects:
 | 
			
		||||
				iReturn = pPlayer->v.effects;
 | 
			
		||||
				break;
 | 
			
		||||
			case light_level:
 | 
			
		||||
				iReturn = pPlayer->v.light_level;
 | 
			
		||||
				break;
 | 
			
		||||
			case sequence:
 | 
			
		||||
				iReturn = pPlayer->v.sequence;
 | 
			
		||||
				break;
 | 
			
		||||
			case gaitsequence:
 | 
			
		||||
				iReturn = pPlayer->v.gaitsequence;
 | 
			
		||||
				break;
 | 
			
		||||
			case rendermode:
 | 
			
		||||
				iReturn = pPlayer->v.rendermode;
 | 
			
		||||
				break;
 | 
			
		||||
			case renderfx:
 | 
			
		||||
				iReturn = pPlayer->v.renderfx;
 | 
			
		||||
				break;
 | 
			
		||||
			case weapons:
 | 
			
		||||
				iReturn = pPlayer->v.weapons;
 | 
			
		||||
				break;
 | 
			
		||||
			case deadflag:
 | 
			
		||||
				iReturn = pPlayer->v.deadflag;
 | 
			
		||||
				break;
 | 
			
		||||
			case button:
 | 
			
		||||
				iReturn = pPlayer->v.button;
 | 
			
		||||
				break;
 | 
			
		||||
			case impulse:
 | 
			
		||||
				iReturn = pPlayer->v.impulse;
 | 
			
		||||
				break;
 | 
			
		||||
			case spawnflags:
 | 
			
		||||
				iReturn = pPlayer->v.spawnflags;
 | 
			
		||||
				break;
 | 
			
		||||
			case flags:
 | 
			
		||||
				iReturn = pPlayer->v.flags;
 | 
			
		||||
				break;
 | 
			
		||||
			case colormap:
 | 
			
		||||
				iReturn = pPlayer->v.colormap;
 | 
			
		||||
				break;
 | 
			
		||||
			case team:
 | 
			
		||||
				iReturn = pPlayer->v.team;
 | 
			
		||||
				break;
 | 
			
		||||
			case waterlevel:
 | 
			
		||||
				iReturn = pPlayer->v.waterlevel;
 | 
			
		||||
				break;
 | 
			
		||||
			case watertype:
 | 
			
		||||
				iReturn = pPlayer->v.watertype;
 | 
			
		||||
				break;
 | 
			
		||||
			case playerclass:
 | 
			
		||||
				iReturn = pPlayer->v.playerclass;
 | 
			
		||||
				break;
 | 
			
		||||
			case weaponanim:
 | 
			
		||||
				iReturn = pPlayer->v.weaponanim;
 | 
			
		||||
				break;
 | 
			
		||||
			case pushmsec:
 | 
			
		||||
				iReturn = pPlayer->v.pushmsec;
 | 
			
		||||
				break;
 | 
			
		||||
			case bInDuck:
 | 
			
		||||
				iReturn = pPlayer->v.bInDuck;
 | 
			
		||||
				break;
 | 
			
		||||
			case flTimeStepSound:
 | 
			
		||||
				iReturn = pPlayer->v.flTimeStepSound;
 | 
			
		||||
				break;
 | 
			
		||||
			case flSwimTime:
 | 
			
		||||
				iReturn = pPlayer->v.flSwimTime;
 | 
			
		||||
				break;
 | 
			
		||||
			case flDuckTime:
 | 
			
		||||
				iReturn = pPlayer->v.flDuckTime;
 | 
			
		||||
				break;
 | 
			
		||||
			case iStepLeft:
 | 
			
		||||
				iReturn = pPlayer->v.iStepLeft;
 | 
			
		||||
				break;
 | 
			
		||||
			case gamestate:
 | 
			
		||||
				iReturn = pPlayer->v.gamestate;
 | 
			
		||||
				break;
 | 
			
		||||
			case oldbuttons:
 | 
			
		||||
				iReturn = pPlayer->v.oldbuttons;
 | 
			
		||||
				break;
 | 
			
		||||
			case groupinfo:
 | 
			
		||||
				iReturn = pPlayer->v.groupinfo;
 | 
			
		||||
				break;
 | 
			
		||||
			case iuser1:
 | 
			
		||||
				iReturn = pPlayer->v.iuser1;
 | 
			
		||||
				break;
 | 
			
		||||
			case iuser2:
 | 
			
		||||
				iReturn = pPlayer->v.iuser2;
 | 
			
		||||
				break;
 | 
			
		||||
			case iuser3:
 | 
			
		||||
				iReturn = pPlayer->v.iuser3;
 | 
			
		||||
				break;
 | 
			
		||||
			case iuser4:
 | 
			
		||||
				iReturn = pPlayer->v.iuser4;
 | 
			
		||||
				break;
 | 
			
		||||
			default:
 | 
			
		||||
				return 0;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	else if (iSwitch > pev_float_start && iSwitch < pev_float_end)
 | 
			
		||||
	{
 | 
			
		||||
		valuetype=VALUETYPE_FLOAT;
 | 
			
		||||
		switch(iSwitch)
 | 
			
		||||
		{
 | 
			
		||||
			case impacttime:
 | 
			
		||||
				fReturn = pPlayer->v.impacttime;
 | 
			
		||||
				break;
 | 
			
		||||
			case starttime:
 | 
			
		||||
				fReturn = pPlayer->v.starttime;
 | 
			
		||||
				break;
 | 
			
		||||
			case idealpitch:
 | 
			
		||||
				fReturn = pPlayer->v.idealpitch;
 | 
			
		||||
				break;
 | 
			
		||||
			case pitch_speed:
 | 
			
		||||
				fReturn = pPlayer->v.pitch_speed;
 | 
			
		||||
				break;
 | 
			
		||||
			case yaw_speed:
 | 
			
		||||
				fReturn = pPlayer->v.yaw_speed;
 | 
			
		||||
				break;
 | 
			
		||||
			case ltime:
 | 
			
		||||
				fReturn = pPlayer->v.ltime;
 | 
			
		||||
				break;
 | 
			
		||||
			case nextthink:
 | 
			
		||||
				fReturn = pPlayer->v.nextthink;
 | 
			
		||||
				break;
 | 
			
		||||
			case gravity:
 | 
			
		||||
				fReturn = pPlayer->v.gravity;
 | 
			
		||||
				break;
 | 
			
		||||
			case friction:
 | 
			
		||||
				fReturn = pPlayer->v.friction;
 | 
			
		||||
				break;
 | 
			
		||||
			case frame:
 | 
			
		||||
				fReturn = pPlayer->v.frame;
 | 
			
		||||
				break;
 | 
			
		||||
			case animtime:
 | 
			
		||||
				fReturn = pPlayer->v.animtime;
 | 
			
		||||
				break;
 | 
			
		||||
			case framerate:
 | 
			
		||||
				fReturn = pPlayer->v.framerate;
 | 
			
		||||
				break;
 | 
			
		||||
			case scale:
 | 
			
		||||
				fReturn = pPlayer->v.scale;
 | 
			
		||||
				break;
 | 
			
		||||
			case renderamt:
 | 
			
		||||
				fReturn = pPlayer->v.renderamt;
 | 
			
		||||
				break;
 | 
			
		||||
			case health:
 | 
			
		||||
				fReturn = pPlayer->v.health;
 | 
			
		||||
				break;
 | 
			
		||||
			case frags:
 | 
			
		||||
				fReturn = pPlayer->v.frags;
 | 
			
		||||
				break;
 | 
			
		||||
			case takedamage:
 | 
			
		||||
				fReturn = pPlayer->v.takedamage;
 | 
			
		||||
				break;
 | 
			
		||||
			case max_health:
 | 
			
		||||
				fReturn = pPlayer->v.max_health;
 | 
			
		||||
				break;
 | 
			
		||||
			case teleport_time:
 | 
			
		||||
				fReturn = pPlayer->v.teleport_time;
 | 
			
		||||
				break;
 | 
			
		||||
			case armortype:
 | 
			
		||||
				fReturn = pPlayer->v.armortype;
 | 
			
		||||
				break;
 | 
			
		||||
			case armorvalue:
 | 
			
		||||
				fReturn = pPlayer->v.armorvalue;
 | 
			
		||||
				break;
 | 
			
		||||
			case dmg_take:
 | 
			
		||||
				fReturn = pPlayer->v.dmg_take;
 | 
			
		||||
				break;
 | 
			
		||||
			case dmg_save:
 | 
			
		||||
				fReturn = pPlayer->v.dmg_save;
 | 
			
		||||
				break;
 | 
			
		||||
			case dmg:
 | 
			
		||||
				fReturn = pPlayer->v.dmg;
 | 
			
		||||
				break;
 | 
			
		||||
			case dmgtime:
 | 
			
		||||
				fReturn = pPlayer->v.dmgtime;
 | 
			
		||||
				break;
 | 
			
		||||
			case speed:
 | 
			
		||||
				fReturn = pPlayer->v.speed;
 | 
			
		||||
				break;
 | 
			
		||||
			case air_finished:
 | 
			
		||||
				fReturn = pPlayer->v.air_finished;
 | 
			
		||||
				break;
 | 
			
		||||
			case pain_finished:
 | 
			
		||||
				fReturn = pPlayer->v.pain_finished;
 | 
			
		||||
				break;
 | 
			
		||||
			case radsuit_finished:
 | 
			
		||||
				fReturn = pPlayer->v.radsuit_finished;
 | 
			
		||||
				break;
 | 
			
		||||
			case maxspeed:
 | 
			
		||||
				fReturn = pPlayer->v.maxspeed;
 | 
			
		||||
				break;
 | 
			
		||||
			case fov:
 | 
			
		||||
				fReturn = pPlayer->v.fov;
 | 
			
		||||
				break;
 | 
			
		||||
			case flFallVelocity:
 | 
			
		||||
				fReturn = pPlayer->v.flFallVelocity;
 | 
			
		||||
				break;
 | 
			
		||||
			case fuser1:
 | 
			
		||||
				fReturn = pPlayer->v.fuser1;
 | 
			
		||||
				break;
 | 
			
		||||
			case fuser2:
 | 
			
		||||
				fReturn = pPlayer->v.fuser2;
 | 
			
		||||
				break;
 | 
			
		||||
			case fuser3:
 | 
			
		||||
				fReturn = pPlayer->v.fuser3;
 | 
			
		||||
				break;
 | 
			
		||||
			case fuser4:
 | 
			
		||||
				fReturn = pPlayer->v.fuser4;
 | 
			
		||||
				break;
 | 
			
		||||
			default:
 | 
			
		||||
				return 0;
 | 
			
		||||
				break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	else if (iSwitch > pev_string_start && iSwitch < pev_string_end)
 | 
			
		||||
	{
 | 
			
		||||
		valuetype=VALUETYPE_STRING;
 | 
			
		||||
		switch (iSwitch)
 | 
			
		||||
		{
 | 
			
		||||
		case classname:
 | 
			
		||||
			iReturn = pPlayer->v.classname;
 | 
			
		||||
			break;
 | 
			
		||||
		case globalname:
 | 
			
		||||
			iReturn = pPlayer->v.globalname;
 | 
			
		||||
			break;
 | 
			
		||||
		case model:
 | 
			
		||||
			iReturn = pPlayer->v.model;
 | 
			
		||||
			break;
 | 
			
		||||
		case target:
 | 
			
		||||
			iReturn = pPlayer->v.target;
 | 
			
		||||
			break;
 | 
			
		||||
		case targetname:
 | 
			
		||||
			iReturn = pPlayer->v.targetname;
 | 
			
		||||
			break;
 | 
			
		||||
		case netname:
 | 
			
		||||
			iReturn = pPlayer->v.netname;
 | 
			
		||||
			break;
 | 
			
		||||
		case message:
 | 
			
		||||
			iReturn = pPlayer->v.message;
 | 
			
		||||
			break;
 | 
			
		||||
		case noise:
 | 
			
		||||
			iReturn = pPlayer->v.noise;
 | 
			
		||||
			break;
 | 
			
		||||
		case noise1:
 | 
			
		||||
			iReturn = pPlayer->v.noise1;
 | 
			
		||||
			break;
 | 
			
		||||
		case noise2:
 | 
			
		||||
			iReturn = pPlayer->v.noise2;
 | 
			
		||||
			break;
 | 
			
		||||
		case noise3:
 | 
			
		||||
			iReturn = pPlayer->v.noise3;
 | 
			
		||||
			break;
 | 
			
		||||
		default:
 | 
			
		||||
			return 0;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	else if (iSwitch > pev_edict_start && iSwitch < pev_edict_end)
 | 
			
		||||
	{
 | 
			
		||||
		valuetype=VALUETYPE_EDICT;
 | 
			
		||||
		switch (iSwitch)
 | 
			
		||||
		{
 | 
			
		||||
		case chain:
 | 
			
		||||
			iReturn = ENTINDEX(pPlayer->v.chain);
 | 
			
		||||
			break;
 | 
			
		||||
		case dmg_inflictor:
 | 
			
		||||
			iReturn = ENTINDEX(pPlayer->v.dmg_inflictor);
 | 
			
		||||
			break;
 | 
			
		||||
		case enemy:
 | 
			
		||||
			iReturn = ENTINDEX(pPlayer->v.enemy);
 | 
			
		||||
			break;
 | 
			
		||||
		case aiment:
 | 
			
		||||
			iReturn = ENTINDEX(pPlayer->v.aiment);
 | 
			
		||||
			break;
 | 
			
		||||
		case owner:
 | 
			
		||||
			iReturn = ENTINDEX(pPlayer->v.owner);
 | 
			
		||||
			break;
 | 
			
		||||
		case groundentity:
 | 
			
		||||
			iReturn = ENTINDEX(pPlayer->v.groundentity);
 | 
			
		||||
			break;
 | 
			
		||||
		case euser1:
 | 
			
		||||
			iReturn = ENTINDEX(pPlayer->v.euser1);
 | 
			
		||||
			break;
 | 
			
		||||
		case euser2:
 | 
			
		||||
			iReturn = ENTINDEX(pPlayer->v.euser2);
 | 
			
		||||
			break;
 | 
			
		||||
		case euser3:
 | 
			
		||||
			iReturn = ENTINDEX(pPlayer->v.euser3);
 | 
			
		||||
			break;
 | 
			
		||||
		case euser4:
 | 
			
		||||
			iReturn = ENTINDEX(pPlayer->v.euser4);
 | 
			
		||||
			break;
 | 
			
		||||
		default:
 | 
			
		||||
			return 0;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	else if (iSwitch > pev_vecarray_start && iSwitch < pev_vecarray_end)
 | 
			
		||||
	{
 | 
			
		||||
		valuetype=VALUETYPE_VECTOR;
 | 
			
		||||
		switch(iSwitch)
 | 
			
		||||
		{
 | 
			
		||||
		case origin:
 | 
			
		||||
			vReturn = pPlayer->v.origin;
 | 
			
		||||
			break;
 | 
			
		||||
		case oldorigin:
 | 
			
		||||
			vReturn = pPlayer->v.oldorigin;
 | 
			
		||||
			break;
 | 
			
		||||
		case velocity:
 | 
			
		||||
			vReturn = pPlayer->v.velocity;
 | 
			
		||||
			break;
 | 
			
		||||
		case basevelocity:
 | 
			
		||||
			vReturn = pPlayer->v.basevelocity;
 | 
			
		||||
			break;
 | 
			
		||||
		case movedir:
 | 
			
		||||
			vReturn = pPlayer->v.movedir;
 | 
			
		||||
			break;
 | 
			
		||||
		case angles:
 | 
			
		||||
			vReturn = pPlayer->v.angles;
 | 
			
		||||
			break;
 | 
			
		||||
		case avelocity:
 | 
			
		||||
			vReturn = pPlayer->v.avelocity;
 | 
			
		||||
			break;
 | 
			
		||||
		case v_angle:
 | 
			
		||||
			vReturn = pPlayer->v.v_angle;
 | 
			
		||||
			break;
 | 
			
		||||
		case endpos:
 | 
			
		||||
			vReturn = pPlayer->v.endpos;
 | 
			
		||||
			break;
 | 
			
		||||
		case startpos:
 | 
			
		||||
			vReturn = pPlayer->v.startpos;
 | 
			
		||||
			break;
 | 
			
		||||
		case absmin:
 | 
			
		||||
			vReturn = pPlayer->v.absmin;
 | 
			
		||||
			break;
 | 
			
		||||
		case absmax:
 | 
			
		||||
			vReturn = pPlayer->v.absmax;
 | 
			
		||||
			break;
 | 
			
		||||
		case mins:
 | 
			
		||||
			vReturn = pPlayer->v.mins;
 | 
			
		||||
			break;
 | 
			
		||||
		case maxs:
 | 
			
		||||
			vReturn = pPlayer->v.maxs;
 | 
			
		||||
			break;
 | 
			
		||||
		case size:
 | 
			
		||||
			vReturn = pPlayer->v.size;
 | 
			
		||||
			break;
 | 
			
		||||
		case rendercolor:
 | 
			
		||||
			vReturn = pPlayer->v.rendercolor;
 | 
			
		||||
			break;
 | 
			
		||||
		case view_ofs:
 | 
			
		||||
			vReturn = pPlayer->v.view_ofs;
 | 
			
		||||
			break;
 | 
			
		||||
		case vuser1:
 | 
			
		||||
			vReturn = pPlayer->v.vuser1;
 | 
			
		||||
			break;
 | 
			
		||||
		case vuser2:
 | 
			
		||||
			vReturn = pPlayer->v.vuser2;
 | 
			
		||||
			break;
 | 
			
		||||
		case vuser3:
 | 
			
		||||
			vReturn = pPlayer->v.vuser3;
 | 
			
		||||
			break;
 | 
			
		||||
		case vuser4:
 | 
			
		||||
			vReturn = pPlayer->v.vuser4;
 | 
			
		||||
			break;
 | 
			
		||||
		default:
 | 
			
		||||
			return 0;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	else if ((iSwitch > pev_byte_start && iSwitch < pev_byte_end) || (iSwitch > pev_bytearray_start && iSwitch < pev_bytearray_end))
 | 
			
		||||
	{
 | 
			
		||||
		if (iSwitch > pev_byte_start && iSwitch < pev_byte_end)
 | 
			
		||||
			valuetype=VALUETYPE_INT;
 | 
			
		||||
		else
 | 
			
		||||
			valuetype=VALUETYPE_BYTE;
 | 
			
		||||
		switch(iSwitch)
 | 
			
		||||
		{
 | 
			
		||||
			case controller:
 | 
			
		||||
			{
 | 
			
		||||
				bReturn[0] = pPlayer->v.controller[0];
 | 
			
		||||
				bReturn[1] = pPlayer->v.controller[1];
 | 
			
		||||
				bReturn[2] = pPlayer->v.controller[2];
 | 
			
		||||
				bReturn[3] = pPlayer->v.controller[3];
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case controller_0:
 | 
			
		||||
				iReturn = pPlayer->v.controller[0];
 | 
			
		||||
				break;
 | 
			
		||||
			case controller_1:
 | 
			
		||||
				iReturn = pPlayer->v.controller[1];
 | 
			
		||||
				break;
 | 
			
		||||
			case controller_2:
 | 
			
		||||
				iReturn = pPlayer->v.controller[2];
 | 
			
		||||
				break;
 | 
			
		||||
			case controller_3:
 | 
			
		||||
				iReturn = pPlayer->v.controller[3];
 | 
			
		||||
				break;
 | 
			
		||||
			case blending:
 | 
			
		||||
			{
 | 
			
		||||
				bReturn[0] = pPlayer->v.blending[0];
 | 
			
		||||
				bReturn[1] = pPlayer->v.blending[1];
 | 
			
		||||
				bReturn[2]=0;
 | 
			
		||||
				bReturn[3]=0;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case blending_0:
 | 
			
		||||
				iReturn = pPlayer->v.blending[0];
 | 
			
		||||
				break;
 | 
			
		||||
			case blending_1:
 | 
			
		||||
				iReturn = pPlayer->v.blending[1];
 | 
			
		||||
				break;
 | 
			
		||||
			default:
 | 
			
		||||
				return 0;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if (returntype == RETURNTYPE_INT)
 | 
			
		||||
	{
 | 
			
		||||
		// We are only returning an integer here.
 | 
			
		||||
		// If the returned value is a string, return make_string value.
 | 
			
		||||
		// If the returned value is a float, round it down.
 | 
			
		||||
		// If the returned value is int, just return it.
 | 
			
		||||
		// Otherwise, print a warning.
 | 
			
		||||
		if (valuetype == VALUETYPE_INT || valuetype == VALUETYPE_EDICT)
 | 
			
		||||
		{
 | 
			
		||||
			return iReturn;
 | 
			
		||||
		}
 | 
			
		||||
		else if (valuetype == VALUETYPE_FLOAT)
 | 
			
		||||
		{
 | 
			
		||||
			return (int)fReturn;
 | 
			
		||||
		}
 | 
			
		||||
		MF_Log("Invalid return valuetype for pev().");
 | 
			
		||||
		MF_RaiseAmxError(amx, AMX_ERR_NATIVE);
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
	else if (returntype == RETURNTYPE_FLOAT)
 | 
			
		||||
	{
 | 
			
		||||
		// We are setting a variable as a float here.
 | 
			
		||||
		// If it's a float, just set it.
 | 
			
		||||
		// If it's an integer, convert and set it.
 | 
			
		||||
		// Otherwise, return an error.
 | 
			
		||||
		if (valuetype == VALUETYPE_INT)
 | 
			
		||||
		{
 | 
			
		||||
			float fTemp = (float)iReturn;
 | 
			
		||||
			cell *cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
			*cRet = amx_ftoc(fTemp);
 | 
			
		||||
			return 1;
 | 
			
		||||
		}
 | 
			
		||||
		else if (valuetype == VALUETYPE_FLOAT)
 | 
			
		||||
		{
 | 
			
		||||
			cell *cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
			*cRet = amx_ftoc(fReturn);
 | 
			
		||||
			return 1;
 | 
			
		||||
		}
 | 
			
		||||
		else if (valuetype == VALUETYPE_VECTOR)
 | 
			
		||||
		{
 | 
			
		||||
			cell *cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
			cRet[0] = amx_ftoc(vReturn.x);
 | 
			
		||||
			cRet[1] = amx_ftoc(vReturn.y);
 | 
			
		||||
			cRet[2] = amx_ftoc(vReturn.z);
 | 
			
		||||
			return 1;
 | 
			
		||||
		}
 | 
			
		||||
		else if (valuetype == VALUETYPE_BYTE)
 | 
			
		||||
		{
 | 
			
		||||
			cell *cRet = MF_GetAmxAddr(amx,params[3]);
 | 
			
		||||
			if (iSwitch == blending)
 | 
			
		||||
			{
 | 
			
		||||
				// Only 2 for blending.
 | 
			
		||||
				cRet[0]=bReturn[0];
 | 
			
		||||
				cRet[1]=bReturn[1];
 | 
			
		||||
				return 1;
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				// There's 4 for controller.
 | 
			
		||||
				cRet[0]=bReturn[0];
 | 
			
		||||
				cRet[1]=bReturn[1];
 | 
			
		||||
				cRet[2]=bReturn[2];
 | 
			
		||||
				cRet[3]=bReturn[3];
 | 
			
		||||
				return 1;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		MF_Log("Invalid return valuetype for pev().");
 | 
			
		||||
		MF_RaiseAmxError(amx, AMX_ERR_NATIVE);
 | 
			
		||||
	}
 | 
			
		||||
	else if (returntype == RETURNTYPE_STRING)
 | 
			
		||||
	{
 | 
			
		||||
		// Here is a string value that was requested.
 | 
			
		||||
		// If the returned value is an integer or float, then sprintf() it to string.
 | 
			
		||||
		// If the returned is a string, then string() it.
 | 
			
		||||
		if (valuetype == VALUETYPE_INT || valuetype == VALUETYPE_STRING || valuetype == VALUETYPE_EDICT)
 | 
			
		||||
		{
 | 
			
		||||
			if (valuetype == VALUETYPE_STRING)
 | 
			
		||||
			{
 | 
			
		||||
				MF_SetAmxString(amx, params[3], STRING(iReturn), params[4]);
 | 
			
		||||
				return 1;
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				char blah[64];
 | 
			
		||||
				sprintf(blah,"%i",iReturn);
 | 
			
		||||
				MF_SetAmxString(amx, params[3], blah, params[4]);
 | 
			
		||||
				return 1;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
		if (valuetype == VALUETYPE_FLOAT)
 | 
			
		||||
		{
 | 
			
		||||
			char blah[64];
 | 
			
		||||
			sprintf(blah,"%f",fReturn);
 | 
			
		||||
			MF_SetAmxString(amx, params[3], blah, params[4]);
 | 
			
		||||
			return 1;
 | 
			
		||||
		}
 | 
			
		||||
		if (valuetype == VALUETYPE_VECTOR)
 | 
			
		||||
		{
 | 
			
		||||
			char blah[256];
 | 
			
		||||
			sprintf(blah,"%f %f %f",vReturn.x,vReturn.y,vReturn.z);
 | 
			
		||||
			MF_SetAmxString(amx, params[3], blah, params[4]);
 | 
			
		||||
			return 1;
 | 
			
		||||
		}
 | 
			
		||||
		if (valuetype == VALUETYPE_BYTE)
 | 
			
		||||
		{
 | 
			
		||||
			if (iSwitch == controller)
 | 
			
		||||
			{
 | 
			
		||||
				char blah[128];
 | 
			
		||||
				sprintf(blah,"%i %i",bReturn[0],bReturn[1]);
 | 
			
		||||
				MF_SetAmxString(amx,params[3],blah,params[4]);
 | 
			
		||||
				return 1;
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				char blah[256];
 | 
			
		||||
				sprintf(blah,"%i %i %i %i",bReturn[0],bReturn[1],bReturn[2],bReturn[3]);
 | 
			
		||||
				MF_SetAmxString(amx,params[3],blah,params[4]);
 | 
			
		||||
				return 1;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		MF_Log("Invalid return valuetype for pev().");
 | 
			
		||||
		MF_RaiseAmxError(amx, AMX_ERR_NATIVE);
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										160
									
								
								dlls/fakemeta/pev.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										160
									
								
								dlls/fakemeta/pev.h
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,160 @@
 | 
			
		||||
#ifndef _INCLUDE_PEV_H
 | 
			
		||||
#define _INCLUDE_PEV_H
 | 
			
		||||
 | 
			
		||||
#define		RETURNTYPE_INT		2
 | 
			
		||||
#define		RETURNTYPE_FLOAT	3
 | 
			
		||||
#define		RETURNTYPE_VECTOR	3
 | 
			
		||||
#define		RETURNTYPE_STRING	4
 | 
			
		||||
#define		VALUETYPE_INT		1
 | 
			
		||||
#define		VALUETYPE_FLOAT		2
 | 
			
		||||
#define		VALUETYPE_VECTOR	3
 | 
			
		||||
#define		VALUETYPE_EDICT		4
 | 
			
		||||
#define		VALUETYPE_STRING	5
 | 
			
		||||
#define		VALUETYPE_BYTE		6
 | 
			
		||||
 | 
			
		||||
enum pev_pointers
 | 
			
		||||
{
 | 
			
		||||
	pev_string_start = 0,
 | 
			
		||||
	classname,
 | 
			
		||||
	globalname,
 | 
			
		||||
	model,
 | 
			
		||||
	target,
 | 
			
		||||
	targetname,
 | 
			
		||||
	netname,
 | 
			
		||||
	message,
 | 
			
		||||
	noise,
 | 
			
		||||
	noise1,
 | 
			
		||||
	noise2,
 | 
			
		||||
	noise3,
 | 
			
		||||
	pev_string_end,
 | 
			
		||||
	pev_edict_start,
 | 
			
		||||
	chain,
 | 
			
		||||
	dmg_inflictor,
 | 
			
		||||
	enemy,
 | 
			
		||||
	aiment,
 | 
			
		||||
	owner,
 | 
			
		||||
	groundentity,
 | 
			
		||||
	euser1,
 | 
			
		||||
	euser2,
 | 
			
		||||
	euser3,
 | 
			
		||||
	euser4,
 | 
			
		||||
	pev_edict_end,
 | 
			
		||||
	pev_float_start,
 | 
			
		||||
	impacttime,
 | 
			
		||||
	starttime,
 | 
			
		||||
	idealpitch,
 | 
			
		||||
	pitch_speed,
 | 
			
		||||
	yaw_speed,
 | 
			
		||||
	ltime,
 | 
			
		||||
	nextthink,
 | 
			
		||||
	gravity,
 | 
			
		||||
	friction,
 | 
			
		||||
	frame,
 | 
			
		||||
	animtime,
 | 
			
		||||
	framerate,
 | 
			
		||||
	scale,
 | 
			
		||||
	renderamt,
 | 
			
		||||
	health,
 | 
			
		||||
	frags,
 | 
			
		||||
	takedamage,
 | 
			
		||||
	max_health,
 | 
			
		||||
	teleport_time,
 | 
			
		||||
	armortype,
 | 
			
		||||
	armorvalue,
 | 
			
		||||
	dmg_take,
 | 
			
		||||
	dmg_save,
 | 
			
		||||
	dmg,
 | 
			
		||||
	dmgtime,
 | 
			
		||||
	speed,
 | 
			
		||||
	air_finished,
 | 
			
		||||
	pain_finished,
 | 
			
		||||
	radsuit_finished,
 | 
			
		||||
	maxspeed,
 | 
			
		||||
	fov,
 | 
			
		||||
	flFallVelocity,
 | 
			
		||||
	fuser1,
 | 
			
		||||
	fuser2,
 | 
			
		||||
	fuser3,
 | 
			
		||||
	fuser4,
 | 
			
		||||
	pev_float_end,
 | 
			
		||||
	pev_int_start,
 | 
			
		||||
	fixangle,
 | 
			
		||||
	modelindex,
 | 
			
		||||
	viewmodel,
 | 
			
		||||
	weaponmodel,
 | 
			
		||||
	movetype,
 | 
			
		||||
	solid,
 | 
			
		||||
	skin,
 | 
			
		||||
	body,
 | 
			
		||||
	effects,
 | 
			
		||||
	light_level,
 | 
			
		||||
	sequence,
 | 
			
		||||
	gaitsequence,
 | 
			
		||||
	rendermode,
 | 
			
		||||
	renderfx,
 | 
			
		||||
	weapons,
 | 
			
		||||
	deadflag,
 | 
			
		||||
	button,
 | 
			
		||||
	impulse,
 | 
			
		||||
	spawnflags,
 | 
			
		||||
	flags,
 | 
			
		||||
	colormap,
 | 
			
		||||
	team,
 | 
			
		||||
	waterlevel,
 | 
			
		||||
	watertype,
 | 
			
		||||
	playerclass,
 | 
			
		||||
	weaponanim,
 | 
			
		||||
	pushmsec,
 | 
			
		||||
	bInDuck,
 | 
			
		||||
	flTimeStepSound,
 | 
			
		||||
	flSwimTime,
 | 
			
		||||
	flDuckTime,
 | 
			
		||||
	iStepLeft,
 | 
			
		||||
	gamestate,
 | 
			
		||||
	oldbuttons,
 | 
			
		||||
	groupinfo,
 | 
			
		||||
	iuser1,
 | 
			
		||||
	iuser2,
 | 
			
		||||
	iuser3,
 | 
			
		||||
	iuser4,
 | 
			
		||||
	pev_int_end,
 | 
			
		||||
	pev_byte_start,
 | 
			
		||||
	controller_0,
 | 
			
		||||
	controller_1,
 | 
			
		||||
	controller_2,
 | 
			
		||||
	controller_3,
 | 
			
		||||
	blending_0,
 | 
			
		||||
	blending_1,
 | 
			
		||||
	pev_byte_end,
 | 
			
		||||
	pev_bytearray_start,
 | 
			
		||||
	controller,
 | 
			
		||||
	blending,
 | 
			
		||||
	pev_bytearray_end,
 | 
			
		||||
	pev_vecarray_start,
 | 
			
		||||
	origin,
 | 
			
		||||
	oldorigin,
 | 
			
		||||
	velocity,
 | 
			
		||||
	basevelocity,
 | 
			
		||||
	clbasevelocity,
 | 
			
		||||
	movedir,
 | 
			
		||||
	angles,
 | 
			
		||||
	avelocity,
 | 
			
		||||
	v_angle,
 | 
			
		||||
	endpos,
 | 
			
		||||
	startpos,
 | 
			
		||||
	absmin,
 | 
			
		||||
	absmax,
 | 
			
		||||
	mins,
 | 
			
		||||
	maxs,
 | 
			
		||||
	size,
 | 
			
		||||
	rendercolor,
 | 
			
		||||
	view_ofs,
 | 
			
		||||
	vuser1,
 | 
			
		||||
	vuser2,
 | 
			
		||||
	vuser3,
 | 
			
		||||
	vuser4,
 | 
			
		||||
	punchangle,
 | 
			
		||||
	pev_vecarray_end
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif //_INCLUDE_PEV_H
 | 
			
		||||
							
								
								
									
										2990
									
								
								dlls/fakemeta/sdk/amxxmodule.cpp
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										2990
									
								
								dlls/fakemeta/sdk/amxxmodule.cpp
									
									
									
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2152
									
								
								dlls/fakemeta/sdk/amxxmodule.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										2152
									
								
								dlls/fakemeta/sdk/amxxmodule.h
									
									
									
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										462
									
								
								dlls/fakemeta/sdk/moduleconfig.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										462
									
								
								dlls/fakemeta/sdk/moduleconfig.h
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,462 @@
 | 
			
		||||
// Configuration
 | 
			
		||||
 | 
			
		||||
#ifndef __MODULECONFIG_H__
 | 
			
		||||
#define __MODULECONFIG_H__
 | 
			
		||||
 | 
			
		||||
// Module info
 | 
			
		||||
#define MODULE_NAME "FakeMeta"
 | 
			
		||||
#define MODULE_VERSION "0.20"
 | 
			
		||||
#define MODULE_AUTHOR "AMX Mod X Dev Team"
 | 
			
		||||
#define MODULE_URL "http://www.amxmodx.org/"
 | 
			
		||||
#define MODULE_LOGTAG "FAKEMETA"
 | 
			
		||||
// If you want the module not to be reloaded on mapchange, remove / comment out the next line
 | 
			
		||||
#define MODULE_RELOAD_ON_MAPCHANGE
 | 
			
		||||
 | 
			
		||||
#ifdef __DATE__
 | 
			
		||||
#define MODULE_DATE __DATE__
 | 
			
		||||
#else // __DATE__
 | 
			
		||||
#define MODULE_DATE "Unknown"
 | 
			
		||||
#endif // __DATE__
 | 
			
		||||
 | 
			
		||||
// metamod plugin?
 | 
			
		||||
#define USE_METAMOD
 | 
			
		||||
 | 
			
		||||
// - AMXX Init functions
 | 
			
		||||
// Also consider using FN_META_*
 | 
			
		||||
// AMXX query
 | 
			
		||||
//#define FN_AMXX_QUERY OnAmxxQuery
 | 
			
		||||
// AMXX attach
 | 
			
		||||
//   Do native functions init here (MF_AddNatives)
 | 
			
		||||
#define FN_AMXX_ATTACH OnAmxxAttach
 | 
			
		||||
// AMXX detach
 | 
			
		||||
//#define FN_AMXX_DETACH OnAmxxDetach
 | 
			
		||||
// All plugins loaded
 | 
			
		||||
//   Do forward functions init here (MF_RegisterForward)
 | 
			
		||||
// #define FN_AMXX_PLUGINSLOADED OnPluginsLoaded
 | 
			
		||||
 | 
			
		||||
/**** METAMOD ****/
 | 
			
		||||
// If your module doesn't use metamod, you may close the file now :)
 | 
			
		||||
#ifdef USE_METAMOD
 | 
			
		||||
// ----
 | 
			
		||||
// Hook Functions
 | 
			
		||||
// Uncomment these to be called
 | 
			
		||||
// You can also change the function name
 | 
			
		||||
 | 
			
		||||
// - Metamod init functions
 | 
			
		||||
// Also consider using FN_AMXX_*
 | 
			
		||||
// Meta query
 | 
			
		||||
//#define FN_META_QUERY OnMetaQuery
 | 
			
		||||
// Meta attach
 | 
			
		||||
//#define FN_META_ATTACH OnMetaAttach
 | 
			
		||||
// Meta detach
 | 
			
		||||
//#define FN_META_DETACH OnMetaDetach
 | 
			
		||||
 | 
			
		||||
// (wd) are Will Day's notes
 | 
			
		||||
// - GetEntityAPI2 functions
 | 
			
		||||
// #define FN_GameDLLInit				GameDLLInit					/* pfnGameInit() */
 | 
			
		||||
// #define FN_DispatchSpawn				DispatchSpawn				/* pfnSpawn() */
 | 
			
		||||
// #define FN_DispatchThink				DispatchThink				/* pfnThink() */
 | 
			
		||||
// #define FN_DispatchUse				DispatchUse					/* pfnUse() */
 | 
			
		||||
// #define FN_DispatchTouch				DispatchTouch				/* pfnTouch() */
 | 
			
		||||
// #define FN_DispatchBlocked			DispatchBlocked				/* pfnBlocked() */
 | 
			
		||||
// #define FN_DispatchKeyValue			DispatchKeyValue			/* pfnKeyValue() */
 | 
			
		||||
// #define FN_DispatchSave				DispatchSave				/* pfnSave() */
 | 
			
		||||
// #define FN_DispatchRestore			DispatchRestore				/* pfnRestore() */
 | 
			
		||||
// #define FN_DispatchObjectCollsionBox	DispatchObjectCollsionBox	/* pfnSetAbsBox() */
 | 
			
		||||
// #define FN_SaveWriteFields			SaveWriteFields				/* pfnSaveWriteFields() */
 | 
			
		||||
// #define FN_SaveReadFields			SaveReadFields				/* pfnSaveReadFields() */
 | 
			
		||||
// #define FN_SaveGlobalState			SaveGlobalState				/* pfnSaveGlobalState() */
 | 
			
		||||
// #define FN_RestoreGlobalState		RestoreGlobalState			/* pfnRestoreGlobalState() */
 | 
			
		||||
// #define FN_ResetGlobalState			ResetGlobalState			/* pfnResetGlobalState() */
 | 
			
		||||
// #define FN_ClientConnect				ClientConnect				/* pfnClientConnect()			(wd) Client has connected */
 | 
			
		||||
// #define FN_ClientDisconnect			ClientDisconnect			/* pfnClientDisconnect()		(wd) Player has left the game */
 | 
			
		||||
// #define FN_ClientKill				ClientKill					/* pfnClientKill()				(wd) Player has typed "kill" */
 | 
			
		||||
// #define FN_ClientPutInServer			ClientPutInServer			/* pfnClientPutInServer()		(wd) Client is entering the game */
 | 
			
		||||
// #define FN_ClientCommand				ClientCommand				/* pfnClientCommand()			(wd) Player has sent a command (typed or from a bind) */
 | 
			
		||||
// #define FN_ClientUserInfoChanged		ClientUserInfoChanged		/* pfnClientUserInfoChanged()	(wd) Client has updated their setinfo structure */
 | 
			
		||||
// #define FN_ServerActivate			ServerActivate				/* pfnServerActivate()			(wd) Server is starting a new map */
 | 
			
		||||
// #define FN_ServerDeactivate			ServerDeactivate			/* pfnServerDeactivate()		(wd) Server is leaving the map (shutdown or changelevel); SDK2 */
 | 
			
		||||
// #define FN_PlayerPreThink			PlayerPreThink				/* pfnPlayerPreThink() */
 | 
			
		||||
// #define FN_PlayerPostThink			PlayerPostThink				/* pfnPlayerPostThink() */
 | 
			
		||||
// #define FN_StartFrame				StartFrame					/* pfnStartFrame() */
 | 
			
		||||
// #define FN_ParmsNewLevel				ParmsNewLevel				/* pfnParmsNewLevel() */
 | 
			
		||||
// #define FN_ParmsChangeLevel			ParmsChangeLevel			/* pfnParmsChangeLevel() */
 | 
			
		||||
// #define FN_GetGameDescription		GetGameDescription			/* pfnGetGameDescription()		Returns string describing current .dll.  E.g. "TeamFotrress 2" "Half-Life" */
 | 
			
		||||
// #define FN_PlayerCustomization		PlayerCustomization			/* pfnPlayerCustomization()	Notifies .dll of new customization for player. */
 | 
			
		||||
// #define FN_SpectatorConnect			SpectatorConnect			/* pfnSpectatorConnect()		Called when spectator joins server */
 | 
			
		||||
// #define FN_SpectatorDisconnect		SpectatorDisconnect			/* pfnSpectatorDisconnect()	Called when spectator leaves the server */
 | 
			
		||||
// #define FN_SpectatorThink			SpectatorThink				/* pfnSpectatorThink()			Called when spectator sends a command packet (usercmd_t) */
 | 
			
		||||
// #define FN_Sys_Error					Sys_Error					/* pfnSys_Error()				Notify game .dll that engine is going to shut down.  Allows mod authors to set a breakpoint.  SDK2 */
 | 
			
		||||
// #define FN_PM_Move					PM_Move						/* pfnPM_Move()				(wd) SDK2 */
 | 
			
		||||
// #define FN_PM_Init					PM_Init						/* pfnPM_Init()				Server version of player movement initialization; (wd) SDK2 */
 | 
			
		||||
// #define FN_PM_FindTextureType		PM_FindTextureType			/* pfnPM_FindTextureType()		(wd) SDK2 */
 | 
			
		||||
// #define FN_SetupVisibility			SetupVisibility				/* pfnSetupVisibility()		Set up PVS and PAS for networking for this client; (wd) SDK2 */
 | 
			
		||||
// #define FN_UpdateClientData			UpdateClientData			/* pfnUpdateClientData()		Set up data sent only to specific client; (wd) SDK2 */
 | 
			
		||||
// #define FN_AddToFullPack				AddToFullPack				/* pfnAddToFullPack()			(wd) SDK2 */
 | 
			
		||||
// #define FN_CreateBaseline			CreateBaseline				/* pfnCreateBaseline()			Tweak entity baseline for network encoding allows setup of player baselines too.; (wd) SDK2 */
 | 
			
		||||
// #define FN_RegisterEncoders			RegisterEncoders			/* pfnRegisterEncoders()		Callbacks for network encoding; (wd) SDK2 */
 | 
			
		||||
// #define FN_GetWeaponData				GetWeaponData				/* pfnGetWeaponData()			(wd) SDK2 */
 | 
			
		||||
// #define FN_CmdStart					CmdStart					/* pfnCmdStart()				(wd) SDK2 */
 | 
			
		||||
// #define FN_CmdEnd					CmdEnd						/* pfnCmdEnd()					(wd) SDK2 */
 | 
			
		||||
// #define FN_ConnectionlessPacket		ConnectionlessPacket		/* pfnConnectionlessPacket()	(wd) SDK2 */
 | 
			
		||||
// #define FN_GetHullBounds				GetHullBounds				/* pfnGetHullBounds()			(wd) SDK2 */
 | 
			
		||||
// #define FN_CreateInstancedBaselines	CreateInstancedBaselines	/* pfnCreateInstancedBaselines()	(wd) SDK2 */
 | 
			
		||||
// #define FN_InconsistentFile			InconsistentFile			/* pfnInconsistentFile()		(wd) SDK2 */
 | 
			
		||||
// #define FN_AllowLagCompensation		AllowLagCompensation		/* pfnAllowLagCompensation()	(wd) SDK2 */
 | 
			
		||||
 | 
			
		||||
// - GetEntityAPI2_Post functions
 | 
			
		||||
// #define FN_GameDLLInit_Post					GameDLLInit_Post
 | 
			
		||||
// #define FN_DispatchSpawn_Post				DispatchSpawn_Post
 | 
			
		||||
// #define FN_DispatchThink_Post				DispatchThink_Post
 | 
			
		||||
// #define FN_DispatchUse_Post					DispatchUse_Post
 | 
			
		||||
// #define FN_DispatchTouch_Post				DispatchTouch_Post
 | 
			
		||||
// #define FN_DispatchBlocked_Post				DispatchBlocked_Post
 | 
			
		||||
// #define FN_DispatchKeyValue_Post				DispatchKeyValue_Post
 | 
			
		||||
// #define FN_DispatchSave_Post					DispatchSave_Post
 | 
			
		||||
// #define FN_DispatchRestore_Post				DispatchRestore_Post
 | 
			
		||||
// #define FN_DispatchObjectCollsionBox_Post	DispatchObjectCollsionBox_Post
 | 
			
		||||
// #define FN_SaveWriteFields_Post				SaveWriteFields_Post
 | 
			
		||||
// #define FN_SaveReadFields_Post				SaveReadFields_Post
 | 
			
		||||
// #define FN_SaveGlobalState_Post				SaveGlobalState_Post
 | 
			
		||||
// #define FN_RestoreGlobalState_Post			RestoreGlobalState_Post
 | 
			
		||||
// #define FN_ResetGlobalState_Post				ResetGlobalState_Post
 | 
			
		||||
// #define FN_ClientConnect_Post				ClientConnect_Post
 | 
			
		||||
// #define FN_ClientDisconnect_Post				ClientDisconnect_Post
 | 
			
		||||
// #define FN_ClientKill_Post					ClientKill_Post
 | 
			
		||||
// #define FN_ClientPutInServer_Post			ClientPutInServer_Post
 | 
			
		||||
// #define FN_ClientCommand_Post				ClientCommand_Post
 | 
			
		||||
// #define FN_ClientUserInfoChanged_Post		ClientUserInfoChanged_Post
 | 
			
		||||
// #define FN_ServerActivate_Post				ServerActivate_Post
 | 
			
		||||
// #define FN_ServerDeactivate_Post				ServerDeactivate_Post
 | 
			
		||||
// #define FN_PlayerPreThink_Post				PlayerPreThink_Post
 | 
			
		||||
// #define FN_PlayerPostThink_Post				PlayerPostThink_Post
 | 
			
		||||
// #define FN_StartFrame_Post					StartFrame_Post
 | 
			
		||||
// #define FN_ParmsNewLevel_Post				ParmsNewLevel_Post
 | 
			
		||||
// #define FN_ParmsChangeLevel_Post				ParmsChangeLevel_Post
 | 
			
		||||
// #define FN_GetGameDescription_Post			GetGameDescription_Post
 | 
			
		||||
// #define FN_PlayerCustomization_Post			PlayerCustomization_Post
 | 
			
		||||
// #define FN_SpectatorConnect_Post				SpectatorConnect_Post
 | 
			
		||||
// #define FN_SpectatorDisconnect_Post			SpectatorDisconnect_Post
 | 
			
		||||
// #define FN_SpectatorThink_Post				SpectatorThink_Post
 | 
			
		||||
// #define FN_Sys_Error_Post					Sys_Error_Post
 | 
			
		||||
// #define FN_PM_Move_Post						PM_Move_Post
 | 
			
		||||
// #define FN_PM_Init_Post						PM_Init_Post
 | 
			
		||||
// #define FN_PM_FindTextureType_Post			PM_FindTextureType_Post
 | 
			
		||||
// #define FN_SetupVisibility_Post				SetupVisibility_Post
 | 
			
		||||
// #define FN_UpdateClientData_Post				UpdateClientData_Post
 | 
			
		||||
// #define FN_AddToFullPack_Post				AddToFullPack_Post
 | 
			
		||||
// #define FN_CreateBaseline_Post				CreateBaseline_Post
 | 
			
		||||
// #define FN_RegisterEncoders_Post				RegisterEncoders_Post
 | 
			
		||||
// #define FN_GetWeaponData_Post				GetWeaponData_Post
 | 
			
		||||
// #define FN_CmdStart_Post						CmdStart_Post
 | 
			
		||||
// #define FN_CmdEnd_Post						CmdEnd_Post
 | 
			
		||||
// #define FN_ConnectionlessPacket_Post			ConnectionlessPacket_Post
 | 
			
		||||
// #define FN_GetHullBounds_Post				GetHullBounds_Post
 | 
			
		||||
// #define FN_CreateInstancedBaselines_Post		CreateInstancedBaselines_Post
 | 
			
		||||
// #define FN_InconsistentFile_Post				InconsistentFile_Post
 | 
			
		||||
// #define FN_AllowLagCompensation_Post			AllowLagCompensation_Post
 | 
			
		||||
 | 
			
		||||
// - GetEngineAPI functions
 | 
			
		||||
// #define FN_PrecacheModel						PrecacheModel
 | 
			
		||||
// #define FN_PrecacheSound						PrecacheSound
 | 
			
		||||
// #define FN_SetModel							SetModel
 | 
			
		||||
// #define FN_ModelIndex						ModelIndex
 | 
			
		||||
// #define FN_ModelFrames						ModelFrames
 | 
			
		||||
// #define FN_SetSize							SetSize
 | 
			
		||||
// #define FN_ChangeLevel						ChangeLevel
 | 
			
		||||
// #define FN_GetSpawnParms						GetSpawnParms
 | 
			
		||||
// #define FN_SaveSpawnParms					SaveSpawnParms
 | 
			
		||||
// #define FN_VecToYaw							VecToYaw
 | 
			
		||||
// #define FN_VecToAngles						VecToAngles
 | 
			
		||||
// #define FN_MoveToOrigin						MoveToOrigin
 | 
			
		||||
// #define FN_ChangeYaw							ChangeYaw
 | 
			
		||||
// #define FN_ChangePitch						ChangePitch
 | 
			
		||||
// #define FN_FindEntityByString				FindEntityByString
 | 
			
		||||
// #define FN_GetEntityIllum					GetEntityIllum
 | 
			
		||||
// #define FN_FindEntityInSphere				FindEntityInSphere
 | 
			
		||||
// #define FN_FindClientInPVS					FindClientInPVS
 | 
			
		||||
// #define FN_EntitiesInPVS						EntitiesInPVS
 | 
			
		||||
// #define FN_MakeVectors						MakeVectors
 | 
			
		||||
// #define FN_AngleVectors						AngleVectors
 | 
			
		||||
// #define FN_CreateEntity						CreateEntity
 | 
			
		||||
// #define FN_RemoveEntity						RemoveEntity
 | 
			
		||||
// #define FN_CreateNamedEntity					CreateNamedEntity
 | 
			
		||||
// #define FN_MakeStatic						MakeStatic
 | 
			
		||||
// #define FN_EntIsOnFloor						EntIsOnFloor
 | 
			
		||||
// #define FN_DropToFloor						DropToFloor
 | 
			
		||||
// #define FN_WalkMove							WalkMove
 | 
			
		||||
// #define FN_SetOrigin							SetOrigin
 | 
			
		||||
// #define FN_EmitSound							EmitSound
 | 
			
		||||
// #define FN_EmitAmbientSound					EmitAmbientSound
 | 
			
		||||
// #define FN_TraceLine							TraceLine
 | 
			
		||||
// #define FN_TraceToss							TraceToss
 | 
			
		||||
// #define FN_TraceMonsterHull					TraceMonsterHull
 | 
			
		||||
// #define FN_TraceHull							TraceHull
 | 
			
		||||
// #define FN_TraceModel						TraceModel
 | 
			
		||||
// #define FN_TraceTexture						TraceTexture
 | 
			
		||||
// #define FN_TraceSphere						TraceSphere
 | 
			
		||||
// #define FN_GetAimVector						GetAimVector
 | 
			
		||||
// #define FN_ServerCommand						ServerCommand
 | 
			
		||||
// #define FN_ServerExecute						ServerExecute
 | 
			
		||||
// #define FN_engClientCommand					engClientCommand
 | 
			
		||||
// #define FN_ParticleEffect					ParticleEffect
 | 
			
		||||
// #define FN_LightStyle						LightStyle
 | 
			
		||||
// #define FN_DecalIndex						DecalIndex
 | 
			
		||||
// #define FN_PointContents						PointContents
 | 
			
		||||
// #define FN_MessageBegin						MessageBegin
 | 
			
		||||
// #define FN_MessageEnd						MessageEnd
 | 
			
		||||
// #define FN_WriteByte							WriteByte
 | 
			
		||||
// #define FN_WriteChar							WriteChar
 | 
			
		||||
// #define FN_WriteShort						WriteShort
 | 
			
		||||
// #define FN_WriteLong							WriteLong
 | 
			
		||||
// #define FN_WriteAngle						WriteAngle
 | 
			
		||||
// #define FN_WriteCoord						WriteCoord
 | 
			
		||||
// #define FN_WriteString						WriteString
 | 
			
		||||
// #define FN_WriteEntity						WriteEntity
 | 
			
		||||
// #define FN_CVarRegister						CVarRegister
 | 
			
		||||
// #define FN_CVarGetFloat						CVarGetFloat
 | 
			
		||||
// #define FN_CVarGetString						CVarGetString
 | 
			
		||||
// #define FN_CVarSetFloat						CVarSetFloat
 | 
			
		||||
// #define FN_CVarSetString						CVarSetString
 | 
			
		||||
// #define FN_AlertMessage						AlertMessage
 | 
			
		||||
// #define FN_EngineFprintf						EngineFprintf
 | 
			
		||||
// #define FN_PvAllocEntPrivateData				PvAllocEntPrivateData
 | 
			
		||||
// #define FN_PvEntPrivateData					PvEntPrivateData
 | 
			
		||||
// #define FN_FreeEntPrivateData				FreeEntPrivateData
 | 
			
		||||
// #define FN_SzFromIndex						SzFromIndex
 | 
			
		||||
// #define FN_AllocString						AllocString
 | 
			
		||||
// #define FN_GetVarsOfEnt						GetVarsOfEnt
 | 
			
		||||
// #define FN_PEntityOfEntOffset				PEntityOfEntOffset
 | 
			
		||||
// #define FN_EntOffsetOfPEntity				EntOffsetOfPEntity
 | 
			
		||||
// #define FN_IndexOfEdict						IndexOfEdict
 | 
			
		||||
// #define FN_PEntityOfEntIndex					PEntityOfEntIndex
 | 
			
		||||
// #define FN_FindEntityByVars					FindEntityByVars
 | 
			
		||||
// #define FN_GetModelPtr						GetModelPtr
 | 
			
		||||
// #define FN_RegUserMsg						RegUserMsg
 | 
			
		||||
// #define FN_AnimationAutomove					AnimationAutomove
 | 
			
		||||
// #define FN_GetBonePosition					GetBonePosition
 | 
			
		||||
// #define FN_FunctionFromName					FunctionFromName
 | 
			
		||||
// #define FN_NameForFunction					NameForFunction
 | 
			
		||||
// #define FN_ClientPrintf						ClientPrintf
 | 
			
		||||
// #define FN_ServerPrint						ServerPrint
 | 
			
		||||
// #define FN_Cmd_Args							Cmd_Args
 | 
			
		||||
// #define FN_Cmd_Argv							Cmd_Argv
 | 
			
		||||
// #define FN_Cmd_Argc							Cmd_Argc
 | 
			
		||||
// #define FN_GetAttachment						GetAttachment
 | 
			
		||||
// #define FN_CRC32_Init						CRC32_Init
 | 
			
		||||
// #define FN_CRC32_ProcessBuffer				CRC32_ProcessBuffer
 | 
			
		||||
// #define FN_CRC32_ProcessByte					CRC32_ProcessByte
 | 
			
		||||
// #define FN_CRC32_Final						CRC32_Final
 | 
			
		||||
// #define FN_RandomLong						RandomLong
 | 
			
		||||
// #define FN_RandomFloat						RandomFloat
 | 
			
		||||
// #define FN_SetView							SetView
 | 
			
		||||
// #define FN_Time								Time
 | 
			
		||||
// #define FN_CrosshairAngle					CrosshairAngle
 | 
			
		||||
// #define FN_LoadFileForMe						LoadFileForMe
 | 
			
		||||
// #define FN_FreeFile							FreeFile
 | 
			
		||||
// #define FN_EndSection						EndSection
 | 
			
		||||
// #define FN_CompareFileTime					CompareFileTime
 | 
			
		||||
// #define FN_GetGameDir						GetGameDir
 | 
			
		||||
// #define FN_Cvar_RegisterVariable				Cvar_RegisterVariable
 | 
			
		||||
// #define FN_FadeClientVolume					FadeClientVolume
 | 
			
		||||
// #define FN_SetClientMaxspeed					SetClientMaxspeed
 | 
			
		||||
// #define FN_CreateFakeClient					CreateFakeClient
 | 
			
		||||
// #define FN_RunPlayerMove						RunPlayerMove
 | 
			
		||||
// #define FN_NumberOfEntities					NumberOfEntities
 | 
			
		||||
// #define FN_GetInfoKeyBuffer					GetInfoKeyBuffer
 | 
			
		||||
// #define FN_InfoKeyValue						InfoKeyValue
 | 
			
		||||
// #define FN_SetKeyValue						SetKeyValue
 | 
			
		||||
// #define FN_SetClientKeyValue					SetClientKeyValue
 | 
			
		||||
// #define FN_IsMapValid						IsMapValid
 | 
			
		||||
// #define FN_StaticDecal						StaticDecal
 | 
			
		||||
// #define FN_PrecacheGeneric					PrecacheGeneric
 | 
			
		||||
// #define FN_GetPlayerUserId					GetPlayerUserId
 | 
			
		||||
// #define FN_BuildSoundMsg						BuildSoundMsg
 | 
			
		||||
// #define FN_IsDedicatedServer					IsDedicatedServer
 | 
			
		||||
// #define FN_CVarGetPointer					CVarGetPointer
 | 
			
		||||
// #define FN_GetPlayerWONId					GetPlayerWONId
 | 
			
		||||
// #define FN_Info_RemoveKey					Info_RemoveKey
 | 
			
		||||
// #define FN_GetPhysicsKeyValue				GetPhysicsKeyValue
 | 
			
		||||
// #define FN_SetPhysicsKeyValue				SetPhysicsKeyValue
 | 
			
		||||
// #define FN_GetPhysicsInfoString				GetPhysicsInfoString
 | 
			
		||||
// #define FN_PrecacheEvent						PrecacheEvent
 | 
			
		||||
// #define FN_PlaybackEvent						PlaybackEvent
 | 
			
		||||
// #define FN_SetFatPVS							SetFatPVS
 | 
			
		||||
// #define FN_SetFatPAS							SetFatPAS
 | 
			
		||||
// #define FN_CheckVisibility					CheckVisibility
 | 
			
		||||
// #define FN_DeltaSetField						DeltaSetField
 | 
			
		||||
// #define FN_DeltaUnsetField					DeltaUnsetField
 | 
			
		||||
// #define FN_DeltaAddEncoder					DeltaAddEncoder
 | 
			
		||||
// #define FN_GetCurrentPlayer					GetCurrentPlayer
 | 
			
		||||
// #define FN_CanSkipPlayer						CanSkipPlayer
 | 
			
		||||
// #define FN_DeltaFindField					DeltaFindField
 | 
			
		||||
// #define FN_DeltaSetFieldByIndex				DeltaSetFieldByIndex
 | 
			
		||||
// #define FN_DeltaUnsetFieldByIndex			DeltaUnsetFieldByIndex
 | 
			
		||||
// #define FN_SetGroupMask						SetGroupMask
 | 
			
		||||
// #define FN_engCreateInstancedBaseline		engCreateInstancedBaseline
 | 
			
		||||
// #define FN_Cvar_DirectSet					Cvar_DirectSet
 | 
			
		||||
// #define FN_ForceUnmodified					ForceUnmodified
 | 
			
		||||
// #define FN_GetPlayerStats					GetPlayerStats
 | 
			
		||||
// #define FN_AddServerCommand					AddServerCommand
 | 
			
		||||
// #define FN_Voice_GetClientListening			Voice_GetClientListening
 | 
			
		||||
// #define FN_Voice_SetClientListening			Voice_SetClientListening
 | 
			
		||||
// #define FN_GetPlayerAuthId					GetPlayerAuthId
 | 
			
		||||
 | 
			
		||||
// - GetEngineAPI_Post functions
 | 
			
		||||
// #define FN_PrecacheModel_Post				PrecacheModel_Post
 | 
			
		||||
// #define FN_PrecacheSound_Post				PrecacheSound_Post
 | 
			
		||||
// #define FN_SetModel_Post						SetModel_Post
 | 
			
		||||
// #define FN_ModelIndex_Post					ModelIndex_Post
 | 
			
		||||
// #define FN_ModelFrames_Post					ModelFrames_Post
 | 
			
		||||
// #define FN_SetSize_Post						SetSize_Post
 | 
			
		||||
// #define FN_ChangeLevel_Post					ChangeLevel_Post
 | 
			
		||||
// #define FN_GetSpawnParms_Post				GetSpawnParms_Post
 | 
			
		||||
// #define FN_SaveSpawnParms_Post				SaveSpawnParms_Post
 | 
			
		||||
// #define FN_VecToYaw_Post						VecToYaw_Post
 | 
			
		||||
// #define FN_VecToAngles_Post					VecToAngles_Post
 | 
			
		||||
// #define FN_MoveToOrigin_Post					MoveToOrigin_Post
 | 
			
		||||
// #define FN_ChangeYaw_Post					ChangeYaw_Post
 | 
			
		||||
// #define FN_ChangePitch_Post					ChangePitch_Post
 | 
			
		||||
// #define FN_FindEntityByString_Post			FindEntityByString_Post
 | 
			
		||||
// #define FN_GetEntityIllum_Post				GetEntityIllum_Post
 | 
			
		||||
// #define FN_FindEntityInSphere_Post			FindEntityInSphere_Post
 | 
			
		||||
// #define FN_FindClientInPVS_Post				FindClientInPVS_Post
 | 
			
		||||
// #define FN_EntitiesInPVS_Post				EntitiesInPVS_Post
 | 
			
		||||
// #define FN_MakeVectors_Post					MakeVectors_Post
 | 
			
		||||
// #define FN_AngleVectors_Post					AngleVectors_Post
 | 
			
		||||
// #define FN_CreateEntity_Post					CreateEntity_Post
 | 
			
		||||
// #define FN_RemoveEntity_Post					RemoveEntity_Post
 | 
			
		||||
// #define FN_CreateNamedEntity_Post			CreateNamedEntity_Post
 | 
			
		||||
// #define FN_MakeStatic_Post					MakeStatic_Post
 | 
			
		||||
// #define FN_EntIsOnFloor_Post					EntIsOnFloor_Post
 | 
			
		||||
// #define FN_DropToFloor_Post					DropToFloor_Post
 | 
			
		||||
// #define FN_WalkMove_Post						WalkMove_Post
 | 
			
		||||
// #define FN_SetOrigin_Post					SetOrigin_Post
 | 
			
		||||
// #define FN_EmitSound_Post					EmitSound_Post
 | 
			
		||||
// #define FN_EmitAmbientSound_Post				EmitAmbientSound_Post
 | 
			
		||||
// #define FN_TraceLine_Post					TraceLine_Post
 | 
			
		||||
// #define FN_TraceToss_Post					TraceToss_Post
 | 
			
		||||
// #define FN_TraceMonsterHull_Post				TraceMonsterHull_Post
 | 
			
		||||
// #define FN_TraceHull_Post					TraceHull_Post
 | 
			
		||||
// #define FN_TraceModel_Post					TraceModel_Post
 | 
			
		||||
// #define FN_TraceTexture_Post					TraceTexture_Post
 | 
			
		||||
// #define FN_TraceSphere_Post					TraceSphere_Post
 | 
			
		||||
// #define FN_GetAimVector_Post					GetAimVector_Post
 | 
			
		||||
// #define FN_ServerCommand_Post				ServerCommand_Post
 | 
			
		||||
// #define FN_ServerExecute_Post				ServerExecute_Post
 | 
			
		||||
// #define FN_engClientCommand_Post				engClientCommand_Post
 | 
			
		||||
// #define FN_ParticleEffect_Post				ParticleEffect_Post
 | 
			
		||||
// #define FN_LightStyle_Post					LightStyle_Post
 | 
			
		||||
// #define FN_DecalIndex_Post					DecalIndex_Post
 | 
			
		||||
// #define FN_PointContents_Post				PointContents_Post
 | 
			
		||||
// #define FN_MessageBegin_Post					MessageBegin_Post
 | 
			
		||||
// #define FN_MessageEnd_Post					MessageEnd_Post
 | 
			
		||||
// #define FN_WriteByte_Post					WriteByte_Post
 | 
			
		||||
// #define FN_WriteChar_Post					WriteChar_Post
 | 
			
		||||
// #define FN_WriteShort_Post					WriteShort_Post
 | 
			
		||||
// #define FN_WriteLong_Post					WriteLong_Post
 | 
			
		||||
// #define FN_WriteAngle_Post					WriteAngle_Post
 | 
			
		||||
// #define FN_WriteCoord_Post					WriteCoord_Post
 | 
			
		||||
// #define FN_WriteString_Post					WriteString_Post
 | 
			
		||||
// #define FN_WriteEntity_Post					WriteEntity_Post
 | 
			
		||||
// #define FN_CVarRegister_Post					CVarRegister_Post
 | 
			
		||||
// #define FN_CVarGetFloat_Post					CVarGetFloat_Post
 | 
			
		||||
// #define FN_CVarGetString_Post				CVarGetString_Post
 | 
			
		||||
// #define FN_CVarSetFloat_Post					CVarSetFloat_Post
 | 
			
		||||
// #define FN_CVarSetString_Post				CVarSetString_Post
 | 
			
		||||
// #define FN_AlertMessage_Post					AlertMessage_Post
 | 
			
		||||
// #define FN_EngineFprintf_Post				EngineFprintf_Post
 | 
			
		||||
// #define FN_PvAllocEntPrivateData_Post		PvAllocEntPrivateData_Post
 | 
			
		||||
// #define FN_PvEntPrivateData_Post				PvEntPrivateData_Post
 | 
			
		||||
// #define FN_FreeEntPrivateData_Post			FreeEntPrivateData_Post
 | 
			
		||||
// #define FN_SzFromIndex_Post					SzFromIndex_Post
 | 
			
		||||
// #define FN_AllocString_Post					AllocString_Post
 | 
			
		||||
// #define FN_GetVarsOfEnt_Post					GetVarsOfEnt_Post
 | 
			
		||||
// #define FN_PEntityOfEntOffset_Post			PEntityOfEntOffset_Post
 | 
			
		||||
// #define FN_EntOffsetOfPEntity_Post			EntOffsetOfPEntity_Post
 | 
			
		||||
// #define FN_IndexOfEdict_Post					IndexOfEdict_Post
 | 
			
		||||
// #define FN_PEntityOfEntIndex_Post			PEntityOfEntIndex_Post
 | 
			
		||||
// #define FN_FindEntityByVars_Post				FindEntityByVars_Post
 | 
			
		||||
// #define FN_GetModelPtr_Post					GetModelPtr_Post
 | 
			
		||||
// #define FN_RegUserMsg_Post					RegUserMsg_Post
 | 
			
		||||
// #define FN_AnimationAutomove_Post			AnimationAutomove_Post
 | 
			
		||||
// #define FN_GetBonePosition_Post				GetBonePosition_Post
 | 
			
		||||
// #define FN_FunctionFromName_Post				FunctionFromName_Post
 | 
			
		||||
// #define FN_NameForFunction_Post				NameForFunction_Post
 | 
			
		||||
// #define FN_ClientPrintf_Post					ClientPrintf_Post
 | 
			
		||||
// #define FN_ServerPrint_Post					ServerPrint_Post
 | 
			
		||||
// #define FN_Cmd_Args_Post						Cmd_Args_Post
 | 
			
		||||
// #define FN_Cmd_Argv_Post						Cmd_Argv_Post
 | 
			
		||||
// #define FN_Cmd_Argc_Post						Cmd_Argc_Post
 | 
			
		||||
// #define FN_GetAttachment_Post				GetAttachment_Post
 | 
			
		||||
// #define FN_CRC32_Init_Post					CRC32_Init_Post
 | 
			
		||||
// #define FN_CRC32_ProcessBuffer_Post			CRC32_ProcessBuffer_Post
 | 
			
		||||
// #define FN_CRC32_ProcessByte_Post			CRC32_ProcessByte_Post
 | 
			
		||||
// #define FN_CRC32_Final_Post					CRC32_Final_Post
 | 
			
		||||
// #define FN_RandomLong_Post					RandomLong_Post
 | 
			
		||||
// #define FN_RandomFloat_Post					RandomFloat_Post
 | 
			
		||||
// #define FN_SetView_Post						SetView_Post
 | 
			
		||||
// #define FN_Time_Post							Time_Post
 | 
			
		||||
// #define FN_CrosshairAngle_Post				CrosshairAngle_Post
 | 
			
		||||
// #define FN_LoadFileForMe_Post				LoadFileForMe_Post
 | 
			
		||||
// #define FN_FreeFile_Post						FreeFile_Post
 | 
			
		||||
// #define FN_EndSection_Post					EndSection_Post
 | 
			
		||||
// #define FN_CompareFileTime_Post				CompareFileTime_Post
 | 
			
		||||
// #define FN_GetGameDir_Post					GetGameDir_Post
 | 
			
		||||
// #define FN_Cvar_RegisterVariable_Post		Cvar_RegisterVariable_Post
 | 
			
		||||
// #define FN_FadeClientVolume_Post				FadeClientVolume_Post
 | 
			
		||||
// #define FN_SetClientMaxspeed_Post			SetClientMaxspeed_Post
 | 
			
		||||
// #define FN_CreateFakeClient_Post				CreateFakeClient_Post
 | 
			
		||||
// #define FN_RunPlayerMove_Post				RunPlayerMove_Post
 | 
			
		||||
// #define FN_NumberOfEntities_Post				NumberOfEntities_Post
 | 
			
		||||
// #define FN_GetInfoKeyBuffer_Post				GetInfoKeyBuffer_Post
 | 
			
		||||
// #define FN_InfoKeyValue_Post					InfoKeyValue_Post
 | 
			
		||||
// #define FN_SetKeyValue_Post					SetKeyValue_Post
 | 
			
		||||
// #define FN_SetClientKeyValue_Post			SetClientKeyValue_Post
 | 
			
		||||
// #define FN_IsMapValid_Post					IsMapValid_Post
 | 
			
		||||
// #define FN_StaticDecal_Post					StaticDecal_Post
 | 
			
		||||
// #define FN_PrecacheGeneric_Post				PrecacheGeneric_Post
 | 
			
		||||
// #define FN_GetPlayerUserId_Post				GetPlayerUserId_Post
 | 
			
		||||
// #define FN_BuildSoundMsg_Post				BuildSoundMsg_Post
 | 
			
		||||
// #define FN_IsDedicatedServer_Post			IsDedicatedServer_Post
 | 
			
		||||
// #define FN_CVarGetPointer_Post				CVarGetPointer_Post
 | 
			
		||||
// #define FN_GetPlayerWONId_Post				GetPlayerWONId_Post
 | 
			
		||||
// #define FN_Info_RemoveKey_Post				Info_RemoveKey_Post
 | 
			
		||||
// #define FN_GetPhysicsKeyValue_Post			GetPhysicsKeyValue_Post
 | 
			
		||||
// #define FN_SetPhysicsKeyValue_Post			SetPhysicsKeyValue_Post
 | 
			
		||||
// #define FN_GetPhysicsInfoString_Post			GetPhysicsInfoString_Post
 | 
			
		||||
// #define FN_PrecacheEvent_Post				PrecacheEvent_Post
 | 
			
		||||
// #define FN_PlaybackEvent_Post				PlaybackEvent_Post
 | 
			
		||||
// #define FN_SetFatPVS_Post					SetFatPVS_Post
 | 
			
		||||
// #define FN_SetFatPAS_Post					SetFatPAS_Post
 | 
			
		||||
// #define FN_CheckVisibility_Post				CheckVisibility_Post
 | 
			
		||||
// #define FN_DeltaSetField_Post				DeltaSetField_Post
 | 
			
		||||
// #define FN_DeltaUnsetField_Post				DeltaUnsetField_Post
 | 
			
		||||
// #define FN_DeltaAddEncoder_Post				DeltaAddEncoder_Post
 | 
			
		||||
// #define FN_GetCurrentPlayer_Post				GetCurrentPlayer_Post
 | 
			
		||||
// #define FN_CanSkipPlayer_Post				CanSkipPlayer_Post
 | 
			
		||||
// #define FN_DeltaFindField_Post				DeltaFindField_Post
 | 
			
		||||
// #define FN_DeltaSetFieldByIndex_Post			DeltaSetFieldByIndex_Post
 | 
			
		||||
// #define FN_DeltaUnsetFieldByIndex_Post		DeltaUnsetFieldByIndex_Post
 | 
			
		||||
// #define FN_SetGroupMask_Post					SetGroupMask_Post
 | 
			
		||||
// #define FN_engCreateInstancedBaseline_Post	engCreateInstancedBaseline_Post
 | 
			
		||||
// #define FN_Cvar_DirectSet_Post				Cvar_DirectSet_Post
 | 
			
		||||
// #define FN_ForceUnmodified_Post				ForceUnmodified_Post
 | 
			
		||||
// #define FN_GetPlayerStats_Post				GetPlayerStats_Post
 | 
			
		||||
// #define FN_AddServerCommand_Post				AddServerCommand_Post
 | 
			
		||||
// #define FN_Voice_GetClientListening_Post		Voice_GetClientListening_Post
 | 
			
		||||
// #define FN_Voice_SetClientListening_Post		Voice_SetClientListening_Post
 | 
			
		||||
// #define FN_GetPlayerAuthId_Post				GetPlayerAuthId_Post
 | 
			
		||||
 | 
			
		||||
// #define FN_OnFreeEntPrivateData				OnFreeEntPrivateData				
 | 
			
		||||
// #define FN_GameShutdown						GameShutdown
 | 
			
		||||
// #define FN_ShouldCollide						ShouldCollide
 | 
			
		||||
 | 
			
		||||
// #define FN_OnFreeEntPrivateData_Post			OnFreeEntPrivateData_Post
 | 
			
		||||
// #define FN_GameShutdown_Post					GameShutdown_Post
 | 
			
		||||
// #define FN_ShouldCollide_Post				ShouldCollide_Post
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif // USE_METAMOD
 | 
			
		||||
 | 
			
		||||
#endif // __MODULECONFIG_H__
 | 
			
		||||
		Reference in New Issue
	
	Block a user