Gamestudio Links
Zorro Links
Newest Posts
AlpacaZorroPlugin v1.3.0 Released
by kzhao. 05/20/24 20:05
Free Live Data for Zorro with Paper Trading?
by AbrahamR. 05/18/24 13:28
Change chart colours
by 7th_zorro. 05/11/24 09:25
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
3 registered members (7th_zorro, AndrewAMD, TedMar), 1,306 guests, and 4 spiders.
Key: Admin, Global Mod, Mod
Newest Members
Hanky27, firatv, wandaluciaia, Mega_Rod, EternallyCurious
19051 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
[Gelöst] Frage zu Flags2- sehr einfache Tag und Nacht Funktion #421087
04/09/13 20:03
04/09/13 20:03
Joined: Oct 2012
Posts: 22
Austria
W
WeTwoPlays Offline OP
Newbie
WeTwoPlays  Offline OP
Newbie
W

Joined: Oct 2012
Posts: 22
Austria
Ich wollte für eine Tag und Nacht änderung die VISIBLE flag der beiden Sky Entitys setzen, bzw. entfernen, es funktionierte allerdings nicht.
Code:
function time()
{
	while(1)
	{
	wait(-1);
	time += 1;
	}
	if(time>12)
	{
		if(time<12)
		{
			reset(sky_1,VISIBLE);
			set(sky_2,VISIBLE);
			wait(1);
		}
		while(time>12)
		{
			reset(sky_2,VISIBLE);
			set(sky_1,VISIBLE);
			wait(1);
		}
		wait(1);
	}
}



Hier die beiden Entitys:
Code:
ENTITY* sky_1 = 
{
	type = "himmel.png";
	layer = 103;
	u = 0.7;
	v = 0.7;
	scale_x = 0.5;
	scale_y = 0.5;
	tilt = -200;
	flags2 = SKY| DOME | VISIBLE;
}

ENTITY* sky_2 = 
{
	type = "himmel2.png";
	layer = 102;
	u = 0.7;
	v = 0.7;
	scale_x = 0.5;
	scale_y = 0.5;
	tilt = -200;
	flags2 = SKY| DOME ;
}



Könnte es sein dass sich set und reset nicht auf flags2? auswirkt?
Und hat eventuell jemand eine kürzere Variante?

Danke

Last edited by WeTwoPlays; 04/10/13 16:04.
Re: Frage zu Flags2 [Re: WeTwoPlays] #421088
04/09/13 20:37
04/09/13 20:37
Joined: Apr 2005
Posts: 274
austria
Ascalon Offline
Member
Ascalon  Offline
Member

Joined: Apr 2005
Posts: 274
austria
probiers mal so: sky_1.flags2 &= ~SHOW;


my webside : www.ascalon.jimdo.de
Re: Frage zu Flags2 [Re: WeTwoPlays] #421089
04/09/13 20:38
04/09/13 20:38
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline
Senior Expert
Superku  Offline
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
VISIBLE gibt es nicht mehr, nur noch die Flags INVISIBLE (für Level-Entities) und SHOW (für View-Entities).

set und reset sind Makros, die sich, wie bereits von dir bezweifelt, nur auf die gewöhnlichen flags auswirken. Du kannst dir für flags2 selbst solche definieren oder die betreffenden flags direkt setzen, bspw. wie folgt:
sky_1.flags2 |= SHOW; // an
sky_1.flags2 &= ~SHOW; // aus

Deine Funktion "time" ist zudem nicht sonderlich gut durchdacht, nicht nur, dass Variable und Funktionenname gleich heißen, sondern auch, dass der Bereich hinter der while-Schleife niemals ausgeführt wird. Zudem empfehle ich, die Verwendung der wait-Funktion mit negativem Argument zu vermeiden. Wenn ich die Absicht der Funktion korrekt verstehe, lässt sie sich alternativ schreiben wie folgt:

Code:
void do_sky()
{
	var time = 0;
	sky_1.flags2 |= SHOW;
	sky_2.flags2 &= ~SHOW;
	while(1)
	{
		while(time < 12*16) // 16 ticks = 1 Sekunde
		{
			time += time_step;
			wait(1);
		}
		sky_1.flags2 &= ~SHOW;
		sky_2.flags2 |= SHOW;
		time = 0;
		while(time < 12*16)
		{
			time += time_step;
			wait(1);
		}
		sky_1.flags2 |= SHOW;
		sky_2.flags2 &= ~SHOW;
		wait(1);
	}
}



"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
Re: Frage zu Flags2 [Re: WeTwoPlays] #421118
04/10/13 19:29
04/10/13 19:29
Joined: Oct 2012
Posts: 22
Austria
W
WeTwoPlays Offline OP
Newbie
WeTwoPlays  Offline OP
Newbie
W

Joined: Oct 2012
Posts: 22
Austria
Code:
while(1)
	{
		while(time < 12*16) // 16 ticks = 1 Sekunde
		{
			time += time_step;
			wait(1);
		}
		sky_1.flags2 &= ~SHOW;
		sky_2.flags2 |= SHOW;
		time = 0;
		while(time < 12*16)
		{
			time += time_step;
			wait(1);
		}
		sky_1.flags2 |= SHOW;
		sky_2.flags2 &= ~SHOW;
		wait(1); 
	}



vor dem letzen wait(1); fehlt ein time = 0;, sonst blinkt der Nachthimmel(sky_1) nur kurz auf, nicht für 12 Sekunden, wenn ich mir erlauben darf dich zu verbessern.
Logische erklärung: time ist am Ende der Schleife immer noch 12*16, daher wird die erste while(time < 12*16) Schleife ausgelassen, der sky_1 ist ein Tick sichtbar, dann wird der Himmel auf sky_2 gestellt und time auf 0 gestellt.

richtiger Code:
Code:
void do_sky()
{
	var time = 0;
	sky_1.flags2 |= SHOW;
	sky_2.flags2 &= ~SHOW;
	while(1)
	{
		while(time < 12*16) // 16 ticks = 1 Sekunde
		{
			time += time_step;
			wait(1);
		}
		sky_1.flags2 &= ~SHOW;
		sky_2.flags2 |= SHOW;
		time = 0;
		while(time < 12*16)
		{
			time += time_step;
			wait(1);
		}
		sky_1.flags2 |= SHOW;
		sky_2.flags2 &= ~SHOW;
		time = 0; //<-- das entscheidende Stück
		wait(1);
		
	}
}


Re: Frage zu Flags2 [Re: WeTwoPlays] #421119
04/10/13 20:13
04/10/13 20:13
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline
Senior Expert
Superku  Offline
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Das war eine mit Absicht eingebaute Denkaufgabe für dich, und du hast sie mit Bravour gemeistert!


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends

Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1