помогите с trigger_teleport

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
43
Реакции
1
Я удаляю свойство trigger_teleport с помощью приведенного ниже кода.

Код:
    new pEntity = NULLENT;
    while((pEntity = find_ent_by_model(pEntity, "trigger_teleport", "*2")) > 0) {
        set_entvar(pEntity, var_flags, FL_KILLME);
    }

но как я могу повторно открыть свойство trigger_teleport без изменения карты

Мне нужна помощь по этому поводу, пожалуйста
 
Сообщения
278
Реакции
137
Before deleting it, set the global value as entity. Then save the origin in global value. When you want, create an entity in the same way and set the values that you saved in global value. And also set the model as "*2"
 
Последнее редактирование:
Сообщения
459
Реакции
272
Помог
9 раз(а)
untested
Код:
#include <amxmodx>
#include <reapi>

#define MAX_ENTS 10 //?

enum ents_e {
    Entity_Id,
    Entity_Solid,

    Entity_RenderFx,
    Float: Entity_RenderColor[3],
    Entity_RenderMode,
    Float: Entity_RenderAmt
};
new g_eEntity[MAX_ENTS][ents_e];

public plugin_precache()    {
    new iEntity = NULLENT, i = 0;

    while ((iEntity = rg_find_ent_by_model(iEntity, "trigger_teleport", "*2")) > 0) {
        if (is_nullent(iEntity))    {
            continue;
        }

        g_eEntity[i][Entity_Id] = iEntity;
        g_eEntity[i][Entity_Solid] = get_entvar(iEntity, var_solid);

        g_eEntity[i][Entity_RenderFx] = get_entvar(iEntity, var_renderfx);
        get_entvar(iEntity, var_rendercolor, g_eEntity[i][Entity_RenderColor]);
        g_eEntity[i][Entity_RenderMode] = get_entvar(iEntity, var_rendermode);
        g_eEntity[i][Entity_RenderAmt] = get_entvar(iEntity, var_renderamt);

        i++;
    }
}

stock bool: switch_entity(const iEntity)    {
    if (is_nullent(iEntity))    {
        return false;
    }

    new id = 0;
    for (new i = 0; i < MAX_ENTS; i++)  {
        if (g_eEntity[i][Entity_Id] == iEntity) {
            id = i;
            break;
        }
    }

    if (get_entvar(iEntity, var_solid) == g_eEntity[id][Entity_Solid])  {
        set_entvar(iEntity, var_solid, SOLID_NOT);

        rg_set_rendering(iEntity, kRenderFxGlowShell, { 0.0, 0.0, 0.0 }, kRenderTransAlpha, 0.0);
    }
    else    {
        set_entvar(iEntity, var_solid, g_eEntity[id][Entity_Solid]);

        rg_set_rendering(iEntity,
            g_eEntity[id][Entity_RenderFx],
            g_eEntity[id][Entity_RenderColor],
            g_eEntity[id][Entity_RenderMode],
            g_eEntity[id][Entity_RenderAmt]
        );
    }
    return true;
}

stock rg_set_rendering(const iEntity, fx = kRenderFxNone, Float: rgb[3] = { 255.0, 255.0, 255.0 }, render = kRenderNormal, Float: amount = 16.0)  {
    set_entvar(iEntity, var_renderfx, fx);
    set_entvar(iEntity, var_rendercolor, rgb);
    set_entvar(iEntity, var_rendermode, render);
    set_entvar(iEntity, var_renderamt, amount);
}

//fm_utils
stock rg_find_ent_by_model(index, const classname[], const model[]) {
    new ent = index, mdl[72];

    while ((ent = rg_find_ent_by_class(ent, classname))) {
        get_entvar(ent, var_model, mdl, sizeof mdl - 1);

        if (equal(mdl, model))
            return ent;
    }

    return 0;
}
 
Сообщения
278
Реакции
137
You won't use four set_entvars but use just one in same purpose.

e.g.
Код:
-stock rg_set_rendering(const iEntity, fx = kRenderFxNone, Float: rgb[3] = { 255.0, 255.0, 255.0 }, render = kRenderNormal, Float: amount = 16.0)  {
    set_entvar(iEntity, var_renderfx, fx);
    set_entvar(iEntity, var_rendercolor, rgb);
    set_entvar(iEntity, var_rendermode, render);
    set_entvar(iEntity, var_renderamt, amount);
}

+rg_set_user_visibility(const pEntity, const bool:blVisible) {
    set_entvar(entity, var_effects, blVisible ? get_entvar(entity, var_effects) & ~EF_NODRAW : get_entvar(entity, var_effects) | EF_NODRAW);
}
 
Статус
В этой теме нельзя размещать новые ответы.

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

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