Значит суть просьбы такая.
 
У меня есть один незаконченный скриптик для бота( незакончен он на 5% =) ).
 
Терминалогия там немного отличается от стандартного вбс, но все остальное такое же и написано он разумеется на вбс.
 
Вот собственно сам скрипт:
 
 
'dotaclan
 
'1.0
 
 
Private Const db_cTypeBoolean = 11
 
Private Const db_cTypeCurrency = 6
 
Private Const db_cTypeDate = 7
 
Private Const db_cTypeDouble = 5
 
Private Const db_cTypeInteger = 3
 
Private Const db_cTypeText = 202
 
Private Const db_cModeReadOnly = 1
 
Private Const db_cModeForUpdate = 2
 
Public pGameStatus
 
Public pChallenger
 
Public pChallenged
 
Public pTeams
 
Public pMode
 
Public runme
 
const forReading = 1
 
const forWriting = 2
 
const forAppending = 8
 
dim fso
 
Set fso = CreateObject("Scripting.FileSystemObject")
 
dim db
 
Set db = New db_clsDatabase
 
dim db_path
 
db_path = BotPath() & "plugins\dotaclan.mdb"
 
 
Sub dotaclan_event_load()
 
  TimerInterval "dotaclan", "enoughppl", 5
 
  TimerEnabled "dotaclan", "enoughppl", False
 
  Dim t, rs, l
 
  pGameStatus = 0
 
  If Not db.Exists(db_path) Then
 
    If Not db.Create(db_path) Then 
 
      AddChat vbRed, "Could not create database!"
 
      Exit Sub
 
    End If
 
  Else
 
    If Not db.Open(db_path) Then 
 
      AddChat vbRed, "Could not open database!"
 
      Exit Sub
 
    End If
 
  End If
 
  If db.IsOpen() Then 
 
    AddChat vbGreen, "Database opened."
 
  Else
 
    Exit Sub
 
  End If
 
 
  If Not db.TableExists("Players") Then
 
    If db.CreateTable("Players") Then 
 
      AddChat vbGreen, "Created Table Players"
 
    Else
 
      AddChat vbRed, "Could not create Table Players"
 
      Exit Sub
 
    End If
 
  End If
 
 
  If Not db.TableExists("Captains") Then
 
    If db.CreateTable("Captains") Then 
 
      AddChat vbGreen, "Created Table Captains"
 
    Else
 
      AddChat vbRed, "Could not create Table Captains"
 
      Exit Sub
 
    End If
 
  End If
 
 
  If Not db.TableExists("Records") Then
 
    If db.CreateTable("Records") Then 
 
      AddChat vbGreen, "Created Table Records"
 
    Else
 
      AddChat vbRed, "Could not create Table Records"
 
      Exit Sub
 
    End If
 
  End If
 
 
  Set t = db.Table("Players")
 
  If Not db.ColumnExists(t.Name, "Name") Then
 
    t.Columns.Append "Name", db_cTypeText, 40
 
    AddChat vbGreen, "Created Column Name in Table Players"
 
  End If
 
  If Not db.ColumnExists(t.Name, "Captain") Then
 
    t.Columns.Append "Captain", db_cTypeText, 40
 
    AddChat vbGreen, "Created Column Captain in Table Players"
 
  End If
 
 
  Set t = db.Table("Captains")
 
  If Not db.ColumnExists(t.Name, "Name") Then
 
    t.Columns.Append "Name", db_cTypeText, 40
 
    AddChat vbGreen, "Created Column Name in Table Captains"
 
  End If
 
 
  Set t = db.Table("Records")
 
  If Not db.ColumnExists(t.Name, "Name") Then
 
    t.Columns.Append "Name", db_cTypeText, 40
 
    AddChat vbGreen, "Created Column Name in Table Records"
 
  End If
 
  If Not db.ColumnExists(t.Name, "Experience") Then
 
    t.Columns.Append "Experience", db_cTypeText, 40
 
    AddChat vbGreen, "Created Column Experience in Table Records"
 
  End If
 
  If Not db.ColumnExists(t.Name, "Wins") Then
 
    t.Columns.Append "Wins", db_cTypeText, 40
 
    AddChat vbGreen, "Created Column Wins in Table Records"
 
  End If
 
  If Not db.ColumnExists(t.Name, "Losses") Then
 
    t.Columns.Append "Losses", db_cTypeText, 40
 
    AddChat vbGreen, "Created Column Losses in Table Records"
 
  End If
 
 
  AddChat vbWhite, "Deleting all records from Captains ..."
 
  l = db.ExecuteQuery("DELETE FROM Captains")
 
  AddChat vbWhite, "Deleted " & l & " records."
 
  AddChat vbWhite, "Deleting all records from Players ..."
 
  l = db.ExecuteQuery("DELETE FROM Players")
 
  AddChat vbWhite, "Deleted " & l & " records."
 
 
 
  set File = fso.OpenTextFile("users.txt", ForReading, 1)
 
  x = 0
 
  Do Until File.AtEndOfStream
 
    Data = File.ReadLine
 
    Data = Split(Data, " ", 2)
 
 
    If lcase(Data(1)) = "q" Then
 
      AddChat vbWhite, "Inserting Captain " & Data(0) & " ..."
 
      l = db.ExecuteQuery("INSERT INTO Captains (Name) VALUES ('" & Data(0) & "')")
 
      x = x + 1
 
    End If
 
    If InStr(Data(1), " ") > 0 Then
 
      Datb = Split(Data(1), " ", 2)
 
      AddChat vbWhite, "Inserting Captain " & Data(0) & " ..."
 
      l = db.ExecuteQuery("INSERT INTO Captains (Name) VALUES ('" & Data(0) & "')")
 
      x = x + 1
 
    End If
 
  Loop
 
  File.Close
 
  AddChat vbRed, "I have added " & x & " Captain(s) to my list."
 
