[L4D2] Проблемы с сервером

Обсуждаем все, что относится к выделенным серверам *NIX (Unix, Linux) и Windows
Ответить
Сообщение
Автор
3DI70R
Нович0к
Нович0к
Сообщения: 5
Зарегистрирован: 13.05.2010

#1 Сообщение 13.05.2010, 15:32

Всем здрасти

Перейду сразу к делу
После обновления сервера до версии 2.0.1.7 на нём появился очень противный баг, не дающий нормально играть.

А суть этого бага вот в чём:

После окончания 2х раундов идёт смена карты, всё как обычно, но во время этой смены всех клиентов просто выкидывает с сервера, А после переподключения запускается снова эта же самая карта.
В логе сервера ничего ненормального не наблюдается, выбрасывание всех клиентов сопровождается обычным сообщением (Client ... Disconnected by user)

На версии 2.0.1.5 всё работало отлично (по крайней мере не замечал ничего такого), глюки проявились только после перехода на патч 2.0.1.7

Вот *Вродебы* Вся необходимая информация
Сообщение которое высвечивается в консоли клиента
Received wrong spawn count 3 when at 2
Commencing connection retry to public(l4d.tlt.ru:27021)
failed processing
Dumping messages for channel CLIENT(217.113.113.117:27021) 0x07BFA0D0
Header bits 96, flags == 33
1 messages
0 -----------------------
net_SignonState: type( 7 ) group ( 13 ) size ( 68 bytes ), startbit 6 end bit 230
net_SignonState: state 7, count 3
RAW(net_SignonState) start
net_SignonState >> ^3.....Р. .#......... f05e3309 01000000 d0a0bf07 2000230c 07000000 03000000
net_SignonState >> ........................ 00000000 00000000 00000000 00000000 00000000 00000000
net_SignonState >> .. ............. e0f0b903 20000000 00000000 0b000000 e0f0b903
RAW(net_SignonState) end
Raw
PKT >> @..._...!z.K......... 40070000 5f090000 21f87a00 4b0700c7 c1000000 00000000
PKT >> .......XL[..]..@ 00000000 c0020000 c0584c5b cc17da1b 5d191b40 80
Bad server address public("l4d.tlt.ru:27021")
BinkOpen( c:\program files\valve\star-steam\steamapps\common\left 4 dead 2\left4dead2\media\l4d2_background02.bik )
Содержание Server.cfg
sv_allow_wait_command "1"
sv_allow_lobby_connect_only 0
sv_consistency "1"
sv_pausable "0"
sv_voiceenable "1"
sv_alltalk "0"
sv_region "255"
motd_enabled "1"
mp_disable_autokick "1"
sv_pure_kick_clients "0"
sm_cvar sb_all_bot_team "0"
sm_cvar vs_max_team_switches "910"
sm_cvar ics_allowsameclass "1"
sv_search_key "game.tlt.ru"
mp_gamemode "versus"
sv_gametypes "versus"
sv_steamgroup_exclusive "0"
l4d_bd_botdelay "1"
l4d_bd_botdelaytime "10"
sv_maxrate "30000"
sv_minrate "10000"
sv_mincmdrate "33"
sv_maxcmdrate "100"
sv_forcepreload "1"
sv_downloadurl ""


hostname "L4D2 Game.TLT.ru Versus 10x10"


sm_cvar l4d_infectedbots_max_specials "10"
sm_cvar l4d_infectedbots_boomer_limit "2"
sm_cvar l4d_infectedbots_hunter_limit "4"

fps_max 0


sm_cvar tongue_range "2000" // Default (750)
sm_cvar tongue_break_from_damage_amount "50" // (Default 50)


sm_cvar mt_count_regular_versus "2"
sm_cvar mt_count_finalestart_versus "2"
sm_cvar mt_count_finalestart2_versus "2"
sm_cvar mt_count_finale_versus "2"
sm_cvar mt_count_escapestart_versus "2"


sm_cvar sv_visiblemaxplayers "20"
sm_cvar sv_maxplayers "20"
sm_cvar l4d_maxplayers "20"
sm_cvar sv_removehumanlimit "1"
sm_cvar sv_force_unreserved "1"
sm_cvar l4d_infected_limit "10"
sm_cvar l4d_survivor_limit "10"

sm_cvar survivor_allow_crawling "1"
survivor_allow_crawling "1"
sm_cvar survivor_crawl_speed "25"

