Reklam vermek için [email protected]
Kaynak ikonu

Event Map + Quest + Dosya 2020-09-17

indirmek için izniniz yok

ᴛᴜʀ ᴀʀᴍʏ

Prove yourself to yourself, not others.
Telefon Numarası Onaylanmış Üye
Fahri Üye
TM Üye
Katılım
26 Eki 2008
Konular
271
Mesajlar
1,020
Reaksiyon Skoru
152
Altın Konu
12
Başarım Puanı
208
TM Yaşı
14 Yıl 1 Ay 4 Gün
Online Süresi
12d 14h 36m
MmoLira
118
DevLira
12
Takipçiler
15

LordMt2 | 1-127 Level ve Bol Dönüşümlü Yapısı ile 02 Aralık Cuma Günü Saat 20:00’da Açılıyor. Sende Bu Heyecana Ortak Ol !



Yapan olur ise kanıt aktarırlarsa konuya dahil ederim arkadaşlar
Şimdiden teşekkür ederim iyi forumlar dilerim


Kod:
print('Questlib by Mijago | 22.03.2012')
ql   = {}
col  = {}
zt   = {}
proc = {}
-- Einstellungen zur Lib:
mijago_include_compat = true

do  -- Zur Nutzung auf Windoof | MySQL funktioniert auf Windoof nicht!
    local old_print = print
    if number == nil then
        number = function(i,l)
            return math.random(i,l)
        end
    end
    if pc == nil then
        pc = {}
        pc.get_name = function() return '-name-' end
        pc.count_item = function() return 200 end
        pc.remove_item = function() return end
        pc.give_item = function(i,l) print('<GiveItem>',i,l) end
        pc.warp = function(i,l) print('<Warp>',i,l) end
        pc.warp_local = function(m,x,y) print('<Warp>',m,x,y) end
        pc.give_item2 = pc.give_item
        pc.get_map_index = function() return 1 end
        pc.get_local_y = function() return 200 end
        pc.get_local_x = function() return 400 end
        pc.get_empire = function() return 2 end
        pc.getqf = function() return 222313 end
        get_time = os.time
    end
    if cmdchat == nil then
        cmdchat = function() old_print('<cmdchat>') end
    end
    if wait == nil then
        wait = function () old_print('<wait>') end
    end
    if input == nil then
        input = function () old_print('<input>'); return 101 end
    end
    if say == nil then
        say = function (...)
            local st = ''
            table.foreachi(arg,function(i,l)
                st = st..l..'\t'
            end)
        old_print('<say>',st)
        end
    end
    if chat == nil then
        chat = function (txt) old_print('<Chat>',txt) end
    end
    if notice == nil then
        notice = function (txt) old_print('<notice>',txt) end
    end
    if setbg == nil then
        setbg = function (txt) old_print('<setbg>',txt) end
    end
    if say_size == nil then
        say_size = function (a,b) old_print('<say_size>',a,b) end
    end
    if notice_all == nil then
        notice_all = function (txt) old_print('<notice_all>',txt) end
    end
    if game == nil then
        game = {}
        game.set_event_flag = function(a,b) print('<game.set_event_flag>',a,b) end
    end
    if select == nil then
        select = function (...)
            local st = ''
            table.foreachi(arg,function(i,l)
                st = st..l..'\t'
            end)
            old_print('<select>',st)
            return math.random(0,table.getn(arg))
        end
    end
end
doit = os.execute
ql.mysql = {
    ["user"] = "root",
    ["pass"] = "",
    ["ip"] = "localhost",
}
-------------------------------------------------------------------------------
--


function select2(tab,...)
    arg.n = nil
    if type(tab) ~= "table" and type(tab) == 'number' then
        table.insert(arg,1,tab)
        tab = arg
    elseif type(tab) ~= "table" and type(tab) == 'string' then
        table.insert(arg,1,tab)
        table.insert(arg,1,8)
        tab = arg
    elseif type(tab) == "table" and type(tab[1]) == 'string' then
        table.insert(tab,1,8)
    end
    local max = tab[1]; table.remove(tab,1)
    local tablen,outputstr,outputcount,nextc,incit = table.getn(tab),"",0,0,0
    table.foreach(tab,
        function(i,l)
            outputcount = outputcount + 1
            if outputcount == 1 then
                outputstr=outputstr..'sel = select("'..l..'"'
            elseif outputcount == max and tablen > outputcount+incit  then
                if tablen ~= outputcount+incit+1 then
                    outputstr=outputstr..',"'..l..'","Nächste Seite") + '..incit..' '
                    if nextc > 0 then
                        outputstr = outputstr..'end '
                    end
                    outputstr=outputstr..'; if sel == '..(incit+max+1)..' then '        -- Anfangen der neuen Abfrage
                    nextc, outputcount, incit= nextc+1,0,incit+max
                else
                    outputstr=outputstr..',"'..l..'"'
                end
            else
                outputstr=outputstr..',"'..l..'"'
            end
        end
    )
    outputstr = outputstr..') + '..incit
    if nextc > 0 then
        outputstr = outputstr..' end'
    end
    outputstr= outputstr.. '; return sel'
    print(outputstr)
    local sel = assert(loadstring(outputstr))()
    tablen,outputstr,outputcount,nextc,incit = nil,nil,nil,nil,nil -- Speicher freimachen
    return sel
end

function arraytoselect(arr,abbr)
    local d = 'sel = select('
    local i = 0
    for i=1,getn(arr),1 do
        d = d..'\\"'..arr[i]..'\\",'
        if abbr ~= nil then
            if i == getn(arr) then
                d = d..'\\"'..abbr..'\\"'
            end
        end
    end
    d = d..")\\nreturn sel"
    return assert(loadstring(d))()
end
function dostr(str)
    assert(loadstring(str))()
end
-------------------------------------------------------------------------------
-- Veränderte Lua-Funktionen
do
    local old_tonumber = tonumber
    tonumber = function(str)
        if old_tonumber(str) == nil then
            return 0,false
        else
            return old_tonumber(str),true
        end
    end
end
-------------------------------------------------------------------------------
-- Datenspeicherung
function writelog(text,var,file)
    if var == nil then
        var = 1
    end
    if var == 1 then
        local data = io.open('syserr','a+')
        data:write(os.date()..'::\t'..text.."\n")
        data:close()
    elseif var == 2 then
        local data = io.open('syslog','a+')
        data:write(os.date()..'::\t'..text.."\n")
        data:close()
    elseif var == 3 then
        local data = io.open(file,'a+')
        data:write(os.date()..'::\t'..text.."\n")
        data:close()
    end
end
function watch_table(tab)
    local meta,myname,tabn = {},pc.get_name(),tostring(tab)
    local lo = function(typ,index,wert) writelog(tabn..' - '..myname..': '..typ..' ['..index..'] = '..wert,3,'tables') end
    meta.__newindex = function(ta,index,wert)
            --writelog(tabn..' - '..myname..': Newindex ['..index..'] = '..wert,3,'tables')
            lo('newindex',index,wert)
            rawset(ta,index,wert)
        end
    meta.__index = function(ta,index,wert)
            lo('index',index,wert)
            error('Fehlerhafter Zugriff bei '..index)
        end
    meta.__call = function(ta,index,wert)
            lo('call',index,wert)
        end
    setmetatable(tab, meta)
end


-------------------------------------------------------------------------------
-- account
account = account or {}
function account.set_pw(pw,ac)
    if pw == nil then error("Fehler... Passwort muss gesetzt werden!") end
    if ac == nil then ac = pc.get_account_id() end
    if type(ac) == "string" then
        mysql_query("UPDATE player.player,account.account SET account.password = password('"..pw.."') WHERE account.id = player.account_id and player.name = '"..ac.."' LIMIT 1")
    elseif type(ac) == "number" then
        mysql_query("UPDATE account.account SET account.password = password('"..pw.."') WHERE account.id = "..ac)
    end
end



-------------------------------------------------------------------------------
-- PCI
pci = {}
function pci:new(name)
  local out = {}
  if name == nil then
    name = pc.get_name()
  end
  local info = mysql_query("SELECT * FROM player.player WHERE name = \'"..name.."\' LIMIT 1",ql.mysql["user"],ql.mysql["pass"],ql.mysql["ip"])
  local reich = mysql_query("select player_index.empire FROM player.player INNER JOIN player.player_index ON player.account_id = player_index.id WHERE player.name = '"..pc.get_name().."'",ql.mysql["user"],ql.mysql["pass"],ql.mysql["ip"])
  out.name = name
  out.level = info.level[1]
  out.playtime = info.playtime[1]
  out.job = info.job[1]
  out.account_id = info.account_id[1]
  out.id = info.id[1]
  out.voice = info.voice[1]
  out.dir = info.dir[1]
  out.x = info.x[1]
  out.y = info.y[1]
  out.z = info.z[1]
  out.map_index = info.map_index[1]
  out.exit_y = info.exit_y[1]
  out.exit_x = info.exit_x[1]
  out.exit_map_index = info.exit_map_index[1]
  out.hp = info.hp[1]
  out.mp = info.mp[1]
  out.stamina = info.stamina[1]
  out.random_hp = info.random_hp[1]
  out.random_sp = info.random_sp[1]
  out.level_step = info.level_step[1]
  out.st = info.st[1]
  out.ht = info.ht[1]
  out.dx = info.dx[1]
  out.iq = info.iq[1]
  out.exp= info.exp[1]
  out.gold = info.gold[1]
  out.stat_point = info.stat_point[1]
  out.skill_point = info.skill_point[1]
  out.ip = info.ip[1]
  out.part_main = info.part_main[1]
  out.part_hair = info.part_hair[1]
  out.skill_group = info.skill_group[1]
  out.last_play = info.last_play[1]
  out.alignment = info.alignment[1]
  out.change_name = info.change_name[1]
  out.sub_skill_point = info.sub_skill_point[1]
  out.horse_skill_point = info.horse_skill_point[1]
  out.horse_riding = info.horse_riding[1]
  out.horse_hp_droptime = info.horse_hp_droptime[1]
  out.horse_level = info.horse_level[1]
  out.horse_stamina = info.horse_stamina[1]
  out.horse_hp = info.horse_hp[1]
  out.stat_reset_count = info.stat_reset_count[1]
  out.empire = reich.empire[1]
  setmetatable(out, { __index = pci })
  print('Daten für '..name..' erfolgreich geladen!')
  return out
end
function pci:update()
  local info = mysql_query("SELECT * FROM player.player WHERE name = \'"..self.name.."\' LIMIT 1",ql.mysql["user"],ql.mysql["pass"],ql.mysql["ip"])
  self.level = info.level[1]
  self.playtime = info.playtime[1]
  self.job = info.job[1]
  self.account_id = info.account_id[1]
  self.id = info.id[1]
  self.voice = info.voice[1]
  self.dir = info.dir[1]
  self.x = info.x[1]
  self.y = info.y[1]
  self.z = info.z[1]
  self.map_index = info.map_index[1]
  self.exit_y = info.exit_y[1]
  self.exit_x = info.exit_x[1]
  self.exit_map_index = info.exit_map_index[1]
  self.hp = info.hp[1]
  self.mp = info.mp[1]
  self.stamina = info.stamina[1]
  self.random_hp = info.random_hp[1]
  self.random_sp = info.random_sp[1]
  self.level_step = info.level_step[1]
  self.st = info.st[1]
  self.ht = info.ht[1]
  self.dx = info.dx[1]
  self.iq = info.iq[1]
  self.exp= info.exp[1]
  self.gold = info.gold[1]
  self.stat_point = info.stat_point[1]
  self.skill_point = info.skill_point[1]
  self.ip = info.ip[1]
  self.part_main = info.part_main[1]
  self.part_hair = info.part_hair[1]
  self.skill_group = info.skill_group[1]
  self.last_play = info.last_play[1]
  self.alignment = info.alignment[1]
  self.change_name = info.change_name[1]
  self.sub_skill_point = info.sub_skill_point[1]
  self.horse_skill_point = info.horse_skill_point[1]
  self.horse_riding = info.horse_riding[1]
  self.horse_hp_droptime = info.horse_hp_droptime[1]
  self.horse_level = info.horse_level[1]
  self.horse_stamina = info.horse_stamina[1]
  self.horse_hp = info.horse_hp[1]
  self.stat_reset_count = info.stat_reset_count[1]
  print('Daten für '..self.name..' erfolgreich geupdated!')
end
-------------------------------------------------------------------------------
-- Strings
function rm_nlc(s) return string.gsub(s, "%A", "") end -- alles außer Buchstaben weg
function rm_ndc(s) return string.gsub(s, "%D", "") end -- alles außer Zahlen weg
function rm_lc(s) return string.gsub(s, "%a", "") end -- alle Buchstaben weg
function rm_dc(s) return string.gsub(s, "%d", "") end -- alle Zahlen weg
function rm_ucc(s) return string.gsub(s, "%u", "") end -- alle großgeschriebenen Buchstaben weg
function rm_lcc(s) return string.gsub(s, "%l", "") end -- alle kleingeschriebenen Buchstaben weg
function rm_nanc(s) return string.gsub(s, "%W", "") end -- alle nicht-alphanumerischen Zeichen weg

function string.reverse(str)
    local se = ''
    for i=1,string.len(str) do
        se = string.sub(str,i,i)..se
    end
    return se
end
function num_format(num)
    if type(num) == "number" then num = tostring(num) end
    if string.len(num) <= 3 then return num end
    return string.reverse(string.gsub(string.reverse(num),'(%d%d%d)','%1.'))
end
function wartungsmodus(v)
    if v == 1 then
        mysql_query("UPDATE account.account SET account.status = 'SHUTDOWN' WHERE status = 'OK' and account.login NOT IN (SELECT mAccount FROM common.gmlist);")
    elseif v == 0 then
        mysql_query("UPDATE account.account SET account.status = 'OK' WHERE status = 'SHUTDOWN' and account.login NOT IN (SELECT mAccount FROM common.gmlist);")
    end
end
-------------------------------------------------------------------------------
--[[ iti
iti = {}
function iti:new(name)  -- The constructor
  local out = {}
  local info = mysql_query_on("SELECT * FROM player.item WHERE vnum = "..name.." LIMIT 1")
  out.vnum = tonumber(name)

  setmetatable(out, { __index = iti })  -- Inheritance
  print('Daten für Item '..name..' erfolgreich geladen!')
  return out
end
--]]
-------------------------------------------------------------------------------
-- Say CFG UNFINISHED - In Arbeit!
--[[
sayer = {}
function sayer:new()
    local out = {}
    out.maxlen = 50
    out.maxlines = 15
    out.lines=0
    out.text = 'say("'
    self.sayopen = 1
    setmetatable(out, { __index = sayer })
    return out
end
function sayer:add(txt)
    if self.lines >= self.maxlines then
        self.lines = 0
        self.text = self.text..'"); wait();'
        self.sayopen = 0
    end
    if self.sayopen == 0 then
        self.text = self.text..' say("'
        self.sayopen = 1
    end
    if self.lines ~= 0 then
        self.text = self.text ..'[ENTER]'
    end
    if string.len(txt) < self.maxlen then
        self.text = self.text ..txt
    end
    self.lines = self.lines+1
end
function sayer:send()
    if self.sayopen == 1 then
        self.text = self.text..'"); '
        self.sayopen = 1
    end
    --assert(loadstring(self.text))()
    s.out=loadstring(self.text)()
    print(self.text)
end
function sayer:wait()
    if self.sayopen == 1 then
        self.text = self.text..'"); '
        self.sayopen = 0
    end
    self.text = self.text..' wait();'
    self.sayopen = 0
    self.lines=0
end
function sayer:input()
    if self.sayopen == 1 then
        self.text = self.text..'"); '
        self.sayopen = 0
    end
    self.text = self.text..'input();'
    self.sayopen = 0
    self.lines=0
end
function sayer:select(tab)
    if self.sayopen == 1 then
        self.text = self.text..'"); '
        self.sayopen = 0
    end
    local un = "'"..join("','",tab).."'"
    self.text = self.text..'select('..un..');'
    self.sayopen = 0
    self.lines=0
end
function sayer:clear()
    self.maxlen = 50
    self.maxlines = 6
    self.lines=0
    self.text = 'say("'
    self.sayopen = 1
end
--]]
-------------------------------------------------------------------------------
-- MYSQL - FUNKTIONEN
-- Einzelbefehle
function mysql_escape(str)
    str = string.gsub(str,"%\\", "\\\\")
--    str = string.gsub(str,"%\0", "\\0") Gibt einen fehler aus :o | Wer rausfindet, warum.. Bitte mir Schreiben (Mijago)
    str = string.gsub(str,"%\n", "\\n")
    str = string.gsub(str,"%\r", "\\r")
    str = string.gsub(str,"%\x1a", "\Z")
    str = string.gsub(str,"%\'", "\\'")
    str = string.gsub(str,'%\"', '\\"')
    return str
end
function backup_files()
    -- Backuppt den Share-Ordner
    local now = os.date('%d-%m-%Y_%H:%M:%S')
    -- Aus absicht einzelne Zeilen! (Zur besseren Kommentierung und dass nicht ein Fehler alle Scripts behindert)
    os.execute('mkdir /backup/ && mkdir /backup/share')  -- Ordner erstellen, falls nicht vorhanden
    os.execute('tar -cvzf ./locale/ /backup/share/'..now..'_locale.tar.gz')      -- Packen
    os.execute('tar -cvzf ./data/ /backup/share/'..now..'_data.tar.gz')      -- Packen
end
function backup_main()
    -- Backuppt die Hauptdatenbanken
    local now = os.date('%d-%m-%Y_%H:%M:%S')
    -- Aus absicht einzelne Zeilen! (Zur besseren Kommentierung und dass nicht ein Fehler alle Scripts behindert)
    os.execute('mkdir /backup/ && mkdir /backup/main')  -- Ordner erstellen, falls nicht vorhanden
    os.execute('mkdir /backup/main/'..now)              -- Ordner für das Backup erstellen
    os.execute('mkdir /backup/main/'..now..'/player/')  -- Player-DB vorbereiten
    os.execute('mkdir /backup/main/'..now..'/account/') -- Account-DB vorbereiten
    os.execute('cp /var/db/mysql/player/player* /backup/main/'..now..'/player/')   -- Player DBs Kopieren
    os.execute('cp /var/db/mysql/player/quest.* /backup/main/'..now..'/player/')    -- Quest DB Kopieren
    os.execute('cp /var/db/mysql/player/guild* /backup/main/'..now..'/player/')    -- Guild DBs Kopieren
    os.execute('cp /var/db/mysql/account/account.* /backup/main/'..now..'/account/')    -- Guild DBs Kopieren
    os.execute('tar -cvzf /backup/main/'..now..'/ /backup/main/'..now..'.tar.gz')      -- Packen
    os.execute('rm -R /backup/main/'..now..'/')                                         -- Daten wieder löschen
end
function backup()
    -- Backuppt alle Datenbanken
    local now = os.date('%d-%m-%Y_%H:%M:%S')
    -- Aus absicht einzelne Zeilen! (Zur besseren Kommentierung und dass nicht ein Fehler alle Scripts behindert)
    os.execute('mkdir /backup/ && mkdir /backup/all')  -- Ordner erstellen, falls nicht vorhanden
    os.execute('mkdir /backup/all/'..now)              -- Ordner für das Backup erstellen
    os.execute('tar -cvzf /var/db/mysql/ /backup/all/'..now..'.tar.gz')      -- Packen
end

mysql_query = function(query)
    if not pre then
        local rt = io.open('CONFIG','r'):read('*all')
        pre,_= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4')
    end
    math.randomseed(os.time())
    local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{}
    os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi)
    for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) end; os.remove(fi);
    for i = 2, table.getn(t) do table.foreach(t[i],function(a,b)
        out[i-1]               = out[i-1] or {}
        out[i-1][a]            = tonumber(b) or b or 'NULL'
        out[t[1][a]]           = out[t[1][a]] or {}
        out[t[1][a]][i-1]      = tonumber(b) or b or 'NULL'
    end) end
    out.__lines = t[1]
    return out
end

mysql_query10 = function(query)
    if not pre then
        local rt = io.open('CONFIG','r'):read('*all')
        pre,_= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4')
    end
    math.randomseed(os.time())
    local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{}
    os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi)
    for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) end; os.remove(fi);
    for i = 2, table.getn(t) do table.foreach(t[i],function(a,b)
        out[i-1]               = out[i-1] or {}
        out[i-1][a]            = tostring(b) or b or 'NULL'
        out[t[1][a]]           = out[t[1][a]] or {}
        out[t[1][a]][i-1]      = tostring(b) or b or 'NULL'
    end) end
    out.__lines = t[1]
    return out
end

-- Für mehrere CFG's
mysql = {}
function mysql:connect(ip,user,passwd,db)
    local out = {}
    out.ip = ip
    out.user = user
    out.pass = passwd
    if db == nil then db = 'player' end
    out.db = db
    out.querycount = 0
    out.querylist = {}
    out.ql = {}
    setmetatable(out, { __index = mysql })
    return out
end
function mysql:query(query)
    self.lastquery = mysql_query(query,self.user,self.pass,self.db,self.ip)
    self.lq = self.lastquery
        self.querycount = self.querycount +1
        self.querylist[self.querycount] = self.lq
        self.ql = self.querylist
    return self.lastquery, self.querycount
end
function mysql:setcfg(ip,user,pass,db)
    if ip ~= nil then
        self.ip = ip
    end
    if user ~= nil then
        self.user = user
    end
    if pass ~= nil then
        self.pass = pass
    end
    self.db = db
end
-------------------------------------------------------------------------------
-- FARBCODES
col.list= {
{ 'lightcoral', 240,128,128 },{ 'rosybrown', 188,143,143 },
{ 'indianred', 205,92,92 },{ 'red', 255,0,0 },{ 'firebrick', 178,34,34 },{ 'brown', 165,42,42 },
{ 'darkred', 139,0,0 },{ 'maroon', 128,0,0 },{ 'mistyrose', 255,228,225 },{ 'salmon', 250,128,114 },
{ 'tomato', 255,99,71 },{ 'darksalmon', 233,150,122 },{ 'coral', 255,127,80 },{ 'orangered', 255,69,0 },
{ 'lightsalmon', 255,160,122 },{ 'sienna', 160,82,45 },{ 'seashell', 255,245,238 },{ 'chocolate', 210,105,30 },
{ 'saddlebrown', 139,69,19 },{ 'sandybrown', 244,164,96 },{ 'peachpuff', 255,218,185 },{ 'peru', 205,133,63 },
{ 'linen', 250,240,230 },{ 'bisque', 255,228,196 },{ 'darkorange', 255,140,0 },{ 'burlywood', 222,184,135 },
{ 'antiquewhite', 250,235,215 },{ 'tan', 210,180,140 },{ 'navajowhite', 255,222,173 },{ 'blanchedalmond', 255,235,205 },
{ 'papayawhip', 255,239,213 },{ 'moccasin', 255,228,181 },{ 'orange', 255,165,0 },{ 'wheat', 245,222,179 },
{ 'oldlace', 253,245,230 },{ 'floralwhite', 255,250,240 },{ 'darkgoldenrod', 184,134,11 },{ 'goldenrod', 218,165,32 },
{ 'cornsilk', 255,248,220 },{ 'gold', 255,215,0 },{ 'lemonchiffon', 255,250,205 },{ 'khaki', 240,230,140 },
{ 'palegoldenrod', 238,232,170 },{ 'darkkhaki', 189,183,107 },{ 'ivory', 255,255,240 },{ 'lightyellow', 255,255,224 },
{ 'beige', 245,245,220 },{ 'lightgoldenrodyellow', 250,250,210 },{ 'yellow', 255,255,0 },{ 'olive', 128,128,0 },
{ 'olivedrab', 107,142,35 },{ 'yellowgreen', 154,205,50 },{ 'darkolivegreen', 85,107,47 },{ 'greenyellow', 173,255,47 },
{ 'chartreuse', 127,255,0 },{ 'lawngreen', 124,252,0 },{ 'darkseagreen', 143,188,139 },{ 'honeydew', 240,255,240 },
{ 'palegreen', 152,251,152 },{ 'lightgreen', 144,238,144 },{ 'lime', 0,255,0 },{ 'limegreen', 50,205,50 },
{ 'forestgreen', 34,139,34 },{ 'green', 0,128,0 },{ 'darkgreen', 0,100,0 },{ 'seagreen', 46,139,87 },
{ 'mediumseagreen', 60,179,113 },{ 'springgreen', 0,255,127 },{ 'mintcream', 245,255,250 },{ 'mediumspringgreen', 0,250,154 },
{ 'mediumaquamarine', 102,205,170 },{ 'aquamarine', 127,255,212 },{ 'turquoise', 64,224,208 },{ 'lightseagreen', 32,178,170 },
{ 'mediumturquoise', 72,209,204 },{ 'azure', 240,255,255 },{ 'lightcyan', 224,255,255 },{ 'paleturquoise', 175,238,238 },
{ 'aqua', 0,255,255 },{ 'cyan', 0,255,255 },{ 'darkcyan', 0,139,139 },{ 'teal', 0,128,128 },
{ 'darkslategray', 47,79,79 },{ 'darkturquoise', 0,206,209 },{ 'cadetblue', 95,158,160 },{ 'powderblue', 176,224,230 },
{ 'lightblue', 173,216,230 },{ 'deepskyblue', 0,191,255 },{ 'skyblue', 135,206,235 },{ 'lightskyblue', 135,206,250 },
{ 'steelblue', 70,130,180 },{ 'aliceblue', 240,248,255 },{ 'dodgerblue', 30,144,255 },{ 'lightslategray', 119,136,153 },
{ 'slategray', 112,128,144 },{ 'lightsteelblue', 176,196,222 },{ 'cornflowerblue', 100,149,237 },{ 'royalblue', 65,105,225 },
{ 'ghostwhite', 248,248,255 },{ 'lavender', 230,230,250 },{ 'blue', 0,0,255 },{ 'mediumblue', 0,0,205 },
{ 'darkblue', 0,0,139 },{ 'midnightblue', 25,25,112 },{ 'navy', 0,0,128 },{ 'slateblue', 106,90,205 },
{ 'darkslateblue', 72,61,139 },{ 'mediumslateblue', 123,104,238 },{ 'mediumpurple', 147,112,219 },{ 'blueviolet', 138,43,226 },
{ 'indigo', 75,0,130 },{ 'darkorchid', 153,50,204 },{ 'darkviolet', 148,0,211 },{ 'mediumorchid', 186,85,211 },
{ 'thistle', 216,191,216 },{ 'plum', 221,160,221 },{ 'violet', 238,130,238 },{ 'fuchsia', 255,0,255 },
{ 'magenta', 255,0,255 },{ 'darkmagenta', 139,0,139 },{ 'purple', 128,0,128 },{ 'orchid', 218,112,214 },
{ 'mediumvioletred', 199,21,133 },{ 'deeppink', 255,20,147 },{ 'hotpink', 255,105,180 },{ 'lavenderblush', 255,240,245 },
{ 'palevioletred', 219,112,147 },{ 'crimson', 220,20,60 },{ 'pink', 255,192,203 },{ 'lightpink', 255,182,193 },
{ 'white', 255,255,255 },{ 'snow', 255,250,250 },{ 'whitesmoke', 245,245,245 },{ 'gainsboro', 220,220,220 },
{ 'lightgray', 211,211,211 },{ 'silver', 192,192,192 },{ 'darkgray', 169,169,169 },{ 'gray', 128,128,128 },
{ 'dimgray', 105,105,105 },{ 'black', 0,0,0 },{ 'aliceblue', 240,248,255 },{ 'antiquewhite', 250,235,215 },
{ 'aqua', 0,255,255 },{ 'aquamarine', 127,255,212 },{ 'azure', 240,255,255 },{ 'beige', 245,245,220 },
{ 'bisque', 255,228,196 },{ 'black', 0,0,0 },{ 'blanchedalmond', 255,235,205 },{ 'blue', 0,0,255 },
{ 'blueviolet', 138,43,226 },{ 'brown', 165,42,42 },{ 'burlywood', 222,184,135 },{ 'cadetblue', 95,158,160 },
{ 'chartreuse', 127,255,0 },{ 'chocolate', 210,105,30 },{ 'coral', 255,127,80 },{ 'cornflowerblue', 100,149,237 },
{ 'cornsilk', 255,248,220 },{ 'crimson', 220,20,60 },{ 'cyan', 0,255,255 },{ 'darkblue', 0,0,139 },
{ 'darkcyan', 0,139,139 },{ 'darkgoldenrod', 184,134,11 },{ 'darkgray', 169,169,169 },{ 'darkgreen', 0,100,0 },
{ 'darkkhaki', 189,183,107 },{ 'darkmagenta', 139,0,139 },{ 'darkolivegreen', 85,107,47 },{ 'darkorange', 255,140,0 },
{ 'darkorchid', 153,50,204 },{ 'darkred', 139,0,0 },{ 'darksalmon', 233,150,122 },{ 'darkseagreen', 143,188,139 },
{ 'darkslateblue', 72,61,139 },{ 'darkslategray', 47,79,79 },{ 'darkturquoise', 0,206,209 },{ 'darkviolet', 148,0,211 },
{ 'deeppink', 255,20,147 },{ 'deepskyblue', 0,191,255 },{ 'dimgray', 105,105,105 },{ 'dodgerblue', 30,144,255 },
{ 'firebrick', 178,34,34 },{ 'floralwhite', 255,250,240 },{ 'forestgreen', 34,139,34 },{ 'fuchsia', 255,0,255 },
{ 'gainsboro', 220,220,220 },{ 'ghostwhite', 248,248,255 },{ 'gold', 255,215,0 },{ 'goldenrod', 218,165,32 },
{ 'gray', 128,128,128 },{ 'green', 0,128,0 },{ 'greenyellow', 173,255,47 },{ 'honeydew', 240,255,240 },
{ 'hotpink', 255,105,180 },{ 'indianred', 205,92,92 },{ 'indigo', 75,0,130 },{ 'ivory', 255,255,240 },
{ 'khaki', 240,230,140 },{ 'lavender', 230,230,250 },{ 'lavenderblush', 255,240,245 },{ 'lawngreen', 124,252,0 },
{ 'lemonchiffon', 255,250,205 },{ 'lightblue', 173,216,230 },{ 'lightcoral', 240,128,128 },{ 'lightcyan', 224,255,255 },
{ 'lightgoldenrodyellow', 250,250,210 },{ 'lightgray', 211,211,211 },{ 'lightgreen', 144,238,144 },{ 'lightpink', 255,182,193 },
{ 'lightsalmon', 255,160,122 },{ 'lightseagreen', 32,178,170 },{ 'lightskyblue', 135,206,250 },{ 'lightslategray', 119,136,153 },
{ 'lightsteelblue', 176,196,222 },{ 'lightyellow', 255,255,224 },{ 'lime', 0,255,0 },{ 'limegreen', 50,205,50 },
{ 'linen', 250,240,230 },{ 'magenta', 255,0,255 },{ 'maroon', 128,0,0 },{ 'mediumaquamarine', 102,205,170 },
{ 'mediumblue', 0,0,205 },{ 'mediumorchid', 186,85,211 },{ 'mediumpurple', 147,112,219 },{ 'mediumseagreen', 60,179,113 },
{ 'mediumslateblue', 123,104,238 },{ 'mediumspringgreen', 0,250,154 },{ 'mediumturquoise', 72,209,204 },{ 'mediumvioletred', 199,21,133 },
{ 'midnightblue', 25,25,112 },{ 'mintcream', 245,255,250 },{ 'mistyrose', 255,228,225 },{ 'moccasin', 255,228,181 },
{ 'navajowhite', 255,222,173 },{ 'navy', 0,0,128 },{ 'oldlace', 253,245,230 },{ 'olive', 128,128,0 },
{ 'olivedrab', 107,142,35 },{ 'orange', 255,165,0 },{ 'orangered', 255,69,0 },{ 'orchid', 218,112,214 },
{ 'palegoldenrod', 238,232,170 },{ 'palegreen', 152,251,152 },{ 'paleturquoise', 175,238,238 },{ 'palevioletred', 219,112,147 },
{ 'papayawhip', 255,239,213 },{ 'peachpuff', 255,218,185 },{ 'peru', 205,133,63 },{ 'pink', 255,192,203 },
{ 'plum', 221,160,221 },{ 'powderblue', 176,224,230 },{ 'purple', 128,0,128 },{ 'red', 255,0,0 },
{ 'rosybrown', 188,143,143 },{ 'royalblue', 65,105,225 },{ 'saddlebrown', 139,69,19 },{ 'salmon', 250,128,114 },
{ 'sandybrown', 244,164,96 },{ 'seagreen', 46,139,87 },{ 'seashell', 255,245,238 },{ 'sienna', 160,82,45 },
{ 'silver', 192,192,192 },{ 'skyblue', 135,206,235 },{ 'slateblue', 106,90,205 },{ 'slategray', 112,128,144 },
{ 'snow', 255,250,250 },{ 'springgreen', 0,255,127 },{ 'steelblue', 70,130,180 },{ 'tan', 210,180,140 },
{ 'teal', 0,128,128 },{ 'thistle', 216,191,216 },{ 'tomato', 255,99,71 },{ 'turquoise', 64,224,208 },
{ 'violet', 238,130,238 },{ 'wheat', 245,222,179 },{ 'white', 255,255,255 },{ 'whitesmoke', 245,245,245 },
{ 'yellow', 255,255,0 },{ 'yellowgreen', 154,205,50 }}
table.foreachi(col.list,function(a,b)
    col[b[1]] =     function(text) return "[COLOR r;"..(b[2]/255.0).."|g;"..(b[3]/255.0).."|b;"..(b[4]/255.0).."]"..text..'[/COLOR]' end
end)
-------------------------------------------------------------------------------
-- ZEIT - FUNKTIONEN

--- Tage
zt.d_j =     function(d)
                return d/365
            end
zt.d_mo =     function(d)
                return d/12
            end
zt.d_h =     function(d)
                return d*24
            end
zt.d_m =     function(d)
                return d*24*60
            end
zt.d_s =     function(d)
                return d*24*60*60
            end
zt.d_hs =     function(d)
                return d*24*60*60*100
            end
zt.d_ms =     function(d)
                return d*24*60*60*1000
            end
--- Stunden
zt.h_j =     function(h)
                return h/24/365
            end
zt.h_mo =     function(h)
                return h/24/12
            end
zt.h_d =     function(h)
                return h/24
            end
zt.h_m =     function(h)
                return h*60
            end
zt.h_s =     function(h)
                return h*60*60
            end
zt.h_hs =     function(h)
                return h*60*60*100
            end
zt.h_ms =     function(h)
                return h*60*60*1000
            end
--- Minuten
zt.m_j =     function(m)
                return m/60/24/365
            end
zt.m_mo =     function(m)
                return m/60/24/12
            end
zt.m_d =     function(m)
                return m/60/24
            end
zt.m_h =     function(m)
                return m/60
            end
zt.m_s =     function(m)
                return m*60
            end
zt.m_hs =     function(m)
                return m*60*100
            end
zt.m_ms =     function(m)
                return m*60*1000
            end
--- Sekunden
zt.s_j =     function(s)
                return s/60/60/24/365
            end
zt.s_mo =     function(s)
                return s/60/60/24/12
            end
zt.s_d =     function(s)
                return s/60/60/24
            end
zt.s_h =     function(s)
                return s/60/60
            end
zt.s_m =     function(s)
                return s/60
            end
zt.s_hs =     function(s)
                return s*100
            end
zt.s_ms =     function(s)
                return s*1000
            end


-------------------------------------------------------------------------------
-- PC - Funktionen
function local_pc_warp(name, x, y,mid)
    local target = find_pc_by_name(name)
    local t = pc.select(target)
    if mid == nil then
        mid = pc.get_map_index()
    end
    pc.warp_local(mid, x*100, y*100)
    pc.select(t)
end
function pc.warp_to(vid)
    if vid == nil then
        error"VID muss gesetzt sein! (pc.warp_to)"
    elseif type(vid) == "string" then
        vid = find_pc_by_name(vid)
        if vid == 0 then
            error"Spieler nicht gefunden"
        end
    end
    local me = pc.select(vid)
    local x,y = pc.get_x()*100,pc.get_y()*100
    pc.select(me)
    pc.warp(x,y)
