Oblivion:Zellwechsel des Spielers erkennen: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: == Thema == Wie kann man den Zellwechsel des Spielers oder auch eines NPSc erkennen? Manchmal muss man rausfinden ob der Spieler die Zelle wechselt, z.B. wenn man sein...) |
Keris (Diskussion | Beiträge) K |
||
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Thema == | == Thema == | ||
− | Wie kann man den Zellwechsel des Spielers oder auch eines | + | Wie kann man den Zellwechsel des Spielers oder auch eines [[ob:NPC|NPCs]] erkennen? |
− | Manchmal muss man | + | Manchmal muss man herausfinden, ob der Spieler die Zelle wechselt, z.B. wenn man sein [[ob:Eigenes_Musiksystem|Eigenes Musiksystem]] in seinen Zellen haben will. |
== Anwendung == | == Anwendung == | ||
=== Aufgabenstellung === | === Aufgabenstellung === | ||
− | Es muss erkannt werden wann der Spieler die Zelle wechselt, es soll dann eine Nachricht angezeigt werden. | + | Es muss erkannt werden, wann der Spieler die Zelle wechselt, es soll dann eine Nachricht angezeigt werden. |
+ | |||
=== Theorie === | === Theorie === | ||
Zeile 14: | Zeile 15: | ||
Weil es leider keinen Befehl gibt, der abfragt, ob der Spieler die Zelle wechselt, sondern nur [[ob:GetInSameCell|GetInSameCell]], müssen wir etwas erfinderisch werden. | Weil es leider keinen Befehl gibt, der abfragt, ob der Spieler die Zelle wechselt, sondern nur [[ob:GetInSameCell|GetInSameCell]], müssen wir etwas erfinderisch werden. | ||
− | Und in dem Moment kommt unser ZellWechselFly-Objekt zum Einsatz. Diese wird immer per <tesscript>MoveTo player</tesscript> zum Spieler bewegt. Und zwar immer, wenn die Abfrage <tesscript>ZellWechselFlyREF.GetInSameCell player </tesscript> den Wert 0 hat, oder in anderen Worten wenn das Objekt nicht in der gleichen Zelle wie der Spieler ist. Wenn der Spieler die Zelle verlässt wird die GetInSameCell Abfrage 0 ausgeben. | + | Und in dem Moment kommt unser ZellWechselFly-Objekt zum Einsatz. Diese wird immer per <tesscript>MoveTo player</tesscript> zum Spieler bewegt. Und zwar immer, wenn die Abfrage <tesscript>ZellWechselFlyREF.GetInSameCell player </tesscript> den Wert 0 hat, oder in anderen Worten, wenn das Objekt nicht in der gleichen Zelle wie der Spieler ist. Wenn der Spieler die Zelle verlässt, wird die GetInSameCell Abfrage 0 ausgeben. |
Das heißt umgekehrt: Wenn <tesscript>if ZellWechselFlyREF.GetInSameCell player == 0 | Das heißt umgekehrt: Wenn <tesscript>if ZellWechselFlyREF.GetInSameCell player == 0 | ||
;Spieler hat die Zelle gewechselt" | ;Spieler hat die Zelle gewechselt" | ||
</tesscript> | </tesscript> | ||
+ | |||
== Probleme == | == Probleme == | ||
− | Es werden nicht nur "Der Spieler geht durch eine Tür in eine andere Zelle" - Zellwechsel erkannt. | + | Es werden nicht nur "Der Spieler geht durch eine Tür in eine andere Zelle" - Zellwechsel erkannt. Bei dieser Methode wird auch ein Zellwechsel Im [[ob:Exterior Cell|Exterior Bereich]] erkannt, also wenn man sich von einem Quad ins nächste bewegt. Um das zu unterscheiden, werden wir noch den Befehl [[ob:IsInInterior|IsInInterior]] benutzen. |
− | Bei dieser Methode wird auch ein Zellwechsel Im Exterior Bereich erkannt, also wenn man sich von einem Quad ins nächste bewegt. Um das zu unterscheiden werden wir noch den Befehl [[IsInInterior]] benutzen. | ||
== Realisierung == | == Realisierung == | ||
=== Umgebung === | === Umgebung === | ||
− | Wir erstellen ein neues Item, geben dem Item die Persistent Reference ID "ZellwechselFly" und machen das Objekt | + | Wir erstellen ein neues Item, geben dem Item die Persistent Reference ID "ZellwechselFly" und machen das Objekt sehr klein. |
<div style="text-align: left; direction: ltr; margin-left: 1em;">[[Bild:CellDetect.jpg]] | <div style="text-align: left; direction: ltr; margin-left: 1em;">[[Bild:CellDetect.jpg]] | ||
Zeile 59: | Zeile 60: | ||
End | End | ||
</tesscript> | </tesscript> | ||
+ | |||
=== Handhabung === | === Handhabung === | ||
− | Das Skript wird als | + | Das Skript wird als Questscript laufen und im Hintergrund immer wieder prüfen, ob der Spieler die Zelle verlässt. |
+ | |||
+ | |||
− | + | {{Scriptkategorie |Position|Level_2_Scripts|Zellwechsel_des_Spielers_erkennen}} |
Aktuelle Version vom 26. Mai 2009, 18:04 Uhr
Inhaltsverzeichnis
Thema
Wie kann man den Zellwechsel des Spielers oder auch eines NPCs erkennen?
Manchmal muss man herausfinden, ob der Spieler die Zelle wechselt, z.B. wenn man sein Eigenes Musiksystem in seinen Zellen haben will.
Anwendung
Aufgabenstellung
Es muss erkannt werden, wann der Spieler die Zelle wechselt, es soll dann eine Nachricht angezeigt werden.
Theorie
Wir erstellen uns ein kleines Item oder ein Objekt, dessen Größe wir im Render Window sehr sehr klein machen. Dazu stellen wir für das Item eine Persistent ReferenceID "ZellWechselFlyRef" ein.
Wozu das ganze?
Weil es leider keinen Befehl gibt, der abfragt, ob der Spieler die Zelle wechselt, sondern nur GetInSameCell, müssen wir etwas erfinderisch werden. Und in dem Moment kommt unser ZellWechselFly-Objekt zum Einsatz. Diese wird immer per <tesscript>MoveTo player</tesscript> zum Spieler bewegt. Und zwar immer, wenn die Abfrage <tesscript>ZellWechselFlyREF.GetInSameCell player </tesscript> den Wert 0 hat, oder in anderen Worten, wenn das Objekt nicht in der gleichen Zelle wie der Spieler ist. Wenn der Spieler die Zelle verlässt, wird die GetInSameCell Abfrage 0 ausgeben. Das heißt umgekehrt: Wenn <tesscript>if ZellWechselFlyREF.GetInSameCell player == 0
- Spieler hat die Zelle gewechselt"
</tesscript>
Probleme
Es werden nicht nur "Der Spieler geht durch eine Tür in eine andere Zelle" - Zellwechsel erkannt. Bei dieser Methode wird auch ein Zellwechsel Im Exterior Bereich erkannt, also wenn man sich von einem Quad ins nächste bewegt. Um das zu unterscheiden, werden wir noch den Befehl IsInInterior benutzen.
Realisierung
Umgebung
Wir erstellen ein neues Item, geben dem Item die Persistent Reference ID "ZellwechselFly" und machen das Objekt sehr klein.
Script
<tesscript> scn ZellwechselErkennen
- written by sinHHHans
short drinnen
Begin Gamemode if player.IsInInterior == 1 && drinnen == 0 set drinnen to 1 elseif player.IsInInterior == 0 && drinnen == 1 set drinnen to 0 endif
if player.GetInSameCell ZellWechselFlyREF == 0 && drinnen == 1 message "Zellwechsel im Interior" ZellWechselFlyREF.moveto player elseif player.GetInSameCell ZellWechselFlyREF== 0 && drinnen == 0 if ZellWechselFlyREF.IsInInterior == 1 message "Zellwechsel nach Exterior" ZellWechselFlyREF.moveto player elseif ZellWechselFlyREF.IsInInterior == 0 message "Zellwechsel innerhalb Exterior" ZellWechselFlyREF.moveto player endif endif End </tesscript>
Handhabung
Das Skript wird als Questscript laufen und im Hintergrund immer wieder prüfen, ob der Spieler die Zelle verlässt.
Weitere Scripts aus dieser Kategorie
{{#if: Position | }}
{{#if: Level_2_Scripts | }}