Изменение скорости в полете

Тема в разделе "Программирование / Скриптинг", создана пользователем MiCRoSoFt989, 3 июл 2016.

  1. MiCRoSoFt989

    MiCRoSoFt989

    Сообщения:
    9
    Симпатии:
    0
    Во время толчка через TeleportEntity игрок может менять силу и направление полета через клавиши передвижения, как запретить ему это делать?
     
    Последнее редактирование: 3 июл 2016
  2. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.566
    Симпатии:
    1.988
    Проблему на практике не видел, так что, просто блокировать кнопки:
    PHP:
    new bool:g_bBlockButtons[MAXPLAYERS 1];

    ...
    {
        
    g_bBlockButtons[client] = true;
        
    TeleportEntity(client, ...);
        
    CreateTimer(0.1ResetBlockclient);
    }

    public 
    Action:OnPlayerRunCmd(client, &buttons, &impulseFloat:vel[3], Float:angles[3], &weapon)
    {
        if (
    g_bBlockButtons[client])
        {
            
    buttons &= ~buttons;
            return 
    Plugin_Changed;
        }
        return 
    Plugin_Continue;
    }

    public 
    Action:ResetBlock(Handle:timerany:client)
    {
        
    g_bBlockButtons[client] = false;
        return 
    Plugin_Stop;
    }
     
    MiCRoSoFt989 нравится это.
  3. MiCRoSoFt989

    MiCRoSoFt989

    Сообщения:
    9
    Симпатии:
    0
    @AlmazON, код работает, только не запрещает использовать кнопки передвижения.
     
  4. MiCRoSoFt989

    MiCRoSoFt989

    Сообщения:
    9
    Симпатии:
    0
    Да, даже на 10.0 секунд, не запрещает.
     
  5. MiCRoSoFt989

    MiCRoSoFt989

    Сообщения:
    9
    Симпатии:
    0
    Если использовать return Plugin_Handled, то игрок замораживается на время таймера. Простая заморозка отменяет толчок.

    Есть еще заморозка,которая встречается в конце карты.
    Она запрещает нажимать кнопки и поворачивать мышкой,но игроком манипулировать все еще можно. Если игрока воскресить во время этой заморозки,то он сможет двигать мышкой,но ходить не может.

    Как использовать такую заморозку?
     
  6. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.566
    Симпатии:
    1.988
    Код:
    SetEntityFlags(client, FL_FROZEN);
     
  7. MiCRoSoFt989

    MiCRoSoFt989

    Сообщения:
    9
    Симпатии:
    0
    AlmazON, это полная заморозка, а как сделать заморозку, чтобы мышкой можно было манипулировать, а клавишами ходьбы нет?
     
  8. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.566
    Симпатии:
    1.988
    Код:
    SetEntityMoveType(client, MOVETYPE_NONE);
    Так это совсем обычная. :cool: Оффтоп
     
  9. MiCRoSoFt989

    MiCRoSoFt989

    Сообщения:
    9
    Симпатии:
    0
    Это заморозка, при которой не работает передвижение полностью, толчок при ней не работает.
     
  10. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.566
    Симпатии:
    1.988
    Ну так других типов вроде и нет) Меняй флаги, может подыщешь нужную.
     
  11. White Wolf

    White Wolf [] (int _n) -> double { return (_n % 2) == 0;}); Супер-модератор

    Сообщения:
    1.193
    Симпатии:
    424
    @AlmazON, может использовать такой способ?
    Последний параметр в TeleportEntity (Velocity) установить значение вектора на 0.0
    Сначала сделать:
    PHP:
    SetEntityMoveType(clientMOVETYPE_NONE);
    SetEntPropFloat(clientProp_Data"m_flLaggedMovementValue"0.0);
    И поставить в таймер на 0.2 секунды в callback которого написать:
    PHP:
    SetEntityMoveType(clientMOVETYPE_WALK);
    SetEntPropFloat(clientProp_Data"m_flLaggedMovementValue"1.0);
     
  12. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.566
    Симпатии:
    1.988
    Не пойдёт:
    Так что, самое простое - блочить клавиши.
     
  13. Саша Шеин

    Саша Шеин

    Сообщения:
    1.258
    Симпатии:
    191
    Как вариант, только кто нибудь переделайте на SP.


    ent_fire player addoutput "health -1" // Игроки "замерзнут" :D
     
  14. SAZONISCHE

    SAZONISCHE

    Сообщения:
    116
    Симпатии:
    28
    держи
     

    Вложения: