Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Dokumentacja AMX Mod X v. 11.5 Uzupełnionych funkcji: Sortowanie: Według modułów | Alfabetycznie
Szukaj funkcji:

3rdParty
Core
Cstrike
CSX
DoDX
Engine
ESF
Fakemeta
Fun
fun
GeoIP
HamSandwich
JSON
NS
nVault
REAPI
Regex
Sockets
Sql
SQLx
dbi
TFCX
TSFUN
TSX
tsx

entlib.inc


#


/* 
	Ent lib (Fakemeta Way)
		by diablix
*/

#if defined _entlib_included
	#endinput
#endif

#define _entlib_included

#if !defined _fakemeta_included
	#include 
#endif

#if !defined _xs_included
	#include 
#endif	

//Ent_HullFunc_Init
#define Ent_Vec_Blocked(%1) 	(get_tr2(%1, TR_AllSolid) && get_tr2(%1, TR_StartSolid))
#define Ent_Vec_NotBlocked(%1) 	(!Ent_Vec_Blocked(%1))
#define Ent_Vec_InWater(%1)	get_tr2(%1, TR_InWater)
#define Ent_Vec_OnOpenTerrain	get_tr2(%1, TR_InOpen)

//Ent_Get_Grenade_Type
enum _:Ent_GrenadeTypes{ // MAX = 3 (ENT_C4)
	ENT_FLASHBANG,
	ENT_HEGRENADE,
	ENT_SMOKEGRENADE,
	ENT_C4
};

//Ent_Is_Aiming_At
enum _:Ent_AimingTypes{ // MAX = 2 (ENT_LADDER)
	ENT_SKY = CONTENTS_SKY,
	ENT_WATER = CONTENTS_WATER,
	ENT_LADDER = CONTENTS_LADDER
};

//Pobieranie pozycji wzroku
stock Ent_Add_AimingVec(iEnt, Float:fAimStart[3], Float:fAimEnd[3], &iTr=0){
	/*
	//PRZYKLAD
	
	new Float:fAimStart[3], Float:fAimEnd[3], iTr
	Ent_Add_AimingVec(id, fAimStart, fAimEnd, iTr);
	
	
	//Przy uwzglednionym iTr zostanie stworzone traceline (np aby operowa� na hitboxach)
	
	*/
	
	static Float:fViewOfs[3];
	pev(iEnt, pev_origin, fAimStart);
	pev(iEnt, pev_view_ofs, fViewOfs);
	
	xs_vec_add(fAimStart, fViewOfs, fAimStart);
	
	pev(iEnt, pev_v_angle, fAimEnd);
	
	engfunc(EngFunc_MakeVectors, fAimEnd);
	global_get(glb_v_forward, fAimEnd);
	
	xs_vec_mul_scalar(fAimEnd, 999.0, fAimEnd);
	
	xs_vec_add(fAimStart, fAimEnd, fAimEnd);
	
	if(iTr){
		iTr = create_tr2();
		
		engfunc(EngFunc_TraceLine, fAimStart, fAimEnd, 0, iEnt, iTr);
	}
}

//Sprawdzanie pozycji bytu
stock Ent_HullFunc_Init(iTrace, iEnt){
	/*
	//PRZYKLAD
	
	new iTrace;
	Ent_HullFunc_Init(iTrace, id);
	
	if(Ent_Vec_Blocked(id)) client_print(id, 3, "Jestes zablokowany!");
	
	*/
	
	static fOrigin[3];
	pev(iEnt, pev_origin, fOrigin);
	
	engfunc(EngFunc_TraceHull, fOrigin, fOrigin, 0, (1 <= iEnt <= 32) ? (pev(iEnt, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN) : 0, iEnt, iTrace);
}

//Sprawdzenie typu granatu
stock Ent_Get_Grenade_Type(iEnt){
	/*
	//PRZYKLAD
	
	if(Ent_Get_Grenade_Type(iEnt) == ENT_HEGRENADE) client_print(pev(iEnt, pev_owner), 3, "Wykryto Twoj granat wybuchowy!");
	
	*/
	
	static sClass[32];
	pev(iEnt, pev_classname, sClass, sizeof sClass - 1);
	
	if(!equal(sClass, "grenade", strlen(sClass))) return 0x539;
	
	return (get_pdata_int(iEnt, 96) & (1<<8)) ? ENT_C4 : get_pdata_int(iEnt, 114) & 3;
}

//Wymuszenie wybuchu granatu
stock Ent_Grenade_Explode(iEnt){
	static sClass[32];
	pev(iEnt, pev_classname, sClass, sizeof sClass - 1);
	
	if(!equal(sClass, "grenade", strlen(sClass)) || Ent_Get_Grenade_Type(iEnt) == ENT_C4) return 0;
	if(Ent_Get_Grenade_Type(iEnt) == ENT_SMOKEGRENADE) set_pev(iEnt, pev_flags, pev(iEnt, pev_flags) | FL_ONGROUND);
	
	set_pev(iEnt, pev_dmgtime, 0.0);
	dllfunc(DLLFunc_Think, iEnt);
	
	return iEnt;
}

//Byt sie zacznie odbijac
stock Ent_Set_Bouncing(iEnt, Float:fStartPower=500.0){
	// NIE DZIALA NA GRACZA!!!
	if(1 <= iEnt <= 32) return 0;
	
	set_pev(iEnt, pev_movetype, MOVETYPE_BOUNCE);
	
	new Float:fVelo[3], Float:fRealVelo[3]; 
	pev(iEnt, pev_velocity, fRealVelo); fVelo[2] = floatmax(fStartPower, fRealVelo[2])
	
	set_pev(iEnt, pev_velocity, fVelo);
	
	return iEnt;
}

//Sprawdza czy byt jest solidny (nie przenika)
stock bool:Ent_Is_Solid(iEnt)
	return (iEnt ? ((pev(iEnt, pev_solid) > SOLID_TRIGGER) ? true : false) : true);

//Ent_Is_Aiming_At (Zwraca zawarto�� wzroku)
stock Ent_Get_Aiming_Content(iEnt){
	static Float:fOrigin[3], Float:fStart[3], Float:fViewOfs[3], Float:fDest[3];
	pev(iEnt, pev_origin, fStart);
	pev(iEnt, pev_view_ofs, fViewOfs);
	
	xs_vec_add(fStart, fViewOfs, fStart);

	pev(iEnt, pev_v_angle, fDest);
	engfunc(EngFunc_MakeVectors, fDest);
	global_get(glb_v_forward, fDest);
	
	xs_vec_mul_scalar(fDest, 9999.0, fDest);
	xs_vec_add(fStart, fDest, fDest);
	
	engfunc(EngFunc_TraceLine, fStart, fDest, 0, iEnt, 0);
	get_tr2(0, TR_vecEndPos, fOrigin);
	
	return engfunc(EngFunc_PointContents, fOrigin);
}

//Sprawdza czy gracz na co� patrzy
stock bool:Ent_Is_Aiming_At(iEnt, iWhat=ENT_SKY) return (Ent_Get_Aiming_Content(iEnt) == iWhat);

Pobierz plik entlib.inc