Нужна помощь с установкой лимита на использования команды игроком

Алексей Кашура

Участник
Сообщения
15
Реакции
1
Здравствуйте! Извиняюсь за тупость заранее.
Мне нужна помощь или хотя бы пример как сделать лимит на использования команды игроком.
Например чтобы каждый игрок мог использовать команду !test или !info по 1-5 раз, за раунд. А после это блокировалась команда.
 

aim bot`

Участник
Сообщения
12
Реакции
9
Здравствуйте! Извиняюсь за тупость заранее.
Мне нужна помощь или хотя бы пример как сделать лимит на использования команды игроком.
Например чтобы каждый игрок мог использовать команду !test или !info по 1-5 раз, за раунд. А после это блокировалась команда.

Попробуй.
 

Вложения

  • limit.sp
    989 байт · Просмотры: 33

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
1) В случае наличия мода, вроде DM, команда будет работать далеко не столько раз за раунд, сколько указано, а гораздо больше.
2) Такой код лишь пишет в чат о лимите использования команды, но писать можно и далее, просто не обращая на неё внимания.
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Так лучше.

PHP:
#include <sourcemod>
#include <sdktools>

new Limit[MAXPLAYERS +1];

new Handle: sm_limit = INVALID_HANDLE;

public Plugin:myinfo = 
{
	name = "New Plugin",
	author = "Unknown",
	description = "<- Description ->",
	version = "1.0",
	url = "<- URL ->"
}

public OnPluginStart()
{
	RegConsoleCmd ("test", test);
	HookEvent("round_start", Round_Start);
	
	sm_limit = CreateConVar ("sm_limit", "3", "—колько игрок может раз ввести команду:");
	AutoExecConfig (true, "Limit");
}

public Round_Start (Handle:event, const String:name[], bool:dontBroadcast) 
{ 
	for(new client=1; client <= GetMaxClients(); client++)
	{
		Limit[client] = 0;
	}
} 

public Action: test (client,args)
{
	new limit = GetConVarInt (sm_limit);
	if (Limit[client] < limit)
	{
		Limit[client]++;
		PrintToChat(client, "У вас осталось %d использований", limit-Limit[client]);
	}
	else
	{
		PrintToChat (client, "Лимит исчерпан");
	}
return Plugin_Handled;		
}

public OnClientDisconnected(client)
{
	Limit[client] = 0;
}
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
AlmazON, разве в OnPluginStart() можно что-то вернуть?
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Primo
1. В циклах используй MaxClients

2. Не нужно получать переменную каждый раз

3. sdktools не нужно подключать

4. Сомневаюсь, что можно заблокировать команду от другого плагина
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
The End Is Near...,
1. Всегда думал, что GetMaxClients лучше
2. Насчёт квара - то да, в этом моя ошибка
3. Это я не менял из исходника, предоставленный выше
4. Честно говоря, я не могу представить блокировки команды от другого плагина, поэтому не понимаю о чем Вы.
 
Сверху Снизу