• Map graphs
    4 replies, posted
So i'm running a server with fastdl and it's downloading fine but every time i join i start downloading graphs which means that it fails to download everytime, is there a way to force server not to force client to download map graphs? Because i'm using Nitrous Networks fastdl and he won't sync and compress map graphs for client download...
Iirc, it doesn't force to download it unless you are resource.AddFile'ing the graph.
Well i'm not. Edit: I didn't want to make a new thread but i have a problem with fretta in prop hunt. It only happends when server is empty and no one votes for gamemode. [CODE][ERROR] gamemodes/fretta/gamemode/sv_gmchanger.lua:37: attempt to index a nil value 1. GetNumberOfGamemodeMaps - gamemodes/fretta/gamemode/sv_gmchanger.lua:37 2. StartMapVote - gamemodes/fretta/gamemode/sv_gmchanger.lua:263 3. unknown - gamemodes/fretta/gamemode/sv_gmchanger.lua:327 Timer Failed! [Simple]@gamemode/fretta/gamemode/sv_gmchanger.lua ][/CODE]
[QUOTE=Belly136;45924762]Well i'm not. Edit: I didn't want to make a new thread but i have a problem with fretta in prop hunt. It only happends when server is empty and no one votes for gamemode. [CODE][ERROR] gamemodes/fretta/gamemode/sv_gmchanger.lua:37: attempt to index a nil value 1. GetNumberOfGamemodeMaps - gamemodes/fretta/gamemode/sv_gmchanger.lua:37 2. StartMapVote - gamemodes/fretta/gamemode/sv_gmchanger.lua:263 3. unknown - gamemodes/fretta/gamemode/sv_gmchanger.lua:327 Timer Failed! [Simple]@gamemode/fretta/gamemode/sv_gmchanger.lua ][/CODE][/QUOTE] Post your code.
[CODE]/* sv_gmchanger.lua - Gamemode Changer (server side) ----------------------------------------------------- Most of the internal stuff for the votes is here and contains stuff you really don't want to override. */ local g_PlayableGamemodes = {} fretta_votesneeded = CreateConVar( "fretta_votesneeded", "0.75", { FCVAR_ARCHIVE } ) fretta_votetime = CreateConVar( "fretta_votetime", "20", { FCVAR_ARCHIVE } ) fretta_votegraceperiod = CreateConVar( "fretta_votegraceperiod", "30", { FCVAR_ARCHIVE } ) local function SendAvailableGamemodes( ply ) net.Start("PlayableGamemodes") net.WriteTable(g_PlayableGamemodes) net.Send(ply) end function GetRandomGamemodeName() return table.Random( g_PlayableGamemodes ).name end function GetRandomGamemodeMap( gm ) return table.Random( g_PlayableGamemodes[ gm or GAMEMODE.FolderName ].maps ) end function GetNumberOfGamemodeMaps( gm ) return table.Count( g_PlayableGamemodes[ gm or GAMEMODE.FolderName ].maps ) end hook.Add( "PlayerInitialSpawn", "SendAvailableGamemodes", SendAvailableGamemodes ) local AllMaps = file.Find( "maps/*.bsp", "GAME" ) for key, map in pairs( AllMaps ) do AllMaps[ key ] = string.gsub( map, ".bsp", "" ) end local GameModes = engine.GetGamemodes() for _, gm in pairs( engine.GetGamemodes() ) do local info = file.Read( "gamemodes/"..gm.name.."/"..gm.name..".txt", "MOD" ) if ( info ) then local info = util.KeyValuesToTable( info ) if ( info.selectable == 1 ) then g_PlayableGamemodes[ gm.name ] = {} g_PlayableGamemodes[ gm.name ].name = gm.title g_PlayableGamemodes[ gm.name ].label = info.title g_PlayableGamemodes[ gm.name ].description = info.description g_PlayableGamemodes[ gm.name ].author = info.author_name g_PlayableGamemodes[ gm.name ].authorurl = info.author_url g_PlayableGamemodes[ gm.name ].maps = {} if ( info.fretta_maps ) then for _, mapname in pairs( AllMaps ) do mapname = string.lower(mapname) for _, p in pairs( info.fretta_maps ) do if ( string.sub( mapname, 1, #p ) == p ) then table.insert( g_PlayableGamemodes[ gm.name ].maps, mapname ) end end end else g_PlayableGamemodes[ gm.name ].maps = AllMaps end if ( info.fretta_maps_disallow ) then for key, mapname in pairs( g_PlayableGamemodes[ gm.name ].maps ) do mapname = string.lower(mapname) for _, p in pairs( info.fretta_maps_disallow ) do if ( string.sub( mapname, 1, #p ) == p ) then g_PlayableGamemodes[ gm.name ].maps[ key ] = nil end end end end end end end GameModes = nil function GM:IsValidGamemode( gamemode, map ) if ( g_PlayableGamemodes[ gamemode ] == nil ) then return false end if ( map == nil ) then return true end for _, mapname in pairs( g_PlayableGamemodes[ gamemode ].maps ) do if ( mapname == map ) then return true end end return false end local gVotes = {} function GM:VotePlayGamemode( ply, gamemode ) if ( !gamemode ) then return end if ( GAMEMODE.WinningGamemode ) then return end if ( !GAMEMODE:InGamemodeVote() ) then return end if ( !GAMEMODE:IsValidGamemode( gamemode ) ) then return end ply:SetNWString( "Wants", gamemode ) end concommand.Add( "votegamemode", function( pl, cmd, args ) GAMEMODE:VotePlayGamemode( pl, args[1] ) end ) function GM:VotePlayMap( ply, map ) if ( !map ) then return end if ( !GAMEMODE.WinningGamemode ) then return end if ( !GAMEMODE:InGamemodeVote() ) then return end if ( !GAMEMODE:IsValidGamemode( GAMEMODE.WinningGamemode, map ) ) then return end ply:SetNWString( "Wants", map ) end concommand.Add( "votemap", function( pl, cmd, args ) GAMEMODE:VotePlayMap( pl, args[1] ) end ) function GM:GetFractionOfPlayersThatWantChange() local Humans = player.GetHumans() local NumHumans = #Humans local WantsChange = 0 for k, player in pairs( Humans ) do if ( player:GetNWBool( "WantsVote" ) ) then WantsChange = WantsChange + 1 end // Don't count players that aren't connected yet if ( !player:IsConnected() ) then NumHumans = NumHumans - 1 end end local fraction = WantsChange / NumHumans return fraction, NumHumans, WantsChange end function GM:GetVotesNeededForChange() local Fraction, NumHumans, WantsChange = GAMEMODE:GetFractionOfPlayersThatWantChange() local FractionNeeded = fretta_votesneeded:GetFloat() local VotesNeeded = math.ceil( FractionNeeded * NumHumans ) return VotesNeeded - WantsChange end function GM:CountVotesForChange() if ( CurTime() >= GetConVarNumber( "fretta_votegraceperiod" ) ) then // can't vote too early on if ( GAMEMODE:InGamemodeVote() ) then return end fraction = GAMEMODE:GetFractionOfPlayersThatWantChange() if ( fraction > fretta_votesneeded:GetFloat() ) then GAMEMODE:StartGamemodeVote() return false end end return true end function GM:VoteForChange( ply ) if ( GetConVarNumber( "fretta_voting" ) == 0 ) then return end if ( ply:GetNWBool( "WantsVote" ) ) then return end ply:SetNWBool( "WantsVote", true ) local VotesNeeded = GAMEMODE:GetVotesNeededForChange() local NeedTxt = "" if ( VotesNeeded > 0 ) then NeedTxt = ", Color( 80, 255, 50 ), [[ (need "..VotesNeeded.." more) ]] " end if ( CurTime() < GetConVarNumber( "fretta_votegraceperiod" ) ) then // can't vote too early on local timediff = math.Round( GetConVarNumber( "fretta_votegraceperiod" ) - CurTime() ); BroadcastLua( "chat.AddText( Entity("..ply:EntIndex().."), Color( 255, 255, 255 ), [[ voted to change the gamemode]] )" ) else BroadcastLua( "chat.AddText( Entity("..ply:EntIndex().."), Color( 255, 255, 255 ), [[ voted to change the gamemode]] "..NeedTxt.." )" ) end Msg( ply:Nick() .. " voted to change the gamemode\n" ) timer.Simple( 5, function() GAMEMODE:CountVotesForChange() end ) end concommand.Add( "VoteForChange", function( pl, cmd, args ) GAMEMODE:VoteForChange( pl ) end ) timer.Create( "VoteForChangeThink", 10, 0, function() if ( GAMEMODE ) then GAMEMODE.CountVotesForChange( GAMEMODE ) end end ) function GM:ClearPlayerWants() for k, ply in pairs( player.GetAll() ) do ply:SetNWString( "Wants", "" ) end end function GM:StartGamemodeVote() if( !GAMEMODE.m_bVotingStarted ) then if ( fretta_voting:GetBool() ) then GAMEMODE:ClearPlayerWants() BroadcastLua( "GAMEMODE:ShowGamemodeChooser()" ); SetGlobalBool( "InGamemodeVote", true ) else GAMEMODE.WinningGamemode = GAMEMODE.FolderName return GAMEMODE:StartMapVote() end timer.Simple( fretta_votetime:GetFloat(), function() GAMEMODE:FinishGamemodeVote( true ) end ) SetGlobalFloat( "VoteEndTime", CurTime() + fretta_votetime:GetFloat() ) GAMEMODE.m_bVotingStarted = true; end end function GM:StartMapVote() // If there's only one map, let the 'random map' thing choose it if ( GetNumberOfGamemodeMaps( GAMEMODE.WinningGamemode ) == 1 ) then return GAMEMODE:FinishMapVote( true ) end BroadcastLua( "GAMEMODE:ShowMapChooserForGamemode( \""..GAMEMODE.WinningGamemode.."\" )" ); timer.Simple( fretta_votetime:GetFloat(), function() GAMEMODE:FinishMapVote() end ) SetGlobalFloat( "VoteEndTime", CurTime() + fretta_votetime:GetFloat() ) end function GM:GetWinningWant() local Votes = {} for k, ply in pairs( player.GetAll() ) do local want = ply:GetNWString( "Wants", nil ) if ( want && want != "" ) then Votes[ want ] = Votes[ want ] or 0 Votes[ want ] = Votes[ want ] + 1 end end return table.GetWinningKey( Votes ) end function GM:WorkOutWinningGamemode() if ( GAMEMODE.WinningGamemode ) then return GAMEMODE.WinningGamemode end // Gamemode Voting disabled, return current gamemode if ( !fretta_voting:GetBool() ) then return GAMEMODE.FolderName end local winner = GAMEMODE:GetWinningWant() if ( !winner ) then return GetRandomGamemodeName() end
Sorry, you need to Log In to post a reply to this thread.