Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Flyff
You last visited: Today at 10:54

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Tut] Automaton scripten für Neulinge

Discussion on [Tut] Automaton scripten für Neulinge within the Flyff forum part of the MMORPGs category.

Reply
 
Old   #1
 
Tom94's Avatar
 
elite*gold: 20
Join Date: Oct 2006
Posts: 1,002
Received Thanks: 1,462
[Tut] Automaton scripten für Neulinge

Automaton scripten für Neulinge

Wie auch bei dem resource manager tutorial ist mir heir langweilig... also mache ich mal wieder nen Tutorial (wird ja auch langsam ma Zeit ).

Automaton:
Den Automaton zieht ihr euch erstmal .

Nun gibt es 2 möglichkeiten: entweder ihr benutzt ein komplett neues script oder ihr fügt etwas zur example.atmt hinzu. Ich werde zuerst erläutern wie man die Grundvorraussetzungen für ein eigenes Script erfüllt. Den rest könnt ihr dann auf example.atmt und auf euer eigenes script beziehen.

Kapitel 1 und 2 NUR wenn ihr ein komplet neues script erstellt.


Inhaltsverzeichnis:


1. Kapitel - So gehts los
2. Kapitel - Erste Abstimmungen
3. Kapitel - Variablen
4. Kapitel - if - Abfragen
5. Kapitel - Funktionen
6. Kapitel - Mein erstes Command
7. Kapitel - Interaktion mit dem Spiel



1. Kapitel - So gehts los:

Erstellt eine neue Datei (keinen ordner) und nennt sie meinscript.atmt.
Solltet ihr eine Frage bekommen ob ihr den Dateityp wirklich ändern wollt, dann seid ihr richtig. Andernfalls geht auf Extras -> Ordneroptionen -> Ansicht. Dort nehmt ihr den Haken bei "Erweiterungen bei bekannten Dateitypen ausblenden" weg. Nun ändert den namen der Datei nochmal und bestätigt bei der Frage ob ihr den Dateityp wirklich ändern wollt.


2. Kapitel - Erste Abstimmungen:

Als erstes legt ihr 2 arrays (eine für die funktionen und eine für die variablen) an (Müsst ihr nicht verstehen, einfach machen).

Code:
local funktionenprefix = { }
local variablenprefix = { }
Die Prefixe die ihr benutzt werden bei euren Variablen benutzt, z.B. tomv.variable. "tomv" ist das prefix und "variable" der variablenname. Kein Problem wenn ihr nicht wisst was Variablen sind, wird noch erklärt.


3. Kapitel - Variablen:

Variablen kennen manche vielleicht schon aus dem Schulunterricht:
Es sind Buchstaben oder Wörter, denen ein bestimmter Wert zugeordnet wird, und der verändert werden sowie abgefragt werden kann.

Um das zu verdeutlichen:

Code:
variablenprefix.testvariable = 5
Nun hat die Variable "testvariable" (die unser prefix haben muss) den wert 5.
Man kann Variablen auch miteinander verrechnet werden lassen.

Code:
variablenprefix.faktor = 5
variablenprefix.faktor2 = 6
variablenprefix.produkt = variablenprefix.faktor * variablenprefix.faktor2
Hier wird erst die Variable "faktor" auf 5 gesetzt, dann die Variable "faktor2" auf 6 gestzt und schließlich die Variable "produkt" aus "faktor" und "faktor2" multipliziert. Somit ist das ergebnis 5 * 6 = 30

Aufgabe:
Definiere 3 Variablen. Die ersten beiden sind die Summanten und die dritte Variable soll die Summe der beiden ersten sein.


























Lösung:
Code:
variablenprefix.summant = 5
variablenprefix.summant2 = 6
variablenprefix.summe = variablenprefix.summant + variablenprefix.summant2
Das ganze geht mit Plus (+), Minus(-), Mal(*) und geteilt(/).


4. Kapitel - if-Abfragen:

If - Abfragen sind neben den Variablen die wichtigsten Elemente des Programmierens. Ohne sie könnten all unsere Programme gar nicht existieren.

Es ist eigentlich simpel, denn sie folgen folgendem Schema:

Code:
if (Bedingung) then
  -code-
end
Zum Beispiel:
Code:
if (1 == 1) then
  -code-
end
Eine if-abfrage MUSS immer mit einem "end" enden.

Trifft die Bedingung zu, so wird der inhalt der if-Abfrage ausgefürt, andernfalls wird er übersprungen:

Code:
if (1 == 1) then
  variablenprefix.test = 2
end
Wenn 1 = 1, dann wird die Variable "test" auf 2 gesetzt. Leicht oder?
Nun etwas komplexeres, da 1 ja logischerweise immer 1 ist...

Code:
if (variablenprefix.zahl >= 2) then
  variablenprefix.test = 2
end
Wenn "zahl" größer oder gleich 2 ist, dann wird "test" auf 2 gesetzt. Das geht auch mit 2 variablen.

Code:
variablenprefix.zahl = 5

if (variablenprefix.zahl2 == nil) then
  variablenprefix.zahl2 = 0
end

if (variablenprefix.zahl >= variablenprefix.zahl2) then
  variablenprefix.zahl2 = variablenprefix.zahl2 + 1
end
Hier lernen wir gleich ziemlich viel mehr:

Das "nil" in der ersten if-Abfrage hat jede Variable als Wert, wenn man ihr noch keinen Wert zugewiesen hat. Mit dieser Abfrage gehe ich sicher, dass "zahl2" wenn sie noch keinen Wert hat, den Wert 0 bekommt.

Wir sehen außerdem, dass "zahl" am anfang auf 5 gesetzt wird. In der 2. if-Abfrage wird geschaut, ob "zahl" größer oder gleich "zahl2" ist, wenn das zutrifft, wird "zahl2" um 1 erhöht (variablenprefix.zahl2 = variablenprefix.zahl2 + 1). Somit merken so manche, dass die 2. if-Abfrage nur 6 mal hintereinaner ausgeführt werden kann (der gesamte code wird natürlich von alleine mehrmals ausgeführt) bis der inhalt der 2. in-abfrage übersprungen wird.

Aufgabe:
Warum ist das so?
















Lösung:
Da "zahl2" in jedem Durchgang um eins erhöht wird, ist sie nach dem sechsten Durchgang auf 6 gesetzt worden. Somit ist "zahl" nicht mehr höher oder gleich "zahl2" und somit wird der inhalt nicht mehr ausgeführt.

Jetzt kommen wir zu dem "else" Befehl. Er ist ebenfalls wichtig in den if-Abfragen:

Code:
variablenprefix.zahl = 5

if (variablenprefix.zahl2 == nil) then
  variablenprefix.zahl2 = 0
end

if (variablenprefix.zahl >= variablenprefix.zahl2) then
  variablenprefix.zahl2 = variablenprefix.zahl2 + 1
else
  variablenprefix.durchgelaufen = "ja"
end
Wie du siehst, kann man Variablen auch einen text zuweisen, dieser wird jedoch in "" geschrieben, sonst gibt es fehler.
Nun jedoch zu "else". Vielleicht kannst du dir schon denken was es bedeutet:
Wenn in der if-Abfrage die bedingung nicht zutrifft und ein "else" in diesem schema vorhanden ist, so wird anstatt dem inhalt der if-Abfrage der inhalt des "else" ausgeführt. Das heißt:
Ist die if abfrage 6 mal durchgelaufen, wird beim 7. mal anstatt "zahl2" zu erhöhen, "durchgelaufen" auf "ja" gesetzt.

Es gibt auch den "else if" Befehl, der recht leicht ist.
Er bedeutet so viel wie "else", nur mit einer zusätzlichen bedingung:

z.b.:
Code:
if(1 == 2) then
  -code 1-
else if(1 > 2) then
  -code 2-
else
  -code 3-
end
Wenn 1 = 2 ist, wird "code 1" ausgeführt, ist 1 > 2, dann wird "code 2" ausgeführt. Ansonsten wird "code 3" ausgeführt.

Code:
if (variablenprefix.zahl >= variablenprefix.zahl2) or (variablenprefix.zahl2 >=  variablenprefix.zahl3) then
  -code-
end
Hier lernen wir den "or" befehl. Mit ihm können if-Abfragen an komplexität gewinnen: Er bedeutet so viel wie:
Der inhalt der if-Abfrage wird dann ausgeführt, wenn entweder die erste, oder die zweite oder auch beide bedingungen zutreffen.

Code:
if (variablenprefix.zahl >= variablenprefix.zahl2) and (variablenprefix.zahl2 >=  variablenprefix.zahl3) then
  -code-
end
Dies hier ist der "and" befehl. Er bedeutet:
Nur, wenn die erste UND die zweite Bedingung zutreffen, wird der inhalt der if-Abfrage ausgeführt

Für if-Abfragen gibt es folgende Operatoren:

< größer
> kleiner
== ist gleich (vorsicht, 2 gleichzeichen)
<= größer oder gleich
>= kleiner oder gleich
~= ist nicht gleich


Wenn du das alles verstanden hast, bist du schonmal weit genug für die basis des programmierens.


5. Kapitel - Funktionen:

Funktionen sind sozusagen die Essenz von automaton scripts. Befehle werden so definiert, dass die die funktionen ausführen, wir sind also schon ganz nah dran:

Code:
function funktionenprefix.testfunktion ( Arguments )
  -code-
end
wie ihr seht ist der Name dieser funktion ("testfunktion") wieder hinter einem Prefix (diesmal das funktionenprefix). Die funktion wird wie eine if-abfrage durch ein "end" abgeschlossen. Das "( Arguments )" bedeutet, dass in dieser funktion hinter dem befehl ein wert angegeben werden kann (aber nicht muss), und das dieser Wert verwendet werden kann. Er wird als Variable "Arguments" ohne prefix benutzt. Das Prefix ist nicht vorhanden, da es eine funktionsinterne Variable ist. Auf das "(Device)" müssen wir nicht eingehen.

Nun erdenken wir uns mal einen Code:

Code:
function funktionenprefix.testfunktion ( Arguments , Device )
  if(Arguments == "") or (Arguments == nil) then
    return true
  end
end
Auf "return true" muss nicht weiter eingegangen werden, es reicht zu wissen, dass es die funktion abbricht, sprich wenn keine Werte hinter dem Command abgegeben wurden die funktion nicht ausführt.

Code:
function funktionenprefix.testfunktion ( Arguments , Device )
  if(Arguments == "") or (Arguments == nil) then
    OutputF ( Device, NAME_Log, "No argument given.", Arguments )
    return true
  end
end
Auf OutputF müssen wir auch nicht eingehen. Es zeigt, wenn es nach diesme Schema benutzt wird eine nachricht im Chat an. Diese Nachricht kann natürlich beliebig verändert werden. Hier: Wenn keine werte angegeben wurden, wird ausgegeben: "No argument given.".

Code:
function funktionenprefix.testfunktion ( Arguments , Device )
  if(Arguments == "") or (Arguments == nil) then
    OutputF ( Device, NAME_Log, "No argument given.", Arguments )
    return true
  else
    if(Arguments > 5) then
      OutputF ( Device, NAME_Log, "The argument is bigger than 5.", Arguments )
    else
      OutputF ( Device, NAME_Log, "The argument is lower than 5.", Arguments )
    end
  end
return true
end
Diese Funktion gibt aus: "The argument is bigger than 5.", wenn der Wert hinter dem command größer als 5 ist, ansonsten gibt die funktion aus: "The argument is lower than 5.".

NICHT VERGESSEN: das return true am ende hinmachen!

Ich denke damit ist für den Anfang alles über die funktionen klar.


6. Kapitel - Mein erstes Command:

Man benutzt:
Code:
Register ( funktionenprefix, "rubrik" )
AddCommand ( funktionenname, "Commandname", "Art der eingabe", "Beschreibung" )
Nun packen wir das mal um, so dass wir ein komplettes script mit unserem ersten command haben:

Code:
local funktionenprefix = { }
local variablenprefix = { }

function funktionenprefix.testfunktion ( Arguments , Device )
  if(Arguments == "") or (Arguments == nil) then
    OutputF ( Device, NAME_Log, "No argument given.", Arguments )
    return true
  else
    if(Arguments > 5) then
      OutputF ( Device, NAME_Log, "The argument is bigger than 5.", Arguments )
    else if(Arguments < 5) then
      OutputF ( Device, NAME_Log, "The argument is lower than 5.",Arguments )
    else
      OutputF ( Device, NAME_Log, "The argument is 5.",Arguments )
    end
  end
return true
end

Register ( funktionenprefix, "commands" )
AddCommand ( funktionenprefix.testfunktion, "testcommand", "<ID>", "Checks if the number is bigger or smaller than 5." )
Jetzt das script laden und ingame das command "testcommand" probieren. Wenn ihr alles verstanden habt könnt ihr ja mal anfangen zu experimentieren. Ich werde morgen mit dem Tutorial weitermachen.


7. Kapitel - Interaktion mit dem Spiel:

Bis jetzt haben die Scripts ja noch nichts mit FlyFF zu tun und ich glaube kaum, dass ihr mit einem Bot für ein online mmorpg einfach nur Zahlenjonglieren wollt...
Also zeige ich euch hier, wie ihr werte aus dem Spiel herausnimmt und auch teilweise verändert:

Wir beschäftigen uns zuerst mit "GetPlayer ()" und "GetTarget ()". Ja, ihr seht richtig: in die Klammern kommt nichts, sie sind aber trotzdem vorhanden!

"GetPlayer ()" gibt uns unseren Chara aus und "GetTarget ()" gibt und unser Ziel aus, wenn wir kein Ziel haben, wird der wert "nil" ausgegeben.
Das verstehen wahrscheinlich nicht alle, deshalb werde ich das an einem kurzen Beispiel erläutern:

Code:
if(GetTarget () == nil)
  variablenprefix.ziel = GetPlayer ()
else
  variablenprefix.ziel = GetTarget ()
end
Dies schreibt unser Ziel in die Variable "ziel". Haben wir kein Ziel, so werden wir selber in die Variable "ziel" gebracht. Das hat einen hohen Nutzen: Darauf gründen autobuf und autoheal scripts!

Code:
function funktionenprefix.heal ( Device )
  if(GetTarget () == nil)
    variablenprefix.ziel = GetPlayer ()
  else
    variablenprefix.ziel = GetTarget ()
  end
UseSkill ( variablenprefix.ziel , 3 )
return true
end
UseSkill folgt dem Schema: UseSkill ( Spieler , SkillID ).
Demnach führt dieses Script den skill heal auf unser Ziel (oder wenn keins markiert ist auf uns selbst) aus.
__________________________________________________ ________

Update: Inhaltsverzeichnis hinzugefügt und im "else if" Abteil mehr erklärt.

Update 2: Kapitel "Interaktion mit dem Spiel" hinzugefügt.


Hoffe das hilft euch faulen säcken auf die sprünge

mfg Tom94

-sticky-
Tom94 is offline  
Thanks
24 Users
Old 09/24/2008, 21:46   #2
 
Gianotti's Avatar
 
elite*gold: 20
Join Date: Mar 2008
Posts: 1,455
Received Thanks: 140
ich könnte dir jetzt geld dafür geben das ist so eine gute anleitung


dankeeee jetzt kann ich endlich mein vollauotmatisch-buff script machen^^
Gianotti is offline  
Old 09/24/2008, 21:49   #3
 
Tom94's Avatar
 
elite*gold: 20
Join Date: Oct 2006
Posts: 1,002
Received Thanks: 1,462
also mit buffen is noch nxi drinne aber das kommt noch
Tom94 is offline  
Old 09/24/2008, 21:54   #4
 
Gianotti's Avatar
 
elite*gold: 20
Join Date: Mar 2008
Posts: 1,455
Received Thanks: 140
Quote:
Originally Posted by Tom94 View Post
also mit buffen is noch nxi drinne aber das kommt noch
ich versuch erstma das was dort drin steht dann versuch ich mehr aber ich dank dir nochma für das tut
Gianotti is offline  
Old 09/25/2008, 11:13   #5
 
Aibatt's Avatar
 
elite*gold: 0
Join Date: Jun 2008
Posts: 425
Received Thanks: 115
musst dir nix bei denken tom gianotti is immer son dickschädel wie ich xDDDD
Aibatt is offline  
Old 09/25/2008, 12:20   #6
 
Alisami's Avatar
 
elite*gold: 19
Join Date: Sep 2007
Posts: 1,525
Received Thanks: 1,058
Gutes Tutorial Respekt
Alisami is offline  
Old 09/25/2008, 14:25   #7
 
Gianotti's Avatar
 
elite*gold: 20
Join Date: Mar 2008
Posts: 1,455
Received Thanks: 140
Quote:
Originally Posted by Aibatt View Post
musst dir nix bei denken tom gianotti is immer son dickschädel wie ich xDDDD
xD das stimmt
Gianotti is offline  
Old 09/26/2008, 13:09   #8
 
Gianotti's Avatar
 
elite*gold: 20
Join Date: Mar 2008
Posts: 1,455
Received Thanks: 140
sry für doppelpost aber ich hab jetzt mein blade script fertig



also das macht sowas:alle merc and blade buffs
dann stag

nach 5min stog

wieder buffen und wieder stag

ist zwar noch net viel aber es geht^^


nur dann stagt er ewig weiter wie kann ich es einstellen dass er wieder von vorn beginnt
Gianotti is offline  
Old 09/26/2008, 15:44   #9
 
elite*gold: 0
Join Date: Jun 2008
Posts: 201
Received Thanks: 2
Definitiv geleecht.
Blanas is offline  
Old 09/26/2008, 16:37   #10
 
elite*gold: 271
Join Date: Mar 2008
Posts: 9,459
Received Thanks: 2,082
1. es gibt doch den edit button xDD und 2.
Quote:
Originally Posted by Blanas View Post
Definitiv geleecht.
das interessiert hier keinen ob das deine meinung ist ich kenne gianotti einigermaßen und er is eig net der typ der leeched und es dann als seines verbreitet
und 3. das tut is sehr gut bekommst n thanks dafür^^
Mark- is offline  
Old 09/26/2008, 16:53   #11
 
Tom94's Avatar
 
elite*gold: 20
Join Date: Oct 2006
Posts: 1,002
Received Thanks: 1,462
Quote:
Originally Posted by Blanas View Post
Definitiv geleecht.
Hast du das auf mein Tut oder auf Gianotti bezogen? Wenn auf mein Tut, dann vergleich bitte die Post daten und sag mir den link, so dass ich mich beschweren kann.

Andernfalls würde ich davon abraten solche Beiträge zu schreiben, denn Gianotti hat ja nichtmal was public gestellt.

@Gianotti
Wenn du ein problem hjast, könntest du mir dann bitte das script geben, so dass ichs mir anguggen kann?
Tom94 is offline  
Old 09/27/2008, 22:49   #12
 
FreeCoder's Avatar
 
elite*gold: 14
Join Date: Sep 2007
Posts: 629
Received Thanks: 433
Abend ihr seid ja alle Automaten experten. Tom ne frage ich habe vesucht bei deinem "attack all" script die schleife so zu änder das er nicht nur einmal angreift aber
weiss nicht genau wo ich die richtige stelle ist xD. Kannst du mir mal helfen schade das es nicht auf C++ ist.
FreeCoder is offline  
Old 09/28/2008, 09:26   #13
 
