Seite 1 von 2

Karten X Uhrzeitabhängig verändern

Verfasst: 30. Dez 2009, 11:11
von Morphium
Ich habe gehört, dass das das X auf der Karte angeblich zu verschiedenen Tageszeiten ( z.B. Tag/Nacht) anders aussehen lassen kann,
also dass es sich durchwechselt.
Jetzt wollte ich erstmal wissen ob das stimmt und wenn ja, wie dass denn genau funktioniert.

Danke für die Bemühungen.

Re: Karten X Uhrzeitabhängig verändern

Verfasst: 30. Dez 2009, 14:16
von kaot
ich würde mal behaupten mithilfe von PHP... wie genau kann dir bestimmt einer von den PHP-Jüngern hier sagen ;)

Re: Karten X Uhrzeitabhängig verändern

Verfasst: 30. Dez 2009, 14:19
von Nils
Du erstellst dir ein PHP script welches jenach tageszeit verschiedene Bilder ausgeibt. Dabei muss auf den richtigen Haedder geachtet werden. Dann wird dieses PHP script wie in bild per IMG eingebunden. (bez. über den Style)

Nils

Re: Karten X Uhrzeitabhängig verändern

Verfasst: 1. Jan 2010, 22:29
von Morphium
Ich habe zwar schon etwas mti php gearbeitet aber, es wäre nett wenn mir einer noch ein bisschen mehr zu diese Script schreiben könnte.
Bin damit sonst total überfordert und würde das aber gerne im Style haben.


Danke

Re: Karten X Uhrzeitabhängig verändern

Verfasst: 2. Jan 2010, 04:08
von Bombenpflanze
Ganz banal (sicherlichlich nicht das effektivste) wäre das simple Schema mit Bedinung durch if.
Du fragst ab, welche Uhrzeit es ist und je nach Uhrzeit wird dann per imagecreatefromjpg (oder andres Bildformat) ein von dir vorher zurechtgelegtes Bildchen erstellt/ausgegeben.

Zu Zeit-Funktion gibts hier was und zu Bilderstellung hier.

Re: Karten X Uhrzeitabhängig verändern

Verfasst: 2. Jan 2010, 12:10
von Luko
Also wie von einigen hier schon angemerkt, ist die technisch einfachste Lösung einfach die Tages-Zeit mit if abzufragen und dann das Bild entsprechend als Variable einzubinden mit

if zeit == abend $tageszeit = abend;
elseif zeit == tag $tageszeit = tag;

Header ("Content-type: image/png");
$img_handle = imageCreateFromPNG("$tageszeit.png");

ImagePng ($img_handle);
ImageDestroy ($img_handle);


Und dann halt entsprechend eine tag.png und eien abend.png zur Verfügung stellen.


ABER:
das ist nur die einfachste Lösung und sollte auf jedem Fall noch auf Performance geprüft werden. Denn hier wird bei jeder aktuallisierung der Map das "Bild" neu erstellt. Ich weiss nicht, ob das vernünftig aussehen wird aber als ich mit einem php-bg im mainframe mal herumgetestet hatte, ging es in die Hose.. was natürlich auch an der Größe liegen kann.

Andere Möglichkeit ist natürlich die Erstellung des Bildes wo anders durchzuführen. zB durch Aufruf eines php-scriptes im banner-frame (aktuallisiert das eigentlich, wenn neue Werbung geladen wird?) oder im geöffnetem Item-Frame.. halt etwas, was regelmäßig aber nicht oft aktuallisiert wird.

Dieses hier aufgerufene php-script ändert dann halt einfach den Namen der Bilder.. also rename x.png zu abend.png udn rename tag.png zu x.png und andersherum.

Dies würde ich (ohne jetzt weiter zu überlegen, wo es mehr sinn machen würde) als bild im Item-Frame einfügen.. halt an einer Stelle, die einmalig und nur geladen wird, sobald das Inventar offen ist. Man müsste zwra noch prüfen wie lange das aktuelle X dann noch gecached wird.. aber so in etwa würde man es glaube ich am schlausten machen.

Natürlich geht es per cronjob oder mit anderen Möglichkeiten noch einfacher aber das gehört dann nimmer zu den Basics, die jeder webspace zur Verfügung stellt.

Re: Karten X Uhrzeitabhängig verändern

Verfasst: 2. Jan 2010, 20:25
von Morphium
Danke für die Hilfe,
had das Skript soweit fertig.
Jetzt komme ich zu meinem nächsten Punkt.(Ich weiß ich hör mcih hier an wie ein Kleinkind das alles erst erklärt bekommen muss.)
Wie binde ich das ganze in meine css ein?

Danke nochmals.

P.S.: Ich habs grad mal hochgeladen, und das Skript einfach mal so gestartet. Es bringt keinen Fehler, aber es zeigt auch kein Bild an, ich spiel mal ein bisschen am Quelltext rum..

