Jump to content

getMapRating problem


koragg

Recommended Posts

Hello, I'm trying to add average map rating into a dxdraw window but I have trouble doing so. If anybody can help, would be great. Here's the code:

Client

drawNextText = ''
_nextWidth = 0
_nextHeight = 0
local g__sW, g__sH = guiGetScreenSize()
local sx, sy = g__sW/1440, g__sH/900
local visible = true

function getinfo(name, oldvalue)
	if source == getResourceRootElement() and name == 'gamemode.nextmap' then
		local what = getElementData(getResourceRootElement(), 'gamemode.nextmap')
		drawNextText = what
		_nextWidth = dxGetTextWidth(what, 0.45, 'bankgothic')
		_nextHeight = dxGetFontHeight(0.45, 'bankgothic') * 3
	end
end
addEventHandler('onClientElementDataChange', root, getinfo)

function drawinfo()
	if _nextWidth == 0 then return end
	if visible then
    dxDrawRectangle((g__sW-95)-(_nextWidth+20), 12*sy, _nextWidth+20, _nextHeight+10, tocolor(0,0,0,100),false)
    dxDrawText(drawNextText, (g__sW-95)-(_nextWidth+20)+5, 12*sy, (g__sW-100)-(_nextWidth+20)+_nextWidth+15, 5+_nextHeight+17, tocolor(254, 254, 34, 255), 0.45, 'bankgothic', 'center', 'center', true)
	end
end
addEventHandler("onClientRender",root, drawinfo)

function shownextmap()
		visible = true
end

function hidenextmap()
	if visible then
		visible = false
	end
end

Server

addEvent('onNextmapSettingChange', true)
function nmap(nmap)
	local mapName = getResourceInfo(nmap, "name") or getResourceName(nmap)
	local rating = exports.mapratings:getMapRating(mapName)
	if rating then
    local average = tonumber(rating.average) or "0"
	end
	local stringSet = "Next map: "..mapName.." ("..tostring(average).."/10)"
	nextmap = stringSet
	map = exports.mapmanager:getRunningGamemodeMap()
	if map then
		local mapName = getResourceInfo(map, "name") or getResourceName(map)
		local rating = exports.mapratings:getMapRating(mapName)   
		if rating then
        local average = tonumber(rating.average) or "0"
		end
		stringSet = "Current map: ".. mapName.." ("..tostring(average).."/10)\n"..stringSet
	end
	setElementData(resourceRoot, 'gamemode.nextmap', stringSet)	
end
addEventHandler('onNextmapSettingChange', root, nmap)

And here's a screenshot showing what I want to achieve

1fRksBW.png

As you see, the "Next Map" window at top right shows "(nil/10) as map rating. I can't get it to show the actual average rating of the maps there (or if map has no rating yet, to show 0/10).

Link to comment

FIXED

Thanks to @dugasz1 @xiti and @lukum! Working code below if anyone's interested.

Client

drawNextText = ''
_nextWidth = 0
_nextHeight = 0
local g__sW, g__sH = guiGetScreenSize()
local sx, sy = g__sW/1440, g__sH/900
local visible = true

function getinfo(name, oldvalue)
	if source == getResourceRootElement() and name == 'gamemode.nextmap' then
		local what = getElementData(getResourceRootElement(), 'gamemode.nextmap')
		drawNextText = what
		_nextWidth = dxGetTextWidth(what, 0.45, 'bankgothic')
		_nextHeight = dxGetFontHeight(0.45, 'bankgothic') * 3
	end
end
addEventHandler('onClientElementDataChange', root, getinfo)

function drawinfo()
	if _nextWidth == 0 then return end
	if visible then
    dxDrawRectangle((g__sW-95)-(_nextWidth+20), 12*sy, _nextWidth+20, _nextHeight+10, tocolor(0,0,0,100),false)
    dxDrawText(drawNextText, (g__sW-95)-(_nextWidth+20)+5, 12*sy, (g__sW-100)-(_nextWidth+20)+_nextWidth+15, 5+_nextHeight+17, tocolor(254, 254, 34, 255), 0.45, 'bankgothic', 'center', 'center', true)
	end
end
addEventHandler("onClientRender",root, drawinfo)

function shownextmap()
		visible = true
end

function hidenextmap()
	if visible then
		visible = false
	end
end

Server

addEvent('onNextmapSettingChange', true)
function nmap(nmap)
	local mapName = getResourceInfo(nmap, "name") or getResourceName(nmap)
	local rating = exports.mapratings:getMapRating(getResourceName(nmap))
	local average = 0
    if rating then
    average = tonumber(rating.average) or "0"
    end
	local stringSet = "Next map: "..mapName.." ("..tostring(average).."/10)"
	nextmap = stringSet
	map = exports.mapmanager:getRunningGamemodeMap()
	if map then
		local mapName = getResourceInfo(map, "name") or getResourceName(map)
        local rating = exports.mapratings:getMapRating(getResourceName(map))		
		local average = 0
        if rating then
        average = tonumber(rating.average) or "0"
        end
		stringSet = "Current map: ".. mapName.." ("..tostring(average).."/10)\n"..stringSet
	end
	setElementData(resourceRoot, 'gamemode.nextmap', stringSet)	
end
addEventHandler('onNextmapSettingChange', root, nmap)

function safeString(s)
    s = string.gsub(s, '&', '&')
    s = string.gsub(s, '"', '"')
    s = string.gsub(s, '<', '&lt;')
    s = string.gsub(s, '>', '&gt;')
    return s:gsub( "(['])", "''" )
end

meta.xml

<meta>
	<info name="Current/Next Map Info" description="Map Names Info" author="SDK/BinSlayer" type="script" version="1.0"/>
	<script src="server.lua" type="server"/>
	<script src="client.lua" type="client"/>
	
	<export function="shownextmap" type="client"/>
	<export function="hidenextmap" type="client"/>
	
</meta>

PS Not sure if it can work on default race.zip but won't hurt to try. Lock the topic, problem fixed.

Edited by koragg
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...