Function Init
 Init=0 
 Call LangModule_Load()
 Call LoadAccessSettings
 
 scTimer.Interval = scMainTimerInterval
 Call CreateObj("LongTimer", "Reclame")
 Reclame.Enabled = Reclame_module
 Reclame.Interval = iReclameTimerInterval
 Call CreateObj("LongTimer", "Trivia")
 Trivia.Enabled = True
 Trivia.Interval = Trivia_Timer_Interval
 Call CreateObj("LongTimer", "SpeedChl")
 SpeedChl.Enabled = True
 SpeedChl.Interval = iSpeedChl_Iteration
 Call CreateObj("LongTimer", "AntiSpam")
 AntiSpam.Enabled = AntiSpam_Enabled
 AntiSpam.Interval = 10
 
 Call CreateObj("LongTimer", "AntiSpamv2")
 AntiSpamv2.Enabled = False
 AntiSpamv2.Interval = 720
 
 Call CreateObj("LongTimer", "MessageDelaySystem")
 MessageDelaySystem.Enabled = True
 MessageDelaySystem.Interval = 5
 
 Call CreateObj("LongTimer", "AntiFloodSys")
 If iCmdUsersDelay = 0 Then AntiFloodSys.Enabled = False else AntiFloodSys.Enabled = True
 AntiFloodSys.Interval = iCmdUsersDelay
 Call CreateObj("LongTimer", "ACCD")
 ACCD.Enabled = True
 ACCD.Interval = Auto_ChCdKey_Iteration
 Call CreateObj("LongTimer", "Citys")
 Citys.Enabled = True
 Citys.Interval = iCitysRemainCounter
 ADDCHAT RGB(053,101,169), LMT(266)
 ADDCHAT RGB(053,101,169), LMT(46)
 ADDCHAT RGB(073,101,169), LMT(47)
 ADDCHAT RGB(093,101,169), LMT(48)
 ADDCHAT RGB(113,101,169), LMT(49)
 ADDCHAT RGB(133,101,169), LMT(50)
 ADDCHAT RGB(153,101,169), LMT(51)
 ADDCHAT RGB(173,101,169), LMT(52)
 ADDCHAT RGB(000,170,050), LMT(53)
 
 blACDD_TryLeftVoid = False
 scTimer.Enabled  = True   
 ADDCHAT RGB(193,101,225), LMT(54) & " " & Script("Major") & "." & Script("Minor") & "." & Script("Revision") & ModulesVers
 
 AddChat RGB(000,174,130), LMT(56)
 MC=0
 TMR=0
 Slov=0  
 FloodDelay=1 
 
 Init=1
 
End Function

Function Load_Command_Access
 Load_Command_Access = 0
  Dim Command, Parameter
    
    Set Command = OpenCommand("sound")
    If Command Is Nothing Then
        
        Set Command = CreateCommand("sound")
        With Command
            
            Set Parameter = .NewParameter("word", False, "word")
            With Parameter
                .Description = "The word you wish to calculate the soundex value of."
				.MatchMessage = "[a-z]"
				.MatchCaseSensitive = True
				.MatchError = ""
            End With
            .Parameters.Add Parameter
            
            .RequiredRank = 1
			
			.Description = "Calculate the soundex value of a word."
            
            .Save
        End With
    End If
	Set Command = OpenCommand("awaymod")
    If Command Is Nothing Then
        Set Command = CreateCommand("awaymod")
        With Command
            .Description = "a"
            .RequiredRank = 1
            Set Parameter = .NewParameter("Number", False, "Numeric")
            With Parameter
                .Description = "The index in the Fibonacci sequance you wish to grab."
            End With
            .Parameters.Add Parameter
            .Save
        End With
    End If

 Load_Command_Access = 1
End function

Private Function ClanShamans()
    For Each sham In Clan.Shamans
	   output = output & sham.Name & ", "
    Next
    If output <> vbNullString Then
       output = Left(output, Len(output)-2)
       ClanShamans = output
    Else
       ClanShamans = ""
    End If
End Function

Function Load_Modules
 Load_Modules=0
 
 addChat RGB(0,0,198), "================================"
 AddChat RGB(0,20,178),">> " & LMT(57) & " ChatModule... <<"
 Call Load_Chat
 addChat RGB(0,40,158), "================================"
 AddChat RGB(0,60,138),">> " & LMT(57) & "Reclame <<"
 Call Load_Reclame
 addChat RGB(0,80,138), "================================"
 AddChat RGB(0,100,138),">> " & LMT(57) & "Players <<"
 Call Pl_load
 addChat RGB(0,120,138), "================================"
 AddChat RGB(0,140,138),">> " & LMT(57) & " GreatMess <<"
 Call Load_file_dm(GreatFilePath,GrPl,GrMes,Great_Divide_Symbol)
 addChat RGB(0,160,138), "================================"
 AddChat RGB(0,180,138),">> " & LMT(57) & " AChange CdKey and Connect System <<"
 call ACCD_Load_CDKey
 addChat RGB(0,200,138), "================================"
 AddChat RGB(0,220,138),">> " & LMT(57) & " Help Sytem v2 <<"
 Call Help_system_Load_V2
 addChat RGB(0,240,138), "================================"
 AddChat RGB(0,220,138), LMT(306)
 Call AdvancedPingMe_Load()
 addChat RGB(0,240,138), "================================"
 If SaiMail_activated = True Then
  AddChat RGB(0,240,158),">> " & LMT(57) & " SaiMail System <<"
  Call SaiMail_Load
  addChat RGB(0,240,178), "================================"
 End if
 
 If AntiMat_enable = True then
  AddChat RGB(0,240,198),">> " & LMT(57) & " AntiMat Sytem v2 <<"
 Call AntiMat_Load
 addChat RGB(0,240,218), "================================"
 End if
 AddChat RGB(0,240,198),">> " & LMT(57) & " Weather Module v2 <<"
 Call Weather_Load
 addChat RGB(0,240,138), "================================"
 
 AddChat RGB(20,240,238),">> " & LMT(57) & " SpeedChallenge <<"
 Call SpeedChl_Load
 addChat RGB(40,240,248), "================================"
 sCwDate = GetConfigEntry("TourneyMod","sCwDate","")
 
 addChat RGB(40,240,248), "==== Custom Command Editor ====="
 Call AbuseDetect_Event_Load()
 Call CCE_Load 
 Load_Modules=1
End Function

Function Final_load
 Final_load=0 
 
 Dim blCurrentStatus 
 blCurrentStatus = GetConfigEntry("UltimateBot","blCurrentStatus","")
 addChat RGB(60,240,248), "================================"
 AddChat RGB(80,240,248),">> " & LMT(57) & " Trivia <<"
 Erase Tq
 Erase Ta
 Erase TP
 Erase TS
 Call Trivia_Load
 If blCurrentStatus <> "Off" Then
  AddChat vbYellow, LMT(304)
  AddChat vbGreen, LMT(300)
  AddChat vbGreen, LMT(301)
  AddChat vbYellow, LMT(302)
  Call InsSort(TS,TP)
 End if
 Call Save_File_dm(PPath,TP,TS,LenMas(TP),Trivia_score_divide_symbol)
 If Load_Command_Access = 1 Then AddChat RGB(0,215,0),LMT(122) else  AddChat vbRed,LMT(123)
 Call WriteConfigEntry("UltimateBot", "blCurrentStatus","On","")
 addChat RGB(100,220,228), "================================"
 
 addChat RGB(60,240,248), "================================"
 AddChat RGB(80,240,248),">> " & LMT(57) & " MessageDelaySystem <<"
 Call CreateObj("LongTimer", "MessageDelaySystem")
 MessageDelaySystem.Enabled = False
 MessageDelaySystem.Interval = 10
 If iDelayMSG > 0 then
	MessageDelaySystem.Enabled = True
	MessageDelaySystem.Interval = iDelayMSG
 end if
 
 Call NewsReader_Load
 BotVars.Spoof = 2
 Final_load=1 
 
End Function

sub Test(Table,Index)
 Dim i,x,string1
 i = 0
 x = 0
 string1 = ""
  If Table = "Winers" Then
  If Index * 6 <= LenMas (dmTourPl) Then
   x = (Index * 6) - 4
  Else
   x = ( LenMas (dmTourPl) ) - 6
   AddCHat vbBlue, "sdas:" & x
  End if
  If Index = 1 Then x = (Index * 6) - 6
  If (CountMas(dmTourPl) )\ 2 <> (CountMas(dmTourPl))/ 2 Then
   AddCHat vbBlue, "ssssss:" & x
   x = ( LenMas (dmTourPl) ) - 8
  End if

  string1 ="W:" & dmTourPl(x) & " vs " & dmTourPl(x+1) & "; "
  For i = x + 2 To x + 6
   addChat vbBlue, i
   string1 = string1 & dmTourPl(i) & " vs " & dmTourPl(i+1) & "; "
   i = i + 1
  Next
  AddCHat vbGreen, string1
  AddQ_D "/me " & string1
  Exit sub
 End if
 If Table = "Losers" Then
  Exit sub
 End if
End sub

Function Verify_User_Command(Command, UserName, Need_access, Need_Flags)
 GetDBEntry UserName, UserAccess, UserFlags
 if UserName = MyUserName Then
  Verify_User_Command = 1
  exit Function
 end if
 If LCase(UserFlags) = "a" Then
  Verify_User_Command = 1
  exit Function
 end if
 p_flag = GetConfigEntry("Flags",Command,"access.ini")
 If (LCase(UserFlags) = LCase(p_flag)) and (p_flag<>vbNullString) Then
  Verify_User_Command = 1
  exit Function
 end if
 If (LCase(UserFlags) = LCase(Need_Flags)) and (Need_Flags<>vbNullString) Then
  Verify_User_Command = 1
  exit Function
 end if
 p_access = GetConfigEntry("Numeric",Command,"access.ini")
 if IsNumeric(p_access) Then
  if UserAccess >= Int(p_access) Then
   Verify_User_Command = 1
   exit Function
  else
   Verify_User_Command = 0
   exit Function
  end if
 end if
 if UserAccess >= Int(Need_access) Then
  Verify_User_Command = 1
  exit Function
 end if
 Verify_User_Command = 0
end Function

Sub UserTalk(UserName, Flags, Message, Ping)
 Dim Bnet_Clan
 Bnet_Clan=GetInternalDataByUserName(UserName, 0)
 
 If (LCase(InStr(Message, BotVars.Trigger & "awaymod")) > 0) and (isAdmin(UserName,awaymod_access)=1) Then
  If Len(Message)=8 Then
   AddQ_D "/w " & UserName & LangModule_SendMessage(Username,5) 
   
   Exit Sub
  End If
  If (Mid(Message,10,1))=0 then
   blAfk_Enabled = False
   AddQ_D "/w " &  UserName & " "& "AFK Mod: " & LangModule_SendMessage(UserName,59)
   
  else
   BotChat = True
   AddQ_D "/w " &  UserName & " "& "AFK Mod: " & LangModule_SendMessage(UserName,58) 
   
  End if
 End If

 If (LCase(InStr(Message, BotVars.Trigger & "abusedetect")) > 0) and (isAdmin(UserName,AbuseDetectAccess)=1) Then
  If Len(Message)=12 Then
   AddQ_D "/w " & UserName & LangModule_SendMessage(Username,5) 
   Exit Sub
  End If
  If (Mid(Message,14,1))= 0 then
   bAbuseDetectEnabled = False
   AddQ_D "/w " &  UserName & " "& "AbuseDetect Mod: " & LangModule_SendMessage(UserName,59)
  else
   bAbuseDetectEnabled = True
   AddQ_D "/w " &  UserName & " "& "AbuseDetect Mod: " & LangModule_SendMessage(UserName,58) 
  End if
 End If
 
 If (Left(LCase(Message), 10) = BotVars.Trigger & "antimatfs") and (isAdmin(UserName,AntiMatFriendlyShield_access)=1) Then
  If (Mid(Message,12,1))=0 then
   AntiMatFriendlyShield = False
   AddQ_D "/w " &  UserName & " " & LangModule_SendMessage(UserName,231) & LangModule_SendMessage(UserName,59)
   
  else
   AntiMatFriendlyShield = True
   AddQ_D "/w " &  UserName & " " & LangModule_SendMessage(UserName,231) & LangModule_SendMessage(UserName,58)
   
  End if
 End if

 If (Left(LCase(Message), 10) = BotVars.Trigger & "antimates") and (isAdmin(UserName,AntiMatEnemyShield_access)=1) Then
  If (Mid(Message,12,1))=0 then
   AntiMatEnemyShield = False
   AddQ_D "/w " &  UserName & " " & LangModule_SendMessage(UserName,232) & LangModule_SendMessage(UserName,59)
   
  else
   AntiMatEnemyShield = True
   AddQ_D "/w " &  UserName & " " & LangModule_SendMessage(UserName,232) & LangModule_SendMessage(UserName,58)
   
  End if
 end if

 If (Left(LCase(Message), 12) = BotVars.Trigger & "antiyelling") and (isAdmin(UserName,AntiMat_AntiYelling_access)=1) Then
  iAntiMat_AntiYelling_MaxCount = Mid (Message,14,(Len(Message)) - 13)
  AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,234) & iAntiMat_AntiYelling_MaxCount
  
  exit sub
 end if

 If (LCase(InStr(Message, BotVars.Trigger & "triviasymbol")) > 0) and (isAdmin(UserName,triviasymbol_access)=1) Then
  addChat vbBlue , Len(Message)
  If Len(Message)=13 Then
   AddQ_D "/w " & UserName & " "& LangModule_SendMessage(UserName,5) 
   
   Exit Sub
  End If
   Trivia_divide_symbol = (Mid(Message,15,1))
   AddQ_D "/w " &  UserName & " " & LangModule_SendMessage(UserName,60) & (Mid(Message,15,1))
   
 End If

 If (LCase(InStr(Message, BotVars.Trigger & "triviaws")) > 0) and (isAdmin(UserName,triviasymbol_access)=1) Then
  If Len(Message)=9 Then
   AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,5) 
   
   Exit Sub
  End If
  If (Mid(Message,11,1))=0 then
   Trivia_word_spaces = False
   AddQ_D "/w " &  UserName & " "& "Trivia: " & LangModule_SendMessage(UserName,63) & LangModule_SendMessage(UserName,62) 
   
  else
   Trivia_word_spaces = True
   AddQ_D "/w " &  UserName & " "& "Trivia: " & LangModule_SendMessage(UserName,63) & LangModule_SendMessage(UserName,61) 
   
  End if
 End If

 If (LCase(InStr(Message, BotVars.Trigger & "smm")) > 0) and (isAdmin(UserName,smm_access)=1) Then
  If (Len(Message)=4) or (Len(Message)=5) Then
   AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,64)& " smm" 
   
   exit sub
  End if
  If Mid(Message,6,1) = 0 Then
   AddCHat vbYellow, "SaiMail: " &  LMT(65) & LMT(66) & UserName
   AddQ_D "/w " & UserName & " SaiMail " & LangModule_SendMessage(UserName,65)  
   SaiMail_activated = False
   
   Exit Sub
  End if
  If Mid(Message,6,1) = 1 Then
   If SaiMail_activated = True Then
    AddQ_D "/w " & UserName & " SaiMail" & LangModule_SendMessage(UserName,67)  
	
    Exit sub
   End if
   AddCHat vbYellow, "SaiMail:" & LMT(68) & LMT(66) & UserName
   AddQ_D "/w " & UserName & " SaiMail " & LangModule_SendMessage(UserName,68)  
   SaiMail_activated = True
   
   Call SaiMail_Load
   Exit Sub
  End if
 End if

 If (LCase(InStr(Message, BotVars.Trigger & "cw")) > 0) and (isAdmin(UserName,cw_access)=1) Then
  If (Len(Message)=5) or (Len(Message)=4) Then
   AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,64) & " cw" 
   
   exit sub
  End if
  If (Len(Message)=3) Then
   AddQ_D  "/w " & UserName & " " &  LangModule_SendMessage(UserName,216) & sCwDate 
   
   Exit sub
  End iF
  sCwDate = Mid(Message,5,Len(Message) - 4)
  AddQ_D "/w " & UserName &  " " & LangModule_SendMessage(UserName,215) & sCwDate 
  Call WriteConfigEntry("TourneyMod", "sCwDate",sCwDate,"")
  
  Exit Sub
 End if

 If (LCase(InStr(Message, BotVars.Trigger & "botchat")) > 0) and (isAdmin(UserName,botchat_access)=1) Then
  If Len(Message)=8 Then
   AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,5)  
   
   Exit Sub
  End If
  If (Mid(Message,10,1))=0 then
   BotChat = False
   AddQ_D "/w " &  UserName & " "& "BotChat: " & LangModule_SendMessage(UserName,59)
   
  else
   BotChat = True
   AddQ_D "/w " &  UserName & " "& "BotChat: " & LangModule_SendMessage(UserName,58)
   
  End if
 End If

 If (LCase(InStr(Message, BotVars.Trigger & "triviass")) > 0) and (isAdmin(UserName,triviass_access)=1) Then
  If Len(Message)=9 Then
   AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,5)
   
   Exit Sub
  End If
  If (Mid(Message,11,1))=0 then
   Trivia_show_spaces = False
   AddQ_D "/w " &  UserName & " " & "Trivia: " & LangModule_SendMessage(UserName,70) & LangModule_SendMessage(UserName,62)
   
  else
   Trivia_show_spaces = True
   AddQ_D "/w " &  UserName & " " &  "Trivia: " & LangModule_SendMessage(UserName,70) & LangModule_SendMessage(UserName,61)
   
  End if
 End If

 If (LCase(InStr(Message, BotVars.Trigger & "autockey")) > 0) and (isAdmin(UserName,autockey_access)=1) Then
  If Len(Message)=9 Then
   AddQ_D "/w " & UserName & " "& LangModule_SendMessage(UserName,5)
   
   Exit Sub
  End If
  If (Mid(Message,11,1))=0 then
   Auto_ChCdKey = False
   AddQ_D "/w " & UserName & " "& LangModule_SendMessage(UserName,40)
   
  else
   Auto_ChCdKey = True
   AddQ_D "/w " & UserName & " "& LangModule_SendMessage(UserName,41)
   
  End if
 End If

 If (LCase(InStr(Message, BotVars.Trigger & "inmes")) > 0) and (isAdmin(UserName,inmes_access)=1) Then
  If Len(Message)=6 Then
   AddQ_D "/w " & UserName & " "& LangModule_SendMessage(UserName,5)
   Exit Sub
  End If
  If (Mid(Message,8,1))=0 then
   InMes=0
   AddQ_D "/w " &  UserName & " "&  LangModule_SendMessage(UserName,6)
   
  else
   InMes=1
   AddQ_D "/w " &  UserName &  " "& LangModule_SendMessage(UserName,7)
   
  End if
 End If

 If (LCase(InStr(Message, BotVars.Trigger & "outmes")) > 0) and (isAdmin(UserName,outmes_access)=1) Then
  If Len(Message)=7 Then
   AddQ_D "/w " & UserName &LangModule_SendMessage(UserName,5)
   
   Exit Sub
  End If
  If (Mid(Message,9,1))=0 then
   OutMes=0
   AddQ_D "/w " &  UserName & " "& LangModule_SendMessage(UserName,8)
   
  else
   OutMes=1
   AddQ_D "/w " &  UserName & " " & LangModule_SendMessage(UserName,9)
   
  End if
 End If

 If (LCase(InStr(Message, BotVars.Trigger & "goroda")) > 0) and (isAdmin(UserName,goroda_access)=1) Then
  If Len(Message)=7 Then
   AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,5)
   
   Exit Sub
  End If
  If (Mid(Message,9,1))=0 then
   blCitysEnabled = False
   sLastChar = ""
   sLastUser = ""
   iCityCurrentCount = 0
   ReDim dmUsedCitys(0)
   
   AddQ_D LMT(218) & LMT(59)
   
  else
   iCityCurrentCount = iCitysRemainCounter
   blCitysEnabled = True
   Call Citys_Load
   If blSpeedChl_Enabled = True Then blSpeedChl_Enabled = False
   If Trivia_enabled = True then Trivia_enabled = False
   
   AddQ_D LMT(218) & LMT(58) & LMT(227)
   
  End if
 End If

 If (LCase(Message) = BotVars.Trigger & "timeroff") and (isAdmin(UserName,timeroff_access)=1) Then
   scTimer.Enabled=False
   AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,25)
   exit sub
 End If

 If (LCase(Message) = BotVars.Trigger & "reclameoff") and (isAdmin(UserName,reclameoff_access)=1) Then
   Reclame_module = False
   Reclame.Enabled = Reclame_module
   AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,69) & LangModule_SendMessage(UserName,59)
   exit sub
 End If

 If (LCase(Message) = BotVars.Trigger & "reclameon") and (isAdmin(UserName,reclameon_access)=1) Then
   Reclame_module = True
   Reclame.Enabled = Reclame_module
   AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,69) & LangModule_SendMessage(UserName,58)
   exit sub
 End If

 If (LCase(Message) = BotVars.Trigger & "timeron") and (isAdmin(UserName,timeron_access)=1) Then
   scTimer.Enabled=True
   AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,26)
   exit sub
 End If

 If (LCase(Message) = BotVars.Trigger & "reclres") and (isAdmin(UserName,reclres_access)=1) Then
   call Load_Reclame
   AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,27)
   exit sub
 End If

 If (LCase(Message) = BotVars.Trigger & LCase("readnews")) and (isAdmin(UserName,readnews_access)=1) Then
  
 End if

 If (LCase(Message) = BotVars.Trigger & LCase("triviaupdate")) and (isAdmin(UserName,triviaupdate_access)=1) Then
  call trivia_update
 End if

 If ( InStr(Message, (BotVars.Trigger & LCase("chlang"))) > 0 ) and (isAdmin(UserName,chlang_access)=1) Then
  If LCase(Mid(Message,(Len(message)-1),2)) = "ru" then CurrentLang="RU"
  If LCase(Mid(Message,(Len(message)-1),2)) = "en" then CurrentLang="EN"
  If CurrentLang="RU" Then
   Call Load_file_dm (LangFilePath,LMN,LMT,"|")
   AddChat vbGreen," :RU"
   AddQ_D "/me  :RU"
  end if
  If CurrentLang="EN" Then
   Call Load_file_dm (LangFilePath,LMT,LMN,"|")
   AddChat vbGreen,"Loads Lang:EN"
   AddQ_D "/me Loads Lang:EN"
  End if
 End If

 If (Message = BotVars.Trigger & LCase("trivia"))  and (isAdmin(UserName,trivia_access)=1) Then
  
   if trivia_enabled = True then
    trivia_enabled = False
    If blSpeedChl_Enabled = "Pause" Then blSpeedChl_Enabled = True
    AddQ_D "/me " & LangModule_SendMessage(UserName,71)
   else
    trivia_enabled = True
	If blSpeedChl_Enabled = True Then blSpeedChl_Enabled = "Pause"
    AddQ_D "/me " & LangModule_SendMessage(UserName,72) & LenT + 1
   end if
 
 end if

 If (Message = BotVars.Trigger & LCase("claninvite"))  and (isAdmin(UserName,claninvite_access)=1) Then
   If ClanInvite_Enabled = True Then
    ClanInvite_Enabled = False
    AddQ_D "/me " & LangModule_SendMessage(UserName,73) & LangModule_SendMessage(UserName,74)
	
   Else
    ClanInvite_Enabled = True
    AddQ_D "/me " & LangModule_SendMessage(UserName,73) & LangModule_SendMessage(UserName,75)
	
   End if
 end if

 If (Message = BotVars.Trigger & LCase("spchal")) and (isAdmin(UserName,spchal_access) = 1) Then
  
   if blSpeedChl_Enabled  = True then
    blSpeedChl_Enabled = False
    If trivia_enabled = "Pause" Then trivia_enabled = True
    AddQ_D "/me " & LangModule_SendMessage(UserName,76)
   else
    blSpeedChl_Enabled = True
	If Trivia_enabled = True Then trivia_enabled = "Pause"
    AddQ_D "/me " & LangModule_SendMessage(UserName,77) & iSpeedChl_Count
   end if
 
 end if

 If (InStr(Message,(BotVars.Trigger & LCase("triviafile")))=1)  and (isAdmin(UserName,triviafile_access)=1) Then
  
   If Len(Message)=11 then
    AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,78)
	exit sub
   end if
   QPath=Mid(Message,13,Len(Message)-11)
   Call Trivia_Load
   trivia_enabled=True
   AddQ_D "/w " & UserName & " " & "/me " & LangModule_SendMessage(UserName,79) & QPath
 
 end if

 If (InStr(Message,(BotVars.Trigger & LCase("spchalfile")))=1)  and (isAdmin(UserName,spchalfile_access)=1) Then
   If Len(Message)=11 then
    AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,78)
	exit sub
   end if
   sSpeedChl_WordsFile = Mid(Message,13,Len(Message)-11)
   Call SpeedChl_Load
   blSpeedChl_Enabled = True
   AddQ_D "/w " & UserName & " " & "/me " & LangModule_SendMessage(UserName,80) & QPath
 
 end if

 If (Message = BotVars.Trigger & LCase("restrivia"))  and (isAdmin(UserName,restrivia_access)=1) Then
 
   Call Trivia_Load
   trivia_enabled = True
   blSpeedChl_Enabled = "Pause"
   AddQ_D "/me " & LangModule_SendMessage(UserName,81) & LenT+1
  
 end if

 If (Message = BotVars.Trigger & LCase("resspchal"))  and (isAdmin(UserName,resspchal_access)=1) Then
   Call SpeedChl_Load
   blSpeedChl_Enabled = True
   Trivia_enabled = "Pause"
   AddQ_D "/me " & LangModule_SendMessage(UserName,82) & iSpeedChl_Count + 1
  
 end if

 If (Message = BotVars.Trigger & LCase("triviaskip"))  and (isAdmin(UserName,triviaskip_access)=1) Then
  
   if trivia_enabled = False then exit sub
   next_q = True
   AddQ_D "/me " & LangModule_SendMessage(UserName,83)
  
 end if

 If (Message = BotVars.Trigger & LCase("spchalskip"))  and (isAdmin(UserName,spchalskip_access)=1) Then
  
   if blSpeedChl_Enabled = False then exit sub
   blSpeedChl_NextQ = True
   AddQ_D "/me " & LangModule_SendMessage(UserName,84)
  
 end if

 If (LCase(InStr(Message, BotVars.Trigger & "matadd")) > 0) and (isAdmin(UserName,matadd_access)=1) Then
  If AntiMat_enable = False then exit sub
  If Len(Message)<=8 Then
   sAntiMatAdminName = UserName
   AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,85)
   exit sub
  else
   If AntiMat_addWord(MID(Message,9, (Len(Message)-7))) = 0 then
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,86) & (MID(Message,9, (Len(Message)-7)))
    exit sub
   else
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,87) & (MID(Message,9, (Len(Message)-7)))
	exit sub
   end if
  end if
 end if

 If (LCase(InStr(Message, BotVars.Trigger & "matdel")) > 0) and (isAdmin(UserName,matdel_access)=1) Then
  If AntiMat_enable = False then exit sub
  If Len(Message)<=8 Then
   sAntiMatAdminName = UserName
   AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,88)
   exit sub
  else
   If AntiMat_delWord(MID(Message,9, (Len(Message)-7))) = 1 then
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName &  LangModule_SendMessage(UserName,89) & (MID(Message,9, (Len(Message)-7)))
    exit sub
   else
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,90) & (MID(Message,9, (Len(Message)-7)))
	exit sub
   end if
  end if
 end if
 
 If (LCase(InStr(Message, BotVars.Trigger & "migadd")) > 0) and (isAdmin(UserName,matadd_access)=1) Then
  If AntiMat_enable = False then exit sub
  If Len(Message)<=8 Then
   sAntiMatAdminName = UserName
   AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,85)
   exit sub
  else
   If AntiMat_addIgnorWord(MID(Message,9, (Len(Message)-7))) = 0 then
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,86) & (MID(Message,9, (Len(Message)-7)))
    exit sub
   else
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,87) & (MID(Message,9, (Len(Message)-7)))
	exit sub
   end if
  end if
 end if

 If (LCase(InStr(Message, BotVars.Trigger & "migdel")) > 0) and (isAdmin(UserName,matdel_access)=1) Then
  If AntiMat_enable = False then exit sub
  If Len(Message)<=8 Then
   sAntiMatAdminName = UserName
   AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,88)
   exit sub
  else
   If AntiMat_delIgnorWord(MID(Message,9, (Len(Message)-7))) = 1 then
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName &  LangModule_SendMessage(UserName,89) & (MID(Message,9, (Len(Message)-7)))
    exit sub
   else
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,90) & (MID(Message,9, (Len(Message)-7)))
	exit sub
   end if
  end if
 end if
 
 If (LCase(InStr(Message, BotVars.Trigger & "mpladd")) > 0) and (isAdmin(UserName,matadd_access)=1) Then
  If AntiMat_enable = False then exit sub
  If Len(Message)<=8 Then
   sAntiMatAdminName = UserName
   AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,85)
   exit sub
  else
   If AntiMat_addIgnorPl(MID(Message,9, (Len(Message)-7))) = 0 then
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,86) & (MID(Message,9, (Len(Message)-7)))
    exit sub
   else
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,87) & (MID(Message,9, (Len(Message)-7)))
	exit sub
   end if
  end if
 end if

 If (LCase(InStr(Message, BotVars.Trigger & "mpldel")) > 0) and (isAdmin(UserName,matdel_access)=1) Then
  If AntiMat_enable = False then exit sub
  If Len(Message)<=8 Then
   sAntiMatAdminName = UserName
   AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,88)
   exit sub
  else
   If AntiMat_delIgnorPl(MID(Message,9, (Len(Message)-7))) = 1 then
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName &  LangModule_SendMessage(UserName,89) & (MID(Message,9, (Len(Message)-7)))
    exit sub
   else
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,90) & (MID(Message,9, (Len(Message)-7)))
	exit sub
   end if
  end if
 end if
 
 If (LCase(InStr(Message, BotVars.Trigger & "matkick")) > 0) and (isAdmin(UserName,matkick_access)=1) Then
   Call AntiMat_onOff
   exit sub
 end if

 If (LCase(InStr(Message, BotVars.Trigger & "matkickes")) > 0) and (isAdmin(UserName,matkickes_access)=1) Then
   If AntiMatExtendAllow = True then
    AntiMatExtendAllow = False
	AddQ_D "/me " & LangModule_SendMessage(UserName,91) & LangModule_SendMessage(UserName,59)
   else
    AntiMatExtendAllow = True
	AddQ_D LangModule_SendMessage(UserName,91) & LangModule_SendMessage(UserName,58)
   end if
   exit sub
 end if

 If (LCase(InStr(Message, BotVars.Trigger & "matban")) > 0) and (isAdmin(UserName,matban_access)=1) Then
   if AutoBan = True then
    AutoBan = False
    AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,92) & LangModule_SendMessage(UserName,59)
	exit sub
   else
    AutoBan = True
    AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,92) & LangModule_SendMessage(UserName,58)
	exit sub
   end if
 end if

 If (LCase(InStr(Message, BotVars.Trigger & "matinfo")) > 0) and (isAdmin(UserName,matinfo_access)=1) Then
  Call AntiMat_state
  exit sub
 End if

 If (LCase(InStr(Message, BotVars.Trigger & "clanadd")) > 0) and (isAdmin(UserName,clanadd_access)=1) Then
  If AntiMat_enable = False then exit sub
  If Len(Message)<=9 Then
   sAntiMatAdminName = UserName
   AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,93) & LangModule_SendMessage(UserName,94)
   exit sub
  else
   If AntiMat_addClan(MID(Message,10, (Len(Message)-8))) = 0 then
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,94) & ": " & (MID(Message,10, (Len(Message)-8)))
    exit sub
   else
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,95) & (MID(Message,10, (Len(Message)-8)))
	exit sub
   end if
  end if
 end if

 If (LCase(InStr(Message, BotVars.Trigger & "clandel")) > 0) and (isAdmin(UserName,clandel_access)=1) Then
  If AntiMat_enable = False then exit sub
  If Len(Message)<=9 Then
   sAntiMatAdminName = UserName
   AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,93) & LangModule_SendMessage(UserName,96)
   exit sub
  else
   addChat vbBlue , (MID(Message,9, (Len(Message)-8)))
   If AntiMat_delClan(MID(Message,10, (Len(Message)-8))) = 1 then
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,97) & (MID(Message,10, (Len(Message)-8)))
    exit sub
   else
    sAntiMatAdminName = UserName
    AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,98) & (MID(Message,10, (Len(Message)-8)))
	exit sub
   end if
  end if
 end if

 If (LCase(InStr(Message, BotVars.Trigger & "clanban")) > 0) and (isAdmin(UserName,clanban_access)=1) Then
  If AntiMat_enable = False then exit sub
  If AdminAvaible = True then
   If ClanBan = True then
    ClanBan = False
    AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,94) & LangModule_SendMessage(UserName,59)
   else
    ClanBan = True
	AddQ_D "/w " & UserName & " " & LangModule_SendMessage(UserName,94) & LangModule_SendMessage(UserName,58)
   end if
  Else
   AddQ_D "/w " & UserName & " " &  LangModule_SendMessage(UserName,99)
   exit sub
  end if
  exit sub
 end if

 If (LCase(InStr(Message, BotVars.Trigger & "ad")) > 0) and (isAdmin(UserName,AbuseDetectAccess)=1) Then
  If bAbuseDetectEnabled = False then exit sub
  if AntiFloodSystem_Use(UserName) <> 0 then exit sub
  call AbuseDetect_Event_UserTalk(Username, Flags, Message, Ping)
 End If

 If LCase(InStr(Message, BotVars.Trigger & "rd")) > 0 Then
  if AntiFloodSystem_Use(UserName) <> 0 then exit sub
  AddQ_D "/me        SaiGEN"
  exit sub
  If Len(Message)=3 Then
   AddQ_D "/w " & UserName &" " & LMT(3)
   Exit Sub
  End if
  ChKAbuser=Mid(Message, 4, (Len(Message))-3)
  AddQ_D "/stats " &  ChkAbuser & " W3XP"
  adr=1
  Call Event_ServerError(Message)
 End If
 
 If (LCase(Message) = BotVars.Trigger & "reg") Then
  if AntiFloodSystem_Use(UserName) <> 0 then exit sub
  AddQ_D "/w " & UserName & "    ,   "
 End if
 
 If LCase(InStr(Message, BotVars.Trigger & "inf")) > 0 Then
  If Len(Message)=4 Then
   
   Call pl_inf(UserName,UserName)
   
   Exit Sub
  End If
 
  Call pl_inf(UserName,(Mid(Message, 6, (Len(Message))-4)))
 End If
 
 If LCase(InStr(Message, BotVars.Trigger & "smail")) > 0 Then
  if AntiFloodSystem_Use(UserName) <> 0 then exit sub
  If Len(Message)= 6 Then
   AddQ_D "/w " & UserName &" "& "   ,  .help smail  "
   
   Exit Sub
  End If
  Call SaiMail_UserTalk(UserName,Mid(Message,8,(Len(Message))-7))
 End if

 If (LCase(InStr(Message, BotVars.Trigger & "mylang")) > 0) Then
  
  If Len(Message)<=8 Then
   AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,217)
   
   exit sub
  else
   addChat vbBlue, MID(Message,9, (Len(Message)-7))
   Call LangModule_Use(UserName,(MID(Message,9, (Len(Message)-7))))
	exit sub
  end if
 end if
 
 If (Left(LCase(Message), 9) = BotVars.Trigger & "readnews") and (isAdmin(UserName,readnews_access)=1) Then
  If blNewsReader_Enabled = False Then exit sub
  if AntiFloodSystem_Use(UserName) <> 0 then exit sub
  Call NewsReader_UserTalk(UserName)
 End if
 
 If Left(LCase(Message), 8) = BotVars.Trigger & "triviaq" Then
  If trivia_enabled = False Then exit sub
  if AntiFloodSystem_Use(UserName) <> 0 then exit sub
  AddQ_D "/w " & UserName & " " & TQ(Numb)
  exit sub
 End if

 If LCase(Message) = BotVars.Trigger & "ctrivia" Then
  if AntiFloodSystem_Use(UserName) <> 0 then exit sub
  AddQ_D "/me " & LangModule_SendMessage(UserName,100) & CountMas(TQ) & LangModule_SendMessage(UserName,101)
  
  exit sub
 end If

 If (LCase(Message) = BotVars.Trigger & "cw") Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   AddQ_D  "/w " & UserName &  LangModule_SendMessage(UserName,216)
   
   exit sub
 End If

 If LCase(Message)=BotVars.Trigger & "cspchal" Then
  if AntiFloodSystem_Use(UserName) <> 0 then exit sub
  AddQ_D "/me " &  LangModule_SendMessage(UserName,100) & CountMas(dmSpeed_Word) & LangModule_SendMessage(UserName,102)
  
  exit sub
 end If

 If (LCase(Message) = BotVars.Trigger & "pingme") Or (LCase(Message)=BotVars.Trigger & "") Then
  if AntiFloodSystem_Use(UserName) <> 0 then exit sub
  Call AdvancedPingMe(UserName,Ping)
  
  exit sub
 end If

 If (LCase(Message)=BotVars.Trigger & "awaylist") Or (LCase(Message)=BotVars.Trigger & "") Then
  if AntiFloodSystem_Use(UserName) <> 0 then exit sub
  call Afk_ShowListV2
  exit sub
 end If

 If (LCase(Message) = BotVars.Trigger & "") or (LCase(Message) = BotVars.Trigger & "version")  Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   AddQ_D "/me " & LangModule_SendMessage(UserName,103) & Script("Major") & "." & Script("Minor") & "." & Script("Revision") & ModulesVers
   
   exit sub
 End If

 If (LCase(Message) = BotVars.Trigger & "") or (LCase(Message) = BotVars.Trigger & "shamans")  Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   AddQ_D "/me " &  LangModule_SendMessage(UserName,104) & ClanShamans
   
   exit sub
 End If

 If (LCase(Message) = BotVars.Trigger & "") or (LCase(Message) = BotVars.Trigger & "peons")  Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   AddQ_D "/me " &  LangModule_SendMessage(UserName,268) & Clan.Peons.Count
   
   exit sub
 End If

 If (LCase(Message) = BotVars.Trigger & "") or (LCase(Message) = BotVars.Trigger & "members")  Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   AddQ_D "/me " &  LangModule_SendMessage(UserName,269) & Clan.Members.Count
   
   exit sub
 End If
 
 If (LCase(Message) = BotVars.Trigger & "") or (LCase(Message) = BotVars.Trigger & "grunts")  Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   AddQ_D "/me " &  LangModule_SendMessage(UserName,270) & Clan.Grunts.Count
   
   exit sub
 End If
 
 If (LCase(Message) = BotVars.Trigger & "") or (LCase(Message) = BotVars.Trigger & "shamansonline")  Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   AddQ_D "/me " &  LangModule_SendMessage(UserName,271) & ClanShamansOnline
   
   exit sub
 End If
 
 If (LCase(Message) = BotVars.Trigger & "") or (LCase(Message) = BotVars.Trigger & "chief")  Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   AddQ_D  "/me " & LangModule_SendMessage(UserName,105) & Clan.Chieftain.Name
   
   exit sub
 End If

 If (LCase(Message) = BotVars.Trigger & "") or (LCase(Message) = BotVars.Trigger & "site")  Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   AddQ_D  "/me " & LangModule_SendMessage(UserName,106) & ClanSite
   
   exit sub
 End If

 If (LCase(Message) = BotVars.Trigger & "top5") Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   if LenMas(TP) < 4 then
    AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,107)
	
    exit sub
   end if
   
   AddQ_D "/w " & UserName & " 1)" & TP(0) & ":" & TS(0) & ",2)" & TP(1) & ":" & TS(1) & ",3)" & TP(2) & ":" & TS(2) & ",4)" & TP(3) & ":" & TS(3) & ",5)" & TP(4) & ":" & TS(4)
   
   exit sub
 End If

 If (LCase(Message) = BotVars.Trigger & "sptop5") Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   if LenMas(dmSpeed_Players) < 4 then
    AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,107)
	
    exit sub
   end if
   If blSpeedChl_Enabled = True Then Call InsSort(dmSpeed_Scores,dmSpeed_Players)
   AddQ_D "/w " & UserName & " 1)" & dmSpeed_Players(0) & ":" & dmSpeed_Scores(0) & ",2)" & dmSpeed_Players(1) & ":" & dmSpeed_Scores(1) & ",3)" & dmSpeed_Players(2) & ":" & dmSpeed_Scores(2) & ",4)" & dmSpeed_Players(3) & ":" & dmSpeed_Scores(3) & ",5)" & dmSpeed_Players(4) & ":" & dmSpeed_Scores(4)
   
   exit sub
 End If

 If LCase(InStr(Message, BotVars.Trigger & "tscore")) > 0 Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   if LenMas(TP) = 0 then
    AddQ_D "/w " & UserName &  LangModule_SendMessage(UserName,108)
	
    exit sub
   end if
   Dim ix, NickName
   If Len(Message) = 7 Then
    NickName = UserName
   Else
    NickName = Mid (Message, 9, (Len(Message))-8)
   End if
   Dim z
   z = LenMas (TP)
   For ix = 0 to z
    If LCase (NickName) = LCase (TP(ix)) then
	 If LCase(NickName) = LCase (UserName) Then
	  AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,109) & TS(ix) & LangModule_SendMessage(UserName,303) & ix + 1 & "\" & z + 1
	  
	 Else
	  AddQ_D "/w " & UserName & " " & NickName & LangModule_SendMessage(UserName,110) & TS(ix) & LangModule_SendMessage(UserName,303) & ix + 1 & "\" & z + 1
	  
	 End if
	 exit sub
	end if
   next
   AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,108)
   
   exit sub
 End If

 If LCase(InStr(Message, BotVars.Trigger & "spscore")) > 0 Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   if LenMas(dmSpeed_Players) = 0 then
    AddQ_D "/w " & UserName &  LangModule_SendMessage(UserName,108)
	
    exit sub
   end if
   
   If Len(Message) = 8 Then
    NickName = UserName
   Else
    NickName = Mid (Message, 10, (Len(Message))-9)
   End if
   For ix = 0 to LenMas (dmSpeed_Players)
    If LCase (NickName) = LCase (dmSpeed_Players(ix)) then
	 If LCase(NickName) = LCase (UserName) Then
	  AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,111) & dmSpeed_Scores(ix)
	  
	 Else
	  AddQ_D "/w " & UserName & " " & NickName & LangModule_SendMessage(UserName,112) & dmSpeed_Players(ix)
	  
	 End if
	 exit sub
	end if
   next
   AddQ_D "/w " & UserName &  LangModule_SendMessage(UserName,108)
   
   exit sub
 End If

 If (LCase(Message) = BotVars.Trigger & "") or (LCase(Message) = BotVars.Trigger & "creator")  Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   AddQ_D  "/me " &  LangModule_SendMessage(UserName,113)
   
   exit sub
 End If

 If LCase(InStr(Message, BotVars.Trigger & "myaccess")) > 0 Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   GetDBEntry UserName, myAccess, myFlags
   
   AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,219) & myAccess & LangModule_SendMessage(UserName,220) & myFlags
 End If

 If (LCase(Message) = BotVars.Trigger & "") or (LCase(Message) = BotVars.Trigger & "")   Then
  if AntiFloodSystem_Use(UserName) <> 0 then exit sub
  AddQ_D "/w " & UserName & LangModule_SendMessage(UserName,114)
  
  exit sub
 End If

 If (LCase(Left(Message,6) = BotVars.Trigger & "")) or (LCase(Left(Message,6) = BotVars.Trigger & "innet")) Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   If GetInternalDataByUsername(Trim(Mid(Message,7)),6) > - 5 Then
    AddQ_D  "/w " & UserName & " " & Trim(Mid(Message, 7))  & LangModule_SendMessage(UserName,261) & GetInternalDataByUsername(Trim(Mid(Message,7)),6) & LangModule_SendMessage(UserName,262)
   Else
    AddQ_D  "/w " & UserName & " " & Trim(Mid(Message, 7))  & LangModule_SendMessage(UserName,263)
   End if
   
   exit sub
 End If

 If (LCase(Left(Message,7) = BotVars.Trigger & "")) or (LCase(Left(Message,7) = BotVars.Trigger & "silent")) Then
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
   If GetInternalDataByUsername(Trim(Mid(Message,8)),7) > - 5 Then
    AddQ_D  "/w " & UserName & " " & Trim(Mid(Message, 8))  & LangModule_SendMessage(UserName,264) & ExtractTime(GetInternalDataByUsername(Trim(Mid(Message,8)),7))
    AddCHat RGB(0,218,0), LMT(254) & UserName & " " & Trim(Mid(Message, 8))  & LangModule_SendMessage(UserName,264) & ExtractTime(GetInternalDataByUsername(Trim(Mid(Message,8)),7))
   Else
    AddQ_D  "/w " & UserName & " " & Trim(Mid(Message, 8))  & LangModule_SendMessage(UserName,263)
    AddCHat RGB(0,218,0), LMT(254) & UserName & " " & Trim(Mid(Message, 8))  & LangModule_SendMessage(UserName,263)
   End if
   
   exit sub
 End If
 
