Dota 2 Wiki

你现在尚未登录,许多功能可能无法正常使用,若已有账号,请登录,若没有,请先注册Twitch账号
目前我们有非常多的待翻译条目,你也可以看一下目前我们需要优先处理的有哪些目前我们有非常多的待翻译条目,你也可以看一下目前我们需要优先处理的有哪些英雄页面的攻略、克制和物品页面的推荐英雄、小贴士等均为社区玩家编写的,你也可以把自己的心得写上去哦。英雄页面的攻略、克制和物品页面的推荐英雄、小贴士等均为社区玩家编写的,你也可以把自己的心得写上去哦。看不懂技能的buff/debuff是哪个跟哪个?鼠标移动到名称上就能看到游戏内显示的名字和描述了。看不懂技能的buff/debuff是哪个跟哪个?鼠标移动到名称上就能看到游戏内显示的名字和描述了。目前我們沒有善於製作其他中文變體的人員,如果您善於或擁有相關技術,請幫忙補充其他中文變體的空白。目前我們沒有善於製作其他中文變體的人員,如果您善於或擁有相關技術,請幫忙補充其他中文變體的空白。

了解更多

Dota 2 Wiki
Advertisement
Dota 2 Wiki
3,956
个页面
Reality Rift icon.png
▶️ Planeshift.
该模块的文档可以在Template:Show找到。
You may be forwarded to another wiki language, in case a translation is not available.



local p = {}

local cargoQuery = mw.ext.cargo.query
local getArgs = require( 'Module:Arguments' ).getArgs

local i18n = {
  error = {
    incompleteInput = '缺少或输入不完整'
  },
  stringLowerFunc = string.lower -- Change to mw.ustring.lower on wikis using non-latin characters.
}

local function preprocessProperty( property )
  property = i18n.stringLowerFunc( property )
  property = property:gsub( ' ', '_' )
  return property
end

local function query( table, page, property )
  property = preprocessProperty( property )
  return cargoQuery( table, property, {
    where = string.format( '_pageName="%s"', page ),
    groupBy = '_pageID'
  } )[1][property]
end

function p.main( frame )
  local args = getArgs( frame, { wrappers = { 'Template:Show' } } )
  return p._main( args )
end

function p._main( args )
  assert( args[1] and args[2] and args[3], i18n.error.incompleteInput )
  local type = i18n.stringLowerFunc( args[1] )
  
  if type == 'h' then
    return query( 'heroes', args[2], args[3] )
  elseif type == 't' then
    return query( 'talents', args[2] .. '/天赋', args[3] )
  elseif type == 'i' then
    return query( 'items', args[2], args[3] )
  elseif type == 'u' then
    return query( 'units', args[2], args[3] )
  elseif type == 'c' then
    return query( 'camps', args[2], args[3] )
  elseif type == 'a' then
    assert( args[4], i18n.error.incompleteInput )

    local property = preprocessProperty( args[4] )
    if property:find( 'value%d+_aghs' ) or property:find( 'value%d+_shard' ) then
      return cargoQuery( 'abilities_aghstraits', property, {
        where = string.format( 'uid="%s&%s"', args[2], args[3] ),
        groupBy = 'uid'
      } )[1][property]
    elseif property:find( 'trait' ) or property:find( 'value' ) then
      return cargoQuery( 'abilities_traits', property, {
        where = string.format( 'uid="%s&%s"', args[2], args[3] ),
        groupBy = 'uid'
      } )[1][property]
    elseif property:find( 'buff' ) or property:find( 'debuff' ) then
      return cargoQuery( 'abilities_buffs', property, {
        where = string.format( 'uid="%s&%s"', args[2], args[3] ),
        groupBy = 'uid'
      } )[1][property]
    else
      return cargoQuery( 'abilities', property, {
        where = string.format( 'uid="%s&%s"', args[2], args[3] ),
        groupBy = 'source, title'
      } )[1][property]
    end
  end
end

return p