Parachute Lite

reapi Parachute Lite 11.0

Нет прав для скачивания
Автор
Совместимость с
Amx Mod X 1.8.2, Amx Mod X 1.9.0
Требования
ReGameDLL_CS, ReAPI
Благодарности
neygomon - за его бесконечное стремление к максимальной оптимизации
Плагин условного парашюта. Позволяет зажав клавишу "E" в воздухе замедлить падение и уменьшить гравитацию. Отсутствует модель, отсутствует смена анимации.

И хоть с плагина намеренно вырезано всё лишнее с целью его максимального облегчения, все равно есть альтернативное исполнение плагина, которое по идее дает меньше нагрузку - это плагин Parachute от ReHLDS Team. Но он основан на ином алгоритме и имеет свои особенности в работе.
C++:
#include <amxmodx>
#include <reapi>
#define    get_bit(%1,%2)    (%1 & (1 << (%2 & 31)))
#define    set_bit(%1,%2)    %1 |= (1 << (%2 & 31))
#define    clr_bit(%1,%2)    %1 &= ~(1 << (%2 & 31))
new g_bitAlive;
const Float:fall_speed = -100.0
public plugin_init(){
    register_plugin("Parachute Lite [ReAPI]", "11.0", "Leo_[BH]");
    RegisterHookChain(RG_CBasePlayer_Spawn, "RG_Spawn_Post", 1);
    RegisterHookChain(RG_CBasePlayer_Killed, "RG_Player_Killed", 0);
    RegisterHookChain(RG_CBasePlayer_PreThink, "RG_client_PreThink");
}
public RG_Spawn_Post(id) if(is_user_alive(id)) set_bit(g_bitAlive, id);
public RG_Player_Killed(id) clr_bit(g_bitAlive, id);
public RG_client_PreThink(id){
    if(!get_bit(g_bitAlive, id)) return;
    if (get_entvar(id, var_gravity) == 0.1) set_entvar(id, var_gravity, 1.0);
    if (get_entvar(id, var_button) & IN_USE) {
        static Float:velocity[3]
        get_entvar(id, var_velocity, velocity);
        if (velocity[2] < 0.0) {
            set_entvar(id, var_gravity, 0.1);
            velocity[2] = (velocity[2] + 40.0 < fall_speed) ? velocity[2] + 40.0 : fall_speed ;
            set_entvar(id, var_velocity, velocity);
        }
    }
    else if ((get_entvar(id, var_oldbuttons) & IN_USE)) {
        set_entvar(id, var_gravity, 1.0);
    }
}
#if AMXX_VERSION_NUM < 183
public client_disconnect(id) clr_bit(g_bitAlive, id);
#else
public client_disconnected(id) clr_bit(g_bitAlive, id);
#endif
C-like:
#include <amxmodx>
#include <reapi>

public plugin_init() {
    register_plugin("Parachute", "1.1", "ReHLDS Team");
    RegisterHookChain(RG_PM_AirMove, "PM_AirMove", .post = false);
}

public PM_AirMove(const playerIndex) {
    if (!(get_entvar(playerIndex, var_button) & IN_USE) || get_entvar(playerIndex, var_waterlevel) > 0) return;

    new Float:flVelocity[3];
    get_entvar(playerIndex, var_velocity, flVelocity);
    if (flVelocity[2] < 0.0) {
        flVelocity[2] = (flVelocity[2] + 40.0 < -100.0) ? flVelocity[2] + 40.0 : -100.0;
        set_entvar(playerIndex, var_sequence, ACT_WALK);
        set_entvar(playerIndex, var_gaitsequence, ACT_IDLE);
        set_pmove(pm_velocity, flVelocity);
        set_movevar(mv_gravity, 80.0);
    }
}
Автор
Leo_BH
Скачиваний
702
Просмотры
8K
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя Leo_BH

Сверху Снизу