stock any:{FunctionName}(any:val=0)
{
	if(!FileExists("{DebuggerIdentifier}.running.bpdebug"))
	{
		return val;
	}
	
	if(FileExists("{IndentifierGUID}.ignore.bpdebug"))
	{
		return val;
	}
	
	new Handle:hTriggerFile;
	while((hTriggerFile = OpenFile("{IndentifierGUID}.trigger.bpdebug", "w")) == INVALID_HANDLE) {}
	
	WriteFileLine(hTriggerFile, "i:%d", val);
	WriteFileLine(hTriggerFile, "f:%f", val);
	FlushFile(hTriggerFile);
	CloseHandle(hTriggerFile);
	
	for(;;)
	{
		if(!FileExists("{DebuggerIdentifier}.running.bpdebug"))
		{
			break;
		}
	
		if(FileExists("{IndentifierGUID}.continue.bpdebug"))
		{
			DeleteFile("{IndentifierGUID}.continue.bpdebug");
			break;
		}
		
		if(FileExists("{IndentifierGUID}.continuev.bpdebug"))
		{
			new Handle:hVarFile = OpenFile("{IndentifierGUID}.continuev.bpdebug", "r");
			if(hVarFile == INVALID_HANDLE)
				SetFailState("Invalid file handle");
			
			static String:sFileText[64];
			if(!ReadFileLine(hVarFile, sFileText, sizeof(sFileText)))
				SetFailState("Could not read line");
			
			static String:sVar[2][64];
			if(ExplodeString(sFileText, ":", sVar, sizeof(sVar), sizeof(sVar[])) != 2)
				SetFailState("Invalid var number");
			
			switch(sVar[0][0])
			{
				case 'f': val = StringToFloat(sVar[1]);
				default: val = StringToInt(sVar[1]);
			}
			
			CloseHandle(hVarFile);
			DeleteFile("{IndentifierGUID}.continuev.bpdebug");
			
			break;
		}
	}
	
	return val;
}