(обновление данных) |
(обновление данных) |
||
Строка 108: | Строка 108: | ||
-- 76/146/408 not used. |
-- 76/146/408 not used. |
||
− | if npcid < -65 or npcid > |
+ | if npcid < -65 or npcid > 666 then |
clear(frame) -- reset all dpl vars |
clear(frame) -- reset all dpl vars |
||
return |
return |
||
Строка 145: | Строка 145: | ||
stat = statname[stat] or stat |
stat = statname[stat] or stat |
||
− | if npcid < -65 or npcid > |
+ | if npcid < -65 or npcid > 666 then |
return |
return |
||
end |
end |
||
Строка 161: | Строка 161: | ||
stat = statname[stat] or stat |
stat = statname[stat] or stat |
||
− | if npcid < -65 or npcid > |
+ | if npcid < -65 or npcid > 666 then |
return |
return |
||
end |
end |
Версия от 06:06, 25 апреля 2021
Документация
См. также этот модуль на английском языке: Module:Npcinfo. В нём может содержаться более полная или подробная информация.
Документация для этого модуля отсутствует. Создайте её.
local data = mw.loadData( 'Module:npcinfo/data' ) -- loading data table.
local getArg = function(frame, key)
local value = frame.args[key]
if not value then
return nil
end
value = mw.text.trim(value)
if value == '' then
return nil
else
return value
end
end
local fields = {'DeathSound',
'HitSound',
'Opacity',
'aiStyle',
'alpha',
'behindTiles',
'banner',
'boss',
'buffImmune',
'buffImmuneAll',
'catchItem',
'coldDamage',
'damage',
'damage_e',
'damage_e_hm',
'damage_e_pp',
'damage_m',
'damage_m_hm',
'damage_m_pp',
'defense',
'defense_e',
'defense_e_hm',
'defense_e_pp',
'defense_m',
'defense_m_hm',
'defense_m_pp',
'dontCountMe',
'dontTakeDamage',
'friendly',
'height',
'housingCategory',
'internalName',
'knockBackResist',
'knockBackResist_e',
'knockBackResist_e_hm',
'knockBackResist_e_pp',
'knockBackResist_m',
'knockBackResist_m_hm',
'knockBackResist_m_pp',
'lavaImmune',
'lifeMax',
'lifeMax_e',
'lifeMax_e_hm',
'lifeMax_e_pp',
'lifeMax_m',
'lifeMax_m_hm',
'lifeMax_m_pp',
'name',
'netAlways',
'netID',
'noGravity',
'noTileCollide',
'npcSlots',
'rarity',
'scale',
'timeLeft',
'townNPC',
'trapImmune',
'type',
'value',
'value_e',
'value_e_hm',
'value_e_pp',
'value_m',
'value_m_hm',
'value_m_pp',
'width',}
local statname = {}
local clear = function (frame)
local prefix = getArg(frame, 'prefix') or '_npcinfo_'
local args = {}
for i,v in ipairs(fields) do
table.insert(args, prefix .. v)
table.insert(args, '')
end
frame:callParserFunction{ name = '#dplvar:set', args = args }
end
local p = {
getInfo = function (frame)
local npcid = tonumber(getArg(frame, 'id') or 0)
local prefix = getArg(frame, 'prefix') or '_npcinfo_'
local count = tonumber(getArg(frame, 'players') or 1)
if not npcid then
return
end
-- 76/146/408 not used.
if npcid < -65 or npcid > 666 then
clear(frame) -- reset all dpl vars
return
end
local result = {}
for k,v in pairs(data[0]) do
result[k] = v
end
for k,v in pairs(data[npcid]) do
result[k] = v
end
local args = {}
for k,v in pairs(result) do
args[#args + 1] = prefix .. k
args[#args + 1] = v
end
args[#args + 1] = prefix .. '_fields'
args[#args + 1] = table.concat(fields, ',')
args[#args + 1] = prefix
args[#args + 1] = 'InvalidNpcinfoStatName'
frame:callParserFunction{ name = '#dplvar:set', args = args }
end,
clear = clear,
getStat = function (frame)
local npcid = tonumber(getArg('id')) or tonumber(getArg(1)) or 0
local stat = getArg('stat') or getArg(2)
stat = statname[stat] or stat
if npcid < -65 or npcid > 666 then
return
end
if not stat then
return
end
return data[npcid][stat] or data[0][stat]
end,
-- for module.
stat = function(npcid, stat)
stat = statname[stat] or stat
if npcid < -65 or npcid > 666 then
return
end
if not stat then
return
end
return data[npcid][stat] or data[0][stat]
end,
}
p.getinfo = p.getInfo
p.GetInfo = p.getInfo
p.getstat = p.getStat
p.GetStat = p.getStat
return p