End Sub

Sub ReadFile(Path)
 Dim fso, file, read_string, cLine,i
 AddCHat vbBlue, "==================================="
 AddChat vbGreen, LMT(115) & Path
 AddCHat vbBlue, "==================================="
 Set fso = CreateObject("Scripting.FileSystemObject")
 If Not fso.FileExists(Path) Then
   AddChat vbRed, "!   !   Path  !"
   
   AddQ_D "/w " & UserName & " " & "!   !" ,1
   Exit Sub
 End If
 Set file = fso.OpenTextFile(Path, 1, True)
 i = 1
 Do While file.AtEndOfStream <> True
  read_string = file.ReadLine
  If read_string <>"" Then
   AddChat vbWhite,"  " & read_string
  End IF
  i=i+1
 loop
 AddCHat vbBlue, "==================================="
 AddChat vbGreen, " " & i-1 & " "
 AddCHat vbBlue, "==================================="
 file.Close
 Exit Sub
End sub

Sub ReadNews

 call PrintURLToFile("News.txt", GetConfigEntry("Other", "NewsFile", "config.ini") )
 Call readFile("News.txt")
End sub

Function AdminAvaible
 If BotFlags And 2 then
  AdminAvaible = True
 else
  AdminAvaible = False
 end if
End function

Sub Event_Load()
 GetDBEntry UserName, UserAccess, UserFlags
 
 addChat RGB(182,118,179), "================================"
 addChat RGB(53,131,169), "=============SaiSoft==============="
 If Init=1 then
  AddChat RGB(0,215,0),LMT(116)
 else
  AddChat vbRed,LMT(117)
  scTimer.Enabled = False
 End if
 AddChat RGB(0,93,138),LMT(118)
 If Load_Modules=1 then
  AddChat RGB(0,215,0),LMT(119)
 else
  AddChat vbRed,LMT(120)
  scTimer.Enabled = False
 End if
 AddChat RGB(0,215,179),LMT(121)
 If Final_load=1 then
  AddChat RGB(0,215,0),LMT(122)
 else
  AddChat vbRed,LMT(123)
  scTimer.Enabled = False
 End if
 addChat RGB(53,131,169), "=============SaiSoft==============="
 addChat RGB(182,118,179), "================================"
 If AntiMatFriendlyShield = True Then AddCHat RGB(100,193,136), LMT(255)
 
End Sub

Sub Event_LoggedOn(Username, Product)

End Sub

Sub Event_ClanMOTD(Message)
 Exit sub
 If iMOTDFirstShow = 2 Then 
  iMOTDFirstShow = 1
  exit sub
 ElseIf iMOTDFirstShow = 1 Then
  iMOTDFirstShow = 0
  On error resume next
  addChat RGB(182,118,179),  StrConv(Message,LMT(228),LMT(229))
 End if
  
End sub 

Sub Event_ServerInfo(Message)
 If ClanInvite_Enabled = True Then
  call ClanInvite_Event_ServerInfo(Message)
 End if
 call ACCD_Event_ServerInfo(Message)
End Sub

Const SID_CHATEVENT  = &H0F
Const EID_JOIN       = &H02
Const EID_TALK       = &H05

Private Sub RECV_SID_CHATEVENT(inBuff)
    Dim EventID
    Dim Flags
    Dim Ping
    Dim IPAddr
    Dim AcctNum
    Dim RegAuth
    Dim Username
    Dim Text
    Dim outBuff
    
    With inBuff
        EventID  = .GetDWORD()
        Flags    = .GetDWORD()
        Ping     = .GetDWORD()
        IPAddr   = .GetDWORD()
        AcctNum  = .GetDWORD()
        RegAuth  = .GetDWORD()
        Username = .GetString()
        Text     = .GetString()
    End With
    
    Set outBuff = SSC.DataBufferEx()
    
    With outBuff
        
        .InsertByte  &HFF 
        .InsertByte  SID_CHATEVENT
        .InsertWord  0 
        
        .InsertDWORD EventID
        .InsertDWORD Flags
        .InsertDWORD Ping
        .InsertDWORD IPAddr
        .InsertDWORD AcctNum
        .InsertDWORD RegAuth
        .InsertNTString CStr(Username)
    End With
    
    Select Case EventID
        Case EID_JOIN:
            
			AddChat RGB(0,153,204), LMT(288), vbYellow,Username,vbGreen, LMT(289) 
			
			If (AntiSpam_Enabled = True) and (Flags = 32) and (AdminAvaible = True) Then
			 if MasAddUser(dmAntiSpamU,UserName) = 1 Then AddCHat vbGreen, LMT(294), vbYellow,UserName & LMT(295)
			 If AntiSpam.Enabled = False Then AntiSpam.Enabled = True
			End if
			 If (AntiSpam_Enabled = True) and (InStr(UserName,"@") > 0) and (AdminAvaible = True) Then 
			  If AntiSpam.Enabled = False Then AntiSpam.Enabled = True
			  AddQ_D "/squelch " & UserName
			  iAntiSpamv2_CurUserSpam = iAntiSpamv2_CurUserSpam + 1
			  AddChat RGB(0,153,204), iAntiSpamv2_CurUserSpam
			  If iAntiSpamv2_CurUserSpam = 10 Then
			   If AntiSpamv2.Enabled = False Then AntiSpamv2.Enabled = True
			   AddQ_D LMT(290)
			   AddCHat vbGreen, LMT(291), vbYellow, LMT(292)
			   AddQ_D LMT(293)
			   Exit sub
			  End if
              if MasAddUser(dmAntiSpamU,UserName) = 1 Then AddCHat vbGreen, LMT(294), vbYellow,UserName & LMT(295)
              Exit sub
             End if
             
        Case EID_TALK:
	     
    End Select
 
    outBuff.Clear
    Set outBuff = Nothing
End Sub

Sub Event_PacketReceived(Protocol, ID, Length, Data)
  
  If AntiStealth_Enabled = False then exit sub
    Dim inBuff
    Set inBuff = SSC.DataBufferEx()
    inBuff.Data = Mid(Data, 5) 
    If UCase(Protocol) = "BNCS" Then
        Select Case ID
            Case SID_CHATEVENT: Call RECV_SID_CHATEVENT(inBuff)
        End Select
    End If

  On error resume next
 If Id = 15 Then
  ParsedData = Mid(Data,InStr(Data,MyUserName) + Len(MyUserName) + 1,Length - InStr(Data,MyUserName) -  Len(MyUserName) - 1)
  ParsedData = StrConv(ParsedData,LMT(228),LMT(229))
  If ParsedData = "No one hears you." Then
   If (Trivia_enabled = True) Then
    Trivia_enabled = "Halt"
    next_q = True
    AddChat RGB(0,153,204),"[Trivia] ", vbGreen, LMT(1)
   end If
   If (Reclame.Enabled = True) Then
    Reclame_module = "Halt"
    Reclame.Enabled = False
   end If
   If (blSpeedChl_Enabled = True) Then
    blSpeedChl_Enabled = "Halt"
    blSpeedChl_NextQ = True
    AddChat vbGreen, LMT(44)
   end If
  addChat RGB(0,153,204),  LMT(235)
  VetoThisMessage
 ElseIf ParsedData =  "You have been disconnected for flooding." Then
  addChat RGB(182,118,179),  LMT(236)
  VetoThisMessage
 ElseIf ParsedData =  "Battle.net help topics:" Then
  addChat RGB(0,153,204),  LMT(256)
  VetoThisMessage
 ElseIf ParsedData =  "Type /help TOPIC for information about a specific topic." Then
  addChat RGB(117,89,210),  LMT(257)
  VetoThisMessage
 ElseIf ParsedData =   "Welcome to Battle.net!" Then
  addChat RGB(0,153,204),  LMT(237)
  VetoThisMessage
 ElseIf Left(ParsedData,24) = "This server is hosted by" Then
  addChat RGB(0,153,204),  LMT(238) & Mid(ParsedData,26, Len(ParsedData) - 25)
  VetoThisMessage
 ElseIf Left(ParsedData,19) = "There are currently" Then
 sTempString = Mid (ParsedData,InStr(ParsedData,"III"), Len(ParsedData) - InStr(ParsedData,"III") + 1)
 addChat RGB(0,153,204),  LMT(239) & Mid(ParsedData,(InStr(ParsedData,"currently")) + 10 , InStr(ParsedData,"users") - InStr(ParsedData,"currently") - 10 ) & LMT(240) & Mid(ParsedData,(InStr(ParsedData,"playing")) + 8 , InStr(ParsedData,"games") - InStr(ParsedData,"playing") - 8 ) & LMT(242)  &  Mid(sTempString,(InStr(sTempString,"and")) + 4 , InStr(sTempString,"users") - InStr(sTempString,"and") - 4 ) & LMT(240) & Mid(sTempString,(InStr(sTempString,"playing")) + 8 , InStr(sTempString,"games") - InStr(sTempString,"playing") - 8 ) & LMT(243)
 VetoThisMessage
 ElseIf (Left(ParsedData,10)) = "Last logon" Then
  addChat RGB(0,153,204),  LMT(241) & Mid(ParsedData,11, Len(ParsedData) - 10) & LMT(246)
  VetoThisMessage
 ElseIf (Left(ParsedData,10)) = "Last Logon" Then
  addChat RGB(0,153,204),  LMT(241) & Mid(ParsedData,11, Len(ParsedData) - 27) & LMT(245)
  VetoThisMessage
 ElseIf LCase(Left(ParsedData,15)) = "account created" Then
  addChat RGB(0,153,204),  LMT(244) & Mid(ParsedData,16, Len(ParsedData) - 32) & LMT(245)
  VetoThisMessage
 ElseIf LCase(Left(ParsedData,11)) = "last logoff" Then
  addChat RGB(0,153,204),  LMT(247) & Mid(ParsedData,12, Len(ParsedData) - 28) & LMT(245)
  VetoThisMessage
 ElseIf LCase(Left(ParsedData,11)) = "time logged" Then
  addChat RGB(0,153,204),  LMT(248) & Mid(ParsedData,12, Len(ParsedData) - 11)
  VetoThisMessage
  
 ElseIf InStr(ParsedData, "was kicked out of the channel by") Then
  
  addChat RGB(236,213,106), Replace(ParsedData,"was kicked out of the channel by",LMT(251))
  VetoThisMessage
 ElseIf InStr(ParsedData, "was banned by") Then
  
  addChat RGB(209,69,69),Replace(ParsedData,"was banned by",LMT(252))
 ElseIf InStr(ParsedData, "not a channel operator") Then
  addChat RGB(209,69,69),Replace(ParsedData,"You are not a channel operator",LMT(299))
  VetoThisMessage
 ElseIf InStr(ParsedData, "was unbanned by") Then
  addChat RGB(42,182,120), Mid(ParsedData,1,(InStr(ParsedData,"was")) - 1 ) & LMT(253) & myChannel & "," & myUsername & "."
 ElseIf InStr(ParsedData, "has been squelched") Then
  addChat RGB(200,90,200), Mid(ParsedData,1,(InStr(ParsedData,"has")) - 1 ) & LMT(259)
  VetoThisMessage
  ElseIf InStr(ParsedData, "has been unsquelched") Then
  addChat RGB(42,182,120), Mid(ParsedData,1,(InStr(ParsedData,"has")) - 1 ) & LMT(260)
 ElseIf InStr(ParsedData, "That user is not logged on.") Then
  addChat RGB(255,68,89),  LMT(249)
  VetoThisMessage
 ElseIf InStr(ParsedData, "That user is not banned.") Then
  addChat RGB(255,68,89),  LMT(250)
  VetoThisMessage
 Else
  
 End if
 If (Message =  "You have been disconnected for flooding.") and (Trivia_enabled = True) Then
  Trivia_enabled = "Halt"
  next_q = True
  AddChat vbGreen, LMT(42)
 end If
 If (Message = "You have been disconnected for flooding.") and (Reclame_module = True) Then
  Reclame_module = "Halt"
  Reclame.Enabled = False
  AddChat vbGreen, LMT(43)
 end If
 If (Message = "You have been disconnected for flooding.") and (blSpeedChl_Enabled = True) Then
  blSpeedChl_Enabled = "Halt"
  blSpeedChl_NextQ = True
  AddChat vbGreen, LMT(45)
 end If
 
  exit sub
  Set FSO = CreateObject("Scripting.FileSystemObject")
  Set TextStream = FSO.CreateTextFile("C:\Test.txt",8,0)
  TextStream.Write("| " & Data & " |" & CHR(13))
  TextStream.close
  
  Set file = fso.OpenTextFile("C:\Test.txt", 1, True,-2)	
  ReadyData = file.ReadAll
  file.close
  on error resume next
  ReadyData = Mid(ReadyData,InStr(ReadyData,MyUserName),Length - InStr(ReadyData,MyUserName))
  AddCHat vbRed,ReadyData
  
  exit sub
   
 End if
