Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
quickstart:skripte:kampf-ki [2015/08/18 22:15] 127.0.0.1 Externe Bearbeitung |
quickstart:skripte:kampf-ki [2016/02/07 22:25] (aktuell) milgo |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | == Einleitung == | + | ===== Kampf-KI verbessern ===== |
| - | In diesem (kurzgehaltenem) Tutorial werde ich euch zeigen, wie ihr die NPCs etwas "Inteligenter" kämpfen lasst (eher dass die NPCs mehr blocken). | + | In diesem (kurzgehaltenem) Tutorial werde ich euch zeigen, wie ihr die NPCs etwas "intelligenter" kämpfen lasst (eher dass die NPCs mehr blocken). |
| Ich werde erst den Code dazu schreiben, und hinterher erklären. | Ich werde erst den Code dazu schreiben, und hinterher erklären. | ||
| - | == Was sollte ich können? == | + | ==== Was sollte ich können? ==== |
| - | Es sollte reichen wenn man neue Funktionen o.a. schreiben kann. | + | Es sollte reichen wenn man neue Funktionen schreiben kann. |
| - | == Jetzt gehts los! == | + | ==== Jetzt gehts los! ==== |
| - | Als erstes öffnet ihr die [GDATA]/_work/data/Scripts/Content/AI/Human/ZS_Human/ZS_Attack.d! | + | Als erstes öffnet ihr die ''[GDATA]/_work/data/Scripts/Content/AI/Human/ZS_Human/ZS_Attack.d''! |
| - | In dieser Datei gibt es die Funktion: AI_Attack (self); nach der wir suchen müssen. | + | In dieser Datei gibt es die Funktion: ''AI_Attack (self);'' nach der wir suchen müssen. |
| Das sollte etwa so aussehen: | Das sollte etwa so aussehen: | ||
| - | [[Kasten GML]]if (other.aivar[AIV_INVINCIBLE] == FALSE) // Nur NSCs angreifen, die NICHT im Talk sind | + | |
| + | <code C> | ||
| + | if (other.aivar[AIV_INVINCIBLE] == FALSE) // Nur NSCs angreifen, die NICHT im Talk sind | ||
| { | { | ||
| //führt Angriff mit Waffe oder Spell aus (Aktion wird durch FAI bestimmt) | //führt Angriff mit Waffe oder Spell aus (Aktion wird durch FAI bestimmt) | ||
| Zeile 17: | Zeile 19: | ||
| { | { | ||
| Npc_ClearAIQueue(self); //killt den letzten AI_Attack-Befehl, verhindert z.B. stumpfes weiterrennen. | Npc_ClearAIQueue(self); //killt den letzten AI_Attack-Befehl, verhindert z.B. stumpfes weiterrennen. | ||
| - | };[[Kasten Ende]] | + | }; |
| + | </code> | ||
| In der if Abfrage baut ihr nun einige andere ein, z.B. ob der Hero gerade schlägt, und eine bestimmte Variable den richtigen Wert hat! Dies könnte so aussehen: | In der if Abfrage baut ihr nun einige andere ein, z.B. ob der Hero gerade schlägt, und eine bestimmte Variable den richtigen Wert hat! Dies könnte so aussehen: | ||
| - | [[Kasten GML]]if (other.aivar[AIV_INVINCIBLE] == FALSE) // Nur NSCs angreifen, die NICHT im Talk sind | + | |
| + | <code C> | ||
| + | if (other.aivar[AIV_INVINCIBLE] == FALSE) // Nur NSCs angreifen, die NICHT im Talk sind | ||
| { | { | ||
| var int Variable; Variable = Hlp_Random(10); | var int Variable; Variable = Hlp_Random(10); | ||
| Zeile 44: | Zeile 49: | ||
| { | { | ||
| Npc_ClearAIQueue(self); //killt den letzten AI_Attack-Befehl, verhindert z.B. stumpfes weiterrennen. | Npc_ClearAIQueue(self); //killt den letzten AI_Attack-Befehl, verhindert z.B. stumpfes weiterrennen. | ||
| - | };[[Kasten Ende]] | + | }; |
| + | </code> | ||
| MfG Marlus | MfG Marlus | ||
| - | Ich werde bald weiterschreiben, aber der Grundbaustein für vernünftig blockende NPCs ist schon da. | ||