Jump to content

diper

Miembro
  • Contador contenido

    25
  • Ingreso

  • Última visita

  • Días ganados

    1

Todo lo publicado por diper

  1. oye chikitica tu eres mas ermosa
  2. esta mierda no sirve xd medio un error esta en dedicado
  3. oyes men eso sirvira para mi intant no ip eske mira intalo el mod evasive y cuando asen ataques ddos me blockea todas las entradas y ya no me deja entrar pero segun ee visto que se blockea porque no es ip fija osea ip dedicada especial para dedicados no se si esto funcionaria bien men si me puedes desir eso te lo agradeseria ya que me han atacado mi server
  4. esta buena la quest le veo sentido
  5. Oyes men como le ago para que enves que sea asi mejor sea con el item cabeza redusida para entrar ala catacumbas
  6. oyes man y cual es la cordenada para entrar ala araña o como te telatrasportas hai
  7. podrias subir la mision sin fallo
  8. ami me gustan mucho tus imagenes man se ven bien no presisamente debend e quedar tanbien un a imagen sino es como le des el estilo
  9. noseaas gay yo los tengo hablamos en skype y te paso el plugin busca el 3d max 7 o 8 no las otras versiones sin no las lite del 3d masx de esos dos entaringa estan los 3d max
  10. hola keko de casualidad no tendras la quest etsa misma pero que te sue al level 35 y te da todo el set derivado al 35 espero ke si muy buen aporte uee
  11. a perdon esque yo utilizo otra quest quest hpbugfix begin state start begin when login or logout begin pc.get_hp() pc.get_sp() if pc.hp <0 then affect.add_collect(apply.HP_REGEN, 100000, 5) end if pc.sp <0 then affect.add_collect(apply.SP_REGEN, 100000, 5) end end end end
  12. no te va a funcionar le devese de poner esto fija te bien y te funkara vene asi la quest original no when login begin entonses eso lo canbiamos por esto when login or logout begin le pones eso y te la va a leer la quest ya que en los files nuevos osea los 2010 con game 2089 no le esa funcion en eso y pues con esto se aregla lo del hp para que cuando saltes mapa se suva toda el hp
  13. Es todo acroma desencrypta el .es pero el cliente entero que no tenga niun fallo en los patchs eso seria genial
  14. Si amigo pero tanbien te protege de un ataque de injeccion sql ademas quien te va andar robando la weeb xd asi en firefox y rodos ya saben ase eso xd esto te evitaria que instalarle ala weeb los scrips anti sql injecciones pero si te protege xd y si te roban quee por firefox arias que la persona isiera su trabajo el doble ademas como obtendrian los java scrips si esos salen con el htracker u otros programas yo ya lo cheque xd .
  15. Bueno amigos les dire como evitar que nos clonen la web cuando nos clonan la web en xamp en un localhost ase que se valla lento el servidor nos baja ancho de banda con esto se evitaria que nos bajen esto y valla rapido mas aparte tanbien evitaria injecciones sql bueno es proteccion minima pero si protege. 1-primer paso: creamos un archvio que se llame .htacces 2-segundo paso: meteremos este texto en el .htacces Lo podemos editar con notepad + o block de notas Texto: RewriteEngine On Options +FollowSymLinks # Evitar escaneos y cualquier intento de manipulación malintencionada # de la URL. Con esta regla es imposible lanzar ataques de inyección (SQL, XSS, etc) RewriteCond %{HTTP_USER_AGENT} ^$ [OR] RewriteCond %{HTTP_USER_AGENT} ^(-|\.|') [OR] RewriteCond %{HTTP_USER_AGENT} ^(.*)(<|>|%3C|%3E)(.*) [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget)(.*) [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^(.*)(libwww-perl|libwwwperl|snoopy|curl|wget|winhttp|python|nikto|scan|clshttp|archiver|loader|email|harvest|fetch|extract|grab|miner|suck|reaper|leach)(.*) [NC,OR] RewriteCond %{REQUEST_URI} ^(/,|/;|/<|/>|/'|/`|/%2C|/%3C|/%3E|/%27|/////) [NC,OR] RewriteCond %{HTTP_REFERER} ^(.*)(%00|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|<|>|'|%3C|%3E|%26%23|%27|%60)(.*) [NC,OR] RewriteCond %{QUERY_STRING} ^(.*)(%00|%08|%09|%0A|%0B|%0C|%0D|%0E|%0F|%2C|%3C|%3E|%27|%26%23|%60)(.*) [NC,OR] RewriteCond %{QUERY_STRING} ^(.*)('|-|<|>|,|/|\\|\.a|\.c|\.t|\.d|\.p|\.i|\.e|\.j)(.*) [NC,OR] RewriteCond %{HTTP_COOKIE} ^(.*)(<|>|'|%3C|%3E|%27)(.*) [NC] RewriteRule ^(.*)$ error.php [NC] Ya una ves terminado y editado el archivo con esta informacion procedamos ha meter el arrchivo donde esta el inici osea en la carpeta principal donde esta su index por ejenplo yo en xamp htdocs si tiene apache en data o donde sea la carpeta correcta y luego si quieren probar que funciona van ha y se descarga un programa de eso que clona la web httracker y les dara un error. al querer copearla tanbien con esta regla evitaran las injecciones sql espero que les sira
  16. Jajaja despues de que te enseñe a encryptar jajajaja dises que no sean ratas jajajaja
  17. Hola Amigos de Metin zone les traigo este ques lib 2012 mas complejo que aun no ee testeado muy bien pero ee tomado algunas funciones pero parese que trae nuevas funcionas para las nuevas quest que estan saliiendo en foros alemanes y italianos espero que les sirva. 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 | 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 function mysql_query(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,(split(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 -- 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) -- 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 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
×
×
  • Crear nuevo...