Как отключить гибернацию сервера?

fm3at

Участник
Сообщения
6
Реакции
0
Здравствуйте, при выходе с сервера всех живых игроков, он переходит в режим гибернации и боты кикаются, затем снова запускаются, но уже мертвые. Остается один живой бот, к которому привязывается куча лишних моделей оружия и гранат.

Dropped .fm3at from server (Disconnect by user.)
Server is hibernating
Dropped DespoD from server (Punting bot, server is hibernating)
Dropped BCEM_XAHA from server (Punting bot, server is hibernating)
Dropped 3ek from server (Punting bot, server is hibernating)
Dropped LIS from server (Punting bot, server is hibernating)
Dropped Ae* from server (Punting bot, server is hibernating)
Dropped zasranec from server (Punting bot, server is hibernating)
Dropped ebanawka from server (Punting bot, server is hibernating)
Dropped [mee] from server (Punting bot, server is hibernating)
[botnames] Bot VamPir created.
[botnames] Bot noob) created.
[botnames] Bot kr@zy created.
[botnames] Bot Buuugaga created.
[botnames] Bot <3Tobi created.
[botnames] Bot Andreas created.
[botnames] Bot Z@LOOP@ created.
[botnames] Bot MY4EHuK created.
[botnames] Bot Neymar^^ created.
CT bot spawned outside of a buy zone (154, 2225, -114)

cvar sv_hibernate_when_empty в отличие от cs:go не работает.
сервер only steam, недавно обновлялся через steamcmd.
собственно, как запретить гибернацию? есть альтернативные методы?

Metamod:Source version 1.10.7-dev
Built from: Trigger build · alliedmodders/metamod-source@a70fd23 · GitHub
Build ID: 951:a70fd23
Loaded As: Valve Server Plugin
Compiled on: Dec 22 2015
Plugin interface version: 15:14
SourceHook version: 5:5
Metamod:Source - News

Listing 8 plugins:
[01] SourceMod (1.7.3-dev+5283) by AlliedModders LLC
[02] Stripper (1.2.2) by BAILOPAN
[03] CS Tools (1.7.3-dev+5283) by AlliedModders LLC
[04] SDK Tools (1.7.3-dev+5283) by AlliedModders LLC
[05] Bot Attack Control (1.0.1) by GoD-Tony
[06] CS:S DM (2.1.6-dev) by AlliedModders
[07] SDK Hooks (1.7.3-dev+5283) by AlliedModders LLC
[08] SendProxy Manager (1.1.5) by Afronanny

[SM] Listing 29 plugins:
01 "Admin File Reader" (1.7.3-dev+5283) by AlliedModders LLC
02 "Admin Help" (1.7.3-dev+5283) by AlliedModders LLC
03 "Admin Menu" (1.7.3-dev+5283) by AlliedModders LLC
04 "Anti-Flood" (1.7.3-dev+5283) by AlliedModders LLC
05 "Basic Ban Commands" (1.7.3-dev+5283) by AlliedModders LLC
06 "Basic Chat" (1.7.3-dev+5283) by AlliedModders LLC
07 "Basic Comm Control" (1.7.3-dev+5283) by AlliedModders LLC
08 "Basic Commands" (1.7.3-dev+5283) by AlliedModders LLC
09 "Basic Info Triggers" (1.7.3-dev+5283) by AlliedModders LLC
10 "Basic Votes" (1.7.3-dev+5283) by AlliedModders LLC
11 "Bot Names" (1.0) by Rakeri
12 "Bots for FFA" (1.0) by Franc1sco steam: franug
13 "Bot Ping" (1.0.1) by Knagg0
14 "Client Preferences" (1.7.3-dev+5283) by AlliedModders LLC
15 "CS:S DM Basics" (2.1.6-dev) by AlliedModders LLC
16 "CS:S DM Bot Quotas" (2.1.6-dev) by AlliedModders LLC
17 "CS:S DM Equipment" (2.1.6-dev) by AlliedModders LLC
18 "CS:S DM Preset Spawns" (2.1.6-dev) by AlliedModders LLC
19 "CS:S DM Spawn Protection" (2.1.6-dev) by AlliedModders LLC
20 "Explosive Barrels" (0.0.1) by aNNakin
21 "Fun Commands" (1.7.3-dev+5283) by AlliedModders LLC
22 "Fun Votes" (1.7.3-dev+5283) by AlliedModders LLC
23 "Healthkit From Dead (HFD)" (0.4) by Bacardi
24 "map-decals.smx" (1.1) by Berni, Stingbyte
25 "Nextmap" (1.7.3-dev+5283) by AlliedModders LLC
26 "Player Commands" (1.7.3-dev+5283) by AlliedModders LLC
27 "Radar Config" (1.2.0) by GoD-Tony
28 "Reserved Slots" (1.7.3-dev+5283) by AlliedModders LLC
29 "Sound Commands" (1.7.3-dev+5283) by AlliedModders LLC
 