End sub

Sub Event_ServerError(Message)
 
 If ClanInvite_Enabled = True Then
  Call ClanInvite_Event_ServerError(message)
 End if
 call ACCD_Event_ServerInfo(Message)
End Sub

Sub Event_UserTalk(UserName, Flags, Message, Ping)
 sAntiMatAdminName = ""
 
 If AntiSpam_Enabled = True Then
 
 End if
 If (AntiSpam_Enabled = True) and (InStr(UserName,"@") > 0) Then
  
  If AdminAvaible = False Then Exit sub 
  if MasAddUser(dmAntiSpamU,UserName) = 1 Then AddCHat vbGreen, "[AntiSpam] ", vbYellow,UserName & "    "
  Exit sub
 End if
 Message = Trim(Message)
 Call CCE_UserTalk(UserName, Flags, Message, Ping)
 If (Mid (Message,1,1)) = BotVars.Trigger then Call UserTalk(UserName, Flags, Message, Ping)
 If (AntimatExtendAllow = False) and (sAntiMatAdminName <> UserName) then 
  call AntiMat_userTalk(UserName,Message) 
 else 
  If sAntiMatAdminName <> UserName Then Call AntiMat_Extend_Check(UserName,Message) 
 End if
 If blSpeedChl_Enabled = True Then
  call SpeedChl_CheckAnswer(UserName,Message)
 End if
 If blCitysEnabled = True  then
  call Citys_CheckAnswer(UserName,Message)
 End if
 If bWeather_Enabled = True Then
  Call weatherinfo_Event_UserTalk(Username, Flags, Message, Ping)
 End if
 If Trivia_enabled = True Then
  call Trivia_ChkA(UserName,Message)
 End if
 If ClanInvite_Enabled = True Then
  call ClanInvite_Event_UserTalk(Username, Flags, Message, Ping)
 End if

 If Left(LCase(Message),5) = BotVars.Trigger & "help" then Call Help_system_check_message_V2(Message,UserName)
 If Mid(Message,1,1) = "." then Call Tourney_UserTalk(UserName,Message)
End Sub

Sub Event_UserEmote(UserName, Flags, Message)
 If (AntiSpam_Enabled = True) and (InStr(UserName,"@") > 0) Then
  
  If AdminAvaible = False Then Exit sub 
  if MasAddUser(dmAntiSpamU,UserName) = 1 Then AddCHat vbGreen, "[AntiSpam] ", vbYellow,UserName & "    "
  If AntiSpam.Enabled = False Then AntiSpam.Enabled = True
  Exit sub
 End if
  If AntimatExtendAllow = False then call AntiMat_userTalk(UserName, Message) else Call AntiMat_Extend_Check(UserName, Message) End if
End Sub

Sub Event_WhisperFromUser(Username, Flags, Message, Ping)
 If ClanInvite_Enabled = True Then
  If (LCase(Message) = BotVars.Trigger & "join")  Then
   Call ClanInvite_Event_WhisperFromUser(Username, Flags, Message)
  End if
 End if
 If Mid(Message,1,1) <> BotVars.Trigger Then
  If BotChat = True then
   If MyUserName = UserName Then exit sub
   call BotChat_WhisperFromUser(UserName,Message)
  End if
 else
  If bAntiFloodAllowPMCmd Then  call Event_UserTalk(UserName, Flags, Message, Ping)
 End if
End Sub

Sub Event_UserJoins(Username, Flags, Message, Ping, Product, Level, OriginalStatstring, Banned)
 If (AntiSpam_Enabled = True) and (InStr(UserName,"@") > 0) Then
  
  If AdminAvaible = False Then Exit sub 
  if MasAddUser(dmAntiSpamU,UserName) = 1 Then AddCHat vbGreen, "[AntiSpam] ", vbYellow,UserName & "    "
  If AntiSpam.Enabled = False Then AntiSpam.Enabled = True
  exit sub
 End if

 
 If Ping =< 0 Then
  If bIgnoreBots = True Then
   AddQ_D "/ignore " & UserName
   AddCHat RGB(200,89,200), LMT(259)
   
  End if
  exit sub
 End if
 If (AntiMat_enable = True) and (AntiMat_Ban_UnMannernNickName = True) Then call AntiMat_Extend_Check_UserNickName(Username)
 If SaiMail_activated = True Then
  IF SaiMail_UserJoins(UserName) = 0 Then
  call stnd_UserJoins(UserName, Flags, Message, Ping, Product, GetLVL(OriginalStatstring), OriginalStatstring)
  End IF
 Else
  call stnd_UserJoins(UserName, Flags, Message, Ping, Product, GetLVL(OriginalStatstring), OriginalStatstring)
 End if
 If  ClanBan = True then Call AntiMat_Clan_Kick(UserName)
End Sub

Sub Event_UserLeaves(UserName, Flags)
 If blNewsReader_Enabled Then Call NewsReader_UserLeaves(UserName)
 If (AntiSpam_Enabled = True) and (InStr(UserName,"@") > 0) Then
  
  If AdminAvaible = False Then Exit sub 
  if MasAddUser(dmAntiSpamU,UserName) = 1 Then AddCHat vbGreen, "[AntiSpam] ", vbYellow,UserName & "    "
  exit sub
 End if
 if OutMes = 0 then Exit Sub
 Call Stnd_UserLeaves(UserName, Flags)
End SUb

Sub Event_FlagUpdate(UserName, NewFlags, Ping)

End Sub

Sub Event_UserInChannel(Username, Flags, Message, Ping, Product, StatUpdate)

End Sub

Sub Event_ChannelJoin(ChannelName, Flags)
 
 If trivia_enabled=True then next_q = True
End Sub

Sub scTimer_Timer()
 call AntiMat_Check_Time
 If ClanInvite_Enabled = True Then
  If f_check_stats = True Then
   call ClanInvite_Timer()
  End if
 End If
End Sub

Sub Event_PressedEnter(Text)
 If (Left(LCase(Text), 11) = BotVars.Trigger & "newsupdate") Then
  If blNewsReader_Enabled = False Then exit sub
  VetoThisMessage()
  Call NewsReader_Load()
  exit sub
 End if
 If LCase(Text) = BotVars.Trigger & "reloadaccess" Then
  VetoThisMessage()
  Call LoadAccessSettings
  exit sub
 End if
 Call Event_UserTalk(myUsername, 0, Text, -1)
 
End Sub

Sub Event_KeyReturn(KeyName, KeyValue)

End Sub

Sub Event_Close()
 AddCHat vbWhite , LMT(124)
 If AntiMat_enable = True Then Call AntiMat_Save
 If Tourney_activated = True Then Call Tourney_Save
 If SaiMail_activated = True Then Call SaiMail_Save
 If Auto_ChCdKey = True Then Call ACCD_Close
 Call WriteConfigEntry("UltimateBot", "blCurrentStatus","Off","")
End Sub

Sub Help_system_show_help_v2(String1,NickName)
 Dim i
 i = 0
 Do while (LenMas(dmHelp_Word)) => i
  If LCase(dmHelp_Word(i)) = LCase (String1) then
   If MyUserName = NickName Then
    AddCHat RGB(98,186,255), dmHelp_Topic(i)
    exit sub
   End if
   AddQ_D "/w " & NickName & " " & dmHelp_Topic(i)
   
   exit sub
  end if
  i = i + 1
 Loop
 i = 0
 Do while (LenMas(dmHelp_Word)) => i
  If LCase(dmHelp_Word(i)) = LCase ("help") then
   If MyUserName = NickName Then
    AddCHat RGB(98,186,255), dmHelp_Topic(i)
    exit sub
   End if
   AddQ_D "/w " & NickName & " " & dmHelp_Topic(i)
   
   exit sub
  end if
  i = i + 1
 Loop
 If MyUserName = NickName Then
  AddCHat RGB(98,186,255), LMT(125)
  exit sub
 End if
 AddQ_D "/w " & NickName & LangModule_SendMessage(NickName,125)
end sub

Sub Help_system_Load_V2
 Call Load_file_dm (Help_system_FilePath,dmHelp_Word,dmHelp_Topic,"*")
end sub

Sub Help_system_check_message_V2(String1,NickName)
 If Len(String1) > 6 then
  String1 = LCase (Mid (String1,7,(Len(String1))-6))
  Call Help_system_show_help_V2(String1,NickName)
 else
  Call Help_system_show_help_V2("help",NickName)
 End if
end sub

Sub Help_system_check_message(String1,NickName)
 If Len(String1) > 6 then
  String1 = LCase (Mid (String1,7,(Len(String1))-6))
  Call Help_system_show_help(String1,NickName)
 else
  Call Help_system_show_help(" ",NickName)
 End if
end sub

Sub LangModule_Load
 If CurrentLang="RU" Then
  Call Load_file_dm (LangFilePath,LMN,LMT,"|")
  AddChat vbGreen, LMT(0)
 Else
  Call Load_file_dm (LangFilePath,LMT,LMN,"|")
  AddChat vbGreen, LMT(0)
 End If
 Call Load_File_dm("scripts\UltimateBot\MultiInterface.txt",dmLangUsers,dmLangCLang,"|")
end Sub

Function LangModule_SendMessage(UserName,NumbMessage)
  Dim iLangModPPos
  iLangModPPos = -1
  If Username <> "" Then
   iLangModPPos = PosMas(UserName,dmLangUsers)
   If iLangModPPos => 0 Then
    IF LCase(dmLangCLang(iLangModPPos)) = "ru" Then
     If CurrentLang = "RU" Then
	  
	  LangModule_SendMessage = LMT(NumbMessage)
	 Else
	  
	  LangModule_SendMessage = LMN(NumbMessage)
	 End If
	 exit Function
	ElseIf LCase(dmLangCLang(iLangModPPos)) = "en" Then
	 If CurrentLang = "RU" Then
	  
	  LangModule_SendMessage = LMN(NumbMessage)
	 Else
	  
	  LangModule_SendMessage = LMT(NumbMessage)
	 End If
	 Exit Function
	End if
   End If
  End if
  
  LangModule_SendMessage = LMT(NumbMessage)
End Function

Sub LangModule_Use(UserName,Lang)
 Dim i
 i = CountMas(dmLangUsers)
 If i = 0 Then
  dmLangUsers(0) = UserName
  dmLangCLang(0) = Lang
  AddCHat vbBlue, UserName & "    : " & Lang
  AddQ_D "/w " & UserName & "     : " & Lang
  addChat vbRed, CountMas(dmLangUsers)
  Call Save_File_dm("scripts\UltimateBot\MultiInterface.txt",dmLangUsers,dmLangCLang,LenMas(dmLangUsers),"|")
  exit Sub
 Else
  If PosMas(UserName,dmLangUsers)= -1 Then
   ReDim preserve dmLangUsers(i)
   ReDim preserve dmLangCLang(i)
   dmLangUsers(i) = UserName
   dmLangCLang(i) = Lang
   If Lang = "en" Then
    AddCHat vbBlue, UserName & " has selected interface language: " & Lang
    AddQ_D "/w " & UserName & " You selected interface language: " & Lang
   Else
    AddCHat vbBlue, UserName & "    : " & Lang
    AddQ_D "/w " & UserName & "     : " & Lang
   End if
   Call Save_File_dm("scripts\UltimateBot\MultiInterface.txt",dmLangUsers,dmLangCLang,LenMas(dmLangUsers),"|")
  else
   dmLangCLang(PosMas(UserName,dmLangUsers)) = Lang
   
  If Lang = "en" Then
   AddCHat vbBlue, UserName & " has selected interface language: " & Lang
   AddQ_D "/w " & UserName & " You selected interface language: " & Lang
  Else
   AddCHat vbBlue, UserName & "    : " & Lang
   AddQ_D "/w " & UserName & "     : " & Lang
  End if
  Call Save_File_dm("scripts\UltimateBot\MultiInterface.txt",dmLangUsers,dmLangCLang,LenMas(dmLangUsers),"|")
  end if
 end if
End Sub

Sub Trivia_Timer()
 Dim Triv_iProc
 If trivia_enabled = True then 
  
  if (Connection_status <> "ok") and (Connection_status <> "unknown") Then exit sub
  If next_q = True then
   call Trivia_Question
   exit sub
  end if
  If LenT=-1 then
   Call Trivia_restart
   Exit sub
  End if
  If Trivia_hint_count=-1 then
   call Trivia_Question
   exit sub
  end if
  
  Triv_iProc=Int((Trivia_iProcentH*(Len(TA(Numb))))\100)
  
  If Trivia_hint_count=>Triv_iProc Then
   
   AddQ_D LMT(126) & TA(Numb)
   Call trivia_swap 
   
   next_q = True
   exit sub
  End if
  call Trivia_hint 
  
 end if
End sub

Sub Trivia_QuestionCount
 LenT=LenMas(TQ)
End Sub

SUB Trivia_Question
 If TQ(0)="" then
  AddQ_D "/me " &  LMT(127)
  AddChat vbRed,  LMT(127)
  
  exit sub
 end if
 next_q = False
 Randomize
 Numb=(Int((LenT-1)*RND)+1)
 IF Trivia_AntiBotQ_Enabled Then
  Dim strAntiBotQ,intAntiBotQ
  Randomize
  intAntiBotQ = (Int(100*RND)-50)
  
  strAntiBotQ = replace (TQ(Numb),"","e")
  
  strAntiBotQ = replace (strAntiBotQ,"","a")
  strAntiBotQ = replace (strAntiBotQ,"","o")
  strAntiBotQ = replace (strAntiBotQ,"","y")
  If intAntiBotQ > 0 Then AddQ_D "/me " & intAntiBotQ & strAntiBotQ & "?" else AddQ_D "/me " & strAntiBotQ & intAntiBotQ & "?"
  
 Else
  AddQ_D "/me " & TQ(Numb)
 End if
 
 Trivia_hint_word=""
 Trivia_hint_count=0
 Call Trivia_CInStr(TA(Numb)," ",Slov)
End sub

Sub Trivia_restart
 Call Trivia_QuestionCOunt
 AddChat vbBlue, LMT(128)
 
End sub

Sub Trivia_Load
 Call Load_File_dm(QPath,TQ,TA,Trivia_divide_symbol)
 Call Load_File_dm(PPath,TP,TS,Trivia_score_divide_symbol)
 Call Trivia_QuestionCount 
 next_q = True
end sub

Sub Trivia_Delete_Spaces(word)
 Dim sWord,i
 If Len (word) > 0 then
  sWord =""
  For i=1 to Len (word)
   If  (Mid (Word,i,1)) <> " " then
    sWord = sWord &  (Mid (Word,i,1))
    i = i + 1
   end if
   If Len (sWord)>0 then
    If  ((Mid (Word,i,1)) = " ") and (i < Len (word)) then
	 if ((Mid (Word,i+1,1)) = " ") then sWord = sWord &  " "
    end if 
    If  ((Mid (Word,i,1)) <> " ") then sWord = sWord &  (Mid (Word,i,1))
   end if
  next
  Word = sWord
 end if
end sub

Sub Trivia_Add_Spaces(word)
 Dim i,sWord
 If Len (Word) > 0 then
  sWord = ""
  For i=1 to Len (word)
   If Mid (Word,i,1) <> " " then
    sWord = sWord & (Mid (Word,i,1)) & " "
   else
    sWord = sWord & " "
   end if
  next
  
  word = sWord
 end if
end Sub

Sub Trivia_Hint
 Dim Hint,Ix,Random,H,WH
 Hint = TA(Numb)
 Trivia_hint_count=Trivia_hint_count+1
 Ix=0
 Randomize
 Random=0
 H=""
 wh = ""
 Randomize
 If InStr(Trivia_hint_word, "_") > 0 Then
  Do while H<>"_"
   Random=Int((Len(Trivia_hint_word)-1)*RND+1)
   H=Mid(Trivia_hint_word,Random,1)
  Loop
  If (Trivia_show_spaces = True ) and ((Mid(Trivia_hint_word,Random,1))=" ") Then
   Do while (H<>"_") and (H <>" ")
   Random=Int((Len(Trivia_hint_word)-1)*RND+1)
   H=Mid(Trivia_hint_word,Random,1)
   Loop
  end if
 
 end if
 If InStr(Trivia_hint_word, "_") = 0 Then
  If (Trivia_show_spaces = True ) then
   H=" "
   Do while (H = " ")
	Random=Int((Len(Hint)-1)*RND+1)
    H=Mid(Hint,Random,1)
   Loop
  Else
   Random=Int((Len(Hint)-1)*RND+1)
  end if
 End if
 For Ix=1 to (Len(Hint))
   H=Mid(Hint,Ix,1)
   If ( Trivia_show_spaces = True ) and ( H = " " ) then WH=WH&" "
   If (Ix=Random) then WH=WH&H
   If (Ix<>Random) and ( Trivia_show_spaces = True ) and ( H <> " " ) Then WH=WH&"_"
   If (Ix<>Random) and ( Trivia_show_spaces = False ) Then WH=WH&"_"
   
 Next
 
 If Trivia_hint_word="" then Trivia_hint_word=WH
 If Trivia_Compositing(WH,Trivia_hint_word,"_")=0 then
  
  trivia_enabled = false
 End if
  If ( Trivia_hint_count => 1 ) and ( Trivia_word_spaces = True ) Then call Trivia_Add_Spaces(Trivia_hint_word)
 
  AddQ_D LMT(130) & Slov & LMT(131) & Len(TA(numb)) & LMT(226) & Trivia_hint_word

  If ( Trivia_word_spaces = True ) Then call Trivia_Delete_Spaces(Trivia_hint_word)

End sub

Sub Trivia_CInStr(String1,Symbol,Result) 
 Dim Cop,IX
 Result=0
 IX=1
 Do while IX<Len(String1)
  Do While ((Mid(String1,IX,1))<>Symbol) and (IX<Len(String1))
   IX=IX+1
  Loop
  Result=Result+1
  IF IX=>Len(String1) then exit sub
  Do while ((Mid(String1,IX,1))=Symbol) and (IX<Len(String1))
   IX=IX+1
  Loop
 Loop
end sub

Function Trivia_Compositing(String1,String2,Symbol) 
 Dim Ix,ComposString1,ComposString2,ComposRes,ComposT
 Trivia_Compositing=0
 
 If Len(string1)<>Len(string2) then exit Function
 For ix=1 to len(String1)
  ComposT=""
  ComposString1=Mid(String1,Ix,1)
  ComposString2=Mid(String2,Ix,1)
  If ComposString1<>ComposString2 then
   If ComposString1=Symbol then ComposT=ComposString2 else ComposT=ComposString1
  end if
  If ComposT<>"" then ComposRes=ComposRes&ComposT else ComposRes=ComposRes & ComposString1
 Next
 String2=ComposRes
 Trivia_Compositing=1
End Function

Function Trivia_ChkA(TrivNick,Answer)
 Dim TempS,TempO,ix,i,intCurrentPos
 ix=0
 Trivia_ChkA = 0
 if next_q = True then exit function
 If (LCase(Answer)=LCase(TA(Numb))) or (((Trivia_Comparing(answer,TA(Numb)))/Len(TA(Numb))*100)=>(100-Trivia_iProcentA)) Then 
  
  Trivia_ChkA=1
  
  LenP = LenMas(TP)
  next_q = True
  Do while ix<=LenP
   If LCase(Tp(ix))=LCase(TrivNick) then 
    TS(ix)=TS(ix) + 1
	Trivia_InsertNickName(TrivNick)
	intCurrentPos = (ix + 1 - intTrivCurPlace )
	If Int(intCurrentPos) > 0 Then intCurrentPos = "+" & intCurrentPos
	If LCase(Answer)<>LCase(TA(Numb)) Then
	 AddQ_D LMT(132) & TrivNick & LMT(133) & TA(Numb) & LMT(134)& TS(ix) & LMT(135) & intTrivCurPlace & "\" & LenP + 1 & "(" & intCurrentPos & ")"
	Else
	 AddQ_D LMT(136) & TrivNick &  LMT(133) & TA(Numb) & LMT(134) & TS(ix) & LMT(135) & intTrivCurPlace & "\" & LenP + 1 & "(" & intCurrentPos & ")"
	End If
	
	Call trivia_swap
	
	Call Save_File_dm(PPath,TP,TS,LenMas(Tp),Trivia_score_divide_symbol)
	Exit Function
   end if
   ix = ix + 1
  Loop
  LenP = LenMas(TP)
  If Tp(LenP) <> "" then LenP = LenP +1
  ReDim preserve TP(LenP)
  TP(LenP)=TrivNick
  ReDim preserve TS(LenP)
  TS(LenP)=1
  If  LCase(Answer)<>LCase(TA(Numb)) Then
   AddQ_D LMT(132) & TrivNick & LMT(133) & TA(Numb) & LMT(134) & TS(LenP) & LMT(135) & LenP + 1 & "\" & LenP + 1
  Else
   AddQ_D LMT(136) & TrivNick & LMT(133) & TA(Numb) & LMT(137) & LenP + 1 & "\" & LenP + 1
  End if
  
  Call Save_File_dm(PPath,TP,TS,LenP,Trivia_score_divide_symbol)
  Call trivia_swap 
 
  next_q = True
 end if
End Function

Function Trivia_InsertNickName_old(NickName)
  addChat vbBlue , "Trivia_InsertNickName(NickName)"
  Dim i,intCurrentPos,strNickName,strScore
  intCurrentPos = PosMas(NickName,TP)
  If intCurrentPos = -1 Then 
   AddCHat vbBlue, "    "
   exit function
  End if
  i = LenMas(TS)
  If (intCurrentPos = 0) Then exit function
  If Int(TS(intCurrentPos - 1)) < Int(TS(intCurrentPos)) Then 
   strNickName = TP(intCurrentPos - 1) 
   strScore = TS(intCurrentPos - 1)
   TP(intCurrentPos - 1) = TP(intCurrentPos)
   TS(intCurrentPos - 1) = TS(intCurrentPos)
   TP(intCurrentPos) = strNickName
   TS(intCurrentPos) = strScore
  End if
  
End function

Function Trivia_InsertNickName(NickName)
  
  Dim i,intCurrentPos,strNickName,strScore
  intCurrentPos = PosMas(NickName,TP)
  intTrivCurPlace = intCurrentPos + 1
  If intCurrentPos = -1 Then 
   AddCHat vbBlue, "    "
   exit function
  End if
  
  i = LenMas(TS)
  If (intCurrentPos = 0) Then exit function
  If intCurrentPos = 1 Then
   If Int(TS(intCurrentPos - 1)) < Int(TS(intCurrentPos)) Then 
    strNickName = TP(intCurrentPos - 1) 
    strScore = TS(intCurrentPos - 1)
    TP(intCurrentPos - 1) = TP(intCurrentPos)
    TS(intCurrentPos - 1) = TS(intCurrentPos)
    TP(intCurrentPos) = strNickName
    TS(intCurrentPos) = strScore
	intTrivCurPlace = 1
   End if
  End if
  i = intCurrentPos - 1
  
  Do while (Int(TS(intCurrentPos)) > Int(TS(i))) and (i > 0)
   
   i = i - 1
  Loop
   If ((i + 1) < LenMas(TS))  Then i = i + 1
  
  strNickName = TP(intCurrentPos) 
  strScore = TS(intCurrentPos)
  TP(intCurrentPos) = TP(i)
  TS(intCurrentPos) = TS(i)
  TP(i) = strNickName
  TS(i) = strScore
  intTrivCurPlace = i + 1
End function

Function Trivia_Comparing(String1,String2)
 Dim ix,iR,LenS
 Trivia_Comparing=0
 iR=0
 LenS=Len(String1)
 If Len(string1)<>len(string2) then
  If Len(string1)>len(string2) then
   LenS=Len(String1)
  else
   LenS=Len(String2)
  end if
 End if
 For ix=1 to LenS
  If (LCase(Mid(String1,Ix,1)))<>"" and (LCase(Mid(String2,Ix,1))) <>"" and (LCase(Mid(String1,Ix,1)))=(LCase(Mid(String2,Ix,1))) then iR=IR+1
 Next
 Trivia_Comparing=iR
End function

Sub Trivia_Swap
 
 If LenT=0 then
  ADDChat vbBlue, LMT(138)
  Call Trivia_restart
  Exit sub
 End if
 
 TempS=TQ(numb)
 TempO=TQ(LenT)
 TQ(LenT)=TempS
 TQ(Numb)=TempO
 TempS=TA(numb)
 TempO=TA(LenT)
 TA(LenT)=TempS
 TA(Numb)=TempO
 LenT=LenT-1
 AddChat vbGreen, LMT(139) & LenT
End sub

Sub trivia_update
 call PrintURLToFile("scripts\UltimateBot\Voprosi.txt", GetConfigEntry("Trivia", "Trivia_voprosi", "config.ini") )
 addChat vbRed, "Rename function isnt activated!"
 AddCHat vbblue, LMT(140)
End sub

Sub AntiMat_onOff
 If AntiMat_enable = true then
  Call AntiMat_save
  AntiMat_enable = False
  AddChat vbGreen, LMT(96) &  LMT(59)
  AddQ_D "/me " & LMT(96) & "(v2.0EE)" & LMT(59)
 else
  AntiMat_enable = True
  Call AntiMat_Load
  AddChat vbGreen,  LMT(96) & "(v2.0EE)" & LMT(58)
  
 End if
End sub

Sub AntiMat_state
 dim sState
 If AntiMat_enable = True then
  If ClanBan = True then sState = LMT(94) & LMT(58) else sState = LMT(94) & LMT(59) End if
  If AntiMatExtendAllow = True then sState = sState & LMT(141) & LMT(58) else sState = sState & LMT(141) & LMT(59) End if
  If AutoBan = true then
   AddQ_D "/me " & LMT(142) & iBanTime & LMT(143) & sState
  Else
   AddQ_D "/me " & LMT(144) & sState
  End if
 Else
  AddQ_D "/me " & LMT(96) & LMT(59)
 End if
End sub

Function AntiMat_addWord(string1) 
 Dim i, MaxMas
 MaxMas = LenMas(dmAntiMat)
 AntiMat_addWord=0
 For i=0 to MaxMas
  If LCase(dmAntiMat(i))=LCase(string1) then
   AntiMat_addWord=1
   addChat vbGreen, LMT(145) & dmAntiMat(i)
   Exit Function
  end if
 Next
 If AntiMat_addWord=0 then
   If dmAntiMat (MaxMas) <> "" then MaxMas = MaxMas +1
   ReDim preserve dmAntiMat(MaxMas)
   dmAntiMat(MaxMas) = string1
 end if
End function

Function AntiMat_delWord (string1) 
 Dim i, MaxMas,sSwapNickName1,sSwapNickName2
 AntiMat_delWord = 0
 MaxMas = LenMas (dmAntiMat)
 If MaxMas = 0 Then
  If LCase(String1) = LCase(dmAntiMat(0)) then
   ReDim dmAntiMat(0)
   AntiMat_delWord = 1
   Call AntiMat_Save
   Exit function
  End if
 End if
 Do while i<= MaxMas
  If LCase(String1) = LCase(dmAntiMat(i)) then
   sSwapNickName1=dmAntiMat(i)
   sSwapNickName2=dmAntiMat(MaxMas)
   dmAntiMat(MaxMas)=sSwapNickName1
   dmAntiMat(i)=sSwapNickName2
   addChat vbGreen, LMT(146) & dmAntiMat(MaxMas)
   MaxMas = MaxMas - 1
   ReDim preserve dmAntiMat(MaxMas)
   AntiMat_delWord = 1
  end if
  I = I + 1
 Loop
 if AntiMat_delWord = 1 then Call AntiMat_Save
End function

Function AntiMat_addClan(string1)
 Dim i, MaxMas
 MaxMas = LenMas(dmClanBan)
 AntiMat_addClan=0
 For i=0 to MaxMas
  If LCase(dmClanBan(i))=LCase(string1) then
   AntiMat_addClan=1
   addChat vbGreen, LMT(147) & dmAntiMat(i)
   Exit Function
  end if
 Next
 If AntiMat_addClan=0 then
   If dmClanBan (MaxMas) <> "" then MaxMas = MaxMas +1
   ReDim preserve dmClanBan(MaxMas)
   dmClanBan(MaxMas) = string1
 end if
end function

Function AntiMat_delClan (string1) 
 Dim i, MaxMas,sSwapNickName1,sSwapNickName2
 AntiMat_delClan = 0
 MaxMas = LenMas (dmClanBan)
 If MaxMas = 0 Then
  If LCase(String1) = LCase(dmClanBan(0)) then
   ReDim dmClanBan(0)
   AntiMat_delClan = 1
   Call AntiMat_Save
   Exit function
  End if
 End if
 Do while i<= MaxMas
  If LCase(String1) = LCase(dmClanBan(i)) then
   sSwapNickName1=dmClanBan(i)
   sSwapNickName2=dmClanBan(MaxMas)
   dmClanBan(MaxMas)=sSwapNickName1
   dmClanBan(i)=sSwapNickName2
   addChat vbGreen, LMT(148) & dmClanBan(MaxMas)
   MaxMas=MaxMas - 1
   ReDim preserve dmClanBan(MaxMas)
   AntiMat_delClan = 1
  end if
  i = i + 1
 Loop
 if AntiMat_delClan = 1 then Call AntiMat_Save