End Sub
 
 
Sub dotaclan_Event_WhisperFromUser(Username, Flags, Message)
 
  dotaclan_Command Username, Message, 3
 
End Sub
 
Sub dotaclan_Event_usertalk(Username, Flags, Message, Ping)
 
  dotaclan_Command Username, Message, 1
 
End Sub
 
 
Sub dotaclan_Command(Username, Message, From)
 
  if left(message, 1) = BotVars.Trigger Then
 
    getdbentry Username, myAccess, myFlags
 
    if IsCaptain(Username) = 1 Then
 
      if lcase(left(message, 11)) = BotVars.Trigger & "challenge " Then
 
        dotaclan_challenge Username, Message
 
      elseif lcase(left(message, 8)) = BotVars.Trigger & "result " Then
 
        dotaclan_result Username, Message
 
      elseif lcase(left(message, 7)) = BotVars.Trigger & "accept" Then
 
        dotaclan_accept Username
 
      elseif lcase(left(message, 5)) = BotVars.Trigger & "deny" Then
 
        dotaclan_deny Username
 
      elseif lcase(left(message, 6)) = BotVars.Trigger & "teams" Then
 
        dotaclan_teams From, Username
 
      elseif lcase(left(message, 8)) = BotVars.Trigger & "players" Then
 
        dotaclan_players Username
 
      elseif lcase(left(message, 8)) = BotVars.Trigger & "leaver " Then
 
        dotaclan_leaver Message
 
      elseif lcase(left(message, 5)) = BotVars.Trigger & "pool" Then
 
        dotaclan_pool
 
      elseif lcase(left(message, 6)) = BotVars.Trigger & "pick " Then
 
        dotaclan_pick Username, Message
 
      elseif lcase(left(message, 7)) = BotVars.Trigger & "cancel" Then
 
        dotaclan_cancel Username
 
      end if
 
    End If
 
    If myAccess > 9 Then
 
      if lcase(left(message, 5)) = BotVars.Trigger & "host" Then
 
        dotaclan_host Username
 
      elseif lcase(left(message, 6)) = BotVars.Trigger & "top10" Then
 
        dotaclan_top10
 
      elseif lcase(left(message, 6)) = BotVars.Trigger & "rank " Then
 
        dotaclan_rankother Message
 
      end if
 
    End If
 
    If lcase(left(message, 7)) = BotVars.Trigger & "signin" Then
 
      dotaclan_signin Username
 
    Elseif lcase(left(message, 8)) = BotVars.Trigger & "signout" Then
 
      dotaclan_signout Username
 
    Elseif lcase(message) = BotVars.Trigger & "rank" Then
 
      dotaclan_rank Username
 
    End If
 
  Else
 
    Exit Sub
 
  End If
 
