Gamestudio Links
Zorro Links
Newest Posts
AlpacaZorroPlugin v1.3.0 Released
by kzhao. 05/22/24 13:41
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
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
3 registered members (Akow, TipmyPip, tomaslolo), 788 guests, and 11 spiders.
Key: Admin, Global Mod, Mod
Newest Members
AemStones, LucasJoshua, Baklazhan, Hanky27, firatv
19055 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
Trigger trigged nicht und TEXT macht nicht das was ich will. #246625
01/15/09 21:47
01/15/09 21:47
Joined: Aug 2005
Posts: 512
Bayern
Schmerzmittel Offline OP
User
Schmerzmittel  Offline OP
User

Joined: Aug 2005
Posts: 512
Bayern
Hallo.

Nach einigem herumprobieren komm ich nicht drauf.

Ich habe einen Text. Dieser Text soll, wenn der Spieler näher kommt, langsam einblenden.

Aber das Script funktioniert nicht. Ich kann nur den Wert manuel über die Console ändern, und selbst dann erscheint der Text ganz plötzlich. Aber er soll ja eingeblendet werden.

Per Debugging habe ich festgestellt, dass der Trigger(mdl mit action, den Wert nicht ändert).

Hier mal das Script. Wäre nett, wenn mir jemand weiterhelfen könnte.

Code:

	TEXT* Quest_Beschreibung_01 =
{ 
	
	 
    pos_x = 350; 
    pos_y = 250;
    layer = 3; 
    font = arial_font; // vorher definierter Font
    strings = 40;
    string = QUESTNAME_01;
    flags = VISIBLE | TRANSLUCENT;
    
   
    

} 



void Quest_trigger_01()
{
	
if(QuestsTutorial_01 == 1){wait(1);}
	
	if((vec_dist(my.x, Hero.x) <= 500) && (QuestsTutorial_01 == 0))
	{
		QuestsTutorial_01 = 1;
 	}
} 	



void QuestLog()
{

	
	//=================================//
	//Quest 01
	if(QuestsTutorial_01 == 0)
	{
		Quest_Beschreibung_01.alpha = 0;
		//Quest_Beschreibung_01.flags &= ~ VISIBLE;
		
	}
	if(QuestsTutorial_01 == 1)
	{
		while(Quest_Beschreibung_01.alpha <100)
		{
			Quest_Beschreibung_01.alpha += 3 * time_step;
		}
	}

	
	
}
 



QuestLog() wird in dem Playerscript in einer Schleife ausgeführt. Ich habe es aber auch schon als initialisierung probiert.

Bitte helft mir *Buähhhhh*


Schmerzmittel


A7 Com V7.80
Re: Trigger trigged nicht und TEXT macht nicht das was ich will. [Re: Schmerzmittel] #246633
01/15/09 23:00
01/15/09 23:00
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Und wo wird quest_trigger aufgerufen? Ich werde aus dem ganzen Script nicht schlau.
Wenn es um den Engine-eigenen Trigger geht, ist das eine ziemlich komplexe Kiste, die Du mindestens einmal komplett als eigenständiges Skript ausprobieren solltest.
Und zwar so vereinfacht, dass es nur ein beep; auslösen soll und danach nichts mehr.

"Dieser Text soll, wenn der Spieler näher kommt, langsam einblenden. "
Soll er entsprechend der Nähe einblenden, oder soll er einmal erkennen, dass sich der Spieler genähert hat und ein Aktion starten, die den Text einblendet?

Dies Alles sind mindest 3 einezlne Funktionen, die erstmal alle für sich allein funktionieren sollten - nacht alles auf einmal versuchen. laugh

Re: Trigger trigged nicht und TEXT macht nicht das was ich will. [Re: Pappenheimer] #246655
01/16/09 07:49
01/16/09 07:49
Joined: Dec 2008
Posts: 271
Saturnus Offline
Member
Saturnus  Offline
Member

Joined: Dec 2008
Posts: 271
Originally Posted By: Schmerzmittel
Code:
while(Quest_Beschreibung_01.alpha <100)
{
	Quest_Beschreibung_01.alpha += 3 * time_step;
}

An dieser Stelle fehlt jedenfalls ein wait(). Dadurch wird der Panel innerhalb nur eines Frames eingeblendet.

Aber wenn, wie du schreibst, QuestLog() schon in einer Schleife aufgerufen wird, ist obige Schleife ja im Prinzip sowieso überflüssig? : )

Re: Trigger trigged nicht und TEXT macht nicht das was ich will. [Re: Saturnus] #246664
01/16/09 09:56
01/16/09 09:56
Joined: Oct 2003
Posts: 312
Lüneburg, Germany
Gnometech Offline
Senior Member
Gnometech  Offline
Senior Member

Joined: Oct 2003
Posts: 312
Lüneburg, Germany
Hallo!

Das fehlende wait sorgt in jedem Fall dafür, dass der Text nicht so einblendet, wie er soll.

Und was den Trigger angeht: Wird diese Funktion denn in einer Schleife aufgerufen? Oder ist dies die Event Funktion des Trigger Events?

In letzterem Fall musst Du darauf achten, auch bei der c_move Funktion den entsprechenden ACTIVATE_TRIGGER Flag zu setzen und beide Trigger Radien müssen positiv sein.

Solltest Du auf das Event verzichten (und danach sieht es aus, weil Du die Distanz manuell prüfst), dann muss dies auch in einer Schleife geschehen! Bzw. die Funktion muss aufgerufen werden und dann warten BIS der Spieler nahe genug ist, also am besten in einer WHILE Schleife mit eingebautem wait.

Alles klar?

Gnometech


Download our playable Movement & Interaction Tutorial for 3DGS here:
http://www.puppenheim.org/MITutorial.zip
Re: Trigger trigged nicht und TEXT macht nicht das was ich will. [Re: Gnometech] #246716
01/16/09 19:04
01/16/09 19:04
Joined: Aug 2005
Posts: 512
Bayern
Schmerzmittel Offline OP
User
Schmerzmittel  Offline OP
User

Joined: Aug 2005
Posts: 512
Bayern
Ach herje...danke für die Antworten.


Also zu dem fehlenden wati(1). Das hatte ich nachträglich reingesetzt.

Ähm...an sich sollte es ja nur so sein:

MDL hat eine Action, diese Action soll einen Wert auf 1 setzen und wenn der Wert auf eins ist, setzt der Text ein.


Ich weiß, etwas doof geschrieben.

Nun zu der Frage mit dem Trigger.
Muss ich für eine action, welche als Trigger dienen soll, einen Trigger-Flag setzen? Geht das nicht ohne. Also, dass die Funktion prüft, wie weit der Spieler weg ist, und wenn er eine bestimmte position erreicht hat, setzt sie den Wert auf eins.


Wie dem auch sei. Danke schon mal für die Antworten. Ich werde mir das nochmals anschauen. Wenns dann immer noch nicht will, melde ich mich nochmal.


Schmerzmittel


A7 Com V7.80
Re: Trigger trigged nicht und TEXT macht nicht das was ich will. [Re: Schmerzmittel] #246719
01/16/09 19:27
01/16/09 19:27
Joined: Aug 2005
Posts: 512
Bayern
Schmerzmittel Offline OP
User
Schmerzmittel  Offline OP
User

Joined: Aug 2005
Posts: 512
Bayern
Sorry für Doppelpost, aber so wirds sauberer.


Also ich hab nochmals getestet.


Zu -> QuestLog()
Wenn ich per Console den Wert manuel auf 1 setze, dann wird der Text jetzt schön eingeblendet. Danke nochmals für den waithinweis. Ich hatte das noch übersehen.

Zu-> QuestTrigger_01
Ich habe jetzt über eine whileschleife versucht. Aber wenn der Spieler näher als 500 Quants kommt, will die function den Wert nicht ändern (P.s. Ich habe eine seperate wdl für WED, in der die selben voids als actions stehen. Eine Dummyversion. Funktionierte bisher mit jeder void/action).


Also alles was nur noch bleibt ist, dass der Trigger den Wert QuestTutorial_01 = 0 auf 1 setzen soll.


QuestTrigger sieht jetzt so aus, will aber nicht funktionieren.

Code:
 void Quest_trigger_01()
{
	
	set(my, INVISIBLE | PASSABLE);


	
	while(vec_dist(my.x, Hero.x) <= 500)
	{
		QuestsTutorial_01 = 1;
		wait(1);
 	}
 	
} 	



