global function pulseInit global function GetWeaponStatsFromToneAPI global function GetGlobalDataFromToneAPI global function GetMapStatsFromToneAPI global function GetGamemodeStatsFromToneAPI global function getWeaponKillsFromToneAPI global function getNemesisWeaponFromToneAPI global function getDWEFromToneAPI global function getMapKillFromToneAPI global function getMapDeathFromToneAPI global function getMapDistFromToneAPI global function getMapMDistFromToneAPI global function fetchGamemodeStatsFromToneAPI global table globalToneAPIKillData = {} global table globalToneAPIDeathData = {} global table globalToneAPIDWEData = {} global table globalToneAPIMapDeathData = {} global table globalToneAPIMapDistData = {} global table globalToneAPIMapKillData = {} global table globalToneAPIMapMDistData = {} global table globalToneAPIGamemodeData = {} global table globalToneAPIAllPlayerKillData = {} global table globalToneAPIAllPlayerDeathData = {} global table< table > globalToneAPIGamemodeMapData = {} string prefix = "default" string HTTPrequestURL = "default" int weaponEntries = 0 int mapEntries = 0 int gamemodeEntries = 0 int mapGamemodeEntries = 0 void function pulseInit() { prefix = "\x1b[38;2;255;178;102m[PULSE]\x1b[0m " HTTPrequestURL = GetConVarString("ToneURL") HttpRequest getVersion getVersion.method = HttpRequestMethod.GET getVersion.url = GetConVarString("VersionURL") void functionref(HttpRequestResponse) onSuccess = void function(HttpRequestResponse response) { table JSONDecoded = DecodeJSON(response.body) if ((JSONDecoded["Major"] == GetConVarString("MajorVersion")) && (JSONDecoded["Minor"] == GetConVarString("MinorVersion")) && (JSONDecoded["Patch"] == GetConVarString("PatchVersion"))) { print(prefix + "v1.2.1 has been loaded and is up to date.") } else { print(prefix + "v1.2.1 has been loaded. Recommend updating to latest version: v" + JSONDecoded["Major"] + "." + JSONDecoded["Minor"] + "." + JSONDecoded["Patch"] + ".") } } void functionref(HttpRequestFailure) onFailure = void function(HttpRequestFailure failure) { print(prefix + "v1.2.1 has been loaded and has encountered an error getting latest version data.") } NSHttpRequest(getVersion, onSuccess, onFailure) } void function GetWeaponStatsFromToneAPI() { print(prefix + "Getting kill data...") weaponEntries = 0 HttpRequest getWeaponStats getWeaponStats.method = HttpRequestMethod.GET getWeaponStats.url = HTTPrequestURL + "/weapons" getWeaponStats.queryParameters["player"] <- [NSGetLocalPlayerUID()] void functionref(HttpRequestResponse) onSuccess = void function(HttpRequestResponse response) { print(prefix + "Kill data received, processing...") table JSONForConversion = DecodeJSON(response.body) foreach (var key, var value in JSONForConversion) { table test = expect table(value) globalToneAPIKillData[string(key)] <- test.kills globalToneAPIDeathData[string(key)] <- test.deaths globalToneAPIDWEData[string(key)] <- test.deaths_while_equipped weaponEntries += 1 } print(prefix + "Kill data has been processed with a total of " + string(weaponEntries) + " entries.") } void functionref(HttpRequestFailure) onFailure = void function(HttpRequestFailure failure) { print(prefix + "Encountered an error getting kill data...") } NSHttpRequest(getWeaponStats, onSuccess, onFailure) } void function GetGlobalDataFromToneAPI() { print(prefix + "Getting global data...") weaponEntries = 0 HttpRequest getGlobalStats getGlobalStats.method = HttpRequestMethod.GET getGlobalStats.url = HTTPrequestURL + "/weapons" getGlobalStats.queryParameters["player"] <- ["!" + NSGetLocalPlayerUID()] void functionref(HttpRequestResponse) onSuccess = void function(HttpRequestResponse response) { print(prefix + "Global data received, processing...") table JSONForConversion = DecodeJSON(response.body) foreach (var key, var value in JSONForConversion) { table test = expect table(value) globalToneAPIAllPlayerKillData[string(key)] <- test.kills globalToneAPIAllPlayerDeathData[string(key)] <- test.deaths weaponEntries += 1 } print(prefix + "Global data has been processed with a total of " + string(weaponEntries) + " entries.") } void functionref(HttpRequestFailure) onFailure = void function(HttpRequestFailure failure) { print(prefix + "Encountered an error getting global data...") } NSHttpRequest(getGlobalStats, onSuccess, onFailure) } void function GetMapStatsFromToneAPI() { print(prefix + "Getting map data...") mapEntries = 0 HttpRequest getMapStats getMapStats.method = HttpRequestMethod.GET getMapStats.url = HTTPrequestURL + "/maps" getMapStats.queryParameters["player"] <- [NSGetLocalPlayerUID()] void functionref(HttpRequestResponse) onSuccess = void function(HttpRequestResponse response) { print(prefix + "Map data received, processing...") table JSONForConversion = DecodeJSON(response.body) foreach (var key, var value in JSONForConversion) { table test = expect table(value) globalToneAPIMapKillData[string(key)] <- test.kills globalToneAPIMapDeathData[string(key)] <- test.deaths globalToneAPIMapDistData[string(key)] <- test.total_distance globalToneAPIMapMDistData[string(key)] <- test.max_distance mapEntries += 1 } print(prefix + "Map data has been processed with a total of " + string(mapEntries) + " entries.") } void functionref(HttpRequestFailure) onFailure = void function(HttpRequestFailure failure) { print(prefix + "Encountered an error getting map data...") } NSHttpRequest(getMapStats, onSuccess, onFailure) } void function GetGamemodeStatsFromToneAPI() { print(prefix + "Getting gamemode data...") gamemodeEntries = 0 HttpRequest getGamemodeStats getGamemodeStats.method = HttpRequestMethod.GET getGamemodeStats.url = HTTPrequestURL + "/gamemodes" getGamemodeStats.queryParameters["player"] <- [NSGetLocalPlayerUID()] void functionref(HttpRequestResponse) onSuccess = void function(HttpRequestResponse response) { print(prefix + "Gamemode data received, processing...") table JSONForConversion = DecodeJSON(response.body) foreach (var key, var value in JSONForConversion) { table test = expect table(value) globalToneAPIGamemodeData[string(key)] <- test.kills gamemodeEntries += 1 } print(prefix + "Gamemode data has been processed with a total of " + string(gamemodeEntries) + " entries.") } void functionref(HttpRequestFailure) onFailure = void function(HttpRequestFailure failure) { print(prefix + "Encountered an error getting gamemode data...") } NSHttpRequest(getGamemodeStats, onSuccess, onFailure) } void function fetchGamemodeStatsFromToneAPI(string mapName) { mapGamemodeEntries = 0 string mapNameSliced = mapName.slice(3) HttpRequest getMapGamemodeStats getMapGamemodeStats.method = HttpRequestMethod.GET getMapGamemodeStats.url = HTTPrequestURL + "/gamemodes" getMapGamemodeStats.queryParameters["map"] <- [mapNameSliced] getMapGamemodeStats.queryParameters["player"] <- [NSGetLocalPlayerUID()] void functionref(HttpRequestResponse) onSuccess = void function(HttpRequestResponse response):(mapName) { table JSONForConversion = DecodeJSON(response.body) table mapData = {} foreach (var gamemode, var value in JSONForConversion) { table test = expect table(value) mapData[string(gamemode)] <- test.kills mapGamemodeEntries += 1 } globalToneAPIGamemodeMapData[mapName] <- mapData print(prefix + "Map gamemode data has been processed with a total of " + string(mapGamemodeEntries) + " entries.") } void functionref(HttpRequestFailure) onFailure = void function(HttpRequestFailure failure) { print(prefix + "Encountered an error getting map gamemode data...") } NSHttpRequest(getMapGamemodeStats, onSuccess, onFailure) } int function getWeaponKillsFromToneAPI(string weaponRef){ if(weaponRef in globalToneAPIKillData){ return expect int(globalToneAPIKillData[weaponRef]) } return 0 } int function getNemesisWeaponFromToneAPI(string weaponRef){ if(weaponRef in globalToneAPIDeathData){ return expect int(globalToneAPIDeathData[weaponRef]) } return 0 } int function getDWEFromToneAPI(string weaponRef){ if(weaponRef in globalToneAPIDWEData){ return expect int(globalToneAPIDWEData[weaponRef]) } return 0 } int function getMapKillFromToneAPI(string mapName){ mapName = mapName.slice(3) if(mapName in globalToneAPIMapKillData){ return expect int(globalToneAPIMapKillData[mapName]) } return 0 } int function getMapDeathFromToneAPI(string mapName){ mapName = mapName.slice(3) if(mapName in globalToneAPIMapDeathData){ return expect int(globalToneAPIMapDeathData[mapName]) } return 0 } int function getMapMDistFromToneAPI(string mapName){ mapName = mapName.slice(3) if(mapName in globalToneAPIMapMDistData){ return expect int(globalToneAPIMapMDistData[mapName]) } return 0 } int function getMapDistFromToneAPI(string mapName){ mapName = mapName.slice(3) if(mapName in globalToneAPIMapDistData){ return expect int(globalToneAPIMapDistData[mapName]) } return 0 }