ReHLDS/ReAPI Получить classname entity

ramsey

Пользователь
Регистрация
30 Июн 2020
Сообщения
30
Симпатии
1
Код:
#define DISTANCE 9999
new iTarget, iBody

get_user_aiming(id, iTarget, iBody, DISTANCE)

new szGetClassName[32]
get_entvar(iTarget, var_classname, szGetClassName, charsmax(szGetClassName))

if(equali(szGetClassName, COMPARE_ENT)) {
    client_print(id, print_chat, "successfully")
}

client_print(id, print_chat, "Aiming ent: %s | Compare ent: %s", szGetClassName, COMPARE_ENT)
Чет выдает мне wolrdspawn)))))))
Че ему надо?)
 

BalbuR

Пользователь
Регистрация
26 Июл 2017
Сообщения
131
Симпатии
25
Пол
Мужской
возможно объект имеет солид == solid_trigger или solid_not
трейслайн для такого типа солидов игнорируется, в итоге натив ничего не возвращает
 

pro100web

Пользователь
Регистрация
19 Фев 2018
Сообщения
23
Симпатии
7
А куда новодишь, объект какое свойство имеет?
 

ramsey

Пользователь
Регистрация
30 Июн 2020
Сообщения
30
Симпатии
1
BalbuR, вообще не было установлено solid)


Код:
static cell AMX_NATIVE_CALL get_user_aiming(AMX *amx, cell *params) /* 4 param */
{
        int index = params[1];

        if (index < 1 || index > gpGlobals->maxClients)
        {
                LogError(amx, AMX_ERR_NATIVE, "Invalid player id %d", index);
                return 0;
        }

      
        CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);

        cell *cpId = get_amxaddr(amx, params[2]);

        cell *cpBody = get_amxaddr(amx, params[3]);

        REAL pfloat = 0.0f;

        if (pPlayer->ingame)
        {
                edict_t* edict = pPlayer->pEdict;

                Vector v_forward;

                Vector v_src = edict->v.origin + edict->v.view_ofs;

                ANGLEVECTORS(edict->v.v_angle, v_forward, NULL, NULL);

                TraceResult trEnd;

                Vector v_dest = v_src + v_forward * static_cast<float>(params[4]);

                TRACE_LINE(v_src, v_dest, 0, edict, &trEnd);

                *cpId = FNullEnt(trEnd.pHit) ? 0 : ENTINDEX(trEnd.pHit);

                *cpBody = trEnd.iHitgroup;

                if (trEnd.flFraction < 1.0)
                {
                        pfloat = (trEnd.vecEndPos - v_src).Length();
                }
        } else {
                *cpId = 0;
                *cpBody = 0;
        }

        return amx_ftoc(pfloat);
}
Ну, понятно))) Можно закрывать)))
 
Сверху Снизу