Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
quickstart:skripte:variablen [2015/08/18 20:15] 127.0.0.1 Externe Bearbeitung |
quickstart:skripte:variablen [2016/02/07 18:00] (aktuell) milgo |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | == Was sind Variablen | + | ===== Variablen |
| - | Sie können in IF-Abfragen benutzt werden, | + | Variablen ermöglichen es euch Werte zu speichern |
| - | Stellt euch Variablen | + | ==== Was sind Variablen |
| - | --------- | + | Sie können in IF-Abfragen benutzt werden, und zwar vor allem da, wo das Arbeiten mit " |
| - | == Wie erstellt man Variablen? == | + | Stellt euch Variablen |
| + | ==== Wie erstellt man Variablen? ==== | ||
| Man schreibt zuerst in den Script Story_Globals.d (Scripts -> Content -> Story): | Man schreibt zuerst in den Script Story_Globals.d (Scripts -> Content -> Story): | ||
| - | --------- | + | <code C> |
| var int NpcGetAngry; | var int NpcGetAngry; | ||
| - | --------- | + | </ |
| womit sie praktisch schon erstellt wurde. Der Variablenname kann alles sein, zum Beispiel NpcGetAngry, | womit sie praktisch schon erstellt wurde. Der Variablenname kann alles sein, zum Beispiel NpcGetAngry, | ||
| Empfohlen sind aber solche Namen, die auch zur jeweiligen Verwendung passen, wie z.B. das Erste Beispiel. | Empfohlen sind aber solche Namen, die auch zur jeweiligen Verwendung passen, wie z.B. das Erste Beispiel. | ||
| - | --------- | + | ==== Verwendung von Variablen ==== |
| - | + | ||
| - | == Verwendung von Variablen == | + | |
| Nun hat man eine Variable, schön und gut, nutzt einem so aber trotzdem nichts. Verwendet werden die nämlich in einem beliebigen Dialog, und zwar in der FUNC VOID: | Nun hat man eine Variable, schön und gut, nutzt einem so aber trotzdem nichts. Verwendet werden die nämlich in einem beliebigen Dialog, und zwar in der FUNC VOID: | ||
| - | --------- | + | <code C> |
| FUNC VOID Dr_Test_110_Bloedmann | FUNC VOID Dr_Test_110_Bloedmann | ||
| { | { | ||
| - | AI_Output(other, | + | AI_Output(other, |
| - | AI_Output(self, | + | AI_Output(self, |
| - | // Jetzt der wichtige Teil, die Variable wird auf TRUE gesetzt! | + | // Jetzt der wichtige Teil, die Variable wird auf TRUE gesetzt! |
| - | NpcGetAngry = TRUE; | + | NpcGetAngry = TRUE; |
| }; | }; | ||
| - | --------- | + | </ |
| Nun hat man die Variable auf TRUE gesetzt. Man kann das zum Beispiel so verwenden, dass der NPC nur Informationen gibt, wenn diese Variable nicht auf TRUE steht, zum Beispiel so: | Nun hat man die Variable auf TRUE gesetzt. Man kann das zum Beispiel so verwenden, dass der NPC nur Informationen gibt, wenn diese Variable nicht auf TRUE steht, zum Beispiel so: | ||
| - | --------- | + | <code C> |
| FUNC VOID Dr_Test_110_Infos | FUNC VOID Dr_Test_110_Infos | ||
| { | { | ||
| - | AI_Output(other, | + | AI_Output(other, |
| - | IF (NpcGetAngry == TRUE) //Hier wird abgefragt, ob die Variable auf TRUE steht. | + | if (NpcGetAngry == TRUE) //Hier wird abgefragt, ob die Variable auf TRUE steht. |
| - | { | + | { |
| - | AI_Output(self, | + | AI_Output(self, |
| - | } | + | } |
| - | else //Wenn die obere Bedingung nicht erfüllt ist, also die Variable auf 0 steht (Also wenn man den armen Dr. Test nicht beleidigt hat) kommen die folgenden Funktionen. Sollte man aber wissen. | + | else //Wenn die obere Bedingung nicht erfüllt ist, also die Variable auf 0 steht (Also wenn man den armen Dr. Test nicht beleidigt hat) kommen die folgenden Funktionen. Sollte man aber wissen. |
| - | { | + | { |
| - | AI_Output(self, | + | AI_Output(self, |
| - | }; | + | }; |
| }; | }; | ||
| - | --------- | + | </ |
| Das war ein einfaches Beispiel zu den Variablen. Wer diese inhaltliche Idee in seiner Mod verwenden will, soll sich keinen Zwang antun. So toll ist sie nicht ;) | Das war ein einfaches Beispiel zu den Variablen. Wer diese inhaltliche Idee in seiner Mod verwenden will, soll sich keinen Zwang antun. So toll ist sie nicht ;) | ||
| - | --------- | + | ==== Möglichkeiten mit Variablen ==== |
| - | + | ||
| - | == Möglichkeiten mit Variablen == | + | |
| In Variablen lassen sich eine ganze Menge Sachen anstellen. | In Variablen lassen sich eine ganze Menge Sachen anstellen. | ||
| - | Neben dem Beispiel hier kann man auch erwirken, dass ein Dialog erst am nächsten Tag erscheint oder dass ein Dialog verschwindet, | + | Neben dem Beispiel hier kann man auch erwirken, dass ein Dialog erst am nächsten Tag erscheint oder dass ein Dialog verschwindet, |
| Kurz, es gibt eine ganze Vielzahl von Möglichkeiten, | Kurz, es gibt eine ganze Vielzahl von Möglichkeiten, | ||
| - | [http:// | + | Ein Beispiel, wenn ein Dialog |
| - | --------- | + | <code C> |
| + | VAR int NextDay; //Variable wird erstellt! | ||
| - | == Konstanten == | + | INSTANCE DIA_TestPc_Test (C_Info) |
| + | { | ||
| + | npc = TestPc; | ||
| + | nr | ||
| + | condition | ||
| + | information = DIA_TestPc_Test_info; | ||
| + | permanent | ||
| + | important | ||
| + | description = " | ||
| + | }; | ||
| + | FUNC int DIA_TestPc_Test_condition () | ||
| + | { | ||
| + | RETURN TRUE; | ||
| + | }; | ||
| + | FUNC void DIA_TestPc_Test_info () | ||
| + | { | ||
| + | AI_Output(other, | ||
| + | AI_Output(self, | ||
| + | AI_Output(self, | ||
| + | NextDay = Wld_GetDay(); | ||
| + | }; | ||
| + | |||
| + | INSTANCE DIA_TestPc_Test2 (C_Info) | ||
| + | { | ||
| + | npc = TestPc; | ||
| + | nr = 0; | ||
| + | condition | ||
| + | information = DIA_TestPc_Test2_info; | ||
| + | permanent | ||
| + | important | ||
| + | description = "Immer noch Kopfschmerzen?"; | ||
| + | }; | ||
| + | FUNC int DIA_TestPc_Test2_condition () | ||
| + | { | ||
| + | if (Npc_KnowsInfo(other, | ||
| + | { | ||
| + | return TRUE; | ||
| + | }; | ||
| + | }; | ||
| + | FUNC void DIA_TestPc_Test2_info () | ||
| + | { | ||
| + | AI_Output(other, | ||
| + | if (NextDay == Wld_GetDay())// | ||
| + | { | ||
| + | AI_Output(self, | ||
| + | } | ||
| + | else //Falls dies nicht zutrifft, wird dies ausgeführt! Das ist dann logischerweise ein anderer Tag statt Tag X! | ||
| + | { | ||
| + | AI_Output(self, | ||
| + | }; | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | ==== Konstanten | ||
| Neben Variablen existieren auch noch Konstanten, die mit dem Schlüsselwort const eingeleitet werden: | Neben Variablen existieren auch noch Konstanten, die mit dem Schlüsselwort const eingeleitet werden: | ||
| - | --------- | + | <code C> |
| const int KonstantenTest = 5; | const int KonstantenTest = 5; | ||
| - | --------- | + | </ |
| Somit legt man eine Integer (int)-Konstante an, die den Wert 5 bekommt. Konstanten kann man im Nachhinein nicht mehr verändern, was auch ihr Sinn ist und ihren Namen erklärt. Deshalb MUSS man Konstanten auch IMMER sofort bei der Deklarierung ein Wert zugewiesen werden, sonst meckert der Parser. | Somit legt man eine Integer (int)-Konstante an, die den Wert 5 bekommt. Konstanten kann man im Nachhinein nicht mehr verändern, was auch ihr Sinn ist und ihren Namen erklärt. Deshalb MUSS man Konstanten auch IMMER sofort bei der Deklarierung ein Wert zugewiesen werden, sonst meckert der Parser. | ||
| Immer, wenn man möchte, dass ein Wert nicht verändert werden soll, sollte man Konstanten verwenden. So verhindert man später Bugs in der Mod, denn ein Fehler, den der Parser meldet, ist immer besser, als ein Fehler im Spiel selbst, den vielleicht sogar noch die Tester übersehen. Und das ich dann bestimmt nicht allzu schön. | Immer, wenn man möchte, dass ein Wert nicht verändert werden soll, sollte man Konstanten verwenden. So verhindert man später Bugs in der Mod, denn ein Fehler, den der Parser meldet, ist immer besser, als ein Fehler im Spiel selbst, den vielleicht sogar noch die Tester übersehen. Und das ich dann bestimmt nicht allzu schön. | ||
| + | |||
| + | Konstanten eignen sich immer dann, wenn ihr feste Zahlenwerte an mehreren Stellen abfragen müsst. Möchtet ihr zum Beispiel einen Auftrag erstellen, bei dem ein NPC den Spieler auffordert von einem anderen einen Geldbetrag einzusammeln? | ||
| -------- | -------- | ||
| Falls noch weitere Fragen auftauchen, schaut einfach mal im Editing-Forum vorbei! | Falls noch weitere Fragen auftauchen, schaut einfach mal im Editing-Forum vorbei! | ||