132 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			SourcePawn
		
	
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			SourcePawn
		
	
	
	
	
	
#if defined entWatch_helpers_included
 | 
						|
	#endinput
 | 
						|
#endif
 | 
						|
 | 
						|
#define entWatch_helpers_included
 | 
						|
 | 
						|
/**
 | 
						|
 * Converts the whole String to lower case.
 | 
						|
 * Only works with alphabetical characters (not ײִ) because Sourcemod suxx !
 | 
						|
 * The Output String can be the same as the Input String.
 | 
						|
 *
 | 
						|
 * @param input				Input String.
 | 
						|
 * @param output			Output String.
 | 
						|
 * @param size				Max Size of the Output string
 | 
						|
 * @noreturn
 | 
						|
 */
 | 
						|
stock void String_ToLower(const char[] input, char[] output, int size)
 | 
						|
{
 | 
						|
	size--;
 | 
						|
 | 
						|
	int x;
 | 
						|
	while (input[x] != '\0' || x < size) {
 | 
						|
 | 
						|
		if (IsCharUpper(input[x])) {
 | 
						|
			output[x] = CharToLower(input[x]);
 | 
						|
		}
 | 
						|
		else {
 | 
						|
			output[x] = input[x];
 | 
						|
		}
 | 
						|
 | 
						|
		x++;
 | 
						|
	}
 | 
						|
 | 
						|
	output[x] = '\0';
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
* Checks if the specified index is a player and connected.
 | 
						|
*
 | 
						|
* @param entity				An entity index.
 | 
						|
* @param checkConnected		Set to false to skip the IsClientConnected check
 | 
						|
* @return					Returns true if the specified entity index is a player connected, false otherwise.
 | 
						|
*/
 | 
						|
stock bool Client_IsValid(int client, bool checkConnected=true)
 | 
						|
{
 | 
						|
	if (client > 4096) {
 | 
						|
		client = EntRefToEntIndex(client);
 | 
						|
	}
 | 
						|
 | 
						|
	if (client < 1 || client > MaxClients) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	if (checkConnected && !IsClientConnected(client)) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	return true;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Gets the client's current observer target entity.
 | 
						|
 *
 | 
						|
 * @param client		Client Index.
 | 
						|
 * @return				Observed Entity Index.
 | 
						|
 */
 | 
						|
stock int Client_GetObserverTarget(int client)
 | 
						|
{
 | 
						|
	return GetEntPropEnt(client, Prop_Send, "m_hObserverTarget");
 | 
						|
}
 | 
						|
 | 
						|
/*
 | 
						|
 * Checks if an entity is valid and exists.
 | 
						|
 *
 | 
						|
 * @param entity		Entity Index.
 | 
						|
 * @return				True if the entity is valid, false otherwise.
 | 
						|
 */
 | 
						|
stock bool Entity_IsValid(int entity)
 | 
						|
{
 | 
						|
	return IsValidEntity(entity);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Gets the Hammer-ID of an entity.
 | 
						|
 * The Hammer Editor gives every entity a unique ID.
 | 
						|
 * Note: Old maps don't have Hammer-ID's set for entities
 | 
						|
 *
 | 
						|
 * @param entity			Entity index.
 | 
						|
 * @return					Hammer ID.
 | 
						|
 */
 | 
						|
stock int Entity_GetHammerID(int entity)
 | 
						|
{
 | 
						|
	return GetEntProp(entity, Prop_Data, "m_iHammerID");
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Gets the owner of an entity.
 | 
						|
 * For example the owner of a weapon entity.
 | 
						|
 *
 | 
						|
 * @param entity		Entity index.
 | 
						|
 * @return				Ground Entity or -1
 | 
						|
 */
 | 
						|
stock int Entity_GetOwner(int entity)
 | 
						|
{
 | 
						|
	return GetEntPropEnt(entity, Prop_Data, "m_hOwnerEntity");
 | 
						|
}
 | 
						|
 | 
						|
/*
 | 
						|
 * Gets the parent entity of an entity.
 | 
						|
 *
 | 
						|
 * @param entity		Entity Index.
 | 
						|
 * @return				Entity Index of the parent.
 | 
						|
 */
 | 
						|
stock int Entity_GetParent(int entity)
 | 
						|
{
 | 
						|
	return GetEntPropEnt(entity, Prop_Data, "m_pParent");
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Sets the Name of an entity.
 | 
						|
 *
 | 
						|
 * @param entity			Entity index.
 | 
						|
 * @param name				The name you want to give.
 | 
						|
 * @noreturn
 | 
						|
 */
 | 
						|
stock void Entity_SetName(int entity, const char[] name, any ...)
 | 
						|
{
 | 
						|
	char format[128];
 | 
						|
	VFormat(format, sizeof(format), name, 3);
 | 
						|
 | 
						|
	DispatchKeyValue(entity, "targetname", format);
 | 
						|
} |