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