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

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

  1. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    891
    Симпатии:
    661
    Скрипт:
    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
    Симпатии:
    179
    Ну во первых, замени
    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

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

    legend1998

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

    ☆★☆БАТЯ☆★☆™

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

    The End Is Near... Russian Roulette

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

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

    legend1998

    Сообщения:
    292
    Симпатии:
    179
    Попробуй такой:
    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

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

    The End Is Near... Russian Roulette

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

    BMW M6

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

    SenatoR Модератор

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

    The End Is Near... Russian Roulette

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

    BMW M6

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

    The End Is Near... Russian Roulette

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

    BMW M6

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

    The End Is Near... Russian Roulette

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

    BMW M6

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

    The End Is Near... Russian Roulette

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

    BMW M6

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

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

    maks.88

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