Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Ergebnis 1 bis 5 von 5
  1. Beiträge anzeigen #1 Zitieren
    Waldläufer Avatar von Hirnschmalz
    Registriert seit
    Oct 2008
    Ort
    hic et nunc
    Beiträge
    160
     
    Hirnschmalz ist offline

    Wink Gothic2 Zeiteinstellung

    Hakuna matata allerseits,

    da ein derzeit aktueller Thread so schön passt, hänge ich mich titelmäßig mal an ...

    Mein hero soll qua modifizierter sleepabit-func neben den üblichen Auflade-Schläfchen
    nach Dialog mit dem questgebenden NPC auch eine Option 'Traum des XYZ' haben.
    Wählt er diese, wird eine völig neue, andere ZEN geladen und hero muss sich in dieser
    fremden Welt behaupten (überleben, Weg zurück finden etc.pp.).
    Am Zielort der ZEN kommt hero zurück in seine Ausgangswelt - soll aber nur 15 Minuten
    'genappt' haben, also während eines kurzen Schläfchens einen (üblen) Traum gehabt haben,
    für den er GARANTIERT länger als 15 Spielminuten gebraucht haben wird.
    Ich muss also die Zeit zurückdrehen.
    Nodrog hatte 2008 ein paar nützliche funcs zum Thema Zeit gepostet ...
    Code:
    func int Wld_GetMinute(var int Hour,var int from,var int till){
        if from >=60	{  return -1;	};    
        if Wld_IsTime(Hour,from+1,Hour,till)	{
    		return Wld_GetMinute(Hour,from+1,till);
        }	else	{	return from;	};
    };
    
    func int Wld_GetHour(var int from,var int till){
        if from >=24	{	return -1;	};
        if Wld_IsTime(from+1,0,till,0)	{
    		return Wld_GetHour(from+1,till);
    	}	else	{	return from;	};    
    };
    
    func int Wld_GetTime(){
        var int h;	h = Wld_GetHour(0,23);
        h = h*60 + Wld_GetMinute(h,0,59);
        h = h + Wld_GetDay() * 1440;
        return h;
    };
    ... die ich auch oft benutze, und das Vorstellen der Zeit funxt auch problemlos:
    Code:
    func void Wld_StellTime(var int plush, var int plusm)	{
    	var int isth;	isth = Wld_GetHour(0,23);
    	var int istm;	istm = Wld_GetMinute(isth,0,59);
    	if istm + plusm > 59	{	isth += 1;
    		if isth > 23	{	print ("Tag plus!");	};
    	};
    	Wld_SetTime(isth + plush, istm + plusm);
    };
    Beim Zurückstellen der Zeit kann das aber ziemlich in die Binsen gehen - was bei Stunden
    und Minuten noch funxt, sorgt bei den Tagen für wirre Ergebnisse ...

    Warum und wie stellt man das ab?
    Geändert von Hirnschmalz (12.05.2019 um 16:48 Uhr)

  2. Beiträge anzeigen #2 Zitieren
    Waldläufer Avatar von Hirnschmalz
    Registriert seit
    Oct 2008
    Ort
    hic et nunc
    Beiträge
    160
     
    Hirnschmalz ist offline

    ... nochmal zur Präzisierung:

    Man kann im dev- (oder Marvin-)Mode per 'set time HH MM) die Weltzeit einstellen -
    ist dabei HH größer 23, springt man einen Tag voran.
    Entsprechend kann man auch mehrere Tage überspringen: 'set time 60 00', z.B.
    Wenn man das aber gemacht hat und geht dann per 'set time -36 00' zurück
    (was im Rahmen eines einzelnen Tages problemlos funxt, also z.B. -5 statt -36),
    kommen total wirre Tageszeiten heraus: Minustage, Minusstunden etc.pp.

    Und das, obwohl man nach 60 h plus in jedem Falle genug Puffer haben
    muss, um 36 h 'zurück' zu kommen ...

    Probiert's mal aus ...

    edit: So, eben ausprobiert: Geht man immer -24 h zurück, geht es problemlos.
    Sobald der Minusbereich über die 24 h hinausgeht, fängt der Ärger an.
    Witzig(?) ist dabei, dass ein Wld_SetTime (00,00) (oder 'set time 00 00') dann
    den gewünschten Tag aber wieder einstellt, wenn auch auf Mitternacht.
    Ziemliches Gehampel.
    Ich wäre dankbar für jeden Hinweis, wie man das eleganter lösen könnte ...
    Geändert von Hirnschmalz (12.05.2019 um 19:59 Uhr)

  3. Beiträge anzeigen #3 Zitieren
    now also in your universe  Avatar von Milky-Way
    Registriert seit
    Jun 2007
    Beiträge
    15.244
     
    Milky-Way ist offline
    Ich dachte,
    set time hh mm
    setzt die Uhrzeit. set time 00 10 springt nicht 10 Minuten in die Zukunft, sondern setzt die Zeit auf 00:10 Uhr nachts. Wenn du zu große Zahlen angibst, wird ggf. 24 Stunden abgezogen, bis es eine brauchbare Uhrzeit ist. Bei Minuszahlen ist aber wohl nichts implementiert, wodurch das Spiel wüsste, welche Uhrzeit du meinst.
    Das hilft dir nun aber vermutlich auch nicht weiter.



    Vielleicht interessant:
    https://forum.worldofplayers.de/foru...1#post14841249
    ginge aber hauptsächlich, wenn du in der Traumwelt keine Uhrzeit brauchst.

  4. Beiträge anzeigen #4 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Zitat Zitat von Milky-Way Beitrag anzeigen
    Wenn du zu große Zahlen angibst, wird ggf. 24 Stunden abgezogen, bis es eine brauchbare Uhrzeit ist.
    'set time 12 00' ist 12 Uhr Mittags, aber 'set time 36 00' ist 12 Uhr Mittags des nächsten Tages.

  5. Beiträge anzeigen #5 Zitieren
    Waldläufer Avatar von Hirnschmalz
    Registriert seit
    Oct 2008
    Ort
    hic et nunc
    Beiträge
    160
     
    Hirnschmalz ist offline

    Problem gelöst !

    Ahoi MatrosInnen,

    habe das Problem recht wie schlecht gelöst.
    Ein bisschen bauernschlau, aber es funxt perfekt - hero kommt genau in die Zeit zurück, aus der er gekommen ist.
    Gibt dann zwar ein sehr kurzes Schläfchen, aber da die Spielzeit schnell vergeht, ist das ohne Belang (man könnte
    noch 15 mins draufpacken, aber who cares).
    Code:
    var int start_day;
    var int start_hour;
    var int start_minute;
    
    func void get_starttime()	{	var int gettime;
    	if !start_day	{	start_day = Wld_GetDay();	};
    	if !gettime	{	gettime = Wld_GetTime();	};
    	if gettime >= 1440	{	
                    gettime -= 1440;	get_starttime();
    	}	else	if gettime >= 60	{	
                    gettime -= 60;	start_hour += 1;	get_starttime();
    	}	else	{	start_minute = gettime;
    	};
    };
    
    func void set_starttime()	{
    	if Wld_GetDay() > start_day	{	
                    Wld_SetTime (-24, 00);	
                    set_starttime();
    	}	else	{	
                    Wld_SetTime (start_hour, start_minute);
    	};
    };
    Wld_SetTime(-24, 00); setzt die Zeit auf 00:00 des vorherigen Tages, also wird das
    ganze einfach iteriert, bis es passt, in den VARs gebunkerte Stunden & Minuten dann
    einfach drübergesetzt.
    Setzt man bei Wld_SetTime größere Minus-Werte als 24, wird es unschön, daher so.

    Danke anyway für's mitdenken, evtl. kann jemand was damit anfangen.
    Geändert von Hirnschmalz (13.05.2019 um 14:52 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide