×
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: Zurückgesetzt
    Zeile 206: Zeile 206:


         for _, game in ipairs(game_list) do
         for _, game in ipairs(game_list) do
             local kurzel = mw.text.trim(game)
             local game = mw.text.trim(game)


             -- leer → nur Hauptkategorie
             -- leer → nur Hauptkategorie
             if kurzel == "" then
             if game == "" then
                 result = result .. '[[Kategorie:' .. frame.args[2] .. ']]'
                 result = result .. '[[Kategorie:' .. frame.args[2] .. ']]'
             else
             else
                 local g = kurzel:lower()
                 local g = game:lower()


                 if not ignore[g] then
                 if not ignore[g] then
                     if not games[kurzel] then
                     if not games[game] then
                         error("Spiel '" .. kurzel .. "' befindet sich nicht in der Spieleliste.")
                         error("Spiel '" .. game .. "' befindet sich nicht in der Spieleliste.")
                     end
                     end


                     result = result .. '[[Kategorie:'  
                     result = result .. '[[Kategorie:'  
                         .. stitle(kurzel)  
                         .. stitle(game)  
                         .. ': '  
                         .. ': '  
                         .. frame.args[2]  
                         .. frame.args[2]  

    Version vom 27. Februar 2026, 18:24 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)
        if not frame.args[2] then
            return ''
        end
    
        local result = ''
        local game_list = mw.text.split(frame.args[1] or "", "%s*,%s*")
    
        local currTitle = mw.title.getCurrentTitle()
        local parentTitle = mw.title.new(frame:getParent():getTitle())
    
        -- Vorlage kategorisiert sich selbst
        if parentTitle.prefixedText == currTitle.prefixedText then
            return "[[Kategorie:Vorlagen mit Autokategorisierung]]"
        end
    
        -- Keine Kategorisierung auf Unterseiten der Vorlage
        if 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)
    
            -- leer → nur Hauptkategorie
            if game == "" then
                result = result .. '[[Kategorie:' .. frame.args[2] .. ']]'
            else
                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) 
                        .. ': ' 
                        .. frame.args[2] 
                        .. ']]'
                end
            end
        end
    
        return result
    end
    
    return p
    
    --</nowiki>