<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://www.zjsnrwiki.com/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3APreload</id>
	<title>模块:Preload - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://www.zjsnrwiki.com/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3APreload"/>
	<link rel="alternate" type="text/html" href="https://www.zjsnrwiki.com/index.php?title=%E6%A8%A1%E5%9D%97:Preload&amp;action=history"/>
	<updated>2026-05-01T13:45:16Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://www.zjsnrwiki.com/index.php?title=%E6%A8%A1%E5%9D%97:Preload&amp;diff=18426&amp;oldid=prev</id>
		<title>2016年10月11日 (二) 10:04 SegFault</title>
		<link rel="alternate" type="text/html" href="https://www.zjsnrwiki.com/index.php?title=%E6%A8%A1%E5%9D%97:Preload&amp;diff=18426&amp;oldid=prev"/>
		<updated>2016-10-11T10:04:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2016年10月11日 (二) 18:04的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;第1行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第1行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local tr = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.loadData&lt;/del&gt;(&quot;模块:对照表&quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local tr = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;require&lt;/ins&gt;(&quot;模块:对照表&quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local data = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.loadData&lt;/del&gt;(&quot;模块:特殊数据&quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local data = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;require&lt;/ins&gt;(&quot;模块:特殊数据&quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local equipts = data.equipts&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local equipts = data.equipts&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local ships = data.ships&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local ships = data.ships&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local enemy = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.loadData&lt;/del&gt;(&quot;模块:敌舰数据&quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local enemy = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;require&lt;/ins&gt;(&quot;模块:敌舰数据&quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local enemyShips = enemy.ships&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local enemyShips = enemy.ships&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local enemyFleets = enemy.fleets&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local enemyFleets = enemy.fleets&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key zjsnrwiki-zjsnrwiki_:diff:1.41:old-18425:rev-18426:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>SegFault</name></author>
	</entry>
	<entry>
		<id>https://www.zjsnrwiki.com/index.php?title=%E6%A8%A1%E5%9D%97:Preload&amp;diff=18425&amp;oldid=prev</id>
		<title>SegFault：​创建页面，内容为“local tr = mw.loadData(&quot;模块:对照表&quot;) local data = mw.loadData(&quot;模块:特殊数据&quot;) local equipts = data.equipts local ships = data.ships local enemy = mw.loa...”</title>
		<link rel="alternate" type="text/html" href="https://www.zjsnrwiki.com/index.php?title=%E6%A8%A1%E5%9D%97:Preload&amp;diff=18425&amp;oldid=prev"/>
		<updated>2016-10-11T10:00:07Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“local tr = mw.loadData(&amp;quot;模块:对照表&amp;quot;) local data = mw.loadData(&amp;quot;模块:特殊数据&amp;quot;) local equipts = data.equipts local ships = data.ships local enemy = mw.loa...”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local tr = mw.loadData(&amp;quot;模块:对照表&amp;quot;)&lt;br /&gt;
local data = mw.loadData(&amp;quot;模块:特殊数据&amp;quot;)&lt;br /&gt;
local equipts = data.equipts&lt;br /&gt;
local ships = data.ships&lt;br /&gt;
local enemy = mw.loadData(&amp;quot;模块:敌舰数据&amp;quot;)&lt;br /&gt;
local enemyShips = enemy.ships&lt;br /&gt;
local enemyFleets = enemy.fleets&lt;br /&gt;
&lt;br /&gt;
local equiptAttrs = { &amp;#039;火力&amp;#039;, &amp;#039;装甲&amp;#039;, &amp;#039;鱼雷&amp;#039;, &amp;#039;对空&amp;#039;, &amp;#039;轰炸&amp;#039;, &amp;#039;索敌&amp;#039;, &amp;#039;对潜&amp;#039;, &amp;#039;命中&amp;#039;, &amp;#039;回避&amp;#039;, &amp;#039;幸运&amp;#039;, &amp;#039;射程&amp;#039;, &amp;#039;对空补正&amp;#039; }&lt;br /&gt;
local rangeName = { &amp;#039;短&amp;#039;, &amp;#039;中&amp;#039;, &amp;#039;长&amp;#039;, &amp;#039;超长&amp;#039; }&lt;br /&gt;
&lt;br /&gt;
local speedType = { }&lt;br /&gt;
speedType[&amp;#039;航空母舰&amp;#039;] = 1&lt;br /&gt;
speedType[&amp;#039;轻型航空母舰&amp;#039;] = 1&lt;br /&gt;
speedType[&amp;#039;战列舰&amp;#039;] = 1&lt;br /&gt;
speedType[&amp;#039;航空战列舰&amp;#039;] = 1&lt;br /&gt;
speedType[&amp;#039;战列巡洋舰&amp;#039;] = 1&lt;br /&gt;
speedType[&amp;#039;重巡洋舰&amp;#039;] = 2&lt;br /&gt;
speedType[&amp;#039;重雷装巡洋舰&amp;#039;] = 2&lt;br /&gt;
speedType[&amp;#039;轻巡洋舰&amp;#039;] = 2&lt;br /&gt;
speedType[&amp;#039;驱逐舰&amp;#039;] = 2&lt;br /&gt;
speedType[&amp;#039;补给舰&amp;#039;] = 2&lt;br /&gt;
speedType[&amp;#039;潜艇&amp;#039;] = 3&lt;br /&gt;
&lt;br /&gt;
local colorName = { &amp;#039;black&amp;#039;, &amp;#039;green&amp;#039;, &amp;#039;blue&amp;#039;, &amp;#039;purple&amp;#039;, &amp;#039;orange&amp;#039;, &amp;#039;red&amp;#039; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local byIndex = { }&lt;br /&gt;
for name, ship in pairs(ships) do&lt;br /&gt;
    byIndex[ship.index] = name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local replaceCountryName = function(name)&lt;br /&gt;
    name = name:gsub(&amp;#039;C国&amp;#039;, &amp;#039;中国&amp;#039;)&lt;br /&gt;
    name = name:gsub(&amp;#039;E国&amp;#039;, &amp;#039;英国&amp;#039;)&lt;br /&gt;
    name = name:gsub(&amp;#039;F国&amp;#039;, &amp;#039;法国&amp;#039;)&lt;br /&gt;
    name = name:gsub(&amp;#039;G国&amp;#039;, &amp;#039;德国&amp;#039;)&lt;br /&gt;
    name = name:gsub(&amp;#039;I国&amp;#039;, &amp;#039;意大利&amp;#039;)&lt;br /&gt;
    name = name:gsub(&amp;#039;J国&amp;#039;, &amp;#039;日本&amp;#039;)&lt;br /&gt;
    name = name:gsub(&amp;#039;S国&amp;#039;, &amp;#039;苏联&amp;#039;)&lt;br /&gt;
    name = name:gsub(&amp;#039;U国&amp;#039;, &amp;#039;美国&amp;#039;)&lt;br /&gt;
    return name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local getAttr = function(ship, attr, default)&lt;br /&gt;
    if tr[attr] ~= nil then attr = tr[attr] end&lt;br /&gt;
    if attr == &amp;#039;搭载&amp;#039; then&lt;br /&gt;
        return ship.cap1 + ship.cap2 + ship.cap3 + ship.cap4&lt;br /&gt;
    elseif attr:sub(1, 2) == &amp;#039;eq&amp;#039; then&lt;br /&gt;
        return replaceCountryName(ship[attr])&lt;br /&gt;
    elseif attr == &amp;#039;简介&amp;#039; then&lt;br /&gt;
        return replaceCountryName(ship[&amp;#039;简介&amp;#039;])&lt;br /&gt;
    elseif ship[attr] ~= nil then&lt;br /&gt;
        return ship[attr]&lt;br /&gt;
    else&lt;br /&gt;
        return default&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getEquiptAttrs(equipt)&lt;br /&gt;
    if equipt == nil then return &amp;#039;&amp;#039; end&lt;br /&gt;
    local ret = &amp;#039;&amp;#039;&lt;br /&gt;
    for i,attr in pairs(equiptAttrs) do&lt;br /&gt;
        local val = equipt[tr[attr]]&lt;br /&gt;
        if val ~= nil then&lt;br /&gt;
            if ret ~= &amp;#039;&amp;#039; then ret = ret .. &amp;#039;&amp;lt;br&amp;gt;&amp;#039; end&lt;br /&gt;
            ret = ret .. attr&lt;br /&gt;
            if attr == &amp;#039;射程&amp;#039; then&lt;br /&gt;
                ret = ret .. &amp;#039;: &amp;#039; .. rangeName[val]&lt;br /&gt;
            elseif attr == &amp;#039;对空补正&amp;#039; then&lt;br /&gt;
                ret = ret .. &amp;#039;:&amp;lt;wbr&amp;gt;&amp;#039; .. val .. &amp;#039;%&amp;#039;&lt;br /&gt;
            elseif val &amp;gt; 0 then&lt;br /&gt;
                ret = ret .. &amp;#039;+&amp;#039; .. val&lt;br /&gt;
            else&lt;br /&gt;
                ret = ret .. val&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if equipt.effect ~= nil then&lt;br /&gt;
        return ret .. &amp;#039;&amp;lt;br&amp;gt;&amp;#039; .. equipt.effect&lt;br /&gt;
    else&lt;br /&gt;
        return ret&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatEnemyShip(ship)&lt;br /&gt;
    local ret = &amp;#039;[[&amp;#039;&lt;br /&gt;
    local len = mw.ustring.len(ship.title)&lt;br /&gt;
    if mw.ustring.sub(ship.title, len, len) == &amp;#039;型&amp;#039; and mw.ustring.sub(ship.title, len - 2, len - 2) == &amp;#039;级&amp;#039; then&lt;br /&gt;
        ret = ret .. mw.ustring.sub(ship.title, 1, len - 2)&lt;br /&gt;
    else&lt;br /&gt;
        ret = ret .. ship.title&lt;br /&gt;
    end&lt;br /&gt;
    return ret .. &amp;quot;|&amp;lt;span style=&amp;#039;color:&amp;quot; .. colorName[ship.rarity] .. &amp;quot;;&amp;#039;&amp;gt;&amp;quot; .. ship.title .. &amp;quot;&amp;lt;/span&amp;gt;]]&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function calcAa(ship)&lt;br /&gt;
    local ret = 0&lt;br /&gt;
    local n = math.floor(ship.atk / 5) + 3&lt;br /&gt;
    for i = 1, 4 do&lt;br /&gt;
        local e = ship[&amp;#039;eq&amp;#039; .. i]&lt;br /&gt;
        if e:find(&amp;#039;战斗机&amp;#039;) ~= nil then&lt;br /&gt;
            local f = math.log(math.min(n, ship[&amp;#039;cap&amp;#039; .. i]) * 2 + 2)&lt;br /&gt;
            ret = ret + f * equipts[e].aa&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatFloat(x)&lt;br /&gt;
    if x == 0 then return 0 end&lt;br /&gt;
    x = math.floor(x * 100 + 0.5) / 100&lt;br /&gt;
    return string.format(&amp;#039;%.2f&amp;#039;, x)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getEnemyFleet(node, label, shipNum)&lt;br /&gt;
    local ret = &amp;#039;&amp;#039;&lt;br /&gt;
    local n = 0&lt;br /&gt;
    for i, fleet in pairs(enemyFleets[node]) do&lt;br /&gt;
        if i ~= 1 then ret = ret .. &amp;#039;|-\n&amp;#039; end&lt;br /&gt;
        ret = ret .. &amp;#039;|&amp;#039; .. fleet.title .. &amp;#039;||&amp;#039; .. fleet.formation&lt;br /&gt;
        n = n + 1&lt;br /&gt;
        local rec = 0&lt;br /&gt;
        local aa = 0&lt;br /&gt;
        local speed = { 0, 0, 0 }&lt;br /&gt;
        local speedCnt = { 0, 0, 0 }&lt;br /&gt;
        local m = 0&lt;br /&gt;
        for j, shipId in pairs(fleet.ships) do&lt;br /&gt;
            m = m + 1&lt;br /&gt;
            local ship = enemyShips[shipId]&lt;br /&gt;
            ret = ret .. &amp;#039;||&amp;#039; .. formatEnemyShip(ship)&lt;br /&gt;
            rec = rec + ship.rec&lt;br /&gt;
            aa = aa + calcAa(ship)&lt;br /&gt;
            local st = speedType[ship.type]&lt;br /&gt;
            speed[st] = speed[st] + ship.speed&lt;br /&gt;
            speedCnt[st] = speedCnt[st] + 1&lt;br /&gt;
        end&lt;br /&gt;
        for j = m + 1, shipNum do&lt;br /&gt;
            ret = ret .. &amp;#039;||&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local s1 = 999&lt;br /&gt;
        local s2 = 999&lt;br /&gt;
        if speedCnt[1] ~= 0 then s1 = speed[1] / speedCnt[1] end&lt;br /&gt;
        if speedCnt[2] ~= 0 then s2 = speed[2] / speedCnt[2] end&lt;br /&gt;
        local s = math.min(s1, s2)&lt;br /&gt;
        if speedCnt[1] == 0 and speedCnt[2] == 0 then&lt;br /&gt;
            s = speed[3] / speedCnt[3]&lt;br /&gt;
        end&lt;br /&gt;
        ret = ret .. &amp;#039;||&amp;#039; .. rec .. &amp;#039;||&amp;#039; .. formatFloat(aa) .. &amp;#039;||&amp;#039; .. math.floor(s) .. &amp;#039;\n&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    return &amp;#039;|rowspan=&amp;#039; .. n .. &amp;#039;|&amp;#039; .. label .. &amp;#039;|&amp;#039; .. ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = { }&lt;br /&gt;
p.tr = tr&lt;br /&gt;
p.ships = ships&lt;br /&gt;
p.equipts = equipts&lt;br /&gt;
p.enemyShips = enemyShips&lt;br /&gt;
p.byIndex = byIndex&lt;br /&gt;
p.getAttr = getAttr&lt;br /&gt;
p.getEquiptAttrs = getEquiptAttrs&lt;br /&gt;
p.getEnemyFleet = getEnemyFleet&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>SegFault</name></author>
	</entry>
</feed>