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 00:18

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

Advertisement



[Guide] Lua Allgemeines, Metatables, Metamethods (fortgeschrittener Guide)

Discussion on [Guide] Lua Allgemeines, Metatables, Metamethods (fortgeschrittener Guide) within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
[Guide] Lua Allgemeines, Metatables, Metamethods (fortgeschrittener Guide)

Dieser Guide richtet sich an diejenigen, die bereits Erfahrung im Coding mit Lua haben. Grundkenntnisse über Lua werden vorausgesetzt.

Allgemeines:
Der global Table:
Der global Table enthält alle globalen Variablen. Der global Table ist über die Variable _G verfügbar. Wird eine neue globale Variable gesetzt, wird diese in den global Table geschrieben.

Mit dieser Info können wir z.B. auf globale Variablen zugreifen, dessen Name lokal genutzt wird.
Beispiel:
Code:
name = "Sensi"
local name = "Faggot: Akkelos"

print(name)--immer lokale VOR globalen Variablen (in diesem Fall also -> "Faggot: Akkelos")
print(_G.name)--über den global Table -> "Sensi"
Ausserdem ist es über den global Table möglich, globale Variablen zu setzen, auch wenn lokal eine Variable mit gleichem Namen zugreifbar ist:
Code:
local name = "Sensi"
name = "Faggot: Akkelos"--überschreibt die lokale Variable "name", weil sie an dieser Stelle zugreifbar ist
_G.name = "Faggot: Akkelos"--setzen der globalen Variable per global Table


Metatables:
Was sind Metatables?:
Metatables sind Tables, die Grundfunktionen eines Tables (z.B. das Verhalten beim Aufruf der tostring() Funktion) enthalten.

Mit der Funktion getmetatable(<table>) bekommt man den Metatable eines Tables zurück, mit setmetatable(<table>, <table>) setzt man diesen.
Metamethods:
Was sind Metamethods?:
Metamethods sind die Funktionen, die im Metatable liegen, um das Verhalten des Tables bei bestimmten Operationen zu definieren.

Es sind verschiedenste Sachen über Metatables / Metamethods möglich, z.B. die Erstellung eines Tables, aus dem nur gelesen werden darf (read-only-table) oder read-only-values (Werte, die nach ihrer Deklaration nur gelesen werden dürfen)
Welche Metamethods gibt es?:
FunktionsnameWird aufgerufen, wenn ...ParameterRückgabeSonstiges
__index... versucht wird, auf einen undefinierten Key zuzugreifen#1: Table, auf den zugegriffen wurde #2: Angefragter KeyDer Wert, der zurückgegeben werden soll (Standard: nil)#1: Anstatt einer Funktion kann hier auch ein anderer Table hinterlegt werden. #2: Kann durch rawget(<table>, <key>) ignoriert werden
__newindex... ein neuer Key auf den Table gesetzt wird#1: Table, auf den der Key gesetzt werden soll #2: Zu setzender Key(Keine)#1: Kann durch rawset(<table>, <key>, <value>) ignoriert werden
__mode... ein neuer Key auf den Table gesetzt wird(Keine) - Stringwert "k", "v" oder "kv" der besagt, ob die Referenzen auf dem Table relevant für den Garbagecollector sind.(Keine (weil keine Funktion))-
__call... der Table als Funktion genutzt wird#1: Table, der als Funktion genutzt wurde #...: Übergebene Parameterwas auch immer gewollt ist-
__metatable... getmetatable(<table>) aufgerufen wird(Keine)Wert, der zurückgegeben werden soll, wenn getmetatable(<table>) aufgerufen wird-
__tostring... tostring(<table>) aufgerufen wird#1: Der Table, der an tostring(<table>) übergeben wurdeDer resultierende String-
__len... table.getn(<table>) aufgerufen wird#1: Der Table, der an table.getn(<table>) übergeben wurdeDie resultierende Länge-
__gc... der Garbagecollector den Table löschen möchte#1: Der Table, der gelöscht werden soll(Keine)-
__unm... der negative Wert (-<table>) angefordert wird#1: Der Table, für den der negative Wert angefordert wirdDas Ergebnis-
__add... eine Addition mit dem Table ausgeführt werden soll#1: Operator1 (Achtung! Nicht zwingend "dieser Table"), #2: Operator2Das Ergebnis der Addition (Operator1 + Operator2!)Beispiel: <table> + 1 -> Operator1 = <table>, Operator2 = 1 bzw.: 1 + <table> -> Operator1 = 1, Operator2 = <table>
__sub... eine Subtraktion mit dem Table ausgeführt werden soll#1: Operator1 (Achtung! Nicht zwingend "dieser Table"), #2: Operator2Das Ergebnis der Subtraktion (Operator1 - Operator2!)-
__mul... eine Multiplikation mit dem Table ausgeführt werden soll#1: Operator1 (Achtung! Nicht zwingend "dieser Table"), #2: Operator2Das Ergebnis der Multiplikation (Operator1 * Operator2!)-
__div... eine Division mit dem Table ausgeführt werden soll#1: Operator1 (Achtung! Nicht zwingend "dieser Table"), #2: Operator2Das Ergebnis der Division (Operator1 / Operator2!)-
__mod(nicht in Lua 5.0)---
__pow... eine Potenz des Tables angefordert wird#1: Operator1 (Achtung! Nicht zwingend "dieser Table"), #2: Operator2Das Ergebnis (Operator1 ^ Operator2!)-
__concat... der Table konkateniert wird#1: Wert1, #2: Wert2Der einzufügende String bei einer Konkatenation (Empfohlen: tostring(v1) .. tostring(v2))-
__eq... Prüfung auf gleichheit (Achtung! Nur wenn beide Operatoren die selbe (nicht nur Inhaltlich) Funktion unter __eq hinterlegt haben)#1: Operator1 (Achtung! Nicht zwingend "dieser Table"), #2: Operator2true oder false-
__lt... Prüfung auf größer / kleiner#1: Operator1 (Achtung! Nicht zwingend "dieser Table"), #2: Operator2true oder false-
__le... Prüfung auf gröper / kleiner oder gleich#1: Operator1 (Achtung! Nicht zwingend "dieser Table"), #2: Operator2true oder false-

