PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CE Event in bestimmten Intervallen abfragen?



dasBAUM
04.07.2007, 22:16
Hallo,
wie mein Topic schon aussagt, möchte ich gerne wissen, ob es möglich ist ein Common Event z.B. alle 10 Sekunden aufzurufen, damit es nicht ständig im Hintergrund läuft.

Oder gibt es eine nicht-performancelastige-Alternativlösung? Ich habe vor eine Ortsangabe in das HUD einzubauen. D.h. wenn ich auf MapID 15 bin soll z.B. Marktplatz im HUD stehen.

Gruß

Arlownay
04.07.2007, 22:51
Hi

Mach einfach ein paralleles CE mit einem Wait von 10 Sekunden ganz am Ende des CE. Übrigens reicht es auch, wenn du das Wait nur z.B. 0.1 sek. machst, das hat noch keinen Einfluss auf den Spielfluss. (Zumindest bei mir nicht. Meine Menüabfrage läuft damit super.)

LG, Arlownay

dasBAUM
04.07.2007, 23:27
Naja noch ruckelt es ja nicht, aber gehen wir davon aus ich habe 300 verschiedene Ortsangaben, die alle 0,1s abgefragt werden. Ich denke das würde ruckeln.

makenshi
04.07.2007, 23:39
Die simpelste denkbare Lösung wäre das du das Event einfach dann callen lässt,
wenn der Spieler auf ein Teleportevent tritt.
Immerhin kann er nur so den Ort wechseln.

Arlownay
05.07.2007, 08:48
@dasBAUM: Wieso? Es ist ja trotzdem nur ein CE das läuft. Oder wie willst du das machen?

dasBAUM
05.07.2007, 11:38
@dasBAUM: Wieso? Es ist ja trotzdem nur ein CE das läuft. Oder wie willst du das machen?
Ja, dass es nur ein Event ist, ist mir schon klar. Aber das Event wird trotzdem ziemlich lang, wegen den ganzen Forks.

Wenn die MapID=1 ist, dann wird Picture x1 angezeigt,
ansonsten wird gefragt, ob die MapID=2 ist, dann wird Picture x2 angezeigt, etc.

Und wenn man da einige Zeilen drin hat, wird das denke ich mal ziemlich performancelastig sein.

Arlownay
05.07.2007, 13:36
Ich glaube zwar nicht, dass das ein Problem ist, denn im Code wird ja nur durch die Bedingungen gefräst und die richtige gesucht und dort wird winziger Befehl ausgeführt...

Aber du kannst es ja ausprobieren. Wenn es mit 0.1 sek. ruckeln sollte, dann erhöhst du einfach auf 1 sek oder wie du am anfang gesagt hast auf 10 sek. Das lässt sich ja superschnell abändern.

Oder wie makenshi gesagt hat: Immer beim Teleport das richtige Bild anzeigen.

Ich habe das bei mir so gemacht, dass ich für jeden Ort (du könnetst das für jede Map machen) eine Variabelnummer habe. Sobald du einen Ort betrittst wird im Teleport die Variabel auf den aktuellen Ort gestellt und ein CE aufgerufen, das dann das richtige Bild anzeigt. So wird der CE nur immer kurz beim Mapwechsel aufgerufen.

DR_Zeph
05.07.2007, 14:38
Erst die MapID bestimmen, dann mit einer Vergleichsvariable vergleichen, besteht ein unterschied wurde eine neue Map betreten. Ist dies der Fall einmal die Forks abfragen und entsprechend die Bilder anzeigen. Anschließend die Vergleichsvariable auf die MapID setzen. Anschließend einen Wait mit 0,1 Sekunden. Sollte imo die beste Methode sein!

dasBAUM
05.07.2007, 16:01
Erst die MapID bestimmen, dann mit einer Vergleichsvariable vergleichen, besteht ein unterschied wurde eine neue Map betreten. Ist dies der Fall einmal die Forks abfragen und entsprechend die Bilder anzeigen. Anschließend die Vergleichsvariable auf die MapID setzen. Anschließend einen Wait mit 0,1 Sekunden. Sollte imo die beste Methode sein!
Die MapID mit einem CE oder mit einem PP bestimmen? Und was meinst du mit Vergleichsvariable?

Phönix Tear
06.07.2007, 13:04
Wahrscheinlich so:

Common-Event "Map-ID Kontrolle"

Parallel Process

Bedingungen:
- Switch "Ortsanzeige AN" - ON

<>Change Variable "Map ID", set [(Hero) Map-ID]
<>Fork Variable "Map ID" != "Map ID Vergleich"
<><>Change Variable "Map ID Vergleich", set "Map ID"
<><>Call Event (CE) "Ortsanzeige"
<>End:
<>Wait 0,1 sec //oder ein beliebiger anderer Wert...
<>
Das "Ortsanzeige" CE sähe dann z.B. so aus:

Common-Event "Ortsanzeige"

Call Event

Bedingungen:
- keine

<>Fork Variable "Map ID Vergleich" = 1
<><>Show Picture '20' "Marktplatz" at [40|15]
<>Else:
<>Fork Variable "Map ID Vergleich" = 2
<><>Show Picture '20' "Gasse" at [40|15]
<>Else:
<>[...]
<>End:
<>

Hoffe es hilft dir weiter

mfg
Phönix Tear

Caine Luveno
06.07.2007, 23:58
Erst die MapID bestimmen, dann mit einer Vergleichsvariable vergleichen, besteht ein unterschied wurde eine neue Map betreten. Ist dies der Fall einmal die Forks abfragen und entsprechend die Bilder anzeigen. Anschließend die Vergleichsvariable auf die MapID setzen. Anschließend einen Wait mit 0,1 Sekunden. Sollte imo die beste Methode sein!

LOL

Die Idee mit den MapId ist gut. Dabei gilt zu bedenken das ein Ort aus mehreren Maps bestehen kann und er damit so viele Forks, wie Maps in seinem Projekt braucht.

Eine andere Lösung:

Jedes Mal wenn ein neuer Ort betreten wird setzt ein Autostart Event eine Variable welcher Ort betreten wurde und callt das entsprechende Common Event für die Anzeige.

Das macht insofern Sinn da ich mal davon ausgehe das man das HUD auf jeder Map sehen kann und soweit ich weiß beim Map Wechsel alle angezeigten Pictures gelöscht werden.

So ist es zumindest bei meinen Anzeigen immer gewesen.

D.h. du brauchst sowieso auf jeder Map ein Autostart Event welches die Anzeige wieder callt. Damit wäre das Paralell Process Event dann eh überflüssig.

Rainfall
08.07.2007, 21:56
wieso machst dus so umständlich mach einfach beim Teleportevent das dich zur Map "Sackgasse" noch im Teleportevent ein "show picture '20': sackgasse" damit wird das vorherige Bild 20 gelöscht und es gibt keine Abfrage
außerdem wenn du mal in ner sequenz das Bild weckschältst kommt es nicht alle 10 sekunden wieder

V-King
09.07.2007, 07:24
Ja, dass es nur ein Event ist, ist mir schon klar. Aber das Event wird trotzdem ziemlich lang, wegen den ganzen Forks.

Wenn die MapID=1 ist, dann wird Picture x1 angezeigt,
ansonsten wird gefragt, ob die MapID=2 ist, dann wird Picture x2 angezeigt, etc.

Und wenn man da einige Zeilen drin hat, wird das denke ich mal ziemlich performancelastig sein.

So performancelastig ist das nicht, wie du wahrscheinlich befürchtest.
Im Notfall machst du halt immer nach 50 Abfragen einen 0.0s-wait. Das könnte zwar EVENTUELL die Ergebnisse minimal verfälschen, aber hier kommt es aufs probieren an.

Un ein 0.0s- oder 0.1s-Wait am Ende des Common Events bringt wirklich extrem viel. Ist bei PP-Events sogar zwingen notwendig, sonst fängts bei den meisten PCs an zu ruckeln.

Weiterhin sind 300 Forks noch sehr einfach für den Maker zu bewältigen.
Nehme ich sehr sehr sehr stark an. Ich hab selbst einige PP-CEs mit so einigen Abfragen drin, bei mir ruckelt nix.

Mach dir also erst dann nen Kopf, wenn es wirklich ruckeln sollte ;)