Рендер энтити

Сообщения
7
Реакции
0
Приветствую, подскажите как реализовать функцию что бы у разных игроков у одного и тоже энтити pev_rendercolor был разный, а также настроить прозрачность, если не сложно пример функции можете прислать?
 
Решение
FM_AddToFullPack + set_es.

C-подобный:
#include <amxmodx>
#include <fakemeta>

new bool: g_bIsState[MAX_PLAYERS+1];

public plugin_init() {
    register_forward(FM_AddToFullPack, "fwd_AddToFullPack_Post", true);

    register_clcmd("say /state", "_state_onoff");
}

public fwd_AddToFullPack_Post(es, e, ent, host, hostflags, player, pSet) {
    if(!pev_valid(ent)) {
        return;
    }

    static szClassName[10];
    pev(ent, pev_classname, szClassName, charsmax(szClassName));

    if(!equal(szClassName, "func_door")) {
        return;
    }

    set_es(es, ES_RenderFx, kRenderFxGlowShell);
    set_es(es, ES_RenderMode, kRenderTransColor);
    set_es(es, ES_RenderAmt, 100);

    if(g_bIsState[host]) {
        set_es(es, ES_RenderColor, {255, 0...
FM_AddToFullPack + set_es.

C-подобный:
#include <amxmodx>
#include <fakemeta>

new bool: g_bIsState[MAX_PLAYERS+1];

public plugin_init() {
    register_forward(FM_AddToFullPack, "fwd_AddToFullPack_Post", true);

    register_clcmd("say /state", "_state_onoff");
}

public fwd_AddToFullPack_Post(es, e, ent, host, hostflags, player, pSet) {
    if(!pev_valid(ent)) {
        return;
    }

    static szClassName[10];
    pev(ent, pev_classname, szClassName, charsmax(szClassName));

    if(!equal(szClassName, "func_door")) {
        return;
    }

    set_es(es, ES_RenderFx, kRenderFxGlowShell);
    set_es(es, ES_RenderMode, kRenderTransColor);
    set_es(es, ES_RenderAmt, 100);

    if(g_bIsState[host]) {
        set_es(es, ES_RenderColor, {255, 0, 0});
    }
    else {
        set_es(es, ES_RenderColor, {0, 255, 0});
    }
}

public _state_onoff(pPlayer) {
    g_bIsState[pPlayer] = !g_bIsState[pPlayer];
}

Для примера данный плагин меняет цвет дверей для каждого игрока в зависимости от значения переменной g_bIsState, (say /state переключает состояние).
Это просто пример, все энтити лучше заранее кэшировать, а не проверять в фуллпаке каждый раз. Потому что функция вызывается очень часто.

Параметры:
es - структура данных. Для работы функций get_es/set_es
ent - индекс отрисовываемой энтити
host - индекс игрока
player - 1 если ent это игрок, 0 - любой другой объект.

Для работы хватит этой информации.
 
Решение
@Kurtis, а через FM_AddToFullPack возможно реализовать через ES_Solid что бы одна команда проходила сквозь объект (SOLID_NOT) а другая нет (SOLID_BBOX)?
 
@Noob_with_cheats, есть модель, создаю энтити через rg_create_entity("info_target"), выставляю размеры и тд, вот через этот объект при помощи FM_AddToFullPack и ES_Solid возможно реализовать то что я написал сообщением выше
 
@Noob_with_cheats, есть модель, создаю энтити через rg_create_entity("info_target"), выставляю размеры и тд, вот через этот объект при помощи FM_AddToFullPack и ES_Solid возможно реализовать то что я написал сообщением выше
Да, можно. Посмотреть team semiclip, именно старый amxx плагин.
 

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

Назад
Верх