End Sub
 
 
Sub dotaclan_challenge(Challenger, Message)
 
  Data = Split(Message, " ")
 
  Challenged = Data(1)
 
  Teams = Data(2)
 
  Mode = Data(3)
 
  AddChat vbWhite, "Challenged = " & Challenged
 
  AddChat vbWhite, "Challenger = " & Challenger
 
  If GameStatus = 1 Then
 
    AddQ "Sorry, but I am already in charge of a game.  Please wait for it to finish."
 
  End If
 
  If lcase(Challenged) = lcase(Challenger) Then
 
    AddQ "Can't challenge yourself!!"
 
    Exit Sub
 
  Else
 
    Addchat vbwhite, "Not Challenging self, continue."
 
  End If
 
  If IsCaptain(Challenged) = 1 Then
 
    AddChat vbWhite, Challenged & " is a captain, and is challengable."
 
    If lcase(Teams) <> "4v4" Then
 
      If lcase(Teams) <> "5v5" Then
 
        If lcase(Teams) <> "8" Then
 
          If lcase(Teams) <> "10" Then
 
            AddQ "Only 5v5 or 4v4 teams are allowed!"
 
            Exit Sub
 
          End If
 
        End If
 
      End If
 
    End If
 
    If lcase(Mode) <> "ap" Then
 
      If lcase(Mode) <> "ar" Then
 
        If lcase(Mode) <> "mr" Then
 
          If lcase(Mode) <> "tr" Then
 
            If lcase(Mode) <> "lm" Then
 
              If lcase(Mode) <> "rd" Then
 
                AddQ "Only the following modes are allowed...ap, ar, mr, tr, lm, rd"
 
                Exit Sub
 
              End if
 
            End If
 
          End If
 
        End If
 
      End If
 
    End If
 
    If InChannel(Challenged) = 1 Then
 
      AddChat vbwhite, "In Channel"
 
    Else
 
      AddQ "Challenged captain must be in the channel!"
 
      Exit Sub
 
    End If
 
    pGameStatus = 1
 
    pChallenger = Challenger
 
    pChallenged = Challenged
 
    pTeams = Teams
 
    pMode = Mode
 
    AddQ "/me " & pChallenger & " has challenged " & pChallenged & " for a Gather game " & pTeams & " Mode -" & pMode
 
    AddQ "/w " & pChallenged & " " & pChallenger & " has challenge YOU for a Gather Game " & pTeams & " Mode -" & pMode & ", Type " & BotVars.Trigger & "accept to accept the challenge or " & BotVars.Trigger & "deny to cancel the challenge."
 
  Else
 
    AddChat vbRed, "Not a captain, canceling request."
 
    AddQ Challenged & " is not a captain, and may not be challenged."
 
    Exit Sub
 
  End If
 
End Sub
 
 
Sub dotaclan_result(Username, Message)
 
  If pGameStatus = 0 Then
 
    AddQ "There is no game to report on!"
 
    Exit Sub
 
  End If
 
End Sub
 
 
Sub dotaclan_accept(Username)
 
  If pGameStatus = 0 Then
 
    AddQ "You have not been challenged!"
 
    Exit Sub
 
  End If
 
  If lcase(Username) = lcase(pChallenged) Then
 
    AddChat vbWhite, "Inserting 2 captains via recordset ..."
 
    Set rs = db.OpenRecordSet("Players", db_cModeForUpdate)
 
    rs.AddNew
 
    rs("Name") = pChallenger
 
    rs("Captain") = "Self"
 
    rs.Update
 
    rs.AddNew
 
    rs("Name") = pChallenged
 
    rs("Captain") = "Self"
 
    rs.Update
 
    rs.Close()
 
    AddChat vbWhite, "2 Captains inserted, Done!"
 
    TimerEnabled "dotaclan", "enoughppl", True
 
    AddQ "/me " & pchallenged & " has accepted " & pchallenger & "'s challenge for a Gather Game " & pTeams & " Mode -" & pMode & ", Type " & BotVars.Trigger & "signin to sign in the Gather Game or " & BotVars.Trigger & "signout to sign out of the Gather Game."
 
  End If
 
End Sub
 
 
Sub dotaclan_deny(Username)
 
  If pGameStatus = 0 Then
 
    AddQ "You have not been challenged!"
 
    Exit Sub
 
  End If
 
  If lcase(Username) = lcase(pChallenged) Then
 
    AddQ "/me " & pchallenged & " has declined " & pchallenger &"'s challenge for a Gather Game."
 
    pGameStatus = 0
 
    pChallenger = 0
 
    pChallenged = 0
 
    pTeams = 0
 
    pMode = 0
 
    TimerEnabled "dotaclan", "enoughppl", False
 
  End If
 
