Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server > Metin2 PServer Guides & Strategies
You last visited: Today at 03:43

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

Advertisement



[Release]All-In-One Guide für Python Einsteiger

Discussion on [Release]All-In-One Guide für Python Einsteiger within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1
 
.He3o Copy™'s Avatar
 
elite*gold: 1
Join Date: Apr 2013
Posts: 273
Received Thanks: 236
Post [Release]All-In-One Guide für Python Einsteiger

Inhaltsverzeichnis:

1. Einleitung
2. Allgemeine Grundlagen
2.1. Klassen
2.2. Datentypen
2.3. Methoden
2.4. Verzweigungen
2.5. Schleifen
2.6. Vererbung
3. Grafische Benutzeroberfläche mit den Klassen aus der UI
4. Interaktion mit Lua(Quests)
5. Algorithmische Aufgaben



1. Einleitung

Guten Tag, liebe Community.
Im folgenden All-In One Guide möchte ich euch den Pythongebrauch in Metin2 etwas näher bringen.
Da ich bisher noch kein detailliertes Guide gefunden habe und viele Epvper nur Ansätze erklären, dabei jedoch die relevanten Begriffe meist weglassen, wollte ich das alles mal in einem großen Thread zusammenbringen. Da das mein erster Release-Thread ist habe ich mir gedacht: "Da mach ich wenigstens etwas brauchbares."
Eine kleine Voraussetzung gebe ich jetzt einfach mal vor: Ihr sollten mit den Begriffen "Operatoren" und "Variablen" etwas anfangen können.
Also Let's go !!



2. Allgemeine Grundlagen



Im ersten Teil meiner Guide-Serie möchte ich euch zunächst die Grundlagen von Python erklären.
Ohne diese Grundlagen werdet ihr vermutlich die weiteren Erklärungen nicht verstehen können.
Fangen wir mal an:
Python ist eine universelle, höhere Programmiersprache, die versucht durch einen neuen Syntax den eigentlichen Code zu verkürzen und die Programmstruktur somit
verständlicher und übersichtlicher zu machen (wie z.B. durch den Verzicht von Klammern zur Bildung von Codeteilen).
Klären wir erstmal den Begriff "Programmiersprache" und damit auch objektorientierte Programmierung.
Wenn wir uns mal den ISO Standard anschauen heißt es dort : "Bezieht sich auf eine Technik oder Programmiersprache, welche Objekte, Klassen und Vererbung unterstützt.".
Das bedeutet es gibt einmal Sprachen die diese Technik nicht unterstützen, die sogenannten Scriptspachen, und einmal die Programmiersprachen.
Eine Programmiersprache zieht es also vor alle Sachen in Strukturen zu unterteilen.
Machen wir ein Beispiel.
Stellen wir uns mal vor wir haben nun ein Auto vor uns, das ist nun unsere Superklasse oder Basisklasse.
Nun unterteilen wir wiederum dieses Auto in kleinere Elemente in die sogenannten Unterklassen also z.B. Tür, Reifen, Motor.
Wenn wir jetzt noch den Begriff Vererbung ins Spiel bringen wollen sehen wir einfach mal Motor als sogenannten Oberklasse an. Die Oberklasse unterteilen wir jetzt in die Unterklassen "Ottomotor" und "Dieselmotor", so erben die zwei Unterklassen
die grundlegenden Eigenschaften von der Oberklasse "Motor" aber haben in ihrer Klasse selbst dann zusätzliche andere Eigenschaften. Das kann man auch auf das echte Leben übertragen, als Beispiel nehmen wir wieder unsere Motoren einmal der Ottomotor wo das Benzin sofort verbrannt wird um die Energie zu gewinnen und
einmal der Dieselmotor wo zunächst viel Druck nötigt ist das man die Kohlenwasserstoffe zu Energiegewinnung nutzen kann.
Also haben wir eine Klasse die wiederum aus anderen Klassen besteht. Einfach gesagt für die Klasse Auto brauchen wir aber auch die Klassen Motor, Türen, Fenster, Sitze und so weiter.
Was ist aber jetzt ein Objekt.
Ein Objekt ist ein bestimmtes Auto was durch Klasse Auto erstellt wurde.




2.1. Klassen

Jetzt wissen wir was eine Klasse ist aber wie genau sieht sie nun aus?
Schauen wir uns das an einem konkreten Beispiel einmal an.
Natürlich in einer sehr vereinfachten Form:


PHP Code:
class Auto:

    
def __init__(selfnamepreis ):
        
self.name name
        self
.preis preis
    
    def __del__
(self):
        
pass
        
#this is a Destruktor 
Zunächst haben wir die Klasse Auto durch den Befehl "class Auto" definiert.
Im nächsten Schritt werden wir nun ein Objekt der Klasse erstellen.

PHP Code:
objekt Auto("Bugatti",1000000000
Jetzt ist "objekt" ein Objekt der Klasse Auto. In dem Moment wo wir "Auto()" aufrufen wird automatisch die Built-In Methode __init__ aufgerufen also der sogenannte Konstruktor und durch die Parameter oder Übergabewerte werden dann die Variablen des Objekts initialisiert.
Desweitern gibt es noch die Methode __del__ die ebenfalls automatisch aufgerufen wird sobald man das Objekt mit "del Objekt" wieder löschen möchte als der sogenannte Destruktor. Nochmal zusammengefasst wir haben hier zwei Methoden, die aufgerufen werden wenn wir ein Objekt erzeugen(Konstruktur also __init__) oder auflösen(Destruktor also __del__) möchten.
Zusätzlich können Konstruktoren mit Parametern versehen werden, wobei diese nicht jedesmal gesetzt werden müssen, dass sehen wir an dem Beispiel von der Preis Variable.
Diese ist automatisch gesetzt, muss aber nicht im Konstruktoraufruf extra gesetzt werden (im weiteren Verlauf der Serie werde ich dazu noch sinnvolle Beispiele machen).
Viele von euch werden sich nun verständlicherweise fragen was diese "self" bedeutet.
Das "self" kann man mit dem "this" aus Java und C++ vergleichen es legt lediglich eine Referenz auf das Objekt, das bedeutet durch dieses "self" weiß der Methodenaufruf zu welchem Objekt es gehört und auf welches Objekt diese Methode angewendet werden soll.



2.2. Datentypen


Fangen wir mal ganz einfach an nämlich mit dem Nichts.
PHP Code:
Summe None 
Dieses "None" repräsentiert das Nichts und wird oft bei mathematischen Berechnungen verwendet wo z.B. alle komplexen Zahlen eine Lösung ergeben aber es auch sein kann wenn man durch 0 teilt das keine Lösung möglich ist und was gibt es einfacheres als das Nichts?
Da wir bereits wissen was Operatoren sind gehen wir gleich über zu den nummerischen Datentypen.


Nummerische Datentypen

Ganzzahlen

PHP Code:
var_int 235235
var_long 
12345983128973279823987523L 
Wenn man eine ganze Zahl initialisieren möchte nimmt man vorzugsweise ein normales "int", da sollte man jedoch drauf achten das "int" ein begrenzten Zahlenraum hat (was wir bei "long" nicht haben).
Möchten wir also eine sehr große Zahl initialisieren sollten wir das "long" benutzen das am Ende mit einem "L" gekennzeichnet wird.


Gleitkommazahlen

Hier halte ich mich ganz kurz, da es eigentlich nur ein "float" gibt das man so definiert:
PHP Code:
var_float1337.2424 
Wenn wir gerne mit Potenzen und Exponenten arbeiten möchten ist das kein Problem. Genau wie bei einem Taschenrechner wird einfach ein e-1133 drangehängt.

Boolesche Werte

Oder auch einfach "bool" hier unterscheiden wir lediglich zwischen Richtig und Falsch oder Wahr und Unwahr.
PHP Code:
var_bool True
var_bool 
False 
Sequenzielle Datentypen

Diese Datentypen können Elemente mit einer definierten Reihenfolge verwalten und indizieren.

Tuple - tuple

Dies ist eine Liste von Elementen die einen festgelegten Anfang und ein festgelegtes Ende haben.
PHP Code:
var_tuple = ("Krieger","Ninja","Sura","Schamane"
Wenn wir nun einen der Werte aus dieser Liste auslesen möchten geht das wie folgt:
PHP Code:
var_tuple[0
So bekommen wir als Ausgabe den Krieger aber wieso ist das so? Eine Liste ist wie eine Tabelle die ebenfalls Reihen und Spalten besitzen kann (in diesem Fall nur Spalten). In Python beginnen die Spalten jedoch mit dem Index 0 und werden dann in Einer-Schritten vorgeführt. Kleine zwischen Aufgabe : Gebe das Element Schamane aus!

Lösung:

List - list

Diese Liste unterscheidet sich kaum zu den Tuple nur das so kein definiertes Ende haben und können beliebig erweitert werden.
PHP Code:
var_list = ["Krieger","Ninja","Sura","Schamane"
Sie wird genauso aufgerufen wie ein Tuple, kann jedoch mit append erweitert werden.
PHP Code:
var_list.append("Wolfman"
String - str

Dieser Datentyp ist eine Zeichenkette, also eine Folge von Buchstaben, Ziffern und Sonderzeichen. Die Besonderheit dabei ist das man bei den Zeichenketten auch den Operator "+" verwenden kann um sie aneinanderzureihen.
PHP Code:
"Ich bin ein"
"Krieger"
" "
print a+c+b
Ausgabe
Ich bin ein Krieger 
Mapping

Enthält Datentypen die Zuordnungen zwischen verschiedenen Elementen herstellen können.

Dictionary

In diesem Fall gibt es nur einen Datentyp der zu der Kategorie Mapping gehört. Dieses Dictionary kann als Liste angesehen werden wo aber zu den einzelnen Elementen noch eine Zuordnungen stattfindet.
Nehmen wir nun als Beispiel ein Item was verschiedene Werte aufweist wie Bonis, Vnum, usw...

PHP Code:
var_dict = {
"vnum"10,
"boni1_id"1
"boni1_var"1000
So jetzt haben in dem Dictionary "var_dict" ein Item gespeichert. Wenn wir nun gerne die vnum haben möchten müssen wir einfach die Zuordnungen verwenden.
PHP Code:
var_dict["vnum"
Als Zuordnungen sollte man jedoch nicht veränderbare Elemente nehmen, denn jedesmal wenn man das Dictionary aufruft ein Hashwert von der Zuordnungen gebildet wird und so das eigentliche Element gefunden wird.
Wenn man aber jetzt veränderbare Zuordnungen nutzt verändert sich der Hashwert auch.
So kann es sein das in der syserr so ein Fehler kommt:

PHP Code:
TypeError: list objects are unhashable 
Dieser Fehler kann auch hervorgerufen wenn man z.b. eine Liste also Zuordnung verwendet.



2.3. Methoden

Kommen wir hier nochmal speziell auf die Methoden zusprechen.
Wir haben bisher eine Autoklasse erstellt, die wir mit dem Preis und dem Namen als Objekt erzeugen können. Jetzt möchten wir wissen wie der Name des Autos ist.
Dazu müssen wir eine Methode hinzufügen in dem Fall eine Getter-Methode, da wir etwas zurück bekommen möchten. Zusätzlich möchten wir noch den Namen ändern können, also die sogenannte Setter-Methode.

PHP Code:
class Auto:

    
def __init__(selfnamepreis ):
        
self.name name
        self
.preis preis
    
    def __del__
(self):
        
pass
        
#this is a Destruktor
        
    
def getName(self):
        return 
self.name
        
    def setName
(selfname):
        
self.name name 
Was haben wir nun getan?
Wir haben mit "def methodenName" eine Methode definiert und als Referenz "self" angegeben.
Bei unser "getName" Methode bekommen wir durch die Funktion "return" den Namen wieder zurück.
Weiter geht's mit der "setName" Methode dort haben wir noch ein zusätzlichen Parameter angegeben da wir ja gerne den Namen des Autos ändern möchten.
Dieser Parameter wird dann der "name" Variable zugewiesen.
Jetzt fragt ihr euch sicherlich: "Alles schön und gut aber wie kann ich jetzt die Methoden aufrufen?!".


Ganz einfach, wir wissen ja bereits wie man ein Objekt erzeugt nun müssen wir einfach den Methodenaufruf hintendran hängen.
PHP Code:
objekt Auto("Audi")
objekt.getName() # dies können wir wiederum in einer Variablen abspeichern
objekt.setName("Audi R8"
Durch den Punkt erhält man Zugang auf weitere Elemente des Objekts, in diesem Fall die Methoden.
Im nächsten und letzten Schritt möchten wir nun noch einen Chat ausgeben wenn ein Objekt erstellt wurde.
Also erstellen wir eine weitere Methode die den Chat dann ausgibt. Man kann das auch direkt in den Konstruktor schreiben, aber ich wollte nochmal verdeutlichen wie man innerhalb der Klasse Methoden aufrufen kann.


PHP Code:
class Auto:

    
def __init__(selfnamepreis ):
        
self.name name
        self
.preis preis
        self
.chatAusgabe()
    
    
def __del__(self):
        
pass
        
#this is a Destruktor
    
    
def chatAusgabe(self):
        print 
"das Objekt wurde erstellt"
    
    
def getName(self):
        return 
self.name
        
    def setName
(selfname):
        
self.name name 
Wir rufen also innerhalb von Klassen die Methoden durch den Referenzzeiger auf.



2.4 Verweigungen

In diesem Teil beschäftigen wir uns mit den Verzweigungen oder auch bedingten Anweisungen.
Sie dienen dazu, ein Programm in mehrere Pfade oder eben Verzweigungen aufzuteilen.
Nehmen wir wieder das Beispiel mit unser Autoklasse dort möchten wir jetzt eine Bedingung für eine gewisse Anweisung hinzufügen.
Unsere Aufgabe ist nun abzufragen ob der Preis gesetzt ist, falls ja soll ein Text ausgegeben werde.

PHP Code:
class Auto:

    
def __init__(selfnamepreis ):
        
self.name name
        self
.preis preis
        self
.chatAusgabe()
        if 
self.preis != 0:
            print 
"Preis wurde erfolgreich gesetzt." 
Also sieht der Syntax wie folgt aus.

PHP Code:
if Bedingung:     #falls
    
Anweisung
elif Bedingung
:    #andernfalls
    
Anweisung
else:              #sonst
    
Anweisung 
Hier hab ich noch zwei weitere Funktionen ins Spiel gebracht einmal das "elif" oder auf Deutsch einfach andernfalls.
Durch das "elif" können wir eine weitere Bedingung für unsere spezielle Situation festlegen.
Zu guter letzt noch das "else" was man mit sonst übersetzen kann. Die Funktion bewirkt einfach, dass wenn keine der Bedingungen zutreffen sollte. die Anweisung des else-Blocks ausgeführt wird.
Wenden wir das wieder auf unser konkretes Beispiel an. Wir möchten nun zusätzlich noch abfragen ob der Preis realistisch ist und nehmen daher als Basiswert 5000 Euro.

PHP Code:
class Auto:

    
def __init__(selfnamepreis ):
        
self.name name
        self
.preis preis
        self
.chatAusgabe()
        if 
self.preis != and self.preis >= 5000:
            print 
"Preis wurde erfolgreich gesetzt."
        
elif self.preis 5000 and self.preis != 0:
            print 
"Dieser Preis ist nicht realistisch!"
        
else:
            print 
"Der Preis wurde noch nicht gesetzt." 
Jetzt müsste uns allen auffallen das ich die eigentliche Bedingung erweitern musste,
denn wenn ich bei dem "elif" nur die Bedingung haben würde, dass es kleiner als 5000 sein muss, trifft das auch für unsere "if" Bedingung oft zu.
Als kleine Bemerkung dazu muss uns klar sein: Sobald wir in eine Anweisung dieser Verzweigung gelangt sind, wird keine weiter Abfrage der Bedingungen stattfinden und das Programm unterhalb des Code-Blocks weitergeführt.


Ich habe absichtlich keine Kategorien fertiggestellt, weil ich sehen wollte ob es in dem Ausmaß überhaupt gefragt ist. Ob es in einer gekürzten Form gefragt, oder gar nicht in Anspruch genommen wird. Solltet ihr Anregungen, Verbesserungswünsche oder eine Idee für ein besseres Format haben, immer her damit! Ich habe zunächst versucht in einem sehr einfachen Deutsch zu schreiben ohne viele Fremdwörter zu verwenden, ich hoffe das ist mir gelungen.
Im weiteren Verlauf, wenn wir zu den GUIS gelangen werde ich natürlich viele Beispiele veröffentlichen und dazu ein oder zwei Releases, aber auch bei der Interaktion mit Lua könnt ihr gern Beispiele ergänzen, die man dann in den Guide einbaut und anhand dessen die Materie noch ausführlicher erklärt.


Special Thanks:
JusticeTheVoice


King Regards,

Copy
.He3o Copy™ is offline  
Thanks
46 Users
Old 10/13/2014, 01:21   #2
 
.He3o Copy™'s Avatar
 
elite*gold: 1
Join Date: Apr 2013
Posts: 273
Received Thanks: 236
#genehmigter Platzhalter
.He3o Copy™ is offline  
Old 10/13/2014, 01:58   #3

 
Zynko™'s Avatar
 
elite*gold: 53
Join Date: Nov 2012
Posts: 2,793
Received Thanks: 766
Danke *.*
Endlich wird es mal ausführlich erklärt

#edit

Habe es gerade durchgelesen top sehr verständlich erklärt meiner Meinung nach.
Freue mich auf weiteres
Zynko™ is offline  
Thanks
1 User
Old 10/13/2014, 02:15   #4
 
Antigene's Avatar
 
elite*gold: 25
Join Date: Jun 2011
Posts: 1,637
Received Thanks: 353
Sehr schön

so muss das sein How To wo die Leute auch was dafür tun müssen
Antigene is offline  
Old 10/13/2014, 02:17   #5
 
.He3o Copy™'s Avatar
 
elite*gold: 1
Join Date: Apr 2013
Posts: 273
Received Thanks: 236
Quote:
Originally Posted by Antigene View Post
Sehr schön

so muss das sein How To wo die Leute auch was dafür tun müssen
Ja ist ja nur der Anfang ist bisher nur 10% davon deswegen möchte ich ja gerne wissen ob ich es so beibehalten soll oder etwas ändern soll. Vorallem welche Beispiele ihr gerne bei den Guis und mit der Interaktion mit Lua sehen wollt.
.He3o Copy™ is offline  
Old 10/13/2014, 02:57   #6
 
elite*gold: 0
Join Date: Jul 2013
Posts: 809
Received Thanks: 1,612
Ob du das durch ziehst und immer wieder neue Tutorials
bringen wirst mhm.. mal sehen, kann man eventuell was kleines
daraus lernen

PS:
Kriegst nen Thanks für des schreiben, bzw für deine mühe.
CryPrime is offline  
Old 10/13/2014, 03:13   #7
 
.He3o Copy™'s Avatar
 
elite*gold: 1
Join Date: Apr 2013
Posts: 273
Received Thanks: 236
Quote:
Originally Posted by CryPrime View Post
Ob du das durch ziehst und immer wieder neue Tutorials
bringen wirst mhm.. mal sehen, kann man eventuell was kleines
daraus lernen

PS:
Kriegst nen Thanks für des schreiben, bzw für deine mühe.
Ist eine berechtigte Mutmaßung aber ich kann dich beruhigen, da ich jetzt bald mein Abi mache und dort das Thema OOP aufgegriffen wird und ich dort sehr viel erklären muss ist dies eine sehr gute Übung für mich.


Mfg

Copy
.He3o Copy™ is offline  
Old 10/13/2014, 06:42   #8
 
Gl0bal's Avatar
 
elite*gold: 8
Join Date: Oct 2010
Posts: 564
Received Thanks: 906
Oha wer ist dieser kranke Type?
Ne Spaß
Super gemacht! Wird bestimmt vielen sehr viel weiter helfen.

Wenn ich noch einen kleinen Tipp geben darf: ich würde noch etwas näher erklären, was ein Objekt (bzw. ich nenne es Instanz) ist. Das ist ja sehr wichtig, aber da gehst du nicht so ganz drauf ein.
MfG
Gl0bal is offline  
Old 10/13/2014, 06:57   #9
 
Yiv's Avatar
 
elite*gold: 47
Join Date: Feb 2012
Posts: 2,282
Received Thanks: 2,579
Wow, da hat sich jemand wirklich Mühe gegeben, ein schönes Tutorial zu schreiben. Auch wenn hier und da evtl. Verbesserungsbedarf besteht, ist es im Großen und Ganzen ein Top-Tutorial!

Vielen Dank für die Mühe, auch, wenn ich es nicht gebrauchen kann.

MfG

P.S: Michi, hate das bitte mal nicht! Wir wissen alle, dass C++ > LUA > Python ist :P
Yiv is offline  
Thanks
1 User
Old 10/13/2014, 08:14   #10
 
.He3o Copy™'s Avatar
 
elite*gold: 1
Join Date: Apr 2013
Posts: 273
Received Thanks: 236
Quote:
Originally Posted by Yiv View Post
Wow, da hat sich jemand wirklich Mühe gegeben, ein schönes Tutorial zu schreiben. Auch wenn hier und da evtl. Verbesserungsbedarf besteht, ist es im Großen und Ganzen ein Top-Tutorial!

Vielen Dank für die Mühe, auch, wenn ich es nicht gebrauchen kann.

MfG

P.S: Michi, hate das bitte mal nicht! Wir wissen alle, dass C++ > LUA > Python ist :P
Ich glaube das keiner das "C++> Lua> Python"
Achja wenn ihr Kritik habt ob positiv oder negativ das interessiert mich sehr vorallem was ich besser machen kann das es wirklich ein gutes Tutorial wird das jeder verstehen kann

Quote:
Originally Posted by Gl0balTheWriter View Post
Oha wer ist dieser kranke Type?
Ne Spaß
Super gemacht! Wird bestimmt vielen sehr viel weiter helfen.

Wenn ich noch einen kleinen Tipp geben darf: ich würde noch etwas näher erklären, was ein Objekt (bzw. ich nenne es Instanz) ist. Das ist ja sehr wichtig, aber da gehst du nicht so ganz drauf ein.
MfG
Danke für den Tipp ist oft nicht sehr einfach diese Wörter zu erklären damit es jeder versteht.
.He3o Copy™ is offline  
Old 10/13/2014, 08:25   #11
 
Yiv's Avatar
 
elite*gold: 47
Join Date: Feb 2012
Posts: 2,282
Received Thanks: 2,579
Was meinst du mit dem?
Quote:
Originally Posted by .He3o Copy™ View Post
Ich glaube das keiner das "C++> Lua> Python"
MfG
Yiv is offline  
Thanks
1 User
Old 10/13/2014, 08:27   #12
 
.He3o Copy™'s Avatar
 
elite*gold: 1
Join Date: Apr 2013
Posts: 273
Received Thanks: 236
Quote:
Originally Posted by Yiv View Post
Was meinst du mit dem?

MfG
Oh tut mir leid hab das am Handy geschrieben eigentlich sollte da noche in Wort namens "anzweifeln" hin


Mfg
.He3o Copy™ is offline  
Old 10/13/2014, 08:28   #13
 
Yiv's Avatar
 
elite*gold: 47
Join Date: Feb 2012
Posts: 2,282
Received Thanks: 2,579
Quote:
Originally Posted by .He3o Copy™ View Post
Oh tut mir leid hab das am Handy geschrieben eigentlich sollte da noche in Wort namens "anzweifeln" hin


Mfg
Kenne da einige, die Python vor LUA stellen, verstehe das gar nicht :???:

MfG
Yiv is offline  
Thanks
1 User
Old 10/13/2014, 08:56   #14
 
.He3o Copy™'s Avatar
 
elite*gold: 1
Join Date: Apr 2013
Posts: 273
Received Thanks: 236
Quote:
Originally Posted by Yiv View Post
Kenne da einige, die Python vor LUA stellen, verstehe das gar nicht :???:

MfG
Finde ich gar nicht verwunderlich..
Meiner Meinung nach kann man Python und Lua kaum vergleichen da sie für ganz andere Verwendungszwecke ausgelegt sind. Wenn man kaum CPU zur Verfügung hat bevorzugt man natürlich Lua. Dann gibt es noch die Streitigkeiten vom Syntax was wirklich sehr verschieden von den beiden ist
.He3o Copy™ is offline  
Thanks
2 Users
Old 10/13/2014, 09:39   #15
 
.Risan.'s Avatar
 
elite*gold: 30
Join Date: Jul 2010
Posts: 1,627
Received Thanks: 1,450
PHP Code:
var_list = ["Krieger","Ninja","Sura","Schamane"
Wenn es eh per Array list, geht es auch so:
PHP Code:
var_list "Krieger","Ninja","Sura","Schamane" 
Es muss nicht zwingend [] { } sein

Anonsten dachte als ich die Variablen gelesen habe, an c++ xD
Wieso du den Variablen solche namen vergibst, ist noch fraglich das ist bei Python Pupse..

EDIT:
Sehe eben du hast append.. Dann muss natürlich es eine Tabelle sein.. Aber wer es ohne macht geht mein beispiel oben ebenfalls.

Hier mal eine krasse Tabelle:
PHP Code:
Katagorie_Table_Aktionhous = [ 
{    
"NameK":"Waffen""SonderSortStart":10"SonderSortEnd":15"Daten": [ 
{    
"Name":"Einhand""SonderSort":10    },
{    
"Name":"Dolche",  "SonderSort":11    },
{    
"Name":"Bogen""SonderSort":12    },
{    
"Name":"Zweihand""SonderSort":13    },
{    
"Name":"Glocke""SonderSort":14    },
{    
"Name":"Fucher""SonderSort":15    },
]},
 
{    
"NameK":"Ausruestungen""SonderSortStart":20"SonderSortEnd":22"Daten": [ 
{    
"Name":"Ruestung (Armor)""SonderSort":20    },
{    
"Name":"Helm""SonderSort":21},
{    
"Name":"Schild""SonderSort":22    },
]},

{    
"NameK":"Schmuckzeug""SonderSortStart":23"SonderSortEnd":26"Daten": [ 
{    
"Name":"Armbaender""SonderSort":23    },
{    
"Name":"Schuhe""SonderSort":24    },
{    
"Name":"Kette""SonderSort":25    },
{    
"Name":"Ohrringe""SonderSort":26    },
]},

{    
"NameK":"Reittiere""SonderSortStart":30"SonderSortEnd":35"Daten": [ 
{    
"Name":"Futter""SonderSort":30    },
{    
"Name":"Siegel""SonderSort":31    },
{    
"Name":"Sonstiges""SonderSort":32    },
]},

{    
"NameK":"Pets""SonderSortStart":36"SonderSortEnd":40"Daten": [ 
{    
"Name":"Futter""SonderSort":36    },
{    
"Name":"Siegel""SonderSort":37    },
{    
"Name":"Sonstiges""SonderSort":38    },
]},

{    
"NameK":"Kostueme""SonderSortStart":41"SonderSortEnd":42"Daten": [ 
{    
"Name":"Anzuge""SonderSort":41    },
{    
"Name":"Frisuren""SonderSort":42    },
]},

{    
"NameK":"Sonstiges""SonderSortStart":100"SonderSortEnd":200"Daten": [ 
{    
"Name":"Tranke""SonderSort":100    },
{    
"Name":"UppItems""SonderSort":101    },
{    
"Name":"Fische""SonderSort":102    },
{    
"Name":"GildenMaterial""SonderSort":103    },
{    
"Name":"Geistgesteine""SonderSort":104    },
{    
"Name":"Nicht zugeordnet""SonderSort":200    },
]},


{    
"NameK":"Letzten 10 reingesetzten Items""SonderSortStart":1"SonderSortEnd":200"LastItemCounts":10"Daten": [ ]},
{    
"NameK":"Letzten 30 reingesetzten Items""SonderSortStart":1"SonderSortEnd":200"LastItemCounts":30"Daten": [ ]},
{    
"NameK":"Letzten 50 reingesetzten Items""SonderSortStart":1"SonderSortEnd":200"LastItemCounts":50"Daten": [ ]},
{    
"NameK":"Letzten 100 reingesetzten Items""SonderSortStart":1"SonderSortEnd":200"LastItemCounts":100"Daten": [ ]},


.Risan. is offline  
Reply


Similar Threads Similar Threads
[Release] Python für Einsteiger [Metin2]
10/12/2014 - Metin2 PServer Guides & Strategies - 22 Replies
Hallo Com, Ich habe mich entschlossen mein kleines Pythonwissen euch zu übermitteln. Ich habe ja schon mitbekommen das einige wirklich viel Geld bezahlen müssen wenn sie sich helfen lassen in Python. Ich möchte euch nur etwas Grundwissen übermitteln und euch zeigen wie man mit fehlern umgeht und sie auch versteht. Natürlich möchte ich auch in die richtung gehen wie man ein Simples Board erstellt ohne große Funktionen. Ich möchte einfach mal wissen wie es ankommt und ob einige dafür sind...
Einsteiger Aion Guide
08/18/2013 - Aion Guides & Strategies - 12 Replies
Diese aion guide beinhaltet im grunde alles was ein einsteiger wissen sollte. Location @ Sanctum http://www.imgbox.de/users/Pharel/SanctumLocation scopy.jpg 1: Porter (nach Poeta,Verteron,Theobomos,Eltnen,Interdiktah) 2: Gildenbank 3: Bank 4: Taschen(Cube) vergrößerer
Python - Buch-Empfehlung für Einsteiger
02/17/2010 - General Coding - 6 Replies
Hey epvpers*coders section, da ich mir nach einiger Zeit des Überlegens entschlossen habe Python zu lernen, weil mir c++ u.a. etwas zu eintönig wird, suche ich nun ein geeignetes Buch, welches die wesentlichen Konzepte und Methoden Pythons erklärt und veranschaulicht. Dabei ist mir wichtig, dass das Buch viele Beispiele und Aufgaben enthält, um Gelerntes zu vertiefen. Google spuckt nur wenige Bücher aus, die meistens ohne Empfehlung sind. So dachte ich mir, ob ihr vielleicht eine...



All times are GMT +1. The time now is 03:43.


Powered by vBulletin®
Copyright ©2000 - 2026, 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 ©2026 elitepvpers All Rights Reserved.