Модуль:GameModes

Данная группа модулей хранит информацию обо всех героях из Крушителей подземелий. Перечень модулей:

Информация из Модуль:GameModes/doc


local p = {}

local lib = require('Module:Feature')
local libItem = require('Module:ItemData')
local libHero = require('Module:HeroData')

function p.get(frame)
	local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
	
	local get      = require ('Module:GameModes/getter')
    local gm       = args['gm'] or args[1]
    local datatype = args['datatype'] or args[2]
    local output   = args['output'] or args[3] or nil
    
    local result = get[datatype](gm)
    
    if output ~= nil and type(result) == "table" then
        if output == "csv" then
            return lib.tbl_concat{result}
        elseif output == "custom" then 
            return frame:preprocess(lib.tbl_concat({result, prepend = args['prepend'], append = args['append'], separator = args['separator'], index = args["index"]}))
        elseif output == "template" then 
            return frame:preprocess(lib.tbl_concat{result, prepend = "{{" .. args['t_name'] .. "|", append = "}}", separator = args['separator']})
        end
    elseif result == nil then
        return ""
    else
        return result
    end
end

function p.getGameModeMedal(frame)
	local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
		
	local get    = require ('Module:GameModes/getter')
	local gm     = args['gm'] or args[1]
	local medals = "medals"
	local str    = ""
	
	local result = get[medals](gm)
	
	for k, v in ipairs(result) do
    	if tonumber(args['index']) == k then
    		str = mw.ustring.format('%s', v)
    	end
    end
    
    return str
end

function p.getGameModeRewards(frame)
	local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
		
	local get       = require ('Module:GameModes/getter')
	local gm_data   = require ('Module:GameModes/data')
	local gm        = args['gm'] or args[1]
	local tableNode = mw.html.create('table')
	
	tableNode
        :addClass('custom-table')
        :cssText('width: fit-content; width: -moz-fit-content; text-align: center;')
        :newline()
	
	for k, v in lib.pairsByAlphabeticalKeys(gm_data) do
		if gm_data[k]["type"] == 1 then
			for k1, v1 in lib.pairsByAlphabeticalKeys(gm_data[k]["rewards"]) do
				if args['gm'] == k then
					if args['type'] == k1 and k1 == "science" then
						for k2, v2 in lib.pairsByAlphabeticalKeys(gm_data[k]["rewards"][k1]) do
							if args['form'] == k2 and k2 == "top" then
								local rowNode1 = mw.html.create('tr')
						    	rowNode1
							    	:tag('th')
							    		:attr('colspan', 14)
							    		:cssText('height: 30px')
					            		:wikitext(mw.ustring.format('Призовые места'))
										:done()
										
								tableNode:node(rowNode1):newline()
								
								for k3, v3 in ipairs(v2) do
							    	local rowNode2 = mw.html.create('tr')
							    	rowNode2
							    		:tag('th')
					            		:wikitext(mw.ustring.format('%s', p.setPlacesRewards(k3, gm_data[k]["type"], args['type'])))
										:done()
										
							    		for k4, v4 in ipairs(v3) do
											local fieldNode = mw.html.create('td')
											local str = ""
											
											if v3[k4][1] == "Магические бутылки" or v3[k4][1] == "Изумруды" or v3[k4][1] == "Ранги" then
												if v3[k4][1] == "Магические бутылки" then
													str = "бутылки"
												elseif v3[k4][1] == "Изумруды" then
													str = "изумруды"
												else
													str = "ранги"
												end
												
												fieldNode
													:wikitext(mw.ustring.format('{{%s}}%d', str, v3[k4][2]))
													:done()
											elseif v3[k4][2] == nil then
												fieldNode
													:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v3[k4][1], "35px", v3[k4][2])))
													:done()
											else
												fieldNode
													:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v3[k4][1], "35px", v3[k4][2])))
													:done()
											end
													
											rowNode2:node(fieldNode):newline()
										end
										
									tableNode:node(rowNode2):newline()
								end
							elseif args['form'] == k2 and k2 == "points" then
								local rowNode1 = mw.html.create('tr')
						    	rowNode1
							    	:tag('th')
							    		:attr('colspan', 10)
							    		:cssText('height: 30px')
					            		:wikitext(mw.ustring.format('Набранные очки'))
										:done()
										
								tableNode:node(rowNode1):newline()
								
								for k3, v3 in lib.pairsByAlphabeticalKeys(v2, function(a, b) return a > b end) do
							    	local rowNode2 = mw.html.create('tr')
							    	
							    	rowNode2
							    		:tag('th')
					            		:wikitext(mw.ustring.format('%s', lib.comma_value(k3)))
										:done()
									
									for k4, v4 in ipairs(v3) do
										local fieldNode = mw.html.create('td')
										local str = ""
										
										if v3[k4][1] == "Магические бутылки" or v3[k4][1] == "Изумруды" or v3[k4][1] == "Ранги" then
											if v3[k4][1] == "Магические бутылки" then
												str = "бутылки"
											elseif v3[k4][1] == "Изумруды" then
												str = "изумруды"
											else
												str = "ранги"
											end
											
											fieldNode
												:wikitext(mw.ustring.format('{{%s}}%d', str, v3[k4][2]))
												:done()
										elseif v3[k4][2] == nil then
											fieldNode
												:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v3[k4][1], "35px", v3[k4][2])))
												:done()
										else
											fieldNode
												:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v3[k4][1], "35px", v3[k4][2])))
												:done()
										end
										
										rowNode2:node(fieldNode):newline()
									end	
									
									tableNode:node(rowNode2):newline()
								end
							end
						end
					elseif args['type'] == k1 and k1 == "bosses" then
						for k2, v2 in lib.pairsByAlphabeticalKeys(gm_data[k]["rewards"][k1]) do
							if args['form'] == k2 and k2 == "top" then
								local rowNode1 = mw.html.create('tr')
						    	rowNode1
							    	:tag('th')
							    		:attr('colspan', 14)
							    		:cssText('height: 30px')
					            		:wikitext(mw.ustring.format('Призовые места'))
										:done()
										
								tableNode:node(rowNode1):newline()
								
								for k3, v3 in ipairs(v2) do
							    	local rowNode2 = mw.html.create('tr')
							    	rowNode2
							    		:tag('th')
					            		:wikitext(mw.ustring.format('%s', p.setPlacesRewards(k3, gm_data[k]["type"], args['type'])))
										:done()
										
							    		for k4, v4 in ipairs(v3) do
											local fieldNode = mw.html.create('td')
											local str = ""
											
											if v3[k4][1] == "Магические бутылки" or v3[k4][1] == "Изумруды" or v3[k4][1] == "Ранги" then
												if v3[k4][1] == "Магические бутылки" then
													str = "бутылки"
												elseif v3[k4][1] == "Изумруды" then
													str = "изумруды"
												else
													str = "ранги"
												end
												
												fieldNode
													:wikitext(mw.ustring.format('{{%s}}%d', str, v3[k4][2]))
													:done()
											elseif v3[k4][2] == nil then
												fieldNode
													:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v3[k4][1], "35px", v3[k4][2])))
													:done()
											else
												fieldNode
													:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v3[k4][1], "35px", v3[k4][2])))
													:done()
											end
													
											rowNode2:node(fieldNode):newline()
										end
										
									tableNode:node(rowNode2):newline()
								end
							elseif args['form'] == k2 and k2 == "points" then
								local rowNode1 = mw.html.create('tr')
						    	rowNode1
							    	:tag('th')
							    		:attr('colspan', 10)
							    		:cssText('height: 30px')
					            		:wikitext(mw.ustring.format('Набранные очки'))
										:done()
										
								tableNode:node(rowNode1):newline()
								
								for k3, v3 in lib.pairsByAlphabeticalKeys(v2, function(a, b) return a > b end) do
							    	local rowNode2 = mw.html.create('tr')
							    	
							    	rowNode2
							    		:tag('th')
					            		:wikitext(mw.ustring.format('%s', lib.comma_value(k3)))
										:done()
									
									for k4, v4 in ipairs(v3) do
										local fieldNode = mw.html.create('td')
										local str = ""
										
										if v3[k4][1] == "Магические бутылки" or v3[k4][1] == "Изумруды" or v3[k4][1] == "Ранги" then
											if v3[k4][1] == "Магические бутылки" then
												str = "бутылки"
											elseif v3[k4][1] == "Изумруды" then
												str = "изумруды"
											else
												str = "ранги"
											end
											
											fieldNode
												:wikitext(mw.ustring.format('{{%s}}%d', str, v3[k4][2]))
												:done()
										elseif v3[k4][2] == nil then
											fieldNode
												:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v3[k4][1], "35px", v3[k4][2])))
												:done()
										else
											fieldNode
												:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v3[k4][1], "35px", v3[k4][2])))
												:done()
										end
										
										rowNode2:node(fieldNode):newline()
									end	
									
									tableNode:node(rowNode2):newline()
								end
							end
						end
					elseif args['type'] == k1 and k1 == "clan" then
						for k2, v2 in lib.pairsByAlphabeticalKeys(gm_data[k]["rewards"][k1]) do
							if args['form'] == k2 and k2 == "science" then
								local rowNode1 = mw.html.create('tr')
						    	rowNode1
							    	:tag('th')
							    		:attr('colspan', 10)
							    		:cssText('height: 30px')
					            		:wikitext(mw.ustring.format('Набранные очки'))
										:done()
										
								tableNode:node(rowNode1):newline()
								
								for k3, v3 in lib.pairsByAlphabeticalKeys(v2, function(a, b) return a > b end) do
							    	local rowNode2 = mw.html.create('tr')
							    	
							    	rowNode2
							    		:tag('th')
					            		:wikitext(mw.ustring.format('%s', lib.comma_value(k3)))
										:done()
									
									for k4, v4 in ipairs(v3) do
										local fieldNode = mw.html.create('td')
										local str = ""
										
										if v3[k4][1] == "Магические бутылки" or v3[k4][1] == "Изумруды" or v3[k4][1] == "Ранги" then
											if v3[k4][1] == "Магические бутылки" then
												str = "бутылки"
											elseif v3[k4][1] == "Изумруды" then
												str = "изумруды"
											else
												str = "ранги"
											end
											
											fieldNode
												:wikitext(mw.ustring.format('{{%s}}%d', str, v3[k4][2]))
												:done()
										elseif v3[k4][2] == nil then
											fieldNode
												:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v3[k4][1], "35px", v3[k4][2])))
												:done()
										else
											fieldNode
												:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v3[k4][1], "35px", v3[k4][2])))
												:done()
										end
										
										rowNode2:node(fieldNode):newline()
									end	
									
									tableNode:node(rowNode2):newline()
								end
							elseif args['form'] == k2 and k2 == "bosses" then
								local rowNode1 = mw.html.create('tr')
						    	rowNode1
							    	:tag('th')
							    		:attr('colspan', 10)
							    		:cssText('height: 30px')
					            		:wikitext(mw.ustring.format('Набранные очки'))
										:done()
										
								tableNode:node(rowNode1):newline()
								
								for k3, v3 in lib.pairsByAlphabeticalKeys(v2, function(a, b) return a > b end) do
							    	local rowNode2 = mw.html.create('tr')
							    	
							    	rowNode2
							    		:tag('th')
					            		:wikitext(mw.ustring.format('%s', lib.comma_value(k3)))
										:done()
									
									for k4, v4 in ipairs(v3) do
										local fieldNode = mw.html.create('td')
										local str = ""
										
										if v3[k4][1] == "Магические бутылки" or v3[k4][1] == "Изумруды" or v3[k4][1] == "Ранги" then
											if v3[k4][1] == "Магические бутылки" then
												str = "бутылки"
											elseif v3[k4][1] == "Изумруды" then
												str = "изумруды"
											else
												str = "ранги"
											end
											
											fieldNode
												:wikitext(mw.ustring.format('{{%s}}%d', str, v3[k4][2]))
												:done()
										elseif v3[k4][2] == nil then
											fieldNode
												:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v3[k4][1], "35px", v3[k4][2])))
												:done()
										else
											fieldNode
												:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v3[k4][1], "35px", v3[k4][2])))
												:done()
										end
										
										rowNode2:node(fieldNode):newline()
									end	
									
									tableNode:node(rowNode2):newline()
								end
							end
						end
					end
				end
			end
		elseif gm_data[k]["type"] == 2 then
			for k1, v1 in lib.pairsByAlphabeticalKeys(gm_data[k]["rewards"]) do
				if args['gm'] == k then
					if args['type'] == k1 and k1 == "top" then
						local rowNode1 = mw.html.create('tr')
				    	rowNode1
					    	:tag('th')
					    		:attr('colspan', 15)
					    		:cssText('height: 30px')
			            		:wikitext(mw.ustring.format('Призовые места'))
								:done()
								
						tableNode:node(rowNode1):newline()
						
						for k2, v2 in ipairs(v1) do
					    	local rowNode2 = mw.html.create('tr')
					    	rowNode2
					    		:tag('th')
			            		:wikitext(mw.ustring.format('%s', p.setPlacesRewards(k2, gm_data[k]["type"], args['type'])))
								:done()
								
					    		for k3, v3 in ipairs(v2) do
									local fieldNode = mw.html.create('td')
									local str = ""
									
									if v2[k3][1] == "Магические бутылки" or v2[k3][1] == "Изумруды" or v2[k3][1] == "Ранги" then
										if v2[k3][1] == "Магические бутылки" then
											str = "бутылки"
										elseif v2[k3][1] == "Изумруды" then
											str = "изумруды"
										else
											str = "ранги"
										end
										
										fieldNode
											:wikitext(mw.ustring.format('{{%s}}%d', str, v2[k3][2]))
											:done()
									elseif v2[k3][2] == nil then
										fieldNode
											:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v2[k3][1], "35px", v2[k3][2])))
											:done()
									else
										fieldNode
											:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v2[k3][1], "35px", v2[k3][2])))
											:done()
									end
											
									rowNode2:node(fieldNode):newline()
								end
								
							tableNode:node(rowNode2):newline()
						end
					elseif args['type'] == k1 and k1 == "top2" then
						local rowNode1 = mw.html.create('tr')
				    	rowNode1
					    	:tag('th')
					    		:attr('colspan', 14)
					    		:cssText('height: 30px')
			            		:wikitext(mw.ustring.format('Призовые места'))
								:done()
								
						tableNode:node(rowNode1):newline()
						
						for k2, v2 in ipairs(v1) do
					    	local rowNode2 = mw.html.create('tr')
					    	rowNode2
					    		:tag('th')
			            		:wikitext(mw.ustring.format('%s', p.setPlacesRewards(k2, gm_data[k]["type"], args['type'])))
								:done()
								
					    		for k3, v3 in ipairs(v2) do
									local fieldNode = mw.html.create('td')
									local str = ""
									
									if v2[k3][1] == "Магические бутылки" or v2[k3][1] == "Изумруды" or v2[k3][1] == "Ранги" then
										if v2[k3][1] == "Магические бутылки" then
											str = "бутылки"
										elseif v2[k3][1] == "Изумруды" then
											str = "изумруды"
										else
											str = "ранги"
										end
										
										fieldNode
											:wikitext(mw.ustring.format('{{%s}}%d', str, v2[k3][2]))
											:done()
									elseif v2[k3][2] == nil then
										fieldNode
											:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v2[k3][1], "35px", v2[k3][2])))
											:done()
									else
										fieldNode
											:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v2[k3][1], "35px", v2[k3][2])))
											:done()
									end
											
									rowNode2:node(fieldNode):newline()
								end
								
							tableNode:node(rowNode2):newline()
						end
					elseif args['type'] == k1 and k1 == "points" then
						local rowNode1 = mw.html.create('tr')
				    	rowNode1
					    	:tag('th')
					    		:attr('colspan', 10)
					    		:cssText('height: 30px')
			            		:wikitext(mw.ustring.format('Набранные очки'))
								:done()
								
						tableNode:node(rowNode1):newline()
						
						for k2, v2 in lib.pairsByAlphabeticalKeys(v1, function(a, b) return a > b end) do
					    	local rowNode2 = mw.html.create('tr')
					    	
					    	rowNode2
					    		:tag('th')
			            		:wikitext(mw.ustring.format('%s', lib.comma_value(k2)))
								:done()
							
							for k3, v3 in ipairs(v2) do
								local fieldNode = mw.html.create('td')
								local str = ""
								
								if v2[k3][1] == "Магические бутылки" or v2[k3][1] == "Изумруды" or v2[k3][1] == "Ранги" then
									if v2[k3][1] == "Магические бутылки" then
										str = "бутылки"
									elseif v2[k3][1] == "Изумруды" then
										str = "изумруды"
									else
										str = "ранги"
									end
									
									fieldNode
										:wikitext(mw.ustring.format('{{%s}}%d', str, v2[k3][2]))
										:done()
								elseif v2[k3][2] == nil then
									fieldNode
										:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v2[k3][1], "35px", v2[k3][2])))
										:done()
								else
									fieldNode
										:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v2[k3][1], "35px", v2[k3][2])))
										:done()
								end
								
								rowNode2:node(fieldNode):newline()
							end	
							
							tableNode:node(rowNode2):newline()
						end
					elseif args['type'] == k1 and k1 == "clan" then
						for k2, v2 in lib.pairsByAlphabeticalKeys(gm_data[k]["rewards"][k1]) do
							if args['form'] == k2 and k2 == "top" then
								local rowNode1 = mw.html.create('tr')
						    	rowNode1
							    	:tag('th')
							    		:attr('colspan', 14)
							    		:cssText('height: 30px')
					            		:wikitext(mw.ustring.format('Призовые места'))
										:done()
										
								tableNode:node(rowNode1):newline()
								
								for k3, v3 in ipairs(v2) do
							    	local rowNode2 = mw.html.create('tr')
							    	rowNode2
							    		:tag('th')
					            		:wikitext(mw.ustring.format('%s', p.setPlacesRewards(k3, gm_data[k]["type"], args['type'])))
										:done()
										
							    		for k4, v4 in ipairs(v3) do
											local fieldNode = mw.html.create('td')
											local str = ""
											
											if v3[k4][1] == "Магические бутылки" or v3[k4][1] == "Изумруды" or v3[k4][1] == "Ранги" then
												if v3[k4][1] == "Магические бутылки" then
													str = "бутылки"
												elseif v3[k4][1] == "Изумруды" then
													str = "изумруды"
												else
													str = "ранги"
												end
												
												fieldNode
													:wikitext(mw.ustring.format('{{%s}}%d', str, v3[k4][2]))
													:done()
											elseif v3[k4][2] == nil then
												fieldNode
													:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v3[k4][1], "35px", v3[k4][2])))
													:done()
											else
												fieldNode
													:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v3[k4][1], "35px", v3[k4][2])))
													:done()
											end
													
											rowNode2:node(fieldNode):newline()
										end
										
									tableNode:node(rowNode2):newline()
								end
							elseif args['form'] == k2 and k2 == "points" then
								local rowNode1 = mw.html.create('tr')
						    	rowNode1
							    	:tag('th')
							    		:attr('colspan', 10)
							    		:cssText('height: 30px')
					            		:wikitext(mw.ustring.format('Набранные очки'))
										:done()
										
								tableNode:node(rowNode1):newline()
								
								for k3, v3 in lib.pairsByAlphabeticalKeys(v2, function(a, b) return a > b end) do
							    	local rowNode2 = mw.html.create('tr')
							    	
							    	rowNode2
							    		:tag('th')
					            		:wikitext(mw.ustring.format('%s', lib.comma_value(k3)))
										:done()
									
									for k4, v4 in ipairs(v3) do
										local fieldNode = mw.html.create('td')
										local str = ""
										
										if v3[k4][1] == "Магические бутылки" or v3[k4][1] == "Изумруды" or v3[k4][1] == "Ранги" then
											if v3[k4][1] == "Магические бутылки" then
												str = "бутылки"
											elseif v3[k4][1] == "Изумруды" then
												str = "изумруды"
											else
												str = "ранги"
											end
											
											fieldNode
												:wikitext(mw.ustring.format('{{%s}}%d', str, v3[k4][2]))
												:done()
										elseif v3[k4][2] == nil then
											fieldNode
												:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v3[k4][1], "35px", v3[k4][2])))
												:done()
										else
											fieldNode
												:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v3[k4][1], "35px", v3[k4][2])))
												:done()
										end
										
										rowNode2:node(fieldNode):newline()
									end	
									
									tableNode:node(rowNode2):newline()
								end
							end
						end
	    			end
	    		end
			end
		elseif gm_data[k]["type"] == 3 then
			for k1, v1 in lib.pairsByAlphabeticalKeys(gm_data[k]["rewards"]) do
				if args['gm'] == k then
					if args['type'] == k1 and k1 == "top" then
						local rowNode1 = mw.html.create('tr')
				    	rowNode1
					    	:tag('th')
					    		:attr('colspan', 14)
					    		:cssText('height: 30px')
			            		:wikitext(mw.ustring.format('Призовые места'))
								:done()
								
						tableNode:node(rowNode1):newline()
						
						for k2, v2 in ipairs(v1) do
					    	local rowNode2 = mw.html.create('tr')
					    	rowNode2
					    		:tag('th')
			            		:wikitext(mw.ustring.format('%s', p.setPlacesRewards(k2, gm_data[k]["type"], args['type'])))
								:done()
								
					    		for k3, v3 in ipairs(v2) do
									local fieldNode = mw.html.create('td')
									local str = ""
									
									if v2[k3][1] == "Магические бутылки" or v2[k3][1] == "Изумруды" or v2[k3][1] == "Ранги" then
										if v2[k3][1] == "Магические бутылки" then
											str = "бутылки"
										elseif v2[k3][1] == "Изумруды" then
											str = "изумруды"
										else
											str = "ранги"
										end
										
										fieldNode
											:wikitext(mw.ustring.format('{{%s}}%d', str, v2[k3][2]))
											:done()
									elseif v2[k3][2] == nil then
										fieldNode
											:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v2[k3][1], "35px", v2[k3][2])))
											:done()
									else
										fieldNode
											:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v2[k3][1], "35px", v2[k3][2])))
											:done()
									end
											
									rowNode2:node(fieldNode):newline()
								end
								
							tableNode:node(rowNode2):newline()
						end
					elseif args['type'] == k1 and k1 == "top2" then
						local rowNode1 = mw.html.create('tr')
				    	rowNode1
					    	:tag('th')
					    		:attr('colspan', 14)
					    		:cssText('height: 30px')
			            		:wikitext(mw.ustring.format('Призовые места'))
								:done()
								
						tableNode:node(rowNode1):newline()
						
						for k2, v2 in ipairs(v1) do
					    	local rowNode2 = mw.html.create('tr')
					    	rowNode2
					    		:tag('th')
			            		:wikitext(mw.ustring.format('%s', p.setPlacesRewards(k2, gm_data[k]["type"], args['type'])))
								:done()
								
					    		for k3, v3 in ipairs(v2) do
									local fieldNode = mw.html.create('td')
									local str = ""
									
									if v2[k3][1] == "Магические бутылки" or v2[k3][1] == "Изумруды" or v2[k3][1] == "Ранги" then
										if v2[k3][1] == "Магические бутылки" then
											str = "бутылки"
										elseif v2[k3][1] == "Изумруды" then
											str = "изумруды"
										else
											str = "ранги"
										end
										
										fieldNode
											:wikitext(mw.ustring.format('{{%s}}%d', str, v2[k3][2]))
											:done()
									elseif v2[k3][2] == nil then
										fieldNode
											:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v2[k3][1], "35px", v2[k3][2])))
											:done()
									else
										fieldNode
											:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v2[k3][1], "35px", v2[k3][2])))
											:done()
									end
											
									rowNode2:node(fieldNode):newline()
								end
								
							tableNode:node(rowNode2):newline()
						end
					end
				end
			end
		elseif gm_data[k]["type"] == 4 then
			for k1, v1 in lib.pairsByAlphabeticalKeys(gm_data[k]["rewards"]) do
				if args['gm'] == k then
					if args['type'] == k1 and k1 == "top" then
						local rowNode1 = mw.html.create('tr')
				    	rowNode1
					    	:tag('th')
					    		:attr('colspan', 8)
					    		:cssText('height: 30px')
			            		:wikitext(mw.ustring.format('Призовые места'))
								:done()
								
						tableNode:node(rowNode1):newline()
						
						for k2, v2 in ipairs(v1) do
					    	local rowNode2 = mw.html.create('tr')
					    	rowNode2
					    		:tag('th')
			            		:wikitext(mw.ustring.format('%s', p.setPlacesRewards(k2, gm_data[k]["type"], args['type'])))
								:done()
								
					    		for k3, v3 in ipairs(v2) do
									local fieldNode = mw.html.create('td')
									local str = ""
									
									if v2[k3][1] == "Магические бутылки" or v2[k3][1] == "Изумруды" or v2[k3][1] == "Ранги" then
										if v2[k3][1] == "Магические бутылки" then
											str = "бутылки"
										elseif v2[k3][1] == "Изумруды" then
											str = "изумруды"
										else
											str = "ранги"
										end
										
										fieldNode
											:wikitext(mw.ustring.format('{{%s}}%d', str, v2[k3][2]))
											:done()
									elseif v2[k3][2] == nil then
										fieldNode
											:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v2[k3][1], "35px", v2[k3][2])))
											:done()
									else
										fieldNode
											:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v2[k3][1], "35px", v2[k3][2])))
											:done()
									end
											
									rowNode2:node(fieldNode):newline()
								end
								
							tableNode:node(rowNode2):newline()
						end
					elseif args['type'] == k1 and k1 == "points" then
						local rowNode1 = mw.html.create('tr')
				    	rowNode1
					    	:tag('th')
					    		:attr('colspan', 10)
					    		:cssText('height: 30px')
			            		:wikitext(mw.ustring.format('Набранные очки'))
								:done()
								
						tableNode:node(rowNode1):newline()
						
						for k2, v2 in lib.pairsByAlphabeticalKeys(v1, function(a, b) return a > b end) do
					    	local rowNode2 = mw.html.create('tr')
					    	
					    	rowNode2
					    		:tag('th')
			            		:wikitext(mw.ustring.format('%s', lib.comma_value(k2)))
								:done()
							
							for k3, v3 in ipairs(v2) do
								local fieldNode = mw.html.create('td')
								local str = ""
								
								if v2[k3][1] == "Магические бутылки" or v2[k3][1] == "Изумруды" or v2[k3][1] == "Ранги" then
									if v2[k3][1] == "Магические бутылки" then
										str = "бутылки"
									elseif v2[k3][1] == "Изумруды" then
										str = "изумруды"
									else
										str = "ранги"
									end
									
									fieldNode
										:wikitext(mw.ustring.format('{{%s}}%d', str, v2[k3][2]))
										:done()
								elseif v2[k3][2] == nil then
									fieldNode
										:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v2[k3][1], "35px", v2[k3][2])))
										:done()
								else
									fieldNode
										:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v2[k3][1], "35px", v2[k3][2])))
										:done()
								end
								
								rowNode2:node(fieldNode):newline()
							end	
							
							tableNode:node(rowNode2):newline()
						end
					end
				end
			end
		elseif gm_data[k]["type"] == 5 then
			for k1, v1 in lib.pairsByAlphabeticalKeys(gm_data[k]["rewards"]) do
				if args['gm'] == k then
					if args['type'] == k1 and k1 == "points" then
						local rowNode1 = mw.html.create('tr')
				    	rowNode1
					    	:tag('th')
					    		:attr('colspan', 10)
					    		:cssText('height: 30px')
			            		:wikitext(mw.ustring.format('Набранные очки'))
								:done()
								
						tableNode:node(rowNode1):newline()
						
						for k2, v2 in lib.pairsByAlphabeticalKeys(v1, function(a, b) return a > b end) do
					    	local rowNode2 = mw.html.create('tr')
					    	
					    	rowNode2
					    		:tag('th')
			            		:wikitext(mw.ustring.format('%s', lib.comma_value(k2)))
								:done()
							
							for k3, v3 in ipairs(v2) do
								local fieldNode = mw.html.create('td')
								local str = ""
								
								if v2[k3][1] == "Магические бутылки" or v2[k3][1] == "Изумруды" or v2[k3][1] == "Ранги" then
									if v2[k3][1] == "Магические бутылки" then
										str = "бутылки"
									elseif v2[k3][1] == "Изумруды" then
										str = "изумруды"
									else
										str = "ранги"
									end
									
									fieldNode
										:wikitext(mw.ustring.format('{{%s}}%d', str, v2[k3][2]))
										:done()
								elseif v2[k3][2] == nil then
									fieldNode
										:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v2[k3][1], "35px", v2[k3][2])))
										:done()
								else
									fieldNode
										:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v2[k3][1], "35px", v2[k3][2])))
										:done()
								end
								
								rowNode2:node(fieldNode):newline()
							end	
							
							tableNode:node(rowNode2):newline()
						end
					end
				end
			end
		elseif gm_data[k]["type"] == 6 then
			for k1, v1 in lib.pairsByAlphabeticalKeys(gm_data[k]["rewards"]) do
				if args['gm'] == k then
					if args['type'] == k1 and k1 == "level" then
						local rowNode1 = mw.html.create('tr')
				    	rowNode1
					    	:tag('th')
					    		:attr('colspan', 10)
					    		:cssText('height: 30px')
			            		:wikitext(mw.ustring.format('Уровни логова'))
								:done()
								
						tableNode:node(rowNode1):newline()
						
						for k2, v2 in lib.pairsByAlphabeticalKeys(v1, function(a, b) return a > b end) do
					    	local rowNode2 = mw.html.create('tr')
					    	
					    	rowNode2
					    		:tag('th')
			            		:wikitext(mw.ustring.format('%s', k2))
								:done()
							
							for k3, v3 in ipairs(v2) do
								local fieldNode = mw.html.create('td')
								local str = ""
								
								if v2[k3][1] == "Магические бутылки" or v2[k3][1] == "Изумруды" or v2[k3][1] == "Ранги" then
									if v2[k3][1] == "Магические бутылки" then
										str = "бутылки"
									elseif v2[k3][1] == "Изумруды" then
										str = "изумруды"
									else
										str = "ранги"
									end
									
									fieldNode
										:wikitext(mw.ustring.format('{{%s}}%d', str, v2[k3][2]))
										:done()
								elseif v2[k3][2] == nil then
									fieldNode
										:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v2[k3][1], "35px", v2[k3][2])))
										:done()
								else
									fieldNode
										:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v2[k3][1], "35px", v2[k3][2])))
										:done()
								end
								
								rowNode2:node(fieldNode):newline()
							end	
							
							tableNode:node(rowNode2):newline()
						end
					end
				end
			end
		elseif gm_data[k]["type"] == 7 then
			for k1, v1 in lib.pairsByAlphabeticalKeys(gm_data[k]["rewards"]) do
				if args['gm'] == k then
					if args['type'] == k1 and k1 == "points" then
						local rowNode1 = mw.html.create('tr')
				    	rowNode1
					    	:tag('th')
					    		:attr('colspan', 11)
					    		:cssText('height: 30px')
			            		:wikitext(mw.ustring.format('Набранные очки'))
								:done()
								
						tableNode:node(rowNode1):newline()
						
						for k2, v2 in lib.pairsByAlphabeticalKeys(v1, function(a, b) return a > b end) do
					    	local rowNode2 = mw.html.create('tr')
					    	
					    	rowNode2
					    		:tag('th')
			            		:wikitext(mw.ustring.format('%s', lib.comma_value(k2)))
								:done()
							
							for k3, v3 in ipairs(v2) do
								local fieldNode = mw.html.create('td')
								local str = ""
								
								if v2[k3][1] == "Магические бутылки" or v2[k3][1] == "Изумруды" or v2[k3][1] == "Ранги" then
									if v2[k3][1] == "Магические бутылки" then
										str = "бутылки"
									elseif v2[k3][1] == "Изумруды" then
										str = "изумруды"
									end
									
									fieldNode
										:wikitext(mw.ustring.format('{{%s}}%d', str, v2[k3][2]))
										:done()
								elseif v2[k3][2] == nil then
									fieldNode
										:wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v2[k3][1], "35px", v2[k3][2])))
										:done()
								else
									fieldNode
										:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v2[k3][1], "35px", v2[k3][2])))
										:done()
								end
								
								rowNode2:node(fieldNode):newline()
							end	
							
							tableNode:node(rowNode2):newline()
						end
	    			end
	    		end
			end
    	end
    end
    
    return frame:preprocess(tostring(tableNode))
end

function p.setPlacesRewards(place, type, form)
	local str = ""
	
	if type == 1 then
		if place == 1 then
			str = "#1"
		elseif place == 2 then
			str = "#2-3"
		elseif place == 3 then
			str = "#4-10"
		elseif place == 4 then
			str = "#11-20"
		elseif place == 5 then
			str = "#21-30"
		elseif place == 6 then
			str = "#31-50"
		elseif place == 7 then
			str = "#51-100"
		elseif place == 8 then
			str = "#101-200"
		elseif place == 9 then
			str = "#201-500"
		elseif place == 10 then
			str = "#501-2000"
		elseif place == 11 then
			str = "#2001-5000"
		end
	elseif type == 2 and form == "top" then
		if place == 1 then
			str = "#1"
		elseif place == 2 then
			str = "#2-5"
		elseif place == 3 then
			str = "#6-10"
		elseif place == 4 then
			str = "#11-35"
		elseif place == 5 then
			str = "#36-100"
		elseif place == 6 then
			str = "#101-250"
		elseif place == 7 then
			str = "#251-500"
		elseif place == 8 then
			str = "#501-2000"
		elseif place == 9 then
			str = "#2001-5000"
		end
	elseif type == 2 and form == "top2" then
		if place == 1 then
			str = "#1"
		elseif place == 2 then
			str = "#2-10"
		elseif place == 3 then
			str = "#11-35"
		elseif place == 4 then
			str = "#36-100"
		elseif place == 5 then
			str = "#101-250"
		elseif place == 6 then
			str = "#251-500"
		elseif place == 7 then
			str = "#501-2000"
		elseif place == 8 then
			str = "#2001-5000"
		end
	elseif type == 2 and form == "clan" then
		if place == 1 then
			str = "#1"
		elseif place == 2 then
			str = "#2-10"
		elseif place == 3 then
			str = "#11-35"
		elseif place == 4 then
			str = "#36-100"
		elseif place == 5 then
			str = "#101-250"
		end
	elseif type == 3 and form == "top" then
		if place == 1 then
			str = "#1"
		elseif place == 2 then
			str = "#2-3"
		elseif place == 3 then
			str = "#4-10"
		elseif place == 4 then
			str = "#11-25"
		elseif place == 5 then
			str = "#26-35"
		elseif place == 6 then
			str = "#36-50"
		elseif place == 7 then
			str = "#51-75"
		elseif place == 8 then
			str = "#76-100"
		end
	elseif type == 3 and form == "top2" then
		if place == 1 then
			str = "#1"
		elseif place == 2 then
			str = "#2-3"
		elseif place == 3 then
			str = "#4-10"
		elseif place == 4 then
			str = "#11-25"
		elseif place == 5 then
			str = "#26-35"
		elseif place == 6 then
			str = "#36-50"
		elseif place == 7 then
			str = "#51-100"
		elseif place == 8 then
			str = "#101-200"
		elseif place == 9 then
			str = "#201-500"
		elseif place == 10 then
			str = "#501-2000"
		elseif place == 11 then
			str = "#2001-5000"
		end
	elseif type == 4 and form == "top" then
		if place == 1 then
			str = "#1"
		elseif place == 2 then
			str = "#2-5"
		elseif place == 3 then
			str = "#6-10"
		elseif place == 4 then
			str = "#11-35"
		elseif place == 5 then
			str = "#36-100"
		elseif place == 6 then
			str = "#101-200"
		elseif place == 7 then
			str = "#201-300"
		elseif place == 8 then
			str = "#301-500"
		elseif place == 9 then
			str = "#501-1000"
		elseif place == 10 then
			str = "#1001-2000"
		elseif place == 11 then
			str = "#2001-5000"
		elseif place == 12 then
			str = "#5001-50000"
		end
	end
	
	return str
end

return p