蒙纳多研究本部
菜单
导航
首页
最近更改
随机页面
翻译查询
乐园数据管理室
送行者的收集手册
搜索
链入页面
相关更改
特殊页面
页面信息
最近更改
帮助
登录
模块
查看“︁Item”︁的源代码
←
模块:Item
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您必须确认您的电子邮件地址才能编辑页面。请通过
参数设置
设置并确认您的电子邮件地址。
您可以查看和复制此页面的源代码。
local p = {} local post = require("Module:RequestHelper").post local getArgs = require("Module:Arguments").getArgs local html = require("Module:Html") local compress = html.compress local addlink = html.addlink local function itemName(data) local name = data.itemID.name if data.rankType > 0 then name = name .. data.rankType end return name end local function obtain(data) -- 获得方式 local title = mw.title.getCurrentTitle() local drop do local header = {{label = "敌人", scope = "page"}, {label = "等级", scope = "Lv"}, {label = "地区", scope = "Map"}} if data.itemID.uni_flag == 0 then table.insert(header, {label = "插槽", scope = "slot"}) drop = {} for i = 0, data.itemID.jwl_slot_max do local res = mw.smw.ask { "[[DropWpn::" .. title.text .. "[" .. i .. "] ]] OR [[DropEquip::" .. title.text .. "[" .. i .. "] ]]", "?lv", "?map", "mainlabel=page", "sort=id" } if res then for _, v in ipairs(res) do v.slot = i table.insert(drop, v) end end end else drop = mw.smw.ask { "[[DropUniWpn::" .. title.text .. " ]] OR [[DropUniEquip::" .. title.text .. " ]]", "?lv", "?map", "mainlabel=page", "sort=id" } or {} end if #drop > 0 then for i, _ in ipairs(drop) do if type(drop[i].Lv) == "table" then drop[i].Lv = table.concat(drop[i].Lv, "<br>") end if type(drop[i].Map) == "table" then drop[i].Map = table.concat(drop[i].Map, "<br>") elseif drop[i].Map == nil then drop[i].Map = "" end end drop = mw.ustring.format([[<div class="large-6 columns">%s</div>]], html.wikitable(header, drop, {class = "xbtable"})) else drop = "" end end local npc do local header = {{label = "NPC交换", scope = "page"}, {label = "地区", scope = "Area"}} if data.itemID.uni_flag == 0 then table.insert(header, {label = "插槽", scope = "slot"}) npc = {} for i = 0, data.itemID.jwl_slot_max do local res = mw.smw.ask { "[[exchange5::" .. title.text .. "[" .. i .. "] ]] OR [[Present::" .. title.text .. "[" .. i .. "] ]]", "?Area", "mainlabel=page", "sort=id" } if res then for _, v in ipairs(res) do v.slot = i table.insert(npc, v) end end end else npc = mw.smw.ask { "[[exchange5::" .. title.text .. " ]] OR [[Present::" .. title.text .. " ]]", "?Area", "mainlabel=page", "sort=id" } or {} end if #npc > 0 then for i, _ in ipairs(npc) do if type(npc[i].Area) == "table" then npc[i].Area = table.concat(npc[i].Area, "<br>") elseif npc[i].Area == nil then npc[i].Area = "" end end npc = mw.ustring.format([[<div class="large-6 columns">%s</div>]], html.wikitable(header, npc, {class = "xbtable"})) else npc = "" end end local quest do local header = {{label = "任务报酬", scope = "page"}, {label = "NPC", scope = "Npc"}} if data.itemID.uni_flag == 0 then table.insert(header, {label = "插槽", scope = "slot"}) quest = {} for i = 0, data.itemID.jwl_slot_max do local res = mw.smw.ask { "[[任务:+]][[Reward::" .. title.text .. "[" .. i .. "] ]]", "?Npc", "mainlabel=page", "sort=id" } if res then for _, v in ipairs(res) do v.slot = i table.insert(quest, v) end end end else quest = mw.smw.ask { "[[任务:+]][[Reward::" .. title.text .. " ]]", "?Npc", "mainlabel=page", "sort=id" } or {} end if #quest > 0 then for i, _ in ipairs(quest) do if type(quest[i].Npc) == "table" then quest[i].Npc = table.concat(quest[i].Npc, "<br>") elseif quest[i].Npc == nil then quest[i].Npc = "" end end quest = mw.ustring.format([[<div class="large-6 columns">%s</div>]], html.wikitable(header, quest, {class = "xbtable"})) else quest = "" end end local shop do local header = {{label = "商店", scope = "page"}} if data.itemID.uni_flag == 0 then table.insert(header, {label = "插槽", scope = "slot"}) shop = {} for i = 0, data.itemID.jwl_slot_max do local res = mw.smw.ask { "[[Item::" .. title.text .. "[" .. i .. "] ]]", "mainlabel=page" } if res then for _, v in ipairs(res) do v.slot = i table.insert(shop, v) end end end else shop = mw.smw.ask { "[[Item::" .. title.text .. " ]]", "mainlabel=page" } or {} end if #shop > 0 then shop = mw.ustring.format([[<div class="large-6 columns">%s</div>]], html.wikitable(header, shop, {class = "xbtable"})) else shop = "" end end if #drop > 0 or #npc > 0 or #quest > 0 or #shop > 0 then return mw.ustring.format( [[ %s <div class="row"> %s %s %s %s </div> ]], html.h2("获得方式"), drop, npc, quest, shop ) else return "" end end function p.weapon(frame, data) mw.smw.set { id = data.row_id, itemType = data.itemType, MinAttack = data.itemID.dmg_low, MaxAttack = data.itemID.dmg_hi, PhysicalDef = data.itemID.arm_phy, EtherDef = data.itemID.arm_eth, CriticalRate = data.itemID.att_lev, BlockRate = data.itemID.grd_rate } if data.itemID.pcid then mw.smw.set { pc = data.itemID.pcid.name, ["appearance/" .. data.itemID.pcid.row_id] = data.itemID.style and data.itemID.style.name or nil } end local wikitext = "" local info = data.comment local jwl = "" if data.itemID.uni_flag == 0 then jwl = data.itemID.jwl_slot_max else local jwlArr = {} for i = 1, 3 do local jwl_skill = data.itemID["jwl_skill" .. i] if jwl_skill then table.insert(jwlArr, jwl_skill.itemID.name .. jwl_skill.rankType .. " (" .. jwl_skill.percent .. "%)") end end jwl = jwl .. table.concat(jwlArr, "<br>") end mw.smw.set {jwl = jwl} info = info .. html.wikitable( {"物品分类", "装备角色", "最小攻击力", "最大攻击力", "物理防御", "以太防御", "暴击率", "格挡率", "插槽(最大数)", "造型"}, { { data.itemType, data.itemID.pcid and data.itemID.pcid.name or "", data.itemID.dmg_low, data.itemID.dmg_hi, data.itemID.arm_phy, data.itemID.arm_eth, data.itemID.att_lev, data.itemID.grd_rate, jwl, data.itemID.style and data.itemID.style.name or "" } }, {transpose = true, class = "xbtable"} ) wikitext = wikitext .. mw.ustring.format( [[ <div class="row"> <div class="large-6 columns">%s</div> </div> ]], info ) wikitext = wikitext .. obtain(data) return compress(wikitext) end function p.equip(frame, data) mw.smw.set { id = data.row_id, itemType = data.itemType, equipType = data.itemID.arm_type, PhysicalDef = data.itemID.arm_phy, EtherDef = data.itemID.arm_eth, Weight = data.itemID.eva_rate } local info = data.comment local jwl = "" if data.itemID.uni_flag == 0 then jwl = data.itemID.jwl_slot_max else local jwl_skill = data.itemID.jwl_skill1 jwl = jwl .. jwl_skill.itemID.name .. jwl_skill.rankType .. " (" .. jwl_skill.percent .. "%)" end mw.smw.set {jwl = jwl} info = info .. html.wikitable( {"物品分类", "装备类别", "物理防御", "以太防御", "重量", "插槽(最大数)"}, { { data.itemType, data.itemID.arm_type, data.itemID.arm_phy, data.itemID.arm_eth, data.itemID.eva_rate, jwl } }, {transpose = true, class = "xbtable"} ) local wikitext = mw.ustring.format( [[ <div class="row"> <div class="large-6 columns">%s</div> </div> ]], info ) do local header = {} local body = {} for _, parts in pairs(data.itemID.pc) do if parts.style then table.insert(header, parts.pcid.name) table.insert(body, parts.style.name) mw.smw.set {["appearance/" .. parts.pcid.row_id] = parts.style.name} end end if #body > 0 then local fashion = html.wikitable(header, {body}, {transpose = true, class = "xbtable"}) wikitext = wikitext .. mw.ustring.format( [[ %s <div class="row"> <div class="medium-6 columns">%s</div> </div> ]], html.h2("造型"), fashion ) end end wikitext = wikitext .. obtain(data) return compress(wikitext) end function p.fetchDataById(id) return post("bdat_common.ITM_itemlist", id) end function p.main(frame) local args = getArgs(frame) local out = "" local id = args[1] local data = p.fetchDataById(id) -- mw.log(mw.text.jsonEncode(data, mw.text.JSON_PRETTY)) if data.itemType == "武器" then out = out .. p.weapon(frame, data) elseif data.itemType == "头部防具" or data.itemType == "身体防具" or data.itemType == "手臂防具" or data.itemType == "腰部防具" or data.itemType == "腿部防具" then out = out .. p.equip(frame, data) end return out end return p
该页面使用的模板:
模块:Item/doc
(
查看源代码
)
返回
模块:Item
。