Nirn.de

Gast

Thema: Variablen ( short , long , float , ref )  (Gelesen 14954 mal)

  • Fremdländer
    • Neuling
Da wir ja anscheind einige Leute haben, die kein englisch können noch Ahnung von Variablen haben, dachte ich mir, ich erstelle mal eine kleine Anleitung dazu.

Version 1.15 fertig
Änderungen:
Text Überarbeitung wegen einiger 'größerer' Fehler...
1. - short/long Beschreibung erweitert, 'Bzw. wenige/viele Stellen'
4. - 4 b) hinzugefügt.
---
1 a) - Float Variable nun mit richtiger Erklärung
1.  - 1. b) hinzugefügt
4.  - 4. a) hinzugefügt
     - Textänderung, wegen der Verschiebung. Sowie Verbesserung. Das Schlagen gegen Kisten triggert, das Schwert nicht. Bei Zaubern sieht dies anders aus.
4. a) - Relationen in 4. a) verschoben und erweitert
7. - hinzuzgefügt



1. Was ist eine Variable?
1. a) Was gibt es für Variablen?
1. b) Die Float Variable, erste Informationen.
2. Wieso brauche ich sowas?
3. Wie erstelle ich nun eine Variable?
3. a) Wie verändere ich solche Variablen nun im Script?
4. Und wie kann ich sie nun Abfragen?
4. a) Relationen
4. b) Variablen aus anderen Scripts?
5. Ein kleines Beispiel.
5. a) Eine Variable für mehrere Dinge?
6. besondere Variablen.
7. Danksagungen für Verbesserungen etc.

1. Was ist eine Variable?

Ganz einfach formuliert ist eine Variable ein Zahlenspeicher. Wie z.b. die Tor Anzeige für die Heimmannschaft kann ich mit ihr Speichern wie oft etwas schon vorgekommen ist.

1. a) Was gibt es für Variablen?

Es gibt in Oblivion 4 verschiedene Arten von Variablen. Unterschieden wird dabei, zwischen der Art der Zahlen, welche darin gespeichert werden können und der größe der Zahlen.
Und hier sogar wofür sie gut ist.


Da wären also

short - was übersetzt für kurz steht und so kann diese Variable nur 'kleine' ganze Zahlen speichern bzw. Zahlen mit 'wenigen' Stellen. Um genau zusein Zahlen zwischen:
-32.768 bis 32.767

long  - was übersetzt für lang steht und so kann diese Variable halt 'große' ganze Zahlen speichern bzw. Zahlen mit 'vielen' Stellen. Um auch hier genau zu sein, Zahlen zwischen:
-2.147.483.648 bis 2.147.483.647
(was ja schon wirklich riesig ist)

"float" definiert eine "floating-point number", zu Deutsch "Gleitkommazahl". Je nach Implementierung bieten diese Variablen eine bestimmte Anzahl von Stellen, wobei nicht festgelegt ist, hinter welche Stelle das Komma ist.
Diese Zahlen können zwischen:
1.18E-38 bis 3.40E38 (Präzision 7 Stellen)
liegen.
Diese Variablen sollte man als Anfänger erst einmal ignorieren, da die Zahlen im binär System gespeichert zu sein scheinen. Ich werde später, nachdem ich mir selbst das nochmal genauer angesehen habe, aber nochmal darauf eingehen.

ref - reference , sprich Referenz Variablen. Diese Variable wird benutzt, wenn man direkt auf einen Gegenstand zugreifen möchte, hierbei scheint es egal zu sein, ob es ein NPC oder halt ein Item ist.

1. b) Die Flaot Variable, erste Informationen

Wie ich schon ansprach, ist diese Variable nicht so einfach zu verstehen wie die anderen.
Dies basiert auf 2 Informationen die einem die Hilfsseite zum CS gibt.
1. sie basiert auf dem Binären System.
2. sie arbeitet mit Exponenten.

1. Das Binäre System Arbeitet nur mit jeweil zwei Werten pro Stelle einer Zahl. Während das normale Dezimale Zahlensystem mit 10 arbeitet.
Dezimal: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Binär: 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001
Also jedes mal wenn die 1 erreicht wird und der Wert um eins erhöht wird, wird die nächst höhere Stelle auf eins gesetzt. Bzw. wenn diese schon 1 ist auf 0 und erneut die nächst höhere.
Ich empfehle euch einfach mal einen Link wo es ausführlicher erklärt ist:
http://www.arndt-bruenner.de/mathe/Allgemein/binaersystem.htm

