Seite 2 von 5

Re: Countdown

Verfasst: 18.10.2009, 17:39
von InvaderX
Könnte man das Script umschreiben das man auch mehrere Countdowns laufen lassen kann?

Re: Countdown

Verfasst: 18.10.2009, 22:27
von 1. FC Keller
Ankündigung:

Code: Alles auswählen

<script language="javascript">function countDown(cdID){var jetztZeit=Date.parse(new Date()); a=parseInt((endZeit-jetztZeit)/1000); min=parseInt(a/60); sec=a%60; min=min<10?("0"+min):min; sec=sec<10?("0"+sec):sec; document.getElementById("countdown"+cdID).innerHTML=min+":"+sec; if(a>0)setTimeout("countDown("+cdID+")", 100);} </script>
Chatbefehl:

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); document.write('<span id="countdown'+CountDownID+'" style='position:fixed;right:5px;bottom:5px;'></span>'); var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID);</script>

Re: Countdown

Verfasst: 19.10.2009, 00:37
von InvaderX
Leider funktioniert das garnicht, ich hab mal was weggelassen und jetzt kann ich zwar 2 Countdowns laufen lassen nur der letzte Countdown den man startet gilt die zeit auch für die davor laufenden Countdowns. Also sieh nehmen immer die zeit von dem letzt eingegeben Countdown an. In der Ankündigung habe ich den oben genanten Teil rein gemacht und nix verändert.

Chatbefehl /count

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); document.write('<span id="countdown'+CountDownID+'"></span>'); var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID);</script>

Re: Countdown

Verfasst: 19.10.2009, 12:41
von 1. FC Keller
oh, stimmt... die Zeitvariablen müssen auch übergeben werden damit mehrere unterschiedliche möglich sind.

Ankündigung:

Code: Alles auswählen

<script language="javascript">function countDown(cdID, ez){var jetztZeit=Date.parse(new Date()); a=parseInt((ez-jetztZeit)/1000); min=parseInt(a/60); sec=a%60; min=min<10?("0"+min):min; sec=sec<10?("0"+sec):sec; document.getElementById("countdown"+cdID).innerHTML=min+":"+sec; if(a>0)setTimeout("countDown("+cdID+", "+ez+")", 100);} </script>
Chatbefehl:

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); document.write('<span id="countdown'+CountDownID+'"></span>'); var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID, endZeit);</script>
leider mangels zeit wieder ungetestet... versuchs einfach mal.

Re: Countdown

Verfasst: 19.10.2009, 13:18
von Linus
Kleiner Fehler im Chatbefehl ;) im document.write wurde beim </span> der / nicht escapet. Korrekt müsste es heißen:

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); document.write('<span id="countdown'+CountDownID+'"><\/span>'); var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID, endZeit);</script>
Diese Version funzt, habs getestet^^ Ohne das escapen gehts nicht.

//EDIT: Habe das ganze nun mal so erweitert, das auch Stunden separat angezeigt werden. Dazu muss folgenes in die Ankündigung, der Chatbefehl bleibt gleich:

Code: Alles auswählen

<script language="JavaScript" type="text/javascript">function countDown(cdID, ez){var jetztZeit=Date.parse(new Date()); a=parseInt((ez-jetztZeit)/1000); h=parseInt(a/3600); min=parseInt((a/60)-60*h);	sec=a%60; h=h<10?("0"+h):h;	min=min<10?("0"+min):min; sec=sec<10?("0"+sec):sec; document.getElementById("countdown"+cdID).innerHTML=h+":"+min+":"+sec; if(a>0){	setTimeout("countDown("+cdID+", "+ez+")", 100);}}</script>

Re: Countdown

Verfasst: 19.10.2009, 15:41
von InvaderX
Suuuper ich danke euch für eure Zeit!

Re: Countdown

Verfasst: 19.10.2009, 18:58
von InvaderX
Hehe ich mal wieder :lol: Hab noch ne Idee vieleicht kann man das ja sogar realisieren. Ich hab ein Bild gemacht wie es bei mir jetzt aussieht, Punkt 1. Und zu der Idee ob man die Countdows in der Online-Liste runterzählen könnte, Punkt 2. siehe Bild (könnte ein wenig laden ist eine bmp Datei)

Mein Chatbefehl sieht so aus:

Code: Alles auswählen

<div style="position:fixed; bottom:1px; left:1px; background-color:#D3D3D3">c1 %me%-><script language="javascript">var CountDownID=parseInt(Math.random()*1000); document.write('<span id="countdown'+CountDownID+'"><\/span>'); var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID, endZeit);</script>
Ich habe mehre Chatbefehle angelegt was auch nicht schlim ist wie man auf dem Bild sehen kann habe ich vor den Namen die Kennung Chatbefehl gesetzt damit der jenige immer weiß ach mit dem Befehl hab ich den gestartet und kann somit den wieder neu laufen lassen. Zudem habe ich die Position bei den jeweiligen Chatbefehlen geändert damit sieh sich nicht überlappen.

Re: Countdown

Verfasst: 21.10.2009, 18:28
von InvaderX
Also ich habe mal mir das mit dem Iframe in der ol angeschaut und ich denke es wäre machbar und habe schon was probiert aber nur mit wenig erfolg. Habe den Ankündigungsteil so gemacht:

Code: Alles auswählen

