/* _bot_http Author: INeedGames Date: 09/26/2020 The HTTP module to use with IW4X's gsc funcs */ #include maps\mp\bots\_bot_utility; /* Does the version check, if we are up too date */ doVersionCheck() { remoteVersion = getRemoteVersion(); if ( !isDefined( remoteVersion ) ) { PrintConsole( "Error getting remote version of Bot Warfare.\n" ); return false; } if ( level.bw_VERSION != remoteVersion ) { PrintConsole( "There is a new version of Bot Warfare!\n" ); PrintConsole( "You are on version " + level.bw_VERSION + " but " + remoteVersion + " is available!\n" ); return false; } PrintConsole( "You are on the latest version of Bot Warfare!\n" ); return true; } /* Will attempt to retreive waypoints from the internet */ getRemoteWaypoints( mapname ) { url = "https://raw.githubusercontent.com/ineedbots/iw4x_waypoints/master/" + mapname + "_wp.csv"; filename = "waypoints/" + mapname + "_wp.csv"; PrintConsole( "Attempting to get remote waypoints from " + url + "\n" ); res = getLinesFromUrl( url, filename ); if ( !res.lines.size ) return; waypointCount = int( res.lines[0] ); waypoints = []; PrintConsole( "Loading remote waypoints...\n" ); for ( i = 1; i <= waypointCount; i++ ) { tokens = tokenizeLine( res.lines[i], "," ); waypoint = parseTokensIntoWaypoint( tokens ); waypoints[i - 1] = waypoint; } if ( waypoints.size ) { level.waypoints = waypoints; PrintConsole( "Loaded " + waypoints.size + " waypoints from remote.\n" ); } } /* Returns the version of bot warfare found on the internet */ getRemoteVersion() { request = httpGet( "https://raw.githubusercontent.com/ineedbots/iw4x_waypoints/master/version.txt" ); if ( !isDefined( request ) ) return undefined; request waittill( "done", success, data ); if ( !success ) return undefined; return strtok( data, "\n" )[0]; } /* Returns an array of each line from the response of the http url request */ getLinesFromUrl( url, filename ) { result = spawnStruct(); result.lines = []; request = httpGet( url ); if ( !isDefined( request ) ) return result; request waittill( "done", success, data ); if ( !success ) return result; fileWrite( filename, data, "write" ); line = ""; for ( i = 0; i < data.size; i++ ) { c = data[i]; if ( c == "\n" ) { result.lines[result.lines.size] = line; line = ""; continue; } line += c; } result.lines[result.lines.size] = line; return result; }