Tom94's Avatar
 
elite*gold: 20
Join Date: Oct 2006
Posts: 1,002
Received Thanks: 1,462
joa c++ wäre auf jeden fall leichter. hab ja selber nie ein lua tutorial von vorne gesehen sondern nur alles draus geschlossen xP
wegen der schleife:
möchtest du dass er ein monster öfters angreift oder einfach den zyklus wiederholt?
Tom94 is offline  
Old 09/28/2008, 10:15   #14
 
FreeCoder's Avatar
 
elite*gold: 14
Join Date: Sep 2007
Posts: 629
Received Thanks: 433
ich möchte die Stelle wieerhollen lassen wo er dem Automaton sagt greif die Monster an dann würde ich das so ändern das die voraussetzung immer erfühlt ist und somit er immer weiter angreift ^^.
FreeCoder is offline  
Old 09/28/2008, 12:50   #15
 
Tom94's Avatar
 
elite*gold: 20
Join Date: Oct 2006
Posts: 1,002
Received Thanks: 1,462
schau ma in meinem automatons script thread. da is das command continous drin (startattackall und stopattackall)
Tom94 is offline  
Reply


Similar Threads Similar Threads
[Service]Ich helfe Neulinge
05/31/2010 - League of Legends - 7 Replies
Wenn ihr wollt das ich euch helfe müsst ihr mir eine pn schicken und ich gebe euch einen Link auf den ihr euch anmeldet mit diesen acc müsst ihr das 10 lvl erreichen und ich helfe euch das zutun und nacher auch noch Warum ich sowas mache ? Ich Spiele schon seit der ersten Beta (ca 8 Monate her) LoL und hab auch jeden Char schon öfters gespielt. Wie Helfe ich euch? Ihr könnt mir eine pn schicken im Forum mich dann in Skype,ICQ adden oder das wir uns auf einen TS Server Treffen Warum...
Frage&Antwort für neulinge
12/12/2009 - WarRock - 3 Replies
Hallo Leute, Da es mir langsam auf die nerven geht da immer für eine Frage ein neuen Thread eröffnet werden muss ,dachte ich mir warum eig. kein Hilfethread F1:Gibt es noch andere "Promocodes" außer GamerfirstFPS die alle benutzen können? A1:Nein immoment gibt es keine anderen Gratis Promocodes die mehrere benutzen können F2:Warum steht bei mir immer Hack detected? A2:Weil der Hack nicht mehr funktioniert Grund: Updates etc.
WoW-Guide für Neulinge
11/16/2009 - WoW Guides & Templates - 7 Replies
Willkommen, dieser Guide ist gedacht für komplette Neulinge, die sich gerne die Frage stellen,welchen Server sie am Besten nehmen sollten und welche Rasse/Klasse/Fraktion.Außerdem soll er ihnen die ersten Schritte in der World of Warcraft zeigen. Als Vorraussetzung gilt nur, dass man das Spiel schon installiert und sich einenAccount angelegt hat. 1. Patch runterladen Nimmt man das erste Mal Verbindung zum Login-Server auf, so wird dir gesagt, dass ein Patch heruntergeladen werden...
Tips für Neulinge [GER]
08/04/2006 - Cabal Online - 23 Replies
Hi Leute, also da ich ja auch einer der glücklichen bin und die beta testen darf, werde ich natürlich für die, die evtl. in der Open Beta mitspielen, oder sogar jetzt noch einen Beta Account kriegen ein paar Hinweise geben, wie sie sich schnell zurechtfinden. Wie fange ich an? Wie ihr seht habt ihr oben rechts eine Minimap , im Spiel das so genannte GPS. Dies gibts bei sehr vielen MMORPG's. Doch was mir direkt aufgefallen ist, war dieser "rote Punkt". Dieser rote Punkt ist euer erster...



All times are GMT +1. The time now is 10:55.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.