Module:MatchDay: Difference between revisions
From eSportsAmaze
More actions
Esportsamaze (talk | contribs) No edit summary |
Esportsamaze (talk | contribs) No edit summary |
||
| Line 15: | Line 15: | ||
tournament = parts[3] | tournament = parts[3] | ||
else | else | ||
-- Fallback to the base page name | -- Fallback to the base page name | ||
tournament = mw.title.getCurrentTitle().baseText | tournament = mw.title.getCurrentTitle().baseText | ||
end | end | ||
| Line 27: | Line 27: | ||
-- 1. Look up the Game Type from Tournaments Table | -- 1. Look up the Game Type from Tournaments Table | ||
local game = "BGMI" -- Default fallback | local game = "BGMI" -- Default fallback | ||
local match_type = "BR" | local match_type = "BR" -- Default format | ||
if cargo and cargo.query then | if cargo and cargo.query then | ||
-- Match exact tournament name to find the game | -- Match exact tournament name to find the game | ||
local tData = cargo.query("Tournaments", "game", { where = "name='" .. tournament:gsub("'", "\\'") .. "'", limit = 1 }) | local tData = cargo.query("Tournaments", "game", { where = "name='" .. tournament:gsub("'", "\\'") .. "'", limit = 1 }) | ||
if tData and #tData > 0 and tData[1].game then | if tData and #tData > 0 and tData[1].game then | ||
game = tData[1].game | game = tData[1].game | ||
local gLower = game:lower() | local gLower = game:lower() | ||
match_type = " | -- THE EWC FUTURE-PROOF DICTIONARY | ||
-- List of Head-to-Head (Team vs Team / 1v1) Games | |||
local vs_games = { | |||
"pokemon", "mlbb", "mobile legends", "honor of kings", "hok", | |||
"league of legends", "lol", "dota", "counter-strike", "cs2", | |||
"valorant", "rainbow six", "r6", "overwatch", "ow2", "rocket league", | |||
"ea sports fc", "fifa", "street fighter", "tekken", "fatal fury", | |||
"starcraft", "crossfire", "chess", "black ops", "modern warfare" | |||
} | |||
-- Check if the game matches anything in the VS dictionary | |||
for _, v in ipairs(vs_games) do | |||
if gLower:find(v) then | |||
match_type = "VS" | |||
break | |||
end | |||
end | |||
-- Explicitly define BR/Lobby games (Just in case, though it defaults to BR) | |||
local br_games = { | |||
"bgmi", "pubg", "free fire", "apex", "warzone", "fortnite", | |||
"teamfight tactics", "tft", "rennsport", "trackmania" | |||
} | |||
for _, b in ipairs(br_games) do | |||
if gLower:find(b) then | |||
match_type = "BR" | |||
break | |||
end | |||
end | end | ||
end | end | ||
| Line 48: | Line 77: | ||
local match = { time = mTime } | local match = { time = mTime } | ||
-- If Battle Royale | -- If Battle Royale / FFA Lobby | ||
if match_type == "BR" then | if match_type == "BR" then | ||
match.map = args['m'..i..'_map'] or "TBD" | match.map = args['m'..i..'_map'] or "TBD" | ||
match.group = args['m'..i..'_group'] or "" | match.group = args['m'..i..'_group'] or "" | ||
-- If MOBA | -- If Head-to-Head (MOBA, FPS, Fighting, Sports) | ||
else | else | ||
match.t1 = args['m'..i..'_t1'] or "TBD" | match.t1 = args['m'..i..'_t1'] or "TBD" | ||
| Line 77: | Line 106: | ||
end | end | ||
return "<div style='display:none;'>Schedule saved for " .. date .. " (" .. match_type .. ")</div>" | return "<div style='display:none;'>Schedule saved for " .. date .. " (" .. match_type .. " Format)</div>" | ||
end | end | ||
return p | return p | ||
Revision as of 01:12, 23 February 2026
Documentation for this module may be created at Module:MatchDay/doc
local p = {}
local cargo = mw.ext.cargo
function p.store(frame)
local args = frame:getParent().args
-- SMART TOURNAMENT NAME EXTRACTION
local pageTitle = mw.title.getCurrentTitle().text
local tournament = args.tournament
if not tournament or tournament == "" then
local parts = mw.text.split(pageTitle, '/')
-- If path is like "BGMI/Tournaments/BGIS_2026/Matches", grab the 3rd part
if parts[2] == "Tournaments" and parts[3] then
tournament = parts[3]
else
-- Fallback to the base page name
tournament = mw.title.getCurrentTitle().baseText
end
end
local date = args.date or ""
local stage = args.stage or ""
if date == "" then return "Error: Date is required." end
-- 1. Look up the Game Type from Tournaments Table
local game = "BGMI" -- Default fallback
local match_type = "BR" -- Default format
if cargo and cargo.query then
-- Match exact tournament name to find the game
local tData = cargo.query("Tournaments", "game", { where = "name='" .. tournament:gsub("'", "\\'") .. "'", limit = 1 })
if tData and #tData > 0 and tData[1].game then
game = tData[1].game
local gLower = game:lower()
-- THE EWC FUTURE-PROOF DICTIONARY
-- List of Head-to-Head (Team vs Team / 1v1) Games
local vs_games = {
"pokemon", "mlbb", "mobile legends", "honor of kings", "hok",
"league of legends", "lol", "dota", "counter-strike", "cs2",
"valorant", "rainbow six", "r6", "overwatch", "ow2", "rocket league",
"ea sports fc", "fifa", "street fighter", "tekken", "fatal fury",
"starcraft", "crossfire", "chess", "black ops", "modern warfare"
}
-- Check if the game matches anything in the VS dictionary
for _, v in ipairs(vs_games) do
if gLower:find(v) then
match_type = "VS"
break
end
end
-- Explicitly define BR/Lobby games (Just in case, though it defaults to BR)
local br_games = {
"bgmi", "pubg", "free fire", "apex", "warzone", "fortnite",
"teamfight tactics", "tft", "rennsport", "trackmania"
}
for _, b in ipairs(br_games) do
if gLower:find(b) then
match_type = "BR"
break
end
end
end
end
-- 2. Build the Match Data JSON
local matches = {}
for i = 1, 15 do
local mTime = args['m'..i..'_time']
if mTime and mTime ~= "" then
local match = { time = mTime }
-- If Battle Royale / FFA Lobby
if match_type == "BR" then
match.map = args['m'..i..'_map'] or "TBD"
match.group = args['m'..i..'_group'] or ""
-- If Head-to-Head (MOBA, FPS, Fighting, Sports)
else
match.t1 = args['m'..i..'_t1'] or "TBD"
match.t2 = args['m'..i..'_t2'] or "TBD"
match.group = args['m'..i..'_group'] or ""
end
table.insert(matches, match)
end
end
local json_data = mw.text.jsonEncode(matches)
-- 3. Store in Cargo
if cargo and cargo.store then
cargo.store("Tournament_Schedule", {
tournament = tournament,
game = game,
match_type = match_type,
date = date,
stage = stage,
day_data = json_data
})
end
return "<div style='display:none;'>Schedule saved for " .. date .. " (" .. match_type .. " Format)</div>"
end
return p