End function

Function AntiMat_addIgnorWord(string1) 
 Dim i, MaxMas
 MaxMas = LenMas(dmAntiMatIgnor)
 AntiMat_addIgnorWord = 0
 For i=0 to MaxMas
  If LCase(dmAntiMatIgnor(i))=LCase(string1) then
   AntiMat_addIgnorWord = 1
   addChat vbGreen, LMT(145) & dmAntiMatIgnor(i)
   Exit Function
  end if
 Next
 If AntiMat_addIgnorWord = 0 then
   If dmAntiMatIgnor (MaxMas) <> "" then MaxMas = MaxMas +1
   ReDim preserve dmAntiMatIgnor(MaxMas)
   dmAntiMatIgnor(MaxMas) = string1
 end if
End function

Function AntiMat_delIgnorWord (string1) 
 Dim i, MaxMas,sSwapNickName1,sSwapNickName2
 AntiMat_delIgnorWord = 0
 MaxMas = LenMas (dmAntiMatIgnor)
 If MaxMas = 0 Then
  If LCase(String1) = LCase(dmAntiMatIgnor(0)) then
   ReDim dmAntiMatIgnor(0)
   AntiMat_delIgnorWord = 1
   Call AntiMat_Save
   Exit function
  End if
 End if
 Do while i<= MaxMas
  If LCase(String1) = LCase(dmAntiMatIgnor(i)) then
   sSwapNickName1=dmAntiMatIgnor(i)
   sSwapNickName2=dmAntiMatIgnor(MaxMas)
   dmAntiMatIgnor(MaxMas)=sSwapNickName1
   dmAntiMatIgnor(i)=sSwapNickName2
   addChat vbGreen, LMT(146) & dmAntiMatIgnor(MaxMas)
   MaxMas = MaxMas - 1
   ReDim preserve dmAntiMatIgnor(MaxMas)
   AntiMat_delIgnorWord = 1
  end if
  I = I + 1
 Loop
 if AntiMat_delIgnorWord = 1 then Call AntiMat_Save
End function

Function AntiMat_addIgnorPl(string1) 
 Dim i, MaxMas
 MaxMas = LenMas(dmAntiMatShieldList)
 AntiMat_addIgnorPl = 0
 AddCHat vbBlue, "MaxMas =" & MaxMas
 For i=0 to MaxMas
  If LCase(dmAntiMatShieldList(i))=LCase(string1) then
   AntiMat_addIgnorPl = 1
   addChat vbGreen, LMT(145) & dmAntiMatShieldList(i)
   Exit Function
  end if
 Next
 If AntiMat_addIgnorPl = 0 then
   If dmAntiMatShieldList (MaxMas) <> "" then MaxMas = MaxMas +1
   ReDim preserve dmAntiMatShieldList(MaxMas)
   dmAntiMatShieldList(MaxMas) = string1
 end if
End function

Function AntiMat_delIgnorPl(string1) 
 Dim i, MaxMas,sSwapNickName1,sSwapNickName2
 AntiMat_delIgnorPl = 0
 MaxMas = LenMas (dmAntiMatShieldList)
 If MaxMas = 0 Then
  If LCase(String1) = LCase(dmAntiMatShieldList(0)) then
   ReDim dmAntiMatShieldList(0)
   AntiMat_delIgnorPl = 1
   Call AntiMat_Save
   Exit function
  End if
 End if
 Do while i <= MaxMas
  If LCase(String1) = LCase(dmAntiMatShieldList(i)) then
   sSwapNickName1=dmAntiMatShieldList(i)
   sSwapNickName2=dmAntiMatShieldList(MaxMas)
   dmAntiMatShieldList(MaxMas)=sSwapNickName1
   dmAntiMatShieldList(i)=sSwapNickName2
   addChat vbGreen, LMT(146) & dmAntiMatShieldList(MaxMas)
   MaxMas = MaxMas - 1
   ReDim preserve dmAntiMatShieldList(MaxMas)
   AntiMat_delIgnorPl = 1
  end if
  I = I + 1
 Loop
 if AntiMat_delIgnorPl = 1 then Call AntiMat_Save
End function

Sub AntiMat_userTalk_old(UserName,Message)
 Dim i,iMax,iBanNick,Bnet_Clan
 If (AdminAvaible = True) and (AntiMat_enable = True) then
  If AntiMatFriendlyShield = True Then
   Bnet_Clan = GetInternalDataByUserName(UserName, 0)
   If LCase(Channel.Users(Channel.GetUserIndex(MyUserName)).Clan) = LCase(Bnet_Clan) Then
    exit sub
   End if
  End if
  if CountMas(dmAntiMat) = 0 then exit sub
  If PosMas(UserName,dmAntiMatShieldList) > -1 Then
   exit sub
  End if
  iMax=LenMas(dmAntiMat)
  For i = 0 to iMax
    if InStr(Message, (dmAntiMat(i)))> 0 then
     If AutoBan = True Then iBanNick = AntiMat_SearchAdd_User(UserName) else iBanNick = -2 end if
     If (iBanNick = -1) or (iBanNick = -2) then 
 	  If AutoBan = True then
	   AddQ_D "/kick " & UserName & LangModule_SendMessage(UserName,149)
	   sLastBannedUser = UserName
	  else
	   AddQ_D "/kick " & UserName & LangModule_SendMessage(UserName,150)
	   sLastBannedUser = UserName
	   Exit sub
	  end if
     else 
      dmPlayersBanTime(iBanNick) = GetGTC
      AddQ_D "/ban " & UserName & LangModule_SendMessage(UserName,151) & iBanTime & LangModule_SendMessage(UserName,152)
	  sLastBannedUser = UserName
     end if
     
    end if
  Next
  If LCase(UserName) = LCase(MyUserName) Then exit sub
  sAntiMatLastKickedYellingUser = ""
  If (iAntiMat_AntiYelling_MaxCount > 0) and (AntiMatExtendAllow = False) then
   If AntiMat_Yelling(Message) => iAntiMat_AntiYelling_MaxCount Then
    AddQ_D "/kick " & UserName & " " & LangModule_SendMessage(UserName,233)
	sAntiMatLastKickedYellingUser = UserName
   End if
  End if
 end if
End sub

Function InStrCount(StringWhereSearch,StringForSearch)
 InStrCount = 0
 Dim i,x, sTempString
 sTempString = StringWhereSearch
 i = 0
 x = Len(StringForSearch)
 y = InStr(StringWhereSearch,StringForSearch)
 Do while y > 0
  i = i + 1
  sTempString = Mid(sTempString,y + x)
  y = InStr(sTempString,StringForSearch)
  If Len(sTempString) = x Then 
   y = 0
   If sTempString = StringForSearch Then i = i + 1
  End if
 Loop
 InStrCount = i
End function

Sub AntiMat_userTalk(UserName,Message)
 Dim i,iMax,iBanNick,Bnet_Clan,iMatWords,iMatIgnoreWords
 If (AdminAvaible = True) and (AntiMat_enable = True) then
  If AntiMatFriendlyShield = True Then
   Bnet_Clan = GetInternalDataByUserName(UserName, 0)
   If LCase(Channel.Users(Channel.GetUserIndex(MyUserName)).Clan) = LCase(Bnet_Clan) Then
    exit sub
   End if
  End if
  if CountMas(dmAntiMat) = 0 then exit sub
  If PosMas(UserName,dmAntiMatShieldList) > -1 Then
   exit sub
  End if
  iMax=LenMas(dmAntiMat)
  iMatWords = 0
  For i = 0 to iMax
   if InStr(Message, (dmAntiMat(i)))> 0 then
    iMatWords = iMatWords + InStrCount(Message,LCase(dmAntiMat(i)))
   end if
  Next
  iMax = LenMas(dmAntiMatIgnor)
  iMatIgnoreWords = 0
  If dmAntiMatIgnor(0) <> "" Then
   For i = 0 to iMax
    if InStr(Message, (dmAntiMatIgnor(i)))> 0 then
     iMatIgnoreWords = iMatIgnoreWords + InStrCount(Message,LCase(dmAntiMatIgnor(i)))
    end if
   Next
  End if
  if iMatWords > iMatIgnoreWords then
     If AutoBan = True Then iBanNick = AntiMat_SearchAdd_User(UserName) else iBanNick = -2 end if
     If (iBanNick = -1) or (iBanNick = -2) then 
 	  If AutoBan = True then
	   AddQ_D "/kick " & UserName & LangModule_SendMessage(UserName,149)
	   sLastBannedUser = UserName
	  else
	   AddQ_D "/kick " & UserName & LangModule_SendMessage(UserName,150)
	   sLastBannedUser = UserName
	   Exit sub
	  end if
     else 
      dmPlayersBanTime(iBanNick) = GetGTC
      AddQ_D "/ban " & UserName & LangModule_SendMessage(UserName,151) & iBanTime & LangModule_SendMessage(UserName,152)
	  sLastBannedUser = UserName
     end if
     
  end if
  If LCase(UserName) = LCase(MyUserName) Then exit sub
  sAntiMatLastKickedYellingUser = ""
  If (iAntiMat_AntiYelling_MaxCount > 0) and (AntiMatExtendAllow = False) then
   If AntiMat_Yelling(Message) => iAntiMat_AntiYelling_MaxCount Then
    AddQ_D "/kick " & UserName & " " & LangModule_SendMessage(UserName,233)
	sAntiMatLastKickedYellingUser = UserName
   End if
  End if
 end if
End sub

Sub AntiMat_Clan_Kick(UserName)
 Dim Bnet_Clan, i, MaxMas
 If (ClanBan = True)  and (AdminAvaible = True) then
  If dmClanBan(0) = "" then exit sub
  Bnet_Clan=GetInternalDataByUserName(UserName, 0)
  MaxMas = LenMas (dmClanBan)
  For i=0 to MaxMas
   If LCase(dmClanBan(i)) = LCase (Bnet_Clan) then
    AddQ_D "/kick " & UserName & LMT(153) & Bnet_Clan & ")"
    Exit sub
   end if
  next
 end if
End sub

Sub AntiMat_Load
 Call Load_file_dm (AntiMatFilePath,dmAntiMat,"","")
 Call Load_File_dm (PlayersBanPath,dmPlayersBan, dmPlayersBanTime,"*")
 Call Load_File_dm (ClanBanPath,dmClanBan,"","")
 Call Load_File_dm (AntiMat_Extend_FilePath,dmAntiMatES,"","")
 Call Load_File_dm (AntiMat_IgnorList_FilePath,dmAntiMatIgnor,"","")
 Call Load_File_dm (AntiMat_ShieldList_FilePath,dmAntiMatShieldList,"","")
 AntiMat_enable = True
 If BotFlags And 2 then
  AddQ_D "/me " & LMT(154)
 else
  AddQ_D "/me " & LMT(155)
 end if
end sub

Function AntiMat_SearchAdd_User(UserName) 
 Dim i
 AntiMat_SearchAdd_User=-1
 if CountMas(dmPlayersBan) = 0 Then
  dmPlayersBan(0)=UserName
  dmPlayersBanTime(0)=GetGTC
  exit function
 end if
 For i=0 to LenMas(dmPlayersBan)
  If dmPlayersBan(i)=(UserName) then
   AntiMat_SearchAdd_User=i
   exit function
  end if
 Next
 i = LenMas (dmPlayersBan)
 If dmPlayersBan(0) <> "" then  i = i +1
 ReDim preserve dmPlayersBan(i)
 ReDim preserve dmPlayersBanTime(i)
 dmPlayersBan(i)=UserName
 dmPlayersBanTime(i)=GetGTC
end Function

Sub AntiMat_Check_Time
 
 Dim iCTime,i,sSwapNickName1,sSwapNickName2, MaxMas
 iCTime=GetGTC
 If LenMas(dmPlayersBanTime) <> LenMas (dmPlayersBan) then
  addChat vbRed, "  dmPlayersBanTime  dmPlayersBan  "
  exit sub
 end if
 MaxMas = LenMas(dmPlayersBan)
 If (CountMas(dmPlayersBan) = 0) then exit sub 
 Do while i <= MaxMas
  If (iCTime-dmPlayersBanTime(i))>=iBanTime*60000 then
   sSwapNickName1=dmPlayersBan(i)
   sSwapNickName2=dmPlayersBan(MaxMas)
   dmPlayersBan(MaxMas)=sSwapNickName1
   dmPlayersBan(i)=sSwapNickName2
   sSwapNickName1=dmPlayersBanTime(i)
   sSwapNickName2=dmPlayersBanTime(MaxMas)
   dmPlayersBanTime(MaxMas)=sSwapNickName1
   dmPlayersBanTime(i)=sSwapNickName2
   AddQ_D "/unban " & dmPlayersBan(MaxMas)
   addChat vbGreen, LMT(156) & dmPlayersBan(MaxMas)
   sLastBannedUser = ""
   MaxMas=MaxMas - 1
   If MaxMas < 0 Then
    MaxMas = 0
    ReDim  dmPlayersBan(MaxMas)
    ReDim  dmPlayersBanTime(MaxMas)
	Exit sub
   end if
   ReDim preserve dmPlayersBan(MaxMas)
   ReDim preserve dmPlayersBanTime(MaxMas)
  end if
  i=i+1
 Loop

End Sub

Sub AntiMat_Save
 Dim iLen
 iLen = LenMas(dmPlayersBan)
 Call Save_File_dm(PlayersBanPath,dmPlayersBan,dmPlayersBanTime,iLen,"*")
 iLen = LenMas (dmClanBan)
 call Save_File_dm(ClanBanPath, dmClanBan, "",iLen,"")
 iLen = LenMas (dmAntiMat)
 Call Save_File_dm (AntiMatFilePath, dmAntiMat, "" ,iLen, "")
 iLen = LenMas (dmAntiMatIgnor)
 Call Save_File_dm (AntiMat_IgnorList_FilePath, dmAntiMatIgnor, "" ,iLen, "")
 iLen = LenMas (dmAntiMatShieldList)
 Call Save_File_dm (AntiMat_ShieldList_FilePath, dmAntiMatShieldList, "" ,iLen, "")
 AddCHat vbGreen, LMT(157)
End sub

Sub AntiMat_Extend_Check(UserName,String1)
 Dim MaxMas,i,i2,String2,String3,String4,Found
 Found = False
 String3 = ""
 If PosMas(UserName,dmAntiMatShieldList) > -1 Then
  exit sub
 End if
 For i = 1 to Len(String1)
  String2 = MID (String1,i,1)
  For i2 = 1 to (LenMas(dmAntiMatES))
   If LCase(dmAntiMatES(i2)) = LCase(String2) then Found = True
  next
  If Found = True then String3 = String3 & String2
  Found = False
 next
 String2 =  MID (String3,1,1)
 String4 = String2
 For i = 2 to Len(String3)
  If LCase(String2)<> LCase(MID(String3,i,1)) then
   String4 = String4 & (MID(String3,i,1))
  end if
  String2 = MID(String3,i,1)
 next
 sAntiMatLastKickedYellingUser = ""
 If iAntiMat_AntiYelling_MaxCount > 0 and (LCase(UserName) <> LCase(MyUserName)) then
  If AdminAvaible = True Then 
   If AntiMat_Yelling(String1) => iAntiMat_AntiYelling_MaxCount Then
    AddQ_D "/kick " & UserName & " " & LangModule_SendMessage(UserName,233)
	sAntiMatLastKickedYellingUser = UserName
   End if
  End if
 End if
 String4 = LCase(String4)
 Call AntiMat_userTalk(UserName,String4)
end Sub

Sub AntiMat_Extend_Check_UserNickName(String1)
 Dim MaxMas,i,i2,String2,String3,String4,Found
 Found = False
 String3 = ""
 For i = 1 to Len(String1)
  String2 = MID (String1,i,1)
  For i2 = 1 to (LenMas(dmAntiMatES))
   If LCase(dmAntiMatES(i2)) = LCase(String2) then Found = True
  next
  If Found = True then String3 = String3 & String2
  Found = False
 next
 String2 =  MID (String3,1,1)
 String4 = String2
 For i = 2 to Len(String3)
  If LCase(String2)<> LCase(MID(String3,i,1)) then
   String4 = String4 & (MID(String3,i,1))
  end if
  String2 = MID(String3,i,1)
 next
 String4 = LCase(String4)
 Dim iMax
 iMax=LenMas(dmAntiMat)
 For i = 0 to iMax
  if InStr(String4, (dmAntiMat(i)))> 0 then
   AddQ_D "/ban " & String1 & " " & LMT(267)
   sLastBannedUser = String1
   Exit sub
  end if
  Next
End sub

Function AntiMat_Yelling(Message)
 Dim i
 AntiMat_Yelling = 0
 For i = 1 to Len(Message)
  IF LCase (MID (Message,i,1)) <> MID (Message,i,1) Then AntiMat_Yelling = AntiMat_Yelling + 1
 next
End Function

Sub CCE_Load
 ReDim dmCCE_CMDs(0), dmCCE_Access(0), dmCCE_Actions(0), dmCCE_AntiFloodProtected(0)
 Path = "scripts\UltimateBot\CustomCommands.txt"
 Dim fso, file, read_string, cLine,i
 If (CurrentLang="RU") or (CurrentLang="") then
  AddChat vbYellow, "   : {", RGB(14,214,24), Path ,vbYellow,"}"
 else
  AddChat vbYellow, "Loading data from file: {", RGB(14,214,24), Path ,vbYellow,"}"
 End if
 Set fso = CreateObject("Scripting.FileSystemObject")
 If Not fso.FileExists(Path) Then
   If (CurrentLang="RU") or (CurrentLang="") then
    AddChat vbYellow, "!   !    {" , RGB(214,14,24), Path, vbYellow, "}"
   else
    AddChat vbYellow, "Error! File wasnt found! Please check {", RGB(214,14,24), Path, vbYellow, "} file!"
   end if
   Exit Sub
 End If
 Set file = fso.OpenTextFile(Path, 1, True)
 i = 0
 Do While file.AtEndOfStream <> True
  read_string = file.ReadLine
  cLine = Split(read_string, "|")
  ReDim Preserve dmCCE_CMDs(i)
  ReDim Preserve dmCCE_Actions(i)
  ReDim Preserve dmCCE_Access(i)
  ReDim Preserve dmCCE_AntiFloodProtected(i)
  dmCCE_CMDs(i) = cLine(0)
  dmCCE_Actions(i) = cLine(1)
  dmCCE_Access(i) = cLine(2)
  dmCCE_AntiFloodProtected(i) = cLine(3)
  i = i + 1
 Loop
  If (CurrentLang="RU") or (CurrentLang="")  then
   If i = 0 Then
    AddChat vbGreen, " {", RGB(114,114,114), Path , vbGreen, "} "
   else
    AddChat vbGreen, " ", RGB(4,223,185), i ,vbGreen, " "
   End if
  else
   If i = 0 Then
    AddChat vbGreen, "File {", RGB(114,114,114), Path , vbGreen, "} is empty"
   else
    AddChat vbGreen, "Total " & i & " commands"
   end if
  end if
  file.Close
  Exit Sub
End sub

Sub CCE_UserTalk(UserName, Flags, Message, Ping)
 If dmCCE_CMDs(0) = "" Then exit sub
 If Left(Message,1) <> BotVars.Trigger Then exit sub
 Dim iCCE_CurCMD,iCCE_PosMas,sReadyMSG,TierName,IconName,sMessageSplitContent
 
 iCCE_PosMas = CCE_PosMasNotStrong(Message,dmCCE_CMDs)
 If iCCE_PosMas = - 1 Then exit sub 
 GetDBEntry UserName, myAccess, myFlags
 If myAccess < Int(dmCCE_Access(iCCE_PosMas)) Then exit sub 
 If dmCCE_AntiFloodProtected(iCCE_PosMas) = "True" Then 
   if AntiFloodSystem_Use(UserName) <> 0 then exit sub
 End if
 If (InStr(dmCCE_Actions(iCCE_PosMas),"/invite")> 0) and (InStr(dmCCE_Actions(iCCE_PosMas),"%n")> 0) Then
  Command "Botvars.username", "/invite " & UserName, True
  Exit sub
 End if
 If InStr (dmCCE_Actions(iCCE_PosMas), "%")> 0 Then
  IconName = GetIcon(UserName)
  TierName = GetTier(UserName)
  sReadyMSG = Replace(dmCCE_Actions(iCCE_PosMas),"%n",UserName)
  sReadyMSG = Replace(sReadyMSG,"%p",ping)
  sReadyMSG = Replace(sReadyMSG,"%c",myChannel)
  sReadyMSG = Replace(sReadyMSG,"%s",ClanSite)
  sReadyMSG = Replace(sReadyMSG,"%g",Product)
  sReadyMSG = Replace(sReadyMSG,"%i",IconName)
  sReadyMSG = Replace(sReadyMSG,"%l",Level)
  sReadyMSG = Replace(sReadyMSG,"%k",Bnet_Clan)
  sReadyMSG = Replace(sReadyMSG,"%t",TierName)
  
  sReadyMSG = Replace(sReadyMSG,"%right",(Right(Message,Len(Message) - Len(dmCCE_CMDs(iCCE_PosMas)))))
  
  sMessageSplitContent = Split(Message," ")
  On error resume next
  sReadyMSG = Replace(sReadyMSG,"%0",sMessageSplitContent(0))
  sReadyMSG = Replace(sReadyMSG,"%1",sMessageSplitContent(1))
  sReadyMSG = Replace(sReadyMSG,"%2",sMessageSplitContent(2))
  sReadyMSG = Replace(sReadyMSG,"%3",sMessageSplitContent(3)) 
 else
  sReadyMSG = dmCCE_Actions(iCCE_PosMas)
 End if
 AddQ_D sReadyMSG 
End sub

Function CCE_PosMasNotStrong(string1,Mas)
 Dim LenM
 CCE_PosMasNotStrong = -1
 LenM = 0
 On error resume next
 Do while Mas(LenM)<>""
  if Err.Number = 9 then
   Err.Number = 0
   exit function
  end if
  If InStr(LCase(string1),LCase(BotVars.Trigger & Mas(LenM))) > 0 Then
   CCE_PosMasNotStrong = LenM
   Exit function
  End if
  LenM = LenM + 1
 Loop
end function

Sub stnd_UserJoins(UserName, Flags, Message, Ping, Product, Level, OriginalStatstring)
 Dim i,y,Bnet_Clan,sReadyMSG,IconName,TierName
 IconName = GetIcon(UserName)
 TierName = GetTier(UserName)
 
 If Trivia_enabled = "Halt" Then
  AddChat RGB(0,153,204),"[Trivia] ", vbGreen,  LMT(158)
  Trivia_enabled = True
 End If
 If Reclame_module = "Halt" Then
  AddChat VbGreen, LMT(159)
  Reclame_module = True
  Reclame.Enabled = Reclame_module
 End If
 
 Bnet_Clan = GetInternalDataByUserName(UserName, 0)
 If AntiMatEnemyShield = True Then
  If LCase(Bnet_Clan) <> LCase(Channel.Users(Channel.GetUserIndex(MyUserName)).Clan) then
   AddQ_D "/kick " & UserName & " " & LMT(230)
   sAntiMatLastKickedUser = UserName
   exit sub
  End if
 End if
 If InMes=0 then Exit sub
 i=0
 y = CountMas(GrPl)
 If y > 0 Then
  Do While (i < y)
   If LCase(GrPl(i)) = LCase(UserName) Then
    AddQ_D "/w "& UserName & " " & GrMes(i) & "|" & LMT(160) &  ping & LMT(161)
	
    Exit Sub
   End If
   i = i + 1
  Loop
 End if
 If Bnet_Clan <> "" Then
  If LCase(Bnet_Clan) = LCase(Channel.Users(Channel.GetUserIndex(MyUserName)).Clan) Then
   If ComGreatsInYourClan = "" Then
    If ComGreatsInYourClan_Enabled = False Then exit sub
    AddQ_D "/w " & UserName & LMT(162) & myChannel & LMT(163) & ping & LMT(164) & ClanSite & LMT(165)
	
   else
    If ComGreatsInYourClan_Enabled = False Then exit sub
	sReadyMSG = Replace(ComGreatsInYourClan,"%n",UserName)
	sReadyMSG = Replace(sReadyMSG,"%p",ping)
	sReadyMSG = Replace(sReadyMSG,"%c",myChannel)
	sReadyMSG = Replace(sReadyMSG,"%s",ClanSite)
	sReadyMSG = Replace(sReadyMSG,"%g",Product)
	sReadyMSG = Replace(sReadyMSG,"%i",IconName)
	sReadyMSG = Replace(sReadyMSG,"%l",Level)
	sReadyMSG = Replace(sReadyMSG,"%k",Bnet_Clan)
	sReadyMSG = Replace(sReadyMSG,"%t",TierName)
    AddQ_D sReadyMSG
	
   End if
   Exit Sub
  Else
   If ComGreatsWithClan = "" Then
    If ComGreatsWithClan_Enabled = False Then exit sub
    AddQ_D "/w "& UserName & LMT(166)& myChannel & LMT(163) & ping & LMT(167) & ClanSite
    
   else
    If ComGreatsWithClan_Enabled = False Then exit sub
	sReadyMSG = Replace(ComGreatsWithClan,"%n",UserName)
	sReadyMSG = Replace(sReadyMSG,"%p",ping)
	sReadyMSG = Replace(sReadyMSG,"%c",myChannel)
	sReadyMSG = Replace(sReadyMSG,"%s",ClanSite)
	sReadyMSG = Replace(sReadyMSG,"%g",Product)
	sReadyMSG = Replace(sReadyMSG,"%i",IconName)
	sReadyMSG = Replace(sReadyMSG,"%l",Level)
	sReadyMSG = Replace(sReadyMSG,"%k",Bnet_Clan)
	sReadyMSG = Replace(sReadyMSG,"%t",TierName)
    AddQ_D sReadyMSG
	
   End if
   Exit Sub
  End If
 End If
 If ComGreatsWithoutClan = "" Then
  If ComGreatsWithoutClan_Enabled = False Then exit sub
  AddQ_D "/w " & UserName & LMT(168) & myChannel & LMT(163) & ping & LMT(169)  & Channel.Users(Channel.GetUserIndex(MyUserName)).Clan & LMT(170)
  
 else
  If ComGreatsWithoutClan_Enabled = False Then exit sub
  sReadyMSG = Replace(ComGreatsWithoutClan,"%n",UserName)
  sReadyMSG = Replace(sReadyMSG,"%p",ping)
  sReadyMSG = Replace(sReadyMSG,"%c",myChannel)
  sReadyMSG = Replace(sReadyMSG,"%s",ClanSite)
  sReadyMSG = Replace(sReadyMSG,"%g",Product)
  sReadyMSG = Replace(sReadyMSG,"%i",IconName)
  sReadyMSG = Replace(sReadyMSG,"%l",Level)
  sReadyMSG = Replace(sReadyMSG,"%k",Bnet_Clan)
  sReadyMSG = Replace(sReadyMSG,"%t",TierName)
  AddQ_D sReadyMSG
  
 End if
End sub

Sub Stnd_UserLeaves(UserName, Flags)
 
 Dim sReadyMSG
 If LCase(UserName) = LCase (sAntiMatLastKickedYellingUser) then exit sub
 If AntiMatEnemyShield = True Then
  If LCase(UserName) = LCase (sAntiMatLastKickedUser) then exit sub
 End if
 If LCase(UserName) = LCase (sLastBannedUser) then
  
  AddQ_D "/w "& UserName & LMT(171) & myChannel & "."
  sLastBannedUser = ""
  
 else
  If ComByePlayers_Enabled = True Then
   If ComByePlayers = "" Then
	AddQ_D "/w "& UserName & LMT(172) & myChannel & "."
	
   else
    sReadyMSG = Replace(ComByePlayers,"%n",UserName)
    sReadyMSG = Replace(sReadyMSG,"%c",myChannel)
    sReadyMSG = Replace(sReadyMSG,"%s",ClanSite)
    AddQ_D sReadyMSG
	
   End if
  End if
 end if
 
End sub

ReDim dmQueudMsg(0), dmQueudTime(0)

Function AddQ_D(Message) 
 If iDelayMSG = 0 then
	AddQ Message
	exit function
 end if
 Dim iMsgs,i 
 AddQ_D = 0
 If MessageDelaySystem.Interval = 0 Then exit function
 i = 0
 iMsgs=LenMas(dmQueudMsg)
 Do while iMsgs=>i
  If dmQueudMsg(i) = Message then AddQ_D = 1
  i=i+1
 LooP
 If AddQ_D = 0 then
  If dmQueudMsg(0) = "" then iMsgs = -1
  ReDim Preserve dmQueudMsg(iMsgs+1)
  ReDim Preserve dmQueudTime(iMsgs+1)
  
  dmQueudMsg(iMsgs+1)=Message
  dmQueudTime(iMsgs+1)=GetGTC
 End if
end Function