2. das Multiplizieren mit Exponenten ist eine Sache die Häufig passiert.
Wenn z.b. Zahlen zu groß werden:
1.000.000 ist das gleiche wie 10^6
Oder halt´:
0.000.001.234 das gleiche ist wie 1234^-6
(^ bedeutet hoch, für die die es noch nicht wussten ;) )
In Oblivion wird dieses Zeichen jedoch mit dem E ersetzt (E für exponent nehme ich an).

1.0000000E9 = 1.000.000.000

1.0000001E9 = 1.000.000.100

Wie ihr schon seht liegt hier dann auch die Begrenzung. Ihr könnt keine Zalen zwischen diesen beiden Zahlen wählen. Da diese zu lang wären für die Float Variable.

Wie Verbinde ich nun diese beiden Dinge?
Nun, das konnte ich leider aus der Beschreibung nicht herrauslesen und müsste ich noch einmal weiter untersuchen.
Leider ist mir das System so halt noch nicht klar. Wer da schon was herraus gefunden hat, dem wäre ich verbunden, wenn er mich informiert... Danke.

2. Wozu brauche ich sowas?

Man brauch so etwas bei vielen Gelegenheiten.
Ein paar Beispiele:
Du möchtest das der Spieler 3mal an eine Tür klopfen soll, bevor ihm Einlass gewährt wird.
Du möchtest eine Wunderlampe erstellen, die dem Spieler nur 3 Wünsche erfüllt.
Du willst das der Spieler nur einmal ein Rätsel beantworten muss, um eine Tür zu öffnen und die Tür danach offen bleibt für den Spieler. Sprich er nicht noch einmal ein Rätsel lösen muss...

Für all diese Sachen musst du in einem Script nachprüfen lassen, wie oft der Spieler etwas schon getan hat. Dies geht über Variablen.
Es gibt aber noch andere Möglichkeiten wo man so etwas gebrauchen könnte:

Bsp:
Du willst ein Schwert erstellen, welchs mit jedem getöteten Gegner mehr Schaden anrichtet.

Hier könntest du mit Variablen einen Script Zauber auf das Schwert legen welches in Höhe einer Variablen, oder durch eine Variable bestimmt Schaden macht.
(Dies ist bisher reine Theorie von mir, speziell scheint dies anders zu funktioniere. Schaut euch einfach hier in den Foren mal um...)

3. Wie erstelle ich nun eine Variable?

Eine Variable wird immer vor dem eigentlichen Script erstellt. Das bedeutet, du sagst dem Script das es mit einer Variablen arbeiten wird, bevor diese überhaupt einen richtigen Wert bekommt. Daher bekommt die Variable vorrübergehend schon den Wert 0 zugeteilt (Bool'sche Algebra: 0 = aus, 1 = ein, könnte auch ein Grund dafür sein... ;) .

Nun aber kurz etwas zu der Syntax, sprich dazu wie so etwas geschrieben wird:

Code
short 'NameDerVariablen_1'
long 'NameDerVariablen_2'
Float 'NameDerVariablen_3'
ref 'NameDerVariablen_4'
Man setzt also erst die Art der Variable und dann den Namen selbiger. Wie ich schon deutlich machen wollte durch die Zahlen, müssen Variablen in einem Script natürlich einmalige Namen haben.

Merke:
Man kann nicht zwei Variablen mit den selben Namen haben!

Dies hat den Grund, dass die Variablen über ihren Namen 'referenziert' werden, sprich darüber geändert/abgefragt etc. werden.
Nun schauen wir aber noch einmal wo in einem Script wir diese Variablen erstellen müssen (damit es auch vollkommen klar wird):

Code
scriptname WieSetzeIchEineVariable

short KleineZahlen
long GroßeZahlen
Float Kommazahlen
ref Referenzen

Begin XXXX ; ab hier startet erst das eigentliche Script!
    [Script]
End ; das Ende des Scripts

Wie ihr seht, werden die Variablen vor dem eigentlichen Script schon bestimmt. Also vor dem was ausgeführt wird (hier vereinfacht nur mit einem Begin).
Wie ihr schon seht habe ich den Variablen hier auch schon Namen gegeben. Nämlich: KleineZahlen , GroßeZahlen , Kommazahlen , Referenzen .

3 a) Wie verändere ich diese Variablen nun im Script?

Soweit so gut, wir haben gesehen wie man eine Variable erstellt, aber sie soll ja nicht für immer auf 0 gestellt bleiben.

Dies geht mit dem Befehl:
Code
set [VariablenName] to [Wert]
Natürlich kann man mit einer Variablen rechnen, sonst wären sie ja unnütz recht unnütz.

Hier also mal ein kleines Beispiel (von der Hilfsseite zum CS)
Ihr erstellt einfach ein neues Script als MagicEffect Script.
(TES -> oben rechts, Gameplay -> EditScript -> Script -> New -> oben rechts in dem ScriptFenster bei ScriptType auf MagicEffect stellen.)

Tipt es einfach mal ab. Fügt es einen Zauber hinzu setzt wie Wirkungsdauer dieses Zaubereffektes auf 5 und probiert es dann mal im Spiel aus.

Code
scriptname MeinErsterZauber

short updateCount

Begin ScriptEffectUpdate
  set updateCount to updateCount + 1
End

Begin ScriptEffectFinish
  Message "ScriptEffectUpadte lief %.0f mal", updateCount
End

Was macht dieses Script?
Ihr seht oben wird mit

Code
short updateCount Die Variable updateCount als kurz Variable bestimmt.

Die Linie zwischen 'Begin ScriptEffectUpdate' und dem darauf folgenden 'End' wird jede sekunde in der der Zauber wirkt ausgeführt.
Mit dem
Code
set updateCount to updateCount + 1 wird also jedes mal unsere Variable um 1 erhöht. Um nur mal zu zeigen wie 'simpel' dies eigentlich ist, hier die dt. Übersetzung:
'Setze updateCount auf updateCount + 1'


'Begin ScriptEffectFinish' läuft sobald das Script beendet wird.

Code
 Message "ScriptEffectUpadte lief %.0f mal", updateCount

Gibt den Spieler die Nachricht wie oft nun auf unsere Variable eine 1 addiert wurde, bzw. welchen aktuellen Wert diese hat. Da dies jede Sekunde geschieht, sollte dies nun auch die Anzahl der Sekunden angeben, die dieses Script lief...

Ihr seht, also so kann man diese Variable verändern, natürlich kann man auch eine Variable auf eine andere Variable setzen. Oder bei der ref Variable werdet ihr häufig dieses finden:

Code
set [RefVariablenName] to getself

Womit die ReferenzVariable auf das ausführende Item gesetzt wird.

4. Und wie kann ich sie nun abfragen?

Zum Abfragen von Variablen benutzen wir, wie für alles andere auch, eine IF Abfrage.
If, übersetzt Falls, fragt ab wie ein Wert ist.

Hierbei gibt es die eher typischen Relationen, welche ich unter 4.  a) noch näher beschreibe.

Also einmal ein kleines Beispiel, welches jedoch ein wenig umständlich ist, da ich halt eine normale Variable benutzen möchte anstatt einer spezielleren:

Dazu erstellen wir zuerst eine neue Quest.
Character -> Quests... -> rechtsclick -> new -> Name 'zzCountQ'

nun die Quest auswählen und dort unter Script auf den '...' Button. Neues Script erstellen, und diesmal anstatt auf Spell Effect, auf Quest stellen.

Dort erstellen wir nun eine Variable:

Code
scn zzCount

short Slashcount

Speichern und noch einmal nachprüfen ob dieses nun auch wirklich das unter der Quest ausgesuchte script ist.
So wir haben nun also in einem Script eine Variable bestimmt ohne mehr an ihr zu ändern, dies mag auf den Ersten Blick merkwürdig wirken, da wir keine Abfrage und nichts weiter haben, aber wenn ihr schon einmal die restlichen Scripts angesehen habt, dürftet ihr sowas schon einmal gesehen haben.

Nun erstellen wir ein zweites Script, diesmal wieder ein Spell Effect Script.

Code
scn zzCountingBlade

Begin ScriptEffectStart
   if zzCountQ.SlashCount < 5
       set zzCountQ.SlashCount to zzCountQ.SlashCount + 1
       message "Du hast nun %.0f mal zugeschalgen", zzCountQ.SlashCount
   Else
       set zzCountQ.SlashCount to 0
       message "Komisch, du dachtest es würde etwas passieren"
   Endif
End

Wie ihr seht, haben wir nun ein 'If', die unsere Variable SlashCount abfragt und sie in die kleiner als Relation mit der Zahl 5 setzt. Sprich, solange sie kleiner als fünf ist, wir der Code der nun folgt ausgeführt.
Wenn die Zahl mindestens gleich 5 ist, Wird der Code zwischen dem 'Else' und dem 'Endif' ausgeführt. (Nochmal der Hinweis das ihr eine Liste der Relationen unter 4. a) findet )

Das Script abspeichern, ein enchantment erstellen mit dem ScriptEffect zzCountingBlade und dies dann natürlich noch einem Schwert beifügen.

Nun einfach mal z.b. Monster/Tier suchen und langsam einzeln dagegen schlagen.

---
Was hat uns dies nun gebracht? Nun, wir haben bis jetzt nur ein Paar dumme Nachrichten bekommen. Erst 4 mal eine Nachricht wie oft wie zugeschlagen haben und dann einmal eine die besagt, dass etwas hätte passieren können und dann wieder wie oft wir zugeschlagen haben. Aber wir hätten auch einen besonderen Effekt nach 5 Schlägen hinzufügen können.

Aber noch einmal zurück, warum habe ich eine Quest und ein Questscript erstellt?
Einfach, weil es keine Möglichkeit gibt die Variable direkt in diesem einem Script unterzubringen. Also habe ich über eine Quest, die nicht einmal aktiviert war, eine Link zu eine immer existente Variable geschlagen.
Theoretisch hätte ich das auch mit den speziellen Variablen den sogenannten Globals machen können. Aber dazu später mehr.

4. a) Relationen

Relationen sind sozusagen Verhältnisse. Wie Verhalten sich zwei Zahlen zueinander.
Ein kleines Beispiel:
5 ist größer als 4 aber kleiner als 6. Hier sind direkt zwei Relationen.
Einmal das 5 größer als 4 ist und einmal das 5 kleiner als 6 ist.
Einzeln in kurzer Schreibweise, sieht dies, wie ihr schon wisst so aus:
4 < 5 und 5 < 6

Wenn wir mit Variablen arbeiten. Werden diese Relationen eigentlich immer als Bedingung gelesen. "Wenn  4 < 5 ist". Für Natürliche zahlen ist sowas geklärt (Dieser erste Teil ist für das Scripten eigentlich egal, nur wollte ich mal mit meinem Mathe wissen protzen *hust*), doch Variablen könnten halt kleinere oder größere Werte als 5 annehmen.

Welche Relationen gibt es nun?:

A == B Dies ist das Zeichen für genau gleich. Es wird sozusagen als normales gleich benutzt.
A   !=  B   Dies ist das Zeichen für A ungleich B.
A   <   B   Das Zeichen für A kleiner B.
A   >   B   Das Zeichen für A größer B.
A   => B   Das Zeichen für A kleiner oder gleich B. (A <= 5, heißt A kanne alle negativen Zahlen und positiven Zahlen bist zur einschließlich 5 annehmen)
A   >= B   Das Zeichen für A größer oder gleich B.


Auch wenn es nicht zwingend hierher gehört, möchte ich darauf Hinweisen, das es auch noch Anfragen gibt, bei denen 2 Variablen abgefragt werden. Dafür gibt es dann noch folgende Zeichen.

A  &&  B  Dies steht für, A und B. Es sorgt dafür das etwas erst läuft, wenn beide Bedingungen erfüllt sind.
Mal ein Beispiel dazu:
Code
IF ( A == 5 ) && ( B !=10 )
Wir fragen ob A gleich 5 ist, und gleichzeitig ob B ungleich 10 ist.
Wenn nun also A gleich 5 ist und B ungleich 10, würde das 'If' sagen, ja, es stimmt. Die Befehle nach mir müssen ausgeführt werden.
Wenn nun A gleich 5 ist, und B auch gleich 10 ist. Werden die Befehle danach nicht laufen.
Wenn A ungleich 5 ist und B ungleich 10 ist. Werden die Befehle auch nicht laufen.
Genauso wenn beide Bedingungen nicht erfüllt sein sollten.

A || B   Dies steht für A oder B. Es sorgt dafür das etwas  solange läuft, bis beide Bedingungen nicht erfüllt sind.
Noch einmal das Beispiel von oben nun aber mit || oder verbunden.

Code
If ( A == 5 ) || ( B != 10 )

Wir fragen ob A gleich 5 ist, oder ob B ungleich 10 ist.
Wenn nun also A gleich 5 ist und  B ungleich 10, würde das If sagen, ja, es stimmt. Die Befehle nach mir müssen ausgeführt werden.
Wenn nun A gleich 5 ist, aber B auch gleich 10 ist. Werden die Befehle ausgeführt. Da ja nur eines von beiden stimmen muss!
Wenn A ungleich 5 ist und B ungleich 10 ist. Werden die Befehle die folgen auch wieder ausgeführt, da wie schon gesagt ja nur eines von beiden zutreffen muss. Also Entweder muss A gleich 5 sein oder B ungleich 10.
Wenn nun aber A ungleich 5 ist und B gleich 10 ist, werden die darauf folgende Befehle nicht ausgeführt. Da ja beide Aussagen nicht stimmen.

Wie ihr vielleicht schon bemerkt habt, entspricht das || , nicht wirklich dem logischen Oder, sondern viel mehr dem Und-Oder. Zumindest soweit ich es gelernt habe, stimmt somit also nicht die Aussage von der Hilfseite zum Tes, das es die logischen Ausdrücke wären.

4. b) Variablen aus anderen Scripts?
Da ich, nachdem mich jemand hier wieder ins Forum gelockt hat *hüstelt*, nun häufiger Fragen danach gelesen habe, wie ich von verschiedenen Scripts auf eine Variable zugreifen kann, wollte ich, obwohl ich selbst momentan nicht mehr scripte und möglicherweise eingerostet bin, meinen Wissenstand dazu mal kund geben und Ausweichsmöglichkeiten bieten....

Laut der TESCS-Hilfseite ist es nicht möglich mit einem Script, die Variablen aus einem anderen Script abzufragen (ähnlich wie bei C++, wenn ich das richtig mitbekommen habe). Auch meines Wissens nach existiert keine möglichkeit mit einem Script, Variablen aus anderen Scripts herrauszulesen.
Es gibt natürlich Variablen die jedes Script nutzen kann, dafür sind die 'System' Variablen zu nennen oder aber globals sowie questvariablen.
Nur sind dies alles nicht direkt Variablen die ihr selber setzt (Questvariablen ausgenommen).

Also was machen wir um diese Beschränkung zu umgehen?
Naja wir nutzen Quest oder eben Globale Variablen.

Globale Variablen erklären sich hierbei eher von selbst (Die kann man irgendwo im CS direkt erstellen, ich weiß leider gerade nicht wo genau) und danach mit jedem Script darauf zugreifen.

Bei Quest Variablen sieht es etwas anders aus.
Dazu brauchen wir zuerst einmal eine Quest (wie man die erstellt, habe ich weiter oben ja schon einmal beschrieben). Diese Quests kann man mit einem Script verbinden (s.o.). Alle Variablen die wir nun in diesem Script definieren können von anderen Scripts verändert werden.

In meinem Beispiel war es folgendes:
Code
zzCountQ.SlashCount sprich:
Code
[Questname].[Variablenname]
Ich denke dies könnte etwas 'langsamer laufen' (sprich rechen intensiver sein) als globals und wurde von Bethesda eher eingeführt um die Variablen einer Quest auf einem Blick zu haben. Dennoch kann man es so nutzen.
Und so könnte man auch für größere Scripts, die Variablen gruppieren. (Bethesda nutzt dies übrigens in sehr sehr vielen ihrer Quests bzw, bei ihren Gegenständen. Als Beispiel sind da einige Deadra Artefakte zu nennen).

Natürlich haben wir nun das Problem, dass wir für viele dieser 'universellen' Variablen auch viele neue globals/Questvariablen brauchen....

5. Ein kleines Beispiel
Wir nehmen wie schon oben die Scripts ergänzen das zweite Script jedoch so, das es nun so aussieht:

Code
scn VampiricBlade

Begin ScriptEffectStart
   If ( GetIsPlayable Rave == 1 ) && ( IsSpellTarget Vampirism25 != 1) && ( IsSpellTarget Vampirism 50 != 1 ) && ( IsSpellTarget Vampirism75 != 1) && ( IsSpellTarget Vampirism100 != 1)
      If ( zzCountQ.SlashCount < 5 )
           set zzCountQ.SlashCount to zzCountQ.SlashCount + 1
      Else
         If ( PcVampire >= 1 )
             messagebox "Das Schwert pumpt Blut in deine Adern", "okay"
             set PcVampire to 1
             Player.RemoveSpell Vampirism50
             Player.RemoveSpell Vampirism50Att
             Player.RemoveSpell Vampirism50Skills
             Player.RemoveSpell VampireSeduction
             Player.RemoveSpell Vampirism75
             Player.RemoveSpell Vampirism75Att
             Player.RemoveSpell Vampirism75Skills
             Player.RemoveSpell VampireReignOfTerror
             Player.RemoveSpell Vampirism100
             Player.RemoveSpell Vampirism100Att
             Player.RemoveSpell Vampirism100Skills
             Player.RemoveSpell VampireEmbraceOfShadows
             Player.AddSpell Vampirism25
             Player.AddSpell Vampirism25Att
             Player.AddSpell Vampirism25Skills
             set vampire.vampday to gameday
             set vampire.vamphour to gamehour
         Else
             messagebox "Das Schwert entleert sein Blut auf den Boden", "okay"
         Endif
         set zzCountQ.SlashCount to 0
      Endif
  Endif
End

Abspeichern,... etc.
Was macht dieses Script nun? Nun, es zählt im SlashCount mit, wie oft ihr mit dem Schwert bzw, mit jedem Schwert mit dieser Verzauberung, zugeschlagen habt.

Solltet ihr zufällig ein Vampir sein, erhaltet ihr nach 5 Schläge gegen eine der Spielbaren Rassen, bei der der NPC nicht gerade ein Vampir ist, eine Ladung Blut. Es ist also der selbe Effekt, wie als ob ihr gerade jemanden ausgesaugt hättet.
Ansonsten gibt es eine einfache Nachricht, das das Schwert seine Blutladung 'verschwendet'.

Wie ihr vielleicht auch schon in diesem Beispiel seht, gibt es eine Menge weitere Variablen. Z.b. Vamphour und Vampday, diese, werden auch über die Quest Vampire, von mir verändert. Ihr findet diese beiden Variablen übrigens im VampireScript (welche Bethesda für die Vampir Sachen gemacht hat).

6. Besondere Variablen

Wie ich schon andeutete, gibt es besondere Variable.

Das wären z.b. die Globals (sozusagen eine weitere Gruppe die ich oben nicht genannt habe). Dies sind Variablen die man schon über den Globals Punkt erstellen muss und auf welche jedes Script sofort zugreifen kann und so in keinem Script definiert werden müssen.

Dan gibt es noch folgende Variablen (Globals im übrigen), die vom Spiel selbst verändert werden, ohne extra in einem script zu stehen:
GameYear , das momentane Jahr des Spiels
GameMonth ,der momentane Monat des Spiels
GameDay , der momentane Tag im Spiels
GameHour , die momentane Uhrzeit im Spiel
TimeScale , die SpielMinuten die in einer rl Minute vergehen
GameDaysPassed , Viele Tage (im Spiel?) sind vergangen seit Spielbeginn.

Dann gibt es noch einige welche sogar eine Funktion zu haben scheinen (Infos wie auch oben die von der Hilfsseite zum TES)

fQuestDelayTime
Bestimmt wie oft (in sekundentakt) das Spiel ein QuestScript abruft, standard ist 5 minuten

fTrapDamage
Wieviel Schaden eine Falle macht, jedesmal wenn sie den Auslöser trifft.

fTrapPushBack
Wie weit man von einer Falle zurück geschoben wird, bei jedem Treffer, Sollte zwischen 0 und 1000 stehen.

fTrapMinVelocity
Wie schnell eine Falle im Vergleich zum Spieler sein muss um Schaden zu machen. Dieser Wert ist in BSEinheiten (was mir persönlich gerade nichts sagt...)

bTrapContinius
Hat nur den Wert 1 oder 0 ! (1 = wahr/ein , 0 = unwahr/aus)
Wenn der Wert = 0 ist, macht die Falle nur beim ersten Treffen Schaden.
Ist der Wert = 1 macht die Falle solange Schaden wie der Auslöser (Player/NPC) mit ihr in Berührung ist.

7. Danksagung

Ein großes Danke an Brandanus, der mich auf meine schändliche Fehl Erklärung der Float Variable hingewiesen hat. Und der mich nochmal darauf hingewiesen hatte, das ich nicht alle Relationen angegeben hatte und die Relationen z.b. von den in Pascal verwendeten abweichen.

--- --- --- ---
So ich hoffe ich konnte euch ein wenig helfen, so dass ihr beim nächsten durchlesen/editieren der verschiedenen schon vorhandenen Scripts etwas mehr versteht.

Solltet ihr noch Fehler finden, oder Hinweise sowie weitere Erläuterungen (sprich Verbesserungen) haben, könnt ihr mich ja informieren. Ich werde dann schauen das ich das hier editieren. Natürlich werde ich dann auch erwähnen das ihr mich da verbessert oder darauf hin gewiesen habt etc.
Man kann nur mit einer Analogie beschreiben, welche Auswirkungen der Geruch von Ankh-Morpork auf eine nicht daran gewöhnte Nase hat. Nehmen Sie Schottenstoff und bestreuen Sie ihn mit bunten Konfetti. Beleuchten Sie ihn anschließend mit einem Stroboskop. Besorgen Sie sich dann ein Chamäleon. Setzen Sie es auf das Tuch. Beobachten Sie es genau. Sehen Sie?
  14.06.2006, 09:24
  • Offline


  • Skelett
    • Untot
Schön geschrieben.  :D

Ich hab das aber schon bei MW instinktiv richtig gemacht, hab einfach das short von den Original-Scripts abgekupfert. Hab damals nicht mal gewusst, was das überhaupt bedeutet, aber wenns Bethesda macht, sollte es eigentlich richtig sein.
Außer short und ref kann man aber trotzdem den Rest vergessen.
Linux is like an indian tent - no windows, no gates, but Apache inside
  14.06.2006, 11:50
  • Offline


  • Fremdländer
    • Neuling
Im Grunde hast du wohl recht... Aber ich wollte ja schon versuchen einigermaßen vollständig zu sein.
Man kann nur mit einer Analogie beschreiben, welche Auswirkungen der Geruch von Ankh-Morpork auf eine nicht daran gewöhnte Nase hat. Nehmen Sie Schottenstoff und bestreuen Sie ihn mit bunten Konfetti. Beleuchten Sie ihn anschließend mit einem Stroboskop. Besorgen Sie sich dann ein Chamäleon. Setzen Sie es auf das Tuch. Beobachten Sie es genau. Sehen Sie?
  14.06.2006, 16:37
  • Offline


  • Anwärter
    • Klingen
Vielen Dank für dein Tutorial... ist meiner Meinung nach gut und verständlich geschrieben :)
  15.06.2006, 11:07
  • Offline
  • http://www.scharesoft.de


  • Aspirant
    • Magiergilde
Hi,

ich wollte mal fragen, ob es auch String-Variablen (Variablen, in denen man Text speichern kann) gibt?
Wollte nämlich ein Notizbuch für den Helden machen, in das man selbst schreiben kann, bin aber ein Totalnoob.

Danke für Antworten
In Ehre, in Weisheit, Minduril

Es folgt ein unwichtiger Text. Niemand sollte sich die Mühe machen, ihn zu lesen:
Spoiler
Ich hab euch gewarnt! ;-)
  03.09.2006, 17:04
  • Offline


  • Knochenfürst
    • Untot
:dito:

(also, außer zu dem Noob ;) )
In tiefen kalten hohlen Räumen,
Wo Schatten sich mit Schatten paaren,
Wo alte Bücher Träume träumen,
Von Zeiten als sie Bäume waren,

Wo Kohle Diamant gebiert,
Man weder Licht noch Gnade kennt,
Dort ist's wo jener Geist regiert,
Den man den Schattenkönig nennt.
  03.09.2006, 17:07
  • Offline


  • Drachengott
    • Nirn.de Team
Gibt es soweit ich weiß nicht, obwohl Bethesda das im Vornherein gesagt hat.

http://tes-oblivion.de/forum/hilight-word-string-11457.html
  03.09.2006, 17:09
  • Offline
  • http://www.jafjaf.de


  • Knochenfürst
    • Untot
Na ja, da gehts ja nur um den Spielernamen...
In tiefen kalten hohlen Räumen,
Wo Schatten sich mit Schatten paaren,
Wo alte Bücher Träume träumen,
Von Zeiten als sie Bäume waren,

