×
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
    Keine Bearbeitungszusammenfassung
     
    (10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
    Zeile 61: Zeile 61:
         ["FO76GF"] = "Gone Fission (Update)",
         ["FO76GF"] = "Gone Fission (Update)",
         ["FO76CR"] = "C.A.M.P.-Sanierung",
         ["FO76CR"] = "C.A.M.P.-Sanierung",
        ["FO76CAMP"] = "C.A.M.P.-Sanierung",
         ["FO76BS"] = "Burning Springs (Update)",
         ["FO76BS"] = "Burning Springs (Update)",
        ["FO76HL"] = "Das Hinterland",
        ["FO76BW"] = "Das Hinterland",
         ["FOBOS"] = "Fallout: Brotherhood of Steel",
         ["FOBOS"] = "Fallout: Brotherhood of Steel",
         ["FOBOS2"] = "Fallout: Brotherhood of Steel 2",
         ["FOBOS2"] = "Fallout: Brotherhood of Steel 2",
    Zeile 89: Zeile 92:
    function stitle(game)
    function stitle(game)
         local result = games[game] or game
         local result = games[game] or game
         if game == "FILM" or game == "FNVOWB" or game == "FNVLR" or game == "FO3OA" or game == "FO3TP" or game == "FOPL" 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
         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 == "FO76CAMP" or game == "FO76CR" or game == "FO76BS" or game == "FO76HL" or game == "FO76BW" then
             result = result:gsub('%s%(.*', '')
             result = result:gsub('%s%(.*', '')
         end
         end
         if game == "FOTV" or game == "FTV" then
         if game == "FOTV" or game == "FTV" then
         result = result:gsub(".*%((.*)%)", "%1")
         result = result:gsub(".*%((.*)%)", "%1")
         end
         end
    Zeile 174: Zeile 179:
    function p.kategorie(frame)
    function p.kategorie(frame)
         local result = ''
         local result = ''
         local game_list = mw.text.split(frame.args[1], "%s*,%s*")
         local game_list = mw.text.split(frame.args[1] or "", "%s*,%s*")


         if frame.args[2] then
         if frame.args[2] then
    Zeile 180: Zeile 185:
             local parentTitle = mw.title.new(frame:getParent():getTitle())
             local parentTitle = mw.title.new(frame:getParent():getTitle())


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

    Aktuelle Version vom 31. März 2026, 13:31 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",
        ["FO76CAMP"] = "C.A.M.P.-Sanierung",
        ["FO76BS"] = "Burning Springs (Update)",
        ["FO76HL"] = "Das Hinterland",
        ["FO76BW"] = "Das Hinterland",
        ["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 == "FO76CAMP" or game == "FO76CR" or game == "FO76BS" or game == "FO76HL" or game == "FO76BW" 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] or "", "%s*,%s*")
    
        if frame.args[2] then
            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
            if currTitle:isSubpageOf(parentTitle) then
                return ''
            end
                
            local ignore = {
        		none = true,
        		nein = true,
        		kein = true,
        		["-"] = true,
        		["–"] = true,
        		["—"] = true,
    		}
    		
    		local spielvorhanden = false
    			
            for _, game in ipairs(game_list) do
                local trimmed = mw.text.trim(game)
                local g = trimmed:lower()
                
        			
        		-- ignorieren, wenn Platzhalterwert
        		if trimmed ~= "" and not ignore[g] then
                    local entry = games[trimmed]
        			
        			if entry then
            			if g == "fotv" then
                            trimmed = "Fallout (Fernsehserie)"
            			end
                        result = result .. '[[Kategorie:' .. stitle(trimmed) .. ': ' .. frame.args[2] .. ']]'
                    else
                        -- Fallback: nur Hauptkategorie
                        result = result .. '[[Kategorie:' .. frame.args[2] .. ']]'
        			end
                    spielvorhanden = true
                end
            end
            
            -- Wenn kein Spiel hinzugefügt wurde, Hauptkategorie setzen
            if not spielvorhanden then
                result = '[[Kategorie:' .. frame.args[2] .. ']]'
            end
        end
    
        return result
    end
    
    return p
    
    --</nowiki>