End Sub
 
 
Sub dotaclan_teams(Whispered, Username)
 
  If pGameStatus = 0 Then
 
    AddQ "There are no teams to report!"
 
    Exit Sub
 
  End If
 
  x = "Players on " & pChallenger & "'s team: "
 
  Set rs = db.OpenRecordSet("SELECT * FROM Players ORDER BY Captain", db_cModeReadOnly)
 
  Do While Not rs.EOF
 
    If rs("Captain") = pChallenger Then
 
      x = x & rs("Name") & ", "
 
    End If
 
    rs.MoveNext
 
  Loop
 
  DSP Whispered, x, Username, vbWhite
 
  x = "Players on " & pChallenged & "'s team: "
 
  Set rs = db.OpenRecordSet("SELECT * FROM Players ORDER BY Captain", db_cModeReadOnly)
 
  Do While Not rs.EOF
 
    If rs("Captain") = pChallenged Then
 
      x = x & rs("Name") & ", "
 
    End If
 
    rs.MoveNext
 
  Loop
 
  DSP Whispered, x, Username, vbWhite
 
  x = "Players on no team: "
 
  Set rs = db.OpenRecordSet("SELECT * FROM Players ORDER BY Captain", db_cModeReadOnly)
 
  Do While Not rs.EOF
 
    If rs("Captain") = "None" Then
 
      x = x & rs("Name") & ", "
 
    End If
 
    rs.MoveNext
 
  Loop
 
  DSP Whispered, x, Username, vbWhite
 
End Sub
 
 
Sub dotaclan_players(Username)
 
  If pGameStatus = 0 Then
 
    AddQ "There are no players to report!"
 
    Exit Sub
 
  End If
 
  x = "Players on your team: "
 
  Set rs = db.OpenRecordSet("SELECT * FROM Players ORDER BY Captain", db_cModeReadOnly)
 
  Do While Not rs.EOF
 
    If rs("Captain") = Username Then
 
      x = x & rs("Name") & ", "
 
    End If
 
    rs.MoveNext
 
  Loop
 
  DSP 1, x, Username, vbWhite
 
End Sub
 
 
Sub dotaclan_leaver(Message)
 
  If pGameStatus = 0 Then
 
    AddQ "There are no leavers to report!"
 
    Exit Sub
 
  End If
 
End Sub
 
 
Sub dotaclan_pool()
 
  If pGameStatus = 0 Then
 
    AddQ "There are no players to report!"
 
    Exit Sub
 
  End If
 
  x = "Players: "
 
  Set rs = db.OpenRecordSet("SELECT * FROM Players ORDER BY Name", db_cModeReadOnly)
 
  Do While Not rs.EOF
 
    if rs("Captain") = "None" Then
 
      x = x & rs("Name") & ", "
 
    End If
 
    rs.MoveNext
 
  Loop
 
  DSP 1, x, pChallenger, vbWhite
 
End Sub
 
 
Sub dotaclan_pick(Username, Message)
 
  If pGameStatus = 0 Then
 
    AddQ "There is no game to pick for!"
 
    Exit Sub
 
  End If
 
'  If runme = 1 Then
 
'    Exit Sub
 
'  End If
 
'  If lcase(Username) <> lcase(pChallenged) Then
 
'    If lcase(Username) <> lcase(pChallenger) Then
 
'      Exit Sub
 
'    End If
 
'  End If
 
  Msg = Split(Message, " ")
 
  If SignedUp(Msg(1)) = 1 Then
 
    
 
    db.ExecuteQuery("DELETE FROM Players WHERE Name='" & capUsernames(Msg(1)) & "'")
 
    Set rs = db.OpenRecordSet("Players", db_cModeForUpdate)
 
    rs.AddNew
 
    rs("Name") = capUsernames(Msg(1))
 
    rs("Captain") = Username
 
    rs.Update
 
    rs.Close()
 
    Exit Sub
 
    AddQ "/me " & Username & " has picked " & Msg(1)
 
  End If
 
