iw3_bot_warfare/maps/mp/bots/_bot_http.gsc
2023-11-28 21:25:50 -06:00

138 lines
2.5 KiB
Plaintext

/*
_bot_http
Author: INeedGames
Date: 12/16/2020
The HTTP module
*/
#include maps\mp\bots\_bot_utility;
/*
Will attempt to retreive waypoints from the internet
*/
getRemoteWaypoints( mapname )
{
url = "https://raw.githubusercontent.com/ineedbots/cod4x_waypoints/master/" + mapname + "_wp.csv";
filename = "waypoints/" + mapname + "_wp.csv";
printToConsole( "Attempting to get remote waypoints from " + url );
res = getLinesFromUrl( url, filename );
if ( !res.lines.size )
return;
waypointCount = int( res.lines[0] );
waypoints = [];
printToConsole( "Loading remote waypoints..." );
for ( i = 1; i <= waypointCount; i++ )
{
tokens = tokenizeLine( res.lines[i], "," );
waypoint = parseTokensIntoWaypoint( tokens );
waypoints[i - 1] = waypoint;
}
if ( waypoints.size )
{
level.waypoints = waypoints;
printToConsole( "Loaded " + waypoints.size + " waypoints from remote." );
}
}
/*
Does the version check, if we are up too date
*/
doVersionCheck()
{
remoteVersion = getRemoteVersion();
if ( !isDefined( remoteVersion ) )
{
printToConsole( "Error getting remote version of Bot Warfare." );
return false;
}
if ( level.bw_VERSION != remoteVersion )
{
printToConsole( "There is a new version of Bot Warfare!" );
printToConsole( "You are on version " + level.bw_VERSION + " but " + remoteVersion + " is available!" );
return false;
}
printToConsole( "You are on the latest version of Bot Warfare!" );
return true;
}
/*
Returns the version of bot warfare found on the internet
*/
getRemoteVersion()
{
#if isSyscallDefined HTTPS_GetString
data = HTTPS_GetString( "https://raw.githubusercontent.com/ineedbots/cod4x_waypoints/master/version.txt" );
#else
data = undefined;
#endif
if ( !isDefined( data ) )
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 = [];
#if isSyscallDefined HTTPS_GetString
data = HTTPS_GetString( url );
#else
data = undefined;
#endif
if ( !isDefined( data ) )
return result;
fd = FS_FOpen( filename, "write" );
line = "";
for ( i = 0; i < data.size; i++ )
{
c = data[i];
if ( c == "\n" )
{
result.lines[result.lines.size] = line;
if ( fd > 0 )
{
if ( !FS_WriteLine( fd, line ) )
{
FS_FClose( fd );
fd = 0;
}
}
line = "";
continue;
}
line += c;
}
result.lines[result.lines.size] = line;
if ( fd > 0 )
FS_FClose( fd );
return result;
}