舰R百科是靠无数自愿编辑者持续地建设更新完善的。编辑非常简单,请勇于更新页面!
编辑入门 | 资助百科 | 留言讨论页 | 微博@舰R百科 | 百科编辑讨论Q群:366818861

模块:数据

来自舰R百科
SegFault留言 | 贡献2016年10月9日 (日) 19:10的版本
跳转到导航 跳转到搜索

修改数据[编辑源代码]

大部分游戏数据保存在模块:数据库,这些数据可以用Python脚本自动生成,不建议手动修改。一方面因为手动修改的内容很容易被别人用自动生成的覆盖,另一方面我们永远不知道HM偷偷改了哪些数据,所以只有自动程序才能保证没有遗漏。

如果台词中有错别字或语病等建议使用模板:台词的参数修改,而不要直接修改数据库。

少部分需要人工编辑的数据保存在模块:特殊数据中,主要包含以下两项:

  • 不属于日、德、英、美、意、法、苏、中这8个国家的船无法自动判断国籍,需要人工指定;
  • 炮弹等装备的特殊效果如果自动采集则会包含一些无意义的内容,需要人工组织语言。

如果必须人工编辑数据库,可以参照模块:对照表来理解英文缩写的含义。

使用[编辑源代码]

模板:台词[编辑源代码]

例: {{#invoke:数据|台词|胡德|获得}}

Lua错误 在模块:特殊数据的第3行:attempt to index local 'data' (a boolean value)

模板:舰娘[编辑源代码]

船的属性: {{#invoke:数据|属性|{{{船名}}}|{{{属性名}}}}}

例: {{#invoke:数据|属性|胡德|火力max}}

Lua错误 在模块:特殊数据的第3行:attempt to index local 'data' (a boolean value)

装备属性: {{#invoke:数据|装备属性|{{{船名}}}|{{{装备位置}}}}}

例: {{#invoke:数据|装备属性|胡德·改|1}}

Lua错误 在模块:特殊数据的第3行:attempt to index local 'data' (a boolean value)

敌舰[编辑源代码]

{{#invoke:敌舰队|<位置标识>|<显示位置>|<列数>}}

结果可视为列表的一行(实际上为1~3行), 每列内容分别是: 位置, 舰队名, 阵形, 配置(默认6列), 索敌, 制空, 航速

参数除位置标识外均可省略

位置标识格式为x-y/z, 例如1-1/A

显示位置为列表第一列显示的内容, 可以修改来表示 boss 点或迂回点等

列数为这张表中最多一队的敌舰个数, 比如1-1一个点最多有4艘船就设成4

例:
{| class='wikitable'
!位置!!舰队!!阵形!!colspan=6|配置!!索敌!!制空!!航速
|-
{{#invoke:数据|敌舰队|2-5/A|随便改改}}
|-
{{#invoke:数据|敌舰队|2-5/B}}
|}
Lua错误 在模块:特殊数据的第3行:attempt to index local 'data' (a boolean value)Lua错误 在模块:特殊数据的第3行:attempt to index local 'data' (a boolean value)
位置 舰队 阵形 配置 索敌 制空 航速

local tr = mw.loadData("模块:对照表")
local data = mw.loadData("模块:特殊数据")
local equipts = data.equipts
local ships = data.ships
local enemyShips = mw.loadData("模块:敌舰数据")

p = { }

local function replaceCountryName(name)
    name = name:gsub('C国', '中国')
    name = name:gsub('E国', '英国')
    name = name:gsub('F国', '法国')
    name = name:gsub('G国', '德国')
    name = name:gsub('I国', '意大利')
    name = name:gsub('J国', '日本')
    name = name:gsub('S国', '苏联')
    name = name:gsub('U国', '美国')
    return name
end

local function getAttr(ship, attr, default)
    if tr[attr] ~= nil then attr = tr[attr] end
    if attr == '搭载' then
        return ship.cap1 + ship.cap2 + ship.cap3 + ship.cap4
    elseif attr:sub(1, 2) == 'eq' then
        return replaceCountryName(ship[attr])
    elseif ship[attr] ~= nil then
        return ship[attr]
    else
        return default
    end
end

local equiptAttrs = { '火力', '装甲', '鱼雷', '对空', '轰炸', '索敌', '对潜', '命中', '回避', '幸运', '射程', '对空补正' }
local rangeName = { '短', '中', '长', '超长' }

local function getEquiptAttrs(equipt)
    if equipt == nil then return '' end
    local ret = ''
    for i,attr in pairs(equiptAttrs) do
        local val = equipt[tr[attr]]
        if val ~= nil then
            if ret ~= '' then ret = ret .. '<br>' end
            ret = ret .. attr
            if attr == '射程' then
                ret = ret .. ': ' .. rangeName[val]
            elseif attr == '对空补正' then
                ret = ret .. ':' .. val .. '%'
            elseif val > 0 then
                ret = ret .. '+' .. val
            else
                ret = ret .. val
            end
        end
    end
    if equipt.effect ~= nil then
        return ret .. '<br>' .. equipt.effect
    else
        return ret
    end
end

p['属性'] = function(frame)
    local shipName = frame.args[1]
    local attr = frame.args[2]
    local default = frame.args[3]
    if default == nil then default = '' end
    return getAttr(ships[shipName], attr, default)
end

p['简介'] = function(frame)
    local shipName = frame.args[1]
    return replaceCountryName(ships[shipName]['简介'])
end

p['台词'] = function(frame)
    local shipName = frame.args[1]
    local dialogue = frame.args[2]
    if shipName == '' then return '' end
    local ret = ships[shipName][dialogue]
    if ret == nil then ret = '' end
    return ret
end

p['装备属性'] = function(frame)
    local shipName = frame.args[1]
    local index = frame.args[2]
    local attr = frame.args[3]
    local equiptName = ships[shipName]['eq' .. index]
    if attr ~= nil then
        return equipts[equiptName][tr[attr]]
    else
        return getEquiptAttrs(equipts[equiptName])
    end
end

p['敌舰属性'] = function(frame)
    local shipId = frame.args[1]
    local attr = frame.args[2]
    return getAttr(enemyShips[shipId], attr, '?')
end

p['敌舰装备属性'] = function(frame)
    local shipId = frame.args[1]
    local index = frame.args[2]
    local equiptName = enemyShips[shipId]['eq' .. index]
    return getEquiptAttrs(equipts[equiptName])
end

p.debug = function()
    f = { }
    f.args = { '20000006', '1' }
    return p['敌舰装备属性'](f)
end

return p