Module:Sandbox/User:Teamtoto/LuaModule

local p = {} local cargo = mw.ext.cargo

function p.main(frame) local prefixes = "" local infixes = "" local postfixes = "" local maxprefix local minprefix local maxinfix local mininfix local maxpostfix local minpostfix local titletemplate local result = {} local seed = frame.args.seed

if seed ~= nil and seed ~= ''then math.randomseed(seed:gsub("%w",string.byte)) end

--[get cargo row]-- local tables= 'HeroNames' local fields= 'Prefixes, MinPrefixAmount, MaxPrefixAmount,Infixes, MinInfixAmount,MaxInfixAmount,Postfixes ,MinPostfixAmount,MaxPostfixAmount,TitleTemplate' local args= { where= 'BaseType="Crab"' } result = cargo.query(tables,fields,args) if not next(result) then error('no base type of that kind found.') end --[get prefixes array]-- local resultstring = '' resultstring = result[1]['Prefixes'] local prefixtable= {} local i = 1 for j in string.gmatch(resultstring,"%s*(%w+),?%s*") do prefixtable[i] = j i= i+1 end --[get infixes array]-- local resultstring = '' resultstring = result[1]['Infixes'] local infixtable= {} local i = 1 for j in string.gmatch(resultstring,"%s*(%w+),?%s*") do infixtable[i] = j i= i+1 end --[get postfixes array]-- local resultstring = '' resultstring = result[1]['Postfixes'] local postfixtable= {} local i = 1 for j in string.gmatch(resultstring,"%s*(%w+),?%s*") do postfixtable[i] = j i= i+1 end

--[get min/maxprefix stuff]-- minprefix=result[1]['MinPrefixAmount'] maxprefix=result[1]['MaxPrefixAmount'] for i=1,math.random(minprefix,maxprefix) do prefixes = prefixes.. prefixtable[math.random(table.getn(prefixtable))] end

mininfix=result[1]['MinInfixAmount'] maxinfix=result[1]['MaxInfixAmount'] for i=1,math.random(mininfix,maxinfix) do infixes = infixes.. infixtable[math.random(table.getn(infixtable))] end minpostfix=result[1]['MinPostfixAmount'] maxpostfix=result[1]['MaxPostfixAmount'] for i=1,math.random(minpostfix,maxpostfix) do postfixes = postfixes.. postfixtable[math.random(table.getn(postfixtable))] end

--[title template]-- titletemplate=result[1]['TitleTemplate']

--[name fitting]-- local heroname= ((prefixes..infixes..postfixes):gsub("^%l", string.upper)) local a = string.gsub(titletemplate,'NAME',tostring(heroname)) local b = string.gsub(a,('BASETYPE'), 'crab')

return b end

function p.a(seed) math.randomseed(tonumber(seed)) local count = cargo.query('Characters=C, GeneralData=GD', 'TRIM(COUNT(C._pageName))=Number', {join='C.JoinKey=GD.JoinKey', where='C._pageNamespace="0" AND GD.Categories <> "Walls"'})[1]['Number'] local offsetin = math.random(0, tonumber(count)) local tables = 'Characters=C, GeneralData=GD' local fields = 'GD.PlainName=Name, GD._pageName=Page' local args ={join='C._pageName=GD._pageName', where='GD._pageNamespace="0" AND GD.Categories <> "Walls"', offset=offsetin,limit = 1} local result = cargo.query(tables, fields, args) if not next(result) then error('?????') end return .. result[1]['Name'] ..  end

function p.getRandomChara(frame) return p.a(frame.args.seed) end

function p.test(seed) return p.a(tostring(seed)) end return p