Ergebnis 1 bis 20 von 45

Thema: Navmesh bei Abwasserkanälen

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #22
    Genau das meinte ich, die Triggerblöcke sind unnötig, weil der GameMode Block sowieso immer läuft.

    @SethX
    Das ist wie mit dem Kühlschranklicht, die Skripte laufen zu 99% nicht, wenn der Player außerhalb der Reichweite/Innenzelle ist. Ich weis nur nicht ob die Zellengrenzen bestimmen oder ob es eine maximale Reichweite gibt.

    Man kann das leicht testen, koppel mit dem Lichtschalter einen Placeatme Monster 1, nach jedem Tag, der vergangen ist, müsste dann ein Monster an der Stelle stehen, wenn die Zeitschaltuhr mitläuft.

    Nach meiner Erfahrung passiert das nur, wenn sich der Player in Reichweite/Zelle befindet. Ich habe solche Abfragen sicherheitshalber immer mit if GetDistance player <= XXXX gekoppelt, da der Beginn GameMode eh mitläuft.

    @Trigger
    Der Trigger oder (+Enter) aktiviert sich nur, wenn man die Box berührt oder (+Leave) sie verlässt. Wenn man da einen GameMode reinpackt, ist es ein aktiver Aktivator für Skripte + ein Trigger in der Größe der Box. Um zu vermeiden, dass der Trigger von anderen ausgelöst wird (herumlaufenden NPCs):

    Begin onTrigger player

    Begin onTrigger CalistaREF

    Trigger sind auch nur 1x Schalter, weshalb man für eine permanente if Abfrage dann zusätzlich den GameMode braucht. Wenn also irgend ein Trigger Event nicht gehen sollte, muss man die if Abfrage vielleicht nur in einen GameMode setzen. Das ist z.b. beim Lichtschalter so, wäre es nur ein if im Trigger Block, dann würde sich das Licht nur bei Berührung der Trigger Box zu der Uhrzeit Abfrage ein- oder ausschalten.

    Kommt immer darauf an was man macht, manche Abfragen gehen nur im GameMode, bei anderen ist es egal. GECK-Wiki hilft manchmal, da man oft tricksen muss

    @Läuft das Skript
    Das war ja auch der Konsens bei der normalen MM Variante, ich bin davon überzeugt, das die markfordelete Skripte nach Zellen-Reset/Uhrzeit nicht so gehen, wie sie sollten. Im Grunde müssen die Leichen der Monster liegen bleiben, solange der Zell-Reset nicht gemacht wurde oder der Player außerhalb der Reichweite ist.

    Beispiel:
    Du killst Zombies in der Metro und gehst nach DC. Zwar steht im Skript der Zombies, lösche dich beim Zell-Reset, da der Player aber nicht in Reichweite ist, kann er das eigentlich nicht ausführen. Betritts du die Metro nach dem Zell-Reset wieder, stellt sich die Frage: Hat er sich den Zeitpunkt für den Zell-Reset aller Leichen gemerkt, also den Wert für alle toten Zombis abgespeichert, dann löscht er sie sofort, weil der Player wieder in Reichweite/Zelle ist. Hat er das nicht gespeichert, laufen alle Skripte wieder an, und warten auf den Zell-Reset. Egal wie man es dreht, je mehr Leichen, umso mehr Müll.

    Deshalb meine Abfrage auf Entfernung:

    scn zMMMzSpawnRemoval

    Begin GameMode

    if GetDead == 1 && GetDistance Player > 11000 && GetInSameCell Player == 0
    markfordelete
    endif

    End

    Beim GetInSameCell Player == 0 müsste sofort alles verschwinden. Ist dann wieder wie beim Kühlschranklicht, hat er es tatsächlich noch ausgeführt, wenn du die Innenzelle verlässt oder das Skript schon auf Eis gelegt, in der Sekunde wo du die Zelle verlassen hast

    Diese GetInSameCell == 0 würde umgekehrt immer als GetInSameCell CalistaREF == 0 funktionieren, weil viele Events eh nur wichtig sind, wenn der Player anwesend ist. Aus dem Gefühl würde ich sagen, die GameMode Abfrage ist so schnell, das er die if noch ausführt, bevor du ganz aus der Zelle/Reichweite verschwinden kannst.

    Geändert von EMOD (07.05.2009 um 19:01 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •