Написание плагинов

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
максимка27, я хотел сначала скинуть но на ксго не будет работать т.к. в последнем обновлении там изменился способ выдачи патронов в запас
 

hanson

Участник
Сообщения
303
Реакции
15
В таком случае подниму свой пост: http://hlmod.ru/forum/showpost.php?p=195073&postcount=870

Добавлено через 20 минут
R1KO, есди сможете, хотябы только m4 без кваров и тд

Добавлено через 2 часа 43 минуты
Прошу переписать данный модуль, чтобы он работал для админов с флагом b
 
Последнее редактирование:

trueattack

Участник
Сообщения
134
Реакции
26
Ситуация:
На сервер добавлены 6 ботов, кикаются они постепенно, как только игроки заходят за команду. Но бывают ситуации, когда сервер забит игроками и некоторые не могут приконнектится, пока все боты не будут кикнуты, так как они занимают слоты. Но не все игроки делают реконнект, поэтому после смены карты треть игроков отваливается от сервера.

Требуется написать простенький плагин добавляющий/кикающий ботов с сервера в зависимости от кол-ва людей, играющих в данный момент на сервере. Плагин с определенным интервалом проверяет наличие игроков на сервере, если их меньше n, то добавляет ботов на сервер, если их больше - кикает после нескольких проверок.

Можно ли обойтись без плагина?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Можно ли обойтись без плагина?
Нет. Всё дело в том, что боты нормально кикаются (стандартными кварами) только при конце/старте раунда. А ведь в GG + DM такое редко случается.
Заметил, что после обновлений CS:S (я не путаю) ещё такое случилось. Раньше боты как-то сами рассасывались.
 

hanson

Участник
Сообщения
303
Реакции
15
Прошу написать плагин, который спавнит много куриц. Игра - КСГО
 

mumuxtarka

Участник
Сообщения
46
Реакции
5
Если можно такой плагин.
Кик за чрезмерно использование команд status , ping в консоле.
Если статус или пинг вводят больше раза в секунду допустим то кикает.
Знаю что есть плагин от ГодТм666, но хотелось чтобы был плагин с исходным кодом
Заранее спасибо
 

akvorok.ego

Участник
Сообщения
314
Реакции
186
Если можно такой плагин.
Кик за чрезмерно использование команд status , ping в консоле.
Если статус или пинг вводят больше раза в секунду допустим то кикает.
Знаю что есть плагин от ГодТм666, но хотелось чтобы был плагин с исходным кодом
Заранее спасибо

PHP:
#pragma semicolon 1
#include <sourcemod>

new g_CmdCount[MAXPLAYERS + 1];
new Float:g_fFirstCmdTime[MAXPLAYERS + 1];

public Plugin:myinfo = 
{
	name	= "Anti Alias Lag",
	author	= "wS (♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥)",
	version = "1.1"
};

public OnPluginStart()
{
	AddCommandListener(CommandListener_CallBack);
}

public OnClientConnected(client)
{
	g_CmdCount[client] = 0;
	g_fFirstCmdTime[client] = 0.0;
}

public Action:CommandListener_CallBack(client, const String:command[], argc)
{
	if (client < 1)
		return Plugin_Continue;

	if (g_CmdCount[client]++ == 0)
	{
		g_fFirstCmdTime[client] = GetGameTime();
	}
	else if (g_CmdCount[client] > 30)
	{
		if ((GetGameTime() - g_fFirstCmdTime[client]) < 2.1)
		{
			KickClient(client, "Чрезмерное использование команд");
			return Plugin_Stop;
		}
		g_CmdCount[client] = 0;
		g_fFirstCmdTime[client] = 0.0;
	}

	return Plugin_Continue;
}
 

mumuxtarka

Участник
Сообщения
46
Реакции
5
PHP:
#pragma semicolon 1
#include <sourcemod>

new g_CmdCount[MAXPLAYERS + 1];
new Float:g_fFirstCmdTime[MAXPLAYERS + 1];

public Plugin:myinfo = 
{
	name	= "Anti Alias Lag",
	author	= "wS (♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥)",
	version = "1.1"
};

public OnPluginStart()
{
	AddCommandListener(CommandListener_CallBack);
}

public OnClientConnected(client)
{
	g_CmdCount[client] = 0;
	g_fFirstCmdTime[client] = 0.0;
}

public Action:CommandListener_CallBack(client, const String:command[], argc)
{
	if (client < 1)
		return Plugin_Continue;

	if (g_CmdCount[client]++ == 0)
	{
		g_fFirstCmdTime[client] = GetGameTime();
	}
	else if (g_CmdCount[client] > 30)
	{
		if ((GetGameTime() - g_fFirstCmdTime[client]) < 2.1)
		{
			KickClient(client, "Чрезмерное использование команд");
			return Plugin_Stop;
		}
		g_CmdCount[client] = 0;
		g_fFirstCmdTime[client] = 0.0;
	}

	return Plugin_Continue;
}

этот плагин кикает за флуд консольными командами типо say buy и прочее а за status и ping от не кикает.
 

akvorok.ego

Участник
Сообщения
314
Реакции
186
этот плагин кикает за флуд консольными командами типо say buy и прочее а за status и ping от не кикает.

Вообще-то кикает...
Если хочешь чтобы кикало только за написание ping и status сделай:

PHP:
public OnPluginStart() 
{ 
	AddCommandListener(CommandListener_CallBack, "status");
	AddCommandListener(CommandListener_CallBack, "ping");
}
 

mumuxtarka

Участник
Сообщения
46
Реакции
5
Вообще-то кикает...
Если хочешь чтобы кикало только за написание ping и status сделай:

PHP:
public OnPluginStart() 
{ 
	AddCommandListener(CommandListener_CallBack, "status");
	AddCommandListener(CommandListener_CallBack, "ping");
}

Вобще-то не кикает...
и даже с этим кодом не кикает...
 

mumuxtarka

Участник
Сообщения
46
Реакции
5
Еще такой вопрос, не совсем по теме. Помогите правильно составить код
иф мап префикс cs
{
....
}
интересует имеено иф мап префикс cs
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
[Любая игра] Получение нужного префикса карты и действие с ним

интересует имеено иф мап префикс cs
PHP:
public OnMapStart()
{
	decl String:s_PrefixMap[4];
	GetCurrentMap(s_PrefixMap, 4);
	if(strcmp(s_PrefixMap, "cs_", false) == 0)
	{
		//Префикс карты cs_
	}
	else
	{
		//Префикс не совпал.
	}
}
 
Сообщения
9
Реакции
0
1.Плагин Players votes
2. В общем такая проблема. Когда люди банят человека по voteban, он перезаходит меняя айди. Вот я хочу чтобы любой человек которого забанили через вотебан, не зашел не раньше времени его бана, чтобы его заблокировало до окончания бана
 

mumuxtarka

Участник
Сообщения
46
Реакции
5
Всем привет. Вопрос немного не по теме...
В чем разница вылавливать событие в ОнПлагинСтарт

HookEvent("player_disconnect", Event_PlayerDisconnect);

а потом использовать
public Event_PlayerDisconnect .....

или же просто написать
public OnClientDisconnect(client)
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
В чем разница:
HookEvent("player_disconnect", Event_PlayerDisconnect);
public OnClientDisconnect(client)
Событие вызывается лишь при полном отключении игрока от сервера, а OnClientDisconnect(client)/OnClientDisconnect_Post(client) - ещё и при смене карты. Ну и собственно Handle:Event события - тоже может быть плюсом.
Если тебе нужен лишь индекс игрока и не важно, что при смене карты идёт повторный вызов функции - используй OnClientDisconnect.
 

mumuxtarka

Участник
Сообщения
46
Реакции
5
Событие вызывается лишь при полном отключении игрока от сервера, а OnClientDisconnect(client)/OnClientDisconnect_Post(client) - ещё и при смене карты. Ну и собственно Handle:Event события - тоже может быть плюсом.
Если тебе нужен лишь индекс игрока и не важно, что при смене карты идёт повторный вызов функции - используй OnClientDisconnect.
у меня там вылавливается имя и айпи. так понимаю разумней будет HookEvent("player_disconnect
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
вылавливается имя и айпи
Имя в уже готовом строковом виде есть в событии, а вот IP нет.
разумней будет HookEvent("player_disconnect
Если тебе, например, нужно сохранить некую статистику игрока, то нет, лучше делать это через OnClientDisconnect(client), дабы избежать большой потери информации в случае падения сервера (более частая запись, при каждой смене карты).
С другой стороны - это тормозит само изменение карты (больше задержка).
 
Сверху Снизу