Spawn prop vector

AlexPa1

Участник
Сообщения
292
Реакции
54
Здравствуйте, как сделать что бы предмет спавнился всегда одной стороной к игроку?
Сделал вот так
C-подобный:
decl Float:VecOrigin[3],
        Float:VecAngles[3],
        Float:normal[3];
    new prop = CreateEntityByName("prop_physics");
    if (prop != -1)
    {
        DispatchKeyValue(prop, "model", modelname);
        GetClientEyePosition(client, VecOrigin);
        GetClientEyeAngles(client, VecAngles);
        TR_TraceRayFilter(VecOrigin, VecAngles, MASK_SOLID, RayType_Infinite, TraceRayDontHitSelf, client);
        TR_GetEndPosition(VecOrigin);
        TR_GetPlaneNormal(INVALID_HANDLE, normal);
        GetVectorAngles(normal, normal);
        normal[0] += 180.0;
        VecAngles[0] > 90.0;      
        DispatchKeyValue(prop, "StartDisabled", "false");
        DispatchKeyValue(prop, "Solid", "6");
        DispatchKeyValue(prop, "spawnflags", "8");
        SetEntProp(prop, Prop_Data, "m_CollisionGroup", 5);
        TeleportEntity(prop, VecOrigin, normal, NULL_VECTOR);
        DispatchSpawn(prop);
        AcceptEntityInput(prop, "EnableCollision");
        AcceptEntityInput(prop, "TurnOn", prop, prop, 0);
    }
Но он на карте появляется поперек а ставишь его на 90 градусов от себя он появляется уже боком.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
интересно что должна была делать эта строка (ведь она сейчас ничего не делает)?

Попробуй сделать вот так:
PHP:
    GetClientAbsAngles(client, VecAngles);
    TeleportEntity(prop, VecOrigin, VecAngles, NULL_VECTOR);
а вот это тебе не нужно:
PHP:
        normal[0] += 180.0;
        VecAngles[0] > 90.0;
 

AlexPa1

Участник
Сообщения
292
Реакции
54
Попробуй сделать вот так:
PHP:
    GetClientAbsAngles(client, VecAngles);
    TeleportEntity(prop, VecOrigin, VecAngles, NULL_VECTOR);
Не получилось. Вот что получается как на 1 варианте а нужно сделать как на 2 варианте, как мне это сделать?
123123123.png
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
@alex123pavlov, вообще должно было поворачивать проп в ту сторону куда смотрит игрок
Попробуй вот так:
PHP:
decl Float:VecOrigin[3], Float:VecAngles[3],
Float:normal[3]
;

    new prop = CreateEntityByName("prop_physics");
    if (prop != -1)
    {
        DispatchKeyValue(prop, "model", modelname);
        GetClientEyePosition(client, VecOrigin);
        GetClientEyeAngles(client, VecAngles);
        TR_TraceRayFilter(VecOrigin, VecAngles, MASK_SOLID, RayType_Infinite, TraceRayDontHitSelf, client);
        TR_GetEndPosition(VecOrigin);
        TR_GetPlaneNormal(INVALID_HANDLE, normal);
        GetVectorAngles(normal, normal);
        DispatchKeyValue(prop, "StartDisabled", "false");
        DispatchKeyValue(prop, "Solid", "6");
        DispatchKeyValue(prop, "spawnflags", "8");
        SetEntProp(prop, Prop_Data, "m_CollisionGroup", 5);
        VecAngles[1] = normal[1];
        VecAngles[2] = normal[2];
        TeleportEntity(prop, VecOrigin, VecAngles, NULL_VECTOR);
        DispatchSpawn(prop);
        AcceptEntityInput(prop, "EnableCollision");
        AcceptEntityInput(prop, "TurnOn", prop, prop, 0);
    }
--- Добавлено позже ---
И вообще у тебя должно получаться как на 1 рисунке только если ты спавнишь сразу несколько пропов вокруг себя, а не по одному
 

AlexPa1

Участник
Сообщения
292
Реакции
54
Поворачивает вертикали а нужно по горизонтали, как сделать?
 
Последнее редактирование:
Сверху Снизу