AnGelBot-Portal²

Normale Version: das etwas andere Topic-Script gesucht ...
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi Leute,
ich hab eine Bitte an euch. Ich hätte gerne ein script, welches ein Topic automatisch setzt nach eingegebenen Zeiten. Als wenn das noch nicht alles wäre, sollte dieses script auch automatisch die vorhergehende Eingabe aus dem Topic löschen. .. hört sich jetzt etwas konfus an, deshalb ein kleines Beispiel:
Ich gebe zuerst alle Topiczeiten des Tages nacheinander ein ...
!zeit 3:00 Nachtclub mit Nightman
!zeit 5:00 guten Morgen Deutschland mit Morning-Man
!zeit 8:00 Morgentratsch mit Henne
...
nach Eingabe von !topic sollte nun im Topic erscheinen ...
3:00 Nachtclub mit Nightman ++ 5:00 guten Morgen Deutschland mit Morning-Man ++ 8:00 Morgentratsch mit Henne
... soweit sogut, nur sollte jetzt das script um 5:00 nur noch die nachfolgenden Beiträge ins Topic setzen, also ...
guten Morgen Deutschland mit Morning-Man ++ 8:00 Morgentratsch mit Henne
.. also schon die Anfangszeit des Beitrages löschen und eben ab 8:00 Uhr wiederum das Topic anpassen.
Ich wäre wirklich dankbar über jegliche Hilfe, die es mir ermöglichen, dies in die Praxis umzusetzen. Vielen Dank schon erstmal im Voraus,
cu Looop
hihi das war mal ein kniffliges script aba nach 90mins hoffe ich das es klappt, ich habs nicht ausführlich getestet, aba es sollte klappen, ansonsten haste schonmal ne vorlage wie es geht :D :D

!zeit 09:00:00 topic....
so wirds ausgeführt, kannst ja ne funktion noch reinschreiben das er die zeit automatisch vervollständigt, aber im moment muss das format so sein Rolling Eyes
Code:
Sub Init()
    Script "topic-timer by St4rg4t3"
    Hook "Chan_Msg"
    Countdown
End Sub

Const tt = "topictimer.ini"

Dim Zeit, nummer

Sub Chan_Msg(Chan, Nick, RegUser, Line)
    If LCase(Param(Line, 1)) = "!zeit" Then
        If MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") AND ParamCount(Line) > "2" AND Len(Param(Line, 2)) = "8" Then
            If Mid(Param(Line, 2), 3, 1)  = ":" AND Mid(Param(Line, 2), 6, 1)  = ":" Then
                a = CINT(ReadINIString("Topic", "anzahl", "0", tt)) + 1
                WriteINIString "Topic", a & "t", GetRest(Line, 3), tt
                WriteINIString "Topic", a & "c", Chan, tt
                WriteINIString "Topic", a & "z", Param(Line, 2), tt
                WriteINIString "Topic", "anzahl", a, tt
                If Not nummer = vbNullString Then Exit Sub
                i = "0"
                For i = 1 To a
                    If Not ReadINIString("Topic", i & "t", vbNullString, tt) = "vbNullString" Then
                        Zeit = TimeValue(ReadINIString("Topic", i & "z", vbNullString, tt))
                        nummer = CINT(i)
                        Exit Sub
                    End If
                Next
            End If
        End If
    End If
End Sub

