[CSS|Помощь] Замедление в конце раунда

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Скрипт:
PHP:
#include <sourcemod>

public OnPluginStart()
{
	HookEvent("round_start", Event_RoundStart);
	HookEvent("round_end", Event_RoundEnd);
	AddCommandListener(BlockCheatCommands, "noclip");
	AddCommandListener(BlockCheatCommands, "impulse 101");
	AddCommandListener(BlockCheatCommands, "impulse 203");
	AddCommandListener(BlockCheatCommands, "notarge");
	AddCommandListener(BlockCheatCommands, "killserver");
	AddCommandListener(BlockCheatCommands, "sv_gravity");
}

public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
	ServerCommand("sv_cheats 1;host_timescale 0.40");
	PrintToChatAll("Начало");
}

public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
	ServerCommand("sv_cheats 0;host_timescale 1");
	PrintToChatAll("Конец");
}

public Action:BlockCheatCommands(client, const String:command[], argc)
{
	PrintToChat(client, "Чит команды запрещены");
	return Plugin_Handled;
}

Вопросы:
1. Время замедляется. Игрок двигается плавно. Оружие двигается рывками. Что сделать, чтобы оружие двигалось плавно?
2. Хочу запретить команды в промежутке между концом и началом раунда. Так вот, как запретить команды, наподобие
PHP:
impulse 101
impulse 203
// Число вместо *
sv_gravity *
 

legend1998

Участник
Сообщения
286
Реакции
187
Ну во первых, замени
ServerCommand("sv_cheats 0;host_timescale 1");
на
ServerCommand("host_timescale 1;sv_cheats 0");
т.к. sv_cheats уже выключен и пытаешься сменить host_timescale

Запретить команды можно ещё с помощью FCVAR_ ( http://docs.sourcemod.net/api/index.php?fastload=show&id=490& ) - сам не пробовал... :)

И я думаю лучше применять SetConVarInt вместо ServerCommand для sv_cheats:
Пример:
PHP:
new Handle:Cheats;

public OnPluginStart()
{
        HookEvent("round_end", Event_RoundEnd);
        Cheats = FindConVar("sv_cheats");
}

public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast) 
{
       SetConVarInt(Cheats, 1)
       ServerCommand("host_timescale 0.40");
       PrintToChatAll("Начало"); 
}
И поправь
PHP:
public Action:BlockCheatCommands(client, const String:command[], argc) 
{ 
    PrintToChat(client, "Чит команды запрещены"); 
    return Plugin_Handled; 
}
на
PHP:
public Action:BlockCheatCommands(client, const String:command[], argc) 
{ 
    if(client != 0)
    {
        PrintToChat(client, "Чит команды запрещены"); 
        return Plugin_Handled;
    }

   return Plugin_Continue;
}
 
Последнее редактирование:

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
legend1998
1.
ServerCommand("sv_cheats 0;host_timescale 1");
на
ServerCommand("host_timescale 1;sv_cheats 0");
Не имеет значения, можно просто - ServerCommand("sv_cheats 0");
2. Не нужно копировать и вставлять сюда часть кода из другого плагина
3. Блокировать можно командой OnPlayerRunCmd (Источник: Cheat Control and wS)
4. На первый вопрос так и нет ответа
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
☆★☆БАТЯ☆★☆™
Я попросил помощи ИМЕННО по этому коду... Если все брать из других, то смысл чему либо учиться?

legend1998
PHP:
Cheats = FindConVar("sv_cheats");
SetConVarInt(Cheats, 1, true, true);
Тык
 

legend1998

Участник
Сообщения
286
Реакции
187
Попробуй такой:
PHP:
#include <sourcemod>

new Handle:Cheats;

//new Handle:BulletTime[MAXPLAYERS+1];

#define TEST // Тестирование плагина

public OnPluginStart()
{
    HookEvent("round_start", Event_RoundStart);
    HookEvent("round_end", Event_RoundEnd);
    AddCommandListener(BlockCheatCommands, "noclip");
    AddCommandListener(BlockCheatCommands, "impulse 101");
    AddCommandListener(BlockCheatCommands, "impulse 203");
    AddCommandListener(BlockCheatCommands, "notarge");
    AddCommandListener(BlockCheatCommands, "killserver");
    AddCommandListener(BlockCheatCommands, "sv_gravity");
    Cheats = FindConVar("sv_cheats");
}

public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
    #if defined TEST
    for (new i = 1; i <= MaxClients; i++)
    {
        if(IsClientInGame(i) && !IsFakeClient(i))
        {
            SendConVarValue(i, Cheats, "1");
            //BulletTime[i] = CreateTimer(4.0, TimerEnd, i); 
        }
    }
    #endif

    new GetCheats = GetConVarInt(Cheats);

    if(GetCheats == 0)
    {
        SetConVarInt(Cheats, 1);
    }
    ServerCommand("host_timescale 0.40");

    #if defined TEST
    PrintToChatAll("Начало"); 
    #endif
}

public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    #if defined TEST
    for (new i = 1; i <= MaxClients; i++)
    {
        if(IsClientInGame(i) && !IsFakeClient(i))
        {
            SendConVarValue(i, Cheats, "0");
        }
    }
    #endif

    new GetCheats = GetConVarInt(Cheats);

    if(GetCheats == 1)
    {
        SetConVarInt(Cheats, 0);
    }

    ServerCommand("host_timescale 1");

    #if defined TEST
    PrintToChatAll("Конец"); 
    #endif
}

public Action:BlockCheatCommands(client, const String:command[], argc) 
{
    if(client != 0)
    {
        PrintToChat(client, "Чит команды запрещены"); 
        return Plugin_Handled;
    }

    return Plugin_Continue;
}
/* 
public Action:TimerEnd(Handle:timer, any:client)
{
    for (new i = 1; i <= MaxClients; i++)
    {
        if(IsClientInGame(i) && !IsFakeClient(i))
        {
            SendConVarValue(i, Cheats, "0");
            BulletTime[i] = INVALID_HANDLE;
        }
    }
} */
P.S. Баг с замедлением примерно за 1-2 секунды до начала раунда... Лучше поставить таймер.
 
Последнее редактирование:

Leckter Hannibal

Участник
Сообщения
538
Реакции
182
Парни Привет.
DoK_1997 Если плагин получится таким как ты хотел,может выложишь здесь,просто задумка прикольная,если бы я ,был силен в написании ,то обязательно помог.
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Не то.. Смысла нет мудрить и т.д... Факт в том что замедление работает, но не очень хорошо..
 

BMW M6

Участник
Сообщения
1,217
Реакции
534
Я кажется догадался! Убери с сервера SMAC. Будет тебе счастье.
Я сегодня сам долго голову грел, у меня по смыслу плагин такой же, но код вообще другой!!!
P.S. Если сделаешь изоляцию от смака, поделись пожалуйста!
 

SenatoR

Участник
Сообщения
773
Реакции
344
Жалко нельзя ограничить определенное место, а не все (((
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Непонятно в чем дело
Когда нахожусь на сервере
Ввожу в консоль sm_rcon sv_cheats 1 и sm_rcon host_timescale <тут любое число>
Так вот, замедление есть, а вот смена оружия быстрая + оружие не плавно передвигается (рывками)
 

maks.88

Участник
Сообщения
5
Реакции
0
А вобще у меня тупил он сильно, все перебрал, помогло толко когда выключен smac_cvars.smx
 
Сверху Снизу