Module

DYK

From Dogcraft Wiki

No edit summary
mNo edit summary
 
(49 intermediate revisions by 2 users not shown)
Line 1: Line 1:
local p = {} --p stands for package
local p = {} --p stands for package


--random number that changes daily
function p.random( frame )
function p.random( frame )
     math.randomseed(os.date("%d"))
     math.randomseed((os.date("%d")*os.date("%m")*os.date("%y"))+tonumber(frame.args['seed']))
length = frame.args[1] or 30
length = tonumber(frame.args['length']) or 30
randnum = math.random(1,length)
randnum = math.random(1,length)
     return randnum
     return randnum
end
end


function randomdaily( maxrandom )
--random number that changes weekly
     math.randomseed(os.date("%d"))
function p.randomW( frame )
length2 = maxrandom or 30
    math.randomseed((os.date("%m")*os.date("%y"))+tonumber(frame.args['seed']))
randnum2 = math.random(1,length2)
length = tonumber(frame.args['length']) or 30
     return randnum2
randnum = math.random(1,length)
    return randnum
end
 
function randomdaily( maxrandom, constant )
     math.randomseed((os.date("%d")*os.date("%m")*os.date("%y"))+constant)
length = maxrandom or 30
randnum = math.random(1,length)
     return randnum
end
end


function p.format( frame )
function p.facts( frame )
text = frame.args[1] or ""
text = frame.args['text'] or ""
     t = {}
     facts = {}
i = 1
i = 1
result = ""
resulttable = {}
for word in string.gmatch(text, '%* %.%.%. .-?') do
for fact in string.gmatch(text, '%* %.%.%. .-?') do
t[i] = word
facts[i] = fact .. "\n"
i = i + 1
i = i + 1
end
end
key = randomdaily(t.getn)
start = tonumber(frame.args['start'])
final = tonumber(frame.args['end'])
 
if (start > 5) then
start = 5
elseif (start < 1) then
start = 1
end
if (final > 5) then
final = 5
elseif (final < 1) then
final = 1
end


    return t[key]
rsindex = 1
for j=start,final,1 do
key = randomdaily(facts.getn, j)
resulttable[rsindex] = facts[key]
rsindex = rsindex + 1
end
result = table.concat(resulttable, "\n")
return frame:preprocess( result )
end
end


return p
return p

Latest revision as of 17:07, 28 August 2022

This module is responsible for the functionality of the Did you know? facts that appear on the main page. It does this by randomly pulling a number of facts from the content of the Dogcraft Wiki:Did you know/Facts page.

Functions:

random

The "random" function can generate up to 5 random numbers per day. Its arguments are "length", which sets the highest random number it can select (default is 30), and "seed", which can select between the 5 daily numbers. Seed accepts numbers from 1 to 5.
Examples:

  • {{#invoke:DYK|random|length=33|seed=1}} generates: 21 (this number changes daily)
  • {{#invoke:DYK|random|length=33|seed=2}} generates: 28 (this number changes daily)
  • {{#invoke:DYK|random|length=33|seed=3}} generates: 2 (this number changes daily)
  • {{#invoke:DYK|random|length=33|seed=4}} generates: 9 (this number changes daily)
  • {{#invoke:DYK|random|length=33|seed=5}} generates: 17 (this number changes daily)

randomW

The "randomW" function can generate up to 5 random numbers per week. Its arguments are "length", which sets the highest random number it can select (default is 30), and "seed", which can select between the 5 daily numbers. Seed accepts numbers from 1 to 5.
Examples:

  • {{#invoke:DYK|randomW|length=33|seed=1}} generates: 26 (this number changes weekly)
  • {{#invoke:DYK|randomW|length=33|seed=2}} generates: 1 (this number changes weekly)
  • {{#invoke:DYK|randomW|length=33|seed=3}} generates: 8 (this number changes weekly)
  • {{#invoke:DYK|randomW|length=33|seed=4}} generates: 15 (this number changes weekly)
  • {{#invoke:DYK|randomW|length=33|seed=5}} generates: 23 (this number changes weekly)

facts

The "facts" function, which returns up to 5 facts per day, selected from Dogcraft_Wiki:Did_you_know. Its arguments are "text", which expects "{{Dogcraft_Wiki:Did_you_know/Facts}}" or a similarly layed out page, as the value, and "start" and "end", which determine which of the 5 facts to return.
Example: {{#invoke:DYK|facts|text={{Dogcraft_Wiki:Did_you_know/Facts}}|start=1|end=2}} generates:

  • ... that in Nitro UHC, the Ender Dragon, Illusioners, Zombie Horses and Withers all have special loot tables despite there being no way for these mobs to be spawned or summoned?
  • ... that during periods of downtime on the Dogcraft Server, Temporary Worlds are often put up - and that there have been at least 6 of these?
(this changes daily)
local p = {} --p stands for package

--random number that changes daily
function p.random( frame )
    math.randomseed((os.date("%d")*os.date("%m")*os.date("%y"))+tonumber(frame.args['seed']))
	length = tonumber(frame.args['length']) or 30
	randnum = math.random(1,length)
    return randnum
end

--random number that changes weekly
function p.randomW( frame )
    math.randomseed((os.date("%m")*os.date("%y"))+tonumber(frame.args['seed']))
	length = tonumber(frame.args['length']) or 30
	randnum = math.random(1,length)
    return randnum
end

function randomdaily( maxrandom, constant )
    math.randomseed((os.date("%d")*os.date("%m")*os.date("%y"))+constant)
	length = maxrandom or 30
	randnum = math.random(1,length)
    return randnum
end

function p.facts( frame )
	text = frame.args['text'] or ""
    facts = {}
	i = 1
	result = ""
	resulttable = {}
	
	for fact in string.gmatch(text, '%* %.%.%. .-?') do
		facts[i] = fact .. "\n"
		i = i + 1
	end
	
	start = tonumber(frame.args['start'])
	final = tonumber(frame.args['end'])

	if (start > 5) then
		start = 5
	elseif (start < 1) then
		start = 1
	end
	
	if (final > 5) then
		final = 5
	elseif (final < 1) then
		final = 1
	end

	rsindex = 1
	for j=start,final,1 do
		key = randomdaily(facts.getn, j)
		resulttable[rsindex] = facts[key]
		rsindex = rsindex + 1
	end
	result = table.concat(resulttable, "\n")
	
	return frame:preprocess( result )
end

return p