end
function pc.trans(vid)
    if vid == nil then
        error"VID muss gesetzt sein! (pc.warp_to)"
    elseif type(vid) == "string" then
        vid = find_pc_by_name(vid)
        if vid == 0 then
            error"Spieler nicht gefunden"
        end
    end
    local x,y = pc.get_x()*100,pc.get_y()*100
    local me = pc.select(vid)
    pc.warp(x,y)
    pc.select(me)
end
function local_pc_setqf(name, qf,wert) -- Für die aktuelle Quest
    local target = find_pc_by_name(name)
    local t = pc.select(target)
    pc.setqf(qf,wert)
    pc.select(t)
end
function do_for_other(name,ding)
    local t = pc.select(find_pc_by_name(name))
    assert(loadstring(ding))()
    pc.select(t)
end
function pc.check_inventory_place(size)
    if size <= 0 or size > 3 then
        return -1
    end
    function check(c)
        for i = 0,size-1 do
            item.select_cell(e[c+(5*i)])
            if item.get_id() ~= 0 then
                return false
            end
        end
        return true
    end
    for i = 0,89 do
        if check(i) then
            return i
        end
    end
    return -1
end
-------------------------------------------------------------------------------
-- ALLGEMEINE  FUNKTIONEN
function dot(x)-- Führt alles zwischen $ $ aus. Verschachtelungen nicht in einem Aufruf möglich.
    return string.gsub(x, "%$(.-)%$", function (s) return loadstring(s)() end)
end
function download(url) os.execute("cd data && fetch "..url.." && cd ..") end
ql.test =     function()
                print('Die Lib Funktioniert!')
                chat('Die Lib Funktioniert!')
            end
ql.about =     function()
                print('Diese Lib wurde von Mijago programmiert.')
                chat('Diese Lib wurde von Mijago programmiert.')
            end
        
function note(text)
    notice_all('|>~ '..text)
end
function split(str, delim, maxNb)
    if str == nil then return str end
    if string.find(str, delim) == nil then return { str } end
    if maxNb == nil or maxNb < 1 then maxNb = 0 end
    local result = {}
    local pat = "(.-)" .. delim .. "()"
    local nb = 0
    local lastPos
    for part, pos in string.gfind(str, pat) do
        nb = nb + 1
        result[nb] = part
        lastPos = pos
        if nb == maxNb then break end
    end
    if nb ~= maxNb then result[nb + 1] = string.sub(str, lastPos) end
    return result
end
function getn(list)
    local i = 0
    table.foreachi(list, function(a,b) i = i+1 end)
    return i
end
function join(delimiter, list)
  local len = getn(list)
  if len == 0 then
    return ""
  end
  local string = list[1]
  for i = 2, len do
    string = string .. delimiter .. list[i]
  end
  return string
end

function is_table(var)
    if (type(var) == "table") then
        return true
    else
        return false
    end
end
function is_number(var)
    if (type(var) == "number") then
        return true
    else
        return false
    end
end
function is_string(var)
    if (type(var) == "string") then
        return true
    else
        return false
    end
end

function in_table ( e, t )
    for _,v in pairs(t) do
        if (v==e) then
            return true
        end
    end
    return false
end
function in_text(str,te)
    for i = 0,string.len(str) do
        if string.sub(str, i,i+string.len(te)-1) == te then
            return i
        end
    end
    return -1
end
function machweg(str,weg)
    while in_text(str,weg) == true do
        for i = 0,string.len(str) do
            if string.sub(str, i,i+string.len(weg)-1) == weg then
                str = string.sub(str,0,i-1)..string.sub(str,i+string.len(weg),string.len(str))
            end
        end
    end
    return str
end
-- string.gsub(str,weg,'') reicht auch xD

function numlen(num)
    return string.len(tostring(num))
end

function delay_s(delay)
    delay = delay or 1
    local time_to = os.time() + delay
    while os.time() < time_to do end
end
function distance(x1,y1,x2,y2)

    dx=x2-x1
    dy=y2-y1

    dist=math.sqrt(math.pow(dx,2)+math.pow(dy,2))

    return dist
end


function makereadonly(t)
    -- the metatable
    local mt = { __index = t,
                 __newindex = function(t, k, v)
                     error("trying to modify constant field " .. tostring(k), 2)
                 end
    }
    return setmetatable({}, mt)
end

function allwords ()
   local line = io.read()
   local pos = 1
   return function()
    while line do
        local s, e = string.find(line, "%w+", pos)
        if s then
            pos = e + 1
            return string.sub(line, s, e)
        else
            line = io.read()
            pos = 1
        end
    end
    return nil
   end
end

function case(wert,...)
arg.n = nil
for _,b in arg do
    if b[1] == wert or b[1] == nil then
        return b[2]()
    end
end
end
function is(n, f)
    return {n, f}
end
function def(f)
    return {nil, f}
end

-------------------------------------------------------------------------------
-- Iniparser & -writer
do
    -- Funktionen:
    -- var = ini.new()
    -- var = ini.open(path)
    -- var:write_str(sub,name,wert)
    -- var:write_int(sub,name,wert)
    -- var:write_bool(sub,name,boolean)
    -- var:clear()
    -- var:read_str(sub,name,norm)   -- Gibt einen String zurück. -|
    -- var:read_int(sub,name,norm)   -- Gibt eine zahl zurück      -|  norm wird zurückgegeben, wenn sub[name] nicht existiert.
    -- var:read_bool(sub,name,norm)  -- Gibt true / False zurück  -|
    -- var:delete_key(sub,nm)
    -- var:delete_section(sub)
    local ini_f = {}
    ini = {}
    function ini_f:append(sub,nm,wert)
        if nm == '' or nm == nil then
            return
        end
        self:parse()
        if self.sub[sub] == nil then self.sub[sub] = {} end
        self.sub[sub][nm] = wert
        self:writeit()
    end
    function ini_f:write_str(sub,nm,wert)
        self:append(sub,nm,wert)
    end
    function ini_f:write_int(sub,nm,wert)
        self:append(sub,nm,wert)
    end
    function ini_f:write_bool(sub,nm,bool)
        if not type(bool) == "boolean" then
            return
        end
        local bin = 0
        if bool == true then bin = 1 end
        self:append(sub,nm,bin)
        return bin
    end
    function ini_f:clear()
        self.sub = {}
        self.path = ''
    end
    function ini_f:writeit()
        local out = ''
        table.foreach(self.sub,
            function(i,l)
                out = out..'['..i..']\n'
                table.foreach(l,
                    function(i2,l2)
                        out=out..i2..'='..l2..'\n'
                    end
                )
            end
        )
        local d = io.open(self.path,'w')
        d:write(out)
        d:close()
    end
    function ini_f:delete_key(sub,nm)
        if sub == '' or nm == '' or sub == nil or nm == nil then return end
        self:parse()
        self.sub[sub][nm] = nil
        self:writeit()
    end
    function ini_f:delete_section(sub)
        if sub == '' or sub == nil then return end
        self:parse()
        self.sub[sub]= nil
        self:writeit()
    end
    function ini_f:parse()
        self.sub = {}
        if self.path == '' or self.path == nil then return end
        local d,i = io.open(self.path,"r"),'non'
        if d == nil then d = io.open(self.path,"w") end
        for line in d:lines() do
            if string.sub(line,1,1) == "[" then
                i = string.sub(line,2,string.len(line)-1)
                self.sub[i] = {}
            else
                local inp = split(line,'=')
                self.sub[i][inp[1]] = inp[2]
            end
        end
        d:close()
    end
    function ini_f:read_str(sub,nm,norm)
        if sub == '' or nm == '' or sub == nil or nm == nil then return end
        self:parse()
        if self.sub[sub] == nil then return norm end
        if self.sub[sub][nm] == nil then return norm else return self.sub[sub][nm] end
    end
    function ini_f:read_int(sub,nm,norm)
        if sub == '' or nm == '' or sub == nil or nm == nil then return end
        self:parse()
        if self.sub[sub] == nil then return norm end
        if self.sub[sub][nm] == nil then return norm else return tonumber(self.sub[sub][nm]) end
    end
    function ini_f:read_bool(sub,nm,norm)   -- Norm wird zurückgegeben, wenn der Key nm nicht existiert
        if sub == '' or nm == '' or sub == nil or nm == nil then return end
        self:parse()
        if self.sub[sub] == nil then return norm end
        if self.sub[sub][nm] == nil then return norm end
        if self.sub[sub][nm] == "1" then return true else return false end
    end
    function ini_f:open(path)
        self.path = path
        self:parse()
    end
    function ini.new()
        local out = {}
        out.path = ''
        out.sub = {}
        setmetatable(out, { __index = ini_f })
        return out
    end
    function ini.open(path)
        local dat = ini.new()
        dat:clear()
        dat.path=path
        dat:open(path)
        return dat
    end
end
-------------------------------------------------------------------------------
-- Programmsteuerung
proc.apache_start = function()
                os.execute('apachectl start')
            end
proc.apache_stop = function()
                os.execute('apachectl stop')
            end
proc.apache_restart = function()
                os.execute('apachectl restart')
            end
proc.apache_graceful = function()
                os.execute('apachectl graceful')
            end