Re: Karten X Uhrzeitabhängig verändern

Verfasst: 2. Jan 2010, 20:55
von Morphium

Code: Alles auswählen

<?php
$t = localtime (time(),1);
if (($t['tm_hour']<=20) && ($t['tm_hour']>=6))
{$zeit= tag;}
else
{$zeit= abend;}

if ($zeit == abend)
{$tageszeit = abend;}
  elseif ($zeit == tag)
  {$tageszeit = tag;}
    
Header ("Content-type: image/png");
$img_handle = imageCreateFromPNG("$tageszeit.png");

ImagePng ($img_handle);
ImageDestroy ($img_handle);
 
?>
Das hiert ist mein derzeitiger Quellcode. Kann mri einer sagen wo der Fehler ist? Bin zu doof ihn zu finden.

Re: Karten X Uhrzeitabhängig verändern

Verfasst: 2. Jan 2010, 22:42
von Morphium
Hätte auch vlt ne möglichkeit per PHP das ganze so zu gestalten, dass nit immer neu berechnet wird ( is zwar etwas aufwenig aber ein nur eine txt datei mehr.
falls ich das mit dem bild noch hingrieg dann werd ich alles hier drin veröffentlichen.
aber dazu brauch ich erstmal die fakten wie ich das einbinde und wieso da noch kein bild angezeit wird....

Re: Karten X Uhrzeitabhängig verändern

Verfasst: 4. Jan 2010, 22:42
von Luko
also ich weiss nicht warum es bei dir nicht läuft. Ich habe mal deinen Quelltext kopiert (etwa sgekürzt) und in ein php-script bei mir eingefügt.

Code: Alles auswählen

<?php
$t = localtime (time(),1);
if (($t['tm_hour']<=20) && ($t['tm_hour']>=6))
{$zeit= tag;}
else
{$zeit= abend;}

   
Header ("Content-type: image/png");
$img_handle = imageCreateFromPNG("$zeit.png");

ImagePng ($img_handle);
ImageDestroy ($img_handle);

?>
bei mir funktioniert es einwandfrei das Bild anzuzeigen. Du hast deine tag- und abend-datei auch im png-format vorliegen nehme ich an? php funktioniert auf deinem webspace auch?

Wenn ja, poste mal bitte quelltext und link zur php-datei.


Einfügen kannst du das dann mit:

img[src$="user.gif"] { display: block; width: 0; background: url(bild.php); no-repeat; padding-left: 50px; overflow: hidden; }

Re: Karten X Uhrzeitabhängig verändern

Verfasst: 5. Jan 2010, 07:29
von Nils
Ich glaube da fehlen einfach noch anführungszeichen:

Code: Alles auswählen

if (($t['tm_hour']<=20) && ($t['tm_hour']>=6))
{$zeit= "tag";}
else
{$zeit= "abend";}
Wundert mich das es ohne überhaupt geht.

Nils

Re: Karten X Uhrzeitabhängig verändern

Verfasst: 5. Jan 2010, 09:04
von bwoebi
Die Variable bei ImageCreatefromPNG ist ebenfalls in Anführungszeichen was nicht sein Soll... Schreibt dort ($Zeit.".png"); hin sonst klappt's nicht...

Re: Karten X Uhrzeitabhängig verändern

Verfasst: 5. Jan 2010, 09:07
von Nils
Variablennamen in doppelten anfürungszeichen werden aufgelöst @bwoebi das sollte also gehen.

Nils

Re: Karten X Uhrzeitabhängig verändern

Verfasst: 5. Jan 2010, 09:48
von bwoebi
Ja, wenn aber hier wird der Punkt als Endung gebraucht und nicht als Trenner...
Und der PHP-Parser versteht das falsch...

Re: Karten X Uhrzeitabhängig verändern

Verfasst: 5. Jan 2010, 11:55
von Luko
Bevor ihr streitet und euch so sicher seid, dass es so nicht geht... testet es halt? Das mit den fehlenden Anführungsstrichen war auch mein erster Gedanke... aber ein Test hat mir gezeigt, dass PHP hier wohl erkennt, dass es sich um einen String handelt. Bei mir jedenfalls. Klingt komisch, ist aber so.

bwoebi das stimmt so nicht. PHP erkennt hier schon korrekt, wo die Variable endet. Denn der Punkt innerhalb des strings wird auch als Punkt erkannt und nicht als zusammensetzendes Zeichen wie ausserhalb. Hier liegt also definitiv kein Fehler vor. Ich habe dne unten geposteten quelltext wie gesgat getestet und er tut es problemlos. Kann sein, dass er beim TE wegen der Strings nicht geht aufgrund der php version aber das wäre schon ein Zufall irgendwie, denn bei mir geht es wie gesagt.