Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
quickstart:skripte:abfragen [2015/08/18 22:15] 127.0.0.1 Externe Bearbeitung |
quickstart:skripte:abfragen [2017/01/09 16:59] (aktuell) milky-way update formatierung |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | == Abfragen == | + | ====== Abfragen und Operatoren ====== |
| + | |||
| + | ===== Abfragen ===== | ||
| If-Abfragen sind essenzieller Bestandteil aller Dialoge und Scripts. Hier wird am Beispiel eines Dialoges erklärt, wie man sie einsetzt. | If-Abfragen sind essenzieller Bestandteil aller Dialoge und Scripts. Hier wird am Beispiel eines Dialoges erklärt, wie man sie einsetzt. | ||
| Zeile 6: | Zeile 8: | ||
| Abfragen geschehen in der Regel in der Condition eines Dialoges, also in der dazugehörigen FUNC INT. Wenn dies TRUE zurückgibt, dann erscheint der Dialog erst dem Spieler zum Auswählen. | Abfragen geschehen in der Regel in der Condition eines Dialoges, also in der dazugehörigen FUNC INT. Wenn dies TRUE zurückgibt, dann erscheint der Dialog erst dem Spieler zum Auswählen. | ||
| + | <code C> | ||
| FUNC INT DIA_Dr_Test_110_Bloedmann_condition | FUNC INT DIA_Dr_Test_110_Bloedmann_condition | ||
| { | { | ||
| Zeile 13: | Zeile 15: | ||
| return TRUE; | return TRUE; | ||
| }; | }; | ||
| - | }; | + | };</code> |
| ------ | ------ | ||
| - | IF (Npc_KnowsInfo(self,DIA_Dr_Test_110_Hello) | + | <code C>IF (Npc_KnowsInfo(self,DIA_Dr_Test_110_Hello) </code> |
| Das ist der Kopf der Abfrage. IF ist das Schlüsselwort, dann kommt das, was abgefragt werden soll in Klammern. In diesem Fall Npc_KnowsInfo. So wird abgefragt, ob ein bestimmter Dialog schon geführt wurde, und das muss nicht unbedingt beim selben NPC sein. Nach Npc_KnowsInfo kommt dann eine weitere Klammer mit other und dann die Instanz des Dialoges, von dem man will, dass er schon geführt wurde, um diesen hier "freizuschalten". | Das ist der Kopf der Abfrage. IF ist das Schlüsselwort, dann kommt das, was abgefragt werden soll in Klammern. In diesem Fall Npc_KnowsInfo. So wird abgefragt, ob ein bestimmter Dialog schon geführt wurde, und das muss nicht unbedingt beim selben NPC sein. Nach Npc_KnowsInfo kommt dann eine weitere Klammer mit other und dann die Instanz des Dialoges, von dem man will, dass er schon geführt wurde, um diesen hier "freizuschalten". | ||
| ------ | ------ | ||
| + | <code C> | ||
| { | { | ||
| return TRUE; | return TRUE; | ||
| }; | }; | ||
| + | </code> | ||
| Hier wird man erkennen, dass das return TRUE; einfach nur in die Klammern der Abfrage gesetzt wurde (was zwingend nötig ist). Die gesamte Funktion liest sich dann praktisch so: | Hier wird man erkennen, dass das return TRUE; einfach nur in die Klammern der Abfrage gesetzt wurde (was zwingend nötig ist). Die gesamte Funktion liest sich dann praktisch so: | ||
| Zeile 36: | Zeile 38: | ||
| So könnte das zum Beispiel aussehen: | So könnte das zum Beispiel aussehen: | ||
| + | <code C> | ||
| { | { | ||
| - | IF (Npc_KnowsInfo(other,DIA_Dr_Test_110_Hello) | + | IF (Npc_KnowsInfo(other,DIA_Dr_Test_110_Hello) |
| - | && (Npc_HasItems(other,ItMi_Gold) >= 5) | + | && (Npc_HasItems(other,ItMi_Gold) >= 5) |
| - | || (Npc_HasItems(other,ItMi_InnosStatue) >= 1) | + | || (Npc_HasItems(other,ItMi_InnosStatue) >= 1) |
| - | { | + | { |
| - | return TRUE; | + | return TRUE; |
| - | }; | + | }; |
| - | }; | + | </code> |
| Hier würde sich das so lesen: | Hier würde sich das so lesen: | ||
| Zeile 57: | Zeile 59: | ||
| Für geübte Laien hier mal die Profi-Variante der Erklärung: | Für geübte Laien hier mal die Profi-Variante der Erklärung: | ||
| - | func int Npc_HasItems(var c_npc n0, var int iteminstance) | + | <code C>func int Npc_HasItems(var c_npc n0, var int iteminstance)</code> |
| var c_npc n0 bedeutet einfach nur, dass man da other (für den Helden) oder self (für den NPC) einsetzen muss (obwohl letzteres nicht unbedingt häufig verwendet wird). | var c_npc n0 bedeutet einfach nur, dass man da other (für den Helden) oder self (für den NPC) einsetzen muss (obwohl letzteres nicht unbedingt häufig verwendet wird). | ||
| Zeile 66: | Zeile 68: | ||
| ------ | ------ | ||
| - | == Operatoren == | + | ===== Operatoren ===== |
| In Daedalus gelten die selben Operatoren wie in C++: | In Daedalus gelten die selben Operatoren wie in C++: | ||
| + | <code C> | ||
| == Gleich | == Gleich | ||
| != ungleich | != ungleich | ||
| Zeile 76: | Zeile 78: | ||
| <= kleiner oder gleich | <= kleiner oder gleich | ||
| < kleiner | < kleiner | ||
| + | </code> | ||
| Einiges davon ist sicher schon vom Mathematikunterricht bekannt. | Einiges davon ist sicher schon vom Mathematikunterricht bekannt. | ||