Is it possible to convert this NMDCH script to LUA??
'''''''''''''''''''''''''''''''''''''''''''''''''
''' Hub-Link Support Script '''
''' For NeoModus Hubs '''
''' v1.00 '''
''' '''
''' September 15, 2003 '''
''' by HaArD '''
'''''''''''''''''''''''''''''''''''''''''''''''''
''' Based on the Support Script for MHCBot '''
''' by FLiXD '''
'''''''''''''''''''''''''''''''''''''''''''''''''
Dim sBotName, sOPChatName, oNoDCHL, oDCHLBots, sTheText, OPMsg, HubBytes, UserCount, bIPAddPM, bIPFixPM
Sub Main()
sBotName = "Somedude" '***USE SAME NAME AS BOT NAME IN HUB-LINK
sOPChatName = "MHOPchat" '***ENTER NAME OF OP CHAT SCRIPT IN THIS HUB
bIPAddPM = True '***Send User a PM if IP # is blank in Connect requests?
bIPFixPM = True '***Send User a PM if IP # is wrong in Connect requests?
Set oNoDCHL = CreateObject("Scripting.Dictionary") '*** USERS WHO DO NOT WANT TO RECIEVE CHAT FROM REMOTE HUBS
Set oDCHLBots = CreateObject("Scripting.Dictionary") '*** BOTS WHICH SHOULD NOT BE COUNTED IN HUB TOTALS
End Sub
Sub NewUserConnected(curUser)
'curUser.SendChatMessage cstr(sBotName), "For those users not wishing to view MultiHubChat, these triggers are available:"+vbCrlf+"? DCHLhide ? DCHLshow ?"
If curUser.sname = sBotName Then '*** SEND HUB-LINK THE $MyINFO STRING FOR ALL CONNECTED USERS.
For Each usr In colUsers
If Not usr.sname = sBotName Then curUser.SendData "$Hello " & usr.sname & "|" & usr.sMyInfoString & "|"
Next
Else
Call CheckUserName(curUser.sName) '*** VALIDATE THAT THE USERNAME IS AVAILABLE IN HUB-LINK
End If
End Sub
Sub OpConnected(curUser)
Call NewUserConnected(curUser)
End Sub
Sub CheckUserName(UserName)
colUsers.ItemByName(cstr(sBotName)).SendData "$#TUN " & UserName & "|"
End Sub
Sub DataArival(curUser, sCurData)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' Process Main Chat User Commands First and then Exit Sub '''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
If AscW(sCurData) = 60 Then '***ALLOWS USER TO VIEW OR HIDE CHAT FROM REMOTE HUBS
sTheText = AfterFirst(sCurData, "> ")
Select Case LCase(sTheText)
Case "dchlhide"
If Not oNoDCHL.Exists(LCase(curUser.sname)) Then
oNoDCHL(LCase(curUser.sname))= "blocked"
curUser.SendChatMessage cstr(sBotName), "You have chosen not to view MultiHub Chat."
Exit Sub
End If
Case "dchlshow"
If oNoDCHL.Exists(LCase(curUser.sname)) Then
oNoDCHL.Remove(LCase(curUser.sname))
curUser.SendChatMessage cstr(sBotName), "You have chosen to view MultiHub Chat."
Exit Sub
End If
Case Else
Exit Sub
End Select
End If
''''''''''''''''''''''''''''''''''''''''
''' Process DC and HUB-LINK Commands '''
''''''''''''''''''''''''''''''''''''''''
If AscW(sCurData) = 36 Then
Select Case Trim(BeforeFirst(sCurData & " ", " "))
'''''''''''''''''''''''''''''''
''' Commands Sent by Users '''
'''''''''''''''''''''''''''''''
Case "$GetNickList" '***MAKES OPCHAT BOT VISIBLE TO OPs ONLY
If curUser.bOperator And Not curUser.sName = sBotName Then
curUser.SendData "$Hello " + CStr(sOPChatName)+"|"
If Not curUser.sName = sBotName Then
curUser.SendData "$MyINFO $ALL "+Cstr(sOPChatName)+" OP Chat Room$ $Chat"+chr(8)+"$"+frmHub.txtIP+"$"+"0"+"$|"
End If
End If
If Not curUser.sName = sBotName Then colUsers.ItemByName(cstr(sBotName)).SendData "$#GNL "+curUser.sName+"|"
Case "$ConnectToMe" '***RELAY ACTIVE CONNECT REQUESTS TO REMOTE USERS (ALSO VALIDATES/CORRECTS IP)
If Not curUser.sName = sBotName Then
CTMTo = BeforeFirst(AfterFirst(sCurData, " "), " ")
If Not colUsers.Online(CStr(CTMTo)) Then
CTMMsg = AfterFirst(AfterFirst(sCurData, " "), " ")
CTMMsgIP = BeforeFirst(AfterFirst(AfterFirst(sCurData, " "), " "), ":")
CTMIP = curUser.IP
If Mid(CTMMsg, InStr(CTMMsg, ":") - 1, 1) = " " Then
CTMMsg = Replace(CTMMsg, ":", curUser.IP & ":")
If bIPAddPM Then curUser.SendData "$To: " & curUser.sName & " From: " & sBotName & " $<" & sBotName & "> " & "Your connection request for " & CTMTo & " did not include an IP Address. To stop this message please put the IP " & CTMIP & " in your connection settings. If you have a dynamic IP you can get a free DNS name from www.no-ip.com and put that in instead.|"
Elseif Not CTMMsgIP = CTMIP Then
If Not CTMIP = "127.0.0.1" And Not Left(CTMIP, 7) = "192.168" Then ' Make sure it's not a local hubowner.
CTMMsg = Replace(CTMMsg, CTMMsgIP, curUser.IP)
If bIPFixPM Then curUser.SendData "$To: " & curUser.sName & " From: " & sBotName & " $<" & sBotName & "> " & "You have the wrong IP address in your connection settings. To stop this message please update it to read " & CTMIP & "|"
End If
End If
colUsers.ItemByName(cstr(sBotName)).SendData "$#CTM " & CTMTo & " " & CTMMsg & "|"
End If
End If
Case "$RevConnectToMe" '***RELAY PASSIVE CONNECT REQUESTS TO REMOTE USERS
If Not curUser.sName = sBotName Then
sUserName = AfterFirst(AfterFirst(sCurData," ")," ")
If Not colUsers.Online(CStr(sUserName)) Then
colUsers.ItemByName(cstr(sBotName)).SendData "$#RTM" & AfterFirst(sCurData, "$RevConnectToMe") & "|"
End If
End If
Case "$To:" '***DEALS WITH OP CHAT
sUserName = BeforeFirst(AfterFirst(sCurData, " "), " ")
If sUserName = sOPChatName Then
OPMsg = AfterFirst(sCurData, "> ")
For Each usrOP In colUsers
If usrOP.bOperator Then
If usrOP.sName = curUser.sName Or usrOP.sName = sBotName Then
Else
usrOP.SendData CStr("$To: "+usrOP.sName+" From: "+sOPChatName+" $<"+Cstr(curUser.sName)+"> "+Cstr(OPMsg)+"|") '***LOCAL OPCHAT
End If
End If
Next
colUsers.ItemByName(cstr(sBotName)).SendChatMessage "???","?"+CurUser.sName+"?"+cstr(OPMsg) '***REMOTE OPCHAT
Else '***DEALS WITH PRIVATE MESSAGES TO REMOTE HUBS (**WARNING** PM'S TO LOCAL BOTS ARE ALSO PICKED UP)
If Not colUsers.Online(CStr(sUserName)) And Not sUserName = "Vandel\Debug" Then
colUsers.ItemByName(cstr(sBotName)).SendData "$#PRM " & AfterFirst(sCurData, " ")
End If
End If
Case "$Hello", "$Quit" 'SENDS REMOTE JOINS AND PARTS TO USERS ON THE LOCAL HUB.
If curUser.sName = sBotName Then
For Each usr In ColUsers
If Not usr.sName = sBotName Then
If Not AfterFirst(sCurData, " ") = sOPChatName Then
usr.SendData sCurData + "|"
End If
End If
Next
End If
Case "$MyINFO" '*** STOPS HUB-LINK BOTS FROM BEING COUNTED IN HUB BYTES
If Mid(sCurdata, 9, 5) = "$ALL " Then
If Right(BeforeFirst(AfterFirst(sCurData, "$ $"), "$"),1)=chr(108) Then
If Not oDCHLBots.exists(LCase(curUser.sName)) Then oDCHLBots(LCase(curUser.sName)) = " "
End If
End If
Case "$Kick" '*** RELAYS KICK COMMAND FOR USERS WHO ARE NOT LOCAL
sUserName = AfterFirst(sCurData, " ")
If Not colUsers.Online(CStr(sUserName)) Then
colUsers.ItemByName(cstr(sBotName)).SendData "$#KCK " & curUser.sName & " " & AfterFirst(sCurData, " ")
End If
Case "$OpForceMove" '*** RELAYS RE-DIRECT COMMAND FOR USERS WHO ARE NOT LOCAL
sRedirWho = BeforeFirst(AfterFirst(sCurData, "$Who:"), "$")
If Not colUsers.Online(CStr(sRedirWho)) Then
colUsers.ItemByName(cstr(sBotName)).SendData "$#OFM " & curUser.sName & " " & AfterFirst(sCurData, " ")
End If
'''''''''''''''''''''''''''''''''
''' Commands Sent by HUB-LINK '''
'''''''''''''''''''''''''''''''''
Case "$#INF" '*** SEND $MyINFO FOR LINKED HUBS TO ALL CONNECTED USERS
sSendtoWho = BeforeFirst(AfterFirst(sCurData, " "), " ")
If sSendToWho = "$ALL" Then
For Each usr In colUsers
If Not usr.sName = sBotName Then usr.SendData "$MyINFO " & AfterFirst(sCurData, " ") & "|"
Next
Else '*** OR JUST TO THE USER WHO REQUESTED IT.
colUsers.ItemByName(cstr(sSendToWho)).SendData "$MyINFO $ALL " & AfterFirst(AfterFirst(sCurData, " "), " ") & "|"
End If
Case "$#OPL" '*** RE-SEND OPLIST WHICH INCLUDES ALL OPS FROM LINKED HUBS
For Each usr In colUsers
If Not usr.sName = sBotName Then
If usr.bOperator Then
usr.SendData "$OpList " & AfterFirst(sCurData, " ") & sOpChatName & "$$|"
Else
usr.SendData "$OpList " & AfterFirst(sCurData, " ") & "|"
End If
End If
Next
Case "$RS" '*** RELAY A SEARCH REQUEST
For Each User In ColUsers
If User.sName <> sBotName Then
User.SendData CStr(mid(sCurData,5))
End If
Next
Case "$FW" '*** PROCESSES MAIN CHAT FROM REMOTE HUBS
sRemUser = BeforeFirst(AfterFirst(sCurData, " "), " ")
sRemMsg = AfterFirst(AfterFirst(sCurData, " "), " ")
For Each usr In ColUsers
If Not oNoDCHL.Exists(LCase(cstr(usr.sname))) And Not usr.sname = sBotName Then
usr.SendChatMessage CStr(sRemUser), CStr(sRemMsg)
End If
Next
Case "$FWOC" '*** PROCESSES OPCHAT FROM REMOTE HUBS
sRemUser = BeforeFirst(AfterFirst(sCurData, " "), " ")
sRemMsg = AfterFirst(AfterFirst(sCurData, " "), " ")
For Each usrOP In colUsers
If usrOP.bOperator And Not usrOP.sname = sBotName Then
usrOP.SendData CStr("$To: "+usrOP.sName+" From: "+sOPChatName+" $<"+CStr(sRemUser)+"> "+CStr(sRemMsg))
End If
Next
Case "$#PRM" '*** PROCESSES PRIVATE MESSAGES FROM REMOTE HUBS
sLocUser = BeforeFirst(AfterFirst(sCurData, " "), " ")
sRemUser = BeforeFirst(AfterFirst(sCurData, "From: "), " ")
sRemPrfx = BeforeFirst(AfterFirst(AfterFirst(sCurData, "$"), "$"), " ")
sRemMsg = AfterFirst(sCurData, "> ")
colUsers.ItemByName(cstr(sLocUser)).SendData "$To: " & sLocUser & " From: " & sRemUser & " $" & sRemPrfx & " " & sRemMsg & "|"
Case "$#GMI" '*** SENDS $GetInfo TO REQUESTED CLIENT.
sLocUser = BeforeFirst(AfterFirst(sCurData, " "), " ")
colUsers.ItemByName(cstr(sLocUser)).SendData ("$GetINFO " & AfterFirst(sCurData, " ") & "|")
Case "$GetHubInfo" '*** GATHERS HUB USERCOUNT & SHARE
HubBytes = 0
For Each User In colUsers
If Not oDCHLBots.exists(LCase(cstr(User.sName))) Then HubBytes = HubBytes+User.ibytesshared
Next
Usercount = cstr(colusers.Count)
colUsers.ItemByName(cstr(sBotName)).SendChatMessage "???", "?"+Cstr(UserCount)+"?"+cstr(HubBytes)
Case "$#UNT" '*** ACCEPT OR DISCONNECT USER BASED ON RESPONSE FROM HUB LINK
sLocUser = BeforeFirst(AfterFirst(sCurData, " "), " ")
Result = AfterFirst(AfterFirst(sCurData, " "), " ")
If Not Result = "OK" Then
colUsers.ItemByName(cstr(sLocUser)).SendData "<" & sBotName & "> " & "The user name " & sLocUser & " is already taken." & "|"
frmHub.DoEventsForMe
colUsers.ItemByName(cstr(sLocUser)).disconnect
End If
End Select
End If
End Sub
''''''''''''''''''''''''
''' String Functions '''
''''''''''''''''''''''''
Function BeforeFirst(sIn, sFirst)
BeforeFirst = LeftB(sIn, InStrB(1, sIn, sFirst) - 1)
End Function
Function AfterFirst(sIn, sFirst)
AfterFirst = RightB(sIn, LenB(sIn) - InStrB(1, sIn, sFirst) - LenB(sFirst) + 1)
End Function
Yes it is ;))
Any too say waht it does then do it in lua ;)
What does this script have that a script package of some sort doesn't have? Anything in particular? I just don't think it's worth it to convert it to Lua...
* up *