All pastes #674770 Raw Edit

Stuff

public text v1 · immutable
#674770 ·published 2007-08-29 14:52 UTC
rendered paste body
' Done - 08-28-07
Private Sub lstOnlineUsers_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 2 Then PopupMenu mPop
End Sub

Private Sub MDIForm_Load()
    Randomize
    intSeed = Rnd(Int(100) + 1)
    frmDebugger.lblCurrNumUsers.Caption = idxConnection
    frmOptions.Hide
    
    If sckServer(0).State = 0 Then
        mFileStop.Enabled = False
        lblStatus.Caption = "Server Offline"
        mPopPrivmsg.Enabled = False
    Else
        mFileStart.Enabled = True
        lblStatus.Caption = "Server Online"
        mPopPrivmsg.Enabled = True
    End If
    
    ' We need our name from the registry
    strSysopNickname = GetSetting("CyParty Server", "Options", "Sysop Name")

    frmOptions.txtSysopName.Text = strSysopNickname
    
    Debug.Print "Retreived Sysop Nick as " & strSysopNickname
End Sub

Private Sub MDIForm_Unload(Cancel As Integer)
    Unload Me
    End
End Sub

Private Sub mFileStart_Click()
    ' We must begin listening for connections...
    
    sckServer(0).Close                      ' Close current connection
    sckServer(0).LocalPort = 9000           ' Port Number we will listen on.
    sckServer(0).Listen                     ' Start Listening
    
    lblStatus.Caption = "Server Online"     ' Update Status

    mFileStop.Enabled = True                ' We are running, we can stop server now
    mFileStart.Enabled = False              ' We are running, can't start server if it's running
    mPopPrivmsg.Enabled = True              ' We are running, allow messages
    
    lstOnlineUsers.AddItem strSysopNickname ' Add our nickname we got from registry to listbox
End Sub

Private Sub mFileStop_Click()
    sckServer(0).Close                      ' Close current connections
    lblStatus.Caption = "Server Offline"    ' Update Status
    
    mFileStop.Enabled = False               ' We arn't running, no need to stop server
    mFileStart.Enabled = True               ' We arn't running, we can start server
    mPopPrivmsg.Enabled = False             ' We arn't running, no need to message users
    
    lstOnlineUsers.RemoveItem 0             ' Remove current users (Clean up with a Array)
End Sub

Private Sub mPopPrivmsg_Click()
    frmPrivmsg.Show
End Sub

Private Sub mToolsOptions_Click()
    frmOptions.Show
End Sub

Private Sub mViewDebugger_Click()
    frmDebugger.Show
End Sub

Private Sub sckServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)
    ' Allows more than one user to connect.
    idxConnection = idxConnection + 1           ' Increment Index
    frmDebugger.lblCurrNumUsers.Caption = idxConnection
    frmDebugger.lstData.AddItem "Session ID #" & intSeed
    frmDebugger.lstData.AddItem "Index #" & idxConnection
    Load sckServer(idxConnection)               ' Load new Socket with our new Index
    frmDebugger.lstData.AddItem "Current Socket Index: " & idxConnection
    sckServer(idxConnection).Accept requestID   ' Accept connection
    
    sckServer(idxConnection).SendData "LOGON" & ".:." & strSysopNickname
    frmDebugger.lstData.AddItem "Sending data to " & sckServer(idxConnection).RemoteHostIP & " with the data: " & strSysopNickname
End Sub

Private Sub sckServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    Dim strInText As String, intSocket As Integer
    
    sckServer(Index).GetData strInText                          ' What is coming in?
    
    For intSocket = 0 To idxConnection Step 1                   ' How many clients connected?
    If sckServer(intSocket).State = sckConnected Then           ' If we are connected?
        sckServer(intSocket).SendData strInText                 ' Resend the data
        DoEvents
    End If
    Next intSocket
    
    strParsed() = Split(strInText, ".:.")                       ' Split incoming string
    
    Select Case strParsed(0)
        Case "LOGOFF"
            lstOnlineUsers.RemoveItem strParsed(1)
            idxConnection = idxConnection - 1
            frmDebugger.lblCurrNumUsers.Caption = idxConnection
        Case "LOGON"
            lstOnlineUsers.AddItem strParsed(1)                 ' Add Nickname to listbox
        Case "PRIVMSG"
            frmPrivmsg.Show
            frmPrivmsg.txtPrivmsg.Text = _
            frmPrivmsg.txtPrivmsg.Text & strParsed(1) & ": " & strParsed(2) & vbCrLf
        Case Else                                               ' do a carriage return and line feed.
            MsgBox "Unknown Header", vbCritical, "Header Unknown"
    End Select
End Sub