AnGelBot-Portal²

Normale Version: TimedCommand
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi, ich hab nen Script hier ausm Forum leicht abgeändert damit es die Restzeit bis zum Urlaub anzeigt.

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 "Countdown 1.0a by Sp33d"
  GetCountdown()
  Hook "Chan_Msg"
  TimedCommand "spam", 60
End Sub

Sub Chan_Msg(Chan, Nick, RegUser, Line)
  If LCase(Param(Line, 1)) = "!cholland" And Chan = "#akekse" Then
    SendLine "PRIVMSG " & Chan & " :Zeit: " & GetCount, 2
  End If
End Sub

Sub spam()
      SendLine "PRIVMSG " & Chan & " :Zeit: " & GetCount, 2
TimedCommand  "spam"
End Sub

Function GetCount()
    Dim datThen
    Dim datNow
    Dim lngDifference
    Dim intDays
    Dim intHours
    Dim intMinutes
    Dim intSeconds

    datNow = Now
    datThen = #19/08/2005 16:00:00 PM#    
    lngDifference = DateDiff("s", datNow, datthen)    

    intDays = lngDifference \ 86400
    intHours = (lngDifference - (intDays * 86400)) \ 3600
    intMinutes = (lngDifference - (intDays * 86400) - (intHours * 3600)) \ 60
    intSeconds = (lngDifference - (intDays * 86400) - (intHours * 3600) - (intMinutes * 60))

    If intDays > 0 Then
        GetCount = "Noch " & intDays & " Tag(e), " & intHours & " Stunde(n), " & intMinutes & " Minute(n) sowie " & intSeconds & " Sekunde(n) bis HOLLAAAAND!!!"
    ElseIf intHours > 0 Then
        GetCount = "*Spannung* noch " & intHours & " Stunde(n), " & intMinutes & " Minute(n) sowie " & intSeconds & " Sekunde(n)"
    ElseIf intMinutes > 10 Then
        GetCount = "*Bereicht machen* jetzt wirds knapp: " & intMinutes & " Minute(n) und " & intSeconds & " Sekunde(n)"
    ElseIf intMinutes > 2 Then
        GetCount = "*Gläser-auffüll*: " & intMinutes & " Minute(n) und " & intSeconds & " Sekunde(n)"
    ElseIf intMinutes > 0 Then
        GetCount = "macht euch fertig: " & intMinutes & " Minute(n) und " & intSeconds & " Sekunde(n)"
    ElseIf intSeconds > 0 Then
        GetCount = "Countdown: " & intSeconds & "..."
    Else
        GetCount = "HOLLAAAAAAND!!!"
    End If
End Function

Sub GetCountdown()
  For i = 0 To ChanCount
    SendLine "PRIVMSG " & ChanName(i) & " :" & GetCount, 1
  Next
  If InStr(1, GetCount(), "Tage") > 0 Then
    TimedCommand "GetCountdown()", 3600
  ElseIf InStr(1, GetCount(), "Spannung") > 0 Then
    TimedCommand "GetCountdown()", 1800
  ElseIf InStr(1, GetCount(), "Alk") > 0 Then
    TimedCommand "GetCountdown()", 120
  ElseIf InStr(1, GetCount(), "auffüll") > 0 Then
    TimedCommand "GetCountdown()", 60
  ElseIf InStr(1, GetCount(), "fertig") > 0 Then
    TimedCommand "GetCountdown()", 30
  ElseIf InStr(1, Getcount(), "Countdown") > 0 Then
    TimedCommand "GetCountdown()", 1
  End If
End Sub

Das läuft soweit auch, nur der TimedCommand eben nicht :(
Jede Stunde (oder auch länger, is ja nur ne Variable) soll der Bot die Restzeit ausgeben.
Ich hoffe ihr könnt mir helfen Smile

MfG
Hirni

Edit: Muss ich das überhaupt über ne Sub machen?
Oder einfach nur:
Code:
TimedCommand "SendLine" ""PRIVMSG " & Chan & " :Zeit: " & GetCount, 2"", 3600

Da bin ich aber überfragt was die ""-Setzung angeht :(
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 "Countdown 1.0a by Sp33d"
  Hook "Chan_Msg"
End Sub

Sub Chan_Msg(Chan, Nick, RegUser, Line)
  If LCase(Param(Line, 1)) = "!cholland" And Chan = "#akekse" Then
    SendLine "PRIVMSG " & Chan & " :Zeit: " & GetCount, 2
  End If
End Sub

    
'TimedCommand "SendLine ""PRIVMSG " & Chan & " :Zeit:  & GetCount", 2", 60  

Function GetCount()
    Dim datThen
    Dim datNow
    Dim lngDifference
    Dim intDays
    Dim intHours
    Dim intMinutes
    Dim intSeconds

    datNow = Now
    datThen = #19/08/2005 16:00:00 PM#    
    lngDifference = DateDiff("s", datNow, datthen)    

    intDays = lngDifference \ 86400
    intHours = (lngDifference - (intDays * 86400)) \ 3600
    intMinutes = (lngDifference - (intDays * 86400) - (intHours * 3600)) \ 60
    intSeconds = (lngDifference - (intDays * 86400) - (intHours * 3600) - (intMinutes * 60))

    If intDays > 0 Then
        GetCount = "Noch " & intDays & " Tag(e), " & intHours & " Stunde(n), " & intMinutes & " Minute(n) sowie " & intSeconds & " Sekunde(n) bis HOLLAAAAND!!!"
'...hier sind noch die elseifs, nur zur Übersicht rausgenommen
    End If
End Function

Ich hab das mal alles etwas verkürzt und rausgenommen was ich nicht brauche.
Ich hoffe jemand kann mir mit dem TimedCommand helfen, den hab ich nach Stunden des Rumprobierens nicht hinbekommen Confused
Und ich hoffe Sp33d hat nichts dagegen, dass ich sein Script verändert hab Cool
guck mal Hirni was ich in der Download-region gefunden habe Wink
Code:
Option Explicit

'Gib hier das komplette Datum an, zu dem du einen
'Countdown haben willst
Const dCountdownDate = "01.01.2005"

'In welche Channel soll die Ausgabe erfolgen
'(mit Kommata trennen; "*" für alle)
Const sChannels = "#angel-bot,#angelbot-portal"

'Welches Format soll die Ausgabe haben?
' $cdate = Countdowndatum Datum (z.B. 1.1.2005)
' $ctime = Countdowndatum Uhrzeit (z.B. 00:00:00)
' $ccomp = Countdowndatum komplett (z.B. 1.1.2005 00:00:00)
' $time  = verbleibende Zeit (z.B. 3h 45m 23s)
Const sTemplate = "(Countdown auf den $cdate) Nur noch $time...!"

'Welcher Text soll nach Ablauf des Countdown ausgegeben werden?
Const sSuccess = "*peng* *platsch* juchhey! *Sylvester-feier*"

Dim nRemainingSec

Sub Init()
  Script "Countdown Script v1.1 by Sp33d"

  If Not IsDate(dCountdownDate) Then
    DontLoadScript "4Kein gültiger Wert für den Countdown angegeben!"
    Exit Sub
  End If

  nRemainingSec = DateDiff("s", Now, dCountdownDate)
  If nRemainingSec > 0 Then Countdown
End Sub

Sub Countdown()
  Dim nDays, nHours, nMinutes, nSeconds, iInterval, sChans, sText, sTime

  nRemainingSec = DateDiff("s", Now, CDate(dCountdownDate))
  
  nSeconds = nRemainingSec

  nDays = nSeconds \ 86400
  nSeconds = nSeconds Mod 86400
  nHours = nSeconds \ 3600
  nSeconds = nSeconds Mod 3600
  nMinutes = nSeconds \ 60
  nSeconds = nSeconds Mod 60

  If Trim(sChannels) = "*" Then
    Dim i
    For i = 0 To ChanCount
      If Len(sChans) = 0 Then
        sChans = ChanName(i)
      Else
        sChans = sChans & "," & ChanName(i)
      End If
    Next
  Else
    sChans = sChannels
  End If

  If nDays > 0 Then
    iInterval = 60 * 30 'alle halbe Stunde
  ElseIf nHours > 0 Then
    iInterval = 60 * 15 'alle 15 Minuten
  ElseIf nMinutes > 10 Then
    iInterval = 60 * 5  'alle 5 Minuten
  ElseIf nMinutes > 2 Then
    iInterval = 45      'alle 45 Sekunden
  ElseIf nMinutes > 0 Then
    iInterval = 15      'alle 15 Sekunden
  ElseIf nSeconds > 10 Then
    iInterval = 5       'alle 5 Sekunden
  ElseIf nSeconds > 0 Then
    iInterval = 1       'sekündlich
  Else
    SendLine "PRIVMSG " & sChans &  " :" & sSuccess, 3
    Exit Sub
  End If

  sTime = IIf(nDays > 0, nDays & "d ", vbNullString) & IIf(nHours > 0, nHours & "h ", vbNullString) & IIf(nMinutes > 0, nMinutes & "m ", vbNullString) & nSeconds & "s"

  sText = Replace(sTemplate, "$cdate", Day(dCountdownDate) & "." & Month(dCountdownDate) & "." & Year(dCountdownDate))
  sText = Replace(sText, "$ctime", Hour(dCountdownDate) & ":" & Minute(dCountdownDate) & ":" & Second(dCountdownDate))
  sText = Replace(Replace(sText, "$ccomp", CDate(dCountdownDate)), "$time", sTime)
  SendLine "PRIVMSG " & sChans & " :" & sText, 3
  TimedCommand "Countdown", iInterval
End Sub
So des is alles ein bissl einfacher ich wünsch dir viel Spaß im UrlaubWink
Referenz-URLs