[CS: Source] Парочка м-фй на плагины (by Danyas)

Danyas

Участник
Сообщения
2,174
Реакции
1,072
Переделал плагины, оцените)
Пойдет на OB и на v34
Оффтоп
P.S. не орите за авторство, делал для себя)

1) Random C4Time
1) Разукрасил
mIFs2JFMWhs.jpg

2) Сделал ТОЛЬКО рандомное время на раунд
3) Фиксонул error при анлоаде плагина (закоментил)
Исходник:
C-подобный:
#include <sourcemod>
#pragma semicolon 1
new Handle:CvarMin;
new Handle:CvarMax;
new Handle:mp_c4timer;
new Random;
//new bool:IsHooked;

public Plugin:myinfo = 
{
	name = "Random C4 Time",
	author = "Dark Style + Danyas",
	description = "This plugin set a random time for c4 explode by map/round"
};

public OnPluginStart()
{
	CvarMin = CreateConVar("sm_random_c4t_mintime", "25", "Min. time for bomb count", FCVAR_PLUGIN, true, 0.0);
	CvarMax = CreateConVar("sm_random_c4t_maxtime", "55", "Max. time for bomb count", FCVAR_PLUGIN, true, 1.0);
	mp_c4timer = FindConVar("mp_c4timer");	
	HookEvent("round_start", Event_RoundStart);
	
//	IsHooked = true;
}

//public OnPluginEnd()
//{
//	if(IsHooked == true) UnhookEvent("round_start", Event_RoundStart);
//}

public Action:Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
	Functions();
	
	PrintToChatAll("\x01Время взрыва \x03бомбы: \x04%i сек.", Random, (Random > 1) ? "s." : ".");
}

Functions()
{
	Random = GetRandomInt(GetConVarInt(CvarMin), GetConVarInt(CvarMax));
	SetConVarInt(mp_c4timer, Random);
}

2) Last Man
1) Разукрасил

bFAu9xYSYFA.jpg

* цвет комманды у которой остался последний выживший
2) Убрал всё кроме квара звука (анонсы, менюшка и т.д.)
C-подобный:
#include <sourcemod>
#include <sdktools>
#pragma semicolon 1
#include colors
#define MAX_FILE_LEN 80

public Plugin:myinfo = 
{
	name = "LastMan [by Danyas]",
	author = "dalto+Danyas[Rus]"
};

new g_soundPreference[MAXPLAYERS + 1];
new Handle:g_CvarSoundName = INVALID_HANDLE;
new String:g_soundName[MAX_FILE_LEN];


public OnPluginStart()
{
	g_CvarSoundName = CreateConVar("sm_lmd_sound", "lastman/oneandonly.wav", "Звук для проигрывания");
	HookConVarChange(g_CvarSoundName, OnSoundChanged);
	AutoExecConfig(true, "lmd");
	HookEvent("player_death", EventPlayerDeath);
}

public OnConfigsExecuted()
{
	GetConVarString(g_CvarSoundName, g_soundName, MAX_FILE_LEN);
	decl String:buffer[MAX_FILE_LEN];
	PrecacheSound(g_soundName, true);
	Format(buffer, sizeof(buffer), "sound/%s", g_soundName);
	AddFileToDownloadsTable(buffer);
}

public OnSoundChanged(Handle:convar, const String:oldValue[], const String:newValue[])
{
	decl String:buffer[MAX_FILE_LEN];
	strcopy(g_soundName, sizeof(g_soundName), newValue);
	PrecacheSound(g_soundName, true);
	Format(buffer, sizeof(buffer), "sound/%s", g_soundName);
	AddFileToDownloadsTable(buffer);
}

public EventPlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
	new victimId = GetEventInt(event, "userid");

	new victimClient = GetClientOfUserId(victimId);

	new killedTeam = GetClientTeam(victimClient);

	new playersConnected = GetMaxClients();

	new lastManId = 0;
	for (new i = 1; i < playersConnected; i++)
	{
		if(IsClientInGame(i))
		{
			if(killedTeam==GetClientTeam(i) && IsPlayerAlive(i))
			{
				if(lastManId)
				{
					lastManId = -1;
				} else {
					lastManId = i;
				}
			}
		}
	}
	
	if(lastManId > 0)
	{
		new String:clientname[64];
		GetClientName(lastManId, clientname, sizeof(clientname));

		if (GetClientTeam(lastManId) == 2)
		CPrintToChatAll("{red}%s {default}последний, кто выжил.", clientname);
		else
		CPrintToChatAll("{blue}%s {default}последний, кто выжил.", clientname);
		if(g_soundPreference[lastManId] && !IsFakeClient(lastManId))
		{
			EmitSoundToClient(lastManId, g_soundName);
		}
	}

}
P.S. Тему буду дополнять, если это не запрещено :-D
 

Danyas

Участник
Сообщения
2,174
Реакции
1,072
Оффтоп

Оффтоп

Добавлено через 1 минуту
Обалдеть, даже не убрал вставку строки, ибо не знал, что это такое.


SM сам делает все Unhook'и и CloseHandle после отключения плагинов. Это мусор вообще был.

В первом вставка строки заменяет букву секунды, что ли?
Оффтоп
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756

Danyas

Участник
Сообщения
2,174
Реакции
1,072
Ты это сам так то выдумал? Я уже давным-давно выложил улучшенную версию, но и там такого кода не было.
Оо, я даже не видел твой фиксеный плагин:(
Я оригинал древний брал v0.0.1
Оффтоп
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
действительно не знаю что это, объяснишь?
Тут хорошо рассказали.
в твоём плагине не нужно его выключать при смене карты на отличную от de?
Нет. Плагин автоматом определяет, есть ли бомба на карте. Тогда ещё делал несколько грубовато, не так оптимизировано, но работает отлично.
 

R1KO

fuck society
Сообщения
9,460
Реакции
7,799
  • Команда форума
  • #7
Danyas, коды в тег php закидай
 
Сверху Снизу