<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AMmgsection</id>
	<title>Module:Mmgsection - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AMmgsection"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Mmgsection&amp;action=history"/>
	<updated>2026-04-27T09:22:14Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:Mmgsection&amp;diff=33915&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;require(&#039;strict&#039;)  local p = {} local round = require(&#039;Module:Number&#039;)._round local _coins = require(&#039;Module:Currency&#039;)._amount  -- funcs from Module:Mmgtable local function sigfig(x, p) 	local x_sign = x &lt; 0 and &#039;-1&#039; or &#039;1&#039; 	local x = math.abs(x) 	if x == 0 then 		return 0 	end 	local n = math.floor(math.log10(x)) + 1 - p 	return tonumber(x_sign) * math.pow(10,n) * round(x/math.pow(10, n), 0) end  local function autoround(x, f) 	x = tonumber(x) or 0 	local _x 	if x...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Mmgsection&amp;diff=33915&amp;oldid=prev"/>
		<updated>2024-10-15T14:35:05Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;require(&amp;#039;strict&amp;#039;)  local p = {} local round = require(&amp;#039;Module:Number&amp;#039;)._round local _coins = require(&amp;#039;Module:Currency&amp;#039;)._amount  -- funcs from &lt;a href=&quot;/w/Module:Mmgtable&quot; title=&quot;Module:Mmgtable&quot;&gt;Module:Mmgtable&lt;/a&gt; local function sigfig(x, p) 	local x_sign = x &amp;lt; 0 and &amp;#039;-1&amp;#039; or &amp;#039;1&amp;#039; 	local x = math.abs(x) 	if x == 0 then 		return 0 	end 	local n = math.floor(math.log10(x)) + 1 - p 	return tonumber(x_sign) * math.pow(10,n) * round(x/math.pow(10, n), 0) end  local function autoround(x, f) 	x = tonumber(x) or 0 	local _x 	if x...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
local round = require(&amp;#039;Module:Number&amp;#039;)._round&lt;br /&gt;
local _coins = require(&amp;#039;Module:Currency&amp;#039;)._amount&lt;br /&gt;
&lt;br /&gt;
-- funcs from [[Module:Mmgtable]]&lt;br /&gt;
local function sigfig(x, p)&lt;br /&gt;
	local x_sign = x &amp;lt; 0 and &amp;#039;-1&amp;#039; or &amp;#039;1&amp;#039;&lt;br /&gt;
	local x = math.abs(x)&lt;br /&gt;
	if x == 0 then&lt;br /&gt;
		return 0&lt;br /&gt;
	end&lt;br /&gt;
	local n = math.floor(math.log10(x)) + 1 - p&lt;br /&gt;
	return tonumber(x_sign) * math.pow(10,n) * round(x/math.pow(10, n), 0)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function autoround(x, f)&lt;br /&gt;
	x = tonumber(x) or 0&lt;br /&gt;
	local _x&lt;br /&gt;
	if x &amp;lt; 0.1 and x &amp;gt; -0.1 then&lt;br /&gt;
		_x = sigfig(x,2)&lt;br /&gt;
	elseif x &amp;gt;= 100 or x &amp;lt;= -100 then&lt;br /&gt;
		_x = round(x, 0)&lt;br /&gt;
	else&lt;br /&gt;
		_x = round(x, 2)&lt;br /&gt;
	end&lt;br /&gt;
	if f then&lt;br /&gt;
		return lang:formatNum(_x)&lt;br /&gt;
	end&lt;br /&gt;
	return _x&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function loadData(page)&lt;br /&gt;
	local query = {&lt;br /&gt;
		&amp;#039;[[Money making guide/&amp;#039; .. page .. &amp;#039;]]&amp;#039;,&lt;br /&gt;
		&amp;#039;?MMG JSON = json&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
	local t1 = os.clock()&lt;br /&gt;
	local smwData = mw.smw.ask(query)&lt;br /&gt;
	local t2 = os.clock()&lt;br /&gt;
	&lt;br /&gt;
	-- redo query for recurring&lt;br /&gt;
	if not smwData[1].json then&lt;br /&gt;
		query = {&lt;br /&gt;
			&amp;#039;[[Money making guide/&amp;#039; .. page .. &amp;#039;]]&amp;#039;,&lt;br /&gt;
			&amp;#039;?MMG recurring JSON = json&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
		t1 = os.clock()&lt;br /&gt;
		smwData = mw.smw.ask(query)&lt;br /&gt;
		t2 = os.clock()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	assert(smwData ~= nil and #smwData &amp;gt; 0, &amp;#039;SMW query failed&amp;#039;)&lt;br /&gt;
	mw.log( string.format(&amp;#039;HasMMG table SMW: entries %d, time elapsed: %.3f ms.&amp;#039;, #smwData, (t2 - t1) * 1000) )&lt;br /&gt;
	&lt;br /&gt;
	return smwData[1].json&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addtblrow(row, page, price, skill)&lt;br /&gt;
	row:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:wikitext(&amp;#039;[[Money making guide/&amp;#039; .. page .. &amp;#039;|&amp;#039; .. page .. &amp;#039;]]&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;coins&amp;#039;)&lt;br /&gt;
				:wikitext( _coins( autoround(price) , &amp;#039;nocoins&amp;#039;) )&lt;br /&gt;
				:done()&lt;br /&gt;
			:done()&lt;br /&gt;
		:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;plainlist&amp;#039;)&lt;br /&gt;
			:wikitext(&amp;#039;\n&amp;#039; .. skill)&lt;br /&gt;
			:done()&lt;br /&gt;
		:done()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local tbl = mw.html.create(&amp;#039;table&amp;#039;):addClass(&amp;#039;wikitable align-right-2&amp;#039;)&lt;br /&gt;
	local cats = &amp;#039;&amp;#039;&lt;br /&gt;
	local strplural, normalmmg, recurringmmg = false, false, false&lt;br /&gt;
	local normalrows, recurringrows = mw.html.create(&amp;#039;&amp;#039;), mw.html.create(&amp;#039;&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i,v in ipairs(args) do&lt;br /&gt;
		local mmgpagecontent = mw.title.new(&amp;#039;Money making guide/&amp;#039; .. args[i]):getContent()&lt;br /&gt;
		&lt;br /&gt;
		assert(mmgpagecontent, &amp;#039;&amp;quot;Money making guide/&amp;#039; .. args[i] .. &amp;#039;&amp;quot; does not exist&amp;#039;)&lt;br /&gt;
		local data = mw.text.jsonDecode(mw.text.decode( loadData(args[i]) ))&lt;br /&gt;
		&lt;br /&gt;
		if data.prices.default_value then&lt;br /&gt;
			if not normalmmg then&lt;br /&gt;
				normalmmg = true&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			addtblrow(normalrows, args[i], data.prices.default_value, data.skill)&lt;br /&gt;
			&lt;br /&gt;
			if string.find( mmgpagecontent, &amp;#039;Category:Obsolete money making guide&amp;#039; ) or&lt;br /&gt;
				data.prices.default_value &amp;lt;= 100000 and data.members or&lt;br /&gt;
				data.prices.default_value &amp;lt;= 20000 then&lt;br /&gt;
				cats = cats .. &amp;#039;[[Category:Pages with obsolete money making guides listed]]&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
		elseif data.prices.value then&lt;br /&gt;
			if not recurringmmg then&lt;br /&gt;
				recurringmmg = true&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			addtblrow(recurringrows, args[i], data.prices.value, data.skill)&lt;br /&gt;
			&lt;br /&gt;
			if data.prices.value &amp;lt;= 0 then&lt;br /&gt;
				cats = cats .. &amp;#039;[[Category:Pages with obsolete money making guides listed]]&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if i == 2 then&lt;br /&gt;
			strplural = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if normalmmg then&lt;br /&gt;
		tbl:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:wikitext(&amp;#039;Method&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:wikitext(&amp;#039;Hourly profit&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:wikitext(&amp;#039;Skills&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		:done()&lt;br /&gt;
		:node(normalrows)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if recurringmmg then&lt;br /&gt;
		tbl:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:wikitext(&amp;#039;Method&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:wikitext(&amp;#039;Profit per instance&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:wikitext(&amp;#039;Skills&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		:done()&lt;br /&gt;
		:node(recurringrows)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local str = string.format(&amp;#039;&amp;lt;p&amp;gt;The following [[money making guide]]%s %s available for %s:&amp;lt;/p&amp;gt;&amp;#039;,&lt;br /&gt;
		(strplural and &amp;#039;s&amp;#039; or &amp;#039;&amp;#039;),&lt;br /&gt;
		(strplural and &amp;#039;are&amp;#039; or &amp;#039;is&amp;#039;),&lt;br /&gt;
		(args.mobname or mw.title.getCurrentTitle().text or &amp;#039;where\&amp;#039;s da page name ???&amp;#039;)&lt;br /&gt;
		)&lt;br /&gt;
	&lt;br /&gt;
	return str .. tostring( tbl ) .. cats&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>