• Для того, чтобы добавить "ресурс" на форум, требуется перейти по ссылке и создать ресурс в нужной категории форума.
HP Dead Space

HP Dead Space 1.0

Нет прав для скачивания

MayroN

Моделлер
Проверенный
Сообщения
90
Реакции
71
Помог
1 раз(а)
В Обзоре, в тексте описания ошибка:
( Плагин добавляет модель на спину игроку у виде показателя здоровья ( как в игре Dead Space ) ).
Данный плагин для Зомби Мода не подходит, я правильно понимаю? Сейчас протестировал, модель не отображается...
 
И на public сервере не отображается.
Сообщение автоматически объединено:

Или модели должны быть по дефолту.
 
@dityatko,
C-подобный:
#include <amxmodx>
#include <fakemeta>
#include <reapi>

new const g_szPluginVersion[] = "0.1";
//
new const g_szLifeBarModel[] = "models/hp_dead_space/hp_dead_space.mdl";

new g_eEntLifeBar[MAX_PLAYERS+1];

public plugin_precache() {
    precache_model(g_szLifeBarModel);
}

public plugin_init() {
    register_plugin("HP LifeBar from DS", g_szPluginVersion, "Kurtis")

    RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn_Post", 1);
    RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Post", 1);

    register_event("Health", "event_Health", "be");
}

public client_disconnected(pPlayer) {
    if(!is_nullent(g_eEntLifeBar[pPlayer])) {
        //set_entvar(g_eEntLifeBar[pPlayer], var_flags, get_entvar(g_eEntLifeBar[pPlayer], var_flags) | FL_KILLME);
        //set_entvar(g_eEntLifeBar[pPlayer], var_nextthink, get_gametime());
        engfunc(EngFunc_RemoveEntity, g_eEntLifeBar[pPlayer]);
    }
}

public client_putinserver(pPlayer) {
    g_eEntLifeBar[pPlayer] = rg_create_entity("info_target");

    if(!is_nullent(g_eEntLifeBar[pPlayer])) {
        set_entvar(g_eEntLifeBar[pPlayer], var_movetype, MOVETYPE_FOLLOW);
        set_entvar(g_eEntLifeBar[pPlayer], var_aiment, pPlayer);
        set_entvar(g_eEntLifeBar[pPlayer], var_effects, EF_NODRAW);

        engfunc(EngFunc_SetModel, g_eEntLifeBar[pPlayer], g_szLifeBarModel);
    }
}

public CBasePlayer_Spawn_Post(pPlayer) {
    if(!is_user_alive(pPlayer)) {
        return;
    }

    if(!is_nullent(g_eEntLifeBar[pPlayer])) {
        set_entvar(g_eEntLifeBar[pPlayer], var_effects, get_entvar(g_eEntLifeBar[pPlayer], var_effects) & ~EF_NODRAW);

        event_Health(pPlayer);
    }
}

public CBasePlayer_Killed_Post(pVictim, pAttacker, iCorpse) {
    if(!is_user_connected(pVictim)) {
        return;
    }

    if(!is_nullent(g_eEntLifeBar[pVictim])) {
        set_entvar(g_eEntLifeBar[pVictim], var_effects, get_entvar(g_eEntLifeBar[pVictim], var_effects) | EF_NODRAW);
    }
}

public event_Health(pPlayer) {
    const HP_ENTRY_MIN = 0; // % HP > _body = 0
    const HP_ENTRY_MED = 35; // % HP > _body = 1
    const HP_ENTRY_MAX = 75; // % HP > _body = 2

    if(!is_nullent(g_eEntLifeBar[pPlayer]))
    {
        new Float: flUserHealth = Float: get_entvar(pPlayer, var_health);
        new Float: flUserMaxHealth = Float: get_entvar(pPlayer, var_max_health);

        if(flUserHealth < 1.0 || flUserMaxHealth < 1.0) {
            // быть этого не может
            // сэр, вы же не хотите делить на ноль?
            return;
        }

        new Float: flPercent = flUserHealth / flUserMaxHealth * 100.0;

        if(flPercent > HP_ENTRY_MAX) {
            set_entvar(g_eEntLifeBar[pPlayer], var_body, 0);
        }
        else if(flPercent > HP_ENTRY_MED) {
            set_entvar(g_eEntLifeBar[pPlayer], var_body, 1);
        }
        else if(flPercent > HP_ENTRY_MIN) {
            set_entvar(g_eEntLifeBar[pPlayer], var_body, 2);
        }
        /* других вариантов нет
        else {
            set_entvar(g_eEntLifeBar[pVictim], var_effects, get_entvar(g_eEntLifeBar[pVictim], var_effects) | EF_NODRAW);
        }
        */
    }
}
 

Вложения

Кто просматривает тему

Назад
Верх