<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-IN">
	<id>https://esportsamaze.in/index.php?action=history&amp;feed=atom&amp;title=Module%3AMatchStats</id>
	<title>Module:MatchStats - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://esportsamaze.in/index.php?action=history&amp;feed=atom&amp;title=Module%3AMatchStats"/>
	<link rel="alternate" type="text/html" href="https://esportsamaze.in/index.php?title=Module:MatchStats&amp;action=history"/>
	<updated>2026-05-26T02:03:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://esportsamaze.in/index.php?title=Module:MatchStats&amp;diff=4850&amp;oldid=prev</id>
		<title>Esportsamaze at 21:21, 18 May 2026</title>
		<link rel="alternate" type="text/html" href="https://esportsamaze.in/index.php?title=Module:MatchStats&amp;diff=4850&amp;oldid=prev"/>
		<updated>2026-05-18T21:21:42Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-IN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 02:51, 19 May 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l88&quot;&gt;Line 88:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 88:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 storeData.match_played    = tonumber(rowData.mp) or 1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 storeData.match_played    = tonumber(rowData.mp) or 1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 storeData.player_elims    = tonumber(rowData.player_elims) or 0&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 storeData.player_elims    = tonumber(rowData.player_elims) or 0&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                storeData.mvp             = tonumber(rowData.mvp) or 0     &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 storeData.team_rank       = tonumber(rowData.team_rank)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 storeData.team_rank       = tonumber(rowData.team_rank)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 storeData.team_wwcd       = tonumber(rowData.team_wwcd) or 0&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 storeData.team_wwcd       = tonumber(rowData.team_wwcd) or 0&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Esportsamaze</name></author>
	</entry>
	<entry>
		<id>https://esportsamaze.in/index.php?title=Module:MatchStats&amp;diff=4831&amp;oldid=prev</id>
		<title>Esportsamaze: Created page with &quot;local p = {} local cargo = mw.ext.cargo  local function clean(s)     if not s then return nil end     local res = s:gsub(&quot;^%s*(.-)%s*$&quot;, &quot;%1&quot;)     return res == &quot;&quot; and nil or res end  -- Helper to parse the key=value string line (e.g. &quot;team=GodLike, rank=1, elims=5&quot;) local function parseLine(line)     local data = {}     -- Split by comma     for pair in string.gmatch(line, &quot;[^,]+&quot;) do         -- Split by equals sign         local key, val = string.match(pair, &quot;^%s*([^=]...&quot;</title>
		<link rel="alternate" type="text/html" href="https://esportsamaze.in/index.php?title=Module:MatchStats&amp;diff=4831&amp;oldid=prev"/>
		<updated>2026-05-18T20:14:32Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local p = {} local cargo = mw.ext.cargo  local function clean(s)     if not s then return nil end     local res = s:gsub(&amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;)     return res == &amp;quot;&amp;quot; and nil or res end  -- Helper to parse the key=value string line (e.g. &amp;quot;team=GodLike, rank=1, elims=5&amp;quot;) local function parseLine(line)     local data = {}     -- Split by comma     for pair in string.gmatch(line, &amp;quot;[^,]+&amp;quot;) do         -- Split by equals sign         local key, val = string.match(pair, &amp;quot;^%s*([^=]...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local cargo = mw.ext.cargo&lt;br /&gt;
&lt;br /&gt;
local function clean(s)&lt;br /&gt;
    if not s then return nil end&lt;br /&gt;
    local res = s:gsub(&amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
    return res == &amp;quot;&amp;quot; and nil or res&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Helper to parse the key=value string line (e.g. &amp;quot;team=GodLike, rank=1, elims=5&amp;quot;)&lt;br /&gt;
local function parseLine(line)&lt;br /&gt;
    local data = {}&lt;br /&gt;
    -- Split by comma&lt;br /&gt;
    for pair in string.gmatch(line, &amp;quot;[^,]+&amp;quot;) do&lt;br /&gt;
        -- Split by equals sign&lt;br /&gt;
        local key, val = string.match(pair, &amp;quot;^%s*([^=]+)%s*=%s*(.-)%s*$&amp;quot;)&lt;br /&gt;
        if key and val then&lt;br /&gt;
            data[string.lower(key)] = val&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.store(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local statType = clean(args.type) or &amp;quot;team&amp;quot;&lt;br /&gt;
    statType = string.lower(statType)&lt;br /&gt;
    &lt;br /&gt;
    -- Global Metadata (Common to all rows in this match)&lt;br /&gt;
    local meta = {&lt;br /&gt;
        tournament       = clean(args.tournament),&lt;br /&gt;
        tournament_type  = clean(args.tournament_type),&lt;br /&gt;
        stage            = clean(args.stage),&lt;br /&gt;
        group_name       = clean(args.group),&lt;br /&gt;
        map              = clean(args.map),&lt;br /&gt;
        match_type       = clean(args.match_type),&lt;br /&gt;
        tournament_day   = clean(args.tournament_day),&lt;br /&gt;
        date             = clean(args.date),&lt;br /&gt;
        time             = clean(args.time),&lt;br /&gt;
        number_of_teams  = clean(args.number_of_teams),&lt;br /&gt;
        number_of_players= clean(args.number_of_players)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    local tableName = (statType == &amp;quot;player&amp;quot;) and &amp;quot;MatchStats_Player&amp;quot; or &amp;quot;MatchStats_Team&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    -- Process each numbered line&lt;br /&gt;
    for i = 1, 100 do&lt;br /&gt;
        local line = args[tostring(i)]&lt;br /&gt;
        if line and clean(line) then&lt;br /&gt;
            local rowData = parseLine(line)&lt;br /&gt;
            &lt;br /&gt;
            local storeData = {&lt;br /&gt;
                tournament       = meta.tournament,&lt;br /&gt;
                tournament_type  = meta.tournament_type,&lt;br /&gt;
                stage            = meta.stage,&lt;br /&gt;
                group_name       = meta.group_name,&lt;br /&gt;
                map              = meta.map,&lt;br /&gt;
                match_type       = meta.match_type,&lt;br /&gt;
                tournament_day   = meta.tournament_day,&lt;br /&gt;
                match_date       = meta.date,&lt;br /&gt;
                match_time       = meta.time&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            if statType == &amp;quot;team&amp;quot; then&lt;br /&gt;
                storeData.number_of_teams = meta.number_of_teams&lt;br /&gt;
                storeData.team            = rowData.team&lt;br /&gt;
                storeData.short_name      = rowData.short&lt;br /&gt;
                storeData.match_played    = tonumber(rowData.mp) or 1&lt;br /&gt;
                storeData.rank            = tonumber(rowData.rank)&lt;br /&gt;
                storeData.wwcd            = tonumber(rowData.wwcd) or 0&lt;br /&gt;
                storeData.place_pts       = tonumber(rowData.place) or 0&lt;br /&gt;
                storeData.elim_pts        = tonumber(rowData.elims) or 0&lt;br /&gt;
                storeData.bonus_pts       = tonumber(rowData.bonus) or 0&lt;br /&gt;
                &lt;br /&gt;
                -- Auto calculate total if not provided&lt;br /&gt;
                if rowData.total then&lt;br /&gt;
                    storeData.total_pts = tonumber(rowData.total)&lt;br /&gt;
                else&lt;br /&gt;
                    storeData.total_pts = storeData.place_pts + storeData.elim_pts + storeData.bonus_pts&lt;br /&gt;
                end&lt;br /&gt;
                &lt;br /&gt;
            elseif statType == &amp;quot;player&amp;quot; then&lt;br /&gt;
                storeData.number_of_players = meta.number_of_players&lt;br /&gt;
                storeData.player          = rowData.player&lt;br /&gt;
                storeData.team            = rowData.team&lt;br /&gt;
                storeData.short_name      = rowData.short&lt;br /&gt;
                storeData.match_played    = tonumber(rowData.mp) or 1&lt;br /&gt;
                storeData.player_elims    = tonumber(rowData.player_elims) or 0&lt;br /&gt;
                storeData.team_rank       = tonumber(rowData.team_rank)&lt;br /&gt;
                storeData.team_wwcd       = tonumber(rowData.team_wwcd) or 0&lt;br /&gt;
                storeData.team_place      = tonumber(rowData.team_place) or 0&lt;br /&gt;
                storeData.team_elims      = tonumber(rowData.team_elims) or 0&lt;br /&gt;
                &lt;br /&gt;
                if rowData.team_total then&lt;br /&gt;
                    storeData.team_total = tonumber(rowData.team_total)&lt;br /&gt;
                else&lt;br /&gt;
                    storeData.team_total = storeData.team_place + storeData.team_elims&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            &lt;br /&gt;
            -- Optional Shared Stats (Combat/Utility)&lt;br /&gt;
            storeData.damage       = tonumber(rowData.damage)&lt;br /&gt;
            storeData.survival     = rowData.survival&lt;br /&gt;
            storeData.healing      = tonumber(rowData.healing)&lt;br /&gt;
            storeData.rdamage      = tonumber(rowData.rdamage)&lt;br /&gt;
            storeData.headshots    = tonumber(rowData.headshots)&lt;br /&gt;
            storeData.assists      = tonumber(rowData.assists)&lt;br /&gt;
            storeData.knockouts    = tonumber(rowData.knockouts)&lt;br /&gt;
            storeData.long_elim    = tonumber(rowData.long_elim)&lt;br /&gt;
            storeData.vehicle_elim = tonumber(rowData.vehicle_elim)&lt;br /&gt;
            storeData.grenade_elim = tonumber(rowData.grenade_elim)&lt;br /&gt;
            storeData.smokes       = tonumber(rowData.smokes)&lt;br /&gt;
            storeData.grenades     = tonumber(rowData.grenades)&lt;br /&gt;
            storeData.molotovs     = tonumber(rowData.molotovs)&lt;br /&gt;
            storeData.flash        = tonumber(rowData.flash)&lt;br /&gt;
            storeData.utilities    = tonumber(rowData.utilities)&lt;br /&gt;
            storeData.airdrops     = tonumber(rowData.airdrops)&lt;br /&gt;
            storeData.rescues      = tonumber(rowData.rescues)&lt;br /&gt;
            storeData.dist_drove   = tonumber(rowData.dist_drove)&lt;br /&gt;
            storeData.dist_walk    = tonumber(rowData.dist_walk)&lt;br /&gt;
            storeData.total_dist   = tonumber(rowData.total_dist)&lt;br /&gt;
            &lt;br /&gt;
            -- Store to Cargo&lt;br /&gt;
            if cargo and cargo.store then&lt;br /&gt;
                cargo.store(tableName, storeData)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return &amp;quot;&amp;lt;div style=&amp;#039;display:none;&amp;#039;&amp;gt;Match Stats Stored Successfully.&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Esportsamaze</name></author>
	</entry>
</feed>