AnGelBot-Portal²

Normale Version: vip-script umschreiben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
hiho

ich wollt mal anfragen ob mir jemand ,dass gleich folgende vip-script umschreiben koennte

mein wunsch Wink
wenn L/Q meinen chan verlaesst... und wieder joint, sollte es irgendwie ausgeschaltet bzw angeschaltet werden...(aufjeden fall so das keiner mehr rechte bekommt)
mit chan-msg

thx schonmal

Code:
'================================================
'Erstellt mit [ABP]AVS 1.0.8
'AnGelBot Visual Scripting

'Visit us online @ http://www.AnGelBot-Portal.de/
'================================================
'Programmiert von Sp33d (nach einer Idee von LuEtHeL)
'edit by vip|morpheus @ #vip`s
'================================================

'Channels in denen auf VIPs geprüft werden soll
Const ActiveChannels = "#piefke.de"

'Mode den der User bekommt wenn er joint (+o/+v/+b...)
'(wenn er im VIP Channel Op hat)
Const Flags = "+o"

'Mode den der User bekommt wenn er joint (+o/+v/+b...)
'(wenn er im VIP Channel Voice hat)
Const VoiceFlags = "+v"

'Notice die an den User gesendet wird wenn er ein VIP ist ($nick / $chan / $opchan)
'Einfach leer lassen oder auskommentieren, dann wird gar keine Nachricht gesendet
Const VIPMsg = "7VIP 3[-12 $nick 3-] 7detected and opped on 3[-12 $opchan 3-]"

'Das gleiche wenn die Person nur Voice hat ($opchan => $voicechan)
Const VoiceVIPMsg = "7VIP 3[-12 $nick 3-] 7detected and voiced on 3[-12 $voicechan 3-]"

'Notice die an den User gesendet wird wenn er !vip eingibt und ein VIP ist ($nick / $chan / $opchan)
'Einfach leer lassen oder auskommentieren, dann wird gar keine Nachricht gesendet
Const VIPCmdMsg = "Du wurdest als VIP erkannt...have phun & idle"

'Das gleiche wenn die Person nur Voice hat ($opchan => $voicechan)
Const VoiceVIPCmdMsg = "Du wurdest als VIP erkannt...have phun & idle"

'Notice die an den User gesendet wird wenn er !vip eingibt, aber kein VIP ist ($nick / $chan / $opchan)
'Einfach leer lassen oder auskommentieren, dann wird gar keine Nachricht gesendet
Const NoVIPCmdMsg = "Hm.....nein $nick, leider nix für dich."

'===========================================================
'===========================================================
'===========================================================

Const SetFile = "ini_vip.ini"

Class User
  Public Nick, JoinChan, Chans, OnJoinCheck, Finished
End Class

Dim WhoisUsers(), VIPChans

Sub Init()
  Script "VIP-Detect Script 1.1 by Sp33d"
  Hook "Raw"
  Hook "Join"
  Hook "Chan_Msg"
  ReDim WhoisUsers(0)
  VIPChans = ReadINIString("Settings", "VIPChans", "", SetFile)
  If VIPChans = vbNullString Then
    'möglicher erster Start des Scripts
    SpreadFlagMessage 0, "+m", "7*** VIP-Detect: Um VIP-Channels hinzuzufügen gib einfach in einem Channel des Bots ""!addchan #vipchannel"" ein."
    SpreadFlagMessage 0, "+m", "7*** VIP-Detect: Um VIP-Channels zu löschen gib ""!delchan #vipchannel"" ein."
    SpreadFlagMessage 0, "+m", "7*** VIP-Detect: Um die VIP-Channels anzusehen benutze ""!channels"" ein."
    SpreadFlagMessage 0, "+m", "7*** VIP-Detect: VIPs können nachträglich ""!vip"" eingeben um als VIP erkannt zu werden."
  End If
End Sub

Sub RAW(Line)
  If Param(Line, 2) = "319" Then
    For i = 1 To UBound(WhoisUsers)
      If WhoisUsers(i).Nick = Param(Line, 4) Then
        WhoisUsers(i).Chans = Trim(Right(GetRest(Line, 5), Len(GetRest(Line, 5)) - 1))
        OpChans = GetOpChans(WhoisUsers(i).Chans)
        VoiceChans = GetVoiceChans(WhoisUsers(i).Chans)

        OpChans = Split(OpChans, " ")
        For j = LBound(OpChans) To UBound(OpChans)
          If IsInChan(VIPChans, OpChans(j)) Then
            SendLine "MODE " & WhoisUsers(i).JoinChan & " " & Flags & " " & WhoisUsers(i).Nick, 2
            WhoisUsers(i).Finished = True
            If WhoisUsers(i).OnJoinCheck = True Then
              If VIPMsg <> vbNullString Then SendLine "Privmsg " & ActiveChannels & " :" & Replace(Replace(Replace(VIPMsg, "$opchan", OpChans(j)), "$chan", WhoisUsers(i).JoinChan), "$nick", WhoisUsers(i).Nick), 2
            Else
              If VIPCmdMsg <> vbNullString Then SendLine "NOTICE " & WhoisUsers(i).Nick & " :" & Replace(Replace(Replace(VIPCmdMsg, "$opchan", OpChans(j)), "$chan", WhoisUsers(i).JoinChan), "$nick", WhoisUsers(i).Nick), 2
            End If
            Exit Sub
          End If
        Next

        VoiceChans = Split(VoiceChans, " ")
        For j = LBound(VoiceChans) To UBound(VoiceChans)
          If IsInChan(VIPChans, VoiceChans(j)) Then
            SendLine "MODE " & WhoisUsers(i).JoinChan & " " & VoiceFlags & " " & WhoisUsers(i).Nick, 2
            WhoisUsers(i).Finished = True
            If WhoisUsers(i).OnJoinCheck = True Then
              If VoiceVIPMsg <> vbNullString Then SendLine "PRIVMSG " & ActiveChannels & " :" & Replace(Replace(Replace(VoiceVIPMsg, "$voicechan", VoiceChans(j)), "$chan", WhoisUsers(i).JoinChan), "$nick", WhoisUsers(i).Nick), 2
            Else
              If VoiceVIPCmdMsg <> vbNullString Then SendLine "NOTICE " & WhoisUsers(i).Nick & " :" & Replace(Replace(Replace(VoiceVIPCmdMsg, "$voicechan", VoiceChans(j)), "$chan", WhoisUsers(i).JoinChan), "$nick", WhoisUsers(i).Nick), 2
            End If
            Exit Sub
          End If
        Next
        If WhoisUsers(i).OnJoinCheck = False Then
          If NoVIPCmdMsg <> vbNullString Then SendLine "NOTICE " & WhoisUsers(i).Nick & " :" & Replace(Replace(NoVIPCmdMsg, "$chan", WhoisUsers(i).JoinChan), "$nick", WhoisUsers(i).Nick), 2
        End If
        Exit For
      End If
    Next
  End If
End Sub

Sub Join(Chan, Nick, RegUser, Flags)
  If Nick = "fishbot" Then Exit Sub

  If IsInChan(ActiveChannels, Chan) Then
    For i = 1 To UBound(WhoisUsers)
      If WhoisUsers(i).Finished = True Then
        WhoisUsers(i).Finished = False
        WhoisUsers(i).Nick = Nick
        WhoisUsers(i).Chans = vbNullString
        WhoisUsers(i).JoinChan = Chan
        WhoisUsers(i).OnJoinCheck = True
        SendLine "WHOIS " & WhoisUsers(i).Nick, 2
        Exit Sub
      End If
    Next
    If Nick = "fishbot" Then exit Sub
    ReDim Preserve WhoisUsers(UBound(WhoisUsers) + 1)
    i = UBound(WhoisUsers)
    Set WhoisUsers(i) = New User
    WhoisUsers(i).Finished = False
    WhoisUsers(i).Nick = Nick
    WhoisUsers(i).Chans = vbNullString
    WhoisUsers(i).JoinChan = Chan
    WhoisUsers(i).OnJoinCheck = True
    SendLine "WHOIS " & WhoisUsers(i).Nick, 2
  End If
End Sub

Sub Chan_Msg(Chan, Nick, RegUser, Line)
  If MatchFlags(GetUserFlags(RegUser), "+s") Then
    Select Case LCase(Param(Line, 1))
      Case "!addchan"
        If Param(Line, 2) <> vbNullString Then
          If Left(Param(Line, 2), 1) = "#" Or Left(Param(Line, 2), 1) = "&" Then
            VIPChans = Trim(VIPChans & " " & Param(Line, 2))
            WriteINIString "Settings", "VipChans", VIPChans, SetFile
            SendLine "NOTICE " & Nick & " :Der Channel '" & Param(Line, 2) & "' wurde erfolgreich zur VIP-Liste hinzugefügt", 2
          End If
        End If
      Case "!delchan"
        If Param(Line, 2) <> vbNullString Then
          If Left(Param(Line, 2), 1) = "#" Or Left(Param(Line, 2), 1) = "&" Then
            If IsInChan(VIPChans, Param(Line, 2)) Then
              VIPChans = Replace(VIPChans, Param(Line, 2), "")
              VIPChans = Replace(Replace(VIPChans, "   ", " "), "  ", " ")
              WriteINIString "Settings", "VipChans", VIPChans, SetFile
              SendLine "NOTICE " & Nick & " :Der Channel '" & Param(Line, 2) & "' wurde erfolgreich von der VIP-Liste entfernt", 2
            End If
          End If
        End If
      Case "!channels"
        SendLine "PRIVMSG " & Nick & " :VIP-Detect ist aktiv in folgenden Channels: " & ActiveChannels, 2
        SendLine "PRIVMSG " & Nick & " :VIP Channels sind: " & VIPChans, 2
    End Select
  End If

  If LCase(Param(Line, 1)) = "!vip" Then
    For i = 1 To UBound(WhoisUsers)
      If WhoisUsers(i).Nick = Nick And WhoisUsers(i).Finished = False Then
        Exit Sub
      End If
    Next

    If IsInChan(ActiveChannels, Chan) Then
      For i = 1 To UBound(WhoisUsers)
        If WhoisUsers(i).Finished = True Then
          WhoisUsers(i).Finished = False
          WhoisUsers(i).Nick = Nick
          WhoisUsers(i).Chans = vbNullString
          WhoisUsers(i).JoinChan = Chan
          WhoisUsers(i).OnJoinCheck = False
          SendLine "WHOIS " & WhoisUsers(i).Nick, 2
          Exit Sub
        End If
      Next

      ReDim Preserve WhoisUsers(UBound(WhoisUsers) + 1)
      i = UBound(WhoisUsers)
      Set WhoisUsers(i) = New User
      WhoisUsers(i).Finished = False
      WhoisUsers(i).Nick = Nick
      WhoisUsers(i).Chans = vbNullString
      WhoisUsers(i).JoinChan = Chan
      WhoisUsers(i).OnJoinCheck = False
      SendLine "WHOIS " & WhoisUsers(i).Nick, 2
    End If
  End If
End Sub

Function IsInChan(Chans, Chan)
  If InStr(1, " " & LCase(Chans) & " ", " " & LCase(Chan) & " ") > 0 Then
    IsInChan = True
  Else
    IsInChan = False
  End If
End Function

Function GetOpChans(Chans)
  Channels = Split(Chans, " ")
  For i = LBound(Channels) To UBound(Channels)
    If Left(Channels(i), 1) = "@" Then
      If Dummy = vbNullString Then
        Dummy = Mid(Channels(i), 2)
      Else
        Dummy = Dummy & " " & Mid(Channels(i), 2)
      End If
    End If
  Next
  GetOpChans = Dummy
End Function

Function GetVoiceChans(Chans)
  Channels = Split(Chans, " ")
  For i = LBound(Channels) To UBound(Channels)
    If Left(Channels(i), 1) = "+" Then
      If Dummy = vbNullString Then
        Dummy = Mid(Channels(i), 2)
      Else
        Dummy = Dummy & " " & Mid(Channels(i), 2)
      End If
    End If
  Next
  GetVoiceChans = Dummy
End Function
ist es denn so viel arbeit

oder kanns keiner Wink

plz help
Referenz-URLs