• Пожалуйста, создайте название темы отражающее ее смысл
  • Для ускорения решения Вашего вопроса заполните обязательные поля и подробно опишите возникшую проблему

Помощь Бесконечная ошибка в логах

Evgen

Участник
Сообщения
33
Реакции
4
Баллы
8
Добрый день. Прошу помощи, с reapi никак не пока не получается разбираться, сыпятся постоянно ошибки.
Ошибка в логах при включенном debug
C++:
L 04/23/2020 - 13:50:54: Info (map "deathrun_arctic") (file "addons/amxmodx/logs/error_20200423.log")
L 04/23/2020 - 13:50:54: [ReAPI] set_entvar: invalid or uninitialized entity
L 04/23/2020 - 13:50:54: [AMXX] Displaying debug trace (plugin "dr_knifes.amxx")
L 04/23/2020 - 13:50:54: [AMXX] Run time error 10: native error (native "set_entvar")
L 04/23/2020 - 13:50:54: [AMXX]    [0] dr_knifes.sma::stop_effect (line 166)
L 04/23/2020 - 13:50:54: [AMXX]    [1] dr_knifes.sma::client_putinserver (line 43)

Сам плагин
C++:
#include < amxmodx >
#include < amxmisc >
#include < fakemeta >
#include < hamsandwich >
#include < fun >
#include < reapi >

#define KEYS (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<9)
#define FLAG ADMIN_LEVEL_E
#define BLOCK_TIME            5.0

enum _: mdls { vModel[64], pModel[64] }
new gModels[][mdls] = {
    { "models/v_knife.mdl", "models/p_knife.mdl"},
    { "models/dr_mode/knifes/v_axe.mdl", "models/dr_mode/knifes/p_axe.mdl" },
    { "models/dr_mode/knifes/v_dragontail.mdl", "models/dr_mode/knifes/p_dragontail.mdl" },
    { "models/dr_mode/knifes/v_daedric.mdl", "models/dr_mode/knifes/p_daedric.mdl" },
    { "models/dr_mode/knifes/v_kerambit.mdl", "models/dr_mode/knifes/p_kerambit.mdl" }
};
new gKnife[33], msgScreenFade, Float: gUse[33];

public plugin_init(){
    register_plugin("DR Knifes", "1.0", "PAffAEJIkA :3");
    
    register_clcmd("say /knife", "show_KnifeMenu");
    register_clcmd("say_team /knife", "show_KnifeMenu");
    
    msgScreenFade = get_user_msgid("ScreenFade");
    
    RegisterHam(Ham_Item_Deploy, "weapon_knife", "Item_Deploy_Post", 1);
    RegisterHookChain(RG_CBasePlayer_PreThink, "Player_PreThink");
    register_menu("Knifes", KEYS, "func_KNIFES", 0);   
}

public plugin_precache(){
    for(new i = 0; i < sizeof(gModels); i++){
        precache_model(gModels[i][vModel]);
        precache_model(gModels[i][pModel]);
    }
}

public client_putinserver(id){
    stop_effect(id);
    gKnife[id] = 0;
    set_effect(id);
}

