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.