Du hast Glück, dass Wochenende ist ^^
Also ich zersetze mal den Script in seine Bestandteile.:
Code:
if (slow == 0 ) && ( player.getincell BoesesGebiet == 1 )
Slow ist eine von mir defenierte Variable. Sie dient dazu, um einen sehr schwerwiegenden Fehler zu verhindern. Aber dazu später. Die Abfrage in der zweiten Klammer ist jetzt das Essentielle. Hier wird abgefragt, ob sich der Spieler in einer Zelle befindet, die mit "BoesesGebiet" anfängt. Das könnte zum Beispiel "BoesesGebietSchloss" oder "BoesesGebiet34" sein. "EinBoesesGebiet" würde jedoch nicht funktionieren, da der Name ja nicht unmittelbar mit "BoesesGebiet" beginnt.
Code:
set player.getav speed to PlayerValue
Also bei Scripten und auch in Programmiersprachen wird immer den Variablen auf der rechten Seite ein Wert zugeteilt. Hier wird der variable PlayerValue, die ich vorher definiert habe, der Schnelligkeitswert des Spielers zugewiesen. Also nehmen wir an, der Spieler hat 80 "Speed", dann hat ihn Playervalue nach dieser Zeile auch.
Nachdem nun der alte Schnelligkeits-Wert des Spieler in einer Variable gespeichert wurde, können wir nun die Schnelligkeit des Spieler getrost auf 20 setzen. Somit wird er langsamer.
Das, was eigentlich zuerst nach der If-abfrage kam, erkläre ich hier erst zuletzt. Denn die Variable dient dazu, dass der Spieler nicht ewig 20 Geschwindigkeit besitzt. Würden wir die "Slow"-variable weglassen, würde alles im If-block ausgeführt, solange der Spieler in den Cells ist. Also würde in dem Fall "set player.getav speed to PlayerValue" wieder ausgeführt werden. Da Aber der Geschwindigkeitswert schon 20 ist, würde die Variable "PlayerValue" auch den Wert 20 erhalten und ein Zurücksetzen auf den alten Wert wäre unmöglich.
Code:
Elseif ( slow == 1 ) && ( player.getincell BoesesGebiet == 0 )
Nun, die Variable Slow ist jetzt 1. Dabei ist nichts besonderes. Die Abfrage in der zweiten Klammer fragt nun ab, ob der Spieler
nicht in den Zellen ist, die mit "BoesesGebiet" anfangen. Das liegt an der 0 ganz hinten.
Code:
Set slow to 0
player.setav PlayerValue
Jetzt kommt die Wiederherstellung des alten Wertes. dabei muss slow wieder auf 0 gesetzt werden, damit das Langsamwerden auch wieder funktioniert, wenn der Spieler ein zweites oder drittes mal das Gebiet betritt.
der letzte Befehl nun (Mir ist was aufgefallen!), setzt die Geschwindigkeit wieder auf den alten Wert. Aber sicher ist dir was aufgefallen: Speed fehlt. Es müsste so heißen:
Code:
player.setav speed PlayerValue
Bitte ändere das noch in deinem Script, das habe ich übersehen. Diese Zeile setzt einfach den Geschwindigkeitswert auf den ursprünglichen: PlayerValue.
Endif beendet jetzt den If-block und End den GameMode-block.
MfG Gildur