- 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
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!
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
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:
- Katılım
- 12 May 2020
- Konular
- 772
- Mesajlar
- 1,393
- Çözüm
- 5
- Online süresi
- 20d 13h
- Reaksiyon Skoru
- 623
- Altın Konu
- 175
- Başarım Puanı
- 246
- MmoLira
- 200
- DevLira
- 12
Elinize sağlık, teşekkürler 

- Katılım
- 31 Mar 2020
- Konular
- 70
- Mesajlar
- 1,270
- Çözüm
- 49
- Online süresi
- 4mo 14d
- Reaksiyon Skoru
- 712
- Altın Konu
- 7
- TM Yaşı
- 6 Yıl 2 Ay 7 Gün
- Başarım Puanı
- 201
- MmoLira
- 12,742
- DevLira
- 9
Paylaşım İçin Teşekkürler Elinize Sağlık








