匿名
未登录
登录
乐园数据管理室
搜索
查看“︁模块:Condition”︁的源代码
来自乐园数据管理室
命名空间
模块
讨论
更多
更多
页面操作
阅读
查看源代码
历史
刷新
←
模块:Condition
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您没有权限编辑
模块
命名空间内的页面。
您必须确认您的电子邮件地址才能编辑页面。请通过
参数设置
设置并确认您的电子邮件地址。
您可以查看和复制此页面的源代码。
local p = {} local QueryHelper = require("Module:Xb2QueryHelper") local html = require("Module:Html") local loadJson = require("Module:JSON").loadJson local BdatEnums = require("Module:BdatEnums") local Flag = require("Module:Flag") local function characterLinkById(id, ira) local ns = "" if id > 2000 then ns = "NPC" elseif id > 1000 then ns = "异刃" elseif ira then ns = "黄金之国伊拉" end local characterName = QueryHelper.getCharacterName(id) if characterName == nil then return nil end local title = mw.title.new(characterName, ns) return "[[" .. title.fullText .. "|" .. title.text .. "]]" end local processFunc = { Scenario = function(subCondition) local data = subCondition.data -- 四个属性都存在,显示两个区间 if data.ScenarioFlagMin > 0 and data.ScenarioFlagMax > 0 and data.NotScenarioMin > 0 and data.NotScenarioMax > 0 then return Flag.scenario(data.ScenarioFlagMin) .. " ~ " .. Flag.scenario(data.NotScenarioMin) .. ", " .. Flag.scenario(data.NotScenarioMax) .. " ~ " .. Flag.scenario(data.ScenarioFlagMax) end if data.NotScenarioMin > 0 and data.NotScenarioMax > 0 then return "~ " .. Flag.scenario(data.NotScenarioMin) .. ", " .. Flag.scenario(data.ScenarioFlagMin) .. " ~" end if data.ScenarioFlagMin == data.ScenarioFlagMax then return Flag.scenario(data.ScenarioFlagMin) else return Flag.scenario(data.ScenarioFlagMin) .. " ~ " .. Flag.scenario(data.ScenarioFlagMax) end end, -- Quest Quest = function(subCondition) local data = subCondition.data local ira = subCondition.ira local questList = {} for _, pre in ipairs({"", "Not"}) do for i = 1, 2 do local quest, questPhase = Flag.quest(data[pre .. "QuestFlag" .. i], ira) if quest then if questPhase then table.insert(questList, quest .. "#" .. questPhase) else table.insert(questList, quest) end end end end return table.concat(questList, "、") end, -- Env天气 Env = function(subCondition) local data = subCondition.data local function getWeather(value) local bit32 = require("bit32") local weather = QueryHelper.getWeatherList() local result = {} for i = 0, 14 do if bit32.extract(value, i) == 1 then table.insert(result, p.weather[bit32.lshift(1, i)]) end end if #result == 0 then result = nil end return result end local TimeRange = BdatEnums.getTimeRange(data.TimeRange) local Weather = getWeather(data.Weather) local CloudHeight = BdatEnums.CloudType[data.CloudHeight] local result = {} if TimeRange then table.insert(result, table.concat(TimeRange, ", ")) end if Weather then table.insert(result, table.concat(Weather, ", ")) end if Weather then table.insert(result, CloudHeight) end return table.concat(result, ", ") end, -- Flag标记 Flag = function(subCondition) local data = subCondition.data local FlagID = tostring(data.FlagID) local title = mw.title.new(FlagID, "FLAG") local content = title:getContent() local value if data.FlagMin == data.FlagMax then value = data.FlagMin else value = data.FlagMin .. "~" .. data.FlagMax end if content then return content .. ": " .. value end return "[[" .. title.fullText .. "]]" .. ": " .. value end, -- 道具 Item = function(subCondition) local data = subCondition.data local ira = subCondition.ira local ns = "物品" if ira then ns = "黄金之国物品" end local itemName = QueryHelper.getItemName(data.ItemID) local title = mw.title.new(itemName, ns) return "持有物品: " .. "[[" .. title.fullText .. "|" .. title.text .. "]] " .. data.Number .. "个" end, PT = function(subCondition) local data = subCondition.data local characterStatus = BdatEnums.partyConditionType[data.Category] local characterList = {} for i = 1, 3 do local characterId = data["PCID" .. i] if characterId > 0 then local characterLink = characterLinkById(characterId, subCondition.ira) if characterLink then table.insert(characterList, characterLink) end end end return table.concat(characterList, "、") .. characterStatus end, -- 信赖,基本都是开环时需要的数据,忽略 Idea = function(subCondition) return subCondition.type .. "/" .. subCondition.data.row_id end, -- 表为空,忽略 Level = function(subCondition) return subCondition.type .. "/" .. subCondition.data.row_id end, -- 牵绊环 Achievement = function(subCondition) local data = subCondition.data local achievementName, bladeName = QueryHelper.getAchievementSetName(data.AchievementSetID) local title = mw.title.new(bladeName .. "/牵绊圆环", "异刃") return "牵绊环: " .. "[[" .. title.fullText .. "#" .. achievementName .. "|" .. bladeName .. "#" .. achievementName .. "]]" .. "Lv" .. data.Value end, -- 场景技能 FieldSkiiLevel = function(subCondition) local data = subCondition.data local fieldSkill = QueryHelper.getFieldSkillName(data.FieldSkillID) return fieldSkill .. " Lv" .. data.Level end } function p.getById(id, ira) if id <= 0 then return nil end local conditionList = QueryHelper.getConditonList(id) local result = {relation, list = {}} if conditionList.Premise == 0 then result.relation = "<br>" elseif conditionList.Premise == 1 then result.relation = " 或<br>" end for i = 1, 8 do local type = conditionList["ConditionType" .. i] local subId = conditionList["Condition" .. i] if type > 0 then local conditionDetail = QueryHelper.getSubCondition(BdatEnums.conditionType[type], subId) if conditionDetail then table.insert(result.list, {type = BdatEnums.conditionType[type], data = conditionDetail, ira = ira}) else mw.log("找不到condition:" .. id .. " " .. BdatEnums.conditionType[type] .. "/" .. subId) end end end -- process result local out = {} for _, subCondition in ipairs(result.list) do table.insert(out, processFunc[subCondition.type](subCondition)) end out = table.concat(out, result.relation) return out end return p
该页面使用的模板:
模块:Condition/doc
(
查看源代码
)
返回
模块:Condition
。
导航
导航
首页
最近更改
随机页面
翻译查询
异度神剑
异度神剑3
异度神剑X
wiki工具
wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志