Beispiele:


















rollback is offline  
Thanks
16 Users
Old 11/07/2015, 18:23   #2
 
Yiv's Avatar
 
elite*gold: 47
Join Date: Feb 2012
Posts: 2,282
Received Thanks: 2,579
Manchmal frage ich mich, warum hast du so viel Zeit und ich nicht?
Danke dafür, aber brauche ich zur Zeit nicht, kann dich ja für Lua knechten

MfG
Yiv is offline  
Thanks
2 Users
Old 11/07/2015, 18:23   #3
 
.J0ker's Avatar
 
elite*gold: 0
The Black Market: 130/0/1
Join Date: Jun 2013
Posts: 1,217
Received Thanks: 328
gj
.J0ker is offline  
Thanks
1 User
Old 11/07/2015, 18:25   #4
 
elite*gold: 2785
Join Date: Dec 2014
Posts: 403
Received Thanks: 1,354
Sehr übersichtlich gestaltet. Danke für das Release
.K0rí is offline  
Thanks
2 Users
Old 11/07/2015, 18:25   #5
 
Kampfzwerg!'s Avatar
 
elite*gold: 0
Join Date: Feb 2015
Posts: 306
Received Thanks: 171
krass.... das ist der Sensi eben
hast du schöne gemacht

schöne grüße

Kampfzwerg
Kampfzwerg! is offline  
Thanks
2 Users
Old 11/07/2015, 18:38   #6

 
DreamT™'s Avatar
 
elite*gold: 26
Join Date: Sep 2014
Posts: 895
Received Thanks: 388
So viel Zeit für solche Dinge möchte ich auch mal haben

Sehr übersichtlich und verständlich geschrieben. Wird vielen ein wenig Hilfestellung sein. Danke für die Mühe!
DreamT™ is offline  
Thanks
1 User
Old 11/07/2015, 23:46   #7

 
.Ɓurly's Avatar
 
elite*gold: 35
Join Date: Apr 2014
Posts: 992
Received Thanks: 1,647
Hab zwar keine Ahnung was das ist, aber weil du dir so viel Mühe gegeben hast und wir gerade im Ts sind, bekommst du trotzdem n Thanks

PS: Fix dein BO3


Mfg.
.Ɓurly is offline  
Thanks
2 Users
Old 11/08/2015, 01:20   #8
 
elite*gold: 0
Join Date: Nov 2013
Posts: 22
Received Thanks: 20
hast dir viel mühe gegeben thx
ThePfosten is offline  
Thanks
1 User
Old 11/08/2015, 02:38   #9


 
elite*gold: 1810
Join Date: Jan 2012
Posts: 2,208
Received Thanks: 1,630
Oha hast dir ja richtig viel Mühe gegeben, da wird dann Lua doch wieder erheblicher *_*
Thanks 4 release
MaxChri is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
[GUIDE] Für Anfänger / Neueinsteiger Allgemeines
01/11/2013 - Metin2 Guides & Templates - 8 Replies
Hallo liebe Epvp-Freunde, ich weis es gibt schon einige Threads aber hier geht es um das EInsteigen wie alles funktioniert / etc. vorab : Rechtschreibfehler / Grammatikfehler tun mir jetzt schon mal leid, ich bin nicht der ebste dadrin. -> Ich hatte schonmal so ein Guide im de-Forum also kann es dem auch ähneln :D Hier mal eine kleine Gliederung : 1. Der Einstieg -> Charakter Auswahl / Reiche
[Guide]Farm Guide Metin2[Guide]
02/05/2012 - Metin2 Guides & Templates - 24 Replies
#Delet aus sicherheits gründen.
[GUIDE] Item Filter Guide | Cabal Crafting & Dungeon Guide by Dewa Gempak.
06/15/2008 - Cabal Guides & Templates - 5 Replies
Since its his work, just SHARING it here, i just gonna link his URL from his work. because i dont like copy and pasting other ppl's guides: http://119.110.98.150:90/ipb/index.php?showtopic= 1145 Q#1: Does it work with CabalRider (PH)? A#1: Yes, it works, i tried it personally myself. Q#2: I'm too dumb to understand it, how to make it work. A#2: Try reading it again and again, if u still don't know how, don't use it then sleep.gif



All times are GMT +1. The time now is 00:25.


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.