3 registered members (Akow, TipmyPip, tomaslolo),
788
guests, and 11
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
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
OP
User
|
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.
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
Senior Expert
|
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.
|
|
|
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
Member
|
Member
Joined: Dec 2008
Posts: 271
|
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: Gnometech]
#246716
01/16/09 19:04
01/16/09 19:04
|
Joined: Aug 2005
Posts: 512 Bayern
Schmerzmittel
OP
User
|
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
OP
User
|
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. 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
Senior Expert
|
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"! 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
OP
User
|
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
OP
User
|
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. 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
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
Senior Expert
|
Senior Expert
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
|
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.
|
|
|
|