Simple Spawn NoBlock  [На сервере]

Плагины и дополнения / Plugins and add-ons

Модераторы: Dame-danners, Longipongeoos

Аватар пользователя
Longipongeoos
Сообщений: 199
Зарегистрирован: 12 апр 2017, 16:50

Simple Spawn NoBlock  [На сервере]

Сообщение Longipongeoos » 04 июн 2024, 11:59

Версия: 1.4

Описание:
Плагин позволяет проходить сквозь своих товарищей по команде в начале ранду, какое количество секунд будет работать Noblock зависит от переменной в конфиге.
Квары:

Код: Выбрать все

// plugin enable
// -
// Default: "1.0"
// Minimum: "0.000000"
// Maximum: "1.000000"
sm_snb "1.0"

// Frendlyfire disable on spawn? If server cvar ff is 0 set it to 0
// -
// Default: "1.0"
// Minimum: "0.000000"
// Maximum: "1.000000"
sm_snb_ff "0"

// Spawn NoBlock time.
// -
// Default: "10.0"
// Minimum: "1.000000"
sm_snb_time "10.0"

Исходный код

Код: Выбрать все

#pragma semicolon 1
#include <sourcemod>
#include <sdktools>

#define COLLISION_GROUP_PLAYER              5 
#define COLLISION_GROUP_PUSHAWAY            17
#define VERSION "1.4"


public Plugin:myinfo =
{
   name = "Spawn NoBlock for CSGO",
   author = "dzej dzej",
   description = "Simple spawn noblock",
   version = VERSION,
   url = "http://gocs.pl/"
};

//Value Holders
new bool:nbEnabled                        = false;
new Float:nbTime                           = 0.0;


//{ ConVars Handles & Value Holders
new Handle:g_Timer_One       = INVALID_HANDLE;
new Handle:g_Timer_Two       = INVALID_HANDLE;
new Handle:snbTime         = INVALID_HANDLE;
new Handle:snbEnabled         = INVALID_HANDLE;
new Handle:snbfreeze         = INVALID_HANDLE;
new Handle:snbFire         = INVALID_HANDLE;


public OnPluginStart() {

   LoadTranslations("snb.phrases");
   CreateConVar("sm_snb_v", VERSION, "[CSGO] Spawn NoBlock version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY|FCVAR_DONTRECORD);
   snbTime = CreateConVar("sm_snb_time", "10.0", "Spawn NoBlock time.", FCVAR_PLUGIN,true,1.0);
   snbEnabled = CreateConVar("sm_snb", "1.0", "plugin enable", FCVAR_PLUGIN,true,0.0,true,1.0);
   snbFire = CreateConVar("sm_snb_ff", "1.0", "Frendlyfire disable on spawn? If server cvar ff is 0 set it to 0", FCVAR_PLUGIN,true,0.0,true,1.0);
   snbfreeze = FindConVar("mp_freezetime");
   
   RefreshSettings();

   AutoExecConfig( true, "sm_spawn_noblock" );
   HookConVarChange(snbEnabled, MyCvarChange);
   HookConVarChange(snbTime, MyCvarChange);
   HookEvent( "round_start", Event_RoundStart );

}

// Settings Section
public MyCvarChange(Handle:convar, const String:oldValue[], const String:newValue[]) {
   if(strcmp(oldValue, newValue)==0) return; //No change
   RefreshSettings(convar);
}

RefreshSettings(Handle:convar=INVALID_HANDLE) {
   decl bool:boolval;

   if(convar == INVALID_HANDLE || convar == snbTime) {
      nbTime = GetConVarFloat(snbTime);
      if(nbTime<0.0) nbTime = 0.0;
      
      ServerCommand("mp_solid_teammates 0");
      
      
      if(convar != INVALID_HANDLE) return;
   }
   if(convar == INVALID_HANDLE || convar == snbEnabled) {
      boolval = GetConVarBool(snbEnabled);
      if(boolval != nbEnabled) {
         if(boolval)   { //Enable
            nbEnabled = true;
            TryEnablePlugin();
         } else      { //Disable
            DisablePlugin();
            nbEnabled = false;
         }
      }
      if(convar != INVALID_HANDLE) return;
   }
}

public OnMapStart() {
   RefreshSettings();
   TryEnablePlugin();
   
}

TryEnablePlugin() {
   nbEnabled       = true;
   PrintToChatAll("\x01\x0B\x04%t", "Enabled");
}

DisablePlugin() {
   nbEnabled = false;
   PrintToChatAll("\x01\x0B\x04%t", "Disabled");
}

//Plugn noblock part

EBlock(client)
{
 SetEntProp(client, Prop_Data, "m_CollisionGroup", COLLISION_GROUP_PUSHAWAY);
}

UBlock(client)
{
   SetEntProp(client, Prop_Data, "m_CollisionGroup", COLLISION_GROUP_PLAYER);
}

public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast )
{
   PrintToChatAll("\x01\x0B\x04%t", "Enabled");

   if(GetConVarBool(snbFire) == true)
   {
      ServerCommand("mp_friendlyfire 0");
   }
   ServerCommand("mp_solid_teammates 0");
   
   new Float: time1;
   time1 = GetConVarInt(snbTime) + GetConVarInt(snbfreeze)- 1.0;
   g_Timer_One          = CreateTimer(time1, snbPush);
   
}

public Action:snbPush(Handle:timer)
{
      for (new i = 1; i <= MaxClients; i++)
      {   
         if (IsClientInGame(i) && IsPlayerAlive(i))
         {
            EBlock(i);
         }
      }
      
      g_Timer_Two = CreateTimer(1.0, snbSolid);
      KillTimer(g_Timer_One);
}

public Action:snbSolid(Handle:timer)
{
   ServerCommand("mp_solid_teammates 1");
   
   for (new i = 1; i <= MaxClients; i++)
      {   
         if (IsClientInGame(i) && IsPlayerAlive(i))
         {
            UBlock(i);
         }
      }
   
   if(GetConVarBool(snbFire) == true) {
      ServerCommand("mp_friendlyfire 1");
      }

   PrintToChatAll("\x01\x0B\x04%t", "Disabled");
   KillTimer(g_Timer_Two);
}

Установка:
1. Скомпилировать исходный файл spawn_noblock_csgo.sp
2. Поместить с компилированный файл spawn_noblock_csgo.smx в папку plugins
3. Поместить файл snb.phrases.txt в папку translations
Файл Simple_Show_Damage.cfg создается автоматический после запуска сервера по пути папка с сервером\csgo\cfg\sourcemod
Вложения
spawn_noblock.zip
(1.94 KiB) Загружено 315 раз

Вернуться в «SourceMod»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 1 гость