Download der Slim AI 1.1* für fRo:

*angepasst für fRo Renewal

Download der Slim AI 1.0 für alle Server außer fRo:

-----------------------------------------------------------------------------------------------
-- SLIM AI
-- Version 1.0
-- Autor: Paul 'LePrau' Wiedebusch
--        leprau@leprau.de
--
-- Dokumentation
-----------------------------------------------------------------------------------------------

    Copyright (C) 2008-2012  Paul Wiedebusch

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see http://www.gnu.org/licenses/
	
	[Die Lizenz in Englisch befindet sich als Kopie auch in der Datei gpl.txt]

===============================================================================================
Inhalt:
-----------------------------------------------------------------------------------------------

Vorwort
1. Was ist die Slim AI?
    a) Allgemeines zur Slim AI
    b) Vorteile der Slim AI
2. Was muss eingestellt werden?
    a) Das Config-File für Homunculus und Mercenary
	b) Die Monsterliste
3. Wie kann die AI ingame steuern?
	a) Befehle ingame erteilen
	b) erweiterte Befehle mit dem "Zahlenfeld"-System
	c) Verhalten gegen einzelne Monster anpassen
4. Weitere Details

===============================================================================================
Vorwort:
-----------------------------------------------------------------------------------------------

Diese Datei und die Kommentare in den Skripten (.lua Dateien) sind alles an Support 
was ich prinzipiell für die Slim AI anbiete. Geht davon aus, dass weitere Anfragen
bezüglich der Slim AI an mich in aller Regel ignoriert werden.

Die AI ist zu nehmen "wie sie ist", es besteht kein Anspruch auf Hilfe, Support,
Anpassung oder Erweiterung von Funktionen, und es gibt keinerlei Gewährleistung dass
die Slim AI korrekt funktioniert, oder den Regeln des jeweiligen Ragnarok-Servers 
entspricht. 

Jedwede Verantwortung die durch die Nutzung der Slim AI entstehen könnte
trägt der Nutzer selbst.

===============================================================================================
1. Was ist die Slim AI?
-----------------------------------------------------------------------------------------------
a) Allgemeines zur Slim AI
-----------------------------------------------------------------------------------------------

Die Slim AI habe ich angefangen zu programmieren, als die Homunculi auf euRo eingeführt wurden.
Damals gab es zwei bekanntere AIs, die Mir AI und die Rampage AI, außerdem einige kleinere die
aber eher unbekannt sind (Ludin, ZenAI).

Allerdings haben mich sowohl an der Rampage als auch an der Mir AI von Anfang an einige Dinge 
gestört, und viele Kleinigkeiten die ich mir damals gewünscht hätte gab es einfach nicht.

Also habe ich kurzerhand meine eigene AI geschrieben, mit Blackjack und Nutten! Das Ergebnis 
seht ihr nun vor euch: Die Slim AI.

Der Name ist leicht erklärt, der Alchemist mit dem die AI zuerst zum Einsatz kam ist mein 
Pure Potter mit dem Namen Slim Potion, sein Homunculus wurde Slim Pudding getauft. Damit dass 
die AI besonders schlank oder schnell oder klein ist, hat der Name also nichts zu tun.

Als die Mercenaries eingeführt wurden, habe ich einige Anpassungen gemacht, und prinzipiell 
kann die AI auch mit Mercenaries gut umgehen, sofern man nicht auf Funktionen wie Mobben und mit
Mass-Skill killen, oder Monster kiten angewiesen ist. 
Wer die AI für Mercenaries deaktivieren möchte, benennt einfach die AI_M.lua um oder ersetzt sie 
durch die Skripte einer anderen AI.
Die Dateien, die für die Slim AI wichtig sind, fangen alle mit SLIM_ an, daher sollte es keine 
Probleme geben wenn z.B. die Azzy AI oder ähnliche in den Ordner kopiert werden.

An den meisten Stellen wo ich im Folgenden von "Homunculus" spreche, darf auch "Mercenary" 
eingesetzt werden, der Kern der AI verhält sich in beiden Fällen identisch.

-----------------------------------------------------------------------------------------------
b) Vorteile der Slim AI
-----------------------------------------------------------------------------------------------
Die Slim AI wurde entwickelt um sowohl das AFK leveln (pfui bäh!!!1111 ;P ) zu ermöglichen, als 
auch beim aktiven leveln gut zu unterstützen.

Eines der deutlichsten Merkmale der Slim AI ist, dass man viele wichtige Einstellungen im Spiel 
machen kann, und prinzipiell die AI direkt benutzen kann ohne einmal an eine Config-Datei zu 
gehen.

Ingame lässt sich steuern, welche Monster angegriffen werden sollen, wie oft Skills (z.B. 
Caprice) gegen ein bestimmtes Monster benutzt werden, welche anderen Spieler Freunde sind (und 
damit nicht vom Killsteal-Schutz betroffen sind) und auch die Art, wie das Homunculus läuft 
wenn es nichts zu tun hat lässt sich ingame ändern.

Die AI hat eine recht detaillierte Prioritäten-Erkennung, um z.B. Freunde bevorzugt zu
unterstützen, starke Monster zuerst anzugreifen usw.

Ein Feature, was meines Wissens keine andere AI hat, ist der "Lead" Modus - das Homunculus kann 
vor dem Alchemisten herlaufen, und gerät so als erstes in das Blickfeld von Monstern. Damit ist 
es mir z.B. möglich gewesen, als Pure Potter aktiv in Bio 2 zu leveln - Slim Pudding ist
vorgelaufen, die Monster haben ihn angegriffen, und ich habe aus der Deckung mit weißen Pots
geworfen.

Das neueste Feature ist die Fähigkeit, dass Mercenaries und Homunculi, die auf dem selben 
Rechner gestartet wurden, sich gegenseitig "erkennen" und mit der richtigen Einstellung auch
unterstützen! Drei Alchemisten auf Muscovia mit Mercenaries? Kein Problem! Die Slim AI erkennt
automatisch dass die Homunculi und Mercenaries für den selben Spieler kämpfen, und sorgt dafür
dass sie sich gegenseitig helfen!

Außerdem ist die Art der Bewegung, wenn das Homunculus nichts zu tun hat, kein stumpfes im Kreis
rennen. Stattdessen läuft das Homunculus alle paar Sekunden zufällig rum, und wirkt dadurch viel
mehr wie ein echtes Haustier.

===============================================================================================
2. Was muss eingestellt werden?
-----------------------------------------------------------------------------------------------
a) Das Config-File für Homunculus und Mercenary
-----------------------------------------------------------------------------------------------
Prinzipiell läuft die AI direkt, ohne dass ihr komplizierte Einstellungen machen müsst.
Nur wenn ihr etwas Fein-Tuning betreiben wollt könnt ihr euch die Config-Dateien mal anschauen.

Da die AI sowohl Mercenaries als auch Homunculi unterstützt, gibt es zwei Config-Files, einmal
CONFIG_MERC.lua für Mercenaries und dann CONFIG.lua für das Homunkulus.
Bearbeiten kann man die Dateien mit jedem beliebigen Texteditor (nicht MS Word!).
In den Dateien stehen eine Reihe von Einträgen in der Art
	CONFIG.EINTRAG = 0
Der Wert nach dem Gleichheitszeichen kann angepasst werden, und welcher Wert wofür ist steht in
dem Kommentarblock oben. 
Zum Beispiel kann mit dem Wert CONFIG.FOLLOW_LEAD eingestellt werden, ob und wie weit das 
Homunculus vorlaufen soll. 0 bedeutet, dass es nicht vorläuft, sondern (wie bei anderen AIs) 
hinterherrennt. 1 oder mehr bewirkt, dass euer Homu die Anzahl der Felder vor dem Alchi 
herläuft.

