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

Тема в разделе "Программирование / Скриптинг", создана пользователем The End Is Near..., 7 окт 2012.

  1. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    892
    Симпатии:
    659
    Скрипт:
    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 *
     
  2. legend1998

    legend1998

    Сообщения:
    292
    Симпатии:
    178
    Ну во первых, замени
    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(Cheats1)
           
    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;
    }
     
    Последнее редактирование: 8 окт 2012
  3. The End Is Near...

    The End Is Near... Russian Roulette

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

    legend1998

    Сообщения:
    292
    Симпатии:
    178
    Оффтоп
     
  5. ☆★☆БАТЯ☆★☆™

    ☆★☆БАТЯ☆★☆™

    Сообщения:
    2.585
    Симпатии:
    1.341
    Оффтоп
     
  6. The End Is Near...

    The End Is Near... Russian Roulette

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

    legend1998
    PHP:
    Cheats FindConVar("sv_cheats");
    SetConVarInt(Cheats1truetrue);
    Тык
     
  7. legend1998

    legend1998

    Сообщения:
    292
    Симпатии:
    178
    Попробуй такой:
    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 1<= MaxClientsi++)
        {
            if(
    IsClientInGame(i) && !IsFakeClient(i))
            {
                
    SendConVarValue(iCheats"1");
                
    //BulletTime[i] = CreateTimer(4.0, TimerEnd, i); 
            
    }
        }
        
    #endif

        
    new GetCheats GetConVarInt(Cheats);

        if(
    GetCheats == 0)
        {
            
    SetConVarInt(Cheats1);
        }
        
    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 1<= MaxClientsi++)
        {
            if(
    IsClientInGame(i) && !IsFakeClient(i))
            {
                
    SendConVarValue(iCheats"0");
            }
        }
        
    #endif

        
    new GetCheats GetConVarInt(Cheats);

        if(
    GetCheats == 1)
        {
            
    SetConVarInt(Cheats0);
        }

        
    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 секунды до начала раунда... Лучше поставить таймер.
     
    Последнее редактирование: 8 окт 2012
  8. Leckter Hannibal

    Leckter Hannibal

    Сообщения:
    521
    Симпатии:
    146
    Парни Привет.
    DoK_1997 Если плагин получится таким как ты хотел,может выложишь здесь,просто задумка прикольная,если бы я ,был силен в написании ,то обязательно помог.
     
  9. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    892
    Симпатии:
    659
    Не то.. Смысла нет мудрить и т.д... Факт в том что замедление работает, но не очень хорошо..
     
  10. BMW M6

    BMW M6

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

    SenatoR Модератор

    Сообщения:
    712
    Симпатии:
    270
    Жалко нельзя ограничить определенное место, а не все (((
     
  12. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    892
    Симпатии:
    659
    BMW M6
    Смака нет
     
  13. BMW M6

    BMW M6

    Сообщения:
    1.221
    Симпатии:
    569
    А так чтобы не создавать новую тему. Никто не знает как сделать изоляцию от смака?
     
    Владислав Филин 234102502 нравится это.
  14. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    892
    Симпатии:
    659
    BMW M6
    В смысле изоляция? Изоляция от чего?
     
  15. BMW M6

    BMW M6

    Сообщения:
    1.221
    Симпатии:
    569
    От смака. У меня начинает лагать замедление из-за смака.
     
  16. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    892
    Симпатии:
    659
    Непонятно в чем дело
    Когда нахожусь на сервере
    Ввожу в консоль sm_rcon sv_cheats 1 и sm_rcon host_timescale <тут любое число>
    Так вот, замедление есть, а вот смена оружия быстрая + оружие не плавно передвигается (рывками)
     
  17. BMW M6

    BMW M6

    Сообщения:
    1.221
    Симпатии:
    569
  18. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    892
    Симпатии:
    659
    BMW M6
    Маленькая демка
     
  19. BMW M6

    BMW M6

    Сообщения:
    1.221
    Симпатии:
    569
    Сейчас я сниму демку своего замедления времени!

    Добавлено через 7 минут
    Демо
     
    Последнее редактирование: 13 окт 2012
  20. maks.88

    maks.88

    Сообщения:
    4
    Симпатии:
    0
    А вобще у меня тупил он сильно, все перебрал, помогло толко когда выключен smac_cvars.smx