Wo Kohle Diamant gebiert,
Man weder Licht noch Gnade kennt,
Dort ist's wo jener Geist regiert,
Den man den Schattenkönig nennt.
  03.09.2006, 17:11
  • Offline


  • Drachengott
    • Nirn.de Team
Zitat
Original von Lord Xeiron
Na ja, da gehts ja nur um den Spielernamen...

Zitat
Original von Lord Dagon
Und es gibt auch soweit ich weiß kein Befehl um NPC Namen direkt auszutauschen, Stringvariablen werden, obwohl Bethesda das uns versprochen hat, vom Spiel nicht ünterstützt, du glaubst garnicht wie schlicht die Scriptsprache eigentlich ist.

Wie viele Lords es hier gibt..  :P
  03.09.2006, 17:14
  • Offline
  • http://www.jafjaf.de


  • Bettler
    • Neuling
Wo gibts denn eine komplette Liste aller im Spiel enthaltenen Bedingungen und Befehlen?
  28.06.2009, 22:16
  • Offline


  • Fremdländer
    • Neuling
Eine Englische Liste der Befehle findest du unter http://cs.elderscrolls.com/constwiki/index.php/Main_Page , da ich ja auch nur noch alle Jubeljahre hier reinschaue, kann ich dir nicht sagen wo du nun eine dt. Liste findest, aber du könntest es hier: http://www.ei-der-zeit.com/LexikonCSIV/ , einfach mal versuchen. Dort scheint zumindest eine ganze Menge übersetzt worden zu sein.

Auch was Bedingungen angeht, bist du bei den Links, denke ich zumindest, nicht verkehrt.
Man kann nur mit einer Analogie beschreiben, welche Auswirkungen der Geruch von Ankh-Morpork auf eine nicht daran gewöhnte Nase hat. Nehmen Sie Schottenstoff und bestreuen Sie ihn mit bunten Konfetti. Beleuchten Sie ihn anschließend mit einem Stroboskop. Besorgen Sie sich dann ein Chamäleon. Setzen Sie es auf das Tuch. Beobachten Sie es genau. Sehen Sie?
  17.08.2009, 17:48
  • Offline


  • Bettler
    • Neuling
Also ich in ein Skript voll noob und wollte mal eine Waffe machen die nach 5 Schlägen einen Zauber freisetzt und hab das geschrieben:

scn aaMyscript

short slashcount

begin ScriptEffectStart
     if slashcount < 5
     set slashcount to slashcount + 1

else
     set slashcount to 0
     addspell 002test(ein selbsterstellter zauber)
endif
end

das hab ich dann in ein enchanchment gemacht und auf ein silberkurzschwert gelegt und dieses im marktbezirk hingelegt, geholt, getestet und es funzt net.
Für schnelle hilfe wär ich dankbar^^
Hier könnte eine Signatur stehen!
  02.12.2009, 18:25
  • Offline


  • Aspirant
    • Magiergilde
Dein Frage hat eigentlich nichts mit den Variablen-Typen zu tun => ergo: falscher Thread.
Gehört wohl eher in die Construction-Set-Abteilung ...

Was dein Script angeht:
addspell funktioniert nur bei NPCs und dem Player (vllt auch bei Kreaturen), aber nicht bei Items. Dort nennt sich das nämlich Enchantment (Verzauberung) und einen Befehl addEnchantment gibt es meines Wissens nach nicht. Damit dürfte dein Vorhaben ziemlich kompliziert werden, glaube ich ... (du könntest vllt deinen Zauber 002test komplett an der Stelle reinscripten, je nachdem, was der macht.)
Wenn du den Zauber allerdings wirklich dem Player geben willst, fehlt dir vor addSpell nur die Referenz, also z.B.: player.addspell
Im Leben ist nichts kostenlos ...

... selbst der Tod kostet dich dein Leben.

[WIP] Ruine Mondlicht
  03.12.2009, 14:04
  • Offline


  • Bettler
    • Neuling
oh......okay danke für die die antwort dann werd ich mich ma an "realisierbare" sachen setzen^^
Hier könnte eine Signatur stehen!
  03.12.2009, 15:03
  • Offline


  • Aspirant
    • Magiergilde
beschreib doch einfach mal, was dein Zauber 002test macht, vielleicht geht es ja, wie gesagt, doch ...
Im Leben ist nichts kostenlos ...

... selbst der Tod kostet dich dein Leben.

[WIP] Ruine Mondlicht
  03.12.2009, 20:55
  • Offline