Code:
'Allroundbedienungs-Script zusammengefügt von Idefix
'thx to:
'=============================================================================== ===========================
'Op/Voice/Kick Script by samiyah!
'[ #lamerpark @ de.quakenet.org - www.lamerpark.com ]
'=============================================================================== ===========================
'=============================================================================== ===========================
'PartyLine-Script 1.0a
'Programmiert von gangasta
'=============================================================================== ===========================
'=============================================================================== ===========================
'Channel-Join 1.0a by Idefix
'=============================================================================== ===========================
Dim cmd_prefix, max_matches, protect_me, protect_owner
Sub Init()
Script "Allroundbedienungs-Script 1.0a"
Hook "Chan_Msg"
cmd_prefix = ReadINIString("Others", "CMDPrefix", "!", "angel.ini")
'//- CONFIG/README -\\
'BEFEHLE:
'!kick [wildcard],[wildcard],... [Grund]
'!op [wildcard] [wildcard] ...
'!deop [wildcard] [wildcard] ...
'!v [wildcard] [wildcard] ...
'!dev [wildcard] [wildcard] ...
'ERKLÄRUNG:
'!op - ohne Parameter, wird DICH oppen, dasselbe gilt für alle anderen Befehle
'!kick * - wird alle User Kicken, es sei denn max_matches lässt dies nicht zu
'!op b* a* -alph* -br* ist das selbe wie: !op +b* +a* -alph* -br*
'Kickt alle User die mit a oder b anfangen, ausser die die mit alph oder br anfangen, das + ist Optional!
'Bedingung ist das der User der das Kommando ausführt +o als ChannelFlag im Bot hat
'EINSTELLUNGEN:
'Hier können noch einige Sachen eingestellt werden:
'max_matches (0/1,2,3,...): Wieviel User dürfen Maximal betroffen sein,
'max_matches = 4 verhindert !kick * (da nur maximal 4 User betroffen sein dürfen)
'max_matches = 0 erlaubt !kick *
max_matches = 0
'protect_me (0/1): Schützt Bot vor Bot-DeOp und davor sich selbst zu kicken
protect_me = 1
'protect_owner (0/1): Schützt den SuperOwner vor DeOp oder Kick durch andere
protect_owner = 1
'Schutz trifft nur bei Op/DeOp/Kick in Kraft, bei Voice/DeVoice nicht!
'\\- CONFIG/README ENDE -//
' Readme:
'
' Befehle nur für Owner ausführbar.
'
' Befehle: ( != Prefix )
' !join <#channel> Bringt den Bot dazu <#channel> zu Joinen.
' !part Bringt den Bot dazu den aktiven Channel zu verlassen.
' !part <#channel> Bringt den Bot dazu <#channel> zu verlassen.
' !perform Bringt den Bot dazu den aktiven Channel zur Permanenten Channelliste hinzuzfügen.
' !perform <#channel> Bringt den Bot dazu <#channel> zur Permanenten Channelliste hinzuzfügen.
' !endperform Bringt den Bot dazu den aktiven Channel von Permanenten Channelliste zu streichen.
' !endperform <#channel> Bringt den Bot dazu <#channel> von Permanenten Channelliste zu streichen.
' !rejoin Bringt den Bot dazu im aktiven Channel zu Hoppen.
' !rejoin <#channel> Bringt den Bot dazu <#channel> zu Hoppen.
' !adduser <nick> Fügt neuen Benutzer mit Standardflags zu.
' !remuser <nick> Löscht Benutzer.
' !flags <nick> +-flags Fügt dem Benützer Globale flags zu (+afijmnopstvw), bzw. löscht sie (-afijmnopstvw)
' !flags <nick> +-flags <#channel> Fügt dem Benützer flags (+afijmnopstvw) in <#channel> zu, bzw. löscht sie (-afijmnopstvw)
'
' Für den befehl !flags müssen Nick und Benutzername gleich sein.
End Sub
Sub Chan_Msg(Chan, Nick, RegUser, Line)
Select Case lcase(Param(Line,1))
Case cmd_prefix & "op"
if not MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") Then Exit Sub
if (Param(Line,2) = "") Then SendLine "MODE " & Chan & " +o " & Nick, 1: Exit Sub
Exeqt Chan, "MODE %chan% +o %nick%", GetRest(Line,2), Nick, 1
Case cmd_prefix & "deop"
if not MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") Then Exit Sub
if (Param(Line,2) = "") Then SendLine "MODE " & Chan & " -o " & Nick, 3: Exit Sub
Exeqt Chan, "MODE %chan% -o %nick%", GetRest(Line,2), Nick, 1
Case cmd_prefix & "kick"
if not MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") Then Exit Sub
if (Param(Line,2) = "") Then SendLine "KICK " & Chan & " " & Nick, 3: Exit Sub
Exeqt Chan, "KICK %chan% %nick% :" & GetRest(Line,3), Replace(Param(Line,2),","," "), Nick, 1
Case cmd_prefix & "v"
if not MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") Then Exit Sub
if (Param(Line,2) = "") Then SendLine "MODE " & Chan & " +v " & Nick, 1: Exit Sub
Exeqt Chan, "MODE %chan% +v %nick%", GetRest(Line,2), Nick, 0
Case cmd_prefix & "dev"
if not MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") Then Exit Sub
if (Param(Line,2) = "") Then SendLine "MODE " & Chan & " -v " & Nick, 3: Exit Sub
Exeqt Chan, "MODE %chan% -v %nick%", GetRest(Line,2), Nick, 0
End Select
Select Case LCase(Param(Line, 1))
Case cmd_prefix & "join"
If MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") Then
ExecuteCommand 0 , ".join " & Param(Line, 2)
SendLine "NOTICE " & Nick & " :Joining Channel " & Param(Line, 2) & " .... Successfull!", 2
Else
SendLine "NOTICE " & Nick & " :Nice Try ;)", 2
End If
End Select
Select Case LCase(Param(Line, 1))
Case cmd_prefix & "part"
If MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") Then
If Param(line, 2) = "" then
ExecuteCommand 0 , ".part " & chan
Else
ExecuteCommand 0 , ".part " & Param(line, 2)
SendLine "NOTICE " & Nick & " :I Left " & Param(Line, 2) ,2
End If
Else
SendLine "NOTICE " & Nick & " :Nice Try ;)", 2
End If
End Select
Select Case LCase(Param(Line, 1))
Case cmd_prefix & "perform"
If MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") Then
If Param(Line, 2) = "" Then
ExecuteCommand 0 , ".+chan " & chan
SendLine "NOTICE " & Nick & " :Added This Channel to My perform list ! ", 2
Else
ExecuteCommand 0 , ".+chan " & Param(Line, 2)
SendLine "NOTICE " & Nick & " :Added Channel " & Param(Line, 2) & " to My perform list!", 2
End If
Else
SendLine "NOTICE " & Nick & " :Nice Try ;)", 2
End If
End Select
Select Case LCase(Param(Line, 1))
Case cmd_prefix & "endperform"
If MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") Then
If Param(Line, 2) = "" then
ExecuteCommand 0 , ".-chan " & chan
SendLine "NOTICE " & Nick & " :Removed This Channel from My perform list ! ", 2
Else
ExecuteCommand 0 , ".-chan " & Param(Line, 2)
SendLine "NOTICE " & Nick & " :Removed " & Param(Line, 2) & " from MY perform list ! ",2
End If
Else
SendLine "NOTICE " & Nick & " :Nice Try ;)", 2
End If
End Select
Select Case LCase(Param(Line, 1))
Case cmd_prefix & "rejoin"
If MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") Then
If Param(Line, 2) = "" then
ExecuteCommand 0 , ".rejoin " & chan
Else
ExecuteCommand 0 , ".rejoin " & Param(Line, 2)
End If
Else
SendLine "NOTICE " & Nick & " :Nice Try ;)", 2
End If
End Select
Select Case LCase(Param(Line, 1))
Case cmd_prefix & "adduser"
If MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") Then
If Param(Line, 2) = "*" Then
For i = 1 To ChanUserCount(ChanNum(Chan))
If ChanUser(ChanNum(Chan), i, CU_RegUser) = vbNullString Then
ExecuteCommand 0, ".adduser " & ChanUser(ChanNum(Chan), i, CU_Nick)
End If
Next
SendLine "NOTICE " & Nick & " :All users in " & Chan & " have been added!", 2
ElseIf IsOn(Param(Line, 2), Chan) Then
ExecuteCommand 0, ".adduser " & Param(Line, 2)
SendLine "NOTICE " & Nick & " :User has been added!", 2
Else
SendLine "NOTICE " & Nick & " :No such user in " & Chan, 2
End If
Else
SendLine "NOTICE " & Nick & " :You aren't a owner of " & MyNick, 2
End If
Case cmd_prefix & "flags"
If IsOn(Param(Line, 2), Chan) Then
If MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") Then
ExecuteCommand 0, ".chattr " & GetRest(Line, 2)
SendLine "NOTICE " & Nick & " :Flags set!", 2
Else
SendLine "NOTICE " & Nick & " :You aren't a owner of " & MyNick, 2
End If
Else
SendLine "NOTICE " & Nick & " :No such user in " & Chan, 2
End If
Case cmd_prefix & "remuser"
If IsOn(Param(Line, 2), Chan) Then
If MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") Then
ExecuteCommand 0, ".remuser " & Param(Line, 2)
SendLine "NOTICE " & Nick & " :User has been removed with all data!", 2
Else
SendLine "NOTICE " & Nick & " :You aren't a owner of " & MyNick, 2
End If
Else
SendLine "NOTICE " & Nick & " :No such user in " & Chan, 2
End If
End Select
End Sub
Sub Exeqt(Chan, CmdStr, Line, Nick, protected)
Dim matchnicks
matchnicks = GetMatches(Chan,Line,protected)
if (protected) and (max_matches > 0) and (ubound(matchnicks) + 1 > max_matches) Then SendLine "NOTICE " & Nick & " :Zuviele Matches!",3:Exit Sub
For u = 0 To ubound(matchnicks)
SendLine replace(replace(CmdStr,"%nick%",matchnicks(u)),"%chan%",Chan), 2
Next
End Sub
Function GetMatches(Chan,Line,Protect)
Dim nicks, match_tmp, match_nicks
Dim schutz, betroffen
nicks = Split(Line,chr(32))
CNum = ChanNum(Chan)
For i = 1 To ChanUserCount(CNum)
schutz = 0
betroffen = 0
For j = 0 To ubound(nicks)
Select Case left(nicks(j),1)
Case "-"
if wildmatch(mid(nicks(j),2),ChanUser(CNum, i, CU_Nick)) Then schutz = 1
Case "+"
if wildmatch(mid(nicks(j),2),ChanUser(CNum, i, CU_Nick)) Then betroffen = 1
Case else
if wildmatch(nicks(j),ChanUser(CNum, i, CU_Nick)) Then betroffen = 1
End Select
Next
if (Protect) and (ChanUser(CNum,i,CU_Nick) = MyNick) And (protect_me) Then schutz = 1
if (Protect) and (ChanUser(CNum,i,CU_RegUser) <> "") And (MatchFlags(GetUserChanFlags(ChanUser(CNum,i,CU_RegUser), Chan),"+s")) And (protect_owner) Then schutz = 1
if not schutz and betroffen Then match_tmp = match_tmp & " " & ChanUser(CNum,i,CU_Nick)
Next
match_nicks = split(Trim(match_tmp),chr(32))
GetMatches = match_nicks
End Function
Habe das Script auf Wunsch im Channel mal um die Angabe eines Grundes bei !kick erweitert. Dabei hat sich die Syntax für !kick wie am Anfang des Script geschrieben, geändert.