proc.ts3_start = function(path)
                os.execute('cd '..path..' && sh ts3server_startscript.sh start')
                end
proc.ts3_stop = function(path)
                os.execute('cd '..path..' && sh ts3server_startscript.sh stop')
                end
proc.ts3_restart = function(path)
                os.execute('cd '..path..' && sh ts3server_startscript.sh restart')
                end
            
-------------------------------------------------------------------------------
--[[ Funktionsliste
download(url)                          -> lädt die Datei in den Data-Ordner
ql.test()                              -> gibt einen Teststring aus. (Zum testen, ob die Lib funktionert)
ql.about()                             -> Gibt Informationen über das Script aus
col.[FARBNAME]                         -> Gibt Text in say() farbig aus. Englische Farbnamen! (Beinhaltet 281 Farben) [String]
note(text)                             -> Entspricht notice_all('|>~ TEXT')
local_pc_setqf(name,qf,wert)           -> Setzt bei einem Anderen Spieler eine Quest-flag
local_pc_warp(name, x, y,mid)          -> Teleportiert den Spieler NAME an die Kooridinaten x & y auf der Map mit dem index mid. mid kann auch leer bleiben
do_for_other(name,dot)                 -> Führt die Befehle in dot für den Spieler name aus. Mit ; trennen
writelog(text,var,file)                -> Füllt die Logs. 1 = syserr, 2 = syslog, 3 = "file"
doit(cmd)                              -> Führt einen FreeBSD Befehl aus (auch Befehlsketten mit &&)
--- Spezielle
pci:new(name)                          -> erstellt auf der genutzten Variable (zb pt = pci:new('[SA]Mijago') ) eine Liste mit allen Info's über den Spieler (alle Spalten aus player.player)
pci:update                             -> updatet die mit pci:new erstellte Variable
select2(tab)                           -> Sortiert eine Tabelle in Selects; auf Seiten aufgeteilt. Der erste Tabelleneintrag muss eine Zahl sein; Sie gibt die maximale Anzahl der Select-Einträg / Seite an.
--- MySQL
mysql_query(query,user,pw,db,ip)       -> wie php mysql_query (gibt es auch so aus: out.id[1] = 7754 zB)
mysql_query2(query,user,pw,db,ip)      -> NUR für Query's wie Update, Insert etc.
mysql_escape(str)                      -> Equivalent  mit dem aus PHP bekannten mysql_escape_real_string
backup()                               -> Backuppt alle MySQL-Datenbanken
backup_main()                          -> Backuppt die wichtigsten MySQL-Datenbanken
backup_files()                         -> Backuppt den Share - Ordner
--- Lua-erweiterung
watch_table(tab)                       -> Schreibt alle Änderungen an der Tabelle in eine Datei.
arraytoselect(array,abbr)              -> erstellt aus einem Array eine Select()-Abfrage und gibt deren Auswahl zurück. Wenn "abbr" gesetzt ist, fügt die Funktion einen eintrag mit dem Wert von "abbr" ein.
is_table(var)                          -> Prüft, ob eine Variable eine Tabelle ist [boolean]
is_string(var)                         -> Prüft, ob eine Variable ein String ist [boolean]
is_number(var)                         -> Prüft, ob eine Variable eine Zahl ist [boolean]
in_table(e,t)                          -> Prüft, ob e in dem Array t vorhanden ist. [boolean]
in_table(str,te)                       -> Prüft, ob te in dem string str vorhanden ist. [boolean]
machweg(str,weg)                       -> Entfernt alle 'weg' aus 'str' [string]
split(str, delim, maxNb)               -> Teilt den Text 'str' mit dem Delimenter 'delim' auf (in maximal 'maxNb' Teile). maxNb kann leer gelassen werden. [Array]
join(delimiter, list)                  -> Gegenteil von Split. List ist ein Array. Bsp: s = join('|',{'a','b'}) -> s = 'a|b'
getn(array)                            -> Gibt die Anzahl der Einträge eines Array's aus. [Integer]
delay_s(delay)                         -> Scriptpause für -delay- Sekunden
numlen(num)                            -> gibt die Anzahl der Ziffern in der Zahl num an [Integer]
distance(x1,y1,x2,y2)                  -> Distanz zwischen 2 Punkten [Integer]
makereadonly(t)                        -> Sperrt die Tabelle (ReadOnly)
allwords()                             -> Liest alle Wörter aus einer Datei und gibt sie zurück. Vorher io.open!
--- Zeitrechnungen
zt.d_j(d)                              -> Tage zu Jahre
zt.d_mo(d)                             -> Tage zu Monate
zt.d_h(d)                              -> Tage zu Stunden
zt.d_m(d)                              -> Tage zu Minuten
zt.d_s(d)                              -> Tage zu Sekunden
zt.d_hs(d)                             -> Tage zu Hunderstelsekunden
zt.d_ms(d)                             -> Tage zu Millisekunden
zt.h_j(h)                              -> Stunden zu Jahre
zt.h_mo(h)                             -> Stunden zu Monate
zt.h_d(h)                              -> Stunden zu Tage
zt.h_m(h)                              -> Stunden zu Minuten
zt.h_s(h)                              -> Stunden zu Sekunden
zt.h_hs(h)                             -> Stunden zu Hunderstelsekundne
zt.h_ms(h)                             -> Stunden zu Millisekunden
zt.m_j(m)                              -> Minuten zu Jahre
zt.m_mo(m)                             -> Minuten zu Monate
zt.m_d(m)                              -> Minuten zu Tage
zt.m_h(m)                              -> Minuten zu Stunden
zt.m_s(m)                              -> Minuten zu Sekunden
zt.m_hs(m)                             -> Minuten zu Hunderstelsekunden
zt.m_ms(m)                             -> Minuten zu Millisekunden
zt.s_j(s)                              -> Sekunden zu Jahre
zt.s_mo(s)                             -> Sekunden zu Monate
zt.s_d(s)                              -> Sekunden zu Tage
zt.s_h(s)                              -> Sekunden zu Stunden
zt.s_m(s)                              -> Sekunden zu Minuten
zt.s_hs(s)                             -> Sekunden zu Hunderstelsekunden
zt.s_ms(s)                             -> Sekunden zu Millisekunden

--- Programmbasierende Befehle
proc.apache_start()                    -> Startet Apache
proc.apache_stop()                     -> Stoppt Apache
proc.apache_restart()                  -> Startet Apache neu
proc.apache_graceful()                 -> Startet Apache neu, ohne vorhandene Verbindungen zu kappen
proc.ts3_start(path)                   -> Startet den Teamspeak3 Server im Pfad 'path'
proc.ts3_stop(path)                    -> Startet den Teamspeak3 Server im Pfad 'path' neu
proc.ts3_restart(path)                 -> Stopp den Teamspeak3 Server im Pfad 'path'
--]]
makereadonly(col)
makereadonly(zt)
makereadonly(proc)
makereadonly(ql)