Sub MessageDelaySystem_timer()
 call MessageDelaySystem_WispMessages
End sub

Sub MessageDelaySystem_WispMessages
 Dim i,MaxMas,iCTime,sSwapNickName1,sSwapNickName2
 i=0
 iCTime=GetGTC
 if dmQueudTime(0) = "" then exit sub
 If LenMas(dmQueudMsg)<>LenMas(dmQueudTime) then
  addChat vbRed, LMT(176)
  exit sub
 end if
 MaxMas=LenMas(dmQueudMsg)
 If MaxMas=0 then
  if dmQueudMsg(0)="" then
   exit sub
  end if
  If ((iCTime-dmQueudTime(i))>=iDelayMSG*1000) then
   AddQ dmQueudMsg(MaxMas)
   ReDim  dmQueudMsg(MaxMas)
   ReDim  dmQueudTime(MaxMas)
   exit sub
  End if
  exit sub
 end if
 Do while i<MaxMas
  If (iCTime-dmQueudTime(i))>=iDelayMSG*1000 then
   sSwapNickName1=dmQueudMsg(i)
   sSwapNickName2=dmQueudMsg(MaxMas)
   dmQueudMsg(MaxMas)=sSwapNickName1
   dmQueudMsg(i)=sSwapNickName2
   sSwapNickName1=dmQueudTime(i)
   sSwapNickName2=dmQueudTime(MaxMas)
   dmQueudTime(MaxMas)=sSwapNickName1
   dmQueudTime(i)=sSwapNickName2
   AddQ dmQueudMsg(MaxMas)
   MaxMas=MaxMas - 1
   ReDim preserve dmQueudMsg(MaxMas)
   ReDim preserve dmQueudTime(MaxMas)
  end if
  i=i+1
 Loop
end sub

Function AntiFloodSystem (OldTime,CurrTime,Delay)
 AntiFloodSystem=0
 AddChat vbRed,(GetGTC-OldTime)
 If OldTime<0 then
  AddChat vbRed, LMT(173)
  AntiFloodSystem=-1
  exit Function
 End if
 If OldTime-GetGTC<Delay*1000 Then
  
  AddChat vbYellow,LMT(174)
  
 End if
 AntiFloodSystem=1
End Function

Function AntiFloodSystem_Use(UserName) 
 Dim iUsers,i 
 AntiFloodSystem_Use = 0
 If iCmdUsersDelay = 0 Then exit function
 i=0
 iUsers=LenMas(dmPingUsers)
 Do while iUsers=>i
  If dmPingUsers(i) = UserName then AntiFloodSystem_Use=1
  i=i+1
 LooP
 If AntiFloodSystem_Use=0 then
  If dmPingUsers(0) = "" then iUsers = -1
  ReDim Preserve dmPingUsers(iUsers+1)
  ReDim Preserve dmTimeUsers(iUsers+1)
  AddCHat RGB(0,153,204), LMT(175) , vbYellow, UserName
  dmPingUsers(iUsers+1)=UserName
  dmTimeUsers(iUsers+1)=GetGTC
 End if
end Function

Sub AntiFloodSys_timer()
 call AntiFloodSystem_Use_users_del
End sub

Sub AntiFloodSystem_Use_users_del
 Dim i,MaxMas,iCTime,sSwapNickName1,sSwapNickName2
 i=0
 iCTime=GetGTC
 if dmTimeUsers(0) = "" then exit sub
 If LenMas(dmPingUsers)<>LenMas(dmTimeUsers) then
  addChat vbRed, LMT(176)
  exit sub
 end if
 MaxMas=LenMas(dmPingUsers)
 If MaxMas=0 then
  if dmPingUsers(0)="" then
   exit sub
  end if
  If ((iCTime-dmTimeUsers(i))>=iCmdUsersDelay*1000) then
   addChat vbGreen, LMT(177), vbYellow, dmPingUsers(MaxMas)
   ReDim  dmPingUsers(MaxMas)
   ReDim  dmTimeUsers(MaxMas)
   exit sub
  End if
  exit sub
 end if
 Do while i<MaxMas
  If (iCTime-dmTimeUsers(i))>=iCmdUsersDelay*1000 then
   sSwapNickName1=dmPingUsers(i)
   sSwapNickName2=dmPingUsers(MaxMas)
   dmPingUsers(MaxMas)=sSwapNickName1
   dmPingUsers(i)=sSwapNickName2
   sSwapNickName1=dmTimeUsers(i)
   sSwapNickName2=dmTimeUsers(MaxMas)
   dmTimeUsers(MaxMas)=sSwapNickName1
   dmTimeUsers(i)=sSwapNickName2
   addChat vbGreen, LMT(177) , vbYellow, dmPingUsers(MaxMas)
   MaxMas=MaxMas - 1
   ReDim preserve dmPingUsers(MaxMas)
   ReDim preserve dmTimeUsers(MaxMas)
  end if
  i=i+1
 Loop
end sub

Function MasAddUser(Mas1,UserName)
 Dim MaxMas
 
 MasAddUser = 0
 if Mas1(0) = "" then
  Mas1(0) = UserName
  MasAddUser = 1
  exit function
 end if
 
 If PosMas(UserName,Mas1) => 0 Then exit function
 
 MaxMas = CountMas(Mas1)
 
 ReDim Preserve Mas1(MaxMas)
 Mas1(MaxMas) = LCase (UserName)
 MasAddUser = 1
end function

Function MasDelUser(Mas1,UserName)
 Dim i1,i2,sSwapNickName1,sSwapNickName2
 MasDelUser = 0
 i1 = PosMas(UserName,Mas1)
 If i1 = - 1 Then 
  AddChat vbBlue, "MasDelUser, user{" & UserName &"} not found"
  exit function
 End if
 i2 = CountMas(Mas1)
 If i2 = 1 Then 
  ReDim Mas1(0)
  Exit Function
 End if
 Mas1(i1) = Mas1(i2 - 1)
 AddChat vbBlue, "i2 = "  & i2 & ", i1 = " & i1
 ReDim preserve Mas1(i2 - 2)
End function

Sub AntiSpamv2_timer()
 AddCHat vbGreen,LMT(291),vbYellow, LMT(296)
 iAntiSpamv2_CurUserSpam = 0
 AddQ_D LMT(297)
 AntiSpamv2.Enabled = False
End sub

Sub AntiSpam_timer()
 Dim i,sString1
 i = CountMas(dmAntiSpamU)
 If i = 0 Then 
  AntiSpam.Enabled = False
  Exit sub
 End if
 If i = 1 Then
  AddQ_D "/ban " & dmAntiSpamU(0) & LMT(294) & LMT(298)
  ReDim dmAntiSpamU(0)
  Exit sub
 End if
 AddQ_D "/ban " & dmAntiSpamU(0) & LMT(294) & LMT(298)
 sString1 = dmAntiSpamU(0)
 Call MasDelUser(dmAntiSpamU,sString1)
End Sub

Sub ACCD_Event_ServerInfo(Message)
 If InStr (Message, "Welcome to Battle.net") > 0 then
  Connection_status = "ok"
 end if
 If (InStr (LCase(Message), "is muted.") > 0 ) or (InStr (LCase(Message), "suspended") > 0) then
  AddCHat vbBlue, LMT(178)
  Connection_status = "void"
  disconnect
 end if
 If (InStr (LCase(Message), "disconnected for flooding") > 0 ) then
  Connection_status = "banned"
  Disc_time = GetGTC
  AddCHat vbBlue, LMT(179)
 end if
End sub

Sub ACCD_Timer()
 If Auto_ChCdKey = True then
  If Connection_status = "banned" then
   If (GetGTC - Disc_time)>=Auto_reconnect_btime*60000 then
    AddCHat vbBlue, LMT(180)
	disconnect
    connect
	Connection_status = "unknown"
    exit sub
   end if
   exit sub
  end if
  If (IsOnline = True) and (Connection_status <> "void") then Connection_status = "ok" else Connection_status = "off"
  If (LCase(myChannel) = LCase("the void"))and (IsOnline = True) then
   If blACDD_TryLeftVoid = False Then
    addChat vbYellow, LMT(181)
    AddQ_D "/j SaiGEN.3DN.Ru"
    blACDD_TryLeftVoid = True
    exit sub
   else
    addChat vbYellow, LMT(178)
    blACDD_TryLeftVoid = False
	Connection_status = "void"
	disconnect
	exit sub
   end if
  end if
  If Connection_status = "ok" then exit sub
  Call ACCD_Reconnect
 end if
end sub

Sub ACCD_Reconnect
 If iAuto_ChCdKey_CurrentTry > 0 Then
  disconnect
  connect
  iAuto_ChCdKey_CurrentTry = iAuto_ChCdKey_CurrentTry - 1
  exit Sub
 Else
  iAuto_ChCdKey_CurrentTry = iAuto_ChCdKey_Try
 end if
 addChat vbYellow, LMT(182) & LenMas(dmCdkey)+1
 If LenMas(dmCdkey) => 0 then
  if dmCdkey(0)="" then
   Call ACCD_Load_CDKey
   
   exit sub
  end if
  call Command (MyUserName,"/setkey " & dmCdkey(LenMas(dmCdkey)),True)
  If LenMas(dmCdkey)= 0  then
   ReDim dmCdkey(0)
   Call ACCD_Load_CDKey
  else
   ReDim Preserve dmCdkey(LenMas(dmCdkey)-1)
  end if
  Call WriteConfigEntry("Accd", "CurrentKey",LenMas(dmCdkey),"")
  disconnect
  connect
 end if
end sub

Sub ACCD_Load_CDKey
 Call Load_file_dm(CdKeyPath,dmCdkey,,"")
 If GetConfigEntry("Accd","CurrentKey","") > "" Then  ACCD_iCurrent_Key = GetConfigEntry("Accd","CurrentKey","") End If
 If ( LenMas(dmCdkey) - 0) > ACCD_iCurrent_Key - 0 Then
   If (ACCD_iCurrent_Key  = 0) or (ACCD_iCurrent_Key  = 1) Then exit sub
   ReDim Preserve dmCdkey(ACCD_iCurrent_Key)
 end if
 Auto_ChCdKey_Iteration_original = Auto_ChCdKey_Iteration
end sub

Sub ACCD_Close
 AddChat vbGreen , LMT(183)
 Call WriteConfigEntry("Accd", "CurrentKey",LenMas(dmCdkey),"")
end sub

Sub pl_inf(UserName,SearchUser)
 Dim i,F,InBase,iMaxMas
 F=0
 InBase=0
 i=0
 iMaxMas = LenMas(InfNick)
 Do while i <= iMaxMas
  If (LCase(UserName))=(LCase(InfNick(i))) Then
   InBase=1
   
  end if
 i=i+1
 Loop
 If InBase=0 then
  AddQ_D "/w  "& UserName &" "& LMT(28)
  Exit Sub
 end If
 I=0
 Do while i <= iMaxMas
  If (LCase(SearchUser))=(LCase(InfNick(i))) Then
   AddQ_D "/w  "& UserName &" " & InfNick(i)& ": " & InfPl(i)
   F=1
   Exit sub
  End If
  i=i+1
 Loop
 If f=0 then
  AddQ_D "/w  "& UserName & LMT(30)& CountMas(InfNick) & " "
 End If
End Sub

SUB Info_player(Message)
        Dim ladder, ldrlen, lvllen, winlen, lsslen, Level,Varaty
        If InStr(Message, "- Ladder ") > 0 Then
            UserStatArray = Split(Message, " ")
            Laddername = UserStatArray(2)
            ldrlen = Len(UserStatArray(2))
            Select Case Mid(UserStatArray(2), 1, ldrlen)
                Case "SOLO,"
                    ladder = "SOLO"
                    If InStr(Message, ", Level ") > 0 Then
                        lvllen = Len(UserStatArray(4))
                        Level = Left(UserStatArray(4), lvllen - 1)
                    End If
                    If InStr(Message, ", Wins ") > 0 Then
                        winlen = Len(UserStatArray(6))
                        wins = Left(UserStatArray(6), winlen - 1)
                    End If
                    If InStr(Message, ", Losses ") > 0 Then
                        lsslen = Len(UserStatArray(8))
                        losses = Left(UserStatArray(8), lsslen)
                    End If
                Case "TEAM,"
                    ladder = "TEAM"
                    If InStr(Message, ", Level ") > 0 Then
                        lvllen = Len(UserStatArray(4))
                        Level = Left(UserStatArray(4), lvllen - 1)
                    End If
                    If InStr(Message, ", Wins ") > 0 Then
                        winlen = Len(UserStatArray(6))
                        wins = Left(UserStatArray(6), winlen - 1)
                    End If
                    If InStr(Message, ", Losses ") > 0 Then
                        lsslen = Len(UserStatArray(8))
                        losses = Left(UserStatArray(8), lsslen)
                    End If
                Case Else
                    ladder = "Unknown": Level = "Unknown": wins = "Unknown": losses = "Unknown"
            End Select
        End If
        wins = Int(wins): losses = Int(losses)
        If losses <> 0 And wins <> 0 Then
            procent = Int(wins / (wins + losses) * 1000)
            procent = procent / 10
        End If
        Level = Int(Level)
        If ladder = "SOLO" Then
            sololevel = Level
            solowins = wins: sololosses = losses
            soloprocent = procent
        End If
        If ladder = "FFA" Then
            ffalevel = Level
            ffawins = wins: ffalosses = losses
            ffaprocent = procent
        End If
        If ladder = "TEAM" Then
            teamlevel = Level
            teamwins = wins: teamlosses = losses
            teamprocent = procent
        End If

 If (Ladder="SOLO") then
 end if
 If (Ladder="FFA") then
 end if
 If (Ladder="TEAM") then
 End if

End sub

Sub Pl_load
 Call Load_file_dm(InfoFilePath,InfNick,InfPL,Inf_Div_Symbol)
End Sub

sub Tourney_Load
 addChat vbYellow, ">>    2 <<"
 call Load_file_dm(Tourney_File_Path,dmTourPl,dmTourSc,Tourney_divide_symbol)
 Tourney_activated = True
end sub

sub Tourney_Begin
 Dim i,MaxMas,UserName
 AddCHat vbBlue, "Tourney_Begin 1"
 
 If intTourney_state = 3  Then
  AddCHat vbYellow, "Tourney Mod: ,         "
  AddQ_D "/me ,         ..."
  UserName=LCase (GetNameByPosition (1))
  i = 2
  AddCHat vbBlue, "Tourney_Begin 2"
  Do while UserName <> ""
   If Tourney_Players_Search(UserName,dmTourPl) = 1 then
    MaxMas = CountMas ( dmTourPlAvailable )
    If dmTourPlAvailable(0) = "" Then
	 dmTourPlAvailable(0) = UserName
	Else
     ReDim preserve dmTourPlAvailable (MaxMas)
     dmTourPlAvailable(MaxMas) = UserName
	End if
    addChat vbGreen, UserName & "   ,  :" & MaxMas + 1
   End if
   UserName = LCase (GetNameByPosition (i))
   i = i + 1
  Loop
  AddCHat vbBlue, "Tourney_Begin 3"
  AddCHat vbGreen, "Tourney Mod:        ,  " & CountMas(dmTourPlAvailable) & " ."& "  " & CountMas(dmTourPl)
  AddQ_D "/me        ,  " & CountMas(dmTourPlAvailable) & " ." & "  " & CountMas(dmTourPl)
  intTourney_state = 5
  iTour_InvPl = -6
  AddCHat VbYellow, "Tourney Mod:  " & ABS(Tourney.Interval * iTour_InvPl) & " ."
  AddCHat vbBlue, "Tourney_Begin 4"
 End if
  AddCHat vbBlue, "Tourney_Begin 5"
  If CountMas(dmTourPlAvailable) < 2 Then
   intTourney_state = 0
   Tourney.Enabled = False
   AddQ_D "/me      ,   .  .tyr 2 ,    "
   Exit sub
  End if
 If intTourney_state = 6 Then
  AddCHat vbBlue, "Tourney_Begin 6"
  MaxMas = LenMas (dmTourPlAvailable)
  ReDim dmTourScAvailable(MaxMas)
  If MaxMas \ 2 <> MaxMas / 2 Then
   AddCHat vbYellow, "Tourney Mod:    ."
   AddCHat vbYellow, "Tourney Mod:    FreeSlot (+1 Win)     "
   AddQ_D "/me   -,    FreeSlot (+1 Win)     "
   
  End if
  
  Call Tourney_Generate_table(dmTourPlWiners)
 End if
end sub

Sub Tourney_GetName(Index)
 Dim UserName,MaxMas
 x=1
 UserName=LCase (GetNameByPosition (Index))
 If Tourney_Players_Search(UserName,dmTourPl) = 1 then
  MaxMas = LenMas ( dmTourPlAvailable ) + 1
  ReDim preserve dmTourPlAvailable (MaxMas)
  dmTourPlAvailable(MaxMas) = UserName
  addChat vbGreen, UserName & "   ,  :" & MaxMas
 End if
End sub

sub Tourney_Save
 call Save_File_dm(Tourney_File_Path,dmTourPl,dmTourSc,(LenMas(dmTourPl)),Tourney_divide_symbol)
end sub

sub Tourney_Stop
 Call Tourney_Save
 Tourney_activated = False
 AddCHat vbYellow , "Tourney mod:  "
end sub

sub Tourney_Timer()
 Dim Remaining_Time
 Remaining_Time = (((CountMas(dmTourPl)) - iTour_InvPl ) * Tourney.Interval)
 If (intTourney_state <> 2) and (intTourney_state <> 4) and (intTourney_state <> 5) Then Exit Sub
 If iTour_InvPl => 0 Then
  AddQ_D "/w " & dmTourPl(iTour_InvPl) & "  ,    " & " Clan "& Channel.Users(Channel.GetUserIndex(MyUserName)).Clan & ", :" & Remaining_Time & " ."
  AddCHat VbYellow, "Tourney Mod:    " & dmTourPl(iTour_InvPl)
  iTour_InvPl = iTour_InvPl + 1
 End if
 If iTour_InvPl = -1 Then
  If intTourney_state <> 5 Then intTourney_state = 3 Else intTourney_state = 6
  Call Tourney_Begin
 End if
 If iTour_InvPl < - 1 Then
  iTour_InvPl = iTour_InvPl + 1
  AddCHat vbGreen, "Tourney Mod:  " & ABS(Tourney.Interval * (iTour_InvPl + 1)) & " ."
 End if
 If (iTour_InvPl > LenMas(dmTourPl)) and (iTour_InvPl > 0) Then
  iTour_InvPl = - 7
  AddCHat vbGreen, "Tourney Mod:   ,  " & Tourney.Interval * 6 & " ."
  AddQ_D "/me   ,  " & Tourney.Interval * 6 & " ."
 End if
end sub

sub Tourney_Generate_table(Winers)
 Dim i,Random,sSwapString1,sSwapString2
 AddCHat vbBlue, "Tourney_Generate_table(Winers) 1"
 
 ReDim Winers(LenMas(dmTourPlAvailable))
 ReDim dmTourScWiners(LenMas(dmTourPlAvailable))
 AddCHat vbBlue, "Tourney_Generate_table(Winers) 2"
 Randomize
 For i = 0 To LenMas ( dmTourPlAvailable)
  Random = Int((((LenMas(dmTourPlAvailable))-1)*RND)+1)
  Do while Tourney_Players_Search((dmTourPlAvailable(Random)),Winers) = 1
   Random = Int((((LenMas(dmTourPlAvailable))-1)*RND)+1)
  LooP
  Winers(i) = dmTourPlAvailable(Random)
  dmTourScWiners(i) = dmTourScAvailable(Random)
 Next
  If (LenMas(Winers)) \ 2 <> (LenMas(Winers)) / 2 Then
  
  AddCHat vbYellow, Winers(LenMas(Winers)) & "  FreeSlot (+1 Win)     "
  AddQ_D "/me "& Winers(LenMas(Winers)) & "  FreeSlot (+1 Win)     "
  dmTourScWiners(LenMas(Winers))
  end if
end sub

sub Tourney_Update_WL(Winers,Losers)
 
 Dim i,x,sSwapString1
 i = 0
 x = 0
 For i = 0 To LenMas (Losers)
  Do While x <= LenMas (Winers)
   If LCase (Losers(i)) = LCase (Winers(x)) Then
    
    Winers(x) = Winers(LenMas(Winers))
	
	dmTourScWiners(x) = dmTourScWiners((LenMas(Winers)))
	dmTourScWiners(x) = dmTourScWiners(x) + 1
    ReDim preserve Winers((LenMas(Winers))- 1)
   End if
   x = x + 1
  Loop
 Next
end sub

Function Tourney_Generate_WTable(UserName,Mas1,Mas2)
 
 Dim iPosition
 Tourney_Generate_WTable = 0
 iPosition = PosMas(UserName,Mas1)
 If iPosition < 0 then
  AddCHat vbRed, "   " & UserName & "     "
  Exit Function
 End if
  
 If iPosition \ 2 <> iPosition / 2 Then
   If PosMas(Mas2(iPosition + 1),Mas2) > 0 Then Tourney_Generate_WTable = - 1
  Else
   If PosMas(Mas2(iPosition - 1),Mas2) > 0 Then Tourney_Generate_WTable = - 1
  End if
  
  If Tourney_Generate_WTable = - 1 Then Exit Function
 If CountMas(Mas1) = 0  Then ReDim Mas2(0)
 ReDim Preserve CountMas(Mas2)
 If iPosition = LenMas(Mas1) Then
  If (iPosition \ 2) <> (iPosition / 2) Then
   exit Function
  End if
 Else
  If iPosition \ 2 <> iPosition / 2 Then
   Mas2(CountMas(Mas2)) = Mas1(iPosition + 1)
  Else
   Mas2(CountMas(Mas2)) = Mas1(iPosition - 1)
  End if
 End if
 Tourney_Generate_WTable = 1
End Function

Sub Tourney_Show_Versus(Table,Index)
 Dim i,x,string1
 i = 0
 x = 0
 dmTourPlLosers
 string1 = ""
  If Table = "Winers" Then
  If Index * 6 <= LenMas (dmTourPlWiners) Then
   x = (Index * 6) - 4
  Else
   x = ( LenMas (dmTourPlWiners) ) - 6
  End if
  If Index = 1 Then x = (Index * 6) - 6
  If (CountMas(dmTourPlWiners) )\ 2 <> (CountMas(dmTourPlWiners))/ 2 Then
   x = ( LenMas (dmTourPlWiners) ) - 8
  End if
  string1 = "W: " & dmTourPlWiners(x) & " vs " & dmTourPlWiners(x+1) & "; "
  For i = x + 2 To x + 6
   addChat vbBlue, i
   string1 = string1 & dmTourPlWiners(i) & " vs " & dmTourPlWiners(i+1) & "; "
   i = i + 1
  Next
  AddCHat vbGreen, string1
  AddQ_D "/me " & string1
  Exit sub
 End if
 If Table = "Losers" Then
  If Index * 6 <= LenMas (dmTourPlLosers) Then
   x = (Index * 6) - 4
  Else
   x = ( LenMas (dmTourPlLosers) ) - 6
  End if
  If Index = 1 Then x = (Index * 6) - 6
  If (CountMas(dmTourPlLosers) )\ 2 <> (CountMas(dmTourPlLosers))/ 2 Then
   x = ( LenMas (dmTourPlLosers) ) - 8
  End if
  string1 = "L: " & dmTourPlLosers(x) & " vs " & dmTourPlLosers(x+1) & "; "
  For i = x + 2 To x + 6
   addChat vbBlue, i
   string1 = string1 & dmTourPlLosers(i) & " vs " & dmTourPlLosers(i+1) & "; "
   i = i + 1
  Next
  AddCHat vbGreen, string1
  AddQ_D "/me " & string1
  Exit sub
  Exit sub
 End if
End Sub

Function Tourney_Players_add(UserName)
 Dim MaxMas
 Tourney_Players_add = 0
 If Tourney_Players_Search (UserName,dmTourPl) = 1 then
  AddCHat vbYellow , "Tourney Mod:  " & UserName & "  "
  Exit Function
 End if
 
 If dmTourPl(0) = "" Then
  dmTourPl(0) = UserName
  dmTourSc(0) = "0"
 Else
  MaxMas = CountMas (dmTourPl)
  ReDim preserve dmTourPl(MaxMas)
  ReDim preserve dmTourSc(MaxMas)
  dmTourPl(MaxMas) = UserName
  dmTourSc(MaxMas) = "0"
 End if
 AddCHat vbGreen , "Tourney Mod:  " & UserName & "     "
 Tourney_Players_add = 1
 Call Tourney_Save
end Function

Function Tourney_Players_del(UserName)
 Dim i,sSwapString1,MaxMas
 Tourney_Players_del = 0
 If Tourney_Players_Search (UserName,dmTourPl) = 0 then
  AddCHat vbYellow , "Tourney Mod:  " & UserName & "     ,     "
  Exit Function
 End if
 i = 0
 MaxMas = LenMas(dmTourPl)
 sSwapString1 = dmTourPl(MaxMas)
 Do while i <= LenMas(dmTourPl)
  If LCase (UserName) = LCase (dmTourPl(i)) then
   dmTourPl(MaxMas) = dmTourPl(i)
   dmTourPl(i) = sSwapString1
   ReDim preserve dmTourPl(MaxMas - 1)
   AddCHat vbGreen , "Tourney Mod:  " & UserName & "     "
   Call Tourney_Save
   Tourney_Players_del = 1
   Exit Function
  End if
  i = i + 1
 Loop
 Tourney_Players_del = 1
end Function

Function Tourney_Players_Search(UserName,Mas1)
 Dim i, MaxMas
 Tourney_Players_Search = 0
 i = 0
 MaxMas = LenMas(Mas1)
 Do while i <= MaxMas
  If LCase (UserName) = LCase (Mas1(i)) then
   Tourney_Players_Search = 1
   Exit Function
  End if
  i = i + 1
 Loop
end Function

sub Tourney_Score_add(UserName)
end sub

sub Tourney_Score_del(UserName)
end sub

