Native Error

Сообщения
491
Реакции
89
Помог
5 раз(а)
Утро доброе :) Никак не могу сообразить, в чем ошибка. Имеется кусок кода:
Код:
                if( flags&FL_ONGROUND )
                {
                    surf[id]=0.0;
                    if (!pev( id, pev_solid ))
                    {
                        static ClassName[32];
                        pev(pev(id, pev_groundentity), pev_classname, ClassName, 31);
                       
                        if( equali(ClassName, "func_train")
                                || equali(ClassName, "func_conveyor")
                                || equali(ClassName, "trigger_push") || equali(ClassName, "trigger_gravity"))
                        {
                            JumpReset(id,32);
                            set_task(0.4,"JumpReset", id);
                        }
                        else if(equali(ClassName, "func_door") || equali(ClassName, "func_door_rotating") )
                        {
                            JumpReset(id,33);
                            set_task(0.4,"JumpReset", id);  
                        }
                    }
                    pev(id, pev_origin, origin);
                    notjump[id]=true;
                    if(is_user_ducking(id))
                    {
                        falloriginz[id]=origin[2]+18;
                    }
                    else falloriginz[id]=origin[2];
                   
                    if( OnGround[id] == false)
                    {  
                        if (dropbhop[id] || in_ladder[id] || jump_type[id] == Type_WeirdLongJump || jump_type[id]==Type_ladderBhop || jump_type[id]==Type_Drop_BhopLongJump)
                        {
                            FallTime[id]=get_gametime();
                        }
                        OnGround[id] = true;
                    }
                }
Логи ругаются на - pev(pev(id, pev_groundentity), pev_classname, ClassName, 31);
native error (native "pev")
Что в нем не так?
 
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
WILL_BE,

/**
* Returns entvar data from an entity. Use the pev_* enum (in fakemeta_const.inc) to specify which data you want retrieved.
*
* @note This function uses "read_data" style data syntax. It returns integer values,
* by-references float data, and sets a buffer for string data.
*
* @note If retrieving strings, you may optionally get a pointer into the global string table. Depending on
* your situation, there are two ways to do this.
* 1: This simply gets the pointer.
* new ptr = pev(entid, pev_classname)
* 2: The pointer will be stored in ptr AND the actual string is retrieved.
* new ptr, classname[32]
* pev(entid, pev_classname, ptr, classname, 31)
*
* @param _index The entity index to lookup.
* @param _value The pev field to lookup (look in fakemeta_const.inc)
*/
native pev(_index,_value,any:...);
 
Сообщения
491
Реакции
89
Помог
5 раз(а)
Если я верно понял:
Код:
pev(pev(id, pev_groundentity), pev_classname, ClassName, 31);
->
Код:
new ptr = pev(id, pev_groundentity);
pev(ptr, pev_classname, ClassName, 31);
 
Последнее редактирование:
Сообщения
491
Реакции
89
Помог
5 раз(а)
Вообщем, снова выпал лог [FAKEMETA] Invalid entity , ругается на:
Код:
pev(ptr, pev_classname, ClassName, 31);
31 Окт 2019
Кусок, что был добавлен до этого:
Код:
new ptr = pev(id, pev_groundentity);
pev(ptr, pev_classname, ClassName, 31);
 

Ayk

Сообщения
763
Реакции
478
Помог
19 раз(а)
ptr может оказаться невалидным (о чём и говорит ошибка), нужна проверка на валидность.
if( !pev_valid(ptr) ) return;
 
Сообщения
491
Реакции
89
Помог
5 раз(а)
Подзабыл указать, ну эт так, для справки и укажу: return FMRES_IGNORED;
 

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

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