|
You last visited: Today at 00:01
Advertisement
[LUA] Questfunktionen by Sensenmann
Discussion on [LUA] Questfunktionen by Sensenmann within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.
03/05/2015, 14:17
|
#1
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
[LUA] Questfunktionen by Sensenmann
| Name | Parameter | Anwendung | Kommentar |
|---|
| in_list | (v, array) | in_list(i, {10, 15, 20}) | Prüft, ob i == 10, 15 oder 20 ist | | in_range | (v, v1, v2) | in_range(i, 25, 50) | Prüft, ob i >= 25 und <= 50 ist | | compare_list_one | (array1, array2) | compare_list_one({i, j}, {105, 10}) | Prüft, ob i == 105 oder j == 10 ist | | compare_list_all | (array1, array2) | compare_list_all({i, j}, {105, 10}) | Prüft, ob i == 105 und j == 10 ist | | min | (array) | min({1, 70, "a", -1, -12, 90}) | Gibt die kleinste Zahl oder den kleinsten String im Alphabet zurück. Zahlen werden VOR Strings gezählt | | max | (array) | min({1, 70, "a", -1, -12, 90}) | Gibt die größte Zahl oder den größten String im Alphabet zurück. Strings sind größer als Zahlen | | next_val | (v, start, stop) | next_val(2, 0, 5) | Gibt den nächsten Wert zurück, wenn v kleiner als der Endwert ist | | get_smallest_id | (array[, v]) | get_smallest_id({1, 2, 3, 4, 6, 7}, -2) | Gibt den kleinsten unbenutzen Wert zurück. Wirt v nicht angegeben ist v = 1 | | distinct | (array) | distinct({1, 1, 1, 2, 3, 3, 1, 2, 5, 4}) | Gibt den Array ohne doppelte Einträge zurück | | count | (array, v) | count({1, 1, 10, 1, 2, 2}, 2) | Zählt, wie oft v im Array ist | | modulo | (i, j) | modulo(10, 5) | Gibt den Rest von i geteilt durch j zurück | | kpwas | (i, j) | kpwas(10, 5) | Gibt alle Zahlen hinter dem Komma zurück | | modulo_bool | (i, j) | modulo(10, 5) | Prüft, ob i ohne Rest durch j teilbar ist | | math_round | (i) | math_round(1.5) | Rundet ab .5 auf, alles andere ab |
Syntax:
Code:
if in_list(pc.get_level(), {1, 9, 23}) then
if in_list(1, {pc.get_level(), pc.get_armor(), pc.get_alignment()}) then
1. Prüft, ob das Level des Spielers = 1 oder = 9 oder = 23 ist.
2. Prüft, ob entweder das Level, die VNUM der getragenen Rüstung oder die Rangpunkte = 1 sind.
Funktion:
Code:
function in_list(compare, list)
for i = 1, table.getn(list) do
if compare == list[i] then return true end
end
return false
end
Syntax:
Code:
if in_range(pc.get_level(), 25, 50) then
Prüft, ob das Level des Spielers zwischen 25 und 50 liegt (25 und 50 mit einbezogen!)
Funktion:
Code:
function in_range(compare, value1, value2)
return compare >= value1 and compare <= value2
end
Syntax:
Code:
if compare_list_one({pc.get_level(), pc.get_weapon(), pc.get_alignment()}, {10, 189, 12000}) then
Prüft, ob das Level des Spielers = 10 ist, die VNUM der getragenen Waffe = 189 oder die Rangpunkte = 12000 sind.
Trifft EINS zu, wird true zurückgegeben.
Funktion:
Code:
function compare_list_one(list1, list2)
for i = 1, math.min(table.getn(list1), table.getn(list2)) do
if list1[i] == list2[i] then return true end
end
return false
end
Syntax:
Code:
if compare_list_all({pc.get_level(), pc.get_weapon(), pc.get_alignment()}, {10, 189, 12000}) then
Prüft, ob das Level des Spielers = 10 ist, die VNUM der getragenen Waffe = 189 und die Rangpunkte = 12000 sind.
Trifft ALLES zu, wird true zurückgegeben.
Funktion:
Code:
function compare_list_all(list1, list2)
for i = 1, math.min(table.getn(list1), table.getn(list2)) do
if list1[i] != list2[i] then return false end
end
return true
end
Syntax:
Code:
min({1, 2, -1, -10, 12, 1, 2, 3, 9})
Gibt die kleinste Zahl des Tables zurück.
Funktion:
Code:
function min(list)
table.sort(list)
return list[1]
end
Syntax:
Code:
max({1, 2, -1, -10, 12, 1, 2, 3, 9})
Gibt die größte Zahl des Tables zurück.
Funktion:
Code:
function max(list)
table.sort(list)
return list[table.getn(list)]
end
Syntax:
Code:
next_val(game.get_event_flag("mehrteiliges_event"), 0, 5)
Gibt den nächsten Wert zurück. Wenn letzter Wert erreicht ist geht es zurück zum Startwert.
Funktion:
Code:
function next_val(v, start, stop)
if v < stop then
return v+1
else
return start
end
end
Syntax:
Code:
distinct({1, 1, 1, 2, 3, 3, 1, 2, 5, 4})
Gibt den gleichen Table ohne doppelte Einträge zurück.
Funktion:
Code:
function distinct(tbl)
local ntbl = {}
local function check_inserted_values(value)
for _,inserted in ipairs(ntbl) do
if inserted == value then
return
end
end
table.insert(ntbl, value)
end
for _,value in ipairs(tbl) do
check_inserted_values(value)
end
return ntbl
end
Syntax:
Code:
get_smallest_id({1, 2, 3, 4, 6, 7}, -2)
get_smallest_id({1, 2, 3, 4, 6, 7})
Gibt kleinsten unbenutzen Eintrag zurück. Wird "base" nicht angegeben ist base = 1.
Funktion:
Code:
function get_smallest_id(tbl, base)
local j = 1
table.sort(tbl)
for i = base or 1, table.getn(tbl) do
if tbl[j] > i then
return i
end
j = j+1
end
end
Syntax:
Gibt den Rest von v1 geteilt durch v2 zurück.
Funktion:
Code:
function modulo(v1, v2)
return v1-(math.floor(v1/v2)*v2)
end
Syntax:
Gibt die Zahlen hinter dem Komma von v1 geteilt durch v2 zurück.
Funktion:
Code:
function kpwas(v1, v2)
local str = tostring(v1/v2)
local i = 1
repeat
i = i+1
until not tonumber(string.sub(str, i, i))
return tonumber(string.sub(str, i+1))
end
Syntax:
Prüft, ob value1 durch value2 ohne Rest teilbar ist. Gibt true oder false zurück.
Funktion:
Code:
function modulo_bool(v1, v2)
return v1/v2 == math.ceil(v1/v2)
end
Syntax:
Code:
count({1, 1, 10, 1, 2, 2}, 2)
Zählt, wie oft v im Table ist.
Funktion:
Code:
function count(tbl, v)
table.sort(tbl)
local count = 0
for i = 1, table.getn(tbl) do
if tbl[i] == v then
count = count+1
elseif tbl[i] > v then
break
end
end
return count
end
Syntax:
Gibt 2 zurück
Gibt 1 zurück
Funktion:
Code:
function math_round(var)
return (var+0.5 >= math.ceil(var) and math.ceil(var) or math.floor(var))
end
Viel Spaß damit!
|
|
|
03/05/2015, 14:22
|
#2
|
elite*gold: 0
Join Date: Jan 2015
Posts: 239
Received Thanks: 585
|
Code:
function in_list(tab,line)
for k,v in pairs(tab) do
if v == line then
return true
end
end
return false
end
Hättest noch ein return false reinpacken können.
Aber war so eine Funktion nicht schon damals in Mijagos Lib?
|
|
|
03/05/2015, 14:31
|
#3
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by i[Remix]
Code:
function in_list(tab,line)
for k,v in pairs(tab) do
if v == line then
return true
end
end
return false
end
Hättest noch ein return false reinpacken können.
Aber war so eine Funktion nicht schon damals in Mijagos Lib?
|
stimmt, ein false kann ich noch reinmachen. Finde aber meine Schleife dann etwas übersichtlicher.
Woher nimmst du k und v?
|
|
|
03/05/2015, 14:35
|
#4
|
elite*gold: 0
Join Date: Feb 2010
Posts: 7,220
Received Thanks: 6,758
|
k = key, v = value
Du nutzt eine for - Schleife, Remix eine foreach - Schleife, darin liegt der Unterschied.
|
|
|
03/05/2015, 17:49
|
#5
|
elite*gold: 0
Join Date: Feb 2015
Posts: 213
Received Thanks: 75
|
Danke dir! 
Kriegst ein "Thanks"
|
|
|
03/06/2015, 18:31
|
#6
|
elite*gold: 47
Join Date: Feb 2012
Posts: 2,282
Received Thanks: 2,579
|
Voll nutzlos.
Danke <3 Hdl
|
|
|
03/06/2015, 18:59
|
#7
|
elite*gold: 0
Join Date: Jan 2014
Posts: 268
Received Thanks: 373
|
Pragmatisch ^-^
Könntest noch eine in_range-Funktion dazu machen, wenn du schon dabei bist
Kind Regards
|
|
|
03/06/2015, 20:08
|
#8
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by Lefloyd
Pragmatisch ^-^
Könntest noch eine in_range-Funktion dazu machen, wenn du schon dabei bist
Kind Regards
|
PHP Code:
function in_range(compare, value1, value2)
for i = value1, value2 do
if compare == i then return true end
end
return false
end
|
|
|
03/07/2015, 10:50
|
#9
|
elite*gold: 0
Join Date: May 2010
Posts: 294
Received Thanks: 157
|
naja was glaube ich von mijago ist, währe
was man dann so nutzen kann
PHP Code:
local table ={1,2,3,4}
local var = 2
if in_table(var,table) == true then
deins ist dann vielleicht minimal kürzer, da man daraus auch
PHP Code:
if in_table(2,table) == true then
machen kann und ob ich dann noch die Tabelle in der Function deklariere oder außerhalb ist dann auch gehüpft wie gesprungen
aber ist trotzdem cool
p.s. var kann hier natürlich auch durch pc.ge_level() ersetzbar oder jegliche andere Funktion
PHP Code:
local table = {25,35,45,55}
if in_table(pc.get_level(),table) == true then
|
|
|
03/07/2015, 11:19
|
#10
|
elite*gold: 0
Join Date: Jan 2015
Posts: 239
Received Thanks: 585
|
Quote:
Originally Posted by Rofelmau
naja was glaube ich von mijago ist, währe
was man dann so nutzen kann
PHP Code:
local table ={1,2,3,4}
local var = 2
if in_table(var,table) == true then
deins ist dann vielleicht minimal kürzer, da man daraus auch
PHP Code:
if in_table(2,table) == true then
machen kann und ob ich dann noch die Tabelle in der Function deklariere oder außerhalb ist dann auch gehüpft wie gesprungen
aber ist trotzdem cool
p.s. var kann hier natürlich auch durch pc.ge_level() ersetzbar oder jegliche andere Funktion
PHP Code:
local table = {25,35,45,55}
if in_table(pc.get_level(),table) == true then
|
Man kann beides gleich nutzen.
|
|
|
03/07/2015, 15:14
|
#11
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
compare_list-Funktionen hinzugefügt
|
|
|
03/23/2015, 09:58
|
#12
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
min() und max() hinzugefügt
|
|
|
03/23/2015, 10:37
|
#13
|
wild wild son
elite*gold: 0
Join Date: Feb 2011
Posts: 5,996
Received Thanks: 3,391
|
Quote:
Originally Posted by definitely not Sensenmann
min() und max() hinzugefügt
|
Schleifen sind zwar schön und gut, jedoch setzt du diese mMn kontinuierlich ein - sieh dir bestenfalls mal die Funktion table.sort() an, darauf würde ich dem Fall zurückgreifen.
lg
|
|
|
03/23/2015, 11:01
|
#14
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by .JayZoN
Schleifen sind zwar schön und gut, jedoch setzt du diese mMn kontinuierlich ein - sieh dir bestenfalls mal die Funktion table.sort() an, darauf würde ich dem Fall zurückgreifen.
lg
|
Danke für den Hinweis - habe die Funktionen angepasst.
|
|
|
03/24/2015, 20:43
|
#15
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Neue Funktionen:
- modulo (gibt es zwar, funktioniert in Quests aber nicht, compiler meckert)
- distinct
- get_smallest_id
- next_val
- count
|
|
|
 |
|
Similar Threads
|
[R] Alle Questfunktionen eines Cores auslesen
03/01/2013 - Metin2 PServer Guides & Strategies - 25 Replies
So, da manche sich die Mühe machen, extra mit IDA über den Core zu gehen, um nach versteckten Questfunktionen zu suchen (haha :D) , hier mal eine Alternative:
Fügt das hier in eure questlib.lua ein. Entscheidend ist, wo ihr sie positioniert:
- eine Positionierumg am Kopf der Datei bewirkt, dass ihr alle Funktionen, die von der Game kommen, auflistet
- eine Positionierung am Fuß der Datei bewirkt, dass ihr alle Funktionen der Game, die in der questlib definierten Funktionen und eventuelle...
|
[RLS]Einige gedumpte Questfunktionen
01/07/2013 - Metin2 PServer Guides & Strategies - 6 Replies
blablabla
TheMarv.eu/quest.c
Darf ich nicht posten, e*PvP RulezZz u know?
Viel Spaß und btw. no h8!
|
Suche Ideenen für Questfunktionen =)
06/19/2012 - Metin2 Private Server - 6 Replies
Hi,
Schreibe mir gerade einige praktische Questfunktionen und wollte fragen ob jemand eine gute Idee hat für weitere =)
Werde die dann releasen =)
|
[RELEASE]Alle Questfunktionen
07/17/2010 - Metin2 PServer Guides & Strategies - 18 Replies
Hey,
ich hab mir mal alle Questfunktionen aus der Game-Datei abgescreent, dacht ich veröffentlich die mal, vllt. hilfts euch ja :)
http://www.xup.in/pic,14042099/quest1.jpg
http://www.xup.in/pic,98358393/quest2.jpg
http://www.xup.in/pic,42810119/quest3.jpg
http://www.xup.in/pic,11179058/quest4.jpg
http://www.xup.in/pic,70705453/quest5.jpg
http://www.xup.in/pic,11677788/quest6.jpg
http://www.xup.in/pic,81201051/quest7.jpg
|
All times are GMT +1. The time now is 00:02.
|
|