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] 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. |