Wenn die Config-Werte CONFIG.SUPPORT_MERCENARY bzw. CONFIG.SUPPORT_HOMUNCULUS auf 1 gestellt 
sind, helfen sich die Mercs und Homus vom selben Spieler gegenseitig, ohne dass ihr etwas 
einstellen müsst. Das ist bereits die Standard-Einstellung, ihr könnt mit SUPPORT_HOMUNCULUS = 0
auch einstellen dass nur das Homunculus dem Mercenary hilft, aber nicht umgekehrt.
Das ist nützlich, wenn der Merc z.B. nur auf den Alchi aufpassen soll, aber dem Homu keine EXP
klauen darf.

Die CONFIG.SPAWN_DELAY Option kann genutzt werden, um den Spawnschutz für einen Mercenary oder
das Homunculus zu nutzen. Solange der Spieler sich nicht bewegt und die angegebene Zeit (in
Millisekunden) nicht vorbei ist, wird auch der Mercenary sich nicht bewegen.


-----------------------------------------------------------------------------------------------
b) Die Monsterliste
-----------------------------------------------------------------------------------------------
Um das Verhalten gegenüber bestimmten Monstern zu steuern, gibt es die Monsterliste. Dort sind
allerdings bei weitem noch nicht alle Monster eingetragen, aber sobald ihr im Spiel ein Monster
angreifen lasst wird es nachgetragen. Neu eingetragene Monster stehen in der Liste dann als
"unbekannt", aber anhand der ID vorne kann man rausfinden welches Monster es jeweils ist, z.B.
auf http://ro-db.com/?data=monstres

monsterlist[1031] = {"PoPoring",2,1,15}

Wichtig ist übrigens, das Mercenaries den Monstertyp nicht erkennen können! Für einen Mercenary
sind Poporinge und Orc Lord nicht unterscheidbar! Das kann nur ein Homunculus.
Die Monster mit der ID 0 und 1 sind die "Standard"-Monster für das Homunculus (0) oder den 
Mercenary (1). Wenn also ein Monster nicht bekannt ist, wird das verhalten beim Standardmonster
verwendet.

Die Einträge bestehen aus einer Liste mit 4 Werten:
{"Name des Monster", Angriffs-verhalten (0-2), Skill-Verhalten (0-4), Priorität}

Der Name des Monsters ist nur für euch, damit ihr ein bestimmtes Monster schneller findet.
Das Angriffsverhalten hat 3 Einstellungen je Monster:
0 = Passiv. 
    Dieses Monster wird niemals angegriffen. Unter keinen Umständen. Es wird komplett ignoriert.
	Hilfreich z.B. für Plants oder Pilze.
1 = Defensiv
    Dieses Monster wird nicht angegriffen, aber wenn es das Homu, den Besitzer oder einen Freund
	angreift, dann kann zurückgehauen werden
2 = Aggressiv
    Wenn dieses Monster in Sicht kommt ist es in potenzieller Gegner (oder ein Opfer) und darf
	direkt angegriffen werden

Das Skillverhalten hat 5 Einstellungen:
0 = niemals Skills bei dem Monster verwenden
1 = Nur einen einzigen Skill auf das Monster machen, und nur wenn die SP randvoll sind
2 = jedesmal wenn ein Monster angegriffen wird am Anfang einen Skill machen, danach nur normal
    angreifen
3 = bei diesem Monster abwechselnd Skill und paarmal draufhauen, der Abstand der Skills kann
    in CONFIG.DELAY_3_SKILL in Millisekunden eingestellt werden.
4 = Bei diesem Monster nur mit Skills angreifen, erst wenn die SP alle sind normal weiter hauen

Die Priorität hat folgenden Sinn:
Je höher der Wert ist, umso "gefährlicher" ist ein Monster. Wenn zwei verschiedene Monster das
Homunculus angreifen, dann wird zuerst das mit der höchsten Priorität getötet.

Eine Priorität unter 0 bedeutet, dass das Monster "ungefährlich" ist und ignoriert werden kann,
solange noch andere Monster in Sicht sind.

Zu der Priorität werden übrigens auch noch Config-Werte addiert:
- jedes Monster dass das Homunculus angreift, bekommt den Wert aus CONFIG.DEFEND_SELF_PRIO dazu
- jedes Monster dass den besitzer angreift, erhält den Wert CONFIG.DEFEND_OWNER_PRIO addiert
- jedes Monster dass einen Freund angreift, kriegt den Wert CONFIG.DEFEND_FRIEND_PRIO dazu

Dadurch kann man steuern, ob Monster des gleichen Typs zuerst vom Homu, vom Besitzer oder von
einem Freund gekillt werden.

Wenn die Priorität eines Monster unter 0 liegt, kann das Homunculus auch weitere Monster mobben,
bevor es den bereits gesammelten Mob killt. Wieviele Monster es zeitgleich maximal tanken darf,
lässt sich über CONFIG.MAX_MOB_SIZE einstellen. Achtung, wenn das Homunculus mehrere Monster an
sich hat und getroffen wird, kann es Posi-Bugs bekommen und reagiert dann manchmal nicht mehr!

Wenn ihr irgendeinen Bewegen-Befehl gebt, könnt ihr es aber aus dem Posibug befreien.


===============================================================================================
3. Wie kann die AI ingame steuern?
-----------------------------------------------------------------------------------------------
a) Befehle ingame erteilen
-----------------------------------------------------------------------------------------------
Da viele Einstellungen in den Datein mühsam sind, und man das Homunculus neu rufen muss (oder
man reloggt), damit die AI neu geladen wird, habe ich eine Möglichkeit eingebaut, einige der
Einstellungen im Spiel zu machen.

Leider hat man nur sehr begrenzte Möglichkeiten, um dem Homunculus Befehle zu erteilen:
1. Zu einer Position bewegen mit ALT+Rechtsklick (Alt+Linksklick beim Mercenary)
2. Einen Skill mit einem bestimmten Level auf ein bestimmtes Monster casten
3. Ein Monster angreifen ALT + doppelter Rechtsklick
4. Standby (ALT+T)

Um verschiedene Funktionen zu ermöglichen, habe ich mir das "Zahlenfeld-System" bei der 
Rampage-AI abgeschaut. Nordet die Karte, so dass "oben" auf der Minimap auch "oben" auf eurem
Bildschirm ist. Das geht am einfachsten indem ihr einen Doppelklick mit der Rechten Maustaste
macht.

Das einfachste Kommando an das Homunculus ist "Position halten": Wenn ihr zweimal nacheinander
auf dieselbe Zelle mit ALT+Rechtsklick klickt, läuft euer Homunculus dort hin, und bleibt dort
solange stehen bis ihr aus dem Bild lauft, oder ihm einen neuen Befehl gebt. Probiert das als
erstes aus. Sollte das Homunculus sich nach ein paar Sekunden wieder wegbewegen, hat es noch
nicht geklappt. Dann war zwischen den Klicks vielleicht zuviel Zeit, oder ihr habt nicht die
selbe Zelle getroffen.
Entscheidend ist dass ihr zwischen den Klicks etwa eine halbe bis ganze Sekunde wartet, dann
sollte es eigentlich klappen. Wenn ihr zu schnell klickt bekommt die AI das nicht immer mit,
da Ragnarok der AI nur etwa 10-20 mal pro Sekunde Klicks weiterleitet.

Nachdem ihr es geschafft habt, eurer Homunculus auf einer Stelle still stehen zu lassen, könnt
ihr euch mit dem nächsten Abschnitt befassen:


-----------------------------------------------------------------------------------------------
b) erweiterte Befehle mit dem Dialcontrol-System
-----------------------------------------------------------------------------------------------

