Dota 2 Wiki

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

了解更多

Dota 2 Wiki
Advertisement

This module provides a simple way of generating an ability icon.

Usage[]

First, load the module.

local aicon = require('Module:Ability icon')

The function itself has two required and one optional argument:

  • source The abilities source.
  • name The abilities name.
  • data (Optional) Already retrieved Cargo data, to prevent unnecessary queries.

Tests[]

NoN 1 test failed.

Name Expected Actual
YesY testDefault
YesY testGivenData
NoN testItem Lua error -- 模块:Ability_icon:24: bad argument #3 to 'format' (string expected, got nil)
YesY testItemAbility
YesY testNormalAbility
YesY testRuneAbility



local en_name = {
  ["奥术"] = "Arcane",
  ["赏金"] = "Bounty",
  ["双倍伤害"] = "Double Damage",
  ["极速"] = "Haste",
  ["幻象"] = "Illusion",
  ["隐身"] = "Invisibility",
  ["恢复"] = "Regeneration"
}

local p = {}

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

local i18n = {
  error = {
    noAbilityData = '没有该技能可用的数据'
  }
}

local function getAbilityData( source, name )
  local cargoData = cargoQuery( 'abilities', 'image, type', {
    where = string.format( 'source="%s" AND title="%s"', source, name ),
    groupBy = 'source, title'
  } )[1]
  return cargoData
end

local function getItemIcon( name )
  local cargoData = cargoQuery( 'items', 'image', {
    where = string.format( '_pageName="%s"', name ),
    groupBy = '_pageID'
  } )[1]
  return cargoData.image
end

local function getRuneIcon( name )
  return string.format( 'File:Bottle (%s) icon.png', en_name[name] )
end

function p.main( frame )
  local args = getArgs( frame )
  return p._main( args )
end

function p._main( args, abilityData )
  abilityData = abilityData or getAbilityData( args.source, args.name )
  assert( abilityData, i18n.error.noAbilityData )

  local abilityType = abilityData.type
  if abilityType == 'item' then
    abilityData.image = getItemIcon( args.source )
  elseif abilityType == 'rune' then
    abilityData.image = getRuneIcon( args.name )
  end

  if abilityData.image ~= '' then
    return abilityData.image
  else
    return 'File:Unknown icon.png'
  end
end

return p
Advertisement