End Sub
 
 
Sub dotaclan_cancel(Username)
 
  If pGameStatus = 0 Then
 
    AddQ "There is nothing to cancel!"
 
    Exit Sub
 
  End If
 
  If lcase(Username) <> lcase(pChallenger) Then
 
    If lcase(Username) <> lcase(pChallenged) Then
 
      Exit Sub
 
    End If
 
  End If
 
  AddChat vbWhite, "Deleting all records from Players ..."
 
  l = db.ExecuteQuery("DELETE FROM Players")
 
  AddChat vbWhite, "Deleted " & l & " records."
 
  AddQ "/me " & Username & " has CANCELED the Gather Game."
 
  pGameStatus = 0
 
  pChallenger = 0
 
  pChallenged = 0
 
  pTeams = 0
 
  pMode = 0
 
  TimerEnabled "dotaclan", "enoughppl", False
 
End Sub
 
 
Sub dotaclan_host(Username)
 
  If pGameStatus = 0 Then
 
    AddQ "There is nothing to host!"
 
    Exit Sub
 
  End If
 
End Sub
 
 
Sub dotaclan_top10()
 
AddQ "Top 10"
 
End Sub
 
 
Sub dotaclan_rankother(Message)
 
AddQ "Checking the rank of another user"
 
End Sub
 
 
Sub dotaclan_signin(Username)
 
  If pGameStatus = 0 Then
 
    AddQ "There is nothing to signin to!"
 
    Exit Sub
 
  End If
 
  If SignedUp(Username) = 0 Then
 
    AddQ "/me " & Username & " has signed into the Gather Game."
 
    Set rs = db.OpenRecordSet("Players", db_cModeForUpdate)
 
    rs.AddNew
 
    rs("Name") = Username
 
    rs("Captain") = "None"
 
    rs.Update
 
    rs.Close
 
  Else
 
    Exit Sub
 
  End If
 
End Sub
 
 
Sub dotaclan_signout(Username)
 
  If pGameStatus = 0 Then
 
    AddQ "There is nothing to sign out of!"
 
    Exit Sub
 
  End If
 
  If SignedUp(Username) = 1 Then
 
    AddQ "/me " & Username & " has signed out of the Gather Game."
 
    db.ExecuteQuery("DELETE FROM Players WHERE Name='" & Username & "'")
 
  Else
 
    Exit Sub
 
  End If
 
End Sub
 
 
Sub dotaclan_rank(Username)
 
AddQ "Checking the rank of self"
 
End Sub
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Sub dotaclan_enoughppl_Timer()
 
runme = 0
 
'  Set rs = db.OpenRecordSet("SELECT * FROM Players ORDER BY Name", db_cModeReadOnly)
 
'  x = 0
 
'  Do While Not rs.EOF
 
'    AddChat vbWhite, rs("Name") & " " & rs("Captain")
 
'    x = x + 1
 
'    rs.MoveNext
 
'  Loop
 
'  If pTeams = "5v5" Then
 
'    TeamsToCompare = "10"
 
'  Elseif pTeams = "4v4" Then
 
'    TeamsToCompare = "8"
 
'  Else
 
'    TeamsToCompare = pTeams
 
'  End If
 
'  x = x + 1
 
'  If TeamsToCompare < x Then
 
'    addchat vbred, "passed teamstocompare < x"
 
'    If runme = 1 Then
 
'      AddQ "/me Enough players have signed up, picking teams has been allowed!"
 
'      runme = 0
 
'      Addchat vbred, "runme = 0, passed runme = 1"
 
'    End If
 
'  ElseIf runme = 0 Then
 
'    addchat vbred, "passed runme = 0 and teamstocompare > x"
 
'    AddQ "/me Until " & TeamsToCompare & " people have signed up, picking teams has been disallowed!"
 
'    runme = 1
 
'  End If
 
End Sub
 
 
'Sub dotaclan_teamfull_Timer()
 
 
 
 
 
 
 
 
 
 
Function capUsernames(User) '// make sure capitalizaton of usernames in message matches usernames in channel list
 
 
For i = 1 to GetInternalUserCount()
 
  nameInChan = GetNameByPosition(i)
 
  If LCase(User) = LCase(nameInChan) Then
 
    capUsernames = nameInChan
 
  End If
 
Next
 
End Function
 
 
Function UserExists(Username)
 
  Set rs = db.OpenRecordSet("SELECT * FROM Records ORDER BY Name", dbc_ModeReadOnly)
 
  AddChat vbWhite, "Searching for a player ..."
 
  rs.MoveFirst
 
  rs.Find "Name='" & Username & "'"
 
  If Not rs.EOF Then
 
    AddChat vbWhite, "Found player!"
 
    UserExists = 1
 
  Else
 
    AddChat vbRed, "Could not find player!"
 
    UserExists = 0
 
  End If
 
End Function
 
 
 
