[LUA] Questfunktionen by Sensenmann

03/05/2015 14:17 rollback#1
NameParameterAnwendungKommentar
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











































Viel Spaß damit! :)
03/05/2015 14:22 i[Remix]#2
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 rollback#3
Quote:
Originally Posted by i[Remix] View Post
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? :o
03/05/2015 14:35 #SoNiice#4
k = key, v = value

Du nutzt eine for - Schleife, Remix eine foreach - Schleife, darin liegt der Unterschied.
03/05/2015 17:49 .Mosh36#5
Danke dir! :)
Kriegst ein "Thanks"
03/06/2015 18:31 Yiv#6
Voll nutzlos.
Danke <3 Hdl ;)
03/06/2015 18:59 Lefloyd#7
Pragmatisch ^-^
Könntest noch eine in_range-Funktion dazu machen, wenn du schon dabei bist :D

Kind Regards
03/06/2015 20:08 rollback#8
Quote:
Originally Posted by Lefloyd View Post
Pragmatisch ^-^
Könntest noch eine in_range-Funktion dazu machen, wenn du schon dabei bist :D

Kind Regards
PHP Code:
function in_range(comparevalue1value2)
    for 
value1value2 do
        if 
compare == i then return true end
    end
    
return false
end 
03/07/2015 10:50 Rofelmau#9
naja was glaube ich von mijago ist, währe

PHP Code:
in_table() 
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 i[Remix]#10
Quote:
Originally Posted by Rofelmau View Post
naja was glaube ich von mijago ist, währe

PHP Code:
in_table() 
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 rollback#11
compare_list-Funktionen hinzugefügt
03/23/2015 09:58 rollback#12
min() und max() hinzugefügt
03/23/2015 10:37 Nick#13
Quote:
Originally Posted by definitely not Sensenmann View Post
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 rollback#14
Quote:
Originally Posted by .JayZoN View Post
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 rollback#15
Neue Funktionen:
- modulo (gibt es zwar, funktioniert in Quests aber nicht, compiler meckert)
- distinct
- get_smallest_id
- next_val
- count