ULX Votemap Help

Post Reply
Nerf Herder
New to forums
New to forums
Posts: 2
https://www.youtube.com/channel/UC40BgXanDqOYoVCYFDSTfHA
Joined: Tue Sep 16, 2014 2:55 am

ULX Votemap Help

Post by Nerf Herder »

I'm stuck on an issue with my Garrysmod server. I want to get rid of several of the maps so that they don't show up in my Votemap list (ex. many of the CS:Source maps). I tried excluding them through the ULX admin GUI, however even though I have them listed in the exclude list, they'll still be available to vote on when the time comes. I've websync'ed and restarted my server to make sure those weren't the issues.

Any suggestions would be helpful as the solutions I have found other places online have not helped me fix the issue. I appreciate the help.
theRadAleks
This is my homepage
This is my homepage
Posts: 203
Joined: Wed Feb 19, 2014 6:07 pm
Location: Dallas, TX

Re: ULX Votemap Help

Post by theRadAleks »

You can go to addons/ulx/lua/ulx/modules/votemap.lua and you should be able to edit them out from there.
Nerf Herder
New to forums
New to forums
Posts: 2
Joined: Tue Sep 16, 2014 2:55 am

Re: ULX Votemap Help

Post by Nerf Herder »

I'm honestly confused as to what changes I would need to make as my skill level just isn't here. Just getting frustrated since every change I have made to the server so far regarding the maps has done nothing to change the list. Here's the current coding of the file you mentioned.

------------------
--Public votemap--
------------------
ulx.votemaps = {}
local specifiedMaps = {}

local function init()
local mode = GetConVarNumber( "ulx_votemapMapmode" ) or 1
if mode == 1 then -- Add all but specified
local maps = file.Find( "maps/*.bsp", "GAME" )
for _, map in ipairs( maps ) do
map = map:sub( 1, -5 ) -- Take off .bsp
if not specifiedMaps[ map ] then
table.insert( ulx.votemaps, map )
end
end
else
for map, _ in pairs( specifiedMaps ) do
if ULib.fileExists( "maps/" .. map .. ".bsp" ) then
table.insert( ulx.votemaps, map )
end
end
end

-- Now, let's sort!
table.sort( ulx.votemaps )
end
hook.Add( ulx.HOOK_ULXDONELOADING, "ULXInitConfigs", init ) -- Time for configs

local userMapvote = {} -- Indexed by player.
local mapvotes = {} -- Indexed by map.
ulx.timedVeto = nil

ulx.convar( "votemapEnabled", "1", _, ULib.ACCESS_ADMIN ) -- Enable/Disable the entire votemap command
ulx.convar( "votemapMintime", "10", _, ULib.ACCESS_ADMIN ) -- Time after map change before votes count.
ulx.convar( "votemapWaittime", "5", _, ULib.ACCESS_ADMIN ) -- Time before a user must wait before they can change their vote.
ulx.convar( "votemapSuccessratio", "0.5", _, ULib.ACCESS_ADMIN ) -- Ratio of (votes for map)/(total players) needed to change map. (Rounds up)
ulx.convar( "votemapMinvotes", "3", _, ULib.ACCESS_ADMIN ) -- Number of minimum votes needed to change map (Prevents llamas). This supercedes the above convar on small servers.
ulx.convar( "votemapVetotime", "30", _, ULib.ACCESS_ADMIN ) -- Time in seconds an admin has after a successful votemap to veto the vote. Set to 0 to disable.
ulx.convar( "votemapMapmode", "1", _, ULib.ACCESS_ADMIN ) -- 1 = Use all maps but what's specified below, 2 = Use only the maps specified below.

function ulx.votemapVeto( calling_ply )
if not ulx.timedVeto then
ULib.tsayError( calling_ply, "There's nothing to veto!", true )
return
end

timer.Destroy( "ULXVotemap" )
ulx.timedVeto = nil
hook.Call( ulx.HOOK_VETO )
ULib.tsay( _, "Votemap changelevel halted.", true )
ulx.logServAct( calling_ply, "#A vetoed the votemap" )
end
-- The command is defined at the end of vote.lua

function ulx.votemapAddMap( map )
specifiedMaps[ map ] = true
end

function ulx.clearVotemaps()
table.Empty( specifiedMaps )
end

function ulx.votemap( calling_ply, map )
if not util.tobool( GetConVarNumber( "ulx_votemapEnabled" ) ) then
ULib.tsayError( calling_ply, "The votemap command has been disabled by a server admin.", true )
return
end

if not calling_ply:IsValid() then
Msg( "You can't use votemap from the dedicated server console.\n" )
return
end

if ulx.timedVeto then
ULib.tsayError( calling_ply, "You cannot vote right now, another map has already won and is pending approval.", true )
return
end

if not map or map == "" then
ULib.tsay( calling_ply, "Map list printed to console", true )
ULib.console( calling_ply, "Use \"votemap <id>\" to vote for a map. Map list:" )
for id, map in ipairs( ulx.votemaps ) do
ULib.console( calling_ply, " " .. id .. " -\t" .. map )
end
return
end

local mintime = tonumber( GetConVarString( "ulx_votemapMintime" ) ) or 10
if CurTime() < mintime * 60 then -- Minutes -> seconds
ULib.tsayError( calling_ply, "Sorry, you must wait " .. mintime .. " minutes after a map change before you can vote for another map.", true )
local timediff = mintime*60 - CurTime()
ULib.tsayError( calling_ply, "That means you must wait " .. string.FormattedTime( math.fmod( timediff, 3600 ), (mintime < 60) and "%02i:%02i" or math.floor( timediff/3600 ) .. " hour(s) and %02i:%02i" ) .. " more minutes.", true )
return
end

if userMapvote[ calling_ply ] then
local waittime = tonumber( GetConVarString( "ulx_votemapWaittime" ) ) or 5
if CurTime() - userMapvote[ calling_ply ].time < waittime * 60 then -- Minutes -> seconds
ULib.tsayError( calling_ply, "Sorry, you must wait " .. waittime .. " minutes before changing your vote.", true )
local timediff = waittime*60 - (CurTime() - userMapvote[ calling_ply ].time)
ULib.tsayError( calling_ply, "That means you must wait " .. string.FormattedTime( math.fmod( timediff, 3600 ), (waittime < 60) and "%02i:%02i" or math.floor( timediff/3600 ) .. " hour(s) and %02i:%02i" ) .. " more minutes.", true )
return
end
end


local mapid
if tonumber( map ) then
mapid = tonumber( map )
if not ulx.votemaps[ mapid ] then
ULib.tsayError( calling_ply, "Invalid map id!", true )
return
end
else
if string.sub( map, -4 ) == ".bsp" then
map = string.sub( map, 1, -5 ) -- Take off the .bsp
end

mapid = ULib.findInTable( ulx.votemaps, map )
if not mapid then
ULib.tsayError( calling_ply, "Invalid map!", true )
return
end
end

if userMapvote[ calling_ply ] then -- Take away from their previous vote
mapvotes[ userMapvote[ calling_ply ].mapid ] = mapvotes[ userMapvote[ calling_ply ].mapid ] - 1
end

userMapvote[ calling_ply ] = { mapid=mapid, time=CurTime() }
mapvotes[ mapid ] = mapvotes[ mapid ] or 0
mapvotes[ mapid ] = mapvotes[ mapid ] + 1

local minvotes = tonumber( GetConVarString( "ulx_votemapMinvotes" ) ) or 0
local successratio = tonumber( GetConVarString( "ulx_votemapSuccessratio" ) ) or 0.5

local votes_needed = math.ceil( math.max( minvotes, successratio * #player.GetAll() ) ) -- Round up whatever the largest is.

-- TODO, color?
ULib.tsay( _, string.format( "%s voted for %s (%i/%i). Say \"!votemap %i\" to vote for this map too.", calling_ply:Nick(), ulx.votemaps[ mapid ], mapvotes[ mapid ], votes_needed, mapid ), true )
ulx.logString( string.format( "%s voted for %s (%i/%i)", calling_ply:Nick(), ulx.votemaps[ mapid ], mapvotes[ mapid ], votes_needed ) )

if mapvotes[ mapid ] >= votes_needed then
local vetotime = tonumber( GetConVarString( "ulx_votemapVetotime" ) ) or 30

local admins = {}
local players = player.GetAll()
for _, player in ipairs( players ) do
if player:IsConnected() then
if ULib.ucl.query( player, "ulx veto" ) then
table.insert( admins, player )
end
end
end

if #admins <= 0 or vetotime < 1 then
ULib.tsay( _, "Vote for map " .. ulx.votemaps[ mapid ] .. " successful! Changing levels now.", true ) -- TODO, color?
ulx.logString( "Votemap for " .. ulx.votemaps[ mapid ] .. " won." )
game.ConsoleCommand( "changelevel " .. ulx.votemaps[ mapid ] .. "\n" )
else
ULib.tsay( _, "Vote for map " .. ulx.votemaps[ mapid ] .. " successful! Now pending admin approval. (" .. vetotime .. " seconds)", true ) -- TODO, color?
for _, player in ipairs( admins ) do
ULib.tsay( player, "To veto this vote, just say \"!veto\"", true ) -- TODO, color?
end
ulx.logString( "Votemap for " .. ulx.votemaps[ mapid ] .. " won. Pending admin veto." )
ulx.timedVeto = true
hook.Call( ulx.HOOK_VETO )
timer.Create( "ULXVotemap", vetotime, 1, function() game.ConsoleCommand( "changelevel " .. ulx.votemaps[ mapid ] .. "\n" ) end )
end
end
end
-- This command is defined at the bottom of vote.lua

function ulx.votemap_disconnect( ply ) -- We use this to clear out old people's votes
if userMapvote[ ply ] then -- Take away from their previous vote
mapvotes[ userMapvote[ ply ].mapid ] = mapvotes[ userMapvote[ ply ].mapid ] - 1
userMapvote[ ply ] = nil
end
end
hook.Add( "PlayerDisconnected", "ULXVoteDisconnect", ulx.votemap_disconnect )
theRadAleks
This is my homepage
This is my homepage
Posts: 203
Joined: Wed Feb 19, 2014 6:07 pm
Location: Dallas, TX

Re: ULX Votemap Help

Post by theRadAleks »

Here you should check this link out! http://forums.ulyssesmod.net/index.php?topic=5777.0 See if this will help!
Post Reply