×
Einen neuen Artikel erstellen
Schreibe den Seitennamen hierhin:
Wir haben derzeit 9.333 Artikel auf VAULTPEDIA. Gib deinen Artikelnamen oberhalb von oder klicke auf einen der unten stehenden Titel und beginne zu schreiben! ein



    VAULTPEDIA
    9.333Artikel

    Modul:Games: Unterschied zwischen den Versionen

    VAULTPEDIA.DE ist seit dem 02.02.2026 öffentlich zugänglich.

    Da es sich um ein frisch migriertes Wiki handelt, können vereinzelt noch Datenbank-, Seiten- oder Designfehler auftreten.

    Tritt unserem Discord bei, um Fehler zu melden oder direkt mit dem Team in Kontakt zu treten.

    Keine Bearbeitungszusammenfassung
    Markierung: Zurückgesetzt
    Keine Bearbeitungszusammenfassung
    Markierung: Manuelle Zurücksetzung
    Zeile 175: Zeile 175:
    -- ====================
    -- ====================
    function p.kategorie(frame)
    function p.kategorie(frame)
        local kategorie = frame.args[2]
        if not kategorie or kategorie == "" then
            return ''
        end
       
        local game = frame.args[1] or ""
       
        -- Wenn kein game gesetzt ist → nur Hauptkategorie
        if mw.text.trim(game) == "" then
            return '[[Kategorie:' .. kategorie .. ']]'
        end
         local result = ''
         local result = ''
         local game_list = mw.text.split(game, "%s*,%s*")
         local game_list = mw.text.split(frame.args[1], "%s*,%s*")


         local currTitle = mw.title.getCurrentTitle()
         if frame.args[2] then
        local parentFrame = frame:getParent()
            local currTitle = mw.title.getCurrentTitle()
        local parentTitle = parentFrame and mw.title.new(parentFrame:getTitle())
            local parentTitle = mw.title.new(frame:getParent():getTitle())


        -- Vorlage kategorisiert sich selbst
            if parentTitle.prefixedText == currTitle.prefixedText then
        if parentTitle and parentTitle.prefixedText == currTitle.prefixedText then
                result = "[[Kategorie:Vorlagen mit Autokategorisierung]]"
            return "[[Kategorie:Vorlagen mit Autokategorisierung]]"
            elseif not currTitle:isSubpageOf(parentTitle) then
            -- Wörter/Werte, bei denen KEINE Kategorie erzeugt werden soll
    local ignore = {
        none = true,
        nein = true,
        kein = true,
        ["-"] = true,
        ["–"] = true,
        ["—"] = true,
    }
            for _, game in ipairs(game_list) do
            -- trimmen + normalisieren
        local g = mw.text.trim(game):lower()
       
        -- ignorieren, wenn Platzhalterwert
        if not ignore[g] then
            local entry = games[game]
            if not entry then
                error("Spiel '" .. game .. "' befindet sich nicht in der Spieleliste.")
            end
           
            if g == "fotv" then
            game = "Fallout (Fernsehserie)"
        end
           
            result = result .. '[[Kategorie:' .. stitle(game) .. ': ' .. frame.args[2] .. ']]'
                    end
                end
            end
         end
         end


        -- Keine Kategorisierung auf Unterseiten der Vorlage
        if parentTitle and currTitle:isSubpageOf(parentTitle) then
            return ''
        end
        -- Wörter/Werte, bei denen KEINE Kategorie erzeugt werden soll
        local ignore = {
            none = true,
            nein = true,
            kein = true,
            ["-"] = true,
            ["–"] = true,
            ["—"] = true,
        }
        for _, game in ipairs(game_list) do
            local game = mw.text.trim(game)
            local g = game:lower()
           
        if not ignore[g] then
                if not games[game] then
                    error("Spiel '" .. game .. "' befindet sich nicht in der Spieleliste.")
                end
               
                result = result .. '[[Kategorie:'
                    .. stitle(game)
                    .. ': '
                    .. category
                    .. ']]'
                end
        end
         return result
         return result
    end
    end

    Version vom 27. Februar 2026, 18:41 Uhr

    Die Dokumentation für dieses Modul kann unter Modul:Games/Doku erstellt werden

    --<nowiki>
    
    local p = {}
    
    local games = {
        ["AR"] = "All Roads",
        ["D20"] = "Fallout Pen & Paper d20",
        ["FB"] = "Fallout Bible",
        ["FBG"] = "Fallout: The Board Game",
        ["FBGNC"] = "Fallout: New California",
        ["FILM"] = "Fallout (Film)",
        ["FNV"] = "Fallout: New Vegas",
        ["FNVGRA"] = "Gun Runners' Arsenal",
        ["FNVDM"] = "Dead Money",
        ["FNVHH"] = "Honest Hearts",
        ["FNVOWB"] = "Old World Blues (Add-On)",
        ["FNVLR"] = "Lonesome Road (Add-On)",
        ["FO1"] = "Fallout",
        ["FO2"] = "Fallout 2",
        ["FO3"] = "Fallout 3",
        ["FO3OA"] = "Operation: Anchorage (Add-On)",
        ["FO3TP"] = "The Pitt (Add-On)",
        ["FO3BS"] = "Broken Steel",
        ["FO3PL"] = "Point Lookout (Add-On)",
        ["FO3MZ"] = "Mothership Zeta (Add-On)",
        ["FO4"] = "Fallout 4",
        ["FO4AUT"] = "Automatron (Add-On)",
        ["FO4WW"] = "Wasteland Workshop",
        ["FO4FH"] = "Far Harbor (Add-On)",
        ["FO4CW"] = "Contraptions Workshop",
        ["FO4VW"] = "Vault-Tec Workshop",
        ["FO4NW"] = "Nuka-World (Add-On)",
        ["FO4VR"] = "Fallout 4 VR",
        ["FO4CC"] = "Creation Club",
        ["FO76"] = "Fallout 76",
        ["FO76WA"] = "Wild Appalachia",
        ["FO76NW"] = "Nuclear Winter",
        ["FO76WL"] = "Wastelanders",
        ["FO76LR"] = "Das legendäre Rennen (Update)",
        ["FO76OW"] = "Ein Ödland für alle",
        ["FO76FS"] = "Stählerne Dämmerung",
        ["FO76SD"] = "Stählerne Dämmerung",
        ["FO76LL"] = "Geladen und entsichert",
        ["FO76SR"] = "Stählerne Herrschaft",
        ["FO76FW"] = "Fallout Worlds (Update)",
        ["FO76IB"] = "Angreifer aus dem All (Update)",
        ["FO76NM"] = "Nacht der Motte",
        ["FO76TM"] = "Härteprüfung (Update)",
        ["FO76TP"] = "Expeditionen: The Pitt",
        ["FO76NT"] = "Nuka-World on Tour (Update)",
        ["FO76NWOT"] = "Nuka-World on Tour (Update)",
        ["FO76MI"] = "Mutations-Invasion",
        ["FO76OB"] = "Wenn die Sterne günstig stehen",
        ["FO76AC"] = "Expeditionen: Atlantic City",
        ["FO76BP"] = "AC Boardwalk Paradise",
        ["FO76AP"] = "AC America's Playground",
        ["FO76SV"] = "Skyline Valley (Update)",
        ["FO76MZ"] = "Meilenstein Null (Update)",
        ["FO76GD"] = "Strahlende Tiefen (Update)",
        ["FO76GW"] = "Der innere Ghul",
        ["FO76GF"] = "Gone Fission (Update)",
        ["FO76CR"] = "C.A.M.P.-Sanierung",
        ["FO76BS"] = "Burning Springs (Update)",
        ["FOBOS"] = "Fallout: Brotherhood of Steel",
        ["FOBOS2"] = "Fallout: Brotherhood of Steel 2",
        ["FORPG"] = "Fallout: Das Rollenspiel",
        ["2D20"] = "Fallout: Das Rollenspiel",
        ["FORPGWOA"] = "Winter des Atoms",
        ["FOS"] = "Fallout Shelter",
        ["FOSO"] = "Fallout Shelter Online",
        ["FOT"] = "Fallout Tactics",
        ["FOT2"] = "Fallout Tactics 2",
        ["FOTV"] = "Fallout (Fernsehserie)",
        ["FTV"] = "Fallout (Fernsehserie)",
        ["FOW"] = "Fallout: Warfare",
        ["FOX"] = "Fallout Extreme",
        ["FWW"] = "Fallout: Wasteland Warfare",
        ["FOWW"] = "Fallout: Wasteland Warfare",
        ["FOF"] = "Fallout: Factions",
        ["JES"] = "J.E. Sawyer's Fallout RPG",
        ["LH"] = "Lionheart",
        ["PA"] = "One Man, and a Crate of Puppets",
        ["PV13"] = "Project V13",
        ["TAR"] = "Project V13",
        ["VB"] = "Van Buren",
    }
    
    -- look up short title without disambig
    function stitle(game)
        local result = games[game] or game
        if game == "FILM" or game == "FNVOWB" or game == "FNVLR" or game == "FO3OA" or game == "FO3TP" or game == "FO3PL" or game == "FO3MZ" or game == "FO4AUT" or game == "FO4FH" or game == "FO4NW" or game == "FO76LR" or game == "FO76FW" or game == "FO76IB" or game == "FO76NT" or game == "FO76TM" or game == "FO76NWOT" or game == "FO76SV" or game == "FO76MZ" or game == "FO76GD" or game == "FO76GW" or game == "FO76GF" or game == "FO76CR" or game == "FO76BS" then
            result = result:gsub('%s%(.*', '')
        end
    	
        if game == "FOTV" or game == "FTV" then
    	
        	result = result:gsub(".*%((.*)%)", "%1")
        end
        return result
    end
    
    -- ====================
    -- Diese Funktion, links, ist für gewöhnliche Links innerhalb des 
    -- Inhalts einer Infobox gedacht. Wenn du nur [[Fallout 4]] 
    -- zurückgeben möchtest, dann verwende die Syntax:
    --        {{#invoke:Games|links|{{{games|}}}}}
    -- Die Angabe eines zweiten Arguments gibt den Text kursiv zurück:
    --        {{#invoke:Games|links|{{{games|}}}|1}}
    -- ====================
    
    function p.links(frame)
        local result = ''
     
        local game_list = mw.text.split(frame.args[1], "%s*,%s*") 
        for n, game in ipairs(game_list) do
            if game == "" or game == "-" or game:lower() == "none" or game:lower() == "kein" then
                result = ''
            else
                result = result .. '[[' .. games[game] .. '|' .. stitle(game) .. ']]'
                if n ~= #game_list then
                    result = result .. '<br/>'
                end
            end
        end
     
        if (frame.args[2] and result ~= '') then
            return "''" .. result .. "''"
        else
          return result
        end
    end
    
    -- ====================
    -- Diese Funktion, title, generiert generisch Links für den Supertitel.
    -- Entweder nur zur Spielseite selbst oder zu einer spezifischeren Seite.
    --
    -- {{#invoke:Games|title|FO4}} gibt einfach [[Fallout 4|Fallout 4]]
    -- {{#invoke:Games|title|FO4|Waffen}} ergibt [[Waffen (Fallout 4)|Fallout 4]]
    -- {{#invoke:Games|title|FO4|Waffen|Waffe}} ergibt [[Waffen (Fallout 4)|Fallout 4: Waffe]]
    -- ====================
    
    function p.title(frame)
        local result = ''
     
        local game_list = mw.text.split(frame.args[1], "%s*,%s*") 
        for n, game in ipairs(game_list) do
            if game == "-" or game:lower() == "none" or game:lower() == "kein" then
                result = 'erwähnt' 
                if frame.args[3] then 
                    result = frame.args[3] .. ' (' .. result .. ')'
                end
            else
                local link
                if frame.args[2] then
                    link = frame.args[2] .. ' (' .. stitle(game)  .. ')'
                else
                    link = games[game]
                end
                local text = stitle(game)
                if frame.args[3] and n == #game_list then
                    text = text .. ': ' .. frame.args[3]
                end 
                result = result .. '[[' .. link .. '|' .. text .. ']]'
                if n ~= #game_list then
                    result = result .. ' / '
                end
            end
        end
     
        return result
    end
    
    -- ====================
    -- Kategorie: Gibt den Kategorie-Wikicode zurück, außer er befindet sich auf der Seite, die ihn aufgerufen hat.
    -- ====================
    function p.kategorie(frame)
        local result = ''
        local game_list = mw.text.split(frame.args[1], "%s*,%s*")
    
        if frame.args[2] then
            local currTitle = mw.title.getCurrentTitle()
            local parentTitle = mw.title.new(frame:getParent():getTitle())
    
            if parentTitle.prefixedText == currTitle.prefixedText then
                result = "[[Kategorie:Vorlagen mit Autokategorisierung]]"
            elseif not currTitle:isSubpageOf(parentTitle) then
            	-- Wörter/Werte, bei denen KEINE Kategorie erzeugt werden soll
    			local ignore = {
        			none = true,
        			nein = true,
        			kein = true,
        			["-"] = true,
        			["–"] = true,
        			["—"] = true,
    			}
    			
            	for _, game in ipairs(game_list) do
            		-- trimmen + normalisieren
        			local g = mw.text.trim(game):lower()
        			
        			-- ignorieren, wenn Platzhalterwert
        			if not ignore[g] then
            			local entry = games[game]
            			if not entry then
                			error("Spiel '" .. game .. "' befindet sich nicht in der Spieleliste.")
            			end
            			
            			if g == "fotv" then
            				game = "Fallout (Fernsehserie)"
        				end
            			
            			result = result .. '[[Kategorie:' .. stitle(game) .. ': ' .. frame.args[2] .. ']]'
                    end
                end
            end
        end
    
        return result
    end
    
    return p
    
    --</nowiki>