<script language="JavaScript" type="text/javascript">function countDown(cdID, ez){var jetztZeit=Date.parse(new Date()); a=parseInt((ez-jetztZeit)/1000); h=parseInt(a/3600); min=parseInt((a/60)-60*h);   sec=a%60; h=h<10?("0"+h):h;   min=min<10?("0"+min):min; sec=sec<10?("0"+sec):sec; {parent.rightFrame.document.body.innerHTML=h+":"+min+":"+sec+ parent.rightFrame.document.body.innerHTML;}; if(a>0){   setTimeout("countDown("+cdID+", "+ez+")", 100);}}</script>
Der Countdown wird zwar oben über derzeit raum angezeigt und läuft auch runter, nur er wiederholt sich stendig dahinter immer wieder bis die zeit vom Countdown abgelaufen ist.

Sieht so dan aus:
Bild

Re: Countdown

Verfasst: 21.10.2009, 19:59
von 1. FC Keller
man muss schon ein tag in der onlineliste anlegen, dessen inhalt ausgetauscht wird... jedes mal den kompletten HTML-Code des ganzen Frames zu ersetzen hat etliche nachteile, unter anderem dass eventuelle bilder in der onlineliste bei jedem user 10mal in der sekunde neu laden... das zwingt wkhost im Handumdrehen in die Knie.

Code: Alles auswählen

<script language="JavaScript" type="text/javascript">function countDown(cdID, ez){var jetztZeit=Date.parse(new Date()); a=parseInt((ez-jetztZeit)/1000); h=parseInt(a/3600); min=parseInt((a/60)-60*h);   sec=a%60; h=h<10?("0"+h):h;   min=min<10?("0"+min):min; sec=sec<10?("0"+sec):sec; {parent.rightFrame.document.getElementById("countdown"+cdID).innerHTML=h+":"+min+":"+sec}; if(a>0){   setTimeout("countDown("+cdID+", "+ez+")", 100);}else{parent.rightFrame.document.getElementById("countdown"+cdID).style.display="none"}}</script>
Chatbefehl:

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); parent.rightframe.document.body.innerHTML='<span id="countdown'+CountDownID+'"><\/span>'+parent.rightFrame.document.body.innerHTML; var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID, endZeit);</script>
ungetestet.

Re: Countdown

Verfasst: 21.10.2009, 20:08
von InvaderX
getestet passiert garnix

Re: Countdown

Verfasst: 21.10.2009, 22:56
von Linus
Ähm... Wenn ich mich nicht vergucke gibt es in dem Script kein if, das die { und } (die falsch gesetzt wurden, vor ein ; z.B.) rechtfertigt. Zudem finde ich es ungünstig, das der Countdown ohne Meldung ausgeblendet wird. Der Fehler, das es nicht funktioniert, liegt im Chatbefehl, wo statt rightFrame nur rightframe steht (ist ja case-sensitive). Meine korrigierte Version funktioniert, blendet die Countdowns untereinander ein (div statt span) und erzeugt ein alert, wenn ein Countdown endet. Bleibt noch das Problem, das ein Countdown beim reconnect verschwindet. Es wäre also vielleicht nicht verkehrt, zu prüfen, ob er nach wie vor in der OL steht, oder ihn in den vom reconnect nicht beeinflussten Eingabeframe zu setzen...

Hier erstmal die korrigierte Version (allerdings als JS-Datei)

Code: Alles auswählen

function countDown(cdID, ez){
	var jetztZeit=Date.parse(new Date()); 
	a=parseInt((ez-jetztZeit)/1000); 
	h=parseInt(a/3600); 
	min=parseInt((a/60)-60*h);   
	sec=a%60; 
	h=h<10?("0"+h):h;
	min=min<10?("0"+min):min; 
	sec=sec<10?("0"+sec):sec; 
	parent.rightFrame.document.getElementById("countdown"+cdID).innerHTML=h+":"+min+":"+sec; 
	if(a>0){
		setTimeout("countDown("+cdID+", "+ez+")", 100);
	}else{
		parent.rightFrame.document.getElementById("countdown"+cdID).style.display="none";
		alert("Countdown abgelaufen!");
	}
}
Chatbefehl:

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); parent.rightFrame.document.body.innerHTML='<div id="countdown'+CountDownID+'"><\/div>'+parent.rightFrame.document.body.innerHTML; var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID, endZeit);</script>

Re: Countdown

Verfasst: 22.10.2009, 00:01
von InvaderX
Super das ist der Hammer :D

Re: Countdown

Verfasst: 22.10.2009, 19:30
von TauchBlubba
Huhu, echt cool, eine kleine Änderung würd ich gern vornehmen:

Wenn man eine zweiten Countdown startet, das dieser dann nicht unter dem ersten steht, sondern sich der erste auf die neue Zeit aktualisiert. Ah ich hasse erklären :P

Danke schonmal :D


P.s die Chat befehle sind zu klein :( Kann Webkicks die Zeichenanzahl nicht erhöhen?

Re: Countdown

Verfasst: 22.10.2009, 22:50
von InvaderX
Wenn jemand oft einen Countdown in Minuten startet kann er diesen Chatbefehl nutzen. Dann läuft die Zeit ab nach den eingegeben Minuten.

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); parent.rightFrame.document.body.innerHTML='<div id="countdown'+CountDownID+'"><\/div>'+parent.rightFrame.document.body.innerHTML; var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*60*1000);countDown(CountDownID, endZeit);</script>

Re: Countdown

Verfasst: 23.10.2009, 11:29
von hamigra
Linus hat geschrieben:Chatbefehl:

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); parent.rightFrame.document.body.innerHTML='<div id="countdown'+CountDownID+'"><\/div>'+parent.rightFrame.document.body.innerHTML; var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID, endZeit);</script>
@Linus
Könnte man eventuell in den Chatbefehl noch einfügen wer ihn nutzen darf?
Irgendwie so... if(myStatus>2), so daß ihn nur Admins nutzen können?