sub Tourney_UserTalk(UserName,Message)
 Dim Bnet_Clan,Random,i,String1
 Message = Trim(LCase(Message))
 If ( InStr(Message, (BotVars.Trigger & LCase("tyr"))) > 0 ) and (isAdmin(UserName,tyr_access)=1) Then
  If Mid(Message,6,(Len(Message))-5) = "0" then
   If intTourney_state = 2 then
    AddQ_D "/w " & UserName & "  ,       ,  "
	intTourney_state = 4
    exit sub
   end if
   Call Tourney_Stop
   AddQ_D "/w " & UserName & "   "
   intTourney_state = 0
   Tourney.Enabled = False
   
  End if
  If Mid(Message,6,(Len(Message))-5) = "1" then
   Call Tourney_Load
   intTourney_state = 1
   AddCHat vbBlue, "Tourney Mod:   ,   ..."
   AddQ_D "/me     , .jtyr - "
   
  End if
  If Mid(Message,6,(Len(Message))-5) = "2" then
   If intTourney_state = 0 Then call Tourney_Load
   If CountMas(dmTourPl) = 1 Then
    AddQ_D "/me   , ..    1 .   ..."
	Exit sub
   End if
   ReDim dmTourPlAvailable(0),dmTourScAvailable(0),dmTourPlLosers(0),dmTourScLosers(0)
   
   iTour_InvPl = 0
   intTourney_state = 2
   
  End if
  Exit sub
 end if
 If Tourney_activated = False then Exit Sub
 Bnet_Clan = GetInternalDataByUserName(UserName, 0)
 IF (Message) = BotVars.Trigger & "jtyr"  Then
  if AntiFloodSystem_Use(UserName) <> 0 then exit sub
  If bTyrModuleIsPublic = True then 
   If Tourney_Players_add(UserName) = 0 Then
    AddQ_D "/w " & UserName & "  " & UserName & "  "
	exit sub
   else
    AddQ_D "/w " & UserName & "     ,  : " & Tourney_Date & " :" & Tourney_Time
    AddCHat vbGreen , "    : " & UserName & ", :" & CountMas(dmTourPl)
	exit sub
   End IF
  End if
  IF LCase(Bnet_Clan) = LCase(Channel.Users(Channel.GetUserIndex(MyUserName)).Clan) Then
   If Tourney_Players_add(UserName) = 0 Then
    AddQ_D "/w " & UserName & "  " & UserName & "  "
   else
    AddQ_D "/w " & UserName & "     ,  : " & Tourney_Date & " :" & Tourney_Time
    AddCHat vbGreen , "    : " & UserName & ", :" & CountMas(dmTourPl)
   End if
  else
   AddQ_D "/w " & UserName & "  ,       ."
   AddCHat vbYellow , "Tourney Mod:    : " & UserName & ", ..      " & Channel.Users(Channel.GetUserIndex(MyUserName)).Clan
   exit sub
  end if
 End IF

 If (LCase(InStr(Message, BotVars.Trigger & "regpl")) > 0) and (isAdmin(UserName,regpl_access)=1) Then
  If Tourney_Players_add(Mid(Message,8,(Len(Message))-7)) = 0 Then
   AddQ_D "/w " & UserName & "  " & (Mid(Message,8,(Len(Message))-7)) & "  "
  else
   AddQ_D "/w " & UserName & "  " & (Mid(Message,8,(Len(Message))-7))& " "
  End IF
 End IF

 If (LCase(InStr(Message, BotVars.Trigger & "delpl")) > 0) and (isAdmin(UserName,delpl_access)=1) Then
  If Tourney_Players_del(Mid(Message,8,(Len(Message))-7)) = 0 Then
   AddQ_D "/w " & UserName & "  " & (Mid(Message,8,(Len(Message))-7)) & "     "
  else
   AddQ_D "/w " & UserName & "  " & (Mid(Message,8,(Len(Message))-7)) & " "
  End if
 End IF

 If (LCase(InStr(Message, BotVars.Trigger & "tw")) > 0) and (isAdmin(UserName,tw_access)=1) Then
  Exit Sub
  string1 = (Mid(Message,3,(Len(Message))-2))
  Do while i <= LenMas(dmTourPlAvailable)
   If LCase (string1) = LCase (dmTourPlAvailable(i)) then
    dmTourScAvailable(i) = dmTourScAvailable(i) + 1
	AddCHat vbGreen, "Tourney mod:  " & string1 & "  +1 "
    AddQ_D "/w " & UserName & "  " & string1 & "  +1 "
    Exit Sub
   End if
   i = i + 1
  LooP
  AddCHat vbYellow, "Tourney mod:  " & string1 & "  "
  AddQ_D "/w " & UserName & "  " & string1 & "  "
 End IF

 If (LCase(InStr(Message, BotVars.Trigger & "tl")) > 0) and (isAdmin(UserName,tl_access)=1) Then
  Exit Sub
  string1 = (Mid(Message,3,(Len(Message))-2))
  Do while i <= LenMas(dmTourPlAvailable)
   If LCase (string1) = LCase (dmTourPlAvailable(i)) then
    dmTourScAvailable(i) = dmTourScAvailable(i) - 1
	AddCHat vbGreen, "Tourney mod:  " & string1 & "  -1 "
    AddQ_D "/w " & UserName & "  " & string1 & "  -1 "
    Exit Sub
   End if
   i = i + 1
  LooP
  AddCHat vbYellow, "Tourney mod:  " & string1 & "  "
  AddQ_D "/w " & UserName & "  " & string1 & "  "
 End IF

 If (LCase(InStr(Message, BotVars.Trigger & "tp")) > 0) and (isAdmin(UserName,tp_access)=1) Then
  Exit Sub
  string1 = (Mid(Message,4,1))
  Randomize
  Random=Int((((LenMas(dmTourPlAvailable))-1)*RND)+1)
  If string1 = 1 Then
   dmTourScAvailable(Random) = dmTourScAvailable(Random) + 1
   AddCHat vbGreen, "Tourney mod:  " & dmTourPlAvailable(Random) & "  +1 "
   AddQ_D "/w " & UserName & "  " & dmTourPlAvailable(Random) & "  +1 "
   exit sub
  end if
  If string1 = 0 Then
  
  end if
 End IF

 If (LCase(InStr(Message, BotVars.Trigger & "tpw")) > 0) and (isAdmin(UserName,tpw_access)=1) Then
  string1 = (Mid(Message,5,(Len(Message))-4))
  i = Tourney_Generate_WTable(string1,dmTourPlWiners,dmTourPlLosers)
  If i = 0 Then
   AddQ_D "/me    " & string1 & "     ,    "
   Exit Sub
  End if
  If i = -1 Then
   AddQ_D "/me    " & string1 & "     "
   Exit sub
  End if
  If (LenMas (dmTourPlWiners) ) / 2 <> (LenMas (dmTourPlWiners) ) \ 2 Then
   i = ((LenMas(dmTourPlWiners))\ 2)- 1
  Else
   i = LenMas(dmTourPlWiners) \ 2
  End if
  If i <= 2 Then
   string1 = dmTourPlWiners(0) & " vs " & dmTourPlWiners(1)
   AddQ_D "/me !  ,   : " & string1
   Exit sub
  End if
  If i <= 4 Then
   string1 = dmTourPlWiners(0) & " vs " & dmTourPlWiners(1) & "; " & dmTourPlWiners(2) & " vs " & dmTourPlWiners(3)
   AddQ_D "/me !   : " & string1
   Exit sub
  End if
  If i = LenMas (dmTourPlLosers) Then Call Tourney_Update_WL(dmTourPlWiners,dmTourPlLosers)
 End if
end sub

Sub Weather_Load
 Dim fso, file, read_string, cLine,i
 
 Dim Path, Symbol
 Symbol = ","
 Path = "scripts\UltimateBot\weatherID.txt"
 ReDim dmWeatherCitys(0), dmWeatherNewID(0), dmWeatherOldID(0)
 If (CurrentLang="RU") or (CurrentLang="") then
  AddChat vbYellow, "   : {", RGB(14,214,24), Path ,vbYellow,"}"
 else
  AddChat vbYellow, "Loading data from file: {", RGB(14,214,24), Path ,vbYellow,"}"
 End if
 Set fso = CreateObject("Scripting.FileSystemObject")
 If Not fso.FileExists(Path) Then
   If (CurrentLang="RU") or (CurrentLang="") then
    AddChat vbYellow, "!   !    {" , RGB(214,14,24), Path, vbYellow, "}"
    
   else
    AddChat vbYellow, "Error! File wasnt found! Please check {", RGB(214,14,24), Path, vbYellow, "} file!"
    
   end if
   Exit Sub
 End If
 Set file = fso.OpenTextFile(Path, 1, True)
 i = 0
 read_string = file.ReadLine
 Do While file.AtEndOfStream <> True
  read_string = file.ReadLine
  If read_string <>"" Then
     cLine = Split(read_string, Symbol)
     If UBound(cLine) >= 3 Then
      ReDim preserve dmWeatherCitys(i)
	  dmWeatherCitys(i) = cLine(1)
	  ReDim preserve dmWeatherOldID(i)
	  dmWeatherOldID(i) = cLine(2)
      ReDim preserve dmWeatherNewID(i)
	  dmWeatherNewID(i) = cLine(3)
     End if
  End IF
  i=i+1
 Loop
  If (CurrentLang="RU") or (CurrentLang="")  then
   If i = 0 Then
    AddChat vbGreen, " {", RGB(114,114,114), Path , vbGreen, "} "
   else
    AddChat vbGreen, " ", RGB(4,223,185), i ,vbGreen, " "
   End if
  else
   If i = 0 Then
    AddChat vbGreen, "File {", RGB(114,114,114), Path , vbGreen, "} is empty"
   else
    AddChat vbGreen, "Total " & i & " strings"
   end if
  end if
  file.Close
  Exit Sub
End sub

Function Weather_GetCityID(City)
 Weather_GetCityID = -1
 Dim i
 i = -1
 i = PosMas(City, dmWeatherCitys)
 If i > -1 Then 
  If bWeatherUseOldID = True Then 
   Weather_GetCityID = dmWeatherOldID(i)
   
  Else
   Weather_GetCityID = dmWeatherNewID(i)
   AddChat vbBlue, "City = " & City & ", ID = " & dmWeatherNewID(i)
  End if
 End if
End function

Sub weatherinfo_Event_UserTalk(Username, Flags, Message, Ping)
 Dim sTempString, page, sCityName
 
 If Left(Message,1) <> BotVars.Trigger Then exit sub
 sTempString = split (Trim(LCase(message))," ")
	
	If (sTempString(0) = BotVars.Trigger & "weather") or (sTempString(0) = BotVars.Trigger & "") Then
		dim i
		sCityName = sTempString(1)
		If UBound (sTempString) > 2 then
			for i = 2 to UBound (sTempString) - 1
				sCityName = sCityName & " " &(sTempString(i))
			next
		end if
		GetDBEntry Username, myAccess, myFlags
		If myAccess < WeatherAccess and InStr(UCase(myFlags), WeatherFlag) = 0 Then Exit Sub
		
		If Weather_Status > 0 Then
		 AddQ_D "/me  ,  "
		 exit sub
		End if
		 page = -1
		 Select Case sTempString(UBound(sTempString))
		  Case "1"
		   page = 1
		  Case "2"
		   page = 2
		  Case "3"
		   page = 3
		  Case "4"
		   page = 4
		 End select
		 if page = -1 then
		   sCityName = sTempString(1)
		   for i = 2 to UBound (sTempString) 
			sCityName = sCityName & " " &(sTempString(i))
		   next
		   page = 2
		 end if
		Location = sCityName
		Call DisplayTodaysWeather(Location,page)
	End If
	exit sub
	If Left(LCase(Message), 8) = BotVars.Trigger & " " Then
		GetDBEntry Username, myAccess, myFlags
		If myAccess < WeatherAccess Then Exit Sub
		Location = Trim(Mid(Message, 9))
		If Weather_Status > 0 Then
		 AddQ_D "/me  ,  "
		 exit sub
		End if
		Call DisplayTodaysWeather(Location)
	End If
End Sub

Sub DisplayTodaysWeather(Location,page)
   Weather_Status = 1
   On error resume next
   Dim iWeatherCityID
 If ScINet.stillExecuting then
  success = false
  AddChat VbBlue, "ScINet.stillExecuting !"
  Weather_Status = 0
  Exit Sub
 End If
 iWeatherCityID = Weather_GetCityID(Location)
 If iWeatherCityID = -1 Then
  AddCHat vbYellow, "[Weather v2] " & Location & "      "
  AddQ_D "/me " & Location & "      "
  Weather_Status = 0
  AddChat VbBlue, ">>>>>>>>>>>>>>" & CHR(34)
  exit sub
 End if
 If bWeatherUserXMLHTTP = False Then
  
  content = LCase(SciNet.OpenURL("http://informer.gismeteo.ru/rss/" & iWeatherCityID & ".xml"))
  
  AddChat vbWhite, StrConv (content,"UTF-8","windows-1251")
 
 Else
  On error resume next
  Set webObj = CreateObject("Microsoft.XMLHTTP")
  
  webObj.Open "GET", ("http://informer.gismeteo.ru/rss/" & iWeatherCityID & ".xml"), False
  webObj.Send
  content = webObj.responseText
  Weather_Status = 0
 End if
 If Len(Content) = 0 Then 
  AddCHat vbYellow, "[Weather v2] " & Location & "      "
  AddQ_D "/me " & Location & "      "
  Weather_Status = 0
 End if
 If InStr(LCase(Content),"forbidden") > 0 Then
  addChat vbBlue, "[Weather v2] " & "403: You access is forbidden"
  Weather_Status = 0
  AddQ_D "/me 403:     "
  exit sub
 end if
  If Err.Number = 35761 Then
  AddQ_D LMT(305)
  Weather_Status = 0
  exit sub
 End if
 
 If  InStr(LCase(content) ," 404:   ") Then
  AddCHat vbYellow, "[Weather v2] " & Location & "      "
  AddQ_D "/me " & Location & "      "
  Weather_Status = 0
 End if
 
 Dim sWeather_ForecastDate, sWeather_ForecastDavlenie,sWeather_ForecastProcent,sWeather_ForecastWind
 ReDim dmWeatherStrings(4) 
 
  iWeather_StartPos = InStr(LCase(content),"<item>") 
  
 If iWeather_StartPos > 0 Then 
  iWeather_CurrentPos = iWeather_StartPos + 6
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_LenUrl = 0
  
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  sWeather_ForecastDate = sWeather_ForecastDate & Mid(content,iWeather_CurrentPos - iWeather_LenUrl ,iWeather_LenUrl - 1) 
  
  dmWeatherStrings(1) = sWeather_ForecastDate
  iWeather_CurrentPos = iWeather_CurrentPos + 9  
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 9 
  
  iWeather_LenUrl = 0
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
   iWeather_LenUrl = 0
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Dim sDescription
  sDescription =  Mid(content,iWeather_CurrentPos - iWeather_LenUrl ,iWeather_LenUrl - 1) 
  
  dmWeatherStrings(1) = dmWeatherStrings(1) & ": " & sDescription
  
  iWeather_CurrentPos = iWeather_CurrentPos + 15 
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 12 
    
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 10
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 10 
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 9 
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
   
   iWeather_CurrentPos = iWeather_CurrentPos + 1
  
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  
  iWeather_LenUrl = 0
  
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  sWeather_ForecastDate = Mid(content,iWeather_CurrentPos - iWeather_LenUrl  ,iWeather_LenUrl - 1) 
  
  dmWeatherStrings(2) = sWeather_ForecastDate
  
  iWeather_CurrentPos = iWeather_CurrentPos + 9  
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 9 
  
  iWeather_LenUrl = 0
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
   iWeather_LenUrl = 0
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  sDescription =  Mid(content,iWeather_CurrentPos - iWeather_LenUrl ,iWeather_LenUrl - 1) 
  
  dmWeatherStrings(2) =   dmWeatherStrings(2)  & ": " & sDescription
  
  iWeather_CurrentPos = iWeather_CurrentPos + 15 
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 12 
    
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 10
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 10 
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 9 
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
   
   iWeather_CurrentPos = iWeather_CurrentPos + 1
  
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  
  iWeather_LenUrl = 0
  
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  sWeather_ForecastDate = Mid(content,iWeather_CurrentPos - iWeather_LenUrl  ,iWeather_LenUrl - 1) 
  
  dmWeatherStrings(3) = sWeather_ForecastDate
  
  iWeather_CurrentPos = iWeather_CurrentPos + 9  
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 9 
  
  iWeather_LenUrl = 0
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
   iWeather_LenUrl = 0
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  sDescription =  Mid(content,iWeather_CurrentPos - iWeather_LenUrl ,iWeather_LenUrl - 1) 
  
  dmWeatherStrings(3) = dmWeatherStrings(3)  & ": " & sDescription
  
  iWeather_CurrentPos = iWeather_CurrentPos + 15 
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 12 
    
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 10
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 10 
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 9 
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
   
   iWeather_CurrentPos = iWeather_CurrentPos + 1
  
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  
  iWeather_LenUrl = 0
  
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  sWeather_ForecastDate = Mid(content,iWeather_CurrentPos - iWeather_LenUrl  ,iWeather_LenUrl - 1) 
  
  dmWeatherStrings(4) = sWeather_ForecastDate
  
  iWeather_CurrentPos = iWeather_CurrentPos + 9  
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 9 
  
  iWeather_LenUrl = 0
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
   iWeather_LenUrl = 0
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  sDescription =  Mid(content,iWeather_CurrentPos - iWeather_LenUrl ,iWeather_LenUrl - 1) 
  
  dmWeatherStrings(4) = dmWeatherStrings(4) & ": " & sDescription
  
  iWeather_CurrentPos = iWeather_CurrentPos + 15 
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 12 
    
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 10
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 10 
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  iWeather_CurrentPos = iWeather_CurrentPos + 9 
  
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
   
   iWeather_CurrentPos = iWeather_CurrentPos + 1
  
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  
  AddQ_D dmWeatherStrings(page) & " (" & page & "\4)"
 Else
  AddCHat vbYellow, "[Weather v2] " & Location & " :   ,    ."
  AddQ_D "/me " & Location & " :   ,    ."
  Weather_Status = 0
  Exit sub
 End if
 Weather_Status = 0
 Exit sub
 
 iWeather_StartPos = InStr(LCase(content),"<div class=" & CHR(34) & "date" & CHR(34) & ">") 
 If iWeather_StartPos > 0 Then 
  iWeather_CurrentPos = iWeather_StartPos + 18
  Do while sWeather_CurCut <> "<"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
 Else
  AddCHat vbYellow, "[Weather v2] " & Location & " :   ,    ."
  AddQ_D "/me " & Location & " :   ,    ."
  Weather_Status = 0
  Exit sub
 End if
 
 sWeather_ForecastDate = sWeather_ForecastDate & Mid(content,iWeather_CurrentPos - iWeather_LenUrl ,iWeather_LenUrl - 1) 
 AddChat vbBlue, "#1" & sWeather_ForecastDate
 
 sWeather_CurCut = Mid(content,InStr(content,"")-3 , 4)
 content_Result = Mid(content,InStr(content,"")+ 2)
 If bWeather_Temperature Then sWeather_ForecastDate = sWeather_ForecastDate & "::" & sWeather_CurCut else sWeather_ForecastDate = sWeather_ForecastDate & "::"
 
 If bWeather_pressure Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(content,InStr(LCase(content),"  ")-10, 3) & "..."
 sWeather_ForecastDavlenie = Mid(content,InStr(content,"  ")+ 10)
 
 If bWeather_humidity Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"font-size: 10px; display: inline; font-weight: bold;") + 54, 3) & ";"
 sWeather_ForecastDavlenie = Mid(sWeather_ForecastDavlenie,InStr(sWeather_ForecastDavlenie,"font-size: 10px; display: inline; font-weight: bold;")+ 60)
 
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"<strong>") + 8, "<") & ","
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie), "font-size: 10px; display: inline; font-weight: bold;") + 54, "<") & "\"
 
 sWeather_CurCut = Mid(content_Result,InStr(content_Result,"")-3 , 4)
 content_Result = Mid(content_Result,InStr(content_Result,"")+ 2)
 If bWeather_Temperature Then sWeather_ForecastDate = sWeather_ForecastDate & ";:" & sWeather_CurCut Else sWeather_ForecastDate = sWeather_ForecastDate & ";:"
 
 If bWeather_pressure Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"  ")-10, 3) & "..."
 sWeather_ForecastDavlenie = Mid(sWeather_ForecastDavlenie,InStr(sWeather_ForecastDavlenie,"  ")+ 10)
 
 If bWeather_humidity Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"font-size: 10px; display: inline; font-weight: bold;") + 54, 3) & ";"
 sWeather_ForecastDavlenie = Mid(sWeather_ForecastDavlenie,InStr(sWeather_ForecastDavlenie,"font-size: 10px; display: inline; font-weight: bold;")+ 60)
 
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"<strong>") + 8, "<") & ","
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie), "font-size: 10px; display: inline; font-weight: bold;") + 54, "<") & "\"
 
 sWeather_CurCut = Mid(content_Result,InStr(content_Result,"")-3 , 4)
 content_Result = Mid(content_Result,InStr(content_Result,"")+ 2)
 If bWeather_Temperature Then sWeather_ForecastDate = sWeather_ForecastDate & ";:" & sWeather_CurCut else sWeather_ForecastDate = sWeather_ForecastDate & ";:"
 
 If bWeather_pressure Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"  ")-10, 3) & "..."
 sWeather_ForecastDavlenie = Mid(sWeather_ForecastDavlenie,InStr(sWeather_ForecastDavlenie,"  ")+ 10)
 
 If bWeather_humidity Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"font-size: 10px; display: inline; font-weight: bold;") + 54, 3) & ";"
 sWeather_ForecastDavlenie = Mid(sWeather_ForecastDavlenie,InStr(sWeather_ForecastDavlenie,"font-size: 10px; display: inline; font-weight: bold;")+ 60)
 
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"<strong>") + 8, "<") & ","
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie), "font-size: 10px; display: inline; font-weight: bold;") + 54, "<") & "\"
 
 sWeather_CurCut = Mid(content_Result,InStr(content_Result,"")-3 , 4)
 content_Result = Mid(content_Result,InStr(content_Result,"")+ 2)
 If bWeather_Temperature Then sWeather_ForecastDate = sWeather_ForecastDate & ";:" & sWeather_CurCut else sWeather_ForecastDate = sWeather_ForecastDate & ";:"
 
 If bWeather_pressure Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"  ")-10, 3) & "..."
 sWeather_ForecastDavlenie = Mid(sWeather_ForecastDavlenie,InStr(sWeather_ForecastDavlenie,"  ")+ 10)
 
 If bWeather_humidity Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"font-size: 10px; display: inline; font-weight: bold;") + 54, 3) & ";"
 sWeather_ForecastDavlenie = Mid(sWeather_ForecastDavlenie,InStr(sWeather_ForecastDavlenie,"font-size: 10px; display: inline; font-weight: bold;")+ 60)
 
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"<strong>") + 8, "<") & ","
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie), "font-size: 10px; display: inline; font-weight: bold;") + 54, "<") & "\"
 
 AddQ_D "/me " & Location & "|" & sWeather_ForecastDate
 
 Weather_Status = 0
 
 exit sub
 iWeather_StartPos = InStr(LCase(content),"/gm/normal/node/prognoz_type")
 If iWeather_StartPos > 0 Then 
  iWeather_CurrentPos = iWeather_StartPos
  Do while sWeather_CurCut <> ">"
   sWeather_CurCut = Mid(content,iWeather_CurrentPos,1)
   iWeather_CurrentPos = iWeather_CurrentPos + 1
   iWeather_LenUrl = iWeather_LenUrl + 1
  Loop
  
 content = SciNet.OpenURL( "http://wap.gismeteo.ru" & Mid(content,iWeather_StartPos,iWeather_LenUrl - 2))
 
 Set fso = CreateObject("Scripting.FileSystemObject")
 Set file = fso.OpenTextFile("scripts\UltimateBot\weather.tmp", 2, True)
 file.Write sWeather_Url
 file.Write content
 file.Close
 Weather_Status = Weather_Status + 1
 Call Weather_OpenFile
 exit sub
 End if
 AddCHat vbYellow, Location & "     "
 AddQ_D "/me " & Location & "     "
 Weather_Status = 0
End sub

Sub Weather_OpenFile_old
 Dim fso, file,sWeather_data
 Set fso = CreateObject("Scripting.FileSystemObject")
 If not fso.FileExists("scripts\UltimateBot\weather.tmp") Then
  addChat vbRed, " -   !"
  exit sub
 End if
 Set file = fso.OpenTextFile("scripts\UltimateBot\weather.tmp", 1, True,0)	
 sWeather_data = file.ReadAll
 file.close
 EncodedCharSet =  StrConv (sWeather_data,"UTF-8","windows-1251")
 addChat vbGreen, EncodedCharSet
 Set fso = CreateObject("Scripting.FileSystemObject")
 Set file = fso.OpenTextFile("C:\2.txt", 2, True)
 file.Write sWeather_data
 file.Close
end sub

Sub Weather_OpenFile
 Weather_Status = Weather_Status + 1
 Set ADODBStream = CreateObject("ADODB.Stream")
 ADODBStream.Type = 2
 ADODBStream.Charset = "UTF-8"
 ADODBStream.Open()
 ADODBStream.LoadFromFile("scripts\UltimateBot\weather.tmp")
 Text = ADODBStream.ReadText()
 ADODBStream.Close()
 ADODBStream.Charset = "windows-1251"  
 ADODBStream.Open()
 ADODBStream.WriteText(Text)
 ADODBStream.SaveToFile "scripts\UltimateBot\weather.tmp", 2
 ADODBStream.Close()
 Set fso = CreateObject("Scripting.FileSystemObject")
 Set file = fso.OpenTextFile("scripts\UltimateBot\weather.tmp", 1, True,0)	
 sWeather_data = file.ReadAll
 file.close
 Dim sWeather_ForecastDate, sWeather_ForecastDavlenie,sWeather_ForecastProcent,sWeather_ForecastWind
 iWeather_CurrentPos = InStr (sWeather_data, "  ") + 48
 iWeather_LenUrl = 0
 Do while sWeather_CurCut <> "<"
  sWeather_CurCut = Mid(sWeather_data,iWeather_CurrentPos,1)
  iWeather_CurrentPos = iWeather_CurrentPos + 1
  iWeather_LenUrl = iWeather_LenUrl + 1
 Loop
 sWeather_ForecastDate = sWeather_ForecastDate & Mid(sWeather_data,iWeather_CurrentPos - iWeather_LenUrl ,iWeather_LenUrl - 1) 
 
 sWeather_CurCut = Mid(sWeather_data,InStr(sWeather_data,"")-3 , 4)
 sWeather_data_Result = Mid(sWeather_data,InStr(sWeather_data,"")+ 2)
 If bWeather_Temperature Then sWeather_ForecastDate = sWeather_ForecastDate & "::" & sWeather_CurCut else sWeather_ForecastDate = sWeather_ForecastDate & "::"
 
 If bWeather_pressure Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(sWeather_data,InStr(LCase(sWeather_data),"  ")-10, 3) & "..."
 sWeather_ForecastDavlenie = Mid(sWeather_data,InStr(sWeather_data,"  ")+ 10)
 
 If bWeather_humidity Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"font-size: 10px; display: inline; font-weight: bold;") + 54, 3) & ";"
 sWeather_ForecastDavlenie = Mid(sWeather_ForecastDavlenie,InStr(sWeather_ForecastDavlenie,"font-size: 10px; display: inline; font-weight: bold;")+ 60)
 
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"<strong>") + 8, "<") & ","
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie), "font-size: 10px; display: inline; font-weight: bold;") + 54, "<") & "\"
 
 sWeather_CurCut = Mid(sWeather_data_Result,InStr(sWeather_data_Result,"")-3 , 4)
 sWeather_data_Result = Mid(sWeather_data_Result,InStr(sWeather_data_Result,"")+ 2)
 If bWeather_Temperature Then sWeather_ForecastDate = sWeather_ForecastDate & ";:" & sWeather_CurCut Else sWeather_ForecastDate = sWeather_ForecastDate & ";:"
 
 If bWeather_pressure Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"  ")-10, 3) & "..."
 sWeather_ForecastDavlenie = Mid(sWeather_ForecastDavlenie,InStr(sWeather_ForecastDavlenie,"  ")+ 10)
 
 If bWeather_humidity Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"font-size: 10px; display: inline; font-weight: bold;") + 54, 3) & ";"
 sWeather_ForecastDavlenie = Mid(sWeather_ForecastDavlenie,InStr(sWeather_ForecastDavlenie,"font-size: 10px; display: inline; font-weight: bold;")+ 60)
 
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"<strong>") + 8, "<") & ","
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie), "font-size: 10px; display: inline; font-weight: bold;") + 54, "<") & "\"
 
 sWeather_CurCut = Mid(sWeather_data_Result,InStr(sWeather_data_Result,"")-3 , 4)
 sWeather_data_Result = Mid(sWeather_data_Result,InStr(sWeather_data_Result,"")+ 2)
 If bWeather_Temperature Then sWeather_ForecastDate = sWeather_ForecastDate & ";:" & sWeather_CurCut else sWeather_ForecastDate = sWeather_ForecastDate & ";:"
 
 If bWeather_pressure Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"  ")-10, 3) & "..."
 sWeather_ForecastDavlenie = Mid(sWeather_ForecastDavlenie,InStr(sWeather_ForecastDavlenie,"  ")+ 10)
 
 If bWeather_humidity Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"font-size: 10px; display: inline; font-weight: bold;") + 54, 3) & ";"
 sWeather_ForecastDavlenie = Mid(sWeather_ForecastDavlenie,InStr(sWeather_ForecastDavlenie,"font-size: 10px; display: inline; font-weight: bold;")+ 60)
 
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"<strong>") + 8, "<") & ","
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie), "font-size: 10px; display: inline; font-weight: bold;") + 54, "<") & "\"
 
 sWeather_CurCut = Mid(sWeather_data_Result,InStr(sWeather_data_Result,"")-3 , 4)
 sWeather_data_Result = Mid(sWeather_data_Result,InStr(sWeather_data_Result,"")+ 2)
 If bWeather_Temperature Then sWeather_ForecastDate = sWeather_ForecastDate & ";:" & sWeather_CurCut else sWeather_ForecastDate = sWeather_ForecastDate & ";:"
 
 If bWeather_pressure Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"  ")-10, 3) & "..."
 sWeather_ForecastDavlenie = Mid(sWeather_ForecastDavlenie,InStr(sWeather_ForecastDavlenie,"  ")+ 10)
 
 If bWeather_humidity Then sWeather_ForecastDate = sWeather_ForecastDate & "," & Mid(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"font-size: 10px; display: inline; font-weight: bold;") + 54, 3) & ";"
 sWeather_ForecastDavlenie = Mid(sWeather_ForecastDavlenie,InStr(sWeather_ForecastDavlenie,"font-size: 10px; display: inline; font-weight: bold;")+ 60)
 
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie),"<strong>") + 8, "<") & ","
 If bWeather_Wind Then sWeather_ForecastDate = sWeather_ForecastDate & ExtractWord(sWeather_ForecastDavlenie,InStr(LCase(sWeather_ForecastDavlenie), "font-size: 10px; display: inline; font-weight: bold;") + 54, "<") & "\"
 
 AddQ_D "/me " & Location & "|" & sWeather_ForecastDate
 
 Weather_Status = 0
End sub

Function ExtractWord(Text,StartPos, DivSymbol)
 Dim sExtractWord_CurCut,sExtractWord_LenWord
 sExtractWord_LenWord = 0
 Do while sExtractWord_CurCut <> DivSymbol
  sExtractWord_CurCut = Mid(Text,StartPos,1)
  StartPos = StartPos + 1
  sExtractWord_LenWord = sExtractWord_LenWord + 1
 Loop
  ExtractWord = ExtractWord & Mid(Text,StartPos - sExtractWord_LenWord ,sExtractWord_LenWord - 1)
End Function

Sub SaiMail_Load
 addChat vbYellow, LMT(184)
 Call Load_file_dm(SaiMail_File_Path,dmSMailNickName,dmSMailMessage,"*")
End sub

Sub SaiMail_UserTalk(UserName,Message)
 Dim i,sReceiveUser,sReceiveMes,strSplitString
 
 strSplitString = split (Message," ")
 If CountMas(strSplitString) < 2 Then 
   AddCHat vbYellow, LMT(185) & UserName
   AddQ_D "/w " & UserName & " " & LMT(186)
   Exit sub
 End if
 If SplitString(Message,sReceiveUser,sReceiveMes," ") = 0 Then
  AddCHat vbYellow, LMT(185) & UserName
  AddQ_D "/w " & UserName & " " & LMT(186)
  
  Exit sub
 End if
 
 i = PosMas(sReceiveUser,dmSMailNickName)
 If i => 0 Then
  If InStr((LCase(dmSMailMessage(i))),(LCase(UserName))) > 0 Then
   AddCHat vbYellow, LMT(187) & UserName & LMT(188) & dmSMailNickName(i)
   AddQ_D "/w " & UserName & " " & LMT(189) &  dmSMailNickName(i)
   
   dmSMailMessage(i) = sReceiveMes & " (" & UserName & ")"
   Call SaiMail_Save
   Exit sub
  End if
 
  Do while i <= LenMas (dmSMailNickName)
   If LCase(dmSMailNickName(i)) = LCase(sReceiveUser) Then
    If InStr((LCase(dmSMailMessage(i))),LCase(UserName)) > 0 Then
	  AddCHat vbYellow, LMT(187) & UserName & LMT(188) & dmSMailNickName(i)
      AddQ_D "/w " & UserName & " " & LMT(189) &  dmSMailNickName(i)
	  
      dmSMailMessage(i) = sReceiveMes & " (" & UserName & ")"
      Call SaiMail_Save
      Exit sub
	end if
   end if
   i = i + 1
  Loop
 End if
 
 If CountMas(dmSMailNickName) = 0 Then
  ReDim dmSMailNickName(0)
  ReDim dmSMailMessage(0)
  dmSMailNickName(0) = sReceiveUser
  dmSMailMessage(0) = sReceiveMes & " (" & UserName & ")"
  AddCHat vbGreen, LMT(190) & sReceiveUser & LMT(191) & UserName
  AddQ_D "/w " & UserName & " " & LMT(192) & sReceiveUser
  
  Call SaiMail_Save
  Exit sub
 End if
  ReDim Preserve dmSMailNickName(CountMas(dmSMailNickName))
  ReDim Preserve dmSMailMessage(CountMas(dmSMailMessage))
  dmSMailNickName(CountMas(dmSMailNickName) ) = sReceiveUser
  dmSMailMessage(CountMas(dmSMailMessage) ) = sReceiveMes & " (" & UserName & ")"
  AddCHat vbGreen, LMT(190) & sReceiveUser & LMT(191) & UserName
  AddQ_D "/w " & LMT(192) & sReceiveUser
  
  Call SaiMail_Save
End sub

Function SaiMail_UserJoins(UserName)
 Dim i
 SaiMail_UserJoins = 0
 UserName = LCase(UserName)
 i = PosMas(UserName,dmSMailNickName)
 If i => 0 Then
  SaiMail_UserJoins = 1
  AddCHat vbGreen, LMT(193) & UserName & LMT(194)
  AddQ_D "/w " & UserName & " " & dmSMailMessage(i)
  dmSMailMessage(i)  = dmSMailMessage(LenMas(dmSMailMessage))
  dmSMailNickName(i) = dmSMailNickName(LenMas(dmSMailNickName))
  
  If CountMas(dmSMailMessage) > 1 Then
   ReDim Preserve dmSMailMessage ((LenMas(dmSMailMessage))- 1)
   ReDim Preserve dmSMailNickName((LenMas(dmSMailNickName))- 1)
  Else
   ReDim  dmSMailMessage (0)
   ReDim  dmSMailNickName(0)
  End if
 End if
End Function

Sub SaiMail_WispMessage(UserName)
End sub

Sub SaiMail_Save
 addChat vbYellow, "  SaiMail ... "
 Call Save_File_dm(SaiMail_File_Path,dmSMailNickName,dmSMailMessage,(LenMas(dmSMailMessage)),"*")
End Sub

Sub AbuseDetect_Event_Load()
 sAbuseDetectURL = "http://classic.battle.net/war3/ladder/w3xp-player-stats.aspx?Gateway=" & sAbuseDetectLocation & "&PlayerName="
End sub

Sub AbuseDetect_Event_UserTalk(Username, Flags, Message, Ping)
 	If Left(LCase(Message),3) = BotVars.Trigger & "ad" Then
		GetDBEntry Username, myAccess, myFlags
		
		sAbuseDetectNickName = Trim(Mid(Message, 4))
		If iAbuseDetect_Status > 0 Then
		 AddQ_D LangModule_SendMessage(Username,272)
		 exit sub
		End if
		
		Call AbuseDetect_SearchStats(sAbuseDetectNickName)
	End If
End sub

Sub AbuseDetect_SearchStats(UserName)
 
 On error resume next
 iAbuseDetect_Status = 1
 Dim sAbuseDetect_TempRound
 sAbuseDetect_TempRound = ""
 
 AddChat VbGreen, "[AbuseDetect] ",VbYellow, LMT(273) & sAbuseDetectLocation & LMT(274) & UserName & " ..."
 AddQ_D "/me " & LMT(273) & sAbuseDetectLocation & LMT(274) & UserName & " ..."
 If bAbuseDetectUserXMLHTTP = True Then
  Set webObj = CreateObject("Microsoft.XMLHTTP")
  webObj.Open "GET", sAbuseDetectURL & UserName, False
  webObj.Send
  web = webObj.responseText
 Else
  If ScINet.stillExecuting then
   iAbuseDetect_Status = 0
   AddChat VbBlue, "ScINet.stillExecuting !"
   Exit Sub
  End If
  web = SciNet.OpenURL(sAbuseDetectURL & UserName)
 End if
 If Err.Number = 35761 Then
  AddQ_D LMT(275)
  iAbuseDetect_Status = 0
  exit sub
 End if
 iAbuseDetect_CurrentPos = 0
 iAbuseDetect_CurrentPos = InStr (web,"Games:") + 39
 If iAbuseDetect_CurrentPos = 39 Then
  iAbuseDetect_Status = 0
  AddChat vbGreen, "[AbuseDetect] ",vbYellow, LMT(276) & UserName & LMT(277) & sAbuseDetectLocation
  AddQ_D "/me " & LMT(276) & UserName & LMT(277) & sAbuseDetectLocation
  exit sub
 End if 
 sAbuseDetect_CurCut = ""
 
 iAbuseDetect_LenUrl = 0
 Do while sAbuseDetect_CurCut <> "<"
  sAbuseDetect_CurCut = Mid(web,iAbuseDetect_CurrentPos,1)
  iAbuseDetect_CurrentPos = iAbuseDetect_CurrentPos + 1
  iAbuseDetect_LenUrl = iAbuseDetect_LenUrl + 1
 Loop
 
 sAbuseDetect_TotalGames = Mid(web,iAbuseDetect_CurrentPos - iAbuseDetect_LenUrl ,iAbuseDetect_LenUrl - 1)
 
 iAbuseDetect_CurrentPos = InStr (web,"Total Hours Played:") + 52
 
 iAbuseDetect_LenUrl = 0
 sAbuseDetect_CurCut = ""
 Do while sAbuseDetect_CurCut <> "<"
  sAbuseDetect_CurCut = Mid(web,iAbuseDetect_CurrentPos,1)
  iAbuseDetect_CurrentPos = iAbuseDetect_CurrentPos + 1
  iAbuseDetect_LenUrl = iAbuseDetect_LenUrl + 1
 Loop
 sAbuseDetect_TotalHours = Mid(web,iAbuseDetect_CurrentPos - iAbuseDetect_LenUrl ,iAbuseDetect_LenUrl - 1)
 
 iAbuseDetect_Status = 0
 i1 = sAbuseDetect_TotalGames * 5 / 60
 
 i2 = sAbuseDetect_TotalHours
 If sAbuseDetect_TotalHours <= 20 Then
  AddChat vbGreen, "[AbuseDetect]",vbYellow, LMT(278) & UserName & LMT(279) & sAbuseDetectLocation & LMT(280)
  AddQ_D "/me " & LMT(278) & UserName & LMT(279) & sAbuseDetectLocation & LMT(280)
  Exit sub
 End if
 sAbuseDetect_TempRound =  ((sAbuseDetect_TotalHours) / (sAbuseDetect_TotalGames * 5 / 60))
 If Len(sAbuseDetect_TempRound) > 5 Then sAbuseDetect_TempRound = Mid (sAbuseDetect_TempRound,1,5)
 If Int(sAbuseDetect_TotalGames * 5 / 60) < Int(sAbuseDetect_TotalHours) Then
  AddChat vbGreen, "[AbuseDetect]",vbYellow, LMT(281) & UserName & LMT(279) & sAbuseDetectLocation & LMT(282) & sAbuseDetect_TempRound & LMT(283)
  AddQ_D "/me " & LMT(281) & UserName & LMT(279) & sAbuseDetectLocation & LMT(282) & sAbuseDetect_TempRound & LMT(283)
 else
  AddChat vbGreen, "[AbuseDetect]",vbYellow, LMT(281) & UserName & LMT(279) & sAbuseDetectLocation & LMT(284)
  AddQ_D "/me " & LMT(281) & UserName & LMT(279) & sAbuseDetectLocation & LMT(284)
 end if
End Sub

Sub Reclame_timer()
 If Reclame_module = True Then Call Whisp_reclame
End Sub

Sub Load_Reclame
 Call Load_File_dm (ReclameFilePath,RCM,"","")
 iReclameCurrentMes = LenMas (RCM)
END SUB

SuB Whisp_reclame
 Dim Random, sTempString
 Randomize
 Random = Int((iReclameCurrentMes + 1) * Rnd )
 
 AddQ_D RCM(Random)
 sTempString = RCM(Random)
 RCM(Random) = RCM(iReclameCurrentMes)
 RCM(iReclameCurrentMes) = sTempString
 iReclameCurrentMes = iReclameCurrentMes - 1
 If iReclameCurrentMes < 0 Then iReclameCurrentMes = LenMas (RCM)
 
 exit sub
END SUB

Sub Load_file_dm(Path,Mas1,Mas2,Symbol)
 Dim fso, file, read_string, cLine,i
 ReDim Mas1(0)
 if Symbol<>"" then
  ReDim Mas2(0)
 end if
 If (CurrentLang="RU") or (CurrentLang="") then
  AddChat vbYellow, "   : {", RGB(14,214,24), Path ,vbYellow,"}"
 else
  AddChat vbYellow, "Loading data from file: {", RGB(14,214,24), Path ,vbYellow,"}"
 End if
 Set fso = CreateObject("Scripting.FileSystemObject")
 If Not fso.FileExists(Path) Then
   If (CurrentLang="RU") or (CurrentLang="") then
    AddChat vbYellow, "!   !    {" , RGB(214,14,24), Path, vbYellow, "}"
    
   else
    AddChat vbYellow, "Error! File wasnt found! Please check {", RGB(214,14,24), Path, vbYellow, "} file!"
    
   end if
   Exit Sub
 End If
 Set file = fso.OpenTextFile(Path, 1, True)
 i = 0
 Do While file.AtEndOfStream <> True
  read_string = file.ReadLine
  If read_string <>"" Then
   If Symbol<>"" then
     cLine = Split(read_string, Symbol)
     If UBound(cLine) >= 1 Then
      ReDim preserve Mas1(i)
	  Mas1(i) = cLine(0)
      ReDim preserve Mas2(i)
	  Mas2(i) = cLine(1)
     End if
   else
    ReDim preserve Mas1(i)
    Mas1(i)=read_string
   End IF
  End IF
  i=i+1
 Loop
  If (CurrentLang="RU") or (CurrentLang="")  then
   If i = 0 Then
    AddChat vbGreen, " {", RGB(114,114,114), Path , vbGreen, "} "
   else
    AddChat vbGreen, " ", RGB(4,223,185), i ,vbGreen, " "
   End if
  else
   If i = 0 Then
    AddChat vbGreen, "File {", RGB(114,114,114), Path , vbGreen, "} is empty"
   else
    AddChat vbGreen, "Total " & i & " strings"
   end if
  end if
  file.Close
  Exit Sub
End Sub

SuB Save_File_dm(Path,Mas1,Mas2,Length,Symbol)
 Dim fso, file, sList, cUser,i
 Set fso = CreateObject("Scripting.FileSystemObject")
 Set file = fso.OpenTextFile(Path, 2, True)
 If CountMas(Mas1) = 0 Then
  AddChat vbYellow, "  {", RGB(114,114,114), Path ,vbYellow, "} , ..  "
  file.Close
  exit sub
 end if
 For i=0 to Length
  If Symbol = "" then
  file.WriteLine Mas1(i)
  else
  file.WriteLine Mas1(i) & symbol & Mas2(i)
  end if
 Next
 file.Close
 AddChat vbGreen, "   . : ", RGB(4,223,185), Length + 1
END SuB

Function ReadConfig(StringForSearch,FilePath)
 ReadConfig = 100
 On Error Resume Next
 Dim fso,file,i,sSplitString
 StringForSearch = LCase(StringForSearch)
 Set fso = CreateObject("Scripting.FileSystemObject")
 If fso.FileExists(FilePath) Then
  Set file = fso.OpenTextFile(FilePath, 1, True)
  i = 0
  Do While file.AtEndOfStream <> True
   sSplitString = split(file.ReadLine,"=")
   If Trim(LCase(sSplitString(0))) = StringForSearch Then 
    ReadConfig = Int(sSplitString(1))
	Exit function
   End if
   i=i+1
  Loop
 Else
  AddChaT vbGreen, "[ReadConfig]",vbYellow, " ConfigFile {", vbGreen, FilePath,vbYellow, "}doesnt exists, [", vbGreen, StringForSearch,vbYellow, "] = ", vbGreen, "100"
  ReadConfig = 100
 End if
 If Err.Number > 0 Then ReadConfig = 100
End function

Sub Load_Chat
 Call Load_file_dm(ChatFilePath,BCM,BCMA,"|")
END SUB

SuB Add_Chat
 If (Tmr>0) and (Teacher=Chater) and (PBCM>"") then
 ReDim preserve BCM(CountMas(BCM))
 ReDim preserve BCMA(CountMas(BCMA))
 BCM(CountMas(BCM))= QBCM
 BCMA(CountMas(BCMA))= PBCM
 
 TmR=0
 AddChat vbGreen, "Load Save_chat.."
 AddQ_D "/w  "& Teacher & "     :-)"
 Call Save_Chat
 End If
End SuB

SuB Whisp_Chat
 Dim i,F
 f=0
 i=1
 For i = 0 To LenMas(BCM)
 'If QBCM=LCase(BCM(i)) then
 If InStr(QBCM,LCase(BCM(i)))>0 then
  
   AddQ_D "/w  "& Chater &"  "& BCMA(i)
   
   F=1
   exit sub
 End If
 Next
 If f=0 then
  'AddQ_D "/w  "& Chater & "     . ;-(   -   )"
  'Teacher=Chater
  'TmR=2
 End If
END SUB

SuB BotChat_WhisperFromUser(UserName, Message)
 If Message<>"" then
  Chater = UserName
  
  If tmr = 0 then
   
   QBCM=LCase(Message)
   Call Whisp_Chat
  else
   PBCM=Message
   
   Call Add_chat
  End if
 End if
End sub

SuB Save_ChaT
 Call Save_File_dm (ChatFilePath,BCM,BCMA,LenMas(BCM),"|")
 AddChat vbGreen, "  . : "& CountMas(BCM)
 Teacher=""
END SuB

Sub Afk_ShowListV2
 Dim string1,x,sAfk_List
 If blAfk_Enabled = False Then exit sub
 x = 1
 sAfk_List = ""
 string1 = GetNameByPosition(x)
 Do while string1 <> ""
  If (GetInternalDataByUsername(string1,7))> (iAfk_SilenceInterval * 60) Then
   sAfk_List = sAfk_List & "," & string1
  End if
  x = x + 1
  string1 = GetNameByPosition(x)
 Loop
 If sAfk_List = "" Then AddQ_D LMT(265) else  AddQ_D "/me :" & sAfk_List
End sub

Function ExtractTime(Time)
 Dim iTempUnExtTime, iHour, iMinutes, iSeconds
 iHour = 0 
 iMinutes = 0
 iSeconds = 0
 ExtractTime = Time
 iTempUnExtTime = Int (Time)
 If iTempUnExtTime > 60 Then 
  iMinutes = Fix (iTempUnExtTime \ 60 ) - (iTempUnExtTime \ 3600 ) * 60 
  iTempUnExtTime = iTempUnExtTime / 60
  If iTempUnExtTime > 60 Then 
   iTempUnExtTime = iTempUnExtTime \ 60
   iHour = iTempUnExtTime
  End if
  iSeconds = Time - (iHour * 60 + iMinutes) * 60
  ExtractTime = ""
  If iHour > 0 Then ExtractTime = iHour & " , " 
  If iMinutes > 0 Then ExtractTime = ExtractTime &  iMinutes & " , "
  ExtractTime = ExtractTime & iSeconds & " ." 
 Else
  ExtractTime = Time & " "
 End if
End function

Private Function ClanShamansOnline()
    For Each sham In Clan.Shamans
       If sham.IsOnline Then output = output & sham.Name & ", "
    Next
    If output <> vbNullString Then
       output = Left(output, Len(output)-2)
       ClanShamansOnline = output
    Else
       ClanShamansOnline = ""
    End If
End Function

Private Function GetIcon(user)
 If InStr(User,"@")>0 Then 
  GetIcon = "Unknown"
  exit function 
 End if
 if Channel.GetUserIndex(user) = 0 then
   GetIcon = "Unknown"
   exit function 
 end if
 iconname = Channel.Users(Channel.GetUserIndex(user)).Stats.IconName
 iconname = UCase(Left(iconname, 1)) & LCase(Right(iconname, Len(iconname)-1))
 GetIcon = iconname
End Function

Private Function GetTier(user)
 if Channel.GetUserIndex(user) = 0 then
   GetTier = "Unknown"
   exit function 
 end if
 tier = Channel.Users(Channel.GetUserIndex(user)).Stats.IconTier
 GetTier = tier
End Function

Function GetLVL(String)
 On error resume next
 Dim sTempString
 GetLVL = - 1
 sTempString = Split(String," ")
 GetLVL = sTempString(2)
End function

Function LenMas(Mas)
 Dim LenM
 LenMas=0
 LenM=0
 On error resume next
 Do while Mas(LenM)<>""
  if Err.Number = 9 then
   LenMas=LenM - 1
   Err.Number = 0
   exit function
  end if
  LenM=LenM+1
 Loop
 LenMas = LenM
 
end function

Function CountMas(Mas)
 Dim LenM
 CountMas=0
 LenM=0
 On error resume next
 Do while Mas(CountMas)<>""
  if Err.Number = 9 then
   Err.Number = 0
   exit function
  end if
  CountMas = CountMas + 1
 Loop
end function

Function isAdmin(UserName,ReqirementAccess)
  GetDBEntry UserName, myAccess, myFlags  
  If myAccess < Int(ReqirementAccess) Then isAdmin = 0 else isAdmin = 1
  
  If ReqirementAccess = 0 Then isAdmin = 1
End function

Function isAdmin_old(UserName)
  Dim fso, file, read_string, cLine,i
  isAdmin=0
 Set fso = CreateObject("Scripting.FileSystemObject")
 If Not fso.FileExists("admin.ini") Then
   AddChat vbRed, "!     "
   AddQ_D "/w " & UserName & " " & "!     !" ,1
   Exit function
 End If
 Set file = fso.OpenTextFile("admin.ini", 1, True)
 i = 1
 Do While file.AtEndOfStream <> True
  read_string = file.ReadLine
  If read_string <>"" Then
  If InStr((LCase(Read_string)), LCase(UserName)) > 0 then isAdmin=1
  End IF
  i=i+1
 loop
 file.Close
 Exit function
End function

Function StrConv(Text,SourceCharset,DestCharset)
    Set Stream = CreateObject("ADODB.Stream")
    Stream.Type = 2
    Stream.Mode = 3
    Stream.Open
    Stream.Charset = SourceCharset
    Stream.WriteText Text
    Stream.Position = 0
    Stream.Charset = DestCharset
    StrConv = Stream.ReadText
End Function

Function ReplaceTextInFile(Path,ToReplace,ReplaceText)
 Const ForReading = 1
 Const ForWriting = 2
 Set objFSO = CreateObject("Scripting.FileSystemObject")
 Set objFile = objFSO.OpenTextFile(Path, ForReading)
 strText = objFile.ReadAll
 objFile.Close
 strNewText = Replace(strText,ToReplace,ReplaceText)
 Set objFile = objFSO.OpenTextFile(Path, ForWriting)
 objFile.WriteLine strNewText
 objFile.Close
End function

Function PosMas(string1,Mas)
 Dim LenM
 PosMas = -1
 If string1 = "" Then 
  PosMas = -1
  Exit function
 End if
 LenM = 0
 On error resume next
 Do while Mas(LenM)<>""
  if Err.Number = 9 then
   Err.Number = 0
   exit function
  end if
  If LCase(string1) = LCase (Mas(LenM)) Then
   PosMas = LenM
   Exit function
  End if
  LenM = LenM + 1
 Loop
end function

Function PosMasLeft(Mas,string1)
 Dim i,y
 PosMasLeft = -1
 i = 0
 y = len(string1)
 On error resume next
 Do while Mas(i)<>""
  if Err.Number = 9 then
   Err.Number = 0
   exit function
  end if
  If LCase(string1) = LCase( Left(Mas(i),y) ) Then
   PosMasLeft = i
   Exit function
  End if
  i = i + 1
 Loop
end function

Function SplitString(Message,string1,string2,SplitSymbol)
 Dim i,Symbol
 SplitString = 0
 
 i = 1
 Do while Symbol <> SplitSymbol
  Symbol = Mid (Message,i,1)
  If Symbol <> " " Then string1 = string1 & (Mid (Message,i,1))
  i = i + 1
 Loop
 string2 = Mid (Message,i,(Len(Message))- i + 1)
 SplitString = 1
End Function

Sub InsSort(dmNumbMas,dmStrMas) 
 Dim i, sSwapString1, sSwapString2, MaxMas, iX, y
 MaxMas = LenMas(dmNumbMas)
 sSwapString1 = dmNumbMas(0)
 If LenMas(dmStrMas) <> 0 then sSwapString2 = dmStrMas(0)
 For iX=0 to  LenMas(dmNumbMas)
  sSwapString1 = dmNumbMas(iX)   
  If LenMas(dmStrMas) <> 0  then sSwapString2 = dmStrMas(iX) 
  For i=ix+1 to MaxMas
   If ((dmNumbMas(i) - sSwapString1) > 0)  then
	sSwapString1 = dmNumbMas(i)
    dmNumbMas(i) = dmNumbMas(iX)
    dmNumbMas(iX) = sSwapString1
	If LenMas(dmStrMas) <> 0  then
	 sSwapString2 = dmStrMas(i)
	 dmStrMas(i) = dmStrMas(iX)
	 dmStrMas(iX) = sSwapString2
	end if
   end if
  next
  sSwapString1 = dmNumbMas(iX)
  If LenMas(dmStrMas) <> 0  then sSwapString2 = dmStrMas(iX)
 next
End sub

Sub ClanInvite_Event_ServerInfo(Message)
    Dim ladder, ldrlen, lvllen, winlen, lsslen, Level
    If f_check_stats Then
        If InStr(Message, "- Ladder ") > 0 Then
            UserStatArray = Split(Message, " ")
            Laddername = UserStatArray(2)
            ldrlen = Len(UserStatArray(2))
            Select Case Mid(UserStatArray(2), 1, ldrlen)
                Case "SOLO,"
                    ladder = "SOLO"
                    If InStr(Message, ", Level ") > 0 Then
                        lvllen = Len(UserStatArray(4))
                        Level = Left(UserStatArray(4), lvllen - 1)
                    End If
                    If InStr(Message, ", Wins ") > 0 Then
                        winlen = Len(UserStatArray(6))
                        wins = Left(UserStatArray(6), winlen - 1)
                    End If
                    If InStr(Message, ", Losses ") > 0 Then
                        lsslen = Len(UserStatArray(8))
                        losses = Left(UserStatArray(8), lsslen)
                    End If
                Case "TEAM,"
                    ladder = "TEAM"
                    If InStr(Message, ", Level ") > 0 Then
                        lvllen = Len(UserStatArray(4))
                        Level = Left(UserStatArray(4), lvllen - 1)
                    End If
                    If InStr(Message, ", Wins ") > 0 Then
                        winlen = Len(UserStatArray(6))
                        wins = Left(UserStatArray(6), winlen - 1)
                    End If
                    If InStr(Message, ", Losses ") > 0 Then
                        lsslen = Len(UserStatArray(8))
                        losses = Left(UserStatArray(8), lsslen)
                    End If
                Case "FFA"
                    ladder = "FFA"
                    If InStr(Message, ", Level ") > 0 Then
                        lvllen = Len(UserStatArray(5))
                        Level = Left(UserStatArray(5), lvllen - 1)
                    End If
                    If InStr(Message, ", Wins ") > 0 Then
                        winlen = Len(UserStatArray(7))
                        wins = Left(UserStatArray(7), winlen - 1)
                    End If
                    If InStr(Message, ", Losses ") > 0 Then
                        lsslen = Len(UserStatArray(9))
                        losses = Left(UserStatArray(9), lsslen)
                    End If
                Case Else
                    ladder = "Unknown": Level = "Unknown": wins = "Unknown": losses = "Unknown"
            End Select
        End If
        wins = Int(wins): losses = Int(losses)
        If losses <> 0 And wins <> 0 Then
            procent = Int(wins / (wins + losses) * 1000)
            procent = procent / 10
        End If
        Level = Int(Level)
        If ladder = "SOLO" Then
            sololevel = Level
            solowins = wins: sololosses = losses
            soloprocent = procent
        End If
        If ladder = "FFA" Then
            ffalevel = Level
            ffawins = wins: ffalosses = losses
            ffaprocent = procent
        End If
        If ladder = "TEAM" Then
            teamlevel = Level
            teamwins = wins: teamlosses = losses
            teamprocent = procent
        End If
    End If
End Sub

Sub ClanInvite_Event_ServerError(Message)
    ErrorMessage = Message
    If InStr(Message, "The invitation failed.") > 0 Then
        AddQ_D LMT(204)
		
        f_check_stats = False
    End If
    If InStr(Message, "Too many server requests") > 0 Then
        AddQ_D LMT(205)
		
        f_check_stats = False
    End If
    If InStr(Message, "No stats on record") > 0 Then
        AddQ_D Usrname & LMT(206)
		
        f_check_stats = False
    End If
End Sub

Sub InviterV2()
 f_check_stats = False
 
 If (Solo_lvl_1_Enabled = True) and (sololevel => Solo_lvl_1) and (sololevel <= MaxLvl_1) And (soloprocent >= Solo_stats_1) And (blClanDiv_1 = True)  Then 
  
  ssc.addchat vbYellow, Usrname & LMT(207)
  Command "Botvars.username", "/invite " & Usrname, True
  Exit sub
 elseIf (Solo_lvl_2_Enabled = True) and (sololevel => Solo_lvl_2) and (sololevel <= MaxLvl_2) And (soloprocent >= Solo_stats_2) And (blClanDiv_2 = True) Then 
  
  ssc.addchat vbYellow, Usrname & LMT(207)
  Command "Botvars.username", "/invite " & Usrname, True
  Exit sub
 elseIf (Solo_lvl_3_Enabled = True) and (sololevel => Solo_lvl_3) and (sololevel <= MaxLvl_3) And (soloprocent >= Solo_stats_3)  And (blClanDiv_3 = True) Then 
  
  ssc.addchat vbYellow, Usrname & LMT(207)
  Command "Botvars.username", "/invite " & Usrname, True
  Exit sub
 elseIf (Solo_lvl_4_Enabled = True) and (sololevel => Solo_lvl_4) and (sololevel <= MaxLvl_4) And (soloprocent >= Solo_stats_4)  And (blClanDiv_4 = True) Then 
  
  ssc.addchat vbYellow, Usrname & LMT(207)
  Command "Botvars.username", "/invite " & Usrname, True
  Exit sub
 elseIf (Solo_lvl_5_Enabled = True) and (sololevel => Solo_lvl_5) And (soloprocent >= Solo_stats_5) And (blClanDiv_5 = True) Then 
  
  ssc.addchat vbYellow, Usrname & LMT(207)
  Command "Botvars.username", "/invite " & Usrname, True
  Exit sub
  
 End If
 If (Team_lvl_1_Enabled = True) and (teamlevel => Team_lvl_1) and (teamlevel <= MaxLvl_1) And (teamprocent >= Team_stats) And (blClanDiv_1 = True)  Then 
  
  ssc.addchat vbYellow, Usrname & LMT(208)
  Command "Botvars.username", "/invite " & Usrname, True
  Exit sub
 elseIf (Team_lvl_2_Enabled = True) and (teamlevel => Team_lvl_2) and (teamlevel <= MaxLvl_2) And (teamprocent >= Team_stats_2) And (blClanDiv_2 = True) Then 
  
  ssc.addchat vbYellow, Usrname & LMT(208)
  Command "Botvars.username", "/invite " & Usrname, True
  Exit sub
 elseIf (Team_lvl_3_Enabled = True) and (teamlevel => Team_lvl_3) and (teamlevel <= MaxLvl_3) And (teamprocent >= Team_stats_3)  And (blClanDiv_3 = True) Then 
  
  ssc.addchat vbYellow, Usrname & LMT(208)
  Command "Botvars.username", "/invite " & Usrname, True
  Exit sub
 elseIf (Team_lvl_4_Enabled = True) and (teamlevel => Team_lvl_4) and (teamlevel <= MaxLvl_4) And (teamprocent >= Team_stats_4)  And (blClanDiv_4 = True) Then 
  
  ssc.addchat vbYellow, Usrname & LMT(208)
  Command "Botvars.username", "/invite " & Usrname, True
  Exit sub
 elseIf (Team_lvl_5_Enabled = True) and (teamlevel => Team_lvl_5) And (teamprocent >= Team_stats_5) And (blClanDiv_5 = True) Then 
  
  ssc.addchat vbYellow, Usrname & LMT(208)
  Command "Botvars.username", "/invite " & Usrname, True
  Exit sub
 End If
 
 If (FFA_lvl_1_Enabled = True) and (ffalevel => Ffa_lvl_1) and (ffalevel <= MaxLvl_1) And (ffaprocent >= FFA_stats_1) And (blClanDiv_1 = True)  Then 
  
  ssc.addchat vbYellow, Usrname & LMT(209)
  Command "Botvars.username", "/invite " & Usrname, True
  Exit sub
 elseIf (FFA_lvl_2_Enabled = True) and (ffalevel => Ffa_lvl_2) and (ffalevel <= MaxLvl_2) And (ffaprocent >= FFA_stats_2) And (blClanDiv_2 = True) Then 
  
  ssc.addchat vbYellow, Usrname & LMT(209)
  Command "Botvars.username", "/invite " & Usrname, True
  Exit sub
 elseIf (FFA_lvl_3_Enabled = True) and (ffalevel => Ffa_lvl_3) and (ffalevel <= MaxLvl_3) And (ffaprocent >= FFA_stats_3)  And (blClanDiv_3 = True) Then 
  
  ssc.addchat vbYellow, Usrname & LMT(209)
  Command "Botvars.username", "/invite " & Usrname, True
  Exit sub
 elseIf (FFA_lvl_4_Enabled = True) and (ffalevel => Ffa_lvl_4) and (ffalevel <= MaxLvl_4) And (ffaprocent >= FFA_stats_4)  And (blClanDiv_4 = True) Then 
  
  ssc.addchat vbYellow, Usrname & LMT(209)
  Command "Botvars.username", "/invite " & Usrname, True
  Exit sub
 elseIf (FFA_lvl_5_Enabled = True) and (ffalevel => Ffa_lvl_5) And (ffaprocent >= FFA_stats_5) And (blClanDiv_5 = True) Then 
  
  ssc.addchat vbYellow, Usrname & LMT(209)
  Command "Botvars.username", "/invite " & Usrname, True
  Exit sub
 End If
  
  AddQ_D Usrname & LMT(210)
  Exit sub
End Sub

Function ClanInvite_WispShamans(UserName)
 Dim i
 i = 0
 For Each sham In Clan.Shamans
  If (sham.IsOnline) and (sham.Name <> myUsername) Then 
   i = i + 1
   AddQ_D "/w " & sham.Name & " " & UserName & LMT(285) & myChannel
  End if
 Next
 ClanInvite_WispShamans = i
End function

Sub ClanInvite_Event_UserTalk(Username, Flags, Message, Ping)
 Dim myAccess, myFlags, clan,i
 If Left(LCase(Message), 5) = BotVars.Trigger & "join" Then
  GetDBentry Username, myAccess, myFlags
  clan = GetInternalDataByUsername(Username, 0)
  If clan = "" Then
   If ClanInvite_Mode = "Auto" Then
    
	If AdminAvaible Then
	 sololevel = 0: teamlevel = 0: ffalevel = 0
     solowins = 0: teamwins = 0: ffawins = 0
     sololosses = 0: teamlosses = 0: ffalosses = 0
     soloprocent = 0: teamprocent = 0: ffaprocent = 0
     AddQ_D "/me " & LMT(211) & UserName & LMT(212) & (2 * scTimer.Interval \ 1000) & LMT(213)
     
     f_check_stats = True
     Usrname = Username
     AddQ_D "/stats " & Usrname & " " & sGameType
	 Exit sub
	Else
	 i = 0
	 i = ClanInvite_WispShamans(UserName)
	 If i = 0 Then
	  AddQ_D "/w " & UserName & LMT(286)
	  Exit sub
	 Else
	  AddQ_D "/w " & UserName & " " & i &  LMT(287)
	  exit sub
	 End if
	end if
   ElseIf ClanInvite_Mode = "WispShams" Then
    i = 0
	i = ClanInvite_WispShamans(UserName)
	If i = 0 Then
	 AddQ_D "/w " & UserName & LMT(286)
	 Exit sub
	Else
	 AddQ_D "/w " & UserName & " " & i &  LMT(287)
	 exit sub
	End if
   ElseIf ClanInvite_Mode = "CheckStats" then
    sololevel = 0: teamlevel = 0: ffalevel = 0
    solowins = 0: teamwins = 0: ffawins = 0
    sololosses = 0: teamlosses = 0: ffalosses = 0
    soloprocent = 0: teamprocent = 0: ffaprocent = 0
    AddQ_D "/me " & LMT(211) & UserName & LMT(212) & (2 * scTimer.Interval \ 1000) & LMT(213)
    
    f_check_stats = True
    Usrname = Username
    AddQ_D "/stats " & Usrname & " " & sGameType
	Exit sub
   End if
  Else
   AddQ_D Username & LMT(214) & clan
   
  End If
 End If
End Sub

Sub ClanInvite_Event_WhisperFromUser(Username, Flags, Message)
 Event_UserTalk Username, 0, Message, 0
End Sub

Sub ClanInvite_Timer()
 If f_check_stats Then
  ClanInvite_Counter = ClanInvite_Counter + 1
  If ClanInvite_Counter = 2 Then
   call InviterV2
   ClanInvite_Counter = 0
   f_check_stats = False
  End if
 End If
End Sub

Sub NewsReader_Load
 Dim fso, wsh
 Set fso = CreateObject("Scripting.FileSystemObject")
 If fso.FileExists("scripts\UltimateBot\NewsReader\SaiGEN_NewsReader.exe") Then
  AddChat RGB(0,153,204), "[NewsReader] ",vbYellow, LMT(315)
  AddChat RGB(0,153,204), "[NewsReader] ",vbYellow, LMT(316)
  Set wsh = CreateObject("WScript.Shell")
  wsh.Run("""scripts\UltimateBot\NewsReader\SaiGEN_NewsReader.exe")
  Set wsh = Nothing
  Call CreateObj("LongTimer", "NewsReader")
 NewsReader.Enabled = True
 NewsReader.Interval = 60
 Else
  AddChat RGB(0,153,204), "[NewsReader] ",vbYellow, LMT(317)
  blNewsReader_Enabled = False
 End if
 addChat RGB(100,220,228), "================================"
End sub

Sub NewsReader_UserTalk(UserName)
 If not blNewsReader_Enabled Then exit sub
 Dim i,y
 i = PosMas(UserName,dmNewsReaderUsers) 
 y = LenMas(dmNewsReaderNews)
 If y = 0 Then 
  AddQ_D "/w " & UserName & ",  ,  "
  Exit sub
 End if
 If LCase(dmNewsReaderUsers(0)) = LCase(UserName) Then i = 0
 
 If i > -1 Then
  
  If int(dmNewsReaderUserCount(i)) < y Then
   AddCHat vbBlue, dmNewsReaderUserCount(i)
   dmNewsReaderUserCount(i) = dmNewsReaderUserCount(i) + 1
   
  Else
   dmNewsReaderUserCount(i) = 0
   
  End if
  dmNewsReaderUsers(i) = UserName
  
  AddQ_D "/w " & UserName & " " & dmNewsReaderNews(dmNewsReaderUserCount(i)) & "(" & dmNewsReaderUserCount(i) + 1 & "\" & y + 1 & ")"
 Else
  
  i = CountMas(dmNewsReaderUsers) 
  If i = 0 Then 
   dmNewsReaderUsers(0) = UserName
   dmNewsReaderUserCount(0) = 0
   AddQ_D "/w " & dmNewsReaderUsers(0) & " " & dmNewsReaderNews(0) & "(" & 1 & "\" & y + 1 & ")"
   
  else
   ReDim Preserve dmNewsReaderUsers(i)
   ReDim Preserve dmNewsReaderUserCount(i)
   dmNewsReaderUsers(i) = UserName
   dmNewsReaderUserCount(i) = 0
   AddQ_D "/w " & UserName & " " & dmNewsReaderNews(0) & "(" & 1 & "\" & y + 1 & ")"
   
  End if
 End if
End sub

Sub NewsReader_UserLeaves(UserName)
 If not blNewsReader_Enabled Then exit sub
 Dim i,y
 i = PosMas(UserName,dmNewsReaderUsers) 
 If i > -1 Then
  if i = 0 Then 
   ReDim dmNewsReaderUsers(0)
   ReDim dmNewsReaderUserCount(0)
   AddChat RGB(0,153,204), "[NewsReader] ",vbYellow,UserName , vbGreen,"    "
   Exit sub
  End if
  y = LenMas(dmNewsReaderUsers)
  dmNewsReaderUsers(i) = dmNewsReaderUsers(y)
  dmNewsReaderUserCount(i) = dmNewsReaderUserCount(y)
  ReDim preserve dmNewsReaderUsers(y - 1)
  ReDim preserve dmNewsReaderUserCount(y - 1)
  AddChat RGB(0,153,204), "[NewsReader] ",vbYellow,UserName , vbGreen,"    "
 End if
End sub

Sub NewsReader_Timer
 Dim fso,file,i
 Set fso = CreateObject("Scripting.FileSystemObject")
 If fso.FileExists("scripts\UltimateBot\NewsReader\NewsReader.txt") Then
  Set file = fso.OpenTextFile("scripts\UltimateBot\NewsReader\NewsReader.txt", 1, True)
  i = 0
  AddCHat vbWhite,"[NewsReader]          [NewsReader]"
  Do While file.AtEndOfStream <> True
   AddCHat RGB(130,130,130), file.ReadLine
   i=i+1
  Loop
  AddCHat vbWhite,"[NewsReader]           [NewsReader]"
  Call Load_file_dm("scripts\UltimateBot\NewsReader\NewsReader.txt",dmNewsReaderNews,"","")
 Else
  AddChaT vbYellow, "[NewsReader]    "
 End if
 NewsReader.Enabled = False
End sub

Sub Citys_CheckAnswer(UserName,Message)
 If blCitysEnabled = False Then Exit Sub
 Dim sTemp
 Message = LCase(Message)
 If PosMas(Message,dmNameOfCitys) = -1 Then exit sub
 iCityCurrentCount = iCitysRemainCounter
 
 If PosMas(Message,dmUsedCitys)=> 0 Then
  iCityCurrentCount = iCitysRemainCounter
  
  AddQ_D "/me  " & Message & "  "
  exit sub
 End if
 
 If sLastChar = "" Then
  sLastChar = MID (Message,Len(Message) ,1)
  
  If (LCase(sLastChar) = "") or (LCase(sLastChar) = "") or (LCase(sLastChar) = "") Then sLastChar = MID (Message,1,1)
  AddQ_D "/me     " & Message & ".      " & UCase(sLastChar)
  sLastUser = UserName
  dmUsedCitys(0) = Message
  iCityCurrentCount = iCitysRemainCounter
  exit Sub
 End if
 addChat vbBlue,MID(Message,1,1) & "|" &  LCase(sLastChar)
 If MID(Message,1,1) <> LCase(sLastChar) Then
  
  addChat vbBlue , "wrong"
  exit sub
 End if
 
 sTemp = CountMas(dmUsedCitys)
 
  ReDim preserve dmUsedCitys(sTemp)
  dmUsedCitys(sTemp) = Message
 
 If LCase(UserName) = LCase (sLastUser) Then
  iCityCurrentCount = iCitysRemainCounter
  
  AddQ_D "/me " & UserName  & "    "
  iCityCurrentCount = iCitysRemainCounter
  
  exit sub
 End if
  sLastUser = UserName
  sLastChar = MID (Message,Len(Message),1)
  If (LCase(sLastChar) = "") or (LCase(sLastChar) = "") or (LCase(sLastChar) = "") Then 
   sLastChar = MID (Message,1,1)
  End if
  sTemp = PosMas(UserName,dmCitysPlayer)
  If sTemp <> -1 Then
   dmCitysScores(sTemp) = dmCitysScores(sTemp) + 1
   AddQ_D "/me  " & UserName & "  +1 , :" & dmCitysScores(sTemp) & ";     " & UCase(sLastChar)
   Call Save_File_dm(sCitysScoresFilePath,dmCitysPlayer,dmCitysScores,LenMas(dmCitysPlayer),"*")
   
   iCityCurrentCount = iCitysRemainCounter
   exit sub
  Else
   sTemp = CountMas(dmCitysPlayer)
   If sTemp > 0 Then  
    ReDim preserve dmCitysPlayer(sTemp) 
    ReDim preserve dmCitysScores(sTemp)
    dmCitysPlayer(sTemp) = UserName
    dmCitysScores(sTemp) = 1
    AddQ_D "/me  " & UserName & "  +1 , :" & dmCitysScores(sTemp) & ";     " & UCase(sLastChar)
    Call Save_File_dm(sCitysScoresFilePath,dmCitysPlayer,dmCitysScores,LenMas(dmCitysPlayer),"*")
    
	iCityCurrentCount = iCitysRemainCounter
    exit sub
   Else
    dmCitysPlayer(0) = UserName
	dmCitysScores(0) = 1
	AddQ_D "/me  " & UserName & "  +1 , :" & dmCitysScores(0) & ";     " & UCase(sLastChar)
	Call Save_File_dm(sCitysScoresFilePath,dmCitysPlayer,dmCitysScores,LenMas(dmCitysPlayer),"*")
	
	iCityCurrentCount = iCitysRemainCounter
	Exit sub
   End if
  end if
 
End Sub

Sub Citys_Timer
 If blCitysEnabled = False Then exit sub
 iCitysRemainCounter = iCitysRemainCounter - 1
 If iCitysRemainCounter = 0 Then
  
  AddQ_D "/me   "
  blCitysEnabled = False
  sLastChar = ""
  sLastUser = ""
  iCityCurrentCount = 0
  ReDim dmUsedCitys(0)
 End if
End sub

Sub Citys_Load
 iCityCurrentCount = iCitysRemainCounter
 Call Load_file_dm(sCitysScoresFilePath,dmCitysPlayer,dmCitysScores,"*")
 Call Load_file_dm(sCitysFilePath,dmNameOfCitys,"","")
End sub

Sub AdvancedPingMe_Load()
 
 Dim fso
 Set fso = CreateObject("Scripting.FileSystemObject")
 If Not fso.FolderExists(strAdvancedPingDBPath) Then 
  AddChat vbYellow, LMT(307)
  Fso.CreateFolder(strAdvancedPingDBPath)
 End if
 AddChat vbYellow, LMT(308)
 Call AdvancedPingMe_DeleteOldFile
End sub

Sub AdvancedPingMe_DeleteOldFile
 Dim i
 i = 0
 Set filesys = CreateObject("Scripting.FileSystemObject")
 Set objFolder = filesys.GetFolder(strAdvancedPingDBPath)
 For Each File in objFolder.Files
  If DateDiff("M", File.DateLastModified, Now) > 1 Then
   File.Delete true
  End if
  i = i + 1
  
 Next
 AddChaT VbGreen, "    AdvancedPingMe ",RGB(4,223,185), i
End sub

Sub AdvancedPingMe(UserName,Ping)
 Dim fso, file, strReadString, strSplitString, intMaxPing, intMinPing, intAvgPing, strLastDate, i, y
 UserName = LCase(UserName)
 strLastDate = ""
 Erase dmAdvancedPingMe
 Set fso = CreateObject("Scripting.FileSystemObject")
 If fso.FileExists(strAdvancedPingDBPath & UserName & ".txt") Then
  Call Load_file_dm(strAdvancedPingDBPath & UserName & ".txt",dmAdvancedPingMe,"","")
  strLastDate = dmAdvancedPingMe(0) 
  dmAdvancedPingMe(0) = WeekDayRus(Weekday(date)) & "," & Day(date) & "." & Month(date) & "." & Year(date) & "," & Hour(Time) & ":" & Minute(Time)
  dmAdvancedPingMe(1) = Int(dmAdvancedPingMe(1)) + 1 
  intMaxPing = dmAdvancedPingMe(2)
  intMinPing = intMaxPing
  
  intAvgPing = 0
  y = LenMas(dmAdvancedPingMe)
  ReDim Preserve dmAdvancedPingMe(y + 1)
  dmAdvancedPingMe(y + 1) = Ping
  For i = 2 To y + 1
   
   If Int(intMaxPing) < Int(dmAdvancedPingMe(i)) Then intMaxPing = dmAdvancedPingMe(i)
   If Int(intMinPing) > Int(dmAdvancedPingMe(i)) Then intMinPing = dmAdvancedPingMe(i)
   intAvgPing = intAvgPing + dmAdvancedPingMe(i)
   
  Next
   
   intAvgPing = intAvgPing \ ( y )
   
   If y > 500 Then
    ReDim Preserve dmAdvancedPingMe(3)
	dmAdvancedPingMe(2) = intMaxPing
	dmAdvancedPingMe(3) = intMinPing
	Call Save_File_dm(strAdvancedPingDBPath & UserName & ".txt",dmAdvancedPingMe,"",y + 1,"")
	AddQ_D "/w " & UserName & " " & LMT(309) & strLastDate & LMT(310) & Ping & LMT(311) & intMinPing & LMT(312) & intMaxPing & LMT(313) & intAvgPing & LMT(314) & dmAdvancedPingMe(1)
   End if
   Call Save_File_dm(strAdvancedPingDBPath & UserName & ".txt",dmAdvancedPingMe,"",y + 1,"")
   AddQ_D "/w " & UserName & " " & LMT(309) & strLastDate & LMT(310) & Ping & LMT(311) & intMinPing & LMT(312) & intMaxPing & LMT(313) & intAvgPing & LMT(314) & dmAdvancedPingMe(1)
 Else
  Const ForReading = 1, ForWriting = 2, ForAppending = 8
  Set file = fso.OpenTextFile(strAdvancedPingDBPath & UserName & ".txt", ForWriting, True)
  file.WriteLine(WeekDayRus(Weekday(date)) & "," & Day(date) & "." & Month(date) & "." & Year(date) & "," & Hour(Time) & ":" & Minute(Time))
  file.WriteLine(1)
  file.WriteLine(Ping)
  file.Close
  AddQ_D "/w " & UserName & " " & LMT(309) & (WeekDayRus(Weekday(date)) & Day(date) & "." & Month(date) & "." & Year(date) & "," & Hour(Time) & ":" & Minute(Time)) & LMT(310) & Ping & LMT(311) & Ping & LMT(312) & Ping & LMT(313) & Ping 
 End if
 
End Sub

Function WeekDayRus(intWeekdayName)
 If LCase(CurrentLang) <> "ru" Then 
  WeekDayRus = WeekdayName(intWeekdayName)
  exit function
 End if
 Select case intWeekdayName
 Case 1
  WeekDayRus = ""
 Case 2
  WeekDayRus = ""
 Case 3
  WeekDayRus = ""
 Case 4
  WeekDayRus = ""
 Case 5
  WeekDayRus = ""
 Case 6
  WeekDayRus = ""
 Case 7
  WeekDayRus = ""
 End select
End function

Sub SpeedChl_Timer()
 if blSpeedChl_Enabled <> True Then exit sub
 If blSpeedChl_NextQ = True then
  call SpeedChl_Question
  exit sub
 end if
 If iSpeedChl_CurrentQ = -1 then
  Call SpeedChl_Restart
  Exit sub
 End if
 iSpeedChl_Current_Iteration = iSpeedChl_Current_Iteration + 1
 Call SpeedChl_Swap 
 blSpeedChl_NextQ = True
End sub

SUB SpeedChl_Question()
 If dmSpeed_Word(0)="" then
  AddQ_D "/me " & LMT(200)
  AddChat vbRed, LMT(200)
  iSpeedChl_ElapsedTime = 0
  iSpeedChl_ElapsedTime = GetGTC + 0
  exit sub
 end if
 blSpeedChl_NextQ = False
 Randomize
 iSpeedChl_CurrentQ = (Int((iSpeedChl_Count-1)*RND)+1)
 AddQ_D LMT(221) & " " & dmSpeed_Word(iSpeedChl_CurrentQ)
 iSpeedChl_ElapsedTime = GetGTC + 0
End sub

Sub SpeedChl_Restart()
 iSpeedChl_Count = LenMas(dmSpeed_Word)
 blSpeedChl_NextQ = True
 AddChat vbBlue, LMT(201)
 
End sub

Sub SpeedChl_Load()
 Call Load_File_dm(sSpeedChl_WordsFile,dmSpeed_Word,"","")
 Call Load_File_dm(sSpeedChl_ScoresFile,dmSpeed_Players,dmSpeed_Scores,"*")
 iSpeedChl_Count = LenMas(dmSpeed_Word)
 blSpeedChl_NextQ = True
end sub

Function SpeedChl_CheckAnswer(TrivNick,Answer)
 Dim TempS,TempO,ix,i,iSpeedChl_ElapsedTime_Result,AnsNick
 ix=0
 SpeedChl_CheckAnswer = 0
 if blSpeedChl_NextQ = True then
  exit Function
 End if
 AnsNick = TrivNick
 
 If (LCase(Trim(Answer)) = LCase(Trim(dmSpeed_Word(iSpeedChl_CurrentQ)))) Then
  
  SpeedChl_CheckAnswer = 1
  iSpeedChl_ElapsedTime_Result = GetGTC - iSpeedChl_ElapsedTime
  iSpeedChl_ElapsedTime_Result = iSpeedChl_ElapsedTime_Result / 1000
  If blSpeedChl_ShowSpM = True Then
   Dim intTempiSpeedChl_ElapsedTime_Result
   intTempiSpeedChl_ElapsedTime_Result = iSpeedChl_ElapsedTime_Result
   iSpeedChl_ElapsedTime_Result = Int((Len(Answer)) / iSpeedChl_ElapsedTime_Result * 60)
   iSpeedChl_ElapsedTime_Result = iSpeedChl_ElapsedTime_Result & " . .," & intTempiSpeedChl_ElapsedTime_Result
  End if
  
  Dim iSpeedChl_CountPlayers
  iSpeedChl_CountPlayers = LenMas(dmSpeed_Players)
  blSpeedChl_NextQ = True
  Do while ix <= iSpeedChl_CountPlayers
   If LCase(dmSpeed_Players(ix)) = LCase(AnsNick) then 
    
	if LCase (sSpeedChl_LastUnswerNickName) = LCase (AnsNick) Then 
	
     iSpeedChl_LastUnswerCount = iSpeedChl_LastUnswerCount + 1 
	 dmSpeed_Scores(ix) = dmSpeed_Scores(ix) + 1
	 
	 AddQ_D LMT(136) & AnsNick & LMT(134) & dmSpeed_Scores(ix) & LMT(135) & "(" & iSpeedChl_ElapsedTime_Result & LMT(213)
	else
	
	 If iSpeedChl_LastUnswerCount > 1 Then
	 
	  dmSpeed_Scores(ix) = dmSpeed_Scores(ix) + iSpeedChl_LastUnswerCount
	  AddQ_D "/me " & AnsNick & LMT(222) & sSpeedChl_LastUnswerNickName & LMT(225) &  iSpeedChl_LastUnswerCount & ")" & LMT(223)   & iSpeedChl_LastUnswerCount & LMT(224) & "(" & iSpeedChl_ElapsedTime_Result & LMT(213)
	 iSpeedChl_LastUnswerCount = 0
	 else
	  
	  dmSpeed_Scores(ix) = dmSpeed_Scores(ix) + 1
	  AddQ_D LMT(136) & AnsNick & LMT(134) & dmSpeed_Scores(ix) & LMT(135) & "(" & iSpeedChl_ElapsedTime_Result & LMT(213)
	  
	 end if
	 
	 sSpeedChl_LastUnswerNickName = AnsNick
	end iF
	
    Call SpeedChl_Swap
    Call Save_File_dm(sSpeedChl_ScoresFile,dmSpeed_Players,dmSpeed_Scores,LenMas(dmSpeed_Players),"*")
    Exit Function
   end if
   ix = ix + 1
  Loop
  
  iSpeedChl_CountPlayers = LenMas(dmSpeed_Players)
  
  If dmSpeed_Players(iSpeedChl_CountPlayers) <> "" then iSpeedChl_CountPlayers = iSpeedChl_CountPlayers + 1
  ReDim preserve dmSpeed_Players(iSpeedChl_CountPlayers)
  dmSpeed_Players(iSpeedChl_CountPlayers) = AnsNick
  ReDim preserve dmSpeed_Scores(iSpeedChl_CountPlayers)
  dmSpeed_Scores(iSpeedChl_CountPlayers) = 1
  
  	if LCase (sSpeedChl_LastUnswerNickName) = LCase (AnsNick) Then 
	 
     iSpeedChl_LastUnswerCount = iSpeedChl_LastUnswerCount + 1 
	 dmSpeed_Scores(ix) = dmSpeed_Scores(ix) + 1
	 AddQ_D LMT(136) & AnsNick & LMT(134) & dmSpeed_Scores(ix) & LMT(135) & "(" & iSpeedChl_ElapsedTime_Result & LMT(213)
	else
	 
	 If iSpeedChl_LastUnswerCount > 1 Then
	 
	  dmSpeed_Scores(ix) = dmSpeed_Scores(ix) + iSpeedChl_LastUnswerCount
	   AddQ_D "/me " & AnsNick & LMT(222) & sSpeedChl_LastUnswerNickName & LMT(225) &  iSpeedChl_LastUnswerCount & ")" & LMT(223)   & iSpeedChl_LastUnswerCount & LMT(224) & "(" & iSpeedChl_ElapsedTime_Result & LMT(213)
	 iSpeedChl_LastUnswerCount = 0
	else
	  
	  dmSpeed_Scores(ix) = dmSpeed_Scores(ix) + 1
	  AddQ_D LMT(136) & AnsNick & LMT(134) & dmSpeed_Scores(ix) & LMT(135) & "(" & iSpeedChl_ElapsedTime_Result & LMT(213)
	 end if
	 
	 sSpeedChl_LastUnswerNickName = AnsNick
	end iF
	
  Call InsSort(dmSpeed_Scores,dmSpeed_Players) 
  Call Save_File_dm(sSpeedChl_ScoresFile,dmSpeed_Players,dmSpeed_Scores,iSpeedChl_CountPlayers,"*")
  Call SpeedChl_Swap 
 
  blSpeedChl_NextQ = True
 end iF
 
End Function

Sub SpeedChl_Swap()
 
 Dim TempO, TempS
 If iSpeedChl_Count = 0 then
  ADDChat vbBlue, LMT(202)
  Call SpeedChl_Restart
  Exit sub
 End if
 
 TempS = dmSpeed_Word(iSpeedChl_CurrentQ)
 TempO = dmSpeed_Word(iSpeedChl_Count)
 dmSpeed_Word(iSpeedChl_Count) = TempS
 dmSpeed_Word(iSpeedChl_CurrentQ) = TempO
 iSpeedChl_Count = iSpeedChl_Count - 1
 AddChat vbGreen, LMT(203) & iSpeedChl_Count + 1
End sub

Function GetServerName()
 Dim sTempString
 sTempString = BotVars.Server
 
 GetServerName = "unknown"
 sTempString = LCase(Left(sTempString,7))
 Select Case sTempString
  Case "63.240."
   GetServerName = "Azeroth"
  Case "useast."
   GetServerName =  "Azeroth"
   
  Case "uswest."
   GetServerName =  "Lordaeron"
  Case "63.241."
   GetServerName =  "Lordaeron"
   
  Case "europe."
   GetServerName =  "Northrend"
  Case "213.248"
   GetServerName =  "Northrend"
  
  Case "211.233"
   GetServerName =  "Kalimdor"
  Case "asia.ba"
   GetServerName =  "Kalimdor"
 End select
End function