Betrachtet die Zellen um euch herum - Die Ragnarok-Spielwelt besteht aus lauter kleinen,
quadratischen Feldern, wie ein riesiges Schachbrett. Normalerweise sollte der Mauszeiger die
Felder, auf die ihr zeigt, mit einem grünen Rahmen hervorheben.

Zum Steuern des Homunculus werden von der Slim AI die 8 Felder um den Spieler herum verwendet.
Wenn man die Felder so nummeriert, wie die Tasten auf dem Nummernblock der Tastatur, und der 
Alchemist dabei auf der [5] steht, dann kann man Befehle durch Nummern ausdrücken:

[2] und [8] bedeutet dann z.B., dass man das Homunculus einmal auf das Feld unter dem Spieler,
und danach auf das Feld über dem Spieler bewegen lässt. 
Genau so funktionieren die meisten Kommandos bei der Slim AI!

Ein Bild zum Verständnis:



Dieses System bezeichne ich ab jetzt als Dialcontrol - also "Wählschreiben-Steuerung".

Ein einfacher Befehl, den ihr mit einem anderen Spieler probieren könnt, ist "Spieler verfolgen".
Die Befehlsfolge dafür lautet [2-2-2] und dann mit ALT+Rechtsklick in die Nähe des anderen 
Spielers. Sobald der Spieler sich bewegt, sollte das Homunculus ihn verfolgen!

Probiert das solange, bis es geklappt hat. Sobald man das Prinzip einmal verstanden hat, ist
es ganz einfach!

Der Klick auf den Spieler muss nicht exakt treffen, es ist nur wichtig dass der Spieler am
nächsten zu dem Feld ist das man angeklickt hat. Man kann also Leute anvisieren die sich gerade
bewegen, oder die man nicht genau trifft.

Folgende Befehle sind standardmäßig eingebaut:

Dialcontrol "223" + Klick auf Spieler 
    Spieler der Friendlist hinzufügen (Spieler wird dann KSed)
    Das Homunculus läuft gegen den Uhrzeigersinn um den Spieler um anzuzeigen dass es jetzt ein
    Freund ist. Fügt man jemanden aus Versehen hinzu, passiert nichts weiter, das Homu zeigt es
    aber an.

Dialcontrol "221" + Klick auf Spieler
    Spieler aus der Friendlist entfernen (Spieler wird nicht mehr KSed)
	Das Homunculus läuft zweimal quer durch den Spieler durch um anzuzeigen dass er aus der
	Friendlist gestrichen wurde
	
Dialcontrol "222" + Klick auf Spieler
    Spieler verfolgen - weiter oben wurde beschrieben was es genau bewirkt.
	Dürfte viele überraschen, und auch wenn es das sinnloseste Feature in der AI ist, so ist
	es mit Sicherheit eines der unterhaltsamsten!

Dialcontrol "444" 
	Defensiven Modus aktivieren, das Standardmonster wird nur noch defensiv bekämpft.
	Das Homunculus stellt sich kurz links neben den Spieler.
	In der MONSTERLIST.lua wird im Hintergrund das Angriffsverhalten für Monster 0 (oder 1)
	auf den Wert 1 gesetzt.
	
Dialcontrol "666"
    Aggressiven Modus aktivieren
	Das Homunculus stellt sich kurz rechts neben den Spieler.
	In der MONSTERLIST.lua wird im Hintergrund das Angriffsverhalten für Monster 0 (oder 1)
	auf den Wert 2 gesetzt.

Dialcontrol "6842" 
    Idle-Bewegung zum Kreis ändern, wenn das Homu nichts zu tun hat läuft es gegen den
	Uhrzeigersinn im Kreis. Hält nur bis zum Relog.
	
Dialcontrol "9317"
    Idle-Bewegung zur Rechteck-Lauf-Funktion ändern.


Dialcontrol "939"  
    Idle-Bewegung zum Standard-Rumlaufen ändern, wo das Homunculus alle 5 Sekunden an eine
	zufällige Stelle in der Nähe läuft.

