Перейти к содержанию

До Нового года осталось....

С новым годом пацаны!

@St1Ng_OnE, @NO.STlK, @Darkness Fox, @uKC, @HeNtAi En0T, @KTSN, @Ancor, @Enotik, @NN Team Pr1x, @васт, @Sokrat1337, @O.privet, @BakhTee, @CHIKI_BRIKI и @Blacky я хочу поздравить вас с наступившим, 2022 годом.

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

Люди, ники которых я перечислил вверху, весь 2021 год делали IP-Gamers немножечко ярче. Кто то влиял на IP-Gamers хорошо, а кто то далеко не в лучшую сторону. Спасибо за то, что вы не забываете наше сообщество.

Просто знайте, пока есть хоть один человек, который что то пишет на IP-Gamers, будет и сотня другая людей, кто это прочтет. С новым, 2022 годом!

 

[L4D2]Rainbow Light, Glow and Body - Радужная аура на игроке (Радуга в L4D2)


Рекомендуемые сообщения

  • Администратор

20211121112151_1.jpg

Простая переливающаяся радужная аура на игроке в L4D2, которая включается и выключается по команде.

Переменная:

rainbow_time 3.0

отвечает за время существование одного цвета в радуге.
Команды:

!arco - Включить радугу
!arcoff - Выключить радугу

 

Установка:

  • Либо готовую версию .smx поместить в /addons/sourcemod/plugins, либо скомпилировать исходник и поместить туда же.
  • Сделать рестарт сервера.

rainbow_player.sp rainbow_player.smx

Исходник плагина
#pragma semicolon 1
#pragma newdecls required
#include 
#include 
#include 

int g_iLight[MAXPLAYERS+1];

ConVar g_hRainbowTime;

public Plugin myinfo =
{
	name = "[L4D2] Rainbow Flashlight",
	author = "King",
	description = "Set Rainbow To flashlight",
	version = "1.0.0",
	url = ""
};

public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max)
{
	EngineVersion test = GetEngineVersion();
	if (test != Engine_Left4Dead && test != Engine_Left4Dead2)
	{
		strcopy(error, err_max, "Plugin only supports Left 4 Dead 1 & 2.");
		return APLRes_SilentFailure;
	}
	return APLRes_Success;
}

public void OnPluginStart()
{
    g_hRainbowTime = CreateConVar("rainbow_time", "3.0", "time for aura and body change");
	
    HookEvent("player_death", Event_PlayerDeath);
    HookEvent("round_end", Event_RE);

    RegAdminCmd("sm_arco", Command_Rainbow, ADMFLAG_ROOT, "make rainbow light_dynamic");
    RegAdminCmd("sm_arcoff", Command_RainbowOff, ADMFLAG_ROOT, "kill rainbow light_dynamic");
	
	AutoExecConfig(true, "rainbow_light");
}

public Action Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
	RemoveNeon(GetClientOfUserId(event.GetInt("userid")));
}

public Action Event_RE(Event event, const char[] name, bool dontBroadcast)
{
	RemoveNeon(GetClientOfUserId(event.GetInt("userid")));
}

public void OnClientDisconnect(int iClient)
{
	g_iLight[iClient] = 0;
}

public Action Command_Rainbow(int client, int args)
{
    SetClientNeon(client);
}

public Action Command_RainbowOff(int client, int args)
{
    RemoveNeon(client);
}

int SetClientNeon(int iClient)
{
	RemoveNeon(iClient);

	g_iLight[iClient] = CreateEntityByName("light_dynamic");
	DispatchKeyValue(g_iLight[iClient], "brightness", "4");
	float fOrigin[3];
	GetClientAbsOrigin(iClient, fOrigin);
	DispatchKeyValue(g_iLight[iClient], "spotlight_radius", "250");
	DispatchKeyValue(g_iLight[iClient], "distance", "255");
	DispatchKeyValue(g_iLight[iClient], "style", "0");
	SetEntPropEnt(g_iLight[iClient], Prop_Send, "m_hOwnerEntity", iClient);
	SDKHook(iClient, SDKHook_PreThinkPost, OnRainbowPlayer);
	if(DispatchSpawn(g_iLight[iClient]))
	{
		AcceptEntityInput(g_iLight[iClient], "TurnOn");
		TeleportEntity(g_iLight[iClient], fOrigin, NULL_VECTOR, NULL_VECTOR);
		SetVariantString("!activator");
		AcceptEntityInput(g_iLight[iClient], "SetParent", iClient, g_iLight[iClient], 0);

		SDKHook(g_iLight[iClient], SDKHook_SetTransmit, OnTransmit);
		
		return;
	}
	
	g_iLight[iClient] = 0;
}

