Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
quickstart:skripte:abfragen [2015/08/18 22:15] 127.0.0.1 Externe Bearbeitung |
quickstart:skripte:abfragen [2017/01/09 16:59] 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. | ||