mNo edit summary Tag: sourceedit |
mNo edit summary Tag: sourceedit |
||
Line 30: | Line 30: | ||
json = string.format('[ %s ]',json) |
json = string.format('[ %s ]',json) |
||
− | cmb = '(' |
+ | cmb = string.format( '(%s',cmb or '?' ) |
_found = mw.ustring.find(json:lower(), '%{ "name": "'..drop..'"') |
_found = mw.ustring.find(json:lower(), '%{ "name": "'..drop..'"') |
Revision as of 18:27, 26 March 2016
Documentation for this module may be created at Module:Get drop info/doc
-- <pre>
local p = {}
function p.main(frame)
local args = frame:getParent().args
local monster = string.gsub(args['?monster'] or args.monster or '','[][]','')
monster = mw.text.decode(monster)
local drop = string.lower(args.userparam or args.drop or '')
drop = mw.text.decode(drop)
local smwdata = frame:preprocess('{{'..
'{{{|safesubst:}}}#show:'..
monster..
[[
|?Drop JSON
|?All Combat level=&&SPLITPOINT&&Combat level:
|headers=plain
|format=list
}}
]])
smwdata = mw.text.decode(tostring(smwdata))
local _found = false
local json, cmb = unpack( mw.text.split(smwdata,'%(&&SPLITPOINT&&') )
json = string.format('[ %s ]',json)
cmb = string.format( '(%s',cmb or '?' )
_found = mw.ustring.find(json:lower(), '%{ "name": "'..drop..'"')
if not _found then
return ''
end
local _min,_max,rarity = mw.ustring.match(json:lower(), '%{ "name": "'..drop..'", "quantity": %[([%d%?]+),([%d%?]+)%], "rarity": "([%w ]+)"')
_min = _min or ''
_max = _max or ''
rarity = rarity or ''
local combat = mw.ustring.match(cmb:lower(),'%(combat level: (.-)%)') or 'N/A'
combat = combat:gsub('(%d%d?),(%d%d%d)','%1%2')
local quantity
if tonumber(_min) == tonumber(_max) then
quantity = _min
else
quantity = string.format('%s-%s',_min,_max)
end
return frame:preprocess(string.format('{{ItemDropsLine|Monster=%s|Combat=%s|Quantity=%s|Rarity=%s}}',monster,combat,quantity,rarity))
end
return p