//*************************************************************************\\
//* *\\
//* *\\
//* SRCDS Team Fortress 2 SERVER CONFIGURATION *\\
//* VERSION 1.0.0 *\\
//* by cyber-hunters.ru *\\
//* *\\
//* *\\
//*************************************************************************\\
say "Loading |Cyber-Hunters.ru| TF2 Achievement Idle SERVER CONFIGURATION"
// Разное
// Определите название вашего сервера, это название будет отображаться во вкладке Интернет в игре.
// По умолчанию: Team Fortress 2 Server
hostname "|Cyber-Hunters.Ru| TF2 Achievement Idle"
// Теги
sv_tags "fastrespawn,moscow,cyber-hunters.ru,SourceBans,HLstats"
// Определите ваш RCon(Remote Console) пароль, часто эта настройка используется для ClanWar серверов.
// Мы рекомендуем не устанавливать здесь ничего, если вы не будете в дальнейшем использовать RCON пароль.
// Не ставьте здесь простые пароли! Используйте большие и малые буквы с цифрами!
// По умолчанию: Нет.
rcon_password ""
// Определите пароль для подключения к вашему серверу, только игроки знающие пароль смогут присоединиться к игре.
// По умолчанию: Нет.
sv_password ""
// Определите максимальный размер для скачиваемой карты (сюда включены звуки, материалы и модели) в мегабайтах.
// если ваша карта превышает предел этой настройки, то она НЕ будет загружаться с вашего сервера.
// Число определяяет максимальный размер файла в MB который сможет скачать клиент.
// По умолчанию: 16
net_maxfilesize "250"
// Определите адрес вашего веб-сайта для использования быстрой загрузки с сервера.
// По умолчанию: Нет.
sv_downloadurl ""
//*************************************************************************\\
//* *\\
//* *\\
//* ВЫПОЛНЕНИЕ КОНФИГОВ *\\
//* ЗАГРУЗКА СКРИПТОВ *\\
//* *\\
//* *\\
//*************************************************************************\\
// Выполнение и запись файлов содержащих баны.
// Закомментируйте если используете SourceBans.
//exec banned_user.cfg
//exec banned_ip.cfg
//writeid
//writeip
//*************************************************************************\\
//* *\\
//* *\\
//* Настройка *\\
//* дополнительных модулей *\\
//* *\\
//* *\\
//*************************************************************************\\
sm_fastrespawn_enabled 1
sm_fastrespawn_blu 1
sm_fastrespawn_red 1
sv_contact "cyber-hunters.ru"
sv_lan 0
sv_region -1
//*************************************************************************\\
//* *\\
//* *\\
//* Настройка *\\
//* HlstatsX:CE *\\
//* *\\
//* *\\
//*************************************************************************\\
//Hlstatsx:CE
log on
logaddress_add IP:PORT
//Hlstatsx:CE Superlogs
log on
sv_logbans 1
sv_logfile 1
sv_logecho 1
sv_log_onefile 0
mp_logdetail 3
mapcyclefile "mapcycle.txt"
//*************************************************************************\\
//* *\\
//* *\\
//* Расширенные настройки RCON *\\
//* *\\
//* *\\
//*************************************************************************\\
sv_rcon_banpenalty "0"
sv_rcon_log "1"
sv_rcon_maxfailures "5"
sv_rcon_minfailures "2"
sv_rcon_minfailuretime "30"
tf_flag_caps_per_round "0"
tf_playergib "1"
tf_stats_track "1"
tf_stats_verbose "0"
tf_gamemode_arena "0"
tf_gamemode_payload "0"
tf_weapon_criticals "1"
//
mp_allowNPCs "1"
mp_allowspectators "1"
mp_team_unbalance_limit 0
mp_autocrosshair "1"
mp_autoteambalance "1"
mp_bonusroundtime "15"
mp_chattime "5"
mp_clan_ready_signal "0"
mp_clan_readyrestart "0"
mp_decals "200"
mp_defaultteam "0"
mp_enableroundwaittime "1"
mp_fadetoblack "0"
mp_falldamage "0"
mp_flashlight "0"
mp_footsteps "1"
mp_forcecamera "1"
mp_forcerespawn "1"
mp_fraglimit "0"
mp_friendlyfire 0
mp_idledealmethod "1"
mp_idlemaxtime "3"
mp_maxrounds "1000"
mp_restartgame "0"
mp_restartround "1"
mp_showrespawntimes "1"
mp_stalemate_timelimit "240"
mp_teamlist "0"
mp_teamoverride "1"
mp_teams_unbalance_limit "1"
mp_time_between_capscoring "30"
mp_timelimit 0
mp_tournament 0
mp_waitingforplayers_cancel "0"
mp_waitingforplayers_restart "0"
mp_weaponstay "0"
mp_winlimit "0"
phys_pushscale 15
//
sv_alltalk "1"
sv_pausable "0"
sv_cheats "0"
sv_consistency "1"
sv_allowupload "1"
sv_allowdownload "1"
sv_enableoldqueries "1"
sv_pure "2"
sv_pure_kick_clients "1"
sv_allow_color_correction "1"
sv_allow_wait_command "1"
sv_alternateticks "0"
sv_bonus_challenge "0"
sv_cacheencodedents "1"
sv_clearhinthistory "cmd"
sv_filterban "1"
sv_forcepreload "0"
sv_logbans "1"
sv_logblocks "0"
sv_logdownloadlist "1"
sv_logflush "0"
sv_massreport "0"
sv_master_legacy_mode "1"
sv_master_share_game_socket "1"
sv_noclipaccelerate "5"
//sv_noclipduringpause "0"
sv_noclipspeed "5"
sv_npc_talker_maxdist "1024"
sv_parallel_packentities "1"
sv_parallel_sendsnapshot "1"
sv_specaccelerate "5"
sv_specnoclip "1"
sv_specspeed "3"
sv_stats "1"
sv_maxplayers "20"
sv_visiblemaxplayers "20"
//*************************************************************************\\
//* *\\
//* *\\
//* Пропускная способность канала *\\
//* *\\
//* *\\
//*************************************************************************\\
sv_minrate "13000"
sv_maxrate "30000"
sv_minupdaterate "30"
sv_maxupdaterate "67"
sv_mincmdrate "30"
sv_maxcmdrate "67"
sv_client_cmdrate_difference "30"
sv_client_interpolate "1"
sv_client_max_interp_ratio "1"
sv_client_min_interp_ratio "1"
sv_client_predict "1"
Sam_Fisher, Сервер так то для CS GO...
Там же щас шмот падает. Вот и делают идл и ачивмент серверы.
В кс го?О_о
#include <sourcemod>
#include <cstrike>
#include <sdktools>
new Handle:g_Timer_One;
new Float:g_cvarRoundTime;
new Float:ForTimer;
public Plugin:myinfo =
{
name = "CS:GO End round",
version = "1.0"
}
public OnPluginStart()
{
HookEvent("round_start", Event_RoundStart);
}
public OnMapStart()
{
g_cvarRoundTime = GetConVarFloat(FindConVar("mp_roundtime"));
ForTimer = (g_cvarRoundTime*60-0.1);
}
public Action:Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
ServerCommand("mp_warmup_end");
g_Timer_One = CreateTimer(ForTimer, Timer_RoundEnd);
}
public Action:Timer_RoundEnd(Handle:timer)
{
new winner = GetRandomInt(1, 2);
if(winner==1){
CS_SetTeamScore(CS_TEAM_CT, 15);
SetTeamScore(CS_TEAM_CT, 15);
CS_SetTeamScore(CS_TEAM_T, 16);
SetTeamScore(CS_TEAM_T, 16);
CS_TerminateRound(0.1, CSRoundEnd_TerroristWin);
} else
if(winner==2){
CS_SetTeamScore(CS_TEAM_CT, 16);
SetTeamScore(CS_TEAM_CT, 16);
CS_SetTeamScore(CS_TEAM_T, 15);
SetTeamScore(CS_TEAM_T, 15);
CS_TerminateRound(0.1, CSRoundEnd_CTWin);
}
KillTimer(g_Timer_One);
}
] sm plugins 11
"SMAC Command Monitor" (0.8.4.0) by SMAC Development Team
"Basic Ban Commands" (1.5.0-dev+3877) by AlliedModders LLC
"Anti-Flood" (1.5.0-dev+3877) by AlliedModders LLC
"[CSGO] Team Limit Bypass" (1.1) by Zephyrus
"Bom Chicka Wah Wah" (1.2) by Zephyrus
"Sound Commands" (1.5.0-dev+3877) by AlliedModders LLC
"Admin Menu" (1.5.0-dev+3877) by AlliedModders LLC
"hideplayers.smx" hideplayers.smx
"quick_adverts.smx" quick_adverts.smx
"MOTDgd Adverts" (2.0.2) by Zephyrus (Modified by Ixel)
"infinite_buytime.smx" infinite_buytime.smx
To see more, type "sm plugins 22"
] sm plugins 22
"instant_respawn.smx" instant_respawn.smx
Таких плагинов нигде нет:
"instant_respawn.smx"
"hideplayers.smx"
"Bom Chicka Wah Wah"
] sm plugins 11
"SMAC Command Monitor" (0.8.4.0) by SMAC Development Team
"Basic Ban Commands" (1.5.0-dev+3877) by AlliedModders LLC
"Anti-Flood" (1.5.0-dev+3877) by AlliedModders LLC
"[CSGO] Team Limit Bypass" (1.1) by Zephyrus
"Bom Chicka Wah Wah" (1.2) by Zephyrus
"Sound Commands" (1.5.0-dev+3877) by AlliedModders LLC
"Admin Menu" (1.5.0-dev+3877) by AlliedModders LLC
"hideplayers.smx" hideplayers.smx
"quick_adverts.smx" quick_adverts.smx
"MOTDgd Adverts" (2.0.2) by Zephyrus (Modified by Ixel)
"infinite_buytime.smx" infinite_buytime.smx
To see more, type "sm plugins 22"
] sm plugins 22
"instant_respawn.smx" instant_respawn.smx
Таких плагинов нигде нет:
"instant_respawn.smx"
"hideplayers.smx"
"Bom Chicka Wah Wah"
#pragma semicolon 1
//////////////////////////////
// DEFINITIONS //
//////////////////////////////
#define PLUGIN_NAME "Bom Chicka Wah Wah"
#define PLUGIN_AUTHOR "Zephyrus"
#define PLUGIN_DESCRIPTION ""
#define PLUGIN_VERSION "1.2"
#define PLUGIN_URL ""
#define MAX_AD_NETWORKS 64
#define SHOW_PANEL false
#define SPEC 1
#define RED 2
#define BLU 3
//////////////////////////////
// INCLUDES //
//////////////////////////////
#include <sourcemod>
#include <sdktools>
#include <clientprefs>
#include <zephstocks>
//////////////////////////////
// ENUMS //
//////////////////////////////
enum AdNetwork
{
String:szIdentifier[64],
String:szURL[256],
iDuration,
iInterval,
iOrder,
iMax,
bool:bHidden,
Handle:hCookie,
}
//////////////////////////////////
// GLOBAL VARIABLES //
//////////////////////////////////
new String:g_szServerIP[32];
new String:g_szServerPort[8];
new g_cvarImmunityFlag = -1;
new g_cvarDeadOnly = -1;
new g_eNetworks[MAX_AD_NETWORKS][AdNetwork];
new g_iNetworks = 0;
new g_iNextAd[MAXPLAYERS+1][MAX_AD_NETWORKS];
new g_iAdNum[MAXPLAYERS+1][MAX_AD_NETWORKS];
new g_iSorted[MAX_AD_NETWORKS];
new g_iDelay[MAXPLAYERS+1];
new g_bInitialized[MAXPLAYERS+1]={0,...};
//////////////////////////////////
// PLUGIN DEFINITION //
//////////////////////////////////
public Plugin:myinfo =
{
name = PLUGIN_NAME,
author = PLUGIN_AUTHOR,
description = PLUGIN_DESCRIPTION,
version = PLUGIN_VERSION,
url = PLUGIN_URL
};
//////////////////////////////
// PLUGIN FORWARDS //
//////////////////////////////
public OnPluginStart()
{
// Supress warnings about unused variables.....
if(g_bL4D || g_bL4D2 || g_bND) {}
// Initialize our ConVars
g_cvarDeadOnly = RegisterConVar("sm_adplugin_dead_only", "0", "Set this to 0 to show ads to alive players too", TYPE_INT);
g_cvarImmunityFlag = RegisterConVar("sm_adplugin_immunity_flag", "p", "Players with this SourceMod flag set will be given ad viewing immunity.", TYPE_FLAG);
AutoExecConfig();
// Initialize our global variables
new Handle:m_hHostIP = FindConVar("hostip");
new Handle:m_hHostPort = FindConVar("hostport");
if(m_hHostIP == INVALID_HANDLE || m_hHostPort == INVALID_HANDLE)
SetFailState("Failed to determine server ip and port.");
GetConVarString(m_hHostPort, STRING(g_szServerPort));
new m_iServerIP = GetConVarInt(m_hHostIP);
Format(STRING(g_szServerIP), "%d.%d.%d.%d", m_iServerIP >>> 24 & 255, m_iServerIP >>> 16 & 255, m_iServerIP >>> 8 & 255, m_iServerIP & 255);
// Hook the events we may need
HookEvent("player_spawn", Event_PlayerSpawn);
HookEvent("player_team", Event_PlayerTeam);
// Register our commnads
RegServerCmd("sm_adplugin_add", Command_Add);
}
public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max)
{
// Mark GetUserMessageType as an optional native
MarkNativeAsOptional("GetUserMessageType");
// Add compatibility with Friagram's stuff
CreateNative("TrafficCash_DelayAd", Native_TrafficCash_DelayAd);
RegPluginLibrary("trafficcashredux");
return APLRes_Success;
}
public OnMapStart()
{
// Reset networks (they reload on all map starts)
g_iNetworks=0;
// Start our timer to show ads
CreateTimer(1.0, Timer_ShowAds, _, TIMER_FLAG_NO_MAPCHANGE|TIMER_REPEAT);
}
public OnAutoConfigsBuffered()
{
// Make it work on reload
LoopIngamePlayers(client)
{
OnClientConnected(client);
if(AreClientCookiesCached(client))
OnClientCookiesCached(client);
if(IsClientAuthorized(client))
OnClientPostAdminCheck(client);
}
}
//////////////////////////////
// NATIVES //
//////////////////////////////
public Native_TrafficCash_DelayAd(Handle:plugin,numParams)
{
g_iDelay[GetNativeCell(1)] = GetTime() + RoundFloat(Float:GetNativeCell(2));
}
//////////////////////////////
// CLIENT FORWARDS //
//////////////////////////////
public OnClientConnected(client)
{
// Reset player ad times
g_bInitialized[client]=0;
if(!IsFakeClient(client))
for(new i=0;i<MAX_AD_NETWORKS;++i)
{
g_iNextAd[client][i]=-1;
g_iAdNum[client][i]=0;
}
}
public OnClientCookiesCached(client)
{
// Get the last ad times
new String:m_szCookie[64];
for(new i=0;i<g_iNetworks;++i)
{
GetClientCookie(client, g_eNetworks[i][hCookie], STRING(m_szCookie));
g_iNextAd[client][i]=StringToInt(m_szCookie);
m_szCookie[0]=0;
}
++g_bInitialized[client];
}
public OnClientPostAdminCheck(client)
{
if(g_eCvars[g_cvarImmunityFlag][aCache] != 0 && GetUserFlagBits(client) & g_eCvars[g_cvarImmunityFlag][aCache])
{
for(new i=0;i<MAX_AD_NETWORKS;++i)
g_iNextAd[client][i] = 2147483647;
}
}
//////////////////////////////
// COMMANDS //
//////////////////////////////
public Action:Command_Add(args)
{
// Bail out if the parameter count doesn't match
if(args != 6)
{
PrintToServer("Usage: sm_adplugin_add <identifier> <url> <interval> <duration> <max per session> <hidden>");
return Plugin_Handled;
}
// Initialize variables
new String:m_szIdentifier[64];
new String:m_szURL[256];
new String:m_szInterval[32];
new String:m_szDuration[32];
new String:m_szMax[32];
new String:m_szHidden[8];
// Get all parameters
GetCmdArg(1, STRING(m_szIdentifier));
GetCmdArg(2, STRING(m_szURL));
GetCmdArg(3, STRING(m_szInterval));
GetCmdArg(4, STRING(m_szDuration));
GetCmdArg(5, STRING(m_szMax));
GetCmdArg(6, STRING(m_szHidden));
// Process the URL
ReplaceString(STRING(m_szURL), "{serverip}", g_szServerIP, false);
ReplaceString(STRING(m_szURL), "{port}", g_szServerPort, false);
// Save the ad network to our internal cache
new m_iInterval = StringToInt(m_szInterval);
new m_iDuration = StringToInt(m_szDuration);
new m_iMax = StringToInt(m_szMax);
new m_iHidden = StringToInt(m_szHidden);
g_eNetworks[g_iNetworks][hCookie] = RegClientCookie(m_szIdentifier, m_szIdentifier, CookieAccess_Private);
strcopy(g_eNetworks[g_iNetworks][szIdentifier], sizeof(m_szIdentifier), m_szIdentifier);
strcopy(g_eNetworks[g_iNetworks][szURL], sizeof(m_szURL), m_szURL);
g_eNetworks[g_iNetworks][iInterval] = m_iInterval;
g_eNetworks[g_iNetworks][iDuration] = m_iDuration;
g_eNetworks[g_iNetworks][iOrder] = g_iNetworks;
g_eNetworks[g_iNetworks][iMax] = m_iMax;
g_eNetworks[g_iNetworks][bHidden] = (m_iHidden?true:false);
++g_iNetworks;
// Sort the networks by interval
for(new a=0;a<g_iNetworks;++a)
for(new b=0;b<g_iNetworks;++b)
if(g_eNetworks[a][iInterval]>g_eNetworks[b][iInterval] && g_eNetworks[a][iOrder]>g_eNetworks[b][iOrder])
{
g_eNetworks[a][iOrder]+=g_eNetworks[b][iOrder];
g_eNetworks[b][iOrder]=g_eNetworks[a][iOrder]-g_eNetworks[b][iOrder];
g_eNetworks[b][iOrder]-=g_eNetworks[b][iOrder];
}
for(new i=0;i<g_iNetworks;++i)
g_iSorted[g_eNetworks[i][iOrder]]=i;
return Plugin_Handled;
}
//////////////////////////////
// EVENTS //
//////////////////////////////
public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
// Skip this if we want to show ads to alive players too
if(!g_eCvars[g_cvarDeadOnly][aCache])
return Plugin_Continue;
// Get the client and make sure it's ingame and not a fake
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(!client || !IsClientInGame(client) || !IsPlayerAlive(client) || IsFakeClient(client))
return Plugin_Continue;
// Skip this if player is not yet initialized
if(g_bInitialized[client]==2)
return Plugin_Continue;
// Reset the MOTD to stop all running ads
new Handle:m_hKV = CreateKeyValues("data");
KvSetString(m_hKV, "title", "blank");
KvSetNum(m_hKV, "type", MOTDPANEL_TYPE_URL);
KvSetString(m_hKV, "msg", "about:blank");
ShowVGUIPanel(client, "info", m_hKV, false);
CloseHandle(m_hKV);
return Plugin_Continue;
}
public Action:Event_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast)
{
// Get the client and make sure it's ingame and not a fake
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(!client || !IsClientInGame(client) || IsFakeClient(client) || g_bInitialized[client]==2)
return Plugin_Continue;
new team = GetEventInt(event, "team");
if(team>0)
++g_bInitialized[client];
return Plugin_Continue;
}
//////////////////////////////
// HOOKS //
//////////////////////////////
//////////////////////////////
// TIMERS //
//////////////////////////////
public Action:Timer_ShowAds(Handle:timer)
{
new m_iTime = GetTime();
new m_iTeam;
new bool:m_bDisplay;
new String:m_szCookie[64];
new String:m_szURL[256];
new String:m_szSteamID[64];
LoopIngamePlayers(client)
{
if(g_bInitialized[client]!=2)
continue;
// Check if the player should see an ad at all
m_bDisplay=false;
m_iTeam = GetClientTeam(client);
if(m_iTeam != SPEC && m_iTeam != RED && m_iTeam != BLU)
continue;
if(g_iDelay[client]<m_iTime && (m_iTeam == SPEC || !g_eCvars[g_cvarDeadOnly][aCache] || (g_eCvars[g_cvarDeadOnly][aCache] && !IsPlayerAlive(client))))
m_bDisplay=true;
if(!m_bDisplay)
continue;
// Get client SteamID
GetClientAuthString(client, STRING(m_szSteamID));
for(new i=0;i<g_iNetworks;++i)
{
if(g_iNextAd[client][i] < m_iTime && (g_iAdNum[client][i] < g_eNetworks[i][iMax] || g_eNetworks[i][iMax] == 0))
{
if(m_iTeam != BLU && !g_eNetworks[i][bHidden])
continue;
// Process URL
strcopy(STRING(m_szURL), g_eNetworks[i][szURL]);
ReplaceString(STRING(m_szURL), "{steamid}", m_szSteamID, false);
// Show that ad
new Handle:m_hKV = CreateKeyValues("data");
KvSetString(m_hKV, "title", "blank");
KvSetNum(m_hKV, "type", MOTDPANEL_TYPE_URL);
KvSetString(m_hKV, "msg", g_eNetworks[i][szURL]);
ShowVGUIPanel(client, "info", m_hKV, !g_eNetworks[i][bHidden]);
CloseHandle(m_hKV);
// Mute if it's pinion...
/*if(strcmp(g_eNetworks[i][szIdentifier], "pinion")==0)
{
m_hKV = CreateKeyValues("data");
KvSetString(m_hKV, "title", "blank");
KvSetNum(m_hKV, "type", MOTDPANEL_TYPE_URL);
KvSetString(m_hKV, "msg", "javascript:document.getElementById(\"videoElement\").volume=0.0");
ShowVGUIPanel(client, "info", m_hKV, false);
CloseHandle(m_hKV);
}*/
// Make sure the ad won't be seen before it should be seen again
g_iDelay[client] = m_iTime + g_eNetworks[i][iDuration]+1;
g_iNextAd[client][i] = m_iTime + g_eNetworks[i][iInterval];
++g_iAdNum[client][i];
// Save the last time to a cookie if it deserves to be saved at all (if timeout is higher than 5 mins)
if(g_eNetworks[i][iInterval] > 300)
{
IntToString(g_iNextAd[client][i], STRING(m_szCookie));
SetClientCookie(client, g_eNetworks[i][hCookie], m_szCookie);
}
CreateTimer(float(g_eNetworks[i][iDuration]), Timer_ResetPlayer, GetClientUserId(client));
// We have an ad to show already, skip the rest of the loop
break;
}
}
}
return Plugin_Continue;
}
public Action:Timer_ResetPlayer(Handle:timer, any:userid)
{
new client = GetClientOfUserId(userid);
if(!client || !IsClientInGame(client))
return Plugin_Stop;
// Reset the MOTD to stop all running ads
new Handle:m_hKV = CreateKeyValues("data");
KvSetString(m_hKV, "title", "blank");
KvSetNum(m_hKV, "type", MOTDPANEL_TYPE_URL);
KvSetString(m_hKV, "msg", "about:blank");
ShowVGUIPanel(client, "info", m_hKV, false);
CloseHandle(m_hKV);
return Plugin_Stop;
}