PtokaX forum

Archive => Archived 5.0 boards => Request for scripts => Topic started by: kEwL on 14 July, 2005, 18:26:39

Title: chatroom
Post by: kEwL on 14 July, 2005, 18:26:39
can anyone make me a chatroom script like that in sdch

see this is the code of the sdch script

Option Explicit
'===============================================================
'  Dynamic Chatroom by CRO
'  limitless amount of chatrooms with specific users
'  limitless amount of rooms for a user to be in
'  users who leave the hub will rejoin rooms upon entry
'  Each room does not have a minimum level to use.
'  The rooms can be private or public.
'  Only invited people will remain in private
'===============================================================
Const strAdmin = "CRO"         'Person who receives script errors (like that would happen :P)
Const iInviteReq = 3         'Min level to be able to invite others to private room
Const iPublicReq = 5         'Min level to make the room public
Const iPrivateReq = 5         'Min level to make the room private
Const iKickReq = 5         'Min level to remove users from the room

Dim oPrivateRoom, oPublicRoom

Sub Main
  Set oPrivateRoom = CreateObject("Scripting.Dictionary")
  Set oPublicRoom = CreateObject("Scripting.Dictionary")
  If Not colCommands.Exists("createroom") Then colCommands.Add 330, "createroom", "Activated & Add Chat 1 ", 6, True
  If Not colCommands.Exists("deleteroom") Then colCommands.Add 330, "deleteroom", "Deactivated & Del Chat 1", 6, True
  If Not colCommands.Exists("joinroom") Then colCommands.Add 330, "joinroom", "Activated & Add Chat 2 ", 1, True
  If Not colCommands.Exists("deleteall") Then colCommands.Add 330, "deleteall", "Del All ChatBots ", 10, True
End Sub

Sub UnloadMain
  Set oPrivateRoom = Nothing
  Set oPublicRoom = Nothing
  colCommands.Remove("createroom")
  colCommands.Remove("deleteroom")
  colCommands.Remove("joinroom")
  colCommands.Remove("deleteall")
End Sub

Sub CustComArrival(curUser, objCommand, sCurData, blnMC)
  Dim aData
  aData = Split(sCurData, " ")
  If objCommand.ID = 330 Then
    Select Case objCommand.Name
      Case "createroom"
   If UBound(aData) < 1 Then
     curUser.SendChat CStr(Settings.BotName), "Missing a roomname"
   Else
     If Not oPrivateRoom.Exists(aData(1)) Then
       If colUsers.Online(CStr(aData(1))) Then
         curUser.SendChat CStr(Settings.BotName), "This name is taken by a user"
       Else
         oPrivateRoom.Add aData(1), CStr(curUser.sName & ", ")
         curUser.SendData "$Hello " & aData(1) & "|"
         curUser.SendData "$OpList " & aData(1) & "|"
         curUser.SendPrivate CStr(aData(1)), "Welcome to the chat"
       End If
     Else
       curUser.SendChat CStr(Settings.BotName), "This room already exists"
     End If
   End If
      Case "deleteroom"
   If UBound(aData) < 1 Then
     curUser.SendChat CStr(Settings.BotName), "Missing a roomname"
   Else
     If oPrivateRoom.Exists(aData(1)) Then
       oPrivateRoom.Remove(aData(1))
       colUsers.SendToAll "$Quit " & aData(1) & "|"
     Else
       curUser.SendChat CStr(Settings.BotName), "This room does not exist"
     End If
     If oPublicRoom.Exists(aData(1)) Then oPublicRoom.Remove(aData(1))
   End If
      Case "joinroom"
   If UBound(aData) < 1 Then
     curUser.SendChat CStr(Settings.BotName), "Missing a roomname"
   Else
     If oPublicRoom.Exists(aData(1)) Then
       oPublicRoom.Item(aData(1)) = oPublicRoom.Item(aData(1)) & CStr(curUser.sName & ", ")
       curUser.SendPrivate CStr(aData(1)), "Welcome to the chat"
     Else
       curUser.SendChat CStr(Settings.BotName), "This room does not exist/is not public"
     End If
   End If
      Case "deleteall"
   Dim aRooms, i
   aRooms = oPrivateRoom.Keys
   For i = 0 to UBound(aRooms)
     colUsers.SendToAll "$Quit " & aRooms(i) & "|"
   Next
   aRooms = oPublicRoom.Keys
   For i = 0 to UBound(aRooms)
     colUsers.SendToAll "$Quit " & aRooms(i) & "|"
   Next
   oPrivateRoom.RemoveAll
   oPublicRoom.RemoveAll
   curUser.SendChat CStr(Settings.BotName), "All rooms have been deleted and removed"
    End Select
  End If