-----------------------------------------------------------------------------------------------
c) Verhalten gegen einzelne Monster anpassen
-----------------------------------------------------------------------------------------------

Mit 444 oder 666 kann man zwar steuern, wie gegen alle Monster, für die es noch keine eigenen
Regeln gibt, verfahren wird, aber um ein spezielles Monster immer angreifen oder nie angreifen
zu lassen, gibt es auch recht einfache Wege:

(Alles was jetzt kommt gilt ausnahmsweise NICHT für Mercenaries!)

Sobald man mit der Slim AI dem Homunculus durch ALT+doppelten Rechtsklick sagt, dass es ein 
Monster angreifen soll, wird es sich merken "Dieses Monster darf ich IMMER angreifen!".
Im Hintergrund wird dann eine neue Zeile in der MONSTERLIST.lua angelegt, wo die Monster-ID,
"unbekannt" als Name und das Angriffs-Verhalten mit 2 drin steht. Wenn es das Monster bereits
in der Liste gab, wird lediglich das Angriffsverhalten auf 2 geändert.

Um zu verhindern, dass das Homunculus ein bestimmtes Monster von sich aus angreift, muss ein
etwas anderers Kommando gegeben werden, was aber auch in brenzligen Kämpfen noch machbar sein
sollte:

Dialcontrol 8 und ALT+Rechtklick "vom Monster weg" setzt das Verhalten gegen das aktuell 
angegriffene Monster auf defensiv. "Vom Monster weg" bedeutet, dass man auf die dem Monster
abgewandten Seite des Spielfeldes klicken muss.

Etwas anschaulicher betrachtet: Wenn das Monster (und das Homunculus) links vom Spieler sind,
muss man einfach wahllos ein Feld auf der rechten Seite des Bildschirms anklicken.
Sind Homu und Monster oberhalb vom Spieler, klickt man Dialcontrol 8 und dann unterhalb des 
Spielers.

Das Homunculus sollte danach mehrmals durch den Besitzer durchlaufen, so ähnlich wie die
Bewegung nach dem Löschen aus der Friendlist.

Um festzulegen wie das Homunculus mit Skills gegen ein Monster vorgeht, benutzt man einfach
aktiv den Angriffs-Skill (Caprice oder Moonlight) mit Level 1 - 5 auf das Monster.
Der Level (minus 1) entspricht dem Wert, der in die MONSTERLIST.lua eingetragen wird,
Skill-Level 1 entspricht also der Einstellung 0, niemals Skills gegen dieses Monster anwenden
und Skill Level 5 wäre dann Einstellung 4, verbrate alle SP an dem Monster bevor du normal
angreifst.

So könnt ihr mit steigendem Level steuern, dass z,B. Zenorcs nur noch einen einzigen Skill
abbekommen sollen, statt - wie vorher - abwechselnd Skills und normale Angriffe, oder auch
dass für Poporinge garkeine SP mehr verschwendet werden sollen.

===============================================================================================
4. Weitere Details
-----------------------------------------------------------------------------------------------





Hier endet die Erklärung, den Rest dürft ihr gerne durch Ausprobieren und Config-Werte ändern
herausfinden.

Es gibt noch diverse Einstellungen und Kleinigkeiten, die hier nicht aufgeführt sind - aber für
die normale Benutzung sollte eigentlich alles drin stehen.

Da die Slim AI unter der Gnu GPL 3 steht, könnt ihr sie auch beliebig anpassen, erweitern und
weiterverteilen - sofern die angepasste Version weiterhin unter der Gnu GPL 3 steht.
Und natürlich müsst ihr darauf hinweisen dass es eine modifizierte Version der Slim AI ist.

Ich wünsche euch viel Erfolg und Spaß mit euren Mercenaries und Homunculi!

Paul Wiedebusch

PS: Solange ihr mich nicht mit Fragen bombardiert, die durch diese Doku beantwortet sind,
freue ich mich natürlich immer über Feedback ;)