Was mach ich da noch falsch? Die funktion ist in einer Whileschleifen und prüft, ob die Entfernung kleiner als 500 ist. Wenn ja, dann setzt sie sie auf 1. Der Wert ist im Header mit 0 initialisiert.


A7 Com V7.80
Re: Trigger trigged nicht und TEXT macht nicht das was ich will. [Re: Schmerzmittel] #246723
01/16/09 19:51
01/16/09 19:51
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Deine while-Schleife muss schon laufen BEVOR der Held nah genug ist.

Jetzt stell Dir vor, die Engine geht beim Start das Script durch.
Was stellt es dann fest, wenn es zu Deiner While-Schleife kommt?
Dass der Held nicht nah genug ist.
Und? Was dann? Sie ist "an der While-Schleife vorbei und wird ihr nie mehr begegnen"! wink laugh

Also muss die while-Schleife immer laufen und IN ihr die if-Abfrage stattfinden, ob der Held sich nah genug herangetraut hat!
Oder, wenn der Text eh nur ein einzigesmal während des Spiels angezeigt werden soll, kann die while-Schleife solange laufen BIS der Held nah genug herangekommen ist.

so z.B.:

void Quest_trigger_01()
{

while (held immer noch nicht in Sicht, der doof man)
{
if(endlich da, so'n Held aber auch)
{
Sag ihm laut wo's lang geht = 1;
}
Wartewartewarte(während die Engine bei all den aneren laufenden Funktionen nachschaut, was anliegt.);
}
Aus die Maus! Tschüss, Engine, jetzt brauchst Du nie mehr bei void Quest_trigger_01() vorbeischauen, ob etwas anliegt.
}

Re: Trigger trigged nicht und TEXT macht nicht das was ich will. [Re: Pappenheimer] #246727
01/16/09 20:14
01/16/09 20:14
Joined: Aug 2005
Posts: 512
Bayern
Schmerzmittel Offline OP
User
Schmerzmittel  Offline OP
User

Joined: Aug 2005
Posts: 512
Bayern
Danke. SO habe ich das noch nicht gesehen.

Ich probiers aus.

Vielen dank.


A7 Com V7.80
Re: Trigger trigged nicht und TEXT macht nicht das was ich will. [Re: Schmerzmittel] #246729
01/16/09 20:48
01/16/09 20:48
Joined: Aug 2005
Posts: 512
Bayern
Schmerzmittel Offline OP
User
Schmerzmittel  Offline OP
User

Joined: Aug 2005
Posts: 512
Bayern
Pappenheimer ich danke dir.


Jetzt hats endlich hingehauen. Ich weiß zwar nicht, ob du dir das so vorgestellt hast; ich zeig dir mal das Script.

Code:
 void Quest_trigger_01()
{
	
	set(my, INVISIBLE | PASSABLE);

		
	while(1)
	{
		if(QuestsTutorial_01 == 1)
		{
			break;
		}
		
		if(vec_dist(Hero->x, my.x) >500)
		{
			QuestsTutorial_01 = 0;
			
		}
		if(vec_dist(Hero->x, my.x) <500)
		{
			QuestsTutorial_01 = 1;
		}
		
		wait(1);
	}
 	
} 	



Aber egal. Es läuft. Super. Herzlichen dank smile


A7 Com V7.80
Re: Trigger trigged nicht und TEXT macht nicht das was ich will. [Re: Schmerzmittel] #246734
01/16/09 21:23
01/16/09 21:23
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Code:
 void Quest_trigger_01()
{
	
	set(my, INVISIBLE | PASSABLE);

		
	while(vec_dist(Hero->x, my.x) >500)
	{

		if(vec_dist(Hero->x, my.x) <500)
		{
			QuestsTutorial_01 = 1;
		}
		wait(1);
	}
 	
} 	


Mehr wäre meiner Meinung nach nicht nötig.
Es sei denn, Dein Held könnte theoretisch gesehen gleich am Anfang des Levels innerhalb des "Quests"-Bereichs stehen, dann muss es auf alle Fälle "while(1)" heißen.
Deine ersten 2 Bedingungsabfragen sind überflüssig.
Wie ich vorhin beschrieben habe, Du musst Dir vorstellen, dass die Engine eine Anweisung nach der anderen durchgeht.

Last edited by Pappenheimer; 01/16/09 21:26.
Page 1 of 2 1 2

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