Function SignedUp(Username)
 
  Set rs = db.OpenRecordSet("SELECT * FROM Players ORDER BY Name", db_cModeReadOnly)
 
  AddChat vbWhite, "Searching for a player ..."
 
  rs.MoveFirst
 
  rs.Find "Name='" & Username & "'"
 
  If Not rs.EOF Then
 
    AddChat vbWhite, "Found player!"
 
    SignedUp = 1
 
  Else
 
    AddChat vbRed, "Could not find player!"
 
    SignedUp = 0
 
  End If
 
End Function
 
 
Function InChannel(Username)
 
  Addchat vbwhite, "Searching for a user in the channel ..."
 
  State = GetInternalDataByUsername(Username, 0)
 
  If State = -5 Then
 
    addchat vbwhite, "Could not find user!"
 
    InChannel = 0
 
  Else
 
    addchat vbwhite, "User found!"
 
    InChannel = 1
 
  End If
 
End Function
 
 
 
Function IsCaptain(Username)
 
  Set rs = db.OpenRecordSet("SELECT * FROM Captains ORDER BY Name", db_cModeReadOnly)
 
  AddChat vbWhite, "Searching for a captain ..."
 
  rs.MoveFirst
 
  rs.Find "Name='" & Username & "'"
 
  If Not rs.EOF Then
 
    AddChat vbWhite, "Found captain!"
 
    IsCaptain = 1
 
  Else
 
    AddChat vbRed, "Could not find captain!"
 
    IsCaptain = 0
 
  End If
 
End Function
 
 
Class db_clsDatabase
 
 
    Private path_, conn_, xconn_
 
    
 
    Public Function Exists(path)
 
Dim fso
 
Exists = False
 
Set fso =  CreateObject("Scripting.FileSystemObject")
 
If fso.FileExists(path) Then
 
     Exists = True
 
End If
 
Set fso = Nothing
 
    End Function
 
    
 
    Public Function Close()
 
If Not conn_ Is Nothing Then
 
     If IsOpen() Then
 
   conn_.Close
 
     End If
 
     Set conn_ = Nothing
 
End If
 
Close = True
 
    End Function
 
    
 
    Public Function IsOpen()
 
IsOpen = False
 
If Not conn_ Is Nothing Then
 
     If conn_.State = 1 Then
 
   IsOpen = True
 
     End If
 
End If
 
    End Function
 
    
 
    Public Function Open(path)
 
On Error Resume Next
 
Close()
 
Open = False
 
path_ = path
 
Set conn_ = CreateObject("ADODB.Connection")
 
conn_.Provider = "Microsoft.Jet.OLEDB.4.0"
 
conn_.Open path_
 
If IsOpen() Then
 
     Set xconn_ = CreateObject("ADOX.Catalog")
 
     xconn_.ActiveConnection = conn_
 
     Open = True
 
End If
 
If Err.Number <> 0 Then
 
     AddChat vbRed, "Error in Open('" & path & "'): " & Err.Description
 
     Err.Clear
 
End If
 
    End Function
 
 
    Public Function Create(path)
 
On Error Resume Next
 
Dim obj_
 
Close()
 
Set obj_ = CreateObject("ADOX.Catalog")
 
obj_.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _
 
     "Jet OLEDB:Engine Type=5;Data Source=" & path
 
Set obj_ = Nothing
 
Create = Open(path)
 
If Err.Number <> 0 Then
 
     AddChat vbRed, "Error in Create('" & path & "'): " & Err.Description
 
     Err.Clear
 
End If
 
    End Function
 
 
    Public Function TableExists(tabname)
 
Dim i
 
TableExists = False
 
If Not IsOpen() Then Exit Function
 
If xconn_.Tables.Count = 0 Then Exit Function
 
For i = 0 To xconn_.Tables.Count - 1
 
     If UCase(tabname) = UCase(xconn_.Tables(i).Name) Then
 
   TableExists = True
 
   Exit Function
 
     End If
 
Next
 
    End Function
 
    
 
    Public Function ColumnExists(tabname, colname)
 
Dim i, t
 
ColumnExists = False
 
If Not IsOpen() Then Exit Function
 
If Not TableExists(tabname) Then Exit Function
 
Set t = xconn_.Tables(tabname)
 
If t.Columns.Count = 0 Then Exit Function
 
For i = 0 To t.Columns.Count - 1
 
     If UCase(colname) = UCase(t.Columns(i).Name) Then
 
   ColumnExists = True
 
   Exit Function
 
     End If
 
Next
 
    End Function
 
    
 
    Public Function CreateTable(tabname)
 
On Error Resume Next
 
Dim tbl_
 
If Not IsOpen() Then Exit Function
 
If TableExists(tabname) Then Exit Function
 
Set tbl_ = CreateObject("ADOX.Table")
 
tbl_.Name = tabname
 
xconn_.Tables.Append tbl_
 
CreateTable = True
 
If Err.Number <> 0 Then
 
     AddChat vbRed, "Error in CreateTable('" & tabname & "'): " & _
 
   Err.Description
 
     Err.Clear
 
End If
 
    End Function
 
    
 
    Public Property Get Table(tabname)
 
On Error Resume Next
 
Dim tbl_
 
Set tbl_ = Nothing
 
If IsOpen() Then 
 
     Set tbl_ = xconn_.Tables(tabname)
 
End If
 
Set Table = tbl_
 
If Err.Number <> 0 Then
 
     AddChat vbRed, "Error in Table('" & tabname & "'): " & Err.Description
 
     Err.Clear
 
End If
 
    End Property  
 
    
 
    Public Function OpenRecordset(sql, mode)
 
On Error Resume Next
 
Dim rs_
 
Set OpenRecordset = Nothing
 
If Not IsOpen() Then Exit Function
 
Set rs_ = CreateObject("ADODB.Recordset")
 
rs_.ActiveConnection = conn_
 
Select Case mode
 
     Case db_cModeReadOnly
 
   rs_.CursorType = 2 ' adOpenStatic
 
   rs_.LockType = 1   ' adLockReadOnly
 
     Case db_cModeForUpdate
 
   rs_.CursorType = 1 ' adOpenKeyset
 
   rs_.LockType = 3   ' adLockOptimistic
 
     Case Else
 
   rs_.CursorType = 0 ' adOpenForwardOnly
 
   rs_.LockType = 1   ' adLockReadOnly
 
End Select
 
rs_.Source = sql
 
rs_.Open
 
If Err.Number <> 0 Then
 
     AddChat vbRed, "Error in OpenRecordSet('" & sql & "', " & _
 
   mode & "): " & Err.Description
 
     Err.Clear
 
     Exit Function
 
End If
 
Set OpenRecordset = rs_
 
    End Function
 
    
 
    Public Function ExecuteQuery(sql)
 
On Error Resume Next
 
Dim rs_, rows_affected
 
ExecuteQuery = 0
 
If Not IsOpen() Then Exit Function
 
Set rs_ = conn_.Execute(sql, rows_affected)
 
ExecuteQuery = rows_affected
 
If Err.Number <> 0 Then
 
     AddChat vbRed, "Error in ExecuteQuery('" & sql & "'): " & Err.Description
 
     Err.Clear
 
End If
 
    End Function
 
    
 
    Private Sub Class_Initialize()
 
path_ = BotPath() & "plugins\dotaclan.mdb"
 
Set conn_ = Nothing
 
Set xconn_ = Nothing
 
    End Sub
 
    Private Sub Class_Terminate()
 
Close()
 
Set conn_ = Nothing
 
Set xconn_ = Nothing
 
    End Sub
 
    
 
End Class
 
 
 
 
Как видите там есть места помеченные как пояснение - '.
 
Разумеется убераем - ', получаем код яккобы действующий, но тут есть один незакрытый таймер:
 
'Sub dotaclan_teamfull_Timer()(данный таймер должен отслеживать когда нужное кол-во игроков напишет .signin и далее разрешал  выбирать их капитанам(.pick)(тоесть если 2v2, то ждёт пока как минимум пока двое не напишут .signin)
 
+ походу какая то загвоздка с публичным - runme с его переменной(0 или 1)
 
Далее следует вопрос:
 
Возможно в коде, есть код, к этому таймеру или же он просто отсутствует, у меня просьба к вам помоч мне дописать или найти код к этому таймеру.
 
Суть скрипта такая:
 
Скрипт посредствам бота в игре, создаёт соревнование, то есть, есть два капитана(один вызывает другова командой .challenge nick team mode), когда капитаны устроили соревнование и оно началось, другие игроки, которые хотят учавствовать в соревновании, должны написать - .signin. Далее капитаны из списка(.pool) игроков, выбирают(.pick nick) тех которые им нужны, после того как игроки выбраны бот говорит, каманда - scourge те то и тето, команда - sentinel те то и те то.
 
Но из за незаконченности скрипта, он не видит что игроки уже вступили в нужном кол-ве и не разрешает начинать выбирать их.
 
То есть если состязания 2 на 2, где два капитана уже есть и им нужно 2 человека сверху, эти двое написали .signin(то есть вступили), после этого бот должен сказать - количество игроков соотвествует размеру состязания(там всё в скрипте это написано на енг) и так же должен сказать что теперь вы можете выбирать игроков из пула. А после выбора их должен выдать команды(team sentinel игроки и team scoruge игроки).
 
Вот список нестандартных команд и сабов:
 
 
'//*****************************************//
 
'// NOTES ON USEFUL PLUGIN SUBS/FUNCTIONS //
 
'//*****************************************//
 
 
'// [ Settings Subs/Functions ]
 
 
'// - SetSetting
 
'// USAGE: SetSetting "prefix", "SettingName", SettingValue, "Setting description", Overwrite
 
'// Overwrite is a boolean (True or False).
 
'// ** NEW: Use "" for the Setting Description parameter and the existing description will be used.
 
 
'// - GetSetting
 
'// USAGE: Setting = GetSetting("prefix", "SettingName")
 
 
 
'// [ Timer Subs/Functions ]
 
 
'// - TimerInterval
 
'// USAGE: TimerInterval "prefix", "timerName", Interval
 
'// Interval is in seconds (must be an integer).
 
 
'// - TimerEnabled
 
'// USAGE: TimerEnabled "prefix", "timerName", Enabled
 
'// Enabled is a boolean (True or False).
 
 
'// - GetTimerEnabled
 
'// USAGE: Enabled = GetTimerEnabled("prefix", "timerName")
 
'// Enabled will hold a boolean (True or False).
 
 
'// - GetTimeLeft
 
'// USAGE: timeLeft = GetTimeLeft("prefix", "timerName")
 
'// timeLeft will hold the number of seconds left until your timer sub is executed.
 
 
'// - GetTimeWaiting
 
'// USAGE: timeWaiting = GetTimeWaiting("prefix", "timerName")
 
'// timeWaiting will hold the number seconds since the last time your timer sub was executed.
 
 
 
'// [ Message Display Sub ]
 
 
'// - dsp
 
'// USAGE: dsp DisplayID, Message, Username, Color
 
'// DisplayID must be one of the following integer values:
 
'// 1 = AddQ
 
'// 2 = Emote
 
'// 3 = Whisper
 
'// 4 = AddChat
 
'// Color needs to be a vbColor:
 
'// vbGreen, vbRed, vbCyan, vbYellow, vbBlue, vbMagenta, vbBlack, vbWhite, vbOrange, vbBrown, vbPink, vbGrey
 
'// ** NEW: Messages of any length can now be displayed.
 
Sub Event_FirstRun()
 
Sub Event_ServerInfo(Message) 
 
Sub Event_ServerError(Message) 
 
Sub Event_UserTalk(Username, Flags, Message, Ping) 
 
Sub Event_UserEmote(Username, Flags, Message) 
 
Sub Event_WhisperFromUser(Username, Flags, Message) 
 
Sub Event_UserJoins(Username, Flags, Message, Ping, Product, Level, OriginalStatstring, Banned) 
 
Sub Event_UserLeaves(Username, Flags)
 
Sub Event_FlagUpdate(Username, NewFlags, Ping) 
 
Sub Event_LoggedOn(Username, Product) 
 
Sub Event_UserInChannel(Username, Flags, Message, Ping, Product, StatUpdate) 
 
Sub Event_ChannelJoin(ChannelName, Flags) 
 
Sub Event_PressedEnter(Text) 
 
Sub Event_KeyReturn(KeyName, KeyValue) 
 
Sub Event_MessageSent(Message)
 
Sub Event_ClanInfo(Name, Rank, Online)
 
Sub Event_ClanMemberList(Username, Rank, Online)
 
Sub Event_ClanMemberUpdate(Username, Rank, Online)
 
Sub Event_ClanMOTD(Message)
 
Sub Event_ClanMemberLeaves(Username)
 
Sub Event_BotRemovedFromClan()
 
Sub Event_BotClanRankChanged(NewRank)
 
Sub Event_BotJoinedClan(ClanTag)
 
Sub Event_BotClanInfo(ClanTag, Rank)
 
Sub Event_Close()
 
Sub Event_Shutdown()
Ответить
        |