diff --git a/libs/green_t.lua b/libs/green_t.lua index 9f8afc3..c3e259e 100644 --- a/libs/green_t.lua +++ b/libs/green_t.lua @@ -117,7 +117,7 @@ do local function pseudo_literal(mode) local upvals = {setmetatable=setmetatable, setn=table.setn, error=error} local mt = {__call = pseudo_vararg_function(insert_chunk(mode) .. 'setmetatable(a1, nil); return a1', upvals)} - return function() return setmetatable(acquire_temp(), mt) end + return function() return setmetatable(acquire(), mt) end end public.S.get = pseudo_literal'k' public.A.get = pseudo_literal'v' @@ -125,10 +125,15 @@ do public.T.get = pseudo_literal'kv' end -do - local body = '' - for i = 2, 100 do - body = body .. format('if a1 == %d then return %s end;', i, arg_chunk(i, 100)) - end - public.select = pseudo_vararg_function(body) +--do +-- local body = '' +-- for i = 2, 100 do +-- body = body .. format('if a1 == %d then return %s end;', i, arg_chunk(i, 100)) +-- end +-- public.select = pseudo_vararg_function(body) +--end + +function public.select(i, ...) temp=arg +while i > 1 do i = i - 1; tremove(arg, i) end +return tremove(arg, 1), unpack(arg) end \ No newline at end of file diff --git a/util/filter.lua b/util/filter.lua index 42e17a5..c61c7c6 100644 --- a/util/filter.lua +++ b/util/filter.lua @@ -239,6 +239,7 @@ do ) do if not self[parser[1]] then tinsert(parser, str) + p(str, p(unpack(parser)), p(select(3, unpack(parser)))) local index, label = parser[2](select(3, unpack(parser))) if index then self[parser[1]] = A(label, index) diff --git a/util/info.lua b/util/info.lua index 3d3f62c..f269728 100644 --- a/util/info.lua +++ b/util/info.lua @@ -372,7 +372,7 @@ end function public.item_class_index(item_class) for i, class in temp-A(GetAuctionItemClasses()) do - if item_class == nil then error() end + if type(item_class) ~= 'string' then error() end if strupper(class) == strupper(item_class) then return i, class end