Кто сделает плагин на перенос предметов в кс го? (Заплачу)

grihajedy

Участник
Сообщения
11
Реакции
0
Операционная система
Linux
У меня недостаточно прав, чтобы разместить это в другом канале, извините, я тут не шарю. Надо чтобы игроки могли физ пропы переносить, и когда проп поднимают, чтобы у него коллизия отключалась.
 

Truyn

King of clowns
Сообщения
1,591
Реакции
749

 

Deluks

Верховное DNO|
Сообщения
1,853
Реакции
812
У меня недостаточно прав, чтобы разместить это в другом канале, извините, я тут не шарю. Надо чтобы игроки могли физ пропы переносить, и когда проп поднимают, чтобы у него коллизия отключалась.
Я может чтото путаю, но по описанию ты говоришь либо о грабе, либо о тех функциях которые зашивают в карту еще на начале ее "строительста", по типу ttt_ карт.
 

Truyn

King of clowns
Сообщения
1,591
Реакции
749
Я может чтото путаю, но по описанию ты говоришь либо о грабе, либо о тех функциях которые зашивают в карту еще на начале ее "строительста", по типу ttt_ карт.
По факту можно модернизировать граб чтобы менял коллизию когда ты его поднял
 

grihajedy

Участник
Сообщения
11
Реакции
0
Просто чтобы как в Half-life 2 можно было носить на E. Мне пофиг каким способом и пофиг если немного криво будет, главное чтобы цена не овервысокая была
 

Deluks

Верховное DNO|
Сообщения
1,853
Реакции
812
Просто чтобы как в Half-life 2 можно было носить на E. Мне пофиг каким способом и пофиг если немного криво будет, главное чтобы цена не овервысокая была
Тогда граб с прозрачным лазером.

hookgrabrope ищи
 

grihajedy

Участник
Сообщения
11
Реакции
0
Тогда граб с прозрачным лазером.

hookgrabrope ищи
Мне нужен граб для всех игроков и только для физ пропов тогда, я за это деньги предлагаю, я тут тему создал, чтобы кто-то плагин написал, мне неважно через граб или что
Сообщения автоматически склеены:

По факту можно модернизировать граб чтобы менял коллизию когда ты его поднял
Ну это понятно, поэтому я и создал тему
 

Madness aka null138

Участник
Сообщения
713
Реакции
734
не проверял. на удерживание кнопки E должно работать.

C++:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

#pragma newdecls required

int iGrabEntity[MAXPLAYERS + 1];

public void OnClientPutInServer(int client)
{
    iGrabEntity[client] = 0;
    SDKHook(client, SDKHook_PreThink, OnPreThink);
}

public Action OnPlayerRunCmd(int client, int &buttons)
{
    if(IsPlayerAlive(client) && buttons & IN_USE)
    {
        if(iGrabEntity[client] == 0)
        {
            float eyePos[3], eyeAng[3];
            GetClientEyePosition(client, eyePos);
            GetClientEyeAngles(client, eyeAng);

            Handle trace = TR_TraceRayFilterEx(eyePos, eyeAng, MASK_SOLID, RayType_Infinite, TraceResult, client);   
            if(TR_DidHit(trace))
            {
                int entity = TR_GetEntityIndex(trace);
                if(entity > MaxClients)
                {
                    iGrabEntity[client] = entity;
                }
            }
        }
    }
    else iGrabEntity[client] = 0;
}

public void OnPreThink(int client)
{
    if(iGrabEntity[client] > 0)
    {
        if(IsValidEntity(iGrabEntity[client]))
        {
            float eyeAng[3], vecAng[3], vecPre[3], vecPost[3];

            GetClientEyeAngles(client, eyeAng);
            GetAngleVectors(eyeAng, vecAng, NULL_VECTOR, NULL_VECTOR);
            GetClientEyePosition(client, vecPre);

            vecPre[0] += vecAng[0] * 30.0;
            vecPre[1] += vecAng[1] * 30.0;
            vecPre[2] += vecAng[2] * 30.0;

            GetEntPropVector(iGrabEntity[client], Prop_Send, "m_vecOrigin", vecAng);
            SubtractVectors(vecPre, vecAng, vecPost);
            ScaleVector(vecPost, 10.0);
            TeleportEntity(iGrabEntity[client], NULL_VECTOR, NULL_VECTOR, vecPost);
        }
        else
        {
            iGrabEntity[client] = 0;
        }
    }
}

public bool TraceResult(int entity, int mask, int data)
{
    if(entity == data)
    {
        return false;
    }
    else
    {
        char classname[64];
        GetEntityClassname(entity, classname, sizeof(classname));
        if(strncmp("prop_", classname, 5) == 0)
        {
            return true;
        }
    }   
    return false;
}
 

grihajedy

Участник
Сообщения
11
Реакции
0
не проверял. на удерживание кнопки E должно работать.

C++:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

#pragma newdecls required

int iGrabEntity[MAXPLAYERS + 1];

public void OnClientPutInServer(int client)
{
    iGrabEntity[client] = 0;
    SDKHook(client, SDKHook_PreThink, OnPreThink);
}