public show_KnifeMenu(id){
    new szMenu[512], iLen = 0;
    
    iLen = format(szMenu, charsmax(szMenu), "\d[Run, Vasya, Run]\w Выбор ножа^n^n");
    
    iLen += format(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\y1\r].\%sСтандартный \d[\wРегенерация\d]^n", gKnife[id] == 0 ? "d" : "y");
    iLen += format(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\y2\r].\%sAxe \d[\wГравитация\d]^n", gKnife[id] == 1 ? "d" : "y");
    iLen += format(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\y3\r].\%sКогти росомахи \d[\wСкорость\d]^n", gKnife[id] == 2 ? "d" : "y");
    iLen += format(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\y4\r].\%sDaedric Dagger \d[\wБесшумные шаги\d]^n", gKnife[id] == 3 ? "d" : "y");
    
    if(get_user_flags(id) & FLAG)
        iLen += format(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\y5\r].\%sKerambit \d[\wВсе способности\d]^n", gKnife[id] == 4 ? "d" : "y");
    else
        iLen += format(szMenu[iLen], charsmax(szMenu) - iLen, "\r[\y5\r].\dKerambit [\yАДМИНСКИЙ\d]^n");
    
    iLen += format(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r[\y0\r].\yВыход^n");
    iLen += format(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\dhttps://samarka22.ru");
    return show_menu(id, KEYS, szMenu, -1, "Knifes");
}

public func_KNIFES(id, key){
    if(key == 9)
        return PLUGIN_HANDLED;
    
    if(key == 4 && ~get_user_flags(id) & FLAG)
        return show_KnifeMenu(id);
    
    if(gUse[id] > get_gametime() + BLOCK_TIME)
        return show_KnifeMenu(id);
    
    gUse[id] = get_gametime() + BLOCK_TIME;
    
    if(gKnife[id] != key){
        stop_effect(id);
        gKnife[id] = key;
    
        if(get_user_weapon(id) == CSW_KNIFE)
            set_model(id);
    }
    
    return show_KnifeMenu(id);
}

public Item_Deploy_Post(weapon){
    new id = get_pdata_cbase(weapon, 41, 4);
    if(!is_user_alive(id))
        return HAM_IGNORED;
    
    set_model(id);   
    return HAM_IGNORED;
}

public Player_PreThink(id){
    if(!is_user_alive(id))
        return HC_CONTINUE;
    
    if(~get_user_weapon(id) & CSW_KNIFE)
        stop_effect(id);
    else
        set_effect(id);
    
    return HC_CONTINUE;
}

public KNF_SetHP(tid){
    new id = tid - 33;
    
    new TeamName:gTeam = get_member(id, m_iTeam);
    if(!is_user_alive(id) || gTeam == TEAM_SPECTATOR)
        return;
    
    new Float: gHP = get_entvar(id, var_health);
    if(gHP < 100.0){
        set_entvar(id, var_health, gHP + random_float(1.0, 4.0));
        
        message_begin(MSG_ONE, msgScreenFade, {0,0,0}, id);
        write_short(1<<10);
        write_short(1<<10);
        write_short(0x0000);
        write_byte(0);
        write_byte(200);
        write_byte(0);
        write_byte(75);
        message_end();
    }
}

set_model(id){
    new mId = gKnife[id];
    set_effect(id);
    
    set_pev(id, pev_viewmodel2, gModels[mId][vModel]);
    set_pev(id, pev_weaponmodel2, gModels[mId][pModel]);
}

set_effect(id){
    new mId = gKnife[id];
    
    if(mId == 0 || mId == 4){
        if(!task_exists(id + 33))   
            set_task(1.0, "KNF_SetHP", id + 33, .flags = "b");
    }
    
    if(mId == 1 || mId == 4)
        set_entvar(id, var_gravity, 0.6);
    
    if(mId == 2)
        set_entvar(id, var_maxspeed, 400.0);
    
    if(mId == 3 || mId == 4)
        set_user_footsteps (id, 1);   
    
    if(mId == 4)
        set_entvar(id, var_maxspeed, 444.0);
}

stop_effect(id){
    remove_task(id + 33);
    set_entvar(id, var_gravity, 1.0);
    set_entvar(id, var_maxspeed, 250.0);
    set_user_footsteps (id, 0);
}
 
Уберите строку 43.
C++:
stop_effect(id);
Она не нужна.
Если честно, такому плагину не место на сервере.
 
Уберите строку 43.
C++:
stop_effect(id);
Она не нужна.
Если честно, такому плагину не место на сервере.
Попробую вечером. Почему вы так думаете, что он не нужен? Просто интересно ваше мнение)
 
Evgen, страшно)
C++:
public Player_PreThink(id){
    if(!is_user_alive(id))
        return HC_CONTINUE;
    
    if(~get_user_weapon(id) & CSW_KNIFE)
        stop_effect(id);
    else
        set_effect(id);
    
    return HC_CONTINUE;
}
 
Назад
Сверху