sm_hardzombies "1"

sm_cvar ics_allowsameclass "1"

////////////////////////////////////////////////////////////////////
log on
//logaddress_delall // Removes all previous log destinations
logaddress_add "217.113.113.100:27500"
sv_logbans 1
sv_logecho 1
sv_logfile 1
sv_log_onefile 1
mp_logdetail 3
/////////////////////////////////////////////////////////////////////

exec banned_ip
exec banned_user
writeip
writeid
Вот информация по версиям MM SM
Metamod:Source version 1.8.1
Build ID: 702:b21cf03c429a
Loaded As: Valve Server Plugin
Compiled on: May 2 2010
Plugin interface version: 15:14
SourceHook version: 5:5
http://www.metamodsource.net/

SourceMod Version Information:
SourceMod Version: 1.3.2
SourcePawn Engine: SourcePawn 1.1, jit-x86 (build 1.3.2)
SourcePawn API: v1 = 4, v2 = 3
Compiled on: May 2 2010 17:18:21
Build ID: 2958:a3e8f7a7fdf7
http://www.sourcemod.net/
Используемые плагины
[SM] Listing 31 plugins:
01 "Admin File Reader" (1.3.2) by AlliedModders LLC
02 "Admin Help" (1.3.2) by AlliedModders LLC
03 "Admin Menu" (1.3.2) by AlliedModders LLC
04 "AFK Manager" (2.6) by Liam
05 "Anti-Flood" (1.3.2) by AlliedModders LLC
06 "Basic Ban Commands" (1.3.2) by AlliedModders LLC
07 "Basic Chat" (1.3.2) by AlliedModders LLC
08 "Basic Comm Control" (1.3.2) by AlliedModders LLC
09 "Basic Commands" (1.3.2) by AlliedModders LLC
10 "Basic Info Triggers" (1.3.2) by AlliedModders LLC
11 "Basic Votes" (1.3.2) by AlliedModders LLC
12 "Connect Announce" (1.0.1) by Arg!
13 "Client Preferences" (1.3.2) by AlliedModders LLC
14 "Fun Commands" (1.3.2) by AlliedModders LLC
15 "Fun Votes" (1.3.2) by AlliedModders LLC
16 "HLstatsX CE Ingame Plugin" (1.6.7) by psychonic
17 "[L4D2] Infected Character Select" (0.7.3) by Crimson_Fox
18 "L4D2 Laser Sights" (1.0.1) by AtomicStryker
19 "[L4D2] Upgrade Packs FIXES" (1.4) by V10
20 "[L4D2] Weapon Unlock" (0.8.1) by Crimson_Fox
21 "[L4D/L4D2] Infected Bots" (1.9.3) by djromero (SkyDavid), MI 5
22 "L4D_Cloud_Damage" (2.14) by AtomicStryker
23 "[L4D] MultiTanks" (1.4.4) by Red Alex
24 "mv_l4d_takeoverbot.smx"
25 Disabled: "Nextmap" (1.3.2) by AlliedModders LLC
26 "L4D SuperVersus" (1.5.4) by DDRKhat
27 "Player Commands" (1.3.2) by AlliedModders LLC
28 "Reserved Slots" (1.3.2) by AlliedModders LLC
29 "L4D Force Mission Changer" (1.4.0) by Dionys
30 "Sound Commands" (1.3.2) by AlliedModders LLC
31 "SuperLogs: L4D" (1.1.3) by psychonic
32 "L4D Vote Manager 2" (1.5.5) by Madcap
Используемые расширения
[SM] Displaying 11 extensions:
[01] Automatic Updater (1.3.2): Updates SourceMod gamedata files
[02] Webternet (1.3.2): Extension for interacting with URLs
[03] DefibFix Extension (1.0.0.4): Fixes defibrillator re-revive clone bug (on s
ervers higher than 8 players)
[04] [L4D2] 8+ Players BugFixes (1.0.0.6): This extension try fix some bugs on s
erver have more than 8 players
[05] Left 4 Downtown Extension (0.4.7.0): Downtown1's extension to call do usefu
l L4D1/L4D2 calls
[06] BinTools (1.3.2): Low-level C/C++ Calling API
[07] Top Menus (1.3.2): Creates sorted nested menus
[08] SDK Tools (1.3.2): Source SDK Tools
[09] GeoIP (1.3.2): Geographical IP information
[10] Client Preferences (1.3.2): Saves client preference settings
[11] SQLite (1.3.2): SQLite Driver
Также используется плагин для MetaMod под названием L4Dtoolz (анлочит количество слотов до 32)
Сервер работает в режиме 10vs10

Пытался гуглить по этой теме, но ничего даже чуточку похожего на мою проблему не нашёл...
Зарегистрировался здесь, в надежде решить эту проблемку.

P.s мой никнейм читается как Editor, ну так на всякий случай.
Последний раз редактировалось 3DI70R 13.05.2010, 17:12, всего редактировалось 1 раз.

Аватара пользователя
Jonny
Полковник
Полковник
Сообщения: 1371
Зарегистрирован: 30.05.2008
Благодарил (а): 23 раза
Поблагодарили: 54 раза

#2 Сообщение 13.05.2010, 16:03

Попробуй заменить FMC на мой nextmap (последний пост отсюда: http://forum.csmania.ru/viewtopic.php?f=28&t=23025)
FMC на версусе у меня тоже не заработал, я недавно пытался. С тем же результатом

Добавлено спустя 2 минуты 38 секунд:
и удали из папки plugins файл nextmap.smx
Никакого отношения к нацистским группам и направлениям не имею.

3DI70R
Нович0к
Нович0к
Сообщения: 5
Зарегистрирован: 13.05.2010

#3 Сообщение 13.05.2010, 17:14

Нет, не помогло, вылетает как и раньше.

Я всётаки думаю что причина либо в Left4Downtown либо в Superversus, так как без них сервер работает отлично.
Но какую бы я их версию не ставил, проблема остаётся, либо они не работают, либо не меняется карта.

Аватара пользователя
Jonny
Полковник
Полковник
Сообщения: 1371
Зарегистрирован: 30.05.2008
Благодарил (а): 23 раза
Поблагодарили: 54 раза

#4 Сообщение 13.05.2010, 17:39

Left4Downtown не пользовал, а вот Superversus я редактировал только не помню уже что

Код: Выделить всё

/* ========================================================
 * L4D SuperVersus
 * ========================================================
 * Created by DDRKhat
 * Based upon Damizean's "L4D Spawn Missing Survivors"
 * ========================================================
v1.5.4
-Hooked Round_Start. (Should Improve TankHP and Bot spawning)
 v1.5.3
-Improved setting of TankHP (Should be definite now?)
v1.5.2
-Adjusted Survivor Spawning. (Should be the end of Survivor Spawning issues)
-Changed Finale Vehicle Handling. (Thanks to Damizean for the EntProp value!)
-Bot Booter only boots "Useless Bots" (Bots not directly involved with Useful/incap system)
v1.5.1
-Survivor Spawning moved "player_first_spawn" once more.
v1.5
-Official Left4Dead2 support
-Added client check on bot kicker (No more "Free Slot." disconnections)
-Bot Kicker message changed to "Kicking fake client" to help distinquish.
-XtraHP medpack spawning moved (Possibly fixes crashing on windows servers?)
-Survivor spawning moved to round_start, instant spawns survivors now
-Tank's Health is now using the server CVAR, could cause conflictions with other plugins.
v1.4
-Fixed Cvar forcing on survivor and infected limits
-CVAR Handle code improvements.
-Config file added (l4d_superversus.cfg inside of cfg/Soucemod)
-Tank HP changing now affects HUD
-Improved Tank monitoring
-Improved Left4DownTown checks
v1.3
-Fixed oversight preventing survivor joining
-Join commands now obey vs_max_team_switches
-Added Finale check. Makes saved survivors safe (To protect points)
-Added (If Left4Downtown 0.3.0 or later exists) Lobby Unreserving
-Fixed rare extra survivor
-Added option for Extra medpacks for extra survivors.
v1.2
-Increased Survivor/Infected limit to 18
-Added text-commands to join both teams (for those without console when the GUI fails)
+!jointeam2 / !joinsurvivor - Text equivalent of console command: jointeam 2
+!jointeam3 / !joininfected - Text equivalent of console command: jointeam 3
-Fixed stupid programming sight. Tank spawning fixed as a result.
-Various code cleanup
V1.1
-Adjusts the games built-in variables for handling survivor/infected limit
-Added a text-command people can use to join infected (Where the Switch Team GUI might fail)
-Added a command to increase zombie count.
V1.0
-Initial Release
*/

// *********************************************************************************
// PREPROCESSOR
// *********************************************************************************
// *********************************************************************************
#pragma semicolon 1                 // Force strict semicolon mode.
// INCLUDES
// *********************************************************************************
#include <sourcemod>
#include <sdktools>
#include <sdktools_functions>
// *********************************************************************************
// OPTIONALS - If these exist, we use them. If not, we do nothing.
// *********************************************************************************
native L4D_LobbyUnreserve();
native L4D_LobbyIsReserved();
// *********************************************************************************
// CONSTANTS
// *********************************************************************************
#define CONSISTENCY_CHECK	1.0
#define DEBUG		0
#define PLUGIN_VERSION		"1.5.4"
#define CVAR_FLAGS FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD
// *********************************************************************************
// VARS
// *********************************************************************************
new Handle:SpawnTimer    		= INVALID_HANDLE;
new Handle:KickTimer    		= INVALID_HANDLE;
new Handle:SurvivorLimit 		= INVALID_HANDLE;
new Handle:InfectedLimit 		= INVALID_HANDLE;
new Handle:L4DSurvivorLimit 	= INVALID_HANDLE;
new Handle:L4DInfectedLimit 	= INVALID_HANDLE;
new Handle:SuperTank			= INVALID_HANDLE;
new Handle:hpMulti				= INVALID_HANDLE;
new Handle:XtraHP				= INVALID_HANDLE;
new Handle:KillRes				= INVALID_HANDLE;
new Handle:CvarTankHP			= INVALID_HANDLE;
new TankHP;
new bool:Useful[MAXPLAYERS+1];
#if DEBUG
new String:KhatID[] = "STEAM_1:1:2038252";
#endif
// *********************************************************************************
// PLUGIN
// *********************************************************************************
public Plugin:myinfo =
{
	name        = "L4D SuperVersus",
	author      = "DDRKhat",
	description = "Allow versus to become up to 18vs18",
	version     = PLUGIN_VERSION,
	url         = "http://forums.alliedmods.net/showthread.php?t=92713"
};
// *********************************************************************************
// METHODS
// *********************************************************************************
// ------------------------------------------------------------------------
// OnPluginStart()
// ------------------------------------------------------------------------
public OnPluginStart()
{
	//////////
	// Left4Dead Dependant
	//////////
	decl String:ModName[50];
	GetGameFolderName(ModName, sizeof(ModName));
	if(!StrEqual(ModName, "left4dead", false)&&!StrEqual(ModName, "left4dead2", false)) SetFailState("Use this in Left 4 Dead (2) only.");
	//////////
	// Convars
	//////////
	CreateConVar("sm_superversus_version", PLUGIN_VERSION, "L4D Super Versus", CVAR_FLAGS);
	CvarTankHP = FindConVar("z_tank_health");
	L4DSurvivorLimit = FindConVar("survivor_limit");
	L4DInfectedLimit   = FindConVar("z_max_player_zombies");
	SurvivorLimit = CreateConVar("l4d_survivor_limit","10","Maximum amount of survivors", CVAR_FLAGS,true,4.00,true,18.00);
	InfectedLimit = CreateConVar("l4d_infected_limit","10","Max amount of infected (will not affect bots)", CVAR_FLAGS,true,4.00,true,18.00);
	SuperTank = CreateConVar("l4d_supertank","0","Set tanks HP based on Survivor Count", CVAR_FLAGS,true,0.0,true,1.0);
	XtraHP = CreateConVar("l4d_XtraHP","0","Give extra survivors HP packs? (1 for extra medpacks)", CVAR_FLAGS,true,0.0,true,1.0);
	hpMulti = CreateConVar("l4d_tank_hpmulti","0.25","Tanks HP Multiplier (multi*(survivors-4))", CVAR_FLAGS,true,0.01,true,1.00);
	KillRes = CreateConVar("l4d_killreservation","0","Should we clear Lobby reservaton? (For use with Left4DownTown extension ONLY)", CVAR_FLAGS,true,0.0,true,1.0);
	//////////
	// Convar handling
	//////////
	SetConVarBounds(L4DSurvivorLimit, ConVarBound_Upper, true, 18.0);
	SetConVarBounds(L4DInfectedLimit,   ConVarBound_Upper, true, 18.0);
	HookConVarChange(L4DSurvivorLimit, FSL);
	HookConVarChange(SurvivorLimit, FSL);
	HookConVarChange(L4DInfectedLimit, FIL);
	HookConVarChange(InfectedLimit, FIL);
	HookConVarChange(CvarTankHP, TankHPCvar);
	HookConVarChange(hpMulti, TankHPCvar);
	//////////
	// Commands
	//////////
	#if DEBUG
	RegConsoleCmd("sm_ddr", KhatCommand, "You know what you doing, take off every zig!!");
	#endif
	RegAdminCmd("sm_hardzombies", HardZombies, ADMFLAG_KICK, "How many zombies you want. (In multiples of 30. Recommended: 3 Max: 6)");
//	RegConsoleCmd("sm_jointeam3", JoinTeam, "Jointeam 3 - Without dev console");
//	RegConsoleCmd("sm_joininfected", JoinTeam, "Jointeam 3 - Without dev console");
//	RegConsoleCmd("sm_jointeam2", JoinTeam2, "Jointeam 2 - Without dev console");
//	RegConsoleCmd("sm_joinsurvivor", JoinTeam2, "Jointeam 2 - Without dev console");
	//////////
	// Events
	//////////
	HookEvent("round_start",Event_RoundStart);
	HookEvent("heal_begin",Event_UsefulBegin);
	HookEvent("heal_end",Event_UsefulEnd);
	HookEvent("revive_begin",Event_UsefulBegin);
	HookEvent("revive_end",Event_UsefulEnd);
	HookEvent("finale_vehicle_leaving", Event_FinaleVehicleLeaving);
	//////////
	// Load our config
	//////////
	AutoExecConfig(true, "l4d_superversus");
}
// ------------------------------------------------------------------------
// OnAskPluginLoad() && OnLibraryRemoved && l4dt
// ------------------------------------------------------------------------
public bool:AskPluginLoad() {MarkNativeAsOptional("L4D_LobbyUnreserve");MarkNativeAsOptional("L4D_LobbyIsReserved");return true;}
public bool:l4dt()
{
	if(GetConVarFloat(FindConVar("left4downtown_version"))>0.00) return true;
	else return false;
}
public OnLibraryRemoved(const String:name[]) {if(StrEqual(name,"Left 4 Downtown Extension")) SetConVarInt(KillRes,0);}
// ------------------------------------------------------------------------
// OnConvarChange()
// ------------------------------------------------------------------------
#define FORCE_INT_CHANGE(%1,%2,%3) public %1 (Handle:c, const String:o[], const String:n[]) { SetConVarInt(%2,%3); } 
FORCE_INT_CHANGE(FSL,L4DSurvivorLimit,GetConVarInt(SurvivorLimit))
FORCE_INT_CHANGE(FIL,L4DInfectedLimit,GetConVarInt(InfectedLimit))
// ------------------------------------------------------------------------
// OnMapEnd()
// ------------------------------------------------------------------------
public OnMapEnd() {if (SpawnTimer != INVALID_HANDLE){KillTimer(SpawnTimer);SpawnTimer = INVALID_HANDLE;}}
// ------------------------------------------------------------------------
// jointeam2 && jointeam3
// ------------------------------------------------------------------------
public Action:JoinTeam(client, args) {FakeClientCommand(client,"jointeam 3");return Plugin_Handled;}
public Action:JoinTeam2(client, args) {FakeClientCommand(client,"jointeam 2");return Plugin_Handled;}
// ------------------------------------------------------------------------
// OnClientPutInServer - We have to use this because AIDirector Puts bots in, doesn't connect them.
// ------------------------------------------------------------------------
public OnClientPutInServer(client)
{
	if (SpawnTimer == INVALID_HANDLE&&TeamPlayers(2)<GetConVarInt(SurvivorLimit)) SpawnTimer = CreateTimer(CONSISTENCY_CHECK, SpawnTick, _, TIMER_REPEAT);
	if (KickTimer == INVALID_HANDLE&&TeamPlayers(2)>GetConVarInt(SurvivorLimit)) KickTimer = CreateTimer(CONSISTENCY_CHECK, KickTick, _, TIMER_REPEAT);
	SetTankHP();
	if(GetConVarInt(KillRes))
	{
		if(l4dt())	if(L4D_LobbyIsReserved()) L4D_LobbyUnreserve();
	}
}
// ------------------------------------------------------------------------
// TeamPlayers() arg = teamnum
// ------------------------------------------------------------------------
public TeamPlayers(any:team)
{
	new int=0;
	for (new i=1; i<=MaxClients; i++)
		{
			if (!IsClientConnected(i)) continue;
			if (!IsClientInGame(i))    continue;
			if (GetClientTeam(i) != team) continue;
			int++;
		}
	return int;
}
// ------------------------------------------------------------------------
// RealPlayersInGame()
// ------------------------------------------------------------------------
bool:RealPlayersInGame ()
{
	for (new i=1;i<=GetMaxClients();i++)
		if (IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i))
			return true;
	return false;
}
// ------------------------------------------------------------------------
// OnClientDisconnect()
// ------------------------------------------------------------------------
public OnClientDisconnect(client)
{
	if (IsFakeClient(client)) return;
	if (!RealPlayersInGame()) { new i; for (i=1;i<=GetMaxClients();i++) CreateTimer(0.1, KickFakeClient, i); }
}
// ------------------------------------------------------------------------
// SpawnFakeClient()
// ------------------------------------------------------------------------
SpawnFakeClient()
{
	// Spawn bot survivor.
	new Bot = CreateFakeClient("SurvivorBot");
	if (Bot == 0) return;

	ChangeClientTeam(Bot, 2);
	DispatchKeyValue(Bot, "classname", "SurvivorBot");
	if(GetConVarInt(XtraHP))
	{
		new med = GivePlayerItem(Bot,"weapon_first_aid_kit");
		if(med) EquipPlayerWeapon(Bot,med);
	}
	CreateTimer(0.1, KickFakeClient, Bot);
}
// ------------------------------------------------------------------------
// SpawnTick() 
// ------------------------------------------------------------------------
public Action:SpawnTick(Handle:hTimer, any:Junk)
{    
	#if DEBUG
	LogMessage("SpawnTick> Init");
	#endif
	// Determine the number of survivors and fill the empty
	// slots.
	new NumSurvivors = TeamPlayers(2);
	new MaxSurvivors = GetConVarInt(SurvivorLimit);
	#if DEBUG
	LogMessage("SpawnTick> Survivors: [%i/%i]",NumSurvivors,MaxSurvivors);
	#endif
	if (NumSurvivors < 4)
	{
		#if DEBUG
		LogMessage("SpawnTick> Less than 4 Survivors, Ending!");
		#endif
		KillTimer(SpawnTimer);
		SpawnTimer = INVALID_HANDLE;
		return Plugin_Stop;
	}
	// Create missing bots
	for (;NumSurvivors < MaxSurvivors; NumSurvivors++)
	{
		#if DEBUG
		LogMessage("SpawnTick> Spawning Surivvor. Survivors: [%i/%i]",NumSurvivors,MaxSurvivors);
		#endif
		SpawnFakeClient();
	}
	// Once the missing bots are made, dispose of the timer
	#if DEBUG
	LogMessage("SpawnTick> Ending");
	#endif
	KillTimer(SpawnTimer);
	SpawnTimer = INVALID_HANDLE;
	return Plugin_Stop;
}
// ------------------------------------------------------------------------
// KickTick()
// ------------------------------------------------------------------------
public Action:KickTick(Handle:hTimer, any:Junk)
{
	#if DEBUG
	LogMessage("KickTick> Init");
	#endif
	new NumSurvivors = TeamPlayers(2);
	new MaxSurvivors = GetConVarInt(SurvivorLimit);
	#if DEBUG
	LogMessage("KickTick> Survivors: [%i/%i]",NumSurvivors,MaxSurvivors);
	#endif
	if (NumSurvivors < 4)
	{
		#if DEBUG
		LogMessage("KickTick> Less than 4 Survivors, Ending!");
		#endif
		KillTimer(SpawnTimer);
		SpawnTimer = INVALID_HANDLE;
		return Plugin_Stop;
	}
	for (new i=1;i<=GetMaxClients();i++)
	{
		if(IsClientConnected(i)&&IsFakeClient(i)&&IsUseless(i)&&NumSurvivors>MaxSurvivors)
			#if DEBUG
			LogMessage("KickTick> Found Useless Bot Survivors: [%i/%i]",NumSurvivors,MaxSurvivors);
			#endif
			CreateTimer(0.0, KickFakeClient, i);
			NumSurvivors--;
	}
	#if DEBUG
	LogMessage("KickTick> Ending");
	#endif
	KillTimer(KickTimer);
	KickTimer = INVALID_HANDLE;
	return Plugin_Stop;
}
// ------------------------------------------------------------------------
// KickFakeClient()
// ------------------------------------------------------------------------
public Action:KickFakeClient(Handle:hTimer, any:Client)
{
	if(IsClientConnected(Client) && IsFakeClient(Client))
	{
		KickClient(Client, "Kicking Fake Client.");
	}
	return Plugin_Handled;
}
// ------------------------------------------------------------------------
// IsUseless() // Are we helping/being helped?
// ------------------------------------------------------------------------
bool:IsUseless(client)
{
	if(Useful[client] == false) return true;
	return false;
}
// ------------------------------------------------------------------------
// SetTankHP()
// ------------------------------------------------------------------------
bool:SetTankHP() // this delay is necassary or it fails.
{
	return;
	if(GetConVarInt(SuperTank))
	{
		new Float:extrasurvivors=(float(TeamPlayers(2))-4.0);
		if(RoundFloat(extrasurvivors)>0.0)
		{
			TankHP = RoundFloat((4000*(1.0+(GetConVarFloat(hpMulti)*extrasurvivors))));
			if(TankHP>65535) TankHP=65535;
		}
		else TankHP=4000;
	}
}
// ------------------------------------------------------------------------
// TankHPCvar()
// ------------------------------------------------------------------------
public TankHPCvar(Handle:c, const String:o[], const String:n[])
{
//	SetTankHP();
//	SetConVarInt(CvarTankHP,TankHP);
}
// ------------------------------------------------------------------------
// KhatCommand()
// ------------------------------------------------------------------------
#if DEBUG
public Action:KhatCommand(client, args) 
{
	new String:SteamID[64];
	GetClientAuthString(client, SteamID, sizeof(SteamID));
	if(StrEqual(SteamID,KhatID,true))
	{
		ReplyToCommand(client,"Hello DDRKhat. Command Executed.");
		if(IsUseless(client)) ReplyToCommand(client,"You are considered Useless!");
		if(!IsUseless(client)) ReplyToCommand(client,"You are considered not Useless!");
		if (SpawnTimer == INVALID_HANDLE&&TeamPlayers(2)<GetConVarInt(SurvivorLimit)) SpawnTimer = CreateTimer(CONSISTENCY_CHECK, SpawnTick, _, TIMER_REPEAT);
		if (KickTimer == INVALID_HANDLE&&TeamPlayers(2)>GetConVarInt(SurvivorLimit)) KickTimer = CreateTimer(CONSISTENCY_CHECK, KickTick, _, TIMER_REPEAT);
	}
	else
	{
		ReplyToCommand(client,"Sorry, only DDRKhat may execute this command.");
		PrintToChatAll("Someone attempted to activate the DDRKhat Command.!");
	}
}
#endif
// ------------------------------------------------------------------------
// HardZombies()
// ------------------------------------------------------------------------
public Action:HardZombies(client, args) 
{
	new String:arg[8];
	GetCmdArg(1,arg,8);
	new Input=StringToInt(arg[0]);
	if(Input==1)
	{
		SetConVarInt(FindConVar("z_common_limit"), 30); // Default
		SetConVarInt(FindConVar("z_mob_spawn_min_size"), 10); // Default
		SetConVarInt(FindConVar("z_mob_spawn_max_size"), 30); // Default
		SetConVarInt(FindConVar("z_mob_spawn_finale_size"), 20); // Default
		SetConVarInt(FindConVar("z_mega_mob_size"), 45); // Default
	}		
	else if(Input>1&&Input<7)
	{
		SetConVarInt(FindConVar("z_common_limit"), 30*Input); // Default 30
		SetConVarInt(FindConVar("z_mob_spawn_min_size"), 30*Input); // Default 10
		SetConVarInt(FindConVar("z_mob_spawn_max_size"), 30*Input); // Default 30
		SetConVarInt(FindConVar("z_mob_spawn_finale_size"), 30*Input); // Default 20
		SetConVarInt(FindConVar("z_mega_mob_size"), 30*Input); // Default 45
	}
	else {ReplyToCommand(client, "x01[SM] Usage: How many zombies you want. (In multiples of 30. Recommended: 3 Max: 6)");ReplyToCommand(client, "x01          : Anything above 3 may cause moments of lag 1 resets the defaults");}
	return Plugin_Handled;
}
// ------------------------------------------------------------------------
// FinaleEnd() Thanks to Damizean for smarter method of detecting safe survivors.
// ------------------------------------------------------------------------
public Event_FinaleVehicleLeaving(Handle:event, const String:name[], bool:dontBroadcast)
{
	new edict_index = FindEntityByClassname(-1, "info_survivor_position");
	if (edict_index != -1)
	{
		new Float:pos[3];
		GetEntPropVector(edict_index, Prop_Send, "m_vecOrigin", pos);
		for(new i=1; i <= MaxClients; i++)
		{
			if (!IsClientConnected(i)) continue;
			if (!IsClientInGame(i)) continue;
			if (GetClientTeam(i) != 2) continue;
			if (!IsPlayerAlive(i)) continue;
			if (GetEntProp(i, Prop_Send, "m_isIncapacitated", 1) == 1) continue;
			TeleportEntity(i, pos, NULL_VECTOR, NULL_VECTOR);
		}
	}
}
// ------------------------------------------------------------------------
// Event_UsefulBegin()
// ------------------------------------------------------------------------
public Event_UsefulBegin(Handle:event, const String:name[], bool:dontBroadcast)
{
	Useful[GetClientOfUserId(GetEventInt(event, "userid"))] = true; //Healer
	Useful[GetClientOfUserId(GetEventInt(event, "subject"))] = true; //Target
}
// ------------------------------------------------------------------------
// Event_UsefulEnd()
// ------------------------------------------------------------------------
public Event_UsefulEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
	Useful[GetClientOfUserId(GetEventInt(event, "userid"))] = false; //Healer
	Useful[GetClientOfUserId(GetEventInt(event, "subject"))] = false; //Target
}
// ------------------------------------------------------------------------
// Event_RoundStart()
// ------------------------------------------------------------------------
public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
	SetTankHP();
	if (SpawnTimer == INVALID_HANDLE&&TeamPlayers(2)<GetConVarInt(SurvivorLimit)) SpawnTimer = CreateTimer(CONSISTENCY_CHECK, SpawnTick, _, TIMER_REPEAT);
	if (KickTimer == INVALID_HANDLE&&TeamPlayers(2)>GetConVarInt(SurvivorLimit)) KickTimer = CreateTimer(CONSISTENCY_CHECK, KickTick, _, TIMER_REPEAT);
}
Добавлено спустя 1 минуту 2 секунды:
PS warning 225: unreachable code - это я специально сделал
Никакого отношения к нацистским группам и направлениям не имею.