void RemoveNeon(int iClient)
{
	if(g_iLight[iClient] && IsValidEdict(g_iLight[iClient]))
	{
		AcceptEntityInput(g_iLight[iClient], "TurnOff"); 
		AcceptEntityInput(g_iLight[iClient], "Kill");
		SetEntProp(iClient, Prop_Send, "m_glowColorOverride", 0); 
		SetEntProp(iClient, Prop_Send, "m_iGlowType", 0);
		SetEntProp(iClient, Prop_Send, "m_nGlowRange", 0);
		SetEntProp(iClient, Prop_Send, "m_nGlowRangeMin", 0);
		SDKUnhook(iClient, SDKHook_PreThinkPost, OnRainbowPlayer);
	}

	g_iLight[iClient] = 0;
}

public Action OnTransmit(int iEntity, int iClient)
{
	if (g_iLight[iClient] == iEntity)
	{
		return Plugin_Continue;
	}

	static int iOwner, iTeam;

	if ((iOwner = GetEntPropEnt(iEntity, Prop_Send, "m_hOwnerEntity")) > 0 &&
		(iTeam = GetClientTeam(iClient)) > 1
		&& GetClientTeam(iOwner) != iTeam)
	{
		return Plugin_Handled;
	}

	return Plugin_Continue;
}

public Action OnRainbowPlayer(int iClient)
{
	if (!(0 < iClient <= MaxClients && IsClientInGame(iClient) && IsPlayerAlive(iClient)))
	{
		SDKUnhook(iClient, SDKHook_PreThinkPost, OnRainbowPlayer);

		return Plugin_Continue;
	}
	
	float flRainbow = g_hRainbowTime.FloatValue;

	int color[3];
	color[0] = RoundToNearest((Cosine((GetGameTime() * flRainbow) + iClient + 0) * 127.5) + 127.5);
	color[1] = RoundToNearest((Cosine((GetGameTime() * flRainbow) + iClient + 2) * 127.5) + 127.5);
	color[2] = RoundToNearest((Cosine((GetGameTime() * flRainbow) + iClient + 4) * 127.5) + 127.5);
	
	//Light Color
	char sBuffer[16];
	FormatEx(sBuffer, sizeof(sBuffer), "%i %i %i %i", GetRandomColor(color[2]), GetRandomColor(color[1]), GetRandomColor(color[0]), 255);
	DispatchKeyValue(g_iLight[iClient], "_light", sBuffer);
	
	//GLow Color
	SetEntProp(iClient, Prop_Send, "m_glowColorOverride", color[2] + (color[1] * 256) + (color[0] * 65536));
	SetEntProp(iClient, Prop_Send, "m_iGlowType", 3);
	SetEntProp(iClient, Prop_Send, "m_nGlowRange", 99999);
	SetEntProp(iClient, Prop_Send, "m_nGlowRangeMin", 0);
	
	//Player Color
	SetEntityRenderColor(iClient, color[2], color[1], color[0], 255);

	return Plugin_Continue;
}

stock int GetRandomColor(int color)
{
	return (color == -1 || color < 0 || color > 255) ? GetRandomInt(0, 255) : color;
}

 

Ссылка на комментарий
Поделиться на другие сайты

  • Администратор

