Option Explicit 'Hub jumper script by UTSRelativity (uts.dyndns.info:411) Version 1.0 Dim aHubs(28, 3) 'For aHubs(x, y): Max (x - 1) hubs - y: 0-sAddr, 1-bEnable, 2-Nothing, 3-sName Dim aJumpCmds(10, 3) 'For (x, y) - y: 0-sCommand, 1-iSecurity (0-Disable, 1-Enable, 2-Registered User Only, 3-Op Only, 4-Owner Only), 2-sHelp, 3-sSyntax Dim aExtVars(10, 1) 'Change this to increase max number of variables for ExtReplaceVars Dim sBotName Dim sNatoHeader Dim sTimeZone Dim sOwner Sub Main() sTimeZone = "EDT (GMT -04:00)" sBotName = "UñtøücháblèJump" sOwner = "UTSRelativity" aHubs(0, 0) = "UsaGangStaz.no-ip.com" aHubs(0, 1) = 1 aHubs(0, 3) = vbTab+" -= Ü·§· Gáñg§táZ =-"+vbTab+" 20 gig" aHubs(1, 0) = "firestorm.dyndns.dk" aHubs(1, 1) = 1 aHubs(1, 3) = vbTab+" -= [DK]Firestorm =-"+vbTab+" 10 gig" aHubs(2, 0) = "outlaw1.no-ip.org" aHubs(2, 1) = 1 aHubs(2, 3) = vbTab+"-= The Mâffíâ [BIN/ISO] =-"+vbTab+" 10 gig" aHubs(3, 0) = "alderaan.no-ip.org" aHubs(3, 1) = 1 aHubs(3, 3) = vbTab+" -= Ðigital Undergrøund =-"+vbTab+" 5 gig" aHubs(4, 0) = "dope-shit.no-ip.org" aHubs(4, 1) = 1 aHubs(4, 3) = vbTab+" -= Ððp£-§HiT® (Trivia) =-"+vbTab+" 5 gig" aHubs(5, 0) = "wortheysoft.com" aHubs(5, 1) = 0 aHubs(5, 3) = vbtab+" -= Wortheysoft Inc. =-"+vbTab+" 1 gig" aHubs(6, 0) = "doodsforever.no-ip.com" aHubs(6, 1) = 1 aHubs(6, 3) = vbTab+" -= † HUBGODS † =-"+vbTab+" 50 gig" aHubs(7, 0) = "scooby.servemp3.com" aHubs(7, 1) = 1 aHubs(7, 3) = vbTab+"-= BUZZARDS LAIR™(U.K) =-"+vbTab+" 1 gig" aHubs(8, 0) = "viper.bounceme.net" aHubs(8, 1) = 1 aHubs(8, 3) = vbTab+" -= No limits! =- "+vbTab+" 0 gig" aHubs(9, 0) = "dwabbit.myftp.org" aHubs(9, 1) = 1 aHubs(9, 3) = vbTab+" -= The Dwabbit Warren =-"+vbTab+" 0 gig" aHubs(10, 0) = "multiplexsweden.no-ip.com" aHubs(10, 1) = 1 aHubs(10, 3) = vbTab+" ¤··MûltíPlëX DívX SWE··¤"+vbTab+" 5 gig" aHubs(11, 0) = "dreammasterowner2.serveftp.com" aHubs(11, 1) = 1 aHubs(11, 3) = " Uñtøücháblè Dream~Masters002"+vbTab+" 1 gig" aHubs(12, 0) = "dreammaster.serveftp.com" aHubs(12, 1) = 1 aHubs(12, 3) = " Uñtøücháblè Dream~Masters"+vbTab+" 1 gig" aHubs(13, 0) = "spudgun.servebeer.com" aHubs(13, 1) = 1 aHubs(13, 3) = vbTab+" -=Spuds Potato Farm™ =-"+vbTab+" 1 gig" aHubs(14, 0) = "divxdistro.serveftp.com" aHubs(14, 1) = 1 aHubs(14, 3) = vbTab+" -= † ÐîVX Ðî§T®Ö † =-"+vbTab+" 10 gig" aHubs(15, 0) = "universal.lir.dk" aHubs(15, 1) = 1 aHubs(15, 3) = " -= Uñtøücháblè] DK Universal =-"+vbTab+" 1 gig" aHubs(16, 0) = "neovortex.no-ip.com" aHubs(16, 1) = 1 aHubs(16, 3) = vbTab+" -= ›¦¤Néø¤Vø®téX¤¦‹ =-"+vbTab+" 1 gig" aHubs(17, 0) = "shareplace.no-ip.com" aHubs(17, 1) = 1 aHubs(17, 3) = vbTab+" -= §hãRepLãcê =-"+vbTab+" 1 gig" aHubs(18, 0) = "nofakers.no-ip.com:1401" aHubs(18, 1) = 1 aHubs(18, 3) = vbtab+" »» Uñtøücháblè §tøNèÐ ««"+vbTab+" 10 gig" aHubs(19, 0) = "dragonball2.no-ip.biz" aHubs(19, 1) = 1 aHubs(19, 3) = vbTab+" -= )v(ajin Dragonball=-"+vbTab+" 5 gig" aHubs(20, 0) = "dragonball.no-ip.biz" aHubs(20, 1) = 1 aHubs(20, 3) = vbTab+" -= Dragonball Paradise =-"+vbTab+" 1 gig" aHubs(21, 0) = "majikwarez.no-ip.com" aHubs(21, 1) = 1 aHubs(21, 3) = vbTab+" -= •Wã®ëHøu§ë• =-"+vbTab+" 5 gig" aHubs(22, 0) = "hellrazor.no-ip.org" aHubs(22, 1) = 1 aHubs(22, 3) = vbTab+" -= † HellRazor † =-"+vbTab+" 1 gig" aHubs(23, 0) = "virgin.kicks-ass.org" aHubs(23, 1) = 1 aHubs(23, 3) = vbTab+"-= Uñtøücháblè Divx Zone =-"+vbTab+" 10 gig" aHubs(24, 0) = "Madcircle.no-ip.com" aHubs(24, 1) = 1 aHubs(24, 3) = vbTab+" -= ][V][àÐÇí®ÇL€ =-"+vbTab+" 50 gig" aHubs(25, 0) = "UK-FileShare.no-ip.com" aHubs(25, 1) = 1 aHubs(25, 3) = vbTab+" -= UK FileShare =-"+vbTab+" 1 gig" aJumpCmds(0, 0) = "#list" aJumpCmds(0, 1) = 1 ajumpCmds(0, 3) = "#list "+vbtab+"Gets Hublist" aJumpCmds(1, 0) = "#hub" aJumpCmds(1, 1) = 1 aJumpCmds(1, 3) = "#hub"+vbtab+"Goto Hub (no spaces or quotes)" aJumpCmds(2, 0) = "#help" aJumpCmds(2, 1) = 1 aJumpCmds(2, 3) = "#help "+vbtab+"Show This Help" aJumpCmds(3, 0) = "#ophelp" aJumpCmds(3, 1) = 3 aJumpCmds(3, 3) = "#ophelp"+vbtab+"Ops Help Commands" End Sub Sub SetExtReplaceVars() 'UTS function 'Variables and their equivalents for ExtReplaceVars function aExtVars(0, 0) = "%BR%" aExtVars(0, 1) = vbCrLf aExtVars(1, 0) = "%TAB%" aExtVars(1, 1) = "     " aExtVars(2, 0) = "%2BR%" aExtVars(2, 1) = vbCrLf + vbCrLf aExtVars(3, 0) = "%HUBADDR%" aExtVars(3, 1) = frmHub.txtIP + ":" + frmHub.txtListenPort aExtVars(4, 0) = "%HUBNAME%" aExtVars(4, 1) = frmHub.txtName aExtVars(5, 0) = "%REDIRTO%" aExtVars(5, 1) = frmHub.txtRedirect aExtVars(6, 0) = "%DATETIME%" aExtVars(6, 1) = FormatDateTime(Now(), vbGeneralDate) + " " + sTimeZone End Sub Function sListMy2DArray(aMy2DArray, sHeader, sFooter, bIsCmd) 'UTS function that returns a string listing the contents of certain 2D string arrays Dim x Dim sEnable Dim sCommand sListMy2DArray = "%2BR%" + sHeader + ":" For x = 0 To iNumberOf(aMy2DArray) Select Case aMy2DArray(x, 1) Case 0 sEnable = "Down" Case 1 sEnable = " Up " Case 2 sEnable = "Register" Case 3 sEnable = "OP Only" Case 4 sEnable = "Hub Owner" End Select sCommand = aMy2DArray(x, 0) If bIsCmd = True Then If (aMy2DArray(x, 3) = "") = False Then sCommand = aMy2DArray(x, 3) End If End If sListMy2DArray = sListMy2DArray + "%BR%%TAB%" + CStr(x) + ": (" + sEnable + ") " + sCommand Next If Not (sFooter = "") Then sListMy2DArray = sListMy2DArray + "%BR%" + sFooter End If sListMy2DArray = sListMy2DArray + "%BR%" End Function Function sHelpOnCmd(aMyCmdArray, x) 'UTS function Dim sCmdSyntax Dim sHelpLine If (x < 0) Or (x > iNumberOf(aMyCmdArray)) Then sHelpOnCmd = "Error: Bad command number (" + CStr(x) + ")" Else If aMyCmdArray(x, 3) = "" Then sCmdSyntax = aMyCmdArray(x, 0) Else sCmdSyntax = aMyCmdArray(x, 3) End If If aMyCmdArray(x, 2) = "" Then sHelpLine = "There is no help available on this command." Else sHelpLine = aMyCmdArray(x, 2) End If sHelpOnCmd = "%2BR%Help for " + sCmdSyntax + ":%BR%%TAB%" + sHelpLine + "%BR%" End If End Function Sub DataArival(curUser, sCurData) 'This event is fired when a user sends data to the hub. curUser is a DCUser object and sCurData is the data they sent. If Left(sCurData, 1) = "<" Then 'sCurData is chat HubJump curUser, sCurData End If End Sub Sub OpConnected(curUser) 'This event is fired when an op connects to the hub. NewUserConnected curUser End Sub Sub NewUserConnected(curUser) 'This event is fired when a new user logs in. SendPM curUser, sBotName, sListMy2DArray(aJumpCmds, "Uñtøücháblè Nétwørk HubJump commands", "", True) End Sub Sub HubJump(curUser, sCurData) 'Main HubJump function by UTS Dim x Dim bRun Dim sCmdSyntax Dim sError For x = 0 To iNumberOf(aJumpCmds) If InStr(1, UCase(sCurData), UCase(aJumpCmds(x, 0))) > 0 Then If aJumpCmds(x, 3) = "" Then sCmdSyntax = aJumpCmds(x, 0) Else sCmdSyntax = aJumpCmds(x, 3) End If Select Case aJumpCmds(x, 1) Case 0 bRun = False sError = "The command -" + sCmdSyntax + "- has been disabled." Case 1 bRun = True Case 2 If bIsRegistered(curUser.sName) = True Then bRun = True Else bRun = False sError = "The command -" + sCmdSyntax + "- has been reserved for registered users only." End If Case 3 If curUser.bOperator = False Then bRun = False sError = "The command -" + sCmdSyntax + "- has been reserved for OPs only." Else bRun = True End If Case 4 If UCase(curUser.sName) = UCase(sOwner) Then bRun = True Else bRun = False sError = "The command -" + sCmdSyntax + "- has been reserved for the hub owner only." End If End Select If bRun = True Then Select Case x Case 0: SendMainChat sBotName, "The list of Uñtøücháblè Hubs will be PMed to you, " + curUser.sName + "." sNatoHeader = "Welcome to the Uñtøücháblè Nétwørk Hub Jump" + "%BR%" + "%BR%" + "The list of Uñtøücháblè Hubs:" SendPM curUser, sBotName, sListMy2DArray(aHubs, sNatoHeader, "", True) Case 1: Dim sHubNum Dim iHubNum sHubNum = BeforeFirst(AfterFirst(sCurData, aJumpCmds(x, 0)), " ") iHubNum = iStringToNum(sHubNum, iNumberOf(aHubs)) If iHubNum = -1 Then SendMainChat sBotName, "Error: Bad hub number or syntax error" Else If aHubs(iHubNum, 1) = 0 Then SendMainChat sBotName, "Error: Jumping to the hub specified has been disabled" Else SendMainChat sBotName, curUser.sName + " is being redirected to hub #" + CStr(iHubNum) + "." frmHub.DoEventsForMe curUser.ForceMove (CStr(aHubs(iHubNum, 0))) End If End If Case 2: SendMainChat sBotName, curUser.sName + "Has requested the HubJump feature, The list has been PM'ed to them." NewUserConnected curUser End Select Else SendMainChat sBotName, sError End If End If Next End Sub Function iNumberOf(a2DStringArray) 'UTS Helper function to replace the use of array size variables iNumberOf = 0 Do Until a2DStringArray(iNumberOf, 0) = "" iNumberOf = iNumberOf + 1 Loop If Not iNumberOf = 0 Then iNumberOf = iNumberOf - 1 End Function Sub SendMassMessage(sBotName, sMessage) 'UTS Helper function to PM all users; supports ExtReplaceVars variables in sMessage Dim DCUser For Each DCUser In colUsers SendPM DCUser, sBotName, sMessage Next End Sub Sub SendMainChat(sBotName, sMessage) 'UTS Helper function that sends sMessage to main chat; supports ExtReplaceVars variables in sMessage colUsers.SendChatToAll CStr(sBotName), CStr(ExtReplaceVars(sMessage)) End Sub Sub SendPM(DCUser, sBotName, sMessage) 'UTS Helper function that sends a PM to DCUser clsDCUser.PrivateMessage; supports ExtReplaceVars variables in sMessage DCUser.PrivateMessage CStr(sBotName), CStr(ExtReplaceVars(sMessage)) End Sub Function BeforeFirst(sIn, sFirst) 'Modified by UTS to prevent crash when sFirst is not part of sIn If InStr(1, sIn, sFirst) > 0 Then BeforeFirst = Left(sIn, InStr(1, sIn, sFirst) - 1) Else BeforeFirst = sIn End If End Function Function AfterFirst(sIn, sFirst) 'Not tested by UTS AfterFirst = Right(sIn, Len(sIn) - InStr(1, sIn, sFirst) - (Len(sFirst) - 1)) End Function Function AfterLast(sFrom, sAfterLast) 'Not tested by UTS If InStr(1, sFrom, sAfterLast) Then AfterLast = Right(sFrom, Len(sFrom) - InStrRev(sFrom, sAfterLast) - (Len(sAfterLast) - 1)) Else AfterLast = "" End If End Function Function sReplace(sIn, sWhat, sWith) 'Not tested by UTS sReplace = sIn Do While InStr(1, sReplace, sWhat) <> 0 sReplace = BeforeFirst(sReplace, sWhat) & sWith & AfterFirst(sReplace, sWhat) Loop End Function Function ExtReplaceVars(sMessage) 'UTS Helper function for extended set of "variables" for strings from ReplaceVars or strings not requiring ReplaceVars Dim i ExtReplaceVars = sMessage SetExtReplaceVars For i = 0 To iNumberOf(aExtVars) ExtReplaceVars = sReplace(ExtReplaceVars, aExtVars(i, 0), aExtVars(i, 1)) Next End Function Function ReplaceVars(sMessage, sCurData) 'UTS modified - calls ExtReplaceVars after standard code Dim sUser Dim sText sText = AfterFirst(sCurData, "> ") sUser = BeforeFirst(AfterFirst(sCurData, "<"), ">") ReplaceVars = sMessage ReplaceVars = sReplace(ReplaceVars, "%USER%", sUser) ReplaceVars = sReplace(ReplaceVars, "%ECHO_TEXT%", sText) ReplaceVars = ExtReplaceVars(ReplaceVars) End Function Function rightBeforeFirst(sIn, sFirst) 'Not tested by UTS rightBeforeFirst = AfterLast(BeforeFirst(sIn, sFirst), " ") End Function Function bIsRegistered(sName) 'UTS function Dim Registered bIsRegistered = False For Each Registered In frmHub.lstOps.listItems If UCase(Registered.Text) = UCase(sName) Then bIsRegistered = True Exit For End If Next End Function Function iStringToNum(sString, iMax) 'UTS function Dim x Dim bMatched bMatched = False For x = 0 To iMax If sString = CStr(x) Then iStringToNum = x bMatched = True Exit For End If Next If bMatched = False Then iStringToNum = -1 End Function