End Sub

Function PreDataArrival(curUser, sData)
  If LeftB(sData, 6) = "$To" Then
    Dim sRoom
    sRoom = BetweenFirst(sData, " ", " ")
    If oPublicRoom.Exists(sRoom) Then
      If InstrB(lcase(oPublicRoom.Item(sRoom)), lcase(curUser.sName & ", ")) Then
   ChatRoom curUser, sRoom, sData
      Else
   If InstrB(lcase(oPrivateRoom.Item(sRoom)), lcase(curUser.sName & ", ")) Then
     ChatRoom curUser, sRoom, sData
   Else
     oPublicRoom.Item(sRoom) = oPublicRoom.Item(sRoom) & CStr(curUser.sName & ", ")
     ChatRoom curUser, sRoom, sData
   End If
      End If
      sData = ""
    Else
      If oPrivateRoom.Exists(sRoom) Then
   If InstrB(lcase(oPrivateRoom.Item(sRoom)), lcase(curUser.sName & ", ")) Then ChatRoom curUser, sRoom, sData
   sData = ""
      End If
    End If
  End If
  PreDataArrival = sData
End Function

Sub UserConnected(curUser)
  Dim aUsers, aRooms, i
  aUsers = oPrivateRoom.Items
  aRooms = oPrivateRoom.Keys
  For i = 0 to UBound(aUsers)
    If InstrB(lcase(aUsers(i)), lcase(curUser.sName)) Then
      curUser.SendData "$Hello " & aRooms(i) & "|"
      curUser.SendData "$OpList " & aRooms(i) & "|"
      curUser.SendPrivate CStr(aRooms(i)), "Welcome to the chat"
    End If
  Next
  aRooms = oPublicRoom.Keys
  For i = 0 to UBound(aRooms)
    curUser.SendData "$Hello " & aRooms(i) & "|"
    curUser.SendData "$OpList " & aRooms(i) & "|"
    If InstrB(lcase(aUsers(i)), lcase(curUser.sName)) Then curUser.SendPrivate CStr(aRooms(i)), "Welcome to the chat"
  Next
End Sub

Sub RegConnected(curUser)
  UserConnected curUser
End Sub

Sub OpConnected(curUser)
  UserConnected curUser
End Sub