Пример можно посмотреть в этом видео:

 

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Похожий контент

    • Автор Райан
      Описание:
      Этот плагин заменяет раздражающее стандартное голосование за сложность полупрозрачным меню. Функции:
      Нет черного экрана. Анонс о голосовании Гибкая настройка прав доступа Возможность выполнять свои собственные файлы конфигурации для каждой сложности Возможность сбрасывать переменные, выполняя свой собственный файл конфигурации по умолчанию до применения сложности Все действия логируются Возможность установить 2 дополнительных уровня сложности «Hard +» и «Expert +» с их собственными конфигурационными файлами). Разрешения:
      По умолчанию, голосование может быть начато всеми. Возможность установить минимальное время для повторного голосования. Возможность установить минимальное количество игроков, чтобы можно было начать голосование. Возможность заблокировать определенного пользователя по имени или SteamID от использования функции голосования. Расположение файла блокировки голосования:
      data/votedifficulty_vote_block.txt Расположение логов:
      logs/vote_difficulty.log ConVars:
      sm_votedifficulty_delay - по умолчанию: 60 - Минимальная задержка между голосованиями sm_votedifficulty_timeout - по умолчанию: 10 - Как долго (в секундах) длится голосование sm_votedifficulty_announcedelay - по умолчанию: 2.0 - Задержка (в секундах) между анонсом и появлением меню голосования sm_votedifficulty_minplayers - по умолчанию: 1 - Минимальное количество игроков, присутствующих в игре для начала голосования sm_votedifficulty_accessflag - по умолчанию: "" - флаг администратора, необходимый для начала голосования (оставьте пустым для всех) sm_votedifficulty_log - по умолчанию: 1 - Вести запись логов? (1 - Да / 0 - Нет) sm_votedifficulty_use_master_plus - по умолчанию: 0 - Добавить новую сложность «Мастер +»? (1 - Да / 0 - Нет) sm_votedifficulty_use_expert_plus - по умолчанию: 0 - Добавить новую сложность «Эксперт +»? (1 - Да / 0 - Нет) sm_votedifficulty_use_config_per_dif - по умолчанию: 1 - Использовать отдельные конфигурации для каждой сложности по умолчанию? (1 - Да / 0 - Нет) Команды:
      sm_vd - Попытка начать голосование за сложность игры sm_veto - Разрешить администратору накладывать вето на текущее голосование (требуется ADMFLAG_BAN) sm_votepass - Разрешить администратору игнорировать текущее голосование (требуется ADMFLAG_BAN) Заметка от перепостера:
      Разве отмены голосования не присутствует уже в стандартном меню SourceMod?
      Требования:
      Расширение GeoIP (входит в SourceMod). Если вы включили сложности "Hard +" и "Expert +", вам необходимо создать для них собственные файлы конфигурации (чтобы они имели смысл): сfg/server_hard+.cfg сfg/server_expert+.cfg Также у вас есть возможность запускать отдельные cfg для каждой сложности по умолчанию: cfg/server_easy.cfg cfg/server_normal.cfg cfg/server_hard.cfg cfg/server_expert.cfg Кроме того, эта конфигурация по умолчанию автоматически выполняется перед установкой любой новой сложности: сfg/server_default.cfg Все пустые файлы cfg входят во вложение архива в папке "cfg/sourcemod" (на всякий случай) Примечание. Когда вы голосуете за «Hard +», выполняется только server_hard+.cfg. Форварды:
      // ConVar, allowing to set a hook on, to understand current extended game difficulty name // Possible values (read only): //        Easy //        Normal //        Hard //        Hard+ //        Impossible //        Impossible+ z_difficulty_ex "<default value>" (read only!)  Языки:
      Русский Английский Установка:
      Распаковать содержимое архива в корневую папку вашего сервера. (Необязательно) создать желаемые конфигурации в файлах конфигурации для каждой сложности в папке cfg/sourcemod. Автор плагина Dragokas. Ссылка плагина на AM.
      vd.zip
    • Автор Райан
      Данный плагин SourceMod до банального прост. Вы в конфиге биндите необходимое вам ключевое слово на команду и после этого команду можно вызывать с помощью привязанного слова. Полезно для плагинов с длинными командами. Пример !resetscore>!rs>!r.
      В версии которую я выложил, в конфиге, вместо флагов администратора можно использовать SteamID.
      Переменные:
      sm_commandshortcuts_notification - Отображать сообщение при срабатывании команды. 1 = включено, 0 = отключено. sm_commandshortcuts_publicinfo - разрешить всем клиентам просматривать о ярлыках, набрав !commandshortcuts. 1 = все клиенты, 0 = только администраторы Команды:
      sm_reloadshortcuts - Перезагружает файл конфигурации. sm_commandshortcuts - Дает информацию о сочетаниях клавиш. Пример конфига:
      "commandshortcuts" { "1" { "shortcut" "!restartgame" "flag" "d" "command" "mp_restartgame 5" "type" "1" "registershortcut" "0" } "2" { "shortcut" "sm_fly" "flag" "STEAM_0:1:175038461" "command" "sm_noclip {player}" "type" "1" "registershortcut" "1" } "3" { "shortcut" "!shortcuts" "flag" "" "command" "sm_commandshortcuts" "type" "2" "registershortcut" "0" } } Установка:
      Поместите содержимое архива в FTP вашего сервера и сделайте рестарт. sm_commandshortcuts_v1.2.zip
      Я плагин не тестировал. Это обычный перепост оригинального плагина.
    • Автор Райан
      По заголовку все ясно, задача этого плагина проста, он должен автоматически переключать компании после финала в игре Left 4 Dead 2. Так как я этот плагин не тестировал, я все же рекомендую использовать нашу версию. Она более стабильна и более проста в использовании (И полностью русифицирована).
      Установка:
      Просто поместите плагин в директорию /addons/sourcemod/plugins и сделайте рестарт сервера. Функционал:
      Автоматически меняет кампании в хронологическом порядке. Возможность настроить свою собственную ротацию кампаний Система голосования, которая позволяет игрокам голосовать за следующую кампанию. Поддерживает все стандартные режимы игры в L4D2. Поддерживает динамическое переключение режимов игры. Другими словами, ACS по-прежнему будет работать, если сервер переключится в другой игровой режим без перезапуска или выключения сервера. Команды игрока:
      !mapvote - Позволяет любому игроку проголосовать за следующую кампанию для игры !mapvotes - Отображает следующую выбранную кампанию. Доступные Cvar:
      // Позволяет игрокам голосовать за следующую карту или кампанию [0 = ОТКЛЮЧЕНО, 1 = ВКЛЮЧЕНО ] acs_voting_system_enabled "1" // Определяет, воспроизводится ли звук при переходе на новую карту [0 = ОТКЛЮЧЕНО, 1 = ВКЛЮЧЕНО ] acs_voting_sound_enabled "1" // Устанавливает, как анонсировать голосование в начале карты [0 = Выключено, 1 = HINT TEXT, 2 = Чат, 3 = Открывается меню ] acs_voting_ad_mode "3" // Время в секундах, после которого запускается голосование acs_voting_ad_delay_time "1.0" // Устанавливает, как будет анонсироваться следующая кампания [0 = ОТКЛЮЧЕН, 1 = Hint, 2 = Чат] acs_next_map_ad_mode "1" // Время в секундах между анонсами acs_next_map_ad_interval "600.0" // Количество раз, когда выжившие могут провалить финал в Coop, прежде чем он переключится на следующую кампанию [0 = Бесконечно] acs_max_coop_finale_failures "4" В данном посте находится версия плагина 2.0.0, его изменения:
      Переработана большая часть кода, переписано множество функций, чтобы сделать их более универсальными и повторно используемыми Изменен на единый массив списка карт с индексами, которые настраиваются в зависимости от режима игры Добавлен файл конфигурации списка карт, состоящий из простого текста Добавлен список карт в выводе консоли, чтобы помочь с настройкой пользовательских карт Обновлены все карты по умолчанию для каждого стандартного игрового режима Добавлен хук для OnPZEndGamePanelMsg, который перехватывает и удаляет голосование на конец кампании, где он снова просит поиграть с группой. Добавлено обнаружение изменения файла для конфигурации списка карт, которое будет обновлять ACS при изменении карты. Исправлен файл конфигурации, не загружающий изменения Все преобразовано в новый синтаксис  
      ACS v2.0.0.zip
    • Автор Райан
      Настраивая статистику HLstatsX L4D2 я в конфигурации сервера установил переменную IgnoreBots на 1. Как я понял новые значения с ботами учитываться не будут. Но возможно ли убрать уже все записанные значения у игроков, связанные с ботами?
      Я говорю про это:

      Первое что я сейчас попробую, это полностью обнулю статистику своего профиля и отыграю 1-2 кампании, что бы посмотреть, будут или нет записываться новые значения связанные с ботами. Попозже отпишусь. Вы тоже не стесняйтесь советовать и предполагать.
      Что я попробовал, и это не сработало:
      Поставить игнорирование ботов в настройке сервера, в статистике, и полный сброс фрагов у игрока не сработало. Боты все равно учитываются. Забанив профиль бота в статистике его профиль скрыть не получится.
    • Автор Райан
      Плагин создает определенное количество Танков и Ведьм в зависимости от прогресса выживших на карте.
      Для работы плагину необходим Left 4 DHooks Direct.
      Изменения в v1.3.0 - Исправлена функция при попытке найти точку возрождения ведьмы - Добавлен новый квар: boss_spawn_interval - Добавлена новая переменная: boss_spawn_range_random Изменения в v1.1: - Изменено имя переменной на: "boss_spawn_total_*" для ограничения появления на карте - Изменена функция старых cvars "boss_spawn_tanks / witches", чтобы они появлялись одновременно. - Добавлены новые cvars для ограничения финальных карт  
      l4d2_boss_spawn.sp l4d2_boss_spawn.smx
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...