'ChatChannel 1.1 script for NMDC hub or SBHub by Gadget http://gadget.no-ip.info Dim sBotName,bPrivate,sUsers Sub Main() sBotName = "ChatChannel" bPrivate = False sUsers = "" frmHub.RegisterBotName(sBotName) On Error Resume Next Set wshShell = CreateObject("WScript.Shell") sUsers = wshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\NeoModus\Hub\ChatChannelUsers") x = wshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\NeoModus\Hub\ChatChannelMode") If x="Private" Then bPrivate=True End Sub Sub DataArival (curUser, sCurData) If Left(sCurData, 12) = "$GetNickList" Then curUser.SendData "$Hello "+CStr(sBotName)+"|$MyINFO $ALL "+Cstr(sBotName)+" 3-Way Chat (PM join to enter)$ $CHAT"+chr(8)+"$ChatChannel 1.1$"+"0"+"$|" If Left(sCurData,Len(sBotName)+6)="$To: "+sBotName+" " Then s=Mid(CStr(sCurData),InStr(CStr(sCurData),">")+2) r="" If InStr(s," ")>0 Then sCmd=Left(s,InStr(s," ")-1) sText=Mid(s,InStr(s," ")+1) Else sCmd=s End If bLeaving=False Select Case LCase(sCmd) Case "add","invite","join" If sText="" Then sText=curUser.sName If (bPrivate And Not bIsIn(curUser.sName)) And Not curUser.bOperator Then r="You are not invited on this chat" ElseIf Not colUsers.Online(CStr(sText)) Then r="User "+sText+" is not online and can't be added" ElseIf bIsIn(sText) Then r="User "+sText+" is already in "+sBotName Else If sUsers="" Then sUsers=sText Else sUsers=sUsers+"|"+sText End If Set wshShell = CreateObject("WScript.Shell") WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\NeoModus\Hub\ChatChannelUsers",sUsers,"REG_SZ" r="The user "+sText+" is joined "+sBotName End If Case "inviteall" If bPrivate Then r="Can't invite all users to private chat" ElseIf Not curUser.bOperator Then r="You can't invite all users" Else For Each oUser In colUsers If Not bIsIn(oUser.sName) Then sUsers=sUsers+"|"+oUser.sName End If Next Set wshShell = CreateObject("WScript.Shell") WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\NeoModus\Hub\ChatChannelUsers",sUsers,"REG_SZ" r="All online users have been added to "+sBotName End If Case "mode" If sText="" Then If bPrivate Then r="This chat is private, others can't join it if they are not invited" Else r="This chat is public, anyone can join it" End If ElseIf Not curUser.bOperator Then r="You can't set the mode of this chat" ElseIf Not bIsIn(curUser.sName) Then r="You are not in this chat" ElseIf LCase(sText)="public" Then bPrivate=False r="Chat mode is set to public" Set wshShell = CreateObject("WScript.Shell") WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\NeoModus\Hub\ChatChannelMode","Public","REG_SZ" ElseIf LCase(sText)="private" Then bPrivate=True r="Chat mode is set to private" Set wshShell = CreateObject("WScript.Shell") WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\NeoModus\Hub\ChatChannelMode","Private","REG_SZ" End If Case "leave","drop","remove","kick" If sText="" Then sText=curUser.sName If LCase(sText)<>LCase(curUser.sName) And Not curUser.bOperator Then r="You cant disconnect others from this chat" ElseIf Not bIsIn(curUser.sName) Then r="You are not in this chat" ElseIf Not bIsIn(sText) Then r="User "+sText+" is not in "+sBotName Else aUsers=Split(sUsers,"|") sUsers="" For i=0 To uBound(aUsers) If LCase(aUsers(i))<>LCase(sText) Then sUsers=sUsers+aUsers(i)+"|" Next If sUsers<>"" Then sUsers=Left(sUsers,Len(sUsers)-1) Set wshShell = CreateObject("WScript.Shell") WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\NeoModus\Hub\ChatChannelUsers",sUsers,"REG_SZ" r="The user "+sText+" has left "+sBotName If colUsers.Online(CStr(sText)) Then If LCase(sText)<>LCase(curUser.sName) Then colUsers.ItemByName(CStr(sText)).SendData CStr("$To: "+sText+" From: "+sBotName+" $<"+sText+"> "+s+"|") colUsers.ItemByName(CStr(sText)).SendData CStr("$To: "+sText+" From: "+sBotName+" $<"+sBotName+"> "+r+"|") End If bLeaving=True End If Case "help" r=sBotName+" commands:" r=r+vbCrLf+"join"+vbTab+vbTab+vbTab+"join the chat" r=r+vbCrLf+"leave"+vbTab+vbTab+vbTab+"leave the chat" r=r+vbCrLf+"mode"+vbTab+vbTab+vbTab+"view the chat mode" r=r+vbCrLf+"users"+vbTab+vbTab+vbTab+"view the chat users" r=r+vbCrLf+"invite [user]"+vbTab+vbTab+"invite an user" If curUser.bOperator Then r=r+vbCrLf+"inviteall"+vbTab+vbTab+"invites all online users" r=r+vbCrLf+"remove [user]"+vbTab+vbTab+"remove an user" r=r+vbCrLf+"mode [private/public]"+vbTab+"set the chat mode" End If r=r+vbCrLf+"me"+vbTab+vbTab+vbTab+"show what you are doing" r=r+vbCrLf+"help"+vbTab+vbTab+vbTab+"show this help" Case "users","list" aUsers=Split(sUsers,"|") If (bPrivate And Not bIsIn(curUser.sName)) And Not curUser.bOperator Then r="You are not invited on this chat" ElseIf uBound(aUsers)<0 Then r="There are no users in "+sBotName Else aUsers=Split(sUsers,"|") x=0 sOn="" sOff="" For i=0 To uBound(aUsers) If colUsers.Online(CStr(aUsers(i))) Then sOn=sOn+aUsers(i)+", " x=x+1 Else sOff=sOff+aUsers(i)+", " End If Next If sOn<>"" Then sOn=Left(sOn,Len(sOn)-2) If sOff<>"" Then sOff=Left(sOff,Len(sOff)-2) r="There are "+CStr(uBound(aUsers)+1)+" users ("+cStr(x)+" online) in "+sBotName+vbCrLf+"Online: "+sOn+vbCrLf+"Offline: "+sOff End If Case "me" If Not bIsIn(curUser.sName) Then r="You are not in this chat" ElseIf sText="" Then s="*"+curUser.sName+" is needing help*" Else s="*"+curUser.sName+" "+sText+"*" End If End Select aUsers=Split(sUsers,"|") If uBound(aUsers)=>0 Then If s<>"" And (bIsIn(curUser.sName) Or bLeaving) Then If LCase(sCmd)<>"me" Then s="<"+curUser.sName+"> "+s For i=0 To uBound(aUsers) If colUsers.Online(CStr(aUsers(i))) And (LCase(curUser.sName)<>LCase(aUsers(i)) Or LCase(sCmd)="me") Then colUsers.ItemByName(CStr(aUsers(i))).SendData CStr("$To: "+aUsers(i)+" From: "+sBotName+" $"+s+"|") End If Next End If If r<>"" Then If bIsIn(curUser.sName) Or bLeaving Then For i=0 To uBound(aUsers) If colUsers.Online(CStr(aUsers(i))) Then colUsers.ItemByName(CStr(aUsers(i))).SendData CStr("$To: "+aUsers(i)+" From: "+sBotName+" $<"+sBotName+"> "+r+"|") End If Next Else curUser.SendData CStr("$To: "+curUser.sName+" From: "+sBotName+" $<"+sBotName+"> "+r+"|") End If End If End If End If End Sub Function bIsIn(sUser) bIsIn=False aUsers=Split(sUsers,"|") If uBound(aUsers)=>0 Then aUsers=Split(sUsers,"|") For i=0 To uBound(aUsers) If LCase(aUsers(i))=LCase(sUser) Then bIsIn=True Next End If End Function