本WIKI编辑权限开放,建议收藏起来防止迷路
部分页面还在施工中,欢迎可爱的小伙伴来一起建设,可以加群讨论~ 幻兽帕鲁WIKI交流群:674595109

全站通知:

模块:Data

来自Palworld幻兽帕鲁中文百科WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

此模块的文档可以在模块:Data/doc创建

local p = {}


p["expandTable"] = function (t, pk, pt) 
	if pk == nil then
		pt = pt or {}
		for k, v in pairs(t) do
		    if type (v) == "table" then
		    	p["expandTable"](v, k, pt)
		    	t[k] = nil
		    end
		end
		for k, v in pairs(pt) do
		    t[k] = v
		end
	else 
		if t[1] ~= nil then
			for k, v in ipairs(t) do
			    if type (v) == "table" then
			    	p["expandTable"](v, pk .. "." .. k, pt)
			    	t[k] = nil
			    else 
			    	pt[pk .. "." .. k] = v
			    end
			end
		else 
			for k, v in pairs(t) do
				if type (v) == "table" then
			    	p["expandTable"](v, pk .. "." .. k, pt)
			    	t[k] = nil
			    else 
			    	pt[pk .. "." .. k] = v
			    end
			end
		end
	end
end

-- p["json"]({args={json="build", jsonformat="map", key="Name", Name="野莓农园"}})
p["json"] = function (frame) 
	local data = mw.text.jsonDecode(mw.title.new('Mediawiki:'.. frame.args["json"] .. '.json'):getContent() or '[]')
	local name = frame.args[frame.args["key"]]
	for i, item in pairs(data) do
		if frame.args["jsonformat"] == "map" then
			item = data[i]
		end
		if name == item[frame.args["key"]] then
			p["expandTable"](item)
			for k, v in pairs(frame.args) do
			    item[k] = v
			end
			-- mw.log(mw.text.jsonEncode(item))
			return frame:expandTemplate{ title = frame.args["template"], args = item } 
		end  
	end	
end

--[[
模板:帕鲁图鉴
--]]

p["pal"] = function (frame) 
	local pals = mw.text.jsonDecode(mw.title.new('Mediawiki:Pals.json'):getContent() or '[]')
	local name = frame.args["帕鲁名称"]
	
	for i, pal in ipairs(pals) do
		if name == pal["名字"] and string.find (pal["ID"], "BOSS") == frame.args["BOSS"] then
			for k, v in pairs(pal) do
			    if type (v) == "table" then
			    	for ck, cv in pairs(v) do
			    		pal[k .. "." .. ck] = cv
					end
			    	pal[k] = nil
				end
			end
			for k, v in pairs(frame.args) do
			    pal[k] = v
			end
			return frame:expandTemplate{ title = frame.args["模板"] or "帕鲁模块", args = pal } 
		end  
	end	
end

--[[
模板:科技树
--]]

p["tech"] = function (frame) 
	local techs = mw.text.jsonDecode(mw.title.new('Mediawiki:Tech.json'):getContent() or '[]')
	local name = frame.args["科技名称"]
	
	for i, tech in ipairs(techs) do
		if name == tech["Name"] then
			for k, v in pairs(tech) do
			    if type (v) == "table" then
			    	for ck, cv in pairs(v) do
			    		tech[k .. "." .. ck] = cv
					end
			    	tech[k] = nil
				end
			end
			for k, v in pairs(frame.args) do
			    tech[k] = v
			end
			return frame:expandTemplate{ title = frame.args["模板"] or "科技树", args = tech } 
		end  
	end	
end


--[[
模板:图标
--]]

p["icon"] = function (frame) 
	local icons = mw.text.jsonDecode(mw.title.new('MediaWiki:Icon.json'):getContent() or '[]')
	local name = frame.args[1]
	return icons[name]
end


p["map"] = function (frame) 
	local data = mw.text.jsonDecode(mw.title.new('Mediawiki:'.. frame.args["json"] .. '.json'):getContent() or '[]')[1]["Rows"]
	local points = {}
	for i, p in ipairs(data) do
		local point = {
			id = frame.args["json"] .. i,
			markType = 100,
			point = {
				lat = p.Location.X / 46,
				lng = p.Location.Y / 46
			}
		}
		table.insert (points, point)
	end	
	return mw.text.jsonEncode(points)
end

p["map"] = function (frame) 
	local data = mw.text.jsonDecode(mw.title.new('Mediawiki:'.. frame.args["json"] .. '.json'):getContent() or '[]')
	local points = {}
	for i, p in ipairs(data) do
		local point = {
			id = frame.args["json"] .. i,
			markType = 100,
			point = {
				lat = p.X / 450 + 250,
				lng = p.Y / 450 - 320
			}
		}
		table.insert (points, point)
	end	
	return mw.text.jsonEncode(points)
end


p["map2"] = function (frame) 
	--mw.log(1,frame.args["json"])
	local data = mw.text.jsonDecode(frame.args["json"])
	--mw.logObject(data)
	local pointBox = {}
	--mw.log(ipairs(data))
	for boxi, boxp in pairs(data) do
		local points = {}
		for i, p in pairs(boxp) do
			local point = {
				id = p.id,
				title = p.title,
				markType = p.markType,
				point = {
					lat = p.point.lat / 450 + 280,
					lng = p.point.lng / 450 - 350
				},
				uid = p.uid,
				time = p.time,
				layer = p.layer,
			}
			table.insert (points, point)
		end	
		table.insert (pointBox,boxi ,points)
	end	
	return mw.text.jsonEncode(pointBox)
end


p["道具筛选"] = function (frame)
	local data = mw.text.jsonDecode(mw.title.new('MediaWiki:Item.json'):getContent() or '{}')
	local allrows = ""
	for i, item in pairs(data) do
		if item['图标'] ~= '' and item['名称'] ~= 'zh-hans text' then
			allrows = allrows .. "\n" .. frame:expandTemplate{
				title ='道具筛选',
				args = {
        			Name = item['名称'],
            		Icon = item['图标'],
            		Type = item['TypeB'],
            		String = item['说明']
        				}
			}
			end
		end
return allrows
end


return p