Wise Hand

Участник
Сообщения
121
Реакции
34
Тоже интересует данный вопрос. При уходе последнего живого игрока сервер переходит в режим гибернации, все боты кикаются, добавляются новые. И самое плохое при этом что командный счет обнуляется, хотя для некоторых плагинов он продолжает оставаться прежним. К примеру, при winlimit 30 голосование за следующую карту может запуститься при счете 1:0, из-за того, что при счете 27:0 последний живой игрок покинул сервер и счет обнулился.
Можно как-нибудь запретить эту гибернацию? Или может быть сделать, чтобы в начале раунда проверялся счет прошлого раунда, и если он больше нынешнего, то восстанавливался ?
Есть еще вот такой плагин AlliedModders - View Single Post - [CS:S]Block Punting bot when server is hibernating , когда сервер в режиме паблика, он работает нормально, но в режиме дм сервер крашиться. А на SM 1.7 вообще перестал работать.
 

fm3at

Участник
Сообщения
6
Реакции
0
для режима дм я воткнул этот плагин, в качестве костыля: [TF2] Empty Server Map Restarter - AlliedModders , сервер при уходе последнего живого игрока перезапускается и там начинают нормально играть боты. не панацея, но хоть что-то.
нагуглил что-то про строку в серверной части "CServerGameDLL::SetServerHibernation(bool)", не знаю как до нее добраться стандартными методами, наверно надо плагин писать или расширение. а этого я не умею, увы)
подробнее: AlliedModders - View Single Post - How to disable hibernating bots in CS:S?
 

Monomizer

Держу JDW в бане.
Сообщения
1,947
  • Команда форума
  • #4
Какие то вы костыли делаете...
Всегда на тех же csdm либо не чисто сервере есть бот квота, которая при подключении игрока добавляет нужное кол-ва ботов в игру.
Причём тут отключение гибернеции? Она нужна для того, что если на сервере 0 человек, сервер не жрал ресурсов.
А благодоря настройкам при подключении игрока боты тут же подключаются и всё нормально, даже без потери их статистики.
 

Wise Hand

Участник
Сообщения
121
Реакции
34
Причём тут отключение гибернеции? Она нужна для того, что если на сервере 0 человек, сервер не жрал ресурсов.
При отключении последнего игрока играющие боты кикаются, тут же добавляются новые и игра продолжается. Так что о какой тут экономии ресурсов может быть речь?
Для меня самая большая проблема в том, что при отключении последнего игрока обнуляется командный счет. Допустим, на сервере несколько карт, они меняются через определенное число побед. И получается из-за обнуления счета одна карта может играться весь день, а хотелось-бы, чтобы боты доигрывали эту карту и ставилась следующая. Голосование за карту настроено за два раунда до окончания карты, но при этом почему-то учитывается командный счет до обнуления, и голосование может появиться при счете 2:0, хотя сама карта при этом сменится как и положено, когда на табло будет хотя-бы 30:0 (при winlimit 30).
Также проверял и с плагином Auto Swap Team, он тоже почему-то учитывает счет до обнуления, а не тот счет, что отображается на табло.
 

fm3at

Участник
Сообщения
6
Реакции
0
боты кикаются, затем снова запускаются, но уже мертвые. Остается один живой бот, к которому привязывается куча лишних моделей оружия и гранат.
Уже не актуально, они просто перезаходят, без всяких глюков. Правда пришлось отключить часть плагинов. Пока еще выявляю виновника.

Она нужна для того, что если на сервере 0 человек, сервер не жрал ресурсов.
Спасибо, а люди-то и не знали.
Мне не нужно чтобы сервер не жрал ресурсов. Мне нужны нормальные боты, свободные от приколов гибернации.
Не зря в CS:GO квар для отключения гибернации добавили, значит он реально нужен. А вот про CS:S видать забыли.
 

fm3at

Участник
Сообщения
6
Реакции
0
Вот оно что. А огрызок гибернации в cs:s вальвовцы засунули прикола ради?) Видимо придется ждать следующих обновлений, может образумятся и пофиксят.
 

ĦĄŇĢǾVξŘ

καταλημμα
Сообщения
293
Реакции
336
Уже не актуально, они просто перезаходят, без всяких глюков. Правда пришлось отключить часть плагинов. Пока еще выявляю виновника.


Спасибо, а люди-то и не знали.
Мне не нужно чтобы сервер не жрал ресурсов. Мне нужны нормальные боты, свободные от приколов гибернации.
Не зря в CS:GO квар для отключения гибернации добавили, значит он реально нужен. А вот про CS:S видать забыли.
может сработает если поставить:
C-подобный:
bot_join_after_player 0
и тогда боты на сервере будут находится постоянно.
 
Последнее редактирование:

Wise Hand

Участник
Сообщения
121
Реакции
34
По поводу обнуления командного счета при уходе последнего игрока.
Наткнулся на один польский сервер, где эта проблема решена - 91.224.117.108:27015. При уходе последнего игрока боты кикаются, добавляются новые, но командный счет при этом не обнуляется.

plugins list
"[Source 2009] Custom Chat Colors" (2.4.0) by Dr. McKay
"Admin File Reader" (1.7.3-dev+5272) by AlliedModders LLC
"Admin Help" (1.7.3-dev+5272) by AlliedModders LLC
"Admin Menu" (1.7.3-dev+5272) by AlliedModders LLC
"Advanced c4 Countdown Timer" (1.5.0) by dalto, Panda
"Afk Bomb" (1.5.0) by RedSword / Bob Le Ponge
"Anti Rush" (1.3) by Jannik 'Peace-Maker' Hartung
"Anti-Flood" (1.7.3-dev+5272) by AlliedModders LLC
"Autolama" (1.0) by fm!
"Ban disconnected players" (1.04) by mad_hamster, Troy
"Basic Chat" (1.7.3-dev+5214) by AlliedModders LLC
"Basic Comm Control" (1.7.3-dev+5272) by AlliedModders LLC
"Basic Commands" (1.7.3-dev+5272) by AlliedModders LLC
"Basic Info Triggers" (1.7.3-dev+5272) by AlliedModders LLC
"Basic Votes" (1.7.3-dev+5272) by AlliedModders LLC
"Client Preferences" (1.7.3-dev+5272) by AlliedModders LLC
"FM | Autokick immunity" (1.0) by fm!
"FM | Casino" (0.0.4) by fm!
"FM | Deagle" (1.0) by fm!
"FM | Noblock Player" (1.5) by fm!
"FM | Parachute Redux" (1.0) by fm!
"FM | VIP Pack CSS" (1.2) by fm!
"Fun Commands" (1.7.3-dev+5272) by AlliedModders LLC
"Fun Votes" (1.7.3-dev+5272) by AlliedModders LLC
"gameME Plugin" (4.3) by TTS Oetzel & Goerz GmbH
"HANSE-Balance" (1.6.6) by red!
"Immunity Reserve Slots [CONNECT]" (2.0.6) by Jamster
"Kabelki" (0.5) by pRED* | fm!
"Kill Assist" (1.5.0) by RedSword / Bob Le Ponge
"Knife Fight" (1.3.9) by XARiUS, Otstrel.Ru Team, fm!
"Komendy" (1.0) by fm!
"Nextmap" (1.7.3-dev+5272) by AlliedModders LLC
"Player Commands" (1.7.3-dev+5272) by AlliedModders LLC
"Players Votes Redux" (1.0.1) by ReFlexPoison
"Quake Sounds" (2.7) by dalto, Grrrrrrrrrrrrrrrrrrr, and psychonic
"Remover" (1.0) by fm!
"Round End Sound" (2.3.9) by FrozDark
"Save Scores" (1.3.4) by exvel
"Show Damage" (1.0.7) by exvel
"Simple Chat Processor (Redux)" (1.1.4-fix2) by Simple Plugins, Mini
"SM SKINCHOOSER" (2.3) by Andi67
"Sound Commands" (1.7.3-dev+5272) by AlliedModders LLC
"SourceBans" (1.4.11) by SourceBans Development Team
"SourceComms" (0.9.9) by Alex
"Swap Team" (1.0.0) by raydan
"SwapTeam" (1.2.6) by Rogue - Originally by MistaGee
"Team Bets" (2.6) by GrimReaper - Original by ferret
"Very Basic High Ping Kicker" (1.4) by msleeper
"VIP Deagle" (1.0) by fm!
"Weapon Restrict" (3.0.9) by Dr!fter

meta list
[01] SourceMod (1.7.3-dev+5272) by AlliedModders LLC
[02] CS Tools (1.7.3-dev+5272) by AlliedModders LLC
[03] SDK Tools (1.7.3-dev+5272) by AlliedModders LLC
[04] SDK Hooks (1.7.3-dev+5272) by AlliedModders LLC
[05] Connect (1.2.0) by Asher "asherkin" Baker

sm exts
"Automatic Updater" (1.7.3-dev+5272) by AlliedModders LLC: Updates SourceMod gamedata files
"Webternet" (1.7.3-dev+5272) by AlliedModders LLC: Extension for interacting with URLs
"CS Tools" (1.7.3-dev+5272) by AlliedModders LLC: CS extended functionality
"BinTools" (1.7.3-dev+5272) by AlliedModders LLC: Low-level C/C++ Calling API
"SDK Tools" (1.7.3-dev+5272) by AlliedModders LLC: Source SDK Tools
"Client Preferences" (1.7.3-dev+5272) by AlliedModders: Saves client preference settings
"SQLite" (1.7.3-dev+5272) by AlliedModders LLC: SQLite Driver
"Regex" (1.7.3-dev+5272) by AlliedModders LLC: Provides regex natives for plugins
"SDK Hooks" (1.7.3-dev+5272) by AlliedModders LLC: Source SDK Hooks
"Top Menus" (1.7.3-dev+5272) by AlliedModders: Creates sorted nested menus
"Connect" (1.2.0) by Asher "asherkin" Baker: Forward for early connection
"MySQL-DBI" (1.7.3-dev+5272) by AlliedModders LLC: MySQL driver implementation for DBI

Вообще, есть предположение, что обнуление счета происходит не из-за гибернации, а из-за рестарта игры, вызванного этой гибернацией. Можно как-нибудь заблокировать этот рестарт?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
Можно как-нибудь заблокировать этот рестарт?
Мне крайне не хочется этим заниматься, проверять условия, при которых происходит проблема, поэтому просто оставлю здесь:
PHP:
#include <cstrike>

new bool:bReset;

public OnClientPostAdminCheck(client) bReset = false;

public OnClientDisconnect(client)
{
	if (IsFakeClient(client) == false) bReset = true;
}

public Action:CS_OnTerminateRound(&Float:delay, &CSRoundEndReason:reason)
{
	if (reason == CSRoundEnd_GameStart && bReset)
	{
		for (new i = 1; i <= MaxClients; ++i)
		{
			if (IsClientInGame(i) && IsFakeClient(i) == false) return Plugin_Continue;
		}
		return Plugin_Handled;
	}
	return Plugin_Continue;
}
За адекватность не ручаюсь, дополняйте "на свой вкус".
 

Wise Hand

Участник
Сообщения
121
Реакции
34
@AlmazON, а что плагин должен делать? Поставил, никаких изменений нету. После ухода меня, как последнего игрока, боты кикаются с причиной <Punting bot, server is hibernating>, завершается раунд по 9 и 15 причине, добавляются новые боты, обнуляется счет, игра продолжается. Что с этим плагином, что без него все одинаково.
Мой_ник ушёл <Disconnect by user.>
Brad BOT ушёл <Punting bot, server is hibernating>
Ethan BOT ушёл <Punting bot, server is hibernating>
Ron BOT ушёл <Punting bot, server is hibernating>
Wade BOT ушёл <Punting bot, server is hibernating>
Round Terminated Reason: 9
Wyatt BOT вступает в игру
Wyatt > Спецназ
Harold BOT вступает в игру
Harold > Террорист
Round Terminated Reason: 15
Gary BOT вступает в игру
Gary > Спецназ
Tim BOT вступает в игру
Tim > Террорист
Perry BOT вступает в игру
Perry > Спецназ
Mark BOT вступает в игру
Mark > Террорист

Если что, причина конца раунда вот этим скриптом выводится:
C-подобный:
public Action:CS_OnTerminateRound(&Float:delay, &CSRoundEndReason:reason)
{
        PrintToChatAll("\x04Round Terminated Reason: %d", reason);
        return Plugin_Continue;
}
 

