Dota 2 Wiki

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

了解更多

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



local p = {}
local cargo = mw.ext.cargo
local aicon = require( 'Module:Ability icon' )._main
local caching = require( 'Module:Cache' ).auto
local getArgs = require( 'Module:Arguments' ).getArgs

local default = {
  icon = 'File:Unknown icon.png',
  icon_size = '16px',
}
local i18n = {
  error = {
    missing_input = '缺少英雄或技能参数',
    no_cargo_data = '无法找到"%s"的Cargo数据',
  },
  old_abilities_page = '旧的技能',
}


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

local function cargo_query( page, ability )
  return cargo.query( 'abilities', 'image, title, type', { where='_pageName LIKE "%'..page..'" AND title="'..ability..'"', groupBy='source, title', orderBy='game' } )[1]
end

function p._main( args )
  assert(args and args[1], i18n.error.missing_input)
  
  local arg_name = ''
  local arg_source = ''
  
  if args[2] ~= nil then
  	arg_name = args[1]
  	arg_source = args[2]
  end
  if args[2] == nil then
  	local t={}
    for str in string.gmatch(args[1], "([^&]+)") do
      table.insert(t, str)
    end
    arg_source = t[1]
    arg_name = t[2]
    assert(arg_source and arg_name, i18n.error.missing_input)
  end

  -- Try to get the ability cargo data from the page.
  local page = arg_source
  local cargo_output = cargo_query( page, arg_name )
  if cargo_output == nil then
    -- If no data is found look on the /Old Abilities subpage.
    page = page .. '/' .. i18n.old_abilities_page
    cargo_output = cargo_query( page, arg_name )

    assert( cargo_output, string.format(i18n.error.no_cargo_data, arg_name) )
  end

  local icon = aicon({source = arg_source, name = arg_name}, cargo_output)

  return string.format( '<span class="image-link">[[%s|%s|link=%s|alt=|class=noprint]] [[%s#%s|%s]]</span>', icon, (args[3] or default.icon_size), page, page, arg_name, (args['text'] or cargo_output['title']) )
end


return p
Advertisement