IRC Broken
by Jookia · in Torque Game Engine · 04/28/2007 (12:58 am) · 0 replies
I'm trying to get IRC to talk through chatHud. It doesn't work.
function IRCconnect()
{
$irc = new TCPObject(ircObj);
$irc.connect("irc.centralchat.net:6667");
}
function IRCdisconnect()
{
$irc.delete();
}
function ircObj::onConnected(%ircthis)
{
%ircthis.send("Nick " @ $Pref::Player::Name @ "\r\n");
%ircthis.schedule(1500, send, "Join ViperBuild\r\n");
}
function ircObj::handleClientJoin(%ircpre, %ircp)
{
%ircname = until(%ircpre, "!");
if(charAt(%ircname, 1) $= "@")
{
%ircname = getSubStr(%ircname, 1, strLen(%ircname) -1);
}
if(%ircname $= $Pref::Player::Name)
{
chatHud.addLine("\c5[IRC] Welcome to the IRC channel, " @ %ircname @ ".");
}
else
{
chatHud.addLine("\c5[IRC] " @ %ircname @ " has joined the IRC channel.");
for(%irci = 1; %irci <= ircObj.nameCount; %irci++)
{
%irct = ircObj.name[%irci];
if(%irct $= "-1" || %irct $= "")
{
ircObj.name[%irci] = %ircname;
return;
}
}
ircObj.name[ircObj.nameCount++] = %ircname;
}
}
function ircObj::onLine(%ircthis, %irct)
{
if(firstWord(%irct) $= "ERROR")
{
if(until(getWord(%irct, getWordCount(%irct) -3),"[") $= $Pref::Player::Name)
{
%ircerror = getWord(%irct, getWordCount(%irct) -2) SPC getWord(%irct, getWordCount(%irct) -1);
chatHud.addLine("\c5[IRC] Alert: " @ %ircerror);
}
return;
}
if(charAt(%irct, 1) $= ":")
{
%irct = getSubStr(%irct, 1, strLen(%irct) -1);
}
%ircpre = until(%irct, " ");
%irct = strReplace(%irct, %ircpre, "");
%ircc = getWord(%irct, 1);
%ircp = trim(strReplace(%irct, %ircc, ""));
if(%ircc $= "PrivMsg")
{
ircObj::handleMsgReceived(%ircpre, %ircp);
}
if(%ircc $= "Quit")
{
%ircr = getSubStr(%irct, strLen(until(%irct, ":")), strLen(%irct) -1);
if(%ircr $= "")
{
%ircr = "Quit";
}
%ircname = until(%ircpre, "!");
chatHud.addLine("\c5[IRC] " @ %ircname @ " has left the IRC channel. (" @ %ircr @ ").");
for(%irci = 1; %irci <= ircObj.nameCount; %irci++)
{
if(%ircname $= ircObj.name[%irci])
{
ircObj.name[%irci] = "-1";
}
}
}
if(%ircc $= "Join")
{
ircObj::handleClientJoin(%ircpre, %ircp);
}
if(%ircc $= "353")
{
ircObj::handleClientList(%ircpre, %ircp);
}
}
function ircObj::handleClientList(%ircpre,%ircp)
{
%ircnameList = getSubStr(%ircp, strLen(until(%ircp, ":")) +2, strLen(%ircp) -1);
if(charAt(%ircnameList, 1) $= ":")
{
%ircnameList = getSubStr(%ircnameList, 1, strLen(%ircnameList) -1);
}
for(%irci = 0; %irci <=getWordCount(%ircnameList); %irci++)
{
%ircn = getWord(%ircnameList, %irci);
%ircadded = 0;
for(%irci2 = 1; %irci2 <= ircObj.nameCount; %irci2++)
{
%irct = ircObj.name[%irci2];
if(%irct $= %ircn)
{
%ircadded = 1;
}
}
if(charAt(%ircn, 1) $= "@")
{
%ircn = getSubStr(%ircn, 1, strLen(%ircn) -1);
}
if(!%ircadded)
{
ircObj.nameCount++;
ircObj.name[ircObj.nameCount] = %ircn;
}
}
}
function charAt(%ircx, %ircy)
{
return getSubStr(%ircx, %ircy -1, 1);
}
function ircObj::handleMsgReceived(%ircpre, %ircp)
{
%ircd = until(%ircp, " ");
%ircn = until(%ircpre, "!");
%ircmessage = getSubStr(%ircp, strLen(%ircd) + 2, strLen(%ircp) -1);
chatHud.addLine("\c1[IRC]" @ %ircn @ ": " @ %ircmessage);
}
function ircObj::onDisconnect(%ircthis)
{
chatHud.addLine("\c5[IRC] You have left the IRC channel.");
ircObj.send("QUIT\r\n");
for(%irci = 1; %irci <= ircObj.nameCount; %irci++)
{
ircObj.name[%irci] = -1;
}
ircObj.nameCount = 0;
}About the author