Wise Hand

Участник
Сообщения
121
Реакции
34
@AlmazON, поставил так
#include <cstrike>

new bool:bReset;

public OnClientPostAdminCheck(client) bReset = false;

public OnClientDisconnect(client)
{
if (IsFakeClient(client) == false) bReset = true;
}

public Action:CS_OnTerminateRound(&Float:delay, &CSRoundEndReason:reason)
{
if (reason == CSRoundEnd_Draw && bReset)
{
for (new i = 1; i <= MaxClients; ++i)
{
if (IsClientInGame(i) && IsFakeClient(i) == false) return Plugin_Continue;
}
return Plugin_Handled;
}
return Plugin_Continue;
}
Абсолютно никаких изменений. По прежнему в чат выводится завершение раунда по 9 (ничья) и 15 (новая игра) причине и обнуляется командный счет.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
обнуляется командный счет
В общем-то, он по 15 должен сброситься, а по 9 - просто закончился раунд. Так что, предыдущее вернее.
Ерундой не заниматься, скорее всего счёт переустановить стоит после сброса.
 

Wise Hand

Участник
Сообщения
121
Реакции
34
Ерундой не заниматься, скорее всего счёт переустановить стоит после сброса.
Я как-то попробовал со своими скудными познаниями составить подобный плагин. С разных плагинов повыдергивал код, получилось так:
PHP:
#include <sourcemod>
#include <sdktools>

new    ScoreTStart = 0,
    ScoreCTStart = 0,
    ScoreTEnd = 0,
    ScoreCTEnd = 0;

public OnPluginStart()
    {
    HookEvent("round_start", Event_OnRoundStart);
    HookEvent("round_end", Event_OnRoundEnd);
    }

public Event_OnRoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
    {
    ScoreTEnd = GetTeamScore(2),
    ScoreCTEnd = GetTeamScore(3);
    }

public Event_OnRoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    ScoreTStart = GetTeamScore(2),
    ScoreCTStart = GetTeamScore(3);
    if(ScoreTStart+ScoreCTStart < ScoreTEnd+ScoreCTEnd)
        {
        SetTeamScore(2, ScoreTEnd);
        SetTeamScore(3, ScoreCTEnd);
        }
}
Но там вроде косяк был, что после смены карты восстанавливался предыдущий счет. Или что-то другое, уже и не помню.
 

Wise Hand

Участник
Сообщения
121
Реакции
34
Дописал, теперь нормально, после смены карты счет не восстанавливается. Вспомнил, какой еще косяк был и остается с этим плагином. Допустим, счет 3-0 в пользу теров. Я перезахожу, счет сохраняется прежним, захожу за теров, убиваю всех ботов, и счет заместо положенного 4-0 становится 1-0. То есть получается счет восстанавливается после перезахода, но только до первой победы.
 

Wise Hand

Участник
Сообщения
121
Реакции
34
@AlmazON, проверил, в общем что получается: при счете 2-0 в перезахожу на сервер, bot_kill, счет становится 1-0, затем в начале следущего раунда счет становится 3-0. Снова bot_kill, счет становится 2-0, в начале следущего раунда счет 4-0. То есть получается, в начале раунда счет всегда верный, а в промежутке между концом одного раунда и началом другого неверный.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
в промежутке между концом одного раунда и началом другого неверный
У меня голова другим забита... Поставь на конце раунда тоже установку счёта, если верно понял:
PHP:
#include <sourcemod>
#include <sdktools_functions>

new ScoreTEnd = 0,
    ScoreCTEnd = 0;

public OnPluginStart()
{
    HookEvent("round_start", Event_OnRoundStart, EventHookMode_PostNoCopy);
    HookEvent("round_end", Event_OnRoundEnd);
}

public Event_OnRoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
    switch (GetEventInt(event, "winner"))
    {
        case 2: ++ScoreTEnd;
        case 3: ++ScoreCTEnd;
    }
    SetTeamScore(2, ScoreTEnd);
    SetTeamScore(3, ScoreCTEnd);
}

public Event_OnRoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    SetTeamScore(2, ScoreTEnd);
    SetTeamScore(3, ScoreCTEnd);
}

public OnMapEnd() ScoreTEnd = ScoreCTEnd = 0;
Возможно, только в конце раунда и есть смысл ставить свой счёт.
 
Сверху Снизу