Module:Model path

From Team Fortress Wiki
Jump to: navigation, search

Documentation for Model path

Fancy description heer.

Adding more models

Usage

  • {{model path|Tough Stuff Muffs|Montreal Style}} produces: models/workshop/player/items/all_class/all_earmuffs_style1/all_earmuffs_style1_[class].mdl
  • {{model path|Tough Stuff Muffs|Boston Style}} produces: models/workshop/player/items/all_class/all_earmuffs_style2/all_earmuffs_style2_[class].mdl
  • {{model path|Tough Stuff Muffs}} produces: Invalid item name (tough stuff muffs): is the model path in the database page?
  • {{model path|Tough Stuff Muffs|Style 3}} produces: Invalid style and/or item name (tough stuff muffs style 3): is the model path in the database page?
  • {{model path|Dr. Whoa}} produces: models/player/items/[class]/bowtie.mdl
  • {{model path|Hatsune Miku}} produces: Invalid item name (hatsune miku): is the model path in the database page?
  • {{model path}} produces: Lua error at line 11: Error: arg1 (item name) cannot be empty.

Syntax

{{model path|<item name>|<style name>}}

<item name> unnamed parameter 1
Item name, exactly as it is written in-game.
<style name> unnamed parameter 2
Style name, exactly as it is written in-game.

local p = {}

local function findModel(data, cosmetic)
    return data[cosmetic] or nil
end

function p.main(frame)
    local modelData = mw.loadData("Module:Model path/data")

    local cosmeticParam = (frame.args[1] or ""):lower()
    assert(cosmeticParam and cosmeticParam ~= "", "Error: arg1 (item name) cannot be empty")
    local styleParam = (frame.args[2] or ""):lower()
    local searchTerm = styleParam ~= "" and (cosmeticParam .. ' ' .. styleParam) or cosmeticParam

    local cosmeticData = findModel(modelData, searchTerm)
    if not cosmeticData then
        if styleParam ~= "" then
            return '[[Category:Invalid or missing model path]]<b>Invalid style and/or item name (' .. searchTerm .. '): is the model path in the database page?</b>'
        end

        return '[[Category:Invalid or missing model path]]<b>Invalid item name (' .. cosmeticParam .. '): is the model path in the database page?</b>'
    end

    return tostring(cosmeticData)
end

return p