Sub ChatRoom(curUser, sRoom, sData)
  Dim aUser, aData, aCommand, i, j
  sData = AfterFirst(sData, "> ")
  If AscW(CStr(sData)) = AscW(CStr(Settings.CPrefix)) Then
    aCommand = Split(sData, " ")
    Select Case CStr(AfterFirst(aData(0), Settings.CPrefix))
      Case "invite"
   If curUser.Class >= iPublicReq Then
     oPrivateRoom.Item(sRoom) = oPrivateRoom.Item(sRoom) & AfterFirst(sData, " ") & ", "
     aData = Split(AfterFirst(sData, " "), ", ")
     aUser = Split(oPrivateRoom.Item(sRoom), ", ")
     For i = 0 to UBound(aData)
       If colUsers.Online(CStr(aData(i))) Then
         colUsers.ItemByName(CStr(aData(i))).SendData "$Hello " & sRoom & "|"
         colUsers.ItemByName(CStr(aData(i))).SendData "$OpList " & sRoom & "|"
         colUsers.ItemByName(CStr(aData(i))).SendPrivate CStr(sRoom), "Welcome to the room."
       End If
     Next
   Else
     curUser.SendPrivate CStr(sRoom), "You do not have the authority to do that."
   End If
      Case "leave"
   oPrivateRoom.Item(sRoom) = Replace(oPrivateRoom.Item(sRoom), curUser.sName & ", ", "")
   If oPublicRoom.Exists(sRoom) Then oPublicRoom.Item(sRoom) = Replace(oPublicRoom.Item(sRoom), curUser.sName & ", ", "")
   If Not oPublicRoom.Exists(sRoom) Then curUser.SendData "$Quit " & sRoom & "|"
      Case "kick"
   If curUser.Class >= iKickReq Then
     oPrivateRoom.Item(sRoom) = Replace(oPrivateRoom.Item(sRoom), AfterFirst(sData, " ") & ", ", "")
     If oPublicRoom.Exists(sRoom) Then oPublicRoom.Item(sRoom) = Replace(oPublicRoom.Item(sRoom), AfterFirst(sData, " ") & ", ", "")
     If Not oPublicRoom.Exists(sRoom) Then curUser.SendData "$Quit " & sRoom & "|"
   Else
     curUser.SendPrivate CStr(sRoom), "You do not have the authority to do that."
   End If
      Case "public"
   If curUser.Class >= iPublicReq Then
     colUsers.SendToAll "$Hello " & sRoom & "|"
     colUsers.SendToAll "$OpList " & sRoom & "|"
     oPublicRoom.Add sRoom, ""
   Else
     curUser.SendPrivate CStr(sRoom), "You do not have the authority to do that."
   End If
      Case "private"
   If curUser.Class >= iPrivateReq Then
     colUsers.SendToAll "$Quit " & sRoom & "|"
     oPublicRoom.Remove(sRoom)
     aUser = Split(oPrivateRoom.Item(sRoom), ", ")
     For i = 0 to UBound(aData)
       If colUsers.Online(CStr(aData(i))) Then
         colUsers.ItemByName(CStr(aData(i))).SendData "$Hello " & sRoom & "|"
         colUsers.ItemByName(CStr(aData(i))).SendData "$OpList " & sRoom & "|"
       End If
     Next
   Else
     curUser.SendPrivate CStr(sRoom), "You do not have the authority to do that."
   End If
      Case "list"
   curUser.SendPrivate CStr(sRoom), CStr("Private users: " & oPrivateRoom.Item(sRoom))
   If oPublicRoom.Exists(sRoom) Then curUser.SendPrivate CStr(sRoom), CStr("Public users: " & oPublicRoom.Item(sRoom))
      Case Else
   curUser.SendPrivate CStr(sRoom), CStr("This is not a command")
    End Select
    sData = ""
  End If
  aUser = Split(oPrivateRoom.Item(sRoom), ", ")
  For i = 0 to UBound(aUser)
    If colUsers.Online(CStr(aUser(i))) Then
      If Not LCase(curUser.sName) = LCase(aUser(i)) and Not sData = "" Then colUsers.ItemByName(CStr(aUser(i))).SendData CStr("$To: " & aUser(i) & " From: " & sRoom & " $<" & curUser.sName & "> " & sData & "|")
    End If
  Next
  If oPublicRoom.Exists(sRoom) Then
    aUser = Split(oPublicRoom.Item(sRoom), ", ")
    For i = 0 to UBound(aUser)
      If colUsers.Online(CStr(aUser(i))) Then
   If Not LCase(curUser.sName) = LCase(aUser(i)) and Not sData = "" Then colUsers.ItemByName(CStr(aUser(i))).SendData CStr("$To: " & aUser(i) & " From: " & sRoom & " $<" & curUser.sName & "> " & sData & "|")
      End If
    Next
  End If
End Sub

Sub Error(Line)
  FileAccess.AppendFile FileAccess.AppPath & "\Scripts\DynamicChat_Error.log", Now & "|" & Err.Number & "|" & Err.Description & "|" & Line & "|"
  If colUsers.Online(cstr(strAdmin)) Then colUsers.ItemByName(cstr(strAdmin)).SendPrivate Settings.HubName & " DynamicChat_Error ", Now & "-" & "Error occured at line " & Line & " (Number: " & Err.Number & "; " & Err.Description & ")"
End Sub

Title:
Post by: Dessamator on 14 July, 2005, 21:12:10
it already exists, try chatrooms by tezlo
Title:
Post by: kEwL on 15 July, 2005, 06:45:33
i tried that one but i want like this one where rooms are made public and private and ppl can join on their room by +joinroom
Title:
Post by: Dessamator on 15 July, 2005, 10:07:04
rooms can be made private or public or u need to do is create the room, and specify each profile, or use the chatroom script by Nerbos, it had that function !
Title:
Post by: kEwL on 15 July, 2005, 11:05:02
ok can u add the joinroom cmd in the chatroom script by tezlo coz i m running a hub on sdch and my users are used to it so can u pls
Title:
Post by: Dessamator on 15 July, 2005, 13:00:18
u dont need to write any command to join a room, simply just send a msg to the bot !