Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Almira2 1
Almira2
romegames 1
romegames
D 1
delimuratt
melankolıa18 1
melankolıa18
shrpnl 1
shrpnl
Fethi Polat 1
Fethi Polat
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Best Studio 1
Best Studio
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com
Kaynak ikonu

Altın Konu Event Map + Quest + Dosya 2020-09-17

indirmek için izniniz yok
  • Konuyu başlatan Konuyu başlatan ᴛᴜʀ ᴀʀᴍʏ
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 9
  • Görüntüleme Görüntüleme 3K

ᴛᴜʀ ᴀʀᴍʏ

Prove yourself to yourself, not others.
Telefon Numarası Onaylanmış Üye
Fahri Üye
Katılım
26 Eki 2008
Konular
295
Mesajlar
1,128
Çözüm
5
Online süresi
19d 19h
Reaksiyon Skoru
253
Altın Konu
12
Başarım Puanı
219
MmoLira
1,695
DevLira
12
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!



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:
Paylaşım İçin Teşekkürler Elinize Sağlık
 
teşekkürler, kurulumu nasıl oluyor acaba
 
Emek uğraş kokuyor bu konu.
Paylaşım için teşekkürler.
 

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

Geri
Üst