NoBlock на спауне / Simple Spawn NoBlock 1.0.0

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

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

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

NoBlock на спауне / Simple Spawn NoBlock 1.0.0

Сообщение Longipongeoos » 11 ноя 2021, 17:22

NoBlock на спауне / Simple Spawn NoBlock 1.0.0
Информация
Плагин включает mp_solid_teammates (проход через тиммейтов) в начале раунда на короткий срок
Настройки:

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

// Включить плагин
// -
// По умолчанию: "1.0"
// Минимальное: "0.000000"
// Максимальное: "1.000000"
sm_snb "1.0"

// Огонь по своим отключён во время спауна? Если серверная переменная ff - 0 то установите 0
// -
// По умолчанию: "1.0"
// Минимальное: "0.000000"
// Максимальное: "1.000000"
sm_snb_ff "0"

// Сколько секунд будет действовать плагин в начале раунда?
// -
// По умолчанию: "10.0"
// Минимальное: "1.000000"
sm_snb_time "10.0"

// [CSGO] Версия плагина Spawn NoBlock
// -
// По умолчанию: "1.2"
sm_snb_v "1.2"

Установка:
Скомпилировать при необходимости
Раскидать файлы плагина sourcemod по папкам
Исходный код

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

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



#define COLLISION_GROUP_PUSHAWAY            17
#define VERSION "1.2"


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

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

//{ 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;
new Handle:snbFF         = INVALID_HANDLE;



public OnPluginStart() {

   LoadTranslations("snb.phrases");
   
   HookEvent( "round_start", Event_RoundStart );
   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);
   CreateConVar("sm_snb_v", VERSION, "[CSGO] Spawn NoBlock version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
   snbfreeze = FindConVar("mp_freezetime");
   snbFF = FindConVar("mp_friendlyfire");
   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);
   HookConVarChange(snbEnabled, MyCvarChange);
   HookConVarChange(snbTime, MyCvarChange);
   
   nbFire = GetConVarBool(snbFF);
   
   RefreshSettings();

   
   AutoExecConfig( true, "sm_spawn_noblock" );
}
//{ 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");
}
EBlock(client)
{
   SetEntProp(client, Prop_Data, "m_CollisionGroup", COLLISION_GROUP_PUSHAWAY);
}


public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast )
{
      PrintToChatAll("\x01\x0B\x04%t", "Enabled");
      
      ///////
      //if(nbFire == true) {
      //if(GetConVarBool(snbFire) == true) {
      //ServerCommand("mp_friendlyfire 0");
      //nbFire = true;
      //   } else      { //Disable
      //   ServerCommand("mp_friendlyfire 1");
      //   }
      //   } else {
      //   ServerCommand("mp_friendlyfire 0");
      //   nbFire = true;
      //   }
      
      if(GetConVarBool(snbFire) == true) {
      ServerCommand("mp_friendlyfire 0");
      } //else      { //Disable
      //   return;
      //}
      
         
   
   ServerCommand("mp_solid_teammates 0");
   
   g_Timer_One          = CreateTimer(GetConVarInt(snbfreeze) * 1.0, snbFreeze);
   
}
public Action:snbFreeze(Handle:timer)
{
   
   KillTimer(g_Timer_One);
   g_Timer_Two          = CreateTimer(GetConVarInt(snbTime) * 1.0, snbSolid);
}

public Action:snbSolid(Handle:timer)
{
   for (new i = 1; i <= MaxClients; i++)
   {   
      if (IsClientInGame(i) && IsPlayerAlive(i))
      {
         EBlock(i);
      }
   }
   ServerCommand("mp_solid_teammates 1");
   
   ///////////////////////////////////////////////////////
   if(GetConVarBool(snbFire) == true) {
      ServerCommand("mp_friendlyfire 1");
      }
      
      
   
   PrintToChatAll("\x01\x0B\x04%t", "Disabled");
   KillTimer(g_Timer_Two);
}
Вложения
spawn_noblock_csgo.zip
(1.54 KiB) Загружено 135 раз

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

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

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