-- Compat 5.1 Release 5 Einbindung
if mijago_include_compat then
--
-- Compat-5.1
-- Copyright Kepler Project 2004-2006 (http://www.keplerproject.org/compat)
-- According to Lua 5.1
-- $Id: compat-5.1.lua,v 1.22 2006/02/20 21:12:47 carregal Exp $
--

_COMPAT51 = "Compat-5.1 R5"

local LUA_DIRSEP = '/'
local LUA_OFSEP = '_'
local OLD_LUA_OFSEP = ''
local POF = 'luaopen_'
local LUA_PATH_MARK = '?'
local LUA_IGMARK = ':'

local assert, error, getfenv, ipairs, loadfile, loadlib, pairs, setfenv, setmetatable, type = assert, error, getfenv, ipairs, loadfile, loadlib, pairs, setfenv, setmetatable, type
local find, format, gfind, gsub, sub = string.find, string.format, string.gfind, string.gsub, string.sub

--
-- avoid overwriting the package table if it's already there
--
package = package or {}
local _PACKAGE = package

package.path = LUA_PATH or os.getenv("LUA_PATH") or
             ("./?.lua;" ..
              "./pack/?.lua;" ..
              "/usr/local/share/lua/5.0/?.lua;" ..
              "/usr/local/share/lua/5.0/?/?.lua;" ..
              "/usr/local/share/lua/5.0/?/init.lua" )

package.cpath = LUA_CPATH or os.getenv("LUA_CPATH") or
             "./?.so;" ..
             "./pack/?.so;" ..
             "./l?.so;" ..
             "/usr/local/lib/lua/5.0/?.so;" ..
             "/usr/local/lib/lua/5.0/l?.so"

--
-- make sure require works with standard libraries
--
package.loaded = package.loaded or {}
package.loaded.debug = debug
package.loaded.string = string
package.loaded.math = math
package.loaded.io = io
package.loaded.os = os
package.loaded.table = table
package.loaded.base = _G
package.loaded.coroutine = coroutine
local _LOADED = package.loaded

--
-- avoid overwriting the package.preload table if it's already there
--
package.preload = package.preload or {}
local _PRELOAD = package.preload


--
-- looks for a file `name' in given path
--
local function findfile (name, pname)
    name = gsub (name, "%.", LUA_DIRSEP)
    local path = _PACKAGE[pname]
    assert (type(path) == "string", format ("package.%s must be a string", pname))
    for c in gfind (path, "[^;]+") do
        c = gsub (c, "%"..LUA_PATH_MARK, name)
        local f = io.open (c)
        if f then
            f:close ()
            return c
        end
    end
    return nil -- not found
end


--
-- check whether library is already loaded
--
local function loader_preload (name)
    assert (type(name) == "string", format (
        "bad argument #1 to `require' (string expected, got %s)", type(name)))
    assert (type(_PRELOAD) == "table", "`package.preload' must be a table")
    return _PRELOAD[name]
end


--
-- Lua library loader
--
local function loader_Lua (name)
    assert (type(name) == "string", format (
        "bad argument #1 to `require' (string expected, got %s)", type(name)))
    local filename = findfile (name, "path")
    if not filename then
        return false
    end
    local f, err = loadfile (filename)
    if not f then
        error (format ("error loading module `%s' (%s)", name, err))
    end
    return f
end


local function mkfuncname (name)
    name = gsub (name, "^.*%"..LUA_IGMARK, "")
    name = gsub (name, "%.", LUA_OFSEP)
    return POF..name
end

local function old_mkfuncname (name)
    --name = gsub (name, "^.*%"..LUA_IGMARK, "")
    name = gsub (name, "%.", OLD_LUA_OFSEP)
    return POF..name
end

--
-- C library loader
--
local function loader_C (name)
    assert (type(name) == "string", format (
        "bad argument #1 to `require' (string expected, got %s)", type(name)))
    local filename = findfile (name, "cpath")
    if not filename then
        return false
    end
    local funcname = mkfuncname (name)
    local f, err = loadlib (filename, funcname)
    if not f then
        funcname = old_mkfuncname (name)
        f, err = loadlib (filename, funcname)
        if not f then
            error (format ("error loading module `%s' (%s)", name, err))
        end
    end
    return f
end


local function loader_Croot (name)
    local p = gsub (name, "^([^.]*).-$", "%1")
    if p == "" then
        return
    end
    local filename = findfile (p, "cpath")
    if not filename then
        return
    end
    local funcname = mkfuncname (name)
    local f, err, where = loadlib (filename, funcname)
    if f then
        return f
    elseif where ~= "init" then
        error (format ("error loading module `%s' (%s)", name, err))
    end
end

-- create `loaders' table
package.loaders = package.loaders or { loader_preload, loader_Lua, loader_C, loader_Croot, }
local _LOADERS = package.loaders


--
-- iterate over available loaders
--
local function load (name, loaders)
    -- iterate over available loaders
    assert (type (loaders) == "table", "`package.loaders' must be a table")
    for i, loader in ipairs (loaders) do
        local f = loader (name)
        if f then
            return f
        end
    end
    error (format ("module `%s' not found", name))
end

-- sentinel
local sentinel = function () end

--
-- new require
--
function _G.require (modname)
    assert (type(modname) == "string", format (
        "bad argument #1 to `require' (string expected, got %s)", type(name)))
    local p = _LOADED[modname]
    if p then -- is it there?
        if p == sentinel then
            error (format ("loop or previous error loading module '%s'", modname))
        end
        return p -- package is already loaded
    end
    local init = load (modname, _LOADERS)
    _LOADED[modname] = sentinel
    local actual_arg = _G.arg
    _G.arg = { modname }
    local res = init (modname)
    if res then
        _LOADED[modname] = res
    end
    _G.arg = actual_arg
    if _LOADED[modname] == sentinel then
        _LOADED[modname] = true
    end
    return _LOADED[modname]
end


-- findtable
local function findtable (t, f)
    assert (type(f)=="string", "not a valid field name ("..tostring(f)..")")
    local ff = f.."."
    local ok, e, w = find (ff, '(.-)%.', 1)
    while ok do
        local nt = rawget (t, w)
        if not nt then
            nt = {}
            t[w] = nt
        elseif type(t) ~= "table" then
            return sub (f, e+1)
        end
        t = nt
        ok, e, w = find (ff, '(.-)%.', e+1)
    end
    return t
end

--
-- new package.seeall function
--
function _PACKAGE.seeall (module)
    local t = type(module)
    assert (t == "table", "bad argument #1 to package.seeall (table expected, got "..t..")")
    local meta = getmetatable (module)
    if not meta then
        meta = {}
        setmetatable (module, meta)
    end
    meta.__index = _G
end


--
-- new module function
--
function _G.module (modname, ...)
    local ns = _LOADED[modname]
    if type(ns) ~= "table" then
        ns = findtable (_G, modname)
        if not ns then
            error (string.format ("name conflict for module '%s'", modname))
        end
        _LOADED[modname] = ns
    end
    if not ns._NAME then
        ns._NAME = modname
        ns._M = ns
        ns._PACKAGE = gsub (modname, "[^.]*$", "")
    end
    setmetatable(ns, {__index = _G})
    setfenv (2, ns)
    for i, f in ipairs (arg) do
        f (ns)
    end
end
end

function safademirel(query,user,pass,db,ip)
    local pre = ''
    if query == '' or query == nil then
        error("Query muss gesetzt sein!")
    end
    user = user or ql.mysql["user"]
    pass = pass or ql.mysql["pass"]
    ip = ip or ql.mysql["ip"]
    if user ~= '' and user ~= nil then pre = pre..' -u'..user end
    if pass ~= '' and pass ~= nil then pre = pre..' -p'..pass end
    if db ~= '' and db ~= nil then pre = pre..' -D'..db end
    if ip ~= '' and ip ~= nil then pre = pre..' -h'..ip end
    math.randomseed(os.time()); local rand = math.random(0,10^7) -- Erstellen der Pfadvariable
    local path = 'data/mysql_output_'..os.time()..'_'..rand..'_'..pc.get_vid()
    os.execute ("mysql "..pre.." --e=\""..query.."\" > "..path) -- Laden und Auflisten der Dateiinhalte
    local fi,q = io.open(path,"r"),{["l"] = {},["out"]={}}
    if fi == nil then
        return "ERROR"
    end
    for line in fi:lines() do table.insert(q.l,(split2(line,"\t"))) end
    os.remove(path)
    if type(q.l[1]) ~= "table" then
        return "ERROR"
        --error("Fehler bei der MySQL Verbindung oder bei der Rückgabe! Abbruch!")
    end
    local ix = 0
    table.foreachi(q.l,function(i,l)
        if i > 1 then table.foreach(l,function(i2,l2)
            if q.out[q.l[1][i2]] == nil then q.out[q.l[1][i2]] = {} end
            local c =  tonumber(l2)
            if type(c) == "number" and l2 == tostring(c) then
                q.out[q.l[1][i2]][i-1] = c
            else
                q.out[q.l[1][i2]][i-1] = l2
            end
        end) end
    end)
    -- ENDE der eigentlichen MySQL-Funktion
    -- START Zusatz: Hanashi-Kompatibilität & Fehlerbehandlung
    q.out.__data = q.l[1]
    setmetatable(q.out, { __index = function(a,b)
        if type(b) == "number" then
            return (a[a.__data[b]] or {"ERROR"})
        end
        return "ERROR"
        --error("Fehler bei Indexierung: Index "..b.." ist nicht vorhanden!")
    end})
    return q.out
end

function split2(str, delim, maxNb)
    -- Eliminate bad cases...
    if str == nil then
        return str
    end
    if string.find(str, delim) == nil then
        return { str }
    end
    if maxNb == nil or maxNb < 1 then
        maxNb = 0    -- No limit
    end
    local result = {}
    local pat = "(.-)" .. delim .. "()"
    local nb = 0
    local lastPos
    for part, pos in string.gfind(str, pat) do
        nb = nb + 1
        result[nb] = part
        lastPos = pos
        if nb == maxNb then break end
    end
    -- Handle the last field
    if nb ~= maxNb then
        result[nb + 1] = string.sub(str, lastPos)
    end
    return result
end



Kod:
quest balik_tutma_yarismasi_batman57_forumexe begin
    state start begin
        when 9009.chat." Balıkçılık Yarışması " with pc.get_map_index() >= (220) begin
            if pc.is_gm() then
                say_title(" Merhaba "..pc.get_name().." ")
                if game.get_event_flag("baliktutma") == 1 then
                    say(" Ne yapmak istiyorsun ? ")
                    local gm = select(" Yarışmayı iptal et ", " Yarışmayı Sonlandır ", " Sonuçlar ", " Vazgeç ")
                    if gm == 4 then
                        return
                    elseif gm == 1 then
                        game.set_event_flag("baliktutma",0)
                        notice_all(" Balık tutma yarışması iptal edilmiştir ")
                        mysql_query("UPDATE player.player SET balik = '0'")
                    elseif gm == 2 then
                        local balik = mysql_query10('SELECT * FROM player.player ORDER BY player.balik DESC')
                        say(" En fazla balık tutan oyuncu "..balik.name[1].." ")
                        notice_all(" Balık Tutma Eventini Kazanan Oyuncu "..balik.name[1].." ")
                        game.set_event_flag("baliktutma",0)
                        mysql_query('UPDATE player.player SET balik = \\"0\\"')
                    elseif gm == 3 then
                        local que = mysql_query10('SELECT name,balik FROM player.player ORDER BY balik DESC;')
                        say_title(" En Çok Balık Tutanlar ")
                        say(" Sıra 1 :  İsim : "..que.name[1].."     Adet : "..que.balik[1].." ")
                        say(" Sıra 2 :  İsim : "..que.name[2].."     Adet : "..que.balik[2].." ")
                        say(" Sıra 3 :  İsim : "..que.name[3].."     Adet : "..que.balik[3].." ")
                        say(" Sıra 4 :  İsim : "..que.name[4].."    Adet : "..que.balik[4].." ")
                        say(" Sıra 5 :  İsim : "..que.name[5].."     Adet : "..que.balik[5].." ")
                        say(" Sıra 6 :  İsim : "..que.name[6].."     Adet : "..que.balik[6].." ")
                        say(" Sıra 7 :  İsim : "..que.name[7].."     Adet : "..que.balik[7].." ")
                        say(" Sıra 8 :  İsim : "..que.name[8].."     Adet : "..que.balik[8].." ")
                        say(" Sıra 9 :  İsim : "..que.name[9].."     Adet : "..que.balik[9].." ")
                        say(" Sıra 10 :  İsim : "..que.name[10].."     Adet : "..que.balik[10].." ")
                    end
                elseif game.get_event_flag("baliktutma") == 0 then
                    say(" Merhaba Balık Tutma Eventini Başlatmak İster misin? ")
                    local secim = select(" Evet ", " Hayır " )
                    if secim == 1 then
                        game.set_event_flag("baliktutma",1)
                        notice_all(" Balık Tutma Eventi Başlamıştır... ")
                    elseif secim == 2 then
                        return
                    end
                end
            else
                say_title(" Merhaba "..pc.get_name().." ")
                say(" Ne Yapmak İstiyorsun ? ")
                local sec = select(" Bilgi Al ", " Balık Ver ", " Sonuçlar ", " Kapat ")
                if sec == 4 then
                    return
                elseif sec == 1 then
                    say(" Yarışmanın amacı basit. ")
                    say(" Bana en çok sudak balığı getiren ")
                    say(" oyuncu yarışmayı kazanacak. ")
                    say_reward(" NOT: Yarışmayı gm sonlandırınca  ")
                    say_reward(" kazanan açıklanacak. ")
                elseif sec == 2 then
                    local balik = mysql_query('SELECT * FROM player.player WHERE name = \\"'..pc.get_name()..'\\"')
                    local baliksayisi = balik.balik[1]
                    say(" Verdiğin Balık Sayısı : "..baliksayisi.." ")
                    say(" Kaç tane Balık vermek istiyorsun? ")
                    say_reward(" Sadece sudak Balık verebilirsin. ")
                    local ver = tonumber(input(12345))
                    if pc.count_item(27803) < ver or ver < 0  then
                        say(" Üzgünüm ama o kadar balığın yok. ")
                    else
                        say(" Vermek istediğin Balık sayısı "..ver.." mi ? ")
                        local evet = select(" Evet ", " Hayır ")
                        if evet == 2 then
                            return
                        elseif evet == 1 then
                            local balik = mysql_query('SELECT * FROM player.player WHERE name = \\"'..pc.get_name()..'\\"')
                            local baliksayisi = balik.balik[1]
                            local ekle = baliksayisi + ver
                            mysql_query('UPDATE player.player SET balik = '..ekle..' WHERE name = \\"'..pc.get_name()..'\\"')
                            pc.remove_item(27803,ver)
                            say(" Bilgilerin güncellendi. ")
                        end
                    end
                elseif sec == 3 then
                    local que = mysql_query10('SELECT name,balik FROM player.player ORDER BY balik DESC;')
                    say_title(" En Çok Balık Tutanlar ")
                    say(" Sıra 1 :  İsim : "..que.name[1].."     Adet : "..que.balik[1].." ")
                    say(" Sıra 2 :  İsim : "..que.name[2].."     Adet : "..que.balik[2].." ")
                    say(" Sıra 3 :  İsim : "..que.name[3].."     Adet : "..que.balik[3].." ")
                    say(" Sıra 4 :  İsim : "..que.name[4].."    Adet : "..que.balik[4].." ")
                    say(" Sıra 5 :  İsim : "..que.name[5].."     Adet : "..que.balik[5].." ")
                    say(" Sıra 6 :  İsim : "..que.name[6].."     Adet : "..que.balik[6].." ")
                    say(" Sıra 7 :  İsim : "..que.name[7].."     Adet : "..que.balik[7].." ")
                    say(" Sıra 8 :  İsim : "..que.name[8].."     Adet : "..que.balik[8].." ")
                    say(" Sıra 9 :  İsim : "..que.name[9].."     Adet : "..que.balik[9].." ")
                    say(" Sıra 10 :  İsim : "..que.name[10].."     Adet : "..que.balik[10].." ")
                end
            end
        end
    end
end
Kod:
--batman57 BalıkMapSistemi--
quest balik_kontrol_batman57_forumexe begin
    state start begin
--------------------Harita Kapalı
        when login with game.get_event_flag("balik_event") == 0 and pc.get_map_index() == 220 begin
            chat(" BalıkHaritası Kapalı ")
            if pc.get_empire() == 1 then
                pc.warp(469300, 964200)
            elseif pc.get_empire() == 2 then
                pc.warp(55700, 157900)
            elseif pc.get_empire() == 3 then
                pc.warp(969600, 278400)
            end
        end
    end
end

Kod:
quest baliknpc_batman57_forumexe begin
    state start begin
        when 20358.chat."BalikHaritasiniAc" with pc.is_gm() begin
            say("")
            say("Balık Haritasını Acıyorum")
            say("")
            game.set_event_flag("balik_event", 1)
            notice_all("BalıkHaritasi Acıldı!")
            notice_all("Birazdan Balık Tutma Yarısmasi Baslıyıcak!")
            notice_all("Oltanızı Kapın Ve Uriele Kosun!")
            notice_all("İyi Eğlenceler!")
            notice_all("Not: Kanal1'den Giriş Yapınız Lütfen.")
        end
        when 20358.chat."Balık Haritasını Kapat" with pc.is_gm() begin
            say("")
            say("Balık Haritasını Kapatıyorum.")
            say("")
            game.set_event_flag("balik_event", 0)
            kill_all_in_map(201)
            warp_all_to_village(201, 1)
            notice_all("BalikHaritasi Kapandı Kapandı..")
            notice_all("Bir Sonraki Eventte Görüşmek Üzere,")
            notice_all("Esen Kalın...")
        end
    end
end

Kod:
quest balik_gir_batman57_forumexe begin
    state start begin
        when 20011.chat."Balik Tutma Event Haritasi" begin
            say_title("Merhaba " .. pc . get_name ( ) .. ".")
            say("Balik Tutma Event Haritasi'na Hosgeldin.")
            say("Bakalim Aktif mi ?")
            if game.get_event_flag("balik_event") == 0 then
                wait()
                say_reward("" .. pc . get_name ( ) .. "")
                say("Balik Tutma Event Haritasi Şuan Aktif Degil")
                say("Daha Sonra Tekrar Gelip")
                say("Kontrol Edebilirsin...")
            elseif game.get_event_flag("balik_event") == 1 then
                wait()
                say_reward("" .. pc . get_name ( ) .. "")
                say("Balik Tutma Event Haritasi Şuan Aktif")
                say("Girmek İstiyormusun?")
                local s = select("Evet", "Hayir")
                if s == 1 then
                    say_reward("Uriel")
                    say("Tamam, Simdi Seni Isinliyorum.")
                    wait()
                    pc.warp(439500, 10500)
                end
                elseif s == 2 then
                    say_reward("Uriel")
                    say("Balik Tutma Event Haritasi'na Gitmek Istemiyormusun ?")
                    say("Tercih Senin...")
            end
        end
    end
end


 
Moderatör tarafında düzenlendi:

Zeyrek Game

Nam-ı Diğer Gcc
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye
Fahri Üye
TM Üye
Katılım
31 Mar 2020
Konular
67
Mesajlar
1,067
Reaksiyon Skoru
520
Altın Konu
7
Başarım Puanı
174
TM Yaşı
2 Yıl 8 Ay
Online Süresi
67d 8h 44m
MmoLira
1,526
DevLira
6
Takipçiler
5
Paylaşım İçin Teşekkürler Elinize Sağlık
 

emir0198

Level 3
Telefon Numarası Onaylanmış Üye
TM Üye
Üye
Katılım
10 Ocak 2016
Konular
29
Mesajlar
178
Reaksiyon Skoru
21
Altın Konu
0
Başarım Puanı
48
TM Yaşı
6 Yıl 10 Ay 22 Gün
Online Süresi
4d 7h 21m
MmoLira
96
DevLira
3
Takipçiler
0
teşekkürler, kurulumu nasıl oluyor acaba
 
Katılım
17 Nis 2016
Konular
45
Mesajlar
410
Reaksiyon Skoru
268
Altın Konu
22
Başarım Puanı
115
TM Yaşı
6 Yıl 7 Ay 14 Gün
Online Süresi
10d 5h 16m
MmoLira
493
DevLira
6
Takipçiler
3
Emek uğraş kokuyor bu konu.
Paylaşım için teşekkürler.
 

Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)

Benzer konular

Üst