3DI70R
Нович0к
Нович0к
Сообщения: 5
Зарегистрирован: 13.05.2010

#5 Сообщение 14.05.2010, 17:13

Сейчас откопал кое что, Вродебы при Sb_all_bot_team 1 (раньше было 0, чтоб боты не рашили), этого вылета не наблюдается.

Всётаки непонятно, как этот параметр может влиять на смену карты...

Аватара пользователя
Jonny
Полковник
Полковник
Сообщения: 1371
Зарегистрирован: 30.05.2008
Благодарил (а): 23 раза
Поблагодарили: 54 раза

#6 Сообщение 15.05.2010, 20:28

Никакого отношения к нацистским группам и направлениям не имею.

3DI70R
Нович0к
Нович0к
Сообщения: 5
Зарегистрирован: 13.05.2010

#7 Сообщение 15.05.2010, 20:54

Спасибо конечно за помощь, но у меня уже всё работает нормально, тему можно закрывать.

SseRDG
Нович0к
Нович0к
Сообщения: 3
Зарегистрирован: 30.11.2009

#8 Сообщение 26.07.2010, 23:34

3DI70R как ты решил эту проблему если не секрет? у меня такая же ошибка

Аватара пользователя
Dushess
Нович0к
Нович0к
Сообщения: 9
Зарегистрирован: 10.10.2011
Контактная информация:

#9 Сообщение 02.03.2012, 19:38

Здравствуйте, у меня вот что:

L 03/02/2012 - 19:23:57: SourceMod log file session started (file "L20120302.log") (Version "1.4.2-dev")
L 03/02/2012 - 19:23:57: -------- Mapchange to c1m1_hotel --------
L 03/02/2012 - 19:23:57: [SERVER] Reject Addr: 1091b60

Началось после установки этого
http://forums.alliedmods.net/showthread.php?t=124737 (1-5 пункты.)
+ Medkits Density, Intellegent Sentry

После этой ([SERVER] Reject Addr: 1091b60) строки в консоли сервер крашится...

Вчера, до установки All 8 Survivors все работало.

Нашел причину - новый left4downtown.l4d2.txt

Ответить