16.02.2006, 23:45 Uhr
hiho
ich wollt mal anfragen ob mir jemand ,dass gleich folgende vip-script umschreiben koennte
mein wunsch
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
ich wollt mal anfragen ob mir jemand ,dass gleich folgende vip-script umschreiben koennte
mein wunsch
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