mirror of
https://github.com/Ragora/TribesReplay.git
synced 2026-01-20 01:54:47 +00:00
234 lines
6.3 KiB
C#
234 lines
6.3 KiB
C#
|
|
function getLinkName(%line, %offset)
|
|
{
|
|
if(%offset $= "")
|
|
%offset = 0;
|
|
|
|
%name = getField(%line, %offset);
|
|
%tag = getField(%line, %offset + 1);
|
|
%append = getField(%line, %offset + 2);
|
|
%uid = getField(%line, %offset + 3);
|
|
|
|
if(%append)
|
|
%str = "<color:FFFFFF>" @ %name @ "<color:FFFF00>" @ %tag;
|
|
else
|
|
%str = "<color:FFFF00>" @ %tag @ "<color:FFFFFF>" @ %name;
|
|
return "<a:player" TAB %name TAB %uid @ "><spush>" @ %str @ "<spop></a>";
|
|
}
|
|
|
|
|
|
function getTextName(%line, %offset)
|
|
{
|
|
if(%offset $= "")
|
|
%offset = 0;
|
|
|
|
%name = getField(%line, %offset);
|
|
%tag = getField(%line, %offset + 1);
|
|
%append = getField(%line, %offset + 2);
|
|
%uid = getField(%line, %offset + 3);
|
|
|
|
if(%append)
|
|
return %name @ %tag TAB %uid;
|
|
else
|
|
return %tag @ %name TAB %uid;
|
|
}
|
|
|
|
function HTTPRequest(%script, %update, %destObject, %key)
|
|
{
|
|
error("Call to HTTP request depricated - trace:");
|
|
trace(1);
|
|
schedule(0,0,trace,0);
|
|
|
|
//%upd = new SecureHTTPObject(HTTPUpdate);
|
|
//%upd.post($WebAddress, $WebPath @ %script @ ".php", "", %update);
|
|
//%upd.key = %key;
|
|
//%upd.destObject = %destObject;
|
|
}
|
|
|
|
function HTTPSecureRequest(%script, %update, %destObject, %key)
|
|
{
|
|
error("Call to HTTP secure request depricated - trace:");
|
|
trace(1);
|
|
schedule(0,0,trace,0);
|
|
|
|
//%upd = new SecureHTTPObject(HTTPUpdate);
|
|
//%upd.setAuthenticated();
|
|
//%upd.post($WebAddress, $WebPath @ %script @ ".php", "", %update);
|
|
//%upd.key = %key;
|
|
//%upd.destObject = %destObject;
|
|
}
|
|
|
|
$DBNextQueryId = 0;
|
|
$DBQueryCount = 0;
|
|
|
|
if(!isObject(ProxyEchoTest))
|
|
{
|
|
new ScriptObject(ProxyEchoTest)
|
|
{
|
|
class = ProxyEcho;
|
|
};
|
|
}
|
|
|
|
function ProxyEcho::onDatabaseQueryResult(%this, %status, %string, %key)
|
|
{
|
|
echo("Got database query result for key: " @ %key);
|
|
echo("Status = " @ %status);
|
|
echo("String/Rowcount = " @ %string);
|
|
}
|
|
|
|
function ProxyEcho::onDatabaseRow(%this, %row, %isLast, %key)
|
|
{
|
|
echo("Got Row - key = " @ %key @ " isLast = " @ %isLast);
|
|
echo("Row Text = " @ %row);
|
|
}
|
|
|
|
function HandleDatabaseProxyResponse(%prefix, %params)
|
|
{
|
|
%id = getWord(%params, 0);
|
|
|
|
for(%qc = 0; %qc < $DBQueryCount; %qc++)
|
|
if(getWord($DBQueries[%qc], 0) == %id)
|
|
break;
|
|
if(%qc == $DBQueryCount)
|
|
{
|
|
warn("Invalid database proxy message id: " @ %id);
|
|
return;
|
|
}
|
|
|
|
%lastPacket = getWord(%params, 1);
|
|
%start = strpos(%params, ":") + 1;
|
|
if(!%start)
|
|
{
|
|
warn("Invalid database proxy message: " @ %params);
|
|
return;
|
|
}
|
|
|
|
// convert all the escaped characters
|
|
%newStr = getSubStr(%params, %start, 100000);
|
|
%newStr = strreplace(%newStr, "\\n", "\n");
|
|
%newStr = strreplace(%newStr, "\\\\", "\\");
|
|
|
|
// concat it with any text from prior message(s) that hasn't been
|
|
// processed yet.
|
|
%msg = $DBQueryText[%qc] @ %newStr;
|
|
%proxyObject = getWord($DBQueries[%qc], 2);
|
|
%proxyKey = getWord($DBQueries[%qc], 3);
|
|
|
|
if(getWord($DBQueries[%qc], 1) == 0) // we haven't receivd the first 2 recs yet
|
|
{
|
|
// check if we have 2 records in %msg:
|
|
%pos1 = strpos(%msg, "\\S");
|
|
if(%pos1 != -1)
|
|
%pos2 = strpos(%msg, "\\S", %pos1 + 2);
|
|
|
|
if(%pos1 != -1 && %pos2 != -1)
|
|
{
|
|
%resultStatus = getSubStr(%msg, 0, %pos1);
|
|
%resultString = getSubStr(%msg, %pos1 + 2, %pos2 - (%pos1 + 2));
|
|
if(%proxyObject !$= "")
|
|
%proxyObject.onDatabaseQueryResult(%resultStatus, %resultString, %proxyKey);
|
|
$DBQueries[%qc] = setWord($DBQueries[%qc], 1, "1");
|
|
%msg = getSubStr(%msg, %pos2 + 2, 100000);
|
|
}
|
|
}
|
|
if(getWord($DBQueries[%qc], 1) == 1)
|
|
{
|
|
// start spitting out rows:
|
|
while((%pos = strpos(%msg, "\\S")) != -1)
|
|
{
|
|
%row = getSubStr(%msg, 0, %pos);
|
|
%msg = getSubStr(%msg, %pos + 2, 100000);
|
|
|
|
if(%proxyObject !$= "")
|
|
%proxyObject.onDatabaseRow(%row, %msg $= "" && %lastPacket, %proxyKey);
|
|
}
|
|
}
|
|
$DBQueryText[%qc] = %msg; // save off the last text...
|
|
if(%lastPacket)
|
|
{
|
|
// erase the query from the array:
|
|
if(getWord($DBQueries[%qc], 1) == 0)
|
|
warnf("Error in database query response - not enough data.");
|
|
for(%i = %qc; %i < $DBQueryCount; %i++)
|
|
{
|
|
$DBQueries[%i] = $DBQueries[%i+1];
|
|
$DBQueryText[%i] = $DBQueryText[%i+1];
|
|
}
|
|
$DBQueries[%i] = "";
|
|
$DBQueryText[%i] = "";
|
|
$DBQueryCount--;
|
|
}
|
|
}
|
|
|
|
// DBQuery is: id recCountRecvd proxyObject key
|
|
|
|
function DatabaseQueryi(%astr, %args, %proxyObject, %key)
|
|
{
|
|
if ($IRCClient::state !$= IDIRC_CONNECTED)
|
|
{
|
|
IRCClient::connect();
|
|
if (%proxyObject !$= "")
|
|
%proxyObject.onDatabaseQueryResult("1\tORA-04061", "", %key);
|
|
|
|
return 0;
|
|
}
|
|
|
|
// maxRows will be empty
|
|
$NextDatabaseQueryId++;
|
|
%id = $NextDatabaseQueryId;
|
|
|
|
$DBQueries[$DBQueryCount] = %id @ " 0 " @ %proxyObject SPC %key;
|
|
$DBQueryText[$DBQueryCount] = "";
|
|
$DBQueryCount++;
|
|
|
|
%strStart = 0;
|
|
%args = strreplace(%args, "\r", "");
|
|
%args = strreplace(%args, "\\", "\\\\");
|
|
%args = strreplace(%args, "\n", "\\n");
|
|
|
|
%len = strlen(%args);
|
|
%i = 0;
|
|
while(%i+400 < %len)
|
|
{
|
|
%msg = getSubStr(%args, %i, 400);
|
|
IRCClient::send("dbqa" SPC %id SPC ":" @ %msg);
|
|
%i += 400;
|
|
}
|
|
%msg = getSubStr(%args, %i, 400);
|
|
IRCClient::send("dbqax" SPC %id SPC %astr SPC ":" @ %msg);
|
|
return %id;
|
|
}
|
|
|
|
function DatabaseQuery(%ordinal, %args, %proxyObject, %key)
|
|
{
|
|
return DatabaseQueryi(%ordinal SPC "0", %args, %proxyObject, %key);
|
|
}
|
|
|
|
function DatabaseQueryArray(%ordinal, %maxRows, %args, %proxyObject, %key)
|
|
{
|
|
return DatabaseQueryi("C" @ %ordinal SPC %maxRows, %args, %proxyObject, %key);
|
|
}
|
|
|
|
function DatabaseQueryCancel(%id)
|
|
{
|
|
for(%qc = 0; %qc < $DBQueryCount; %qc++)
|
|
if(getWord($DBQueries[%qc], 0) == %id)
|
|
break;
|
|
if(%qc == $DBQueryCount)
|
|
return;
|
|
IRCClient::send("dbqc " @ %id);
|
|
|
|
for(%i = %qc; %i < $DBQueryCount; %i++)
|
|
{
|
|
$DBQueries[%i] = $DBQueries[%i+1];
|
|
$DBQueryText[%i] = $DBQueryText[%i+1];
|
|
}
|
|
$DBQueries[%i] = "";
|
|
$DBQueryText[%i] = "";
|
|
$DBQueryCount--;
|
|
}
|
|
|
|
function WONUpdateCertificateDone(%errCode, %errStr)
|
|
{
|
|
IRCClient::relogin();
|
|
} |