AnGelBot-Portal²

Normale Version: TimedCommand
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Kann man zu dieser veränderten form des qnet-scripts eine timedcommand machen, das der bot nach ner sekunde wieder joint??
Code:
'================================================
'Erstellt mit [ABP]AVS 1.0.8
'AnGelBot Visual Scripting

'Visit us online @ http://www.AnGelBot-Portal.de/
'================================================
'Programmiert von Anonymous
'================================================

Const stFile = "ini_QNet(+n).ini"

Dim Channels

Sub Init()
  ReDim Channels(0)
  ReloadChannels
  Script "QNet X-Trem Channel Protect (für channels mit +n rechten...)"
  Hook "DeOp"
  Hook "Ban"
  Hook "Kick"
  Hook "Commands"
  AddCommand "qnet_list(+n)", Cl_SOwn, "+s", "2.qnet_list(+n)##14Zeigt eine Übersicht über alle Channel die von dem Bot extrem bewacht werden."
End Sub

Sub Commands(vsock, RegUser, Flags, Line)
  If LCase(Param(Line, 1)) = ".qnet_list(+n)" Then
    GrabUser vSock, "QNet-Protect Setup", "QNetSetup"
    SetSockTag vSock, "MainMenu"
    QNetSetup vSock, RegUser, Flags, ""
  End If
End Sub

Sub QNetSetup(vSock, RegUser, Flags, Line)
  
  If Param(Line, 1) = "0" Then
    TU vsock, "10*** Saving settings..."
    ReleaseUser vSock
    Exit Sub
  End If
  
  Select Case LCase(Param(GetSockTag(vSock), 1))
    Case "mainmenu"
      TU vSock, " 11,0,%0,11%'12,11,%11,12%'2,12,%12,2%'1,2,%2,1%'1,1____________________​_2,1'%1,2%,12,2'%2,12%,11,12'%12,11%,0,11'%11,0%,"
      TU vSock, "11,0,%0,11%'12,11,%11,12%'2,12,%12,2%'1,2,%2,1%'1,1_0,1 QNet-Protect Setup 1,1_2,1'%1,2%,12,2'%2,12%,11,12'%12,11%,0,11'%11,0%,"
      TU vSock, " 11,0,%0,11%'12,11,%11,12%'2,12,%12,2%'1,2,%2,1%'1,1____________________​_2,1'%1,2%,12,2'%2,12%,11,12'%12,11%,0,11'%11,0%,"
      TU vSock, " "
      TU vSock, "Willkommen im Setup vom " & Version & "!"
      TU vSock, "Du befindest dich im Hauptmenü."
      TU vSock, " "
      TU vSock, "0,1Protected Channels:"
      
      Dummy = Split(Channels, " ")
      For i = LBound(Dummy) To UBound(Dummy)
        TU vSock, "14 - " & Dummy(i)
      Next
      
      TU vSock, " "
      TU vSock, " - chan add #channel um einen Channel der Liste hinzuzufügen"
      TU vSock, " - chan del #channel um einen Channel aus Liste zu löschen"
      TU vSock, " - 0 um zurück auf die Partyline zu kommen."
      TU vSock, " Nicht vergessen: Der Bot muss von Q/L aus +m oder/und +n haben!"
      SetSockTag vSock, "MainMenuOption"
    Case "mainmenuoption"
      Select Case LCase(Param(Line, 1))
        Case "chan"
          If Param(Line, 2) = "" Or Param(Line, 3) = "" Then
            TU vSock, "5*** Syntax: chan <add | del> <#channel>"
            SetSockTag vSock, "MainMenu"
            QNetSetup vSock, RegUser, Flags, ""
            Exit Sub
          End If
          
          If LCase(Param(Line, 2)) = "add" Then
            Channels = Trim3(Channels & " " & Param(Line, 3))
            WriteINIString "Settings", "Channels", Channels, stFile
            TU vSock, "3*** Channel " & LCase(Param(Line, 3)) & " wurde hinzugefügt"
            SetSockTag vSock, "MainMenu"
            QNetSetup vSock, RegUser, Flags, ""
          ElseIf LCase(Param(Line, 2)) = "del" Then
            Channels = Trim3(Replace(LCase(Channels), LCase(Param(Line, 3)), ""))
            WriteINIString "Settings", "Channels", Channels, stFile
            TU vSock, "3*** Channel " & LCase(Param(Line, 3)) & " wurde entfernt"
            SetSockTag vSock, "MainMenu"
            QNetSetup vSock, RegUser, Flags, ""
          End If
      End Select
  End Select
End Sub

Sub DeOp(Chan, Nick, RegUser, Flags, DNick, DUser, DFlags, RemovedOp)
  If Not Instr(1, LCase(Channels), LCase(Chan)) > 0 Then Exit Sub
  
  If DNick = MyNick Then
    If Nick = "" Or InStr(1, Nick, ".") > 0 Then
      If IsOn("L", Chan) Then
        SendLine "PRIVMSG L :OP " & Chan, 1
      ElseIf IsOn("Q", Chan) Then
        SendLine "PRIVMSG Q :OP " & Chan, 1
      End If
      Exit Sub
    End If
    
    If IsOn("L", Chan) Then
      SendLine "PRIVMSG L :RECOVER " & Chan, 1
      SendLine "PRIVMSG L :OP " & Chan, 1
    End If
    
    If IsProtected(Flags) Then
      AddKick Chan, Nick, ""
    Else
      AddKick Chan, Nick, ""
      ExecuteCommand 0, ".+ban " & Mask(Hostmask(Chan, Nick), 3) & " " & Chan & " Banversuch"
    End If
  End If
End Sub

Sub Ban(Nick, RegNick, Chan, HMask)
  If Not Instr(1, LCase(Channels), LCase(Chan)) > 0 Then Exit Sub
  If Nick = "" Or InStr(1, Nick, ".") > 0 Then Exit Sub
  
  If Not MatchFlags(GetUserChanFlags(RegUser, Chan), "+m") Then
    If MatchHostmask(HMask, Mask(Hostmask(Chan, MyNick), 6)) Then
      SendLine "MODE " & Chan & " -ob " & Nick & " " & HMask, 1
      
      If IsProtected(GetUserChanFlags(RegUser, Chan)) Then
        AddKick Chan, Nick, "Do not try to ban me. Be happy you're a friend..."
      Else
        AddKick Chan, Nick, "Do not try to ban me. You aren't a friend. Goodbye..."
        ExecuteCommand 0, ".+ban " & Mask(Hostmask(Chan, Nick), 3) & " " & Chan & " Banversuch"
      End If
    End If
  End If
End Sub

Sub Kick(Chan, Nick, User, Flags, KNick, KUser, KFlags, Message)
  If Not Instr(1, LCase(Channels), LCase(Chan)) > 0 Then Exit Sub
  If KNick = MyNick Then
    ExecuteCommand 0, ".+chan " & Chan
  End If
End Sub

Function MatchHostmask(HostmaskFull, Hostmask6)
  If Mask(HostmaskFull, 6) = Hostmask6 Then MatchHostmask = True
End Function

Function IsProtected(Flags)
  If Instr(1, Flags, "f") > 0 Or _
    Instr(1, Flags, "s") > 0 Or _
    Instr(1, Flags, "m") > 0 Or _
    Instr(1, Flags, "n") > 0 Then
    IsProtected = True
  End If
End Function

Sub ReloadChannels()
  Channels = ReadINIString("Settings", "Channels", "", stFile)
End Sub

Function Trim3(Text)
  Trim3 = Replace(Replace(Trim(Text), "   ", " "), "  ", " ")
End Function

Zitat:Sub Kick(Chan, Nick, User, Flags, KNick, KUser, KFlags, Message)
If Not Instr(1, LCase(Channels), LCase(Chan)) > 0 Then Exit Sub
If KNick = MyNick Then
ExecuteCommand 0, ".+chan " & Chan
End If
End Sub
das sollte in der timed command stehen... vielleicht auch nur
Zitat: ExecuteCommand 0, ".+chan " & Chan
das da, ich weiß es ja nich.. Smile
Code:
Sub Init
  Script "bankickrejoin by St4rg4t3"
  Hook "Kick"
End Sub

Const ActiveChannels = "#chan1, #chan2"
Dim Channel, Check

Sub Kick(Chan, Nick, RegUser, Flags, KNick, KUser, KFlags, Message)
If InStr(1, " " & LCase(ActiveChannels) & " ", " " & LCase(Chan) & " ") <= 0 Then Exit Sub
If KNick = MyNick Then
   Channel = Chan
   Check = CBOOL(1)
   TimedCommand "sicherung", 1
  End If
End Sub

Sub sicherung()
If Check = CBOOL(1) Then
  If Not IsOn(MyNick, Channel) Then  
   ExecuteCommand 0, ".join " & Channel
   Check = CBOOL(0)
   TimedCommand "sicherung", 1
  End If
End If
End Sub

ist nicht getestet Wink

es reagiert auf kick und wenn er nach 1sek nicht on ist im chan sollte ein rejoin erfolgen Wink
kann man da auch noch dazumachen, dass, wenn man nur * in den activechannel einträgt, dass dann alle channel die in Autojoin.txt sind gemeint sind?
müsste gehen, aber ich weiss nicht wie Wink
nich schlimm, ich nerve einfach mal speed, der wird sich schon auskennen Razz
Referenz-URLs