anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Fr 19 Apr, 2024 11:40

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: InGame-Datum-Wechsel
BeitragVerfasst: Di 19 Jan, 2010 12:55 
Offline
Held
Held

Registriert: Mo 23 Jan, 2006 13:15
Beiträge: 222
Hallo Freunde,

Ich habe die Suche benutzt, doch entweder nicht richtig oder aber mir wurde das, was ich suche, nicht angezeigt.
Ich möchte (wie viele Andere es bereits bei sich schon laufen haben), dass mein Ingame-Datum um 0 Uhr auf das nächste Datum springt, und nicht, wie es jetzt ist, mit jedem neuen Spieltag. Habe bei mir zugelassen, dass es alle 4h n neuen Tag gibt, - demzufolge ist alle 4 Stunden das Ingame-Datum natürlich um einen Tag vorgerückt.
Ihr wisst, was ich meine, nicht wahr?
Ich muss das in der configuration machen, hab ich Recht?
Oder in der common bei gamedate?


$this->bbcode_second_pass_code('', '// Gamedate-Mod by Chaosmaker
function getgamedate() {
$date = explode('-',getsetting('gamedate','0005-01-01'));
$find = array('%Y','%y','%m','%n','%d','%j');
$replace = array($date[0],sprintf('%02d',$date[0]%100),sprintf('%02d',$date[1]),(int)$date[1],sprintf('%02d',$date[2]),(int)$date[2]);
return str_replace($find,$replace,getsetting('gamedateformat','%Y-%m-%d'));
}')
Das mal das, was bei mir steht... Damit hat es sicher zu tun *flöt*...

Könnte da Hinweise gebrauchen
Vielen lieben Dank

Gruß, verni :wink:

_________________
»Esgorath«

Source


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: InGame-Datum-Wechsel
BeitragVerfasst: Di 19 Jan, 2010 14:17 
Offline
Held
Held

Registriert: Fr 17 Okt, 2008 20:06
Beiträge: 253
Geschlecht: Männlich
LoGD: off
Hmm.. ich weiß nur wie man das aktuelle Datum ausgibgt (also echtzeit datum)

$this->bbcode_second_pass_code('', 'date('d.m.Y')')

das würde für heute

19.01.2010 ausspucken..

_________________
Wenn ihr mir sagt wie ich es als Datei hochlade, dann kann ich die Source hochladen die ihr wollt .D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: InGame-Datum-Wechsel
BeitragVerfasst: Di 19 Jan, 2010 14:22 
Offline
Held
Held

Registriert: Mo 23 Jan, 2006 13:15
Beiträge: 222
Das mein ich leider nicht. Ich will ja nicht das heutige Datum, sondern mein "Themendatum", verstehst du?
Das muss doch irgendwie gehen?
Hab nun auch in der setnewday die Anzeige gesehen, aber leider... guck ich da einfach nur doof -.-

_________________
»Esgorath«

Source


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: InGame-Datum-Wechsel
BeitragVerfasst: Di 19 Jan, 2010 14:44 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
In common.php:
$this->bbcode_second_pass_code('', '$arrMonth = array( );

$arrMonth[1] = 'Januar';
$arrMonth[2] = 'Februar';
$arrMonth[3] = 'März';
$arrMonth[4] = 'April';
$arrMonth[5] = 'Mai';
$arrMonth[6] = 'Juni';
$arrMonth[7] = 'Juli';
$arrMonth[8] = 'August';
$arrMonth[9] = 'September';
$arrMonth[10] = 'Oktober';
$arrMonth[11] = 'November';
$arrMonth[12] = 'Dezember';')
$this->bbcode_second_pass_code('', 'function setgamedate() {
$wann = 654; //Das Datum vor wie vielen Jahren?
$start = mktime(0,0,0,1,1,2006); //Irgendwo solls ja anfange, ne?
$jetzt = time(); //Momentane Zeit
$diff = getdate( $jetzt - $start );//Die Differenz

$tag = 0 + $diff['mday']; //Der Tag
$monat = 0 + $diff['mon'];//... Monat
$jahr = $diff['year'] - $wann;//und das Jahr

$date = sprintf( '%04d-%02d-%02d' , $jahr , $monat , $tag );
savesetting( 'gamedate' , $date );
}')

Zudem, ersetze die Funktion getgamedate mit folgender:
$this->bbcode_second_pass_code('', 'function getgamedate() {
global $arrMonth;
$date = explode('-',getsetting('gamedate','0005-01-01'));

$date[1] = str_replace( '0' , '' , $date[1] );
if ( substr( $date[1] , 0 , 1 ) == '0' ) {
$date[1] = substr( $date[1] , 1 , 1 );
}
if ( substr( $date[2] , 0 , 1 ) == '0' ) {
$date[2] = substr( $date[2] , 1 , 1 );
}

return = $date[2].'. '.$arrMonth[$date[1]].' '.$date[0];
}')
In setnewday.php ersetze:
$this->bbcode_second_pass_code('', '// Gamedate-Mod by Chaosmaker
if(getsetting('activategamedate', 0) == 1) {
$date = getsetting('gamedate', '0000-01-01');
$date = explode('-', $date);
$date[2]++;
switch($date[2]) {
case 32:
$date[2] = 1;
$date[1]++;
break;
case 31:
if(in_array($date[1], array(4, 6, 9, 11))) {
$date[2] = 1;
$date[1]++;
}
break;
case 30:
if($date[1] == 2) {
$date[2] = 1;
$date[1]++;
}
break;
case 29:
if($date[1] == 2 && ($date[0] % 4 != 0 || ($date[0] % 100 == 0 && $date[0] % 400 != 0))) {
$date[2] = 1;
$date[1]++;
}
}
if($date[1] == 13) {
$date[1] = 1;
$date[0]++;
}
$date = sprintf('%04d-%02d-%02d', $date[0], $date[1], $date[2]);
savesetting('gamedate', $date);
}')
Mit:
$this->bbcode_second_pass_code('', 'if(getsetting('activategamedate', 0) == 1) {
setgamedate();
}')

Das ganze ist inzwischen ungetestet, und bereits etwa 2 Jahre alt. Aber vielleicht funktionierts ja.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: InGame-Datum-Wechsel
BeitragVerfasst: Di 19 Jan, 2010 15:04 
Offline
Held
Held

Registriert: Mo 23 Jan, 2006 13:15
Beiträge: 222
Ich glaub, so ganz haut es noch nicht hin. Das einzigste, was sich geändert hat, ist der Monatsname, der ausgeschrieben dasteht.
Ansonsten blieb das Datum wie es war. Hatte es in der Db bei settings mal auf 0000-00-00 eingestellt, aber das hatte auch nichts gebracht.


_________________
»Esgorath«

Source


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: InGame-Datum-Wechsel
BeitragVerfasst: Di 19 Jan, 2010 15:27 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Du musst natürlich auch noch darauf warten, dass die setnewday.php ausgeführt wird. Also wenn dein nächster regulärer Tag / Tagesabschnitt beginnt. Erst da wird das Datum neu gesetzt.
Theoretisch könntest du die Funktion setgamedate(); natürlich auch einfach in die common.php setzen, sofern die neuen Tage / Tagesabschnitte nicht direkt um 00 / 4 / 8 / 12 / 16 / 20 Uhr beginnen, wäre das sogar etwas sinnvoller. Aber eigentlich ist's egal.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: InGame-Datum-Wechsel
BeitragVerfasst: Di 19 Jan, 2010 16:10 
Offline
Held
Held

Registriert: Mo 23 Jan, 2006 13:15
Beiträge: 222
Schon fast gut (glaube)
Nur stimmen die Werte nicht.
Ich habe bei dem $wann 289 als Diff zum Jahre 2010 eingetragen (was bei $start steht).
Normalerweise hätte mir das Jahr 1721 angezeigt werden sollen, tat es aber nicht, sondern das Jahr 1685.
Was eine Diff von 325 ergibt. Nicht der Wert, den ich eingetragen habe ...
Seltsamer weise blieb mein "Datum, sprich 19. Januar, erhalten. (?)


$this->bbcode_second_pass_code('', 'function setgamedate() {
$wann = 289; //Das Datum vor wie vielen Jahren?
$start = mktime(0,0,0,1,1,2010); //Irgendwo solls ja anfange, ne?
$jetzt = time(); //Momentane Zeit
$diff = getdate( $jetzt - $start );//Die Differenz

$tag = 0 + $diff['mday']; //Der Tag
$monat = 0 + $diff['mon'];//... Monat
$jahr = $diff['year'] - $wann;//und das Jahr

$date = sprintf( '%04d-%02d-%02d' , $jahr , $monat , $tag );
savesetting( 'gamedate' , $date );
}')
Wo hakt es noch?

_________________
»Esgorath«

Source


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: InGame-Datum-Wechsel
BeitragVerfasst: Di 19 Jan, 2010 16:58 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Zur Zeit hat das Skript noch das Gefühl, dass es mit dem Jahr 1970 als Basis arbeiten soll. Weiter zurück geht der UNIX-Timestamp leider nicht. Ich habe ja gesagt, dass das Ganze bereits sehr alt ist, und absolut nicht durchdacht.

Ersetze
$this->bbcode_second_pass_code('', ' $jahr = $diff['year'] - $wann;//und das Jahr')
Mit
$this->bbcode_second_pass_code('', ' $jahr = date( 'Y' ) - $wann;//und das Jahr')


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: InGame-Datum-Wechsel
BeitragVerfasst: Di 19 Jan, 2010 17:04 
Offline
Held
Held

Registriert: Mo 23 Jan, 2006 13:15
Beiträge: 222
Das Kuriose ist, ich habe nun anstelle von 289 ($wann) die Zahl 249 eingetragen (als Differenzwert) - und nun blieb mir das Jahr, was ich mir wünschte, erhalten. Ich werd mal noch ein paar Tage abwarten, was da jetzt passiert. Ansonsten versuche ich mich an deinem letzten Tipp.


EDIT: .... Leider springt er mir bei Neutag sofort auf einen weiteren Tag.
In meiner Datei steht es so:


$this->bbcode_second_pass_code('', 'function setgamedate() {
$wann = 249; //Das Datum vor wie vielen Jahren?
$start = mktime(0,0,0,0,0,2010); //Irgendwo solls ja anfange, ne?
$jetzt = time(); //Momentane Zeit
$diff = getdate( $jetzt - $start );//Die Differenz

$tag = 0 + $diff['mday']; //Der Tag
$monat = 0 + $diff['mon'];//... Monat
$jahr = $diff['year'] - $wann;//und das Jahr

$date = sprintf( '%04d-%02d-%02d' , $jahr , $monat , $tag );
savesetting( 'gamedate' , $date );
}')

Falsch??

_________________
»Esgorath«

Source


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: InGame-Datum-Wechsel
BeitragVerfasst: Fr 22 Jan, 2010 01:23 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 01 Mai, 2007 13:57
Beiträge: 1634
Wohnort: Dortmund.
Geschlecht: Männlich
LoGD: Lokal.
Skype: josh.hoiul
Wieso so viel Code? :?

Mach in der "setnewday.php" doch einfach eine Abfrage, ob wir in Real 0 Uhr haben.
Sollte dies "wahr" sein, wird das Datum um einen Tag verlängert.
Sollte es "unwahr" also "falsch" sein, wird gewartet, bis wir 0 Uhr haben.

Ich hoffe, ich konnte helfen. (Und hoffe, ich habe den Thread nicht falsch verstanden. :D)

_________________
Never change a running system. Bullshit! ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: InGame-Datum-Wechsel
BeitragVerfasst: Fr 22 Jan, 2010 10:56 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Und dann, wenn um 0 Uhr mal niemand Online ist, wird ein neuer Tag übersprungen.

Ich würde das sowieso anders ansetzen. Warum eine setgameday verwenden, wenn man sich sowieso auf reale Tage beziehen will? Es reicht, wenn wir hier die getgamedate() bearbeiten:

$this->bbcode_second_pass_code('', 'function getgamedate() {
# Get today's date
$date = explode('-', date('Y-m-d'));
# Calculate new year
$date[0] = $date[0]-getsetting('year_difference', 0);

return implode('-', $date);
}')

Das kann - und sollte man - noch um Formatierungsmöglichkeiten erweitern, so dass man das Datum auch mal "deutsch" ausgeben kann (Also d. m. Y), oder wahlweise mit ausgeschriebenem Monat...
Der Nachteil dieser Funktion ist: Die Wochentage stimmen natürlich je nach Differenz nicht überein. Und die Schalttage ebenso nicht. Letzteres Problem kann man umgehen, in dem man nur Differenzen abzieht, die durch 400 Teilbar sind, das schränkt aber die Möglichkeiten ziemlich ein. Und die richtigen Wochentage könnte man sich über die Wochentags-Formel berechnen lassen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: InGame-Datum-Wechsel
BeitragVerfasst: So 24 Jan, 2010 11:02 
Offline
Held
Held

Registriert: Mo 23 Jan, 2006 13:15
Beiträge: 222
Ich hab das dann schlussendlich ganz stinkefaul anders gemacht.
Habe date("G:i") genommen und mein gewünschtes Jahr via Hand eingetragen.
Ich weiß, unschön.... aber erstmal tut es das *räusper* ;)

_________________
»Esgorath«

Source


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 33 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum