quest Auktionshaus begin
state start begin
when login begin
cmdchat("Auktionshausbutton "..q.getcurrentquestindex())
end
when 20010.take begin
if game.get_event_flag('handelscenter') == 0 then syschat'Das Handelscenter ist zurzeit deaktiviert.' return end
pc.setqf('itemcount2',pc.count_item(item.get_vnum( )))
if pc.is_polymorphed() then syschat'Du kannst das Handelscenter nicht verwenden wenn du verwandelt bist.' return end -- NEW
cmdchat("Auktionshausdialog "..item.get_cell().."")
end
when 20010.chat.'Handelscenter oeffnen' begin
setskin(NOWINDOW)
if game.get_event_flag('handelscenter') == 0 then syschat'Das Handelscenter ist zurzeit deaktiviert.' return end
cmdchat('Auktionshaus')
cmdchat("AuktionshausSetMoney "..Auktionshaus.get_money())
end
when button begin
if game.get_event_flag('handelscenter') == 0 then syschat'Das Handelscenter ist zurzeit deaktiviert.' return end
local cmd = Auktionshaus.client_command(getinput("Auktionshaus CMD"))
if pc.is_polymorphed() then syschat'Du kannst das Handelscenter nicht verwenden wenn du verwandelt bist.' return end
if cmd[1] == 'SELL' then
if not Auktionshaus.anti_flood('sell',10,30,30) then return end
local myItems = {}
myItems = mysql_query("SELECT * from player.ah_item where player_id="..pc.get_player_id()..";")
if table.getn(myItems) >= 20 then syschat'Du kannst maximal nur 20 Items in den Verkauf stellen.' return end
local result = item.select_cell(tonumber(cmd[3]))
if not result then syschat'Es lief etwas falsch, probier es nochmal.' return end
local itemVnum = item.get_vnum()
local attr = {{item.get_attr(0)}, {item.get_attr(1)}, {item.get_attr(2)}, {item.get_attr(3)},{item.get_attr(4)},{item.get_at tr(5)}, {item.get_attr(6)}}
local socket, itemCount, itemCount2 = {item.get_socket(0), item.get_socket(1), item.get_socket(2),item.get_socket(3),item.get_soc ket(4),item.get_socket(5)}, item.get_count(), pc.getqf('itemcount2')
if tonumber(cmd[2]) < 1 or tonumber(cmd[2]) > 999999999 then syschat'<System>

Error 103)' return end
if itemCount2 != pc.count_item(itemVnum) then syschat('Item wurde nicht in das Handelscenter gestellt.') return end
local blackListItem = {4849,4848,4847,4846,4845,4844,4843,4842,4841,4840 ,4869,4868,4867,4866,4865,4864,4863,4862,4861,4860 ,4959,4958,4957,4956,4955,4954,4953,4952,4951,4950 ,18184,41488,41489,42109,42108,42107,42106,42105,4 2104,42103,42102,42101,42100,42179,42178,42177,421 76,42175,42174,42173,42172,42171,42170,42259,42258 ,42257,42256,42255,42254,42253,42252,42251,42250,4 4109,44108,44107,44106,44105,44104,44103,44102,441 01,44100,44129,44128,44127,44126,44125,44124,44123 ,44122,44121,44120,44259,44258,44257,44256,44255,4 4254,44253,44252,44251,44250,48139,48138,48137,481 36,48135,48134,48133,48132,48131,48130,48159,48158 ,48157,48156,48155,48154,48153,48152,48151,48150,4 8259,48258,48257,48256,48255,48254,48253,48252,482 51,48250,229,228,227,226,225,224,223,222,221,220,2 69,268,267,266,265,264,263,262,261,260,2199,2198,2 197,2196,2195,2194,2193,2192,2191,2190,3209,3208,3 207,3206,3205,3204,3203,3202,3201,3200,4049,4048,4 047,4046,4045,4044,4043,4042,4041,4040,5159,5158,5 157,5156,5155,5154,5153,5152,5151,5150,7189,7188,7 187,7186,7185,7184,7183,7182,7181,7180,7199,7198,7 197,7196,7195,7194,7193,7192,7191,7190,43069,43068 ,43067,43066,43065,43064,43063,43062,43061,43060,4 3099,43098,43097,43096,43095,43094,43093,43092,430 91,43090,43139,43138,43137,43136,43135,43134,43133 ,43132,43131,43130,43239,43238,43237,43236,43235,4 3234,43233,43232,43231,43230,43379,43378,43377,433 76,43375,43374,43373,43372,43371,43370,43459,43458 ,43457,43456,43455,43454,43453,43452,43451,43450,4 3989,43988,43987,43986,43985,43984,43983,43982,439 81,43980,41001,41002,41291,41292,41293,41294,41295 ,41296,41297,41298,45001,45002,45119,45120,45121,4 5122,45123,45124,45125,45126,71171,71172,35004,414 80,41481,41482,41483,41137,41138,41139,41140,41141 ,41142,41143,41144,45164,45165,45166,45167,50106,5 0107,50108,45174,45175,45176,45177,45075,45076,450 77,45078,41320,41321,41472,41473,41476,41477,41118 ,41117,45061,45062,45156,45157,45170,45171,45053,4 5054}
if not Auktionshaus.item_can_store(itemVnum) then syschat'Dieses Item kannst du nicht verkaufen.' return end
item.remove()
mysql_query("Insert into player.ah_item(player_id,name,vnum,count,price,soc ket0,socket1,socket2,socket3,socket4,socket5,attrt ype0,attrvalue0,attrtype1,attrvalue1,attrtype2,att rvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4, attrtype5,attrvalue5,attrtype6,attrvalue6,date) VALUES ("..pc.get_player_id()..",'"..pc.get_name().."',". .itemVnum..","..itemCount..","..cmd[2]..","..socket[1]..","..socket[2]..","..socket[3]..","..socket[4]..","..socket[5]..","..socket[6]..","..attr[1][1]..","..attr[1][2]..","..attr[2][1]..","..attr[2][2]..","..attr[3][1]..","..attr[3][2]..","..attr[4][1]..","..attr[4][2]..","..attr[5][1]..","..attr[5][2]..","..attr[6][1]..","..attr[6][2]..","..attr[7][1]..","..attr[7][2]..",CURRENT_TIMESTAMP);")
syschat('Item wurde in das Handelscenter gestellt.')
elseif cmd[1] == "RELOADMONEY" then
if not Auktionshaus.anti_flood('auktionshaus_money',5,10, 10) then return end
cmdchat("AuktionshausSetMoney "..Auktionshaus.get_money())
elseif cmd[1] == "REMOVEITEM" then
if not Auktionshaus.anti_flood('auktionshaus_removeItem', 10,10,20) then return end
local item = {}
item = mysql_query("Select * from player.ah_item where auction_id ="..tonumber(cmd[2])..";")
if not pc.enough_inventory(item.vnum[1]) then syschat'Du hast nicht genug Platz im Inventar.' return end
if table.getn(item) == 0 then syschat'Error' return end
if tonumber(item.player_id[1]) != pc.get_player_id() then syschat'Cheater

' return end
mysql_query("DELETE FROM player.ah_item where auction_id ="..tonumber(cmd[2])..";")
Auktionshaus.give_auction_item(item)
cmdchat("RemoveItemComplete")
Auktionshaus.loadMyAuctionItemsFromDB()
elseif cmd[1] == "MYAUCTION" then
if not Auktionshaus.anti_flood('myauction',10,30,30) then return end
Auktionshaus.loadMyAuctionItemsFromDB()
elseif cmd[1] == "LOAD" then
if not Auktionshaus.anti_flood('load',10,30,30) then return end
Auktionshaus.loadAuctionItemsFromDB(tonumber(cmd[2]),tonumber(cmd[3]))
elseif cmd[1] == "STARTPAGE" then
if not Auktionshaus.anti_flood('aktionshaus_startpage_ope n',10,30,30) then return end
Auktionshaus.loadStartPageItemsFromDB()
elseif cmd[1] == "BUY" then
if not Auktionshaus.anti_flood('buy',10,30,30) then return end
local item = mysql_query("SELECT * from player.ah_item where auction_id = "..tonumber(cmd[2])..";")
local money = Auktionshaus.get_money()
if table.getn(item) == 0 then syschat('<System>: Dieses Item wurde leider schon verkauft/entfernt.')
if tonumber(cmd[5]) == -1 then
Auktionshaus.loadAuctionItemsFromDB(tonumber(cmd[3]),tonumber(cmd[4]))
else
Auktionshaus.loadStartPageItemsFromDB()
end
return
end
if tonumber(money) < tonumber(item.price[1]) then syschat'<System>: Soviel Yang besitzt du nicht auf deinem Konto.' return end
if not pc.enough_inventory(tonumber(item.vnum[1])) then syschat'Du hast nicht genug Platz im Inventar.' return end
notice('Du hast das Item gekauft. Dir wurden '..(item.price[1])..' Yang aus dem Handelscenter abgezogen.')
Auktionshaus.give_auction_item(item)
Auktionshaus.removeMoney(tonumber(item.price[1]),pc.get_player_id())
Auktionshaus.addMoney(tonumber(item.price[1]),tonumber(item.player_id[1]))
mysql_query("DELETE FROM player.ah_item WHERE auction_id = "..tonumber(cmd[2])..";")
if tonumber(cmd[5]) == -1 then
Auktionshaus.loadAuctionItemsFromDB(tonumber(cmd[3]),tonumber(cmd[4]))
else
Auktionshaus.loadStartPageItemsFromDB()
end
cmdchat("AuktionshausSetMoney "..Auktionshaus.get_money())
elseif cmd[1] == 'CASHOUT' then
if not Auktionshaus.anti_flood('cashout',10,30,30) then return end
local money = Auktionshaus.get_money()
if tonumber(money) < tonumber(cmd[2]) then syschat'<System>: Soviel Yang besitzt du nicht auf deinem Konto.' return end
if (pc.get_money() + tonumber(cmd[2])) >= 1222222222 then syschat'<System>: Soviel Yang kannst du leider nicht bei dir tragen.' return end
Auktionshaus.removeMoney(tonumber(cmd[2]),pc.get_player_id())
cmdchat("AuktionshausSetMoney "..(tonumber(money)-tonumber(cmd[2])))
pc.changegold(tonumber(cmd[2]))
elseif cmd[1] == 'CASHIN' then
if not Auktionshaus.anti_flood('cashin',10,30,30) then return end
if pc.get_money() < tonumber(cmd[2]) then syschat'<System>: Soviel Yang besitzt du nicht.' return end
Auktionshaus.addMoney(tonumber(cmd[2]),pc.get_player_id())
pc.changegold(-(tonumber(cmd[2])))
local money = Auktionshaus.get_money()
cmdchat("AuktionshausSetMoney "..money)
end
end
function item_can_store(itemvnum)
local antiflags = Auktionshaus.item_get_real_antiflags(Auktionshaus. item_antiflag(itemvnum))
local blackListItem = {50821,50822,50823,50824,50825,50826,51002}
for i = 1, table.getn(blackListItem) do
if blackListItem[i] == itemvnum then
return false
end
end
for i = 1 , table.getn(antiflags) do
if antiflags[i] == 128 or antiflags[i] == 131072 or antiflags[i] == 8192 or antiflags[i] == 64 then return false end
-- Wenn das item die Antiflag hat wird es nicht eingelagert.
end
return true
end
function item_get_real_antiflags(antiflag_)
antiflags = {131072,65536,32768,16384,8192,4096,2048,1024,512, 256,128,64,32,16,8,4,2,1}
tab2 = {}
table.foreach(antiflags,function(_,v) if antiflag_ >= v then table.insert(tab2,v) antiflag_ = antiflag_ - v end end)
return tab2
end
function item_antiflag(item_vnum)
local result = mysql_query("SELECT antiflag from player.item_proto where vnum = "..item_vnum..";")
return tonumber(result.antiflag[1])
end
when login begin
if pc.getqf('MONEYACC') == 0 then
mysql_query("Insert into player.ah_money(player_id,money) VALUES ("..pc.get_player_id()..",0);")
pc.setqf('MONEYACC',1)
end
end
function addMoney(money, id)
mysql_query("Update player.ah_money Set money = money+"..money.." where player_id ="..id..";")
end
function removeMoney(money, id)
mysql_query("Update player.ah_money Set money = money-"..money.." where player_id ="..id..";")
end
function loadMyAuctionItemsFromDB()
local items = mysql_query("SELECT * from player.ah_item where player_id="..pc.get_player_id()..";")
cmdchat('ClearAHSellingItems')
for i = 1, table.getn(items) do
cmdchat('AddAHSellingItem '..items[i][1]..' '..items[i][4]..' '..items[i][5]..' '..items[i][6]..' '..items[i][7]..','..items[i][8]..','..items[i][9]..' '..items[i][13]..','..items[i][14]..','..items[i][15]..','..items[i][16]..','..items[i][17]..','..items[i][18]..','..items[i][19]..','..items[i][20]..','..items[i][21]..','..items[i][22]..','..items[i][23]..','..items[i][24]..','..items[i][25]..','..items[i][26])
end
cmdchat("LoadAHSuccess")
end
function loadStartPageItemsFromDB()
local items = mysql_query("SELECT * from player.ah_item WHERE player_id != "..pc.get_player_id().." ORDER BY auction_id DESC LIMIT 100;")
cmdchat('ClearAHItems')
for i = 1, table.getn(items) do
cmdchat('AddAHItem '..items[i][1]..' '..items[i][3]..' '..items[i][4]..' '..items[i][5]..' '..items[i][6]..' '..items[i][7]..','..items[i][8]..','..items[i][9]..' '..items[i][13]..','..items[i][14]..','..items[i][15]..','..items[i][16]..','..items[i][17]..','..items[i][18]..','..items[i][19]..','..items[i][20]..','..items[i][21]..','..items[i][22]..','..items[i][23]..','..items[i][24]..','..items[i][25]..','..items[i][26])
end
cmdchat("LoadAHSuccess")
end
function loadAuctionItemsFromDB(id,type_)
local items
if type_ == 1 or type_ == 2 then
items = mysql_query("SELECT * from player.ah_item where (vnum = "..id.." or vnum = "..(id+1).." or vnum = "..(id+2).." or vnum = "..(id+3).." or vnum = "..(id+4).." or vnum = "..(id+5).." or vnum = "..(id+6).." or vnum = "..(id+7).." or vnum = "..(id+8).." or vnum = "..(id+9)..") and player_id != "..pc.get_player_id().." LIMIT 1000;")
else
items = mysql_query("SELECT * from player.ah_item where vnum = "..id.." and player_id != "..pc.get_player_id().." LIMIT 1000;")
end
cmdchat('ClearAHItems')
for i = 1, table.getn(items) do
cmdchat('AddAHItem '..items[i][1]..' '..items[i][3]..' '..items[i][4]..' '..items[i][5]..' '..items[i][6]..' '..items[i][7]..','..items[i][8]..','..items[i][9]..' '..items[i][13]..','..items[i][14]..','..items[i][15]..','..items[i][16]..','..items[i][17]..','..items[i][18]..','..items[i][19]..','..items[i][20]..','..items[i][21]..','..items[i][22]..','..items[i][23]..','..items[i][24]..','..items[i][25]..','..items[i][26])
end
cmdchat("LoadAHSuccess")
end
function get_money()
return mysql_query("SELECT money from player.ah_money WHERE player_id = "..pc.get_player_id()..";").money[1]
end
function client_command(command_)
return Auktionshaus.split_(command_,"#")
end
function split_(string_,delimiter)
local result = { }
local from = 1
local delim_from, delim_to = string.find( string_, delimiter, from )
while delim_from do
table.insert( result, string.sub( string_, from , delim_from-1 ) )
from = delim_to + 1
delim_from, delim_to = string.find( string_, delimiter, from )
end
table.insert( result, string.sub( string_, from ) )
return result
end
function anti_flood(varName,maxUse,maxUse_time,wait_time)
if pc.getqf('maxUse_time_'..varName) == 0 and ((pc.getqf('waitTime_'..varName) < get_time()) or pc.getqf('waitTime_'..varName) == 0) then
pc.setqf('maxUse_time_'..varName,get_time()+maxUse _time)
pc.setqf('maxUse_'..varName,0)
return true
end
if pc.getqf('maxUse_time_'..varName) != 0 then
if pc.getqf('maxUse_'..varName) < maxUse and get_time() < pc.getqf('maxUse_time_'..varName) then
pc.setqf('maxUse_'..varName,pc.getqf('maxUse_'..va rName)+1)
return true
elseif pc.getqf('maxUse_'..varName) < maxUse and get_time() > pc.getqf('maxUse_time_'..varName) then
pc.setqf('maxUse_time_'..varName,0)
return true
elseif pc.getqf('maxUse_'..varName) >= maxUse then
-- syschat('Error, please wait '..wait_time..' seconds until your next request.')
syschat('Fehler, bitte warte '..wait_time..' sekunden, bis du es nocheinmal versuchst.')
pc.setqf('waitTime_'..varName,get_time()+wait_time )
pc.setqf('maxUse_time_'..varName,0)
return false
end
end
return false
end
function give_auction_item(itemTab)
pc.give_item_select(tonumber(itemTab.vnum[1]),tonumber(itemTab.count[1]))
local attr,socket = {},{}
for i = 0,6 do table.insert(attr,{itemTab['attrtype'..i][1],itemTab['attrvalue'..i][1]}) end
for i = 0,2 do table.insert(socket,itemTab['socket'..i][1]) end
for i = 1, table.getn(attr) do
-- if tonumber(attr[i][2]) > 0 then
-- chat('set type: '..attr[i][1].." value:"..attr[i][2])
item.set_value(i-1, tonumber(attr[i][1]), tonumber(attr[i][2]))
end
-- end
for i = 1, table.getn(socket) do if tonumber(socket[i]) > 0 then item.set_socket(i-1, tonumber(socket[i])) end end
end
end
end