<?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%3AShopPrice</id>
	<title>Module:ShopPrice - 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%3AShopPrice"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:ShopPrice&amp;action=history"/>
	<updated>2026-05-05T16:27:53Z</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:ShopPrice&amp;diff=35117&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;-- &lt;pre&gt; local p = {}  local commas = require(&quot;Module:Addcommas&quot;)._add local params = require(&#039;Module:Paramtest&#039;) local currencyImage = require(&quot;Module:Currency Image&quot;) local purge = require(&quot;Module:Purge&quot;)._purge  function p.getLowestPrice(item)     local item = item.args[1]         mw.log(string.format(&#039;Searching for shops that sell: %s&#039;, item)) 	     -- Get parsed smw data     local data = p.getData(item)      -- Create the header of the output     local priceData = {...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:ShopPrice&amp;diff=35117&amp;oldid=prev"/>
		<updated>2024-10-16T23:13:01Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;-- &amp;lt;pre&amp;gt; local p = {}  local commas = require(&amp;quot;Module:Addcommas&amp;quot;)._add local params = require(&amp;#039;Module:Paramtest&amp;#039;) local currencyImage = require(&amp;quot;Module:Currency Image&amp;quot;) local purge = require(&amp;quot;Module:Purge&amp;quot;)._purge  function p.getLowestPrice(item)     local item = item.args[1]         mw.log(string.format(&amp;#039;Searching for shops that sell: %s&amp;#039;, item)) 	     -- Get parsed smw data     local data = p.getData(item)      -- Create the header of the output     local priceData = {...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- &amp;lt;pre&amp;gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local commas = require(&amp;quot;Module:Addcommas&amp;quot;)._add&lt;br /&gt;
local params = require(&amp;#039;Module:Paramtest&amp;#039;)&lt;br /&gt;
local currencyImage = require(&amp;quot;Module:Currency Image&amp;quot;)&lt;br /&gt;
local purge = require(&amp;quot;Module:Purge&amp;quot;)._purge&lt;br /&gt;
&lt;br /&gt;
function p.getLowestPrice(item)&lt;br /&gt;
    local item = item.args[1]&lt;br /&gt;
   &lt;br /&gt;
    mw.log(string.format(&amp;#039;Searching for shops that sell: %s&amp;#039;, item))&lt;br /&gt;
	&lt;br /&gt;
    -- Get parsed smw data&lt;br /&gt;
    local data = p.getData(item)&lt;br /&gt;
&lt;br /&gt;
    -- Create the header of the output&lt;br /&gt;
    local priceData = {}&lt;br /&gt;
&lt;br /&gt;
    -- Create the rows for the output table&lt;br /&gt;
    for _, shop in ipairs(data) do&lt;br /&gt;
    	if string.match(shop.currency, &amp;quot;Coins&amp;quot;) then&lt;br /&gt;
            table.insert(priceData, tonumber(shop.sellvalue))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
	&lt;br /&gt;
	table.sort(priceData)&lt;br /&gt;
	&lt;br /&gt;
	if priceData[1] == nil then&lt;br /&gt;
		return nil&lt;br /&gt;
	else&lt;br /&gt;
    	return priceData[1]&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getData(itemName)&lt;br /&gt;
    -- Query smw&lt;br /&gt;
    local q = {&lt;br /&gt;
        &amp;#039;[[Sold item::&amp;#039;..itemName..&amp;#039;]]&amp;#039;,&lt;br /&gt;
        &amp;#039;?Store sell price&amp;#039;,&lt;br /&gt;
        &amp;#039;?Store currency&amp;#039;,&lt;br /&gt;
        offset = 0,&lt;br /&gt;
        limit = 500,&lt;br /&gt;
    }&lt;br /&gt;
    local t1 = os.clock()&lt;br /&gt;
    local smwdata = mw.smw.ask(q)&lt;br /&gt;
    local t2 = os.clock()&lt;br /&gt;
    local data = {}&lt;br /&gt;
	&lt;br /&gt;
	if smwdata == nil then&lt;br /&gt;
		smwdata = {&lt;br /&gt;
			sellvalue = &amp;#039;N/A&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
	else&lt;br /&gt;
    	mw.log(string.format(&amp;#039;SMW (store locations list): entries: %d, time elapsed: %.3f ms.&amp;#039;, #smwdata, (t2 - t1) * 1000))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
    -- Iterate through each shop instance of item&lt;br /&gt;
    for _, item in ipairs(smwdata) do&lt;br /&gt;
        local dataline = p.processData(item, editbtn)&lt;br /&gt;
        --mw.log(item.sellvalue)&lt;br /&gt;
    	table.insert(data, dataline)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.processData(item, editbtn)&lt;br /&gt;
    local currency = item[&amp;#039;Store currency&amp;#039;]&lt;br /&gt;
    local sellvalue = item[&amp;#039;Store sell price&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
    local sellSortValue = 0&lt;br /&gt;
    &lt;br /&gt;
    if not(sellvalue == 1e10) then&lt;br /&gt;
        sellvalue = tonumber(sellvalue)&lt;br /&gt;
        if sellvalue then&lt;br /&gt;
            sellSortValue = sellvalue&lt;br /&gt;
            sellvalue = commas(sellvalue)&lt;br /&gt;
            local currencyImg = currencyImage(currency, sellSortValue) or &amp;#039;&amp;#039;&lt;br /&gt;
            if(params.has_content(currencyImg)) then&lt;br /&gt;
                currencyImg = string.format(&amp;#039;[[File:%s|link=%s]] &amp;#039;, currencyImg, currency)&lt;br /&gt;
                formattedsellvalue = currencyImg .. sellvalue&lt;br /&gt;
            else&lt;br /&gt;
            	formattedsellvalue = sellvalue&lt;br /&gt;
            end&lt;br /&gt;
        else&lt;br /&gt;
            sellvalue = editbtn    -- If sellvalue can&amp;#039;t be converted to a number it will default to the edit button&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        sellSortValue = sellvalue&lt;br /&gt;
        formattedsellvalue = &amp;#039;N/A&amp;#039;&lt;br /&gt;
        sellvalue = &amp;#039;N/A&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
	&lt;br /&gt;
    return {&lt;br /&gt;
        formattedsellvalue = sellvalue,&lt;br /&gt;
        sellvalue = sellvalue,&lt;br /&gt;
        currency = currency&lt;br /&gt;
    }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function editbutton(title)&lt;br /&gt;
    local link = string.gsub(mw.title.getCurrentTitle():fullUrl(&amp;quot;action=edit&amp;quot;), mw.title.getCurrentTitle().fullText, title)&lt;br /&gt;
    link = string.gsub(link, &amp;#039; &amp;#039;, &amp;#039;_&amp;#039;)&lt;br /&gt;
    link = string.format(&amp;quot;&amp;lt;span class=&amp;#039;plainlinks&amp;#039;&amp;gt;[%s &amp;#039;&amp;#039;&amp;#039;?&amp;#039;&amp;#039;&amp;#039; (edit)]&amp;lt;/span&amp;gt;&amp;quot;, link)&lt;br /&gt;
    return link&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function ticktime(ticks)&lt;br /&gt;
    if ticks==-1 then&lt;br /&gt;
        return &amp;#039;unknown&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    local ret = &amp;#039;&amp;#039;&lt;br /&gt;
    local days = math.floor(ticks/144000)&lt;br /&gt;
    local hours = math.floor(ticks%144000/6000)&lt;br /&gt;
    local minutes = math.floor(ticks%6000/100)&lt;br /&gt;
    local seconds = ticks%100*0.6&lt;br /&gt;
    if days &amp;gt; 0 then&lt;br /&gt;
        ret = ret .. days .. &amp;#039;d &amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    if hours &amp;gt; 0 then&lt;br /&gt;
        ret = ret .. hours .. &amp;#039;h &amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    if minutes &amp;gt; 0 then&lt;br /&gt;
        ret = ret .. minutes .. &amp;#039;m &amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    if seconds &amp;gt; 0 then&lt;br /&gt;
        ret = ret .. seconds .. &amp;#039;s&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>