prop_dynamic_override + SDKHook_SetTransmit

T

Tolyan

PHP:
{
            WhPlayerModel[client] = CreateEntityByName("prop_dynamic_override");
           
            char model[PLATFORM_MAX_PATH];
            GetClientModel(client, model, sizeof(model));
            DispatchKeyValue(WhPlayerModel[client], "model", model);
            DispatchKeyValue(WhPlayerModel[client], "disablereceiveshadows", "1");
            DispatchKeyValue(WhPlayerModel[client], "disableshadows", "1");
            DispatchKeyValue(WhPlayerModel[client], "solid", "0");
            DispatchKeyValue(WhPlayerModel[client], "spawnflags", "256");
            DispatchKeyValue(WhPlayerModel[client], "targetname", "red");
            DispatchSpawn(WhPlayerModel[client]);
           
            SetEntProp(WhPlayerModel[client], Prop_Send, "m_bShouldGlow", true);
            SetEntPropFloat(WhPlayerModel[client], Prop_Send, "m_flGlowMaxDist", 10000000.0);
            SetEntPropEnt(WhPlayerModel[client], Prop_Data, "m_hOwnerEntity", client);
            int iFlags = GetEntProp(WhPlayerModel[client], Prop_Send, "m_fEffects");
            SetEntProp(WhPlayerModel[client], Prop_Send, "m_fEffects", iFlags | (1 << 0) | (1 << 4) | (1 << 6) | (1 << 9));

            int colors[4];
            colors[0] = 255;
            colors[1] = 0;
            colors[2] = 0;
            colors[3] = 255;
           
            SetVariantColor(colors);
            AcceptEntityInput(WhPlayerModel[client], "SetGlowColor");
            SetVariantString("!activator");
            AcceptEntityInput(WhPlayerModel[client], "SetParent", client);
            SetVariantString("primary");
            AcceptEntityInput(WhPlayerModel[client], "SetParentAttachment", WhPlayerModel[client]); 
            SDKHook(WhPlayerModel[client], SDKHook_SetTransmit, WHModelForPlayer_Hide);
}

public Action:WHModelForPlayer_Hide(entity, client) 
{
    if (WhPlayerModel[client] == entity)
    {
        return Plugin_Handled;
    }
   
    bool seeall = false;
    for (int i = 1; i <= MaxClients; i++)
    {
        if (WhPlayerModel[i] == entity && IsMyWHModel == i)
        {
            seeall = true;
            break;
        }
    }
   
    if (seeall)
    {
        return Plugin_Continue;
    }
    return Plugin_Handled;
}

Проблема такова, что когда IsMyWHModel = i - то все видят модель как надо, но как только я хочу чтоб модель стала невидимой т.е делаю IsMyWHModel = 0 - то модель появляется в точке 0.0 0.0 0.0 на карте и она видимая, но как только я делаю обратно IsMyWHModel = i - то модель обратно на игроке и видимая... почему когда я делаю модель не видимой игрокам через IsMyWHModel = 0 то она не становится невидимой а просто телепортируеться на точку 0 на карте..

Хочу заметить что я крутил код и выяснил что проблема продает порсле удаления этих 2 строк:
PHP:
int iFlags = GetEntProp(WhPlayerModel[client], Prop_Send, "m_fEffects");
            SetEntProp(WhPlayerModel[client], Prop_Send, "m_fEffects", iFlags | (1 << 0) | (1 << 4) | (1 << 6) | (1 << 9));
однако без этих строк модель сидит на игроке очень криво...(

Прошу гуру форума мне помочь в решении этой крайне странной для меня проблемы.
 

tonline_kms65_1

Участник
Сообщения
565
Реакции
225
Интересно, насколько эта тема еще актуальна.
Я такой подход вижу впервые, даже заинтересовало. Ты бы хоть скрины показал того что требуется.
Если я правильно понял - это что то навроде свечения игрока?
 
Сверху Снизу