Нужна помощь с блокировкой команды

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

Участник
Сообщения
15
Реакции
1
Нужен совет как сделать временную блокировку для игрока, чтобы каждый игрок мог, использовал его только один раз за раунд

Я сам пытал сделать, но получается, так что блокирует её полностью или вообще не работает :sad:

вот часть кода которую мне надо сделать:
HTML:
public OnPluginStart()
{
    RegConsoleCmd("sm_weapon", CommandWeapon, "");
}

public Action:CommandWeapon(client, args)
{
    if (GetClientTeam(client) == TEAM_SURVIVORS && IsPlayerAlive(client))
    {
        SetWeaponVip(client, "weapon_smg", "weapon_pistol_magnum");
    }
}

public SetWeaponVip(client, const String:weapon_name_a[], const String:weapon_name_b[])
{
    for (new i = 0; i < 5; i++)
    {
        if (GetPlayerWeaponSlot(client, i) > -1)
        {
            RemovePlayerItem(client, GetPlayerWeaponSlot(client, i));
        }
    }
    CheatCMD(client, "give", weapon_name_a);
    CheatCMD(client, "give", weapon_name_b);
    CheatCMD(client, "give", "weapon_molotov");
    CheatCMD(client, "give", "weapon_first_aid_kit");
    CheatCMD(client, "give", "weapon_adrenaline");
}

За ранние спасибо за помощь
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
PHP:
new bool:g_bIsClientUsedCommand[MAXPLAYERS+1] = {false, ...};

public OnPluginStart()
{
    RegConsoleCmd("sm_weapon", CommandWeapon, "");
    HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy);
}

public Action:CommandWeapon(client, args)
{
    if (GetClientTeam(client) == TEAM_SURVIVORS && IsPlayerAlive(client))
    {
        SetWeaponVip(client, "weapon_smg", "weapon_pistol_magnum");
    }
}

public SetWeaponVip(client, const String:weapon_name_a[], const String:weapon_name_b[])
{
	if(!client || !IsClientInGame(client) || !IsPlayerAlive(client))
		return Plugin_Handled;
	
	if(!g_bIsClientUsedCommand[client])
	{
		for (new i = 0; i < 5; i++)
		{
			if (GetPlayerWeaponSlot(client, i) > -1)
			{
				RemovePlayerItem(client, GetPlayerWeaponSlot(client, i));
			}
		}
		CheatCMD(client, "give", weapon_name_a);
		CheatCMD(client, "give", weapon_name_b);
		CheatCMD(client, "give", "weapon_molotov");
		CheatCMD(client, "give", "weapon_first_aid_kit");
		CheatCMD(client, "give", "weapon_adrenaline");

                g_bIsClientUsedCommand[client] = true;
	}
	else
		PrintToChat(client, "[SM] You have used this command before");
	
	return Plugin_Handled;
}

public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    for(new client = 1; client <= MaxClients; client++)
		g_bIsClientUsedCommand[client] = false;
}
Создай массив, при использовании меняй значение элемента массива для клиента. При определенных событиях меняй значение элемента обратно.
Но вместо события раунд старта придется использовать какое-то свое из л4д2, я не знаю какое именно. Возможно даже два хука для player_bot_replace и player_left_start_area. Я с л4д2 ещё просто дела не имел, тебе виднее что использовать.
 
Сверху Снизу