Блокировка использования func_ladder

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
1,419
Реакции
2,509
Помог
59 раз(а)
Как можно заблокировать использование func_ladder?

Дошёл до такого варианта с использованием RG_PM_Move:

Код:
public refwd_PM_Move_Pre(PlayerMove:ppmove, const server)
{
    if(get_pmove(pm_movetype) == MOVETYPE_FLY)
        return HC_SUPERCEDE;
    return HC_CONTINUE;
}
Но таким образом просто как попадаешь на лестницу ты не можешь больше спуститься.
 
Сообщения
580
Реакции
338
Предупреждения
1
Помог
9 раз(а)
Может, в таче проверять entity и блокировать тач?
Всего лишь догадка)
 
Сообщения
1,419
Реакции
2,509
Помог
59 раз(а)
steelzzz, как подметил Jumper, нельзя отловить тач лестницы (func_ladder)
This is an internal entity. When the map is compiled by VBSP it is processed and then removed: it does not exist when the map is running.
Если не ошибаюсь, единственный способ отловить на лестнице ли игрок это через *_movetype как в примере в первом сообщении. Заметил что есть мембер m_afPhysicsFlags и PFLAG_ONLADDER для использования с этим мембером, думал что это альтернатива варианту выше для проверки на лестнице ли игрок, но так и не понял как оно работает.
 
Сообщения
580
Реакции
338
Предупреждения
1
Помог
9 раз(а)
w0w,
Код:
#include <amxmodx>
#include <reapi>

public plugin_cfg()
{
    const FM_NULLENT = -1;
    new iEntity = FM_NULLENT;

    while((iEntity = rg_find_ent_by_class(iEntity, "func_ladder")))
    {
        set_entvar(iEntity, var_flags, FL_KILLME);
    }
}
работает xD
 
Сообщения
1,419
Реакции
2,509
Помог
59 раз(а)
steelzzz, но тема не об удалении энтити, мне не нужно удалять лестницы, мне нужно заблокировать у определённого игрока возможность использовать лестницы.
 
Сообщения
580
Реакции
338
Предупреждения
1
Помог
9 раз(а)
w0w, ну, может, игроку сделать velocity - 0 когда он на лестнице?
 
Сообщения
1,419
Реакции
2,509
Помог
59 раз(а)
steelzzz, это не решит задачу, нужно как раз чтобы не было соприкасания с лестницой при определённых условиях.
 
Сообщения
1,419
Реакции
2,509
Помог
59 раз(а)
steelzzz, да, на орфее я тоже видел варианты (один и два) по моей теме, но всё же хотелось без него, если это возможно.
 
Сообщения
580
Реакции
338
Предупреждения
1
Помог
9 раз(а)
w0w, в jumpstats есть взаимодействие с лестницами
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
w0w, насколько это в самой карте при компиляции просчитивается. А елси это так, тогда не возможно. Но это только домысли
 
Сообщения
1,419
Реакции
2,509
Помог
59 раз(а)
steelzzz, сама проверка на лестнице ли игрок делается легко, суть в блокировке соприкасания.
 
Сообщения
1,419
Реакции
2,509
Помог
59 раз(а)
Спасибо большое s1lent за добавление такой возможности (требуется обновить ReGameDLL до версии как минимум 5.7.0.319 и ReAPI до 5.6.0.161) а так же за демонстрационный код работы:

Код:
public Cmd_Climb(id)
{
    new flags = get_entvar(id, var_iuser3);
    if (flags & PLAYER_PREVENT_CLIMB)
        flags &= ~PLAYER_PREVENT_CLIMB;
    else
        flags |= PLAYER_PREVENT_CLIMB;

    set_entvar(id, var_iuser3, flags);
    client_print(id, print_chat, "%s", (flags & PLAYER_PREVENT_CLIMB) == PLAYER_PREVENT_CLIMB ? "You can't climb" : "You can climb");
    return PLUGIN_HANDLED;
}
Вопрос решён.
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу