Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Letzte Überarbeitung Beide Seiten, nächste Überarbeitung | |||
quickstart:skripte:kampf-ki [2015/08/18 22:15] 127.0.0.1 Externe Bearbeitung |
quickstart:skripte:kampf-ki [2016/02/07 14:33] milgo |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | == Einleitung == | + | ==== Einleitung ==== |
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 "Inteligenter" 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 o.a. 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. |