Русское сообщество по скриптингу

Run time error: native "pev" error

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

Run time error: native "pev" error

Сообщение ilya9754 » 22 апр 2016, 19:56

Всем привет, вот такая ошибка

Код: Выделить всё
L 04/22/2016 - 17:24:08: [AMXX] Run time error 10: native error (native "pev")
L 04/22/2016 - 17:24:08: [AMXX]    [0] amx_medic-npc.sma::hook_Touch (line 200)

что тут не так и как исправить?

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

#define PLUGIN "CS Medic NPC"
#define VERSION "1.0"
#define AUTHOR "Mr. Smit"
#define TAG "[Medic]"

#if cellbits == 32
   #define OFFSET_CSMONEY  115
#else
   #define OFFSET_CSMONEY  140
#endif
#define OFFSET_LINUX      5

new MODE,REG_HEALTH, MAXHEALTH, COSTS,SHOUT, MESSAGE, COOLDOWN
new PlayerReload
[33]

//////////////////////////////////////
// CVAR STUFF!
//////////////////////////////////////
#define CVAR_NAME "sb_npc_model"
new model[32];
new g_npcModel[63];
new g_modelName;
//////////////////////////////////////

//////////////////////////////////////
// NPC STUFF!
//////////////////////////////////////
#define menuKeys    ((1<<0)|(1<<1))

new g_npc;
new g_weapon;
new bool:npcMade;
new bool:inMenu[33];
new filename[256];
//////////////////////////////////////

public plugin_init()
{
    new confFolder[32];
    get_mapname(filename, 255);
    get_configsdir(confFolder, 31);
    format(filename, 255, "%s/npcsaved/%s.coord", confFolder, filename);
    set_task(3.0, "loadNPC");
    
    register_plugin
(PLUGIN, VERSION, AUTHOR);
    register_dictionary("medic-mod.txt")
    register_forward(FM_PlayerPreThink, "hook_PlayerPreThink");
    register_forward(FM_AddToFullPack, "fw_AddToFullPack", 1);
    register_forward(FM_Touch, "hook_Touch");
    register_event("ResetHUD", "hook_ResetHUD", "be");
    register_menucmd(register_menuid("npcMenu"), menuKeys, "npcMenuEnter");
    register_concmd("amx_createnpc", "tryCreateNPC", ADMIN_RCON, "- creates the surf board NPC");


    register_cvar("medic_version",VERSION,FCVAR_SERVER);
    set_cvar_string("medic_version",VERSION);
    
    
/* Register CVARs */
    MODE = register_cvar("medic_enabled","1")                /* Mode 1: On ;; Mode 0: Off */    
    REG_HEALTH 
= register_cvar("medic_health","115")                // How many Health you get instantly?
    MAXHEALTH = register_cvar("medic_maxhp","10000")                // Maximal HP for everyone    
    COSTS = register_cvar("medic_costs","5")                // How many costs medic?
    SHOUT = register_cvar("medic_shout","1")                // Shout Medic if you buy medic?
    MESSAGE = register_cvar("medic_message","1")                // Write a Message if somebody ask for medic's help?
    COOLDOWN = register_cvar("medic_cooldown","3")                // Cooldown-Time in Seconds
    
    
/* Register Commands */

}
public plugin_precache()
{
    g_modelName = register_cvar(CVAR_NAME, "medic-mod");
    get_pcvar_string(g_modelName, model, 31);
    formatex(g_npcModel, 63, "models/%s.mdl", model, model);
    
    precache_model
(g_npcModel);
        precache_sound("medic.wav")
}

public client_connect(id)
{
    inMenu[id] = false;
        PlayerReload[id] = 0
}

public client_disconnect(id)
{
        PlayerReload[id] = 0
}




