模块:深海装备函数/doc

来自舰娘百科
跳转至: 导航搜索

这是模块:深海装备函数的文档页面

写在前面

若您在其他页面调用了本模块函数,请将调用页面更新于此

若您修改了本模块的代码逻辑,请确认上述页面工作正常

概述

本模块(module)基于模块:深海装备数据提供了以下2个API

本模块使用Lua语法,截至2018年1月,KcWiki的Lua版本为5.1,并可使用mediawiki定制化的Lua扩展,如有您有兴趣或疑问,请参考官方参考手册

查询装备信息

调用方法

在其他页面中调用API时,使用如下格式:

{{#invoke: 深海装备函数|getEquipDataById|装备ID|参数}}
  • 装备ID:舰队收藏游戏中,api_start2定义的深海装备ID
  • 参数:需要获得的参数信息

当前支持查询的参数信息如下:

参数 调用示例 返回结果 备注/注意点
中文名 {{#invoke: 深海装备函数|getEquipDataById|507|中文名}} equip ID不存在: 507
日文名 {{lang|ja|{{#invoke: 深海装备函数|getEquipDataById|507|日文名}}}} equip ID不存在: 507 需要再次调用日语处理模板{{lang|ja}}模板来处理返回结果
类别 {{#invoke: 深海装备函数|getEquipDataById|539|类别}} 21 是装备类型五元组(api_type)的第3个元素,即"カテゴリ(Catagory)"
图鉴 {{#invoke: 深海装备函数|getEquipDataById|539|图鉴}} 15 是装备类型五元组(api_type)的第4个元素,即"アイコンID(Icon ID)"
但ID为579的深海14英寸海峡连装炮是一个特例图鉴号/KcWiki图标文件名对应表
稀有度 {{#invoke: 深海装备函数|getEquipDataById|539|稀有度}} 1 所得结果是一个整型字符
火力 {{#invoke: 深海装备函数|getEquipDataById|507|火力}} equip ID不存在: 507
雷装 {{#invoke: 深海装备函数|getEquipDataById|513|雷装}} 2
爆装 {{#invoke: 深海装备函数|getEquipDataById|523|爆装}} 3
对空 {{#invoke: 深海装备函数|getEquipDataById|525|对空}} 1
装甲 {{#invoke: 深海装备函数|getEquipDataById|552|装甲}} 3
对潜 {{#invoke: 深海装备函数|getEquipDataById|554|对潜}} 8
命中 {{#invoke: 深海装备函数|getEquipDataById|527|命中}} 5
索敌 {{#invoke: 深海装备函数|getEquipDataById|517|索敌}} 5
回避 {{#invoke: 深海装备函数|getEquipDataById|531|回避}} 3
射程 {{#invoke: 深海装备函数|getEquipDataById|501|射程}}
{{#invoke: 深海装备函数|getEquipDataById|573|射程}}
equip ID不存在: 501
超超长
ID为573的深海潜艇用木屐式机的射程是超超长,为真实游戏解包数据结果

出错返回

错误调用示例 返回结果
{{#invoke: 深海装备函数|getEquipDataById|2507|中文名}} equip ID不存在: 2507
{{#invoke: 深海装备函数|getEquipDataById|507|a}} equip ID不存在: 507
{{#invoke: 深海装备函数|getEquipDataById|507}} equip ID不存在: 507
{{#invoke: 深海装备函数|getEquipDataById|507|火力1}} equip ID不存在: 507
{{#invoke: 深海装备函数|getEquipDataById|507|火力|1}} equip ID不存在: 507

生成页面深海装备列表

直接生成页面深海装备列表

返回HTML

{{#invoke: 深海装备函数|getEquipsListHtml}}

实际返回的代码没有空行与缩进,等效代码如下(截取了表头和第一行装备):

<table style="width: 100%; background-color: #f9f9f9; border: 1px #aaaaaa solid; border-collapse: collapse;">
    <tr>
        <th style="width: 5%; background-color: #e2e2e2;">编号</th>
        <th style="width: 5%; background-color: #e2e2e2;">等级</th>
        <th style="width: 20%; background-color: #e2e2e2;">名字</th>
        <th style="width: 10%; background-color: #e2e2e2;">类型</th>
        <th style="width: 40%; background-color: #e2e2e2;">数据</th>
        <th style="width: 5%; background-color: #e2e2e2;">射程</th>
        <th style="width: 15%; background-color: #e2e2e2;">备注</th>
    </tr>
    <tr>
        <td style="text-align: center; vertical-align: center; background-color: #eaeaea; border-style: solid none; border-width: 1px;">501</td>
        <td style="text-align: center; vertical-align: center; background-color: #f2f2f2; border-style: solid none; border-width: 1px;"></td>
        <td style="background-color: #eaeaea; border-style: solid none; border-width: 1px;">
            <table>
                <tr>
                    <td rowspan="2" style="width: 10%; background-color: #cacaca;">[[文件:IcoMainLight.png|35px|小口径主炮]]</td>
                    <td style="background-color: #cacaca;">{{lang|ja|5inch単装砲}}</td>
                </tr>
                <tr>
                    <td style="background-color: #eaeaea;">5英寸单装炮</td>
                </tr>
            </table>
        </td>
        <td style="text-align: center; vertical-align: center; background-color: #f2f2f2; border-style: solid none; border-width: 1px;">小口径主炮</td>
        <td style="text-align: left; vertical-align: center; background-color: #eaeaea; border-style: solid none; border-width: 1px;">[[文件:IcoAtk.png|20px|火力]]火力 +1 </td>
        <td style="text-align: center; vertical-align: center; background-color: #f2f2f2; border-style: solid none; border-width: 1px;">短</td>
        <td style="text-align: left; vertical-align: center; background-color: #eaeaea; border-style: solid none; border-width: 1px;"></td>
    </tr>
</table>

返回mediawiki表格

{{#invoke: 深海装备函数|getEquipsListMediawiki}}

返回的代码如下(截取了表头和第一行装备):

{| style="width: 100%; background-color: #f9f9f9; border: 1px #aaaaaa solid; border-collapse: collapse;"
! style="width: 5%; background-color: #e2e2e2;" | 编号
! style="width: 5%; background-color: #e2e2e2;" | 等级
! style="width: 20%; background-color: #e2e2e2;" | 名字
! style="width: 10%; background-color: #e2e2e2;" | 类型
! style="width: 40%; background-color: #e2e2e2;" | 数据
! style="width: 5%; background-color: #e2e2e2;" | 射程
! style="width: 5%; background-color: #e2e2e2;" | 备注
|-
| style="text-align: center; vertical-align: center; background-color: #eaeaea; border-style: solid none; border-width: 1px;" | 501
| style="text-align: center; vertical-align: center; background-color: #f2f2f2; border-style: solid none; border-width: 1px;" | 
| style="background-color: #eaeaea; border-style: solid none; border-width: 1px;" |
  {|
   | rowspan="2" style="width: 10%;background-color: #cacaca;" | [[文件:IcoMainLight.png|35px|小口径主炮]]
   | style="background-color: #cacaca;" | {{lang|ja|5inch単装砲}}
   |-
   | style="background-color: #eaeaea;" | 5英寸单装炮
  |}
| style="text-align: center; vertical-align: center; background-color: #f2f2f2; border-style: solid none; border-width: 1px;" | 小口径主炮
| style="text-align: left; vertical-align: center; background-color: #eaeaea; border-style: solid none; border-width: 1px;" | [[文件:IcoAtk.png|20px|火力]]火力 +1 
| style="text-align: center; vertical-align: center; background-color: #f2f2f2; border-style: solid none; border-width: 1px;" | 短
| style="text-align: left; vertical-align: center; background-color: #eaeaea; border-style: solid none; border-width: 1px;" | 
|}

实现细节

类别/中文对应表

table变量

equipCategoryTable

是装备类型五元组(api_type)的第3个元素,即"カテゴリ(Catagory)"与中文的对应关系表

图鉴号/KcWiki图标文件名对应表

table变量

equipIconTable

是装备类型五元组(api_type)的第4个元素,即"アイコンID(Icon ID)"与KcWiki存储的,图标文件对应关系表
但ID为579的深海14英寸海峡连装炮是一个特例,api_start2的解包数据里,该装备的Icon ID是1,表示小口径主炮
所以,在所有尝试获得Icon ID的操作前,都必须做特殊情况处理
为了保持程序的可扩展性,防止有新装备出现类似的异常情况,table变量

local spicialCaseHandlers = {
    ['579'] = function (equip)
        -- Fix icon id of 深海14英寸海峡连装炮
        --
        -- original value in start2 is: 1 小口径主炮
        -- fix it to: 3 大口径主炮
        equip['类型'][ICON_ID] = 3
    end
}

保存了装备ID对应的处理函数,一旦table中记录了装备ID对应的函数,就调用该处理函数
传输的参数eqiup,对应模块:深海装备数据某一个装备的table,handler函数将直接对equip内容进行修改

local equips = require('模块:深海装备数据')
local equip = equips.equipDataTable['579']
local handler = spicialCaseHandlers['579']
if handler then
    handler(equip)
end

注意,这个修改是持续性的,因为equip变量其实是一个引用,指向了一个table变量。
一旦调用了handler(equip),equip指向的table变量数据会保持被修改的状态