Merge branch 'master' of http://git.unloze.com/UNLOZE/sm-plugins-unloze
This commit is contained in:
		
						commit
						4f03e84096
					
				@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					"stagedisplay"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						"method"	"counter"
 | 
				
			||||||
 | 
						"counter"	"Level_Counter"
 | 
				
			||||||
 | 
						"1"			"EASY"
 | 
				
			||||||
 | 
						"2"			"NORMAL"
 | 
				
			||||||
 | 
						"3"			"HARD"
 | 
				
			||||||
 | 
						"4"			"EXTREME"
 | 
				
			||||||
 | 
						"5"			"INSAME"
 | 
				
			||||||
 | 
						"6"			"ZM"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					"stagedisplay"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						"method"	"counter"
 | 
				
			||||||
 | 
						"counter"	"Level_Counter"
 | 
				
			||||||
 | 
						"0"			"WARMUP"
 | 
				
			||||||
 | 
						"1"			"CHAPTER 1"
 | 
				
			||||||
 | 
						"2"			"CHAPTER 2"
 | 
				
			||||||
 | 
						"3"			"CHAPTER 3"
 | 
				
			||||||
 | 
						"4"			"CHAPTER 4"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					"stagedisplay"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						"method"	"counter"
 | 
				
			||||||
 | 
						"counter"	"Level_Counter"
 | 
				
			||||||
 | 
						"1"			"WARMUP"
 | 
				
			||||||
 | 
						"2"			"NORMAL"
 | 
				
			||||||
 | 
						"3"			"HARD"
 | 
				
			||||||
 | 
						"4"			"EXTREME"
 | 
				
			||||||
 | 
						"5"			"EXTREME II"
 | 
				
			||||||
 | 
						"6"			"ZM"
 | 
				
			||||||
 | 
						"7"			"EXTREME II (HEAL&ULTIMA ONLY)"
 | 
				
			||||||
 | 
						"8"			"EXTREME II (SPECIAL LASERS)"
 | 
				
			||||||
 | 
						"9"			"EXTREME III (HELLZ VERSION)"
 | 
				
			||||||
 | 
						"10"		"EXTREME III (ZOMBIEDEN VERSION)"
 | 
				
			||||||
 | 
						"11"		"RACE (ZOMBIEDEN VERSION)"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					"stagedisplay"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						"method"	"counter"
 | 
				
			||||||
 | 
						"counter"	"Map_WinCounter"
 | 
				
			||||||
 | 
						"1"			"1 - NORMAL"
 | 
				
			||||||
 | 
						"2"			"2 - NORMAL"
 | 
				
			||||||
 | 
						"3"			"1 - INSANE"
 | 
				
			||||||
 | 
						"4"			"2 - INSANE"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					"stagedisplay"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						"method"	"counter"
 | 
				
			||||||
 | 
						"counter"	"Level_Counter_Progress"
 | 
				
			||||||
 | 
						"1"			"HARD"
 | 
				
			||||||
 | 
						"2"			"EXTREME"
 | 
				
			||||||
 | 
						"3"			"EPIC"
 | 
				
			||||||
 | 
						"4"			"GODMODE"
 | 
				
			||||||
 | 
						"5"			"ZOMBIE MOD"
 | 
				
			||||||
 | 
						"6"			"HARD - INSANE"
 | 
				
			||||||
 | 
						"7"			"EXTREME - INSANE"
 | 
				
			||||||
 | 
						"8"			"EPIC - INSANE"
 | 
				
			||||||
 | 
						"9"			"GODMODE - INSANE"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					"stagedisplay"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						"method"	"score"
 | 
				
			||||||
 | 
						"0"			"1 - PRISON ESCAPE"
 | 
				
			||||||
 | 
						"1"			"2 - CANNON"
 | 
				
			||||||
 | 
						"2"			"3 - PIRATE"
 | 
				
			||||||
 | 
						"3"			"4 - BARBOSSA"
 | 
				
			||||||
 | 
						"4"			"5 - KRAKEN"
 | 
				
			||||||
 | 
						"5"			"5 - GOD KRAKEN"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					"stagedisplay"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						"method"	"counter"
 | 
				
			||||||
 | 
						"counter"	"Level_Counter"
 | 
				
			||||||
 | 
						"1"			"WARMUP"
 | 
				
			||||||
 | 
						"2"			"1"
 | 
				
			||||||
 | 
						"3"			"2"
 | 
				
			||||||
 | 
						"4"			"3"
 | 
				
			||||||
 | 
						"5"			"4"
 | 
				
			||||||
 | 
						"6"			"5"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					"stagedisplay"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						"method"	"counter"
 | 
				
			||||||
 | 
						"counter"	"Level_Counter"
 | 
				
			||||||
 | 
						"1"			"WARMUP"
 | 
				
			||||||
 | 
						"2"			"OSGILIATH"
 | 
				
			||||||
 | 
						"3"			"MAIN GATES"
 | 
				
			||||||
 | 
						"4"			"CATAPULT"
 | 
				
			||||||
 | 
						"5"			"THE LAST STAND"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"diffcounter"
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"counter"	"Diff_Counter"
 | 
				
			||||||
 | 
							"1"			"NORMAL"
 | 
				
			||||||
 | 
							"2"			"EXTREME"
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					"stagedisplay"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						"method"	"counter"
 | 
				
			||||||
 | 
						"counter"	"Level_Counter"
 | 
				
			||||||
 | 
						"1"			"WARMUP"
 | 
				
			||||||
 | 
						"2"			"OSGILIATH"
 | 
				
			||||||
 | 
						"3"			"MAIN GATES"
 | 
				
			||||||
 | 
						"4"			"CATAPULT"
 | 
				
			||||||
 | 
						"5"			"THE LAST STAND"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"diffcounter"
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"counter"	"Diff_Counter"
 | 
				
			||||||
 | 
							"1"			"NORMAL"
 | 
				
			||||||
 | 
							"2"			"EXTREME"
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					"stagedisplay"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						"method"	"counter"
 | 
				
			||||||
 | 
						"counter"	"Level_Counter"
 | 
				
			||||||
 | 
						"1"			"1 - NORMAL"
 | 
				
			||||||
 | 
						"2"			"2 - HARD"
 | 
				
			||||||
 | 
						"3"			"3 - HYPER"
 | 
				
			||||||
 | 
						"4"			"4 - ULTIMATE"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										13
									
								
								StageDisplay/configs/stagedisplay/ze_shroomforest2_v1.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								StageDisplay/configs/stagedisplay/ze_shroomforest2_v1.cfg
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					"stagedisplay"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						"method"	"counter"
 | 
				
			||||||
 | 
						"counter"	"Level_Counter"
 | 
				
			||||||
 | 
						"1"			"WARMUP"
 | 
				
			||||||
 | 
						"2"			"RAVINE - NORMAL"
 | 
				
			||||||
 | 
						"3"			"TV - NORMAL"
 | 
				
			||||||
 | 
						"4"			"HEAVEN - NORMAL"
 | 
				
			||||||
 | 
						"5"			"RAVINE - EXTREME"
 | 
				
			||||||
 | 
						"6"			"TV - EXTREME"
 | 
				
			||||||
 | 
						"7"			"HEAVEN - EXTREME"
 | 
				
			||||||
 | 
						"8"			"THE END"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										247
									
								
								StageDisplay/scripting/StageDisplay.sp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										247
									
								
								StageDisplay/scripting/StageDisplay.sp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,247 @@
 | 
				
			|||||||
 | 
					#pragma semicolon 1
 | 
				
			||||||
 | 
					#pragma newdecls required
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <sourcemod>
 | 
				
			||||||
 | 
					#include <sdktools>
 | 
				
			||||||
 | 
					#include <cstrike>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					KeyValues g_Config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ConVar g_cvHostName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char g_sHostName[128];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// Purpose:
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					public Plugin myinfo =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						name        = "Stage Display",
 | 
				
			||||||
 | 
						author      = "Neon",
 | 
				
			||||||
 | 
						description = "",
 | 
				
			||||||
 | 
						version     = "1.0",
 | 
				
			||||||
 | 
						url         = "https://steamcommunity.com/id/n3ontm"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// Purpose:
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					public void OnPluginStart()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						g_cvHostName = FindConVar("hostname");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						HookEvent("round_start",  OnRoundStart, EventHookMode_PostNoCopy);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// Purpose:
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					public void OnMapStart()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if(g_Config)
 | 
				
			||||||
 | 
							delete g_Config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						char sMapName[PLATFORM_MAX_PATH];
 | 
				
			||||||
 | 
						GetCurrentMap(sMapName, sizeof(sMapName));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						char sConfigFile[PLATFORM_MAX_PATH];
 | 
				
			||||||
 | 
						BuildPath(Path_SM, sConfigFile, sizeof(sConfigFile), "configs/stagedisplay/%s.cfg", sMapName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(!FileExists(sConfigFile))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							LogMessage("Could not find mapconfig: \"%s\"", sConfigFile);
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LogMessage("Found mapconfig: \"%s\"", sConfigFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						g_Config = new KeyValues("stagedisplay");
 | 
				
			||||||
 | 
						if(!g_Config.ImportFromFile(sConfigFile))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							delete g_Config;
 | 
				
			||||||
 | 
							SetFailState("ImportFromFile() failed!");
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						g_Config.Rewind();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// Purpose:
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					public void OnConfigsExecuted()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						g_cvHostName.GetString(g_sHostName, sizeof(g_sHostName));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// Purpose:
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						CreateTimer(3.0, CheckStageTimer, INVALID_HANDLE, TIMER_FLAG_NO_MAPCHANGE);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// Purpose:
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					public Action CheckStageTimer(Handle timer)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						CheckStage();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// Purpose:
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					public void CheckStage()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if(!g_Config)
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						g_Config.Rewind();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						char sMethod[64];
 | 
				
			||||||
 | 
						g_Config.GetString("method", sMethod, sizeof(sMethod));
 | 
				
			||||||
 | 
						if(!sMethod[0])
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							LogError("Could not find \"method\"");
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						char sStageName[64];
 | 
				
			||||||
 | 
						char sDiffName[64];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(StrEqual(sMethod, "counter"))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							char sCounter[64];
 | 
				
			||||||
 | 
							if(!g_Config.GetString("counter", sCounter, sizeof(sCounter)))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								LogError("Could not find \"counter\"");
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							int iCounterEnt = INVALID_ENT_REFERENCE;
 | 
				
			||||||
 | 
							iCounterEnt = FindEntityByTargetname(iCounterEnt, sCounter, "*");
 | 
				
			||||||
 | 
							if(iCounterEnt == INVALID_ENT_REFERENCE)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								LogError("Could not find entity: \"%s\"", sCounter);
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							static int iOffset = -1;
 | 
				
			||||||
 | 
							if (iOffset == -1)
 | 
				
			||||||
 | 
								iOffset = FindDataMapInfo(iCounterEnt, "m_OutValue");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							int iValue = RoundToNearest(GetEntDataFloat(iCounterEnt, iOffset));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							char sValue[8];
 | 
				
			||||||
 | 
							IntToString(iValue, sValue, sizeof(sValue));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							g_Config.GetString(sValue, sStageName, sizeof(sStageName));
 | 
				
			||||||
 | 
							if(!sStageName[0])
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								LogError("Could not find stage \"%s\"", sValue);
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else if(StrEqual(sMethod, "score"))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							int iValue = CS_GetTeamScore(CS_TEAM_CT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							char sValue[8];
 | 
				
			||||||
 | 
							IntToString(iValue, sValue, sizeof(sValue));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							g_Config.GetString(sValue, sStageName, sizeof(sStageName));
 | 
				
			||||||
 | 
							if(!sStageName[0])
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								LogError("Could not find stage \"%s\"", sValue);
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							LogError("Unknown method \"%s\"", sMethod);
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						g_Config.Rewind();
 | 
				
			||||||
 | 
						bool bHasDiffCounter = false;
 | 
				
			||||||
 | 
						if(g_Config.JumpToKey("diffcounter", false))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							bHasDiffCounter = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							char sDiffCounter[64];
 | 
				
			||||||
 | 
							if(!g_Config.GetString("counter", sDiffCounter, sizeof(sDiffCounter)))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								LogError("Could not find \"diffcounter\"");
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							int iDiffCounterEnt = INVALID_ENT_REFERENCE;
 | 
				
			||||||
 | 
							iDiffCounterEnt = FindEntityByTargetname(iDiffCounterEnt, sDiffCounter, "*");
 | 
				
			||||||
 | 
							if(iDiffCounterEnt == INVALID_ENT_REFERENCE)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								LogError("Could not find entity: \"%s\"", sDiffCounter);
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							static int iOffset = -1;
 | 
				
			||||||
 | 
							if (iOffset == -1)
 | 
				
			||||||
 | 
								iOffset = FindDataMapInfo(iDiffCounterEnt, "m_OutValue");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							int iValue = RoundToNearest(GetEntDataFloat(iDiffCounterEnt, iOffset));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							char sValue[8];
 | 
				
			||||||
 | 
							IntToString(iValue, sValue, sizeof(sValue));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							g_Config.GetString(sValue, sDiffName, sizeof(sDiffName));
 | 
				
			||||||
 | 
							if(!sStageName[0])
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								LogError("Could not find difficulty \"%s\"", sValue);
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						char sBuffer[sizeof(g_sHostName)];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(bHasDiffCounter)
 | 
				
			||||||
 | 
							Format(sBuffer, sizeof(sBuffer), "%s | Stage: [%s - %s]", g_sHostName, sStageName, sDiffName);
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							Format(sBuffer, sizeof(sBuffer), "%s | Stage: [%s]", g_sHostName, sStageName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						g_cvHostName.SetString(sBuffer, false, false);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// Purpose:
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					int FindEntityByTargetname(int entity, const char[] sTargetname, const char[] sClassname="*")
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if(sTargetname[0] == '#') // HammerID
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							int HammerID = StringToInt(sTargetname[1]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							while((entity = FindEntityByClassname(entity, sClassname)) != INVALID_ENT_REFERENCE)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if(GetEntProp(entity, Prop_Data, "m_iHammerID") == HammerID)
 | 
				
			||||||
 | 
									return entity;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else // Targetname
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							int Wildcard = FindCharInString(sTargetname, '*');
 | 
				
			||||||
 | 
							char sTargetnameBuf[64];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							while((entity = FindEntityByClassname(entity, sClassname)) != INVALID_ENT_REFERENCE)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if(GetEntPropString(entity, Prop_Data, "m_iName", sTargetnameBuf, sizeof(sTargetnameBuf)) <= 0)
 | 
				
			||||||
 | 
									continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(strncmp(sTargetnameBuf, sTargetname, Wildcard) == 0)
 | 
				
			||||||
 | 
									return entity;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return INVALID_ENT_REFERENCE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user