Sub Countdown()
    Do While Time = Zeit
        Dim i
        If i = vbNullString Then
            i = (CINT(nummer) + 1)
        End If
        For i = 1 To ReadINIString("Topic", "anzahl", vbNullString, tt)
            If top = vbNullString Then
                top = "Und hiernach: "
            End If
            If Not ReadINIString("Topic", i & "z", "1", tt) = "1" Then
                If Not ReadINIString("Topic", i & "z", vbNullString, tt) = ReadINIString("Topic", nummer & "z", vbNullString, tt)Then
                    top = top & " " & ReadINIString("Topic", i & "z", vbNullString, tt) & ": " & ReadINIString("Topic", i & "t", vbNullString, tt) & " ||"
                End If
            End If
        Next
        If top = "Und hiernach: " Then
            top = ""
        End If
        SendLine "TOPIC " & ReadINIString("Topic", nummer & "c", vbNullString, tt) & " :" & ReadINIString("Topic", nummer & "t", vbNullString, tt) & " >> " & top, 2
        DeleteINIString "Topic", nummer & "t", tt
        DeleteINIString "Topic", nummer & "c", tt
        DeleteINIString "Topic", nummer & "z", tt
        nummer = nummer + 1
        If Not ReadINIString("Topic", nummer & "t", vbNullString, tt) = vbNullString Then
            Zeit = TimeValue(ReadINIString("Topic", nummer & "z", vbNullString, tt))
        Else
            Zeit = False
        End If
        TimedCommand "Countdown", 1
        Exit Sub
    Loop
    TimedCommand "Countdown", 1
End Sub

wie immer alle angaben ohne gewähr :>

p.s. ich hoffe die ausgabe ist ~ so wie dus dir gedacht hast :>
big thx's stargate,
genauso sollte es funzen Razz
Nur sind denn die Sekunden wirklich so wichtig bei der Eingabe?
Leider reicht mein Horizont nicht dahingehend aus, um mir dein script so umzuschreiben, das ich auf die Ein/Ausgabe der Sekunden verzichten kann.
Es sieht einfach blöd aus, wenn der die Sekunden ins Topic setzt (allein schon wegen der begrenzten Anzahl Zeichen im Topic). Genauso dessen Eingabe Crying or Very sad
Ich wäre euch echt dankbar, wenn ich mir dabei noch helfen könntet. Ich bin mir auch sicher, das der eine oder andere solch ein script genauso schätzen wird, wie ich.
Kleine Anmerkung noch meinerseits an die Admins und Moderatoren. Was ich hier so im Forum lese von stargate, nehmt Ihn bei euch auf! Wink
cu Looop
hehe danke Smile
und ja es ist wichtig die sekunden anzugeben(soweit ich jedenfalls weiss ^^)
also das obere script brauchste keine sekunden mehr anzugeben, also 9:00 würde reichen aber im topic würde 9:00:00 dann stehen oder nimmst das untere script, da sollte er die zeit auch als 9:00 angeben

und zu deinem horizont: musst doch einfach nur das ":00" für die sekunden an deine angabe oder an den zeit vergleich ranhängen, damits ohne geht und in diesem fall 2IFs umschreiben, das hätteste selber garantiert auch noch hinbekommen Smile

Code:
Sub Init()
    Script "topic-timer by St4rg4t3"
    Hook "Chan_Msg"
    Countdown
End Sub

Const tt = "topictimer.ini"

Dim Zeit, nummer

Sub Chan_Msg(Chan, Nick, RegUser, Line)
    If LCase(Param(Line, 1)) = "!zeit" Then
        If MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") AND ParamCount(Line) > "2" AND Len(Param(Line, 2)) = "5" Then
            If Mid(Param(Line, 2), 3, 1)  = ":" Then
                a = CINT(ReadINIString("Topic", "anzahl", "0", tt)) + 1
                WriteINIString "Topic", a & "t", GetRest(Line, 3), tt
                WriteINIString "Topic", a & "c", Chan, tt
                WriteINIString "Topic", a & "z", Param(Line, 2) & ":00", tt
                WriteINIString "Topic", "anzahl", a, tt
                If Not nummer = vbNullString Then Exit Sub
                i = "0"
                For i = 1 To a
                    If Not ReadINIString("Topic", i & "t", vbNullString, tt) = "vbNullString" Then
                        Zeit = TimeValue(ReadINIString("Topic", i & "z", vbNullString, tt))
                        nummer = CINT(i)
                        Exit Sub
                    End If
                Next
            End If
        End If
    End If
End Sub

Sub Countdown()
    Do While Time = Zeit
        Dim i
        If i = vbNullString Then
            i = (CINT(nummer) + 1)
        End If
        For i = 1 To ReadINIString("Topic", "anzahl", vbNullString, tt)
            If top = vbNullString Then
                top = "Und hiernach: "
            End If
            If Not ReadINIString("Topic", i & "z", "1", tt) = "1" Then
                If Not ReadINIString("Topic", i & "z", vbNullString, tt) = ReadINIString("Topic", nummer & "z", vbNullString, tt)Then
                    top = top & " " & ReadINIString("Topic", i & "z", vbNullString, tt) & ": " & ReadINIString("Topic", i & "t", vbNullString, tt) & " ||"
                End If
            End If
        Next
        If top = "Und hiernach: " Then
            top = ""
        End If
        SendLine "TOPIC " & ReadINIString("Topic", nummer & "c", vbNullString, tt) & " :" & ReadINIString("Topic", nummer & "t", vbNullString, tt) & " >> " & top, 2
        DeleteINIString "Topic", nummer & "t", tt
        DeleteINIString "Topic", nummer & "c", tt
        DeleteINIString "Topic", nummer & "z", tt
        nummer = nummer + 1
        If Not ReadINIString("Topic", nummer & "t", vbNullString, tt) = vbNullString Then
            Zeit = TimeValue(ReadINIString("Topic", nummer & "z", vbNullString, tt))
        Else
            Zeit = False
        End If
        TimedCommand "Countdown", 1
        Exit Sub
    Loop
    TimedCommand "Countdown", 1
End Sub

Code:
Sub Init()
    Script "topic-timer by St4rg4t3"
    Hook "Chan_Msg"
    Countdown
End Sub

Const tt = "topictimer.ini"

Dim Zeit, nummer

Sub Chan_Msg(Chan, Nick, RegUser, Line)
    If LCase(Param(Line, 1)) = "!zeit" Then
        If MatchFlags(GetUserChanFlags(RegUser, Chan), "+n") AND ParamCount(Line) > "2" AND Len(Param(Line, 2)) = "5" Then
            If Mid(Param(Line, 2), 3, 1)  = ":" Then
                a = CINT(ReadINIString("Topic", "anzahl", "0", tt)) + 1
                WriteINIString "Topic", a & "t", GetRest(Line, 3), tt
                WriteINIString "Topic", a & "c", Chan, tt
                WriteINIString "Topic", a & "z", Param(Line, 2), tt
                WriteINIString "Topic", "anzahl", a, tt
                If Not nummer = vbNullString Then Exit Sub
                i = "0"
                For i = 1 To a
                    If Not ReadINIString("Topic", i & "t", vbNullString, tt) = "vbNullString" Then
                        Zeit = TimeValue(ReadINIString("Topic", i & "z", vbNullString, tt) & ":00")
                        nummer = CINT(i)
                        Exit Sub
                    End If
                Next
            End If
        End If
    End If
End Sub

Sub Countdown()
    Do While Time = Zeit
        Dim i
        If i = vbNullString Then
            i = (CINT(nummer) + 1)
        End If
        For i = 1 To ReadINIString("Topic", "anzahl", vbNullString, tt)
            If top = vbNullString Then
                top = "Und hiernach: "
            End If
            If Not ReadINIString("Topic", i & "z", "1", tt) = "1" Then
                If Not ReadINIString("Topic", i & "z", vbNullString, tt) = ReadINIString("Topic", nummer & "z", vbNullString, tt)Then
                    top = top & " " & ReadINIString("Topic", i & "z", vbNullString, tt) & ": " & ReadINIString("Topic", i & "t", vbNullString, tt) & " ||"
                End If
            End If
        Next
        If top = "Und hiernach: " Then
            top = ""
        End If
        SendLine "TOPIC " & ReadINIString("Topic", nummer & "c", vbNullString, tt) & " :" & ReadINIString("Topic", nummer & "t", vbNullString, tt) & " >> " & top, 2
        DeleteINIString "Topic", nummer & "t", tt
        DeleteINIString "Topic", nummer & "c", tt
        DeleteINIString "Topic", nummer & "z", tt
        nummer = nummer + 1
        If Not ReadINIString("Topic", nummer & "t", vbNullString, tt) = vbNullString Then
            Zeit = TimeValue(ReadINIString("Topic", nummer & "z", vbNullString, tt) & ":00")
        Else
            Zeit = False
        End If
        TimedCommand "Countdown", 1
        Exit Sub
    Loop
    TimedCommand "Countdown", 1
End Sub

cu Stargate
hi stargate,
wenn du 'ne Frau wärst, ick würd dir knutschen Laughing
.. wenn du 'nen Gott wärst, ick würde dich anbeten Wink
aber mal im Ernst, mit deinem Rat haste mir auch noch geholfen
Zitat:einfach nur das ":00" für die sekunden an deine angabe
und nun sparste mir auch noch diese Arbeit, great big thx.
Die Grundlage hab ich ja jetzt, werd das nur noch meinen Bedürfnissen Anpassen (farblich abstimmen, bzw. werde die Eingabe ins Query des Bots verlegen), doch das kriege ich hin Rolling Eyes
Um deinen Hinweis vorweg zu nehmen .. ja, ich weiss, dass es zur Zeit nur in dem Chan das Topic setzt, indem auch der Trigger benutzt wird *fg*

bis zum nächsten Mal ... cu Looop
hehe hf, aber gegens anbeten hätt ich nix und gegens knutchen auch net wenn du ne frau wärst *FG*

viel spass damit Wink
ich muss doch noch mal 'nerven' ..
folgendes Problem tritt auf :
Zitat:[05:12:02] <L> !zeit 05:20 test1
[05:12:11] <L> !zeit 05:25 test2
[05:12:25] <L> !zeit 05:30 test3
[05:12:34] <L> !zeit 05:35 test4
[05:12:43] <L> !zeit 05:40 test5
[05:12:52] <L> !zeit 05:45 test6
[05:13:12] <L> !zeit 05:50 test7
[05:13:24] <L> !zeit 06:00 test8
[05:13:29] <L> !topic
[05:13:31] <Gruebchen> aktuell eingestellt sind : test4 ++ 05:20 test1 ++ 05:25 test2 ++ 05:30 test3 ++ 05:40 test5 ++ 05:45 test6 ++ 05:50 test7 ++ 06:00 test8 ++
den Trigger zu auslesen der eingegebenen Topic's, hab ich wie folgt geschrieben ...
Code:
If LCase(Param(Line, 1)) = "!topic" Then
        If i = vbNullString Then
            i = (CINT(nummer) + 1)
        End If
        For i = 1 To ReadINIString("Topic", "anzahl", vbNullString, tt)
            If top = vbNullString Then
                top = " ++"
            End If
            If Not ReadINIString("Topic", i & "z", "", tt) = "" Then
                If Not ReadINIString("Topic", i & "z", vbNullString, tt) = ReadINIString("Topic", nummer & "z", vbNullString, tt)Then
                    top = top & " " & ReadINIString("Topic", i & "z", vbNullString, tt) & " " & ReadINIString("Topic", i & "t", vbNullString, tt) & " ++"
                End If
            End If
        Next
        If top = " ++" Then
            top = ""
        End If
        SendLine "PRIVMSG " & Nick & " :aktuell eingestellt sind :" & ReadINIString("Topic", nummer & "c", vbNullString, tt) & " " & ReadINIString("Topic", nummer & "t", vbNullString, tt)  & top, 2
  End If
... was hab ich da falsch gemacht, dass der mir nicht die Liste in der Reihenfolge anzeigt, wie es der Zeitfolge entspricht?
Btw .. und er setzt auch das Topic nicht, wenn ich sowas passiert :o(
cu Looop
musst mich halt mal im IRC anlabern Wink

'EDIT' ich hasse halbe scripte, poste es plz schon komplett wenn du mein neustes meisterwerk verhunzen musst Laughing Laughing :twisted: Laughing Laughing
Referenz-URLs