public Action OnPlayerRunCmd(int client, int &buttons)
{
    if(IsPlayerAlive(client) && buttons & IN_USE)
    {
        if(iGrabEntity[client] == 0)
        {
            float eyePos[3], eyeAng[3];
            GetClientEyePosition(client, eyePos);
            GetClientEyeAngles(client, eyeAng);

            Handle trace = TR_TraceRayFilterEx(eyePos, eyeAng, MASK_SOLID, RayType_Infinite, TraceResult, client);  
            if(TR_DidHit(trace))
            {
                int entity = TR_GetEntityIndex(trace);
                if(entity > MaxClients)
                {
                    iGrabEntity[client] = entity;
                }
            }
        }
    }
    else iGrabEntity[client] = 0;
}

public void OnPreThink(int client)
{
    if(iGrabEntity[client] > 0)
    {
        if(IsValidEntity(iGrabEntity[client]))
        {
            float eyeAng[3], vecAng[3], vecPre[3], vecPost[3];

            GetClientEyeAngles(client, eyeAng);
            GetAngleVectors(eyeAng, vecAng, NULL_VECTOR, NULL_VECTOR);
            GetClientEyePosition(client, vecPre);

            vecPre[0] += vecAng[0] * 30.0;
            vecPre[1] += vecAng[1] * 30.0;
            vecPre[2] += vecAng[2] * 30.0;

            GetEntPropVector(iGrabEntity[client], Prop_Send, "m_vecOrigin", vecAng);
            SubtractVectors(vecPre, vecAng, vecPost);
            ScaleVector(vecPost, 10.0);
            TeleportEntity(iGrabEntity[client], NULL_VECTOR, NULL_VECTOR, vecPost);
        }
        else
        {
            iGrabEntity[client] = 0;
        }
    }
}

public bool TraceResult(int entity, int mask, int data)
{
    if(entity == data)
    {
        return false;
    }
    else
    {
        char classname[64];
        GetEntityClassname(entity, classname, sizeof(classname));
        if(strncmp("prop_", classname, 5) == 0)
        {
            return true;
        }
    }  
    return false;
}
И чё мне делать с этим?
 

grihajedy

Участник
Сообщения
11
Реакции
0
не проверял. на удерживание кнопки E должно работать.

C++:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

#pragma newdecls required

int iGrabEntity[MAXPLAYERS + 1];

public void OnClientPutInServer(int client)
{
    iGrabEntity[client] = 0;
    SDKHook(client, SDKHook_PreThink, OnPreThink);
}

public Action OnPlayerRunCmd(int client, int &buttons)
{
    if(IsPlayerAlive(client) && buttons & IN_USE)
    {
        if(iGrabEntity[client] == 0)
        {
            float eyePos[3], eyeAng[3];
            GetClientEyePosition(client, eyePos);
            GetClientEyeAngles(client, eyeAng);

            Handle trace = TR_TraceRayFilterEx(eyePos, eyeAng, MASK_SOLID, RayType_Infinite, TraceResult, client); 
            if(TR_DidHit(trace))
            {
                int entity = TR_GetEntityIndex(trace);
                if(entity > MaxClients)
                {
                    iGrabEntity[client] = entity;
                }
            }
        }
    }
    else iGrabEntity[client] = 0;
}

public void OnPreThink(int client)
{
    if(iGrabEntity[client] > 0)
    {
        if(IsValidEntity(iGrabEntity[client]))
        {
            float eyeAng[3], vecAng[3], vecPre[3], vecPost[3];

            GetClientEyeAngles(client, eyeAng);
            GetAngleVectors(eyeAng, vecAng, NULL_VECTOR, NULL_VECTOR);
            GetClientEyePosition(client, vecPre);

            vecPre[0] += vecAng[0] * 30.0;
            vecPre[1] += vecAng[1] * 30.0;
            vecPre[2] += vecAng[2] * 30.0;

            GetEntPropVector(iGrabEntity[client], Prop_Send, "m_vecOrigin", vecAng);
            SubtractVectors(vecPre, vecAng, vecPost);
            ScaleVector(vecPost, 10.0);
            TeleportEntity(iGrabEntity[client], NULL_VECTOR, NULL_VECTOR, vecPost);
        }
        else
        {
            iGrabEntity[client] = 0;
        }
    }
}

public bool TraceResult(int entity, int mask, int data)
{
    if(entity == data)
    {
        return false;
    }
    else
    {
        char classname[64];
        GetEntityClassname(entity, classname, sizeof(classname));
        if(strncmp("prop_", classname, 5) == 0)
        {
            return true;
        }
    } 
    return false;
}
Спасибо хоть за это, но тут проблема, ходить нельзя с грабом, я бы хотел, чтобы ходить можно было именно с предметом прям, как в Халф лайф 2
Сообщения автоматически склеены:

+В халф лайфе предметы перед тобой всегда, а тут я кручусь, а предмет не крутится. Ещё они очень неудобно притягиваются. Надо, чтобы они просто поднимались, не притягиваясь.
Сообщения автоматически склеены:

То есть это как магнит выглядит, а мне надо, чтобы было на ограниченном расстоянии.
 

Вложения

  • граб.png
    граб.png
    1.4 МБ · Просмотры: 32
Последнее редактирование:
Сверху Снизу