public call_medic(id) {

    if(get_pcvar_num(MODE) == 1 && PlayerReload[id] < time())
    {
        new ActuellHP = get_user_health(id);
        new ActuellMoney = fm_cs_get_user_money(id);
        
        if
(ActuellMoney < get_pcvar_num(COSTS))
        {
            client_print(id, print_chat, "%L", id, "MED_HAVENOT_MONEY", TAG );
        }
        
        else
        
{
            if(ActuellHP < get_pcvar_num(MAXHEALTH))
            {
                /* Shout if activated */
                /* Write message if activated */
                new playerCount, i, players[32], name[33];
                get_players(players, playerCount, "ach");
                get_user_name(id,name,32)
                    
                for
(i=1; i<=playerCount; i++)
                {
                    if(get_user_team(id) == get_user_team(i))
                    {
                        if(get_pcvar_num(MESSAGE) == 1)
                        {
                            client_print(0, print_chat, "%L", LANG_PLAYER, "MED_SOMEBODY_ASK", TAG );
                            if(get_pcvar_num(SHOUT) == 1)
                            {
                                engfunc(EngFunc_EmitSound, i, CHAN_ITEM, "medic.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
                            }
                        }                        
                    
}

                }

                new Float:Lebenplus = get_pcvar_float(REG_HEALTH);
                
                if
(ActuellHP + Lebenplus > get_pcvar_num(MAXHEALTH))
                {
                    set_pev(id,pev_health,get_pcvar_float(MAXHEALTH))
                }
                else
                
{
                    set_pev(id,pev_health,ActuellHP + Lebenplus);
                }

                PlayerReload[id] = time() + get_pcvar_num(COOLDOWN)        /* Activate Reload */
                fm_cs_set_user_money(id,ActuellMoney-get_pcvar_num(COSTS),1)    /* Pay.. */

            }
            else
            
{
                client_print(id, print_chat, "%L", id, "MED_HPNORMAL", TAG );
            }
            
        
}
    }
    else
    
{
        if(get_pcvar_num(MODE) != 1)
        
            client_print
(id, print_chat, "%L", id, "MED_DISABLED", TAG );
        else
        
{
            new Seconds = PlayerReload[id] - time()        
            client_print
(id, print_chat, "%L", id, "MED_WAIT", TAG, Seconds );
        }
    }
    return PLUGIN_HANDLED;
}

stock fm_cs_set_user_money(id,money,flash=1)
 {
     set_pdata_int(id,OFFSET_CSMONEY,money,OFFSET_LINUX);

     message_begin(MSG_ONE,get_user_msgid("Money"),{0,0,0},id);
     write_long(money);
     write_byte(flash);
     message_end();
 }

 stock fm_cs_get_user_money(id)
 {
     return get_pdata_int(id,OFFSET_CSMONEY,OFFSET_LINUX);
 }





public hook_ResetHUD(id)
    inMenu[id] = false;

public hook_Touch(ent, id)
{
    if(!is_user_alive(id))
        return FMRES_IGNORED;
    
    new classname
[32];
    pev(ent, pev_classname, classname, 31);
        
    if
(equali(classname, "shacks_npc") && !inMenu[id])
    {
        inMenu[id] = true;
        
        new name
[33], text[512];
        
        get_user_name
(id, name, 32);        
        format
(text, 511, "%L", id, "MED_MENU", name);        
        show_menu
(id, menuKeys, text, -1, "npcMenu");
    }
    
    return FMRES_IGNORED
;
}



//////////////////////////////////////////////
// NPC STUFF
//////////////////////////////////////////////
public npcMenu(id)
{
    new name[33], text[512];
    
    get_user_name
(id, name, 32);
    format(text, 511, "%L", id, "MED_MENU", name);
    
    show_menu
(id, menuKeys, text, -1, "npcMenu");
    return FMRES_HANDLED;
}

public npcMenuEnter(id, key)
{
    switch(key)
    {
        case 0:
        {
            // Key 1
            call_medic(id);
            inMenu[id] = false;
        }
        case 1:
        {
            // Key 2
            inMenu[id] = false;            
            client_print
(id, print_chat, "%L", id, "MED_DONTWANT", TAG );
        }
    }
}

public tryCreateNPC(id, level, cid)
{
    if(!cmd_access(id, level, cid, 1))
        return FMRES_IGNORED;
    createNPC(id);
    return FMRES_HANDLED;
}

public loadNPC()
    createNPC(0);

public createNPC(id)
{
    new tempModel[32];
    get_pcvar_string(g_modelName, tempModel, 31);
    
    if
(!equal(model, tempModel))
    {    
        client_print
(id, print_chat, "%L", id, "MED_ERRORRESTART", CVAR_NAME );
        return FMRES_IGNORED;
    }
    
    if
(npcMade && pev_valid(g_npc))
    {
        engfunc(EngFunc_RemoveEntity, g_npc);
        engfunc(EngFunc_RemoveEntity, g_weapon);
    }
    npcMade = true;
    
    new Float
:origin[3], Float:angles[3];
    if(id > 0)
    {
        pev(id, pev_origin, origin);
        pev(id, pev_angles, angles);
    }
    else
    
{
        new file = fopen(filename, "r");
        if(file)
        {
            // File exists
            new data[128];
            new i;
            
            while
(!feof(file))
            {
                fgets(file, data, 127);
                if(<= 2) // Line 1-3 = origin
                {
                    origin[i] = str_to_float(data);
                }
                else if(== 3) angles[0] = str_to_float(data);
                else if(== 4) angles[1] = str_to_float(data);
                else if(== 5) angles[2] = str_to_float(data);
                i++;
            }
            fclose(file);
        }
        else
        
{
            // File doesn't exist, exit function
            return FMRES_IGNORED;
        }
    }
    
    
// Create the npc entity
    g_npc = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
    
    engfunc
(EngFunc_SetModel, g_npc, g_npcModel);
    engfunc(EngFunc_SetSize, g_npc, Float:{-17.0,-17.0,-36.0}, Float:{17.0,17.0,36.0});
    angles[0] = 0.0;
    set_pev(g_npc, pev_angles, angles);
    
    engfunc
(EngFunc_SetOrigin, g_npc, origin);
    
    if
(id > 0)
    {
        origin[2] += 80;
        engfunc(EngFunc_SetOrigin, id, origin);
    }
    
    set_pev
(g_npc, pev_solid, SOLID_BBOX);
    //set_pev(g_npc, pev_movetype, MOVETYPE_TOSS);
    set_pev(g_npc, pev_classname, "shacks_npc");
    
    
// Set the default animation
    set_pev(g_npc, pev_animtime, 2.0);
    set_pev(g_npc, pev_framerate, 1.0);
    set_pev(g_npc, pev_sequence, 1);
    
    
// Set bone positions
    set_pev(g_npc, pev_controller_0, 125);
    set_pev(g_npc, pev_controller_1, 125);
    set_pev(g_npc, pev_controller_2, 125);
    set_pev(g_npc, pev_controller_3, 125);
    
    
// Set damage and hp
    set_pev(g_npc, pev_takedamage, 0.0);
    
    
// Drop to ground?
    engfunc(EngFunc_DropToFloor, g_npc);
        
    
// Save the origin + angles
    if(id > 0)
    {
        new filepointer = fopen(filename, "w+");
        if(filepointer)
        {
            fprintf(filepointer, "%f^n%f^n%f^n%f^n%f^n%f", origin[0], origin[1], origin[2], angles[0], angles[1], angles[2]);
            fclose(filepointer);
            client_print(id, print_chat, "%L", id, "MED_SAVED");
        }
    }
    
    return FMRES_HANDLED
;
}

Некорректное название темы. Исправлено // Subb98

Перенесено в соответствующий раздел ( Вопросы по AMXX и его плагинам ) // liFe iS GoOD
Аватара пользователя
ilya9754
 
Сообщения: 228
Зарегистрирован: 20 дек 2011, 19:05
Благодарил (а): 28 раз.
Поблагодарили: 6 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: Run time error: native "pev" error

Сообщение Subb98 » 22 апр 2016, 20:01

Добрый вечер. Пожалуйста, ознакомьтесь Вы должны зарегистрироваться, чтобы видеть ссылки. (в частности с пунктом 1), придумайте информативное название для Вашей темы и сообщите мне его в ЛС, после чего я открою Вашу тему снова.

Название темы скорректировано. Тема открыта вновь
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Run time error: native "pev" error

Сообщение Pafos » 22 апр 2016, 22:10

Добавьте проверку на валидность энтити.
Код: Выделить всё
if(!pev_valid(ent))
        return 
FMRES_IGNORED;
 
Аватара пользователя
Pafos
 
Сообщения: 574
Зарегистрирован: 07 апр 2014, 18:03
Откуда: pfnClientConnect
Забанен
Благодарил (а): 129 раз.
Поблагодарили: 97 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn

Re: Run time error: native "pev" error

Сообщение ilya9754 » 26 апр 2016, 12:50

Добавил, все равно падает с той же ошибкой , кречит 200 строчка. Есть еще варианты ???
Аватара пользователя
ilya9754
 
Сообщения: 228
Зарегистрирован: 20 дек 2011, 19:05
Благодарил (а): 28 раз.
Поблагодарили: 6 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: Run time error: native "pev" error

Сообщение nemec21 » 26 апр 2016, 13:23

напиши в plagins.ini после амхх debug
и потом покажи ошибку
напирмер : vipmenu.amxx debug

Код: Выделить всё
    if(!is_user_alive(id))
        return 
FMRES_IGNORED

смени на
Код: Выделить всё

    
if(!is_user_alive(id) && !is_user_connected(id))
        return 
FMRES_IGNORED
Аватара пользователя
nemec21
 
Сообщения: 799
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 212 раз.
Поблагодарили: 44 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Run time error: native "pev" error

Сообщение ilya9754 » 26 апр 2016, 13:40

Так в описании я скинул же трасерровку . В 200 линии что то не так

Добавлено спустя 1 минуту 10 секунд:
И где наддо это именно нарисать , после какой строчки , может я не правельно куда то вставляю это?0
Аватара пользователя
ilya9754
 
Сообщения: 228
Зарегистрирован: 20 дек 2011, 19:05
Благодарил (а): 28 раз.
Поблагодарили: 6 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: Run time error: native "pev" error

Сообщение nemec21 » 26 апр 2016, 13:41

попробуй я добавил проверку

Код: Выделить всё
!is_user_connected(id

пробуй счас
Аватара пользователя
nemec21
 
Сообщения: 799
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 212 раз.
Поблагодарили: 44 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Run time error: native "pev" error

Сообщение ilya9754 » 26 апр 2016, 13:42

Вот это
Код: Выделить всё
if(!pev_valid(ent))
        return 
FMRES_IGNORED;
  
Аватара пользователя
ilya9754
 
Сообщения: 228
Зарегистрирован: 20 дек 2011, 19:05
Благодарил (а): 28 раз.
Поблагодарили: 6 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: Run time error: native "pev" error

Сообщение nemec21 » 26 апр 2016, 13:43

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "vip menu"                
#define VERSION "1.0"                                
#define AUTHOR "Nemec"

new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_0
new vip_messege
, vip_messege_1 
                                                                            
public plugin_init
()
{
                                                         
  register_plugin
(PLUGIN, VERSION, AUTHOR)
                                                                                                 
  register_clcmd
("say vips", "vip_menu")              
  register_clcmd
("say pravilavip", "pravila_vip")
  register_menu("Menu", keys, "func_menu")
                                                                     
  vip_messege 
= CreateHudSyncObj()
  vip_messege_1 = CreateHudSyncObj()                            
}

public vip_menu(id)                                                                        
{ 
  if
(get_user_flags (id) & ADMIN_LEVEL_H)
  {
    if(!(get_user_flags (id) & ADMIN_MENU))
    {
      static menu[350], iLen
      iLen 
= 0
      iLen 
= formatex(menu[iLen], charsmax(menu) - iLen, "Последний выстрел 18+©^n        \yVip\rMenu^n^n");
      {
      iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \wГолосование на смену карты^n")
      keys |= MENU_KEY_1
      
}                              
      
{
      iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \wОтключить микрофон игроку^n")
      keys |= MENU_KEY_2                                                                               
      
}
      {                                                                                                                                           
      iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \wКикнуть игрока^n")
      keys |= MENU_KEY_3
      
}
      {                                                                                                           
      iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "     ------------------------------^n")
      }
      {
      iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \w|Прочти \rобязательно\w|^n")
      keys |= MENU_KEY_4
      
}
      {                                                                                                           
      iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "     ------------------------------^n^n")
      }
      iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r0. \wВыход")         
      keys 
|= MENU_KEY_0
      show_menu
(id, keys, menu, 30, "Menu");
    }
    return PLUGIN_HANDLED 
  
} 
}

public func_menu(id, key) 
{
  switch(key)
  {
    case 0: client_cmd(id, "amx_votemapmenu")
    case 1: client_cmd(id, "amx_gagmenu")
    case 2: client_cmd(id, "amx_kickmenu")
    case 3: client_cmd(id, "say pravilavip")        
  
}
}
                                                           
public pravila_vip
(id)                                             
{                                                                                                                            
  new name
[32]
  get_user_name(id,name,31)
  set_hudmessage(255, 255, 255, 0.01, 0.19, 0, 6.0, 15.0)            
  ShowSyncHudMsg
(id, vip_messege , "%s - тебе запрещено:^n^n1. Читерить^n2. Оскорблять^n3. Рекламировать^n4. Флудить",name) 
                                                                 
  set_hudmessage
(255, 0, 0, 0.01, 0.38, 0, 6.0, 15.0)
  ShowSyncHudMsg(id, vip_messege_1 , "Незнание правил, не освобождает от наказания") 
} 


скопируй и скомпилируй, жду ответа после провеки
Аватара пользователя
nemec21
 
Сообщения: 799
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 212 раз.
Поблагодарили: 44 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Run time error: native "pev" error

Сообщение ilya9754 » 26 апр 2016, 13:45

так это же вип меню какое-то)
Аватара пользователя
ilya9754
 
Сообщения: 228
Зарегистрирован: 20 дек 2011, 19:05
Благодарил (а): 28 раз.
Поблагодарили: 6 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

След.

Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6