AnGelBot-Portal²

Normale Version: Massmodes
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hm gibts schon ein Massmodes script?
Also
!massop -> alle user in dem chann werden geopped
!massvoice -> alle user in dem chan werden gevoiced
wenn nicht wär das doch am ein versuch wert oder nicht? :D
sWiE
Es gibt etwas ähnliches. Das Ordnungsscript kann per !ruhe alle User im Channel devoicen und auf moderated schalten. Ein explizites Massmode Script gibt es allerdings noch nicht, kann ich ja mal machen Wink
Da ich leider gerade kein FTP-Proggie habe und so poste ich das Script hier. Werds demnächst noch in die Downloads packen.

Installation: Alles kopieren und in massmode.asc einfügen, diese Datei dann im Script Ordner des Bots speichern.

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

'Visit us online @ http://www.angelbot-portal.de/
'===============================
'Programmiert von Sp33d
'===============================

Sub Init()
  Script "Massmode 1.0a by Sp33d"
  Hook "Chan_Msg"
  SpreadFlagMessage 0, "+m", "7*** Verfügbare Befehle im Channel:"
  SpreadFlagMessage 0, "+m", "7*** !mass ..."
  SpreadFlagMessage 0, "+m", "7*** op - opped alle"
  SpreadFlagMessage 0, "+m", "7*** deop - deopped alle"
  SpreadFlagMessage 0, "+m", "7*** halfop - halfopped alle"
  SpreadFlagMessage 0, "+m", "7*** dehalfop - dehalfopped alle"
  SpreadFlagMessage 0, "+m", "7*** voice - voiced alle"
  SpreadFlagMessage 0, "+m", "7*** devoice - devoiced alle"
  SpreadFlagMessage 0, "+m", "7*** (14Beispiel: !mass deop7)"
End Sub

Sub Chan_Msg(Chan, Nick, RegUser, Line)
  If Not MatchFlags(GetUserFlags(RegUser), "+m") Then Exit Sub

  If LCase(Param(Line, 1)) =  "!mass" Then
    For i = 0 To ChanUserCount(ChanNum(Chan))
      If ChanUser(ChanNum(Chan), i, CU_Nick) <> MyNick Then
        Select Case LCase(Param(Line, 2))
          Case "op"
            SendLine "MODE " & Chan & " +o " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
          Case "deop"
            SendLine "MODE " & Chan & " -o " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
          Case "halfop"
            SendLine "MODE " & Chan & " +h " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
          Case "dehalfop"
            SendLine "MODE " & Chan & " -h " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
          Case "voice"
            SendLine "MODE " & Chan & " +v " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
          Case "devoice"
            SendLine "MODE " & Chan & " -v " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
        End Select
      End If
    Next
  End If
End Sub
in kicken und bannen?
oder wie mache ich dat das der user mit + m oder n oder s ne deopt???
Bannen is etwas unsinning, weil es z.B. im QuakeNet nur 30 Bans gesetzt werden dürfen, d.h. bei Chans mit mehr als 30 Usern werden nicht alle gebannt.

Hier ist eine andere Version, die a) User mit +m/+n/+s berücksichtigt und b) hoffentlich funktioniert, da iches noch nicht getestet habe Wink

Code:
Sub Init()
  Script "Massmode 1.0b by Sp33d"
  Hook "Chan_Msg"
  SpreadFlagMessage 0, "+m", "7*** Verfügbare Befehle im Channel:"
  SpreadFlagMessage 0, "+m", "7*** !mass ..."
  SpreadFlagMessage 0, "+m", "7*** op - opped alle"
  SpreadFlagMessage 0, "+m", "7*** deop - deopped alle"
  SpreadFlagMessage 0, "+m", "7*** halfop - halfopped alle"
  SpreadFlagMessage 0, "+m", "7*** dehalfop - dehalfopped alle"
  SpreadFlagMessage 0, "+m", "7*** voice - voiced alle"
  SpreadFlagMessage 0, "+m", "7*** devoice - devoiced alle"
  SpreadFlagMessage 0, "+m", "7*** (14Beispiel: !mass deop7)"
End Sub

Sub Chan_Msg(Chan, Nick, RegUser, Line)
  If Not MatchFlags(GetUserFlags(RegUser), "+m") Then Exit Sub
  
  If LCase(Param(Line, 1)) =  "!mass" Then
    For i = 0 To ChanUserCount(ChanNum(Chan))
      If ChanUser(ChanNum(Chan), i, CU_Nick) <> MyNick Then
        If Not IsPrivileged(GetUserChanFlags(ChanUser(ChanNum(Chan), i, CU_Nick), Chan)) Then
          Select Case LCase(Param(Line, 2))
            Case "op"
              SendLine "MODE " & Chan & " +o " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
            Case "deop"
              SendLine "MODE " & Chan & " -o " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
            Case "halfop"
              SendLine "MODE " & Chan & " +h " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
            Case "dehalfop"
              SendLine "MODE " & Chan & " -h " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
            Case "voice"
              SendLine "MODE " & Chan & " +v " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
            Case "devoice"
              SendLine "MODE " & Chan & " -v " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
          End Select
        End If
      End If
    Next
  End If
End Sub

Function IsPrivileged(Flags)
  If MatchFlags(Flags, "+m") Or MatchFlags(Flags, "+n") Or MatchFlags(Flags, "+s") Then IsPrivileged = True
End Function
Error : 1006 (')' erwartet)
<BuBU|Nimda> Position: Line 21, Column 88
<BuBU|Nimda> Context : " If Not IsPrivileged(GetUserChanFlags(ChanUser(ChanNum(Chan), i, CU_Nick), Chan) Then "
Also bei mir funzt es
Das folgende Script reagiert nur noch auf Queries in der Form "!mass <op/deop/...> #channel".

Code:
Sub Init()
  Script "Massmode 1.0c by Sp33d"
  Hook "Priv_Msg"
End Sub

Sub Priv_Msg(Nick, RegUser, Line)
  If Not MatchFlags(GetUserFlags(RegUser), "+m") Then Exit Sub
  Dim Chan
  
  '!mass <type> <#channel>
  If LCase(Param(Line, 1)) =  "!mass" Then
    If ParamCount(Line) = 3 Then
      Chan = Param(Line, 3)
    Else
      Exit Sub
    End If
    WaitWithSend
    For i = 0 To ChanUserCount(ChanNum(Chan))
      If ChanUser(ChanNum(Chan), i, CU_Nick) <> MyNick Then
        If Not IsPrivileged(Chan, ChanUser(ChanNum(Chan), i, CU_Nick), ChanUser(ChanNum(Chan), i, CU_RegUser)) Then
          Select Case LCase(Param(Line, 2))
            Case "op", "o", "+o"
              SendLine "MODE " & Chan & " +o " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
            Case "deop", "dop", "-o"
              SendLine "MODE " & Chan & " -o " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
            Case "halfop", "hop", "h", "+h"
              SendLine "MODE " & Chan & " +h " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
            Case "dehalfop", "dehop", "dhop"
              SendLine "MODE " & Chan & " -h " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
            Case "voice", "v", "+v", "+voice"
              SendLine "MODE " & Chan & " +v " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
            Case "devoice", "dv", "-v", "-voice"
              SendLine "MODE " & Chan & " -v " & ChanUser(ChanNum(Chan), i, CU_Nick), 2
          End Select
        End If
      End If
    Next
    SendNow
    HaltDefault
  End If
End Sub

Function IsPrivileged(Chan, Nick, RegUser)
  IsPrivileged = False

  If RegUser = vbNullString Then
    If Len(Nick) = 1 Or InStr(1, Nick, ".") > 0 Or Nick = vbNullString Then
      'Service
      IsPrivileged = True
    End If
  ElseIf Nick = MyNick Then
    IsPrivileged = True
  ElseIf MatchFlags(GetUserChanFlags(Chan, RegUser), "+s") Or _
         MatchFlags(GetUserChanFlags(Chan, RegUser), "+n") Or _
         MatchFlags(GetUserChanFlags(Chan, RegUser), "+m") Then
    IsPrivileged = True
  ElseIf MatchFlags(GetUserFlags(RegUser), "+s") Or _
         MatchFlags(GetUserFlags(RegUser), "+n") Or _
         MatchFlags(GetUserFlags(RegUser), "+m") Or _
         MatchFlags(GetUserFlags(RegUser), "+b") Then
    IsPrivileged = True
  End If
End Function
hi, wär mal jemand so nett und könnte das ordnungsscript n bisschen "aufmotzen"? könnte eins gebrauchen wo man möglichst einfach im script einstellen kann ob:
1. nur devoiced oder auch deopt werden soll
2. allen usern voice/op genommen wird oder nur denen die der bot nicht kennt
3. ob bei !normal nur die user die der bot kennt voice/op wiedergegeben wird oder ob das per !resync (ka obs das überall gibt aber im gamesurge gibts den befehl) das mit der userlist des channels abgeglichen wird
Seiten: 1 2
Referenz-URLs