native error (native "get_user_weapon")

Сообщения
121
Реакции
1
Ошибка
L 12/31/2024 - 02:22:42: [AMXX] Displaying debug trace (plugin "zpsh_extra_dbar.amxx", version "1.0")
L 12/31/2024 - 02:22:42: [AMXX] Run time error 10: native error (native "get_user_weapon")
L 12/31/2024 - 02:22:42: [AMXX] [0] zpsh_extra_dbar.sma::fw_TakeDamage (line 162)
ОС
Windows
Amx Mod X
AMX Mod X 1.9.0.5294
Билд
ReHLDS version: 3.13.0.788-dev
ReGamedll
ReGameDLL version: 5.26.0.668-dev
Версия Metamod
Metamod-r v1.3.0.119, API
Список метамодулей
[ 1] AMX Mod X     RUN   -    amxmodx_mm.dll        v1.9.0.5294      ini  Start ANY
[ 2] Reunion RUN - reunion_mm.dll v0.1.0.92 ini Start Never
[ 3] POD-Bot mm RUN - podbot_mm.dll v3.0B20b ini Chlvl ANY
[ 4] Ham Sandwich RUN - hamsandwich_amxx.dll v1.9.0.5294 pl1 ANY ANY
[ 5] CSX RUN - csx_amxx.dll v1.9.0.5294 pl1 ANY ANY
[ 6] CStrike RUN - cstrike_amxx.dll v1.9.0.5294 pl1 ANY ANY
[ 7] FakeMeta RUN - fakemeta_amxx.dll v1.9.0.5294 pl1 ANY ANY
[ 8] Fun RUN - fun_amxx.dll v1.9.0.5294 pl1 ANY ANY
[ 9] Engine RUN - engine_amxx.dll v1.9.0.5294 pl1 ANY ANY
[10] ReAPI RUN - reapi_amxx.dll v5.24.0.300-dev pl1 ANY Never
Список плагинов
[  1] Admin Base              1.9.0.5294  AMXX Dev Team     admin.amxx       running
[ 2] Admin Commands 1.9.0.5294 AMXX Dev Team admincmd.amxx running
[ 3] Admin Help 1.9.0.5294 AMXX Dev Team adminhelp.amxx running
[ 4] Slots Reservation 1.9.0.5294 AMXX Dev Team adminslots.amxx running
[ 5] Multi-Lingual System 1.9.0.5294 AMXX Dev Team multilingual.am running
[ 6] Menus Front-End 1.9.0.5294 AMXX Dev Team menufront.amxx running
[ 7] Commands Menu 1.9.0.5294 AMXX Dev Team cmdmenu.amxx running
[ 8] Players Menu 1.9.0.5294 AMXX Dev Team plmenu.amxx running
[ 9] Maps Menu 1.9.0.5294 AMXX Dev Team mapsmenu.amxx running
[ 10] Plugin Menu 1.9.0.5294 AMXX Dev Team pluginmenu.amxx running
[ 11] Admin Chat 1.9.0.5294 AMXX Dev Team adminchat.amxx running
[ 12] Anti Flood 1.9.0.5294 AMXX Dev Team antiflood.amxx running
[ 13] Scrolling Message 1.9.0.5294 AMXX Dev Team scrollmsg.amxx running
[ 14] Info. Messages 1.9.0.5294 AMXX Dev Team imessage.amxx running
[ 15] Admin Votes 1.9.0.5294 AMXX Dev Team adminvote.amxx running
[ 16] NextMap 1.9.0.5294 AMXX Dev Team nextmap.amxx running
[ 17] Nextmap Chooser 1.9.0.5294 AMXX Dev Team mapchooser.amxx running
[ 18] TimeLeft 1.9.0.5294 AMXX Dev Team timeleft.amxx running
[ 19] Pause Plugins 1.9.0.5294 AMXX Dev Team pausecfg.amxx running
[ 20] Stats Configuration 1.9.0.5294 AMXX Dev Team statscfg.amxx running
[ 21] StatsX 1.9.0.5294 AMXX Dev Team statsx.amxx running
[ 20] [ZP]BuyMenu&MoneySyste 3.6 Arwel zp_buymenu.amxx debug
[ 21] [MONEY_SYSTEM]All 1.7 Arwel zp_buymenu_all. debug
[ 22] Zombie Plague 4.3 Fix6a MeRcyLeZZ zombie_plague40 running
[ 23] [ZP]Level System 5.0 Dambas zp_level_system running
[ 24] mkod_show_bullet_damag 1.0 MKOD xman2030_damage running
[ 25] [ZP] Default Zombie Cl 4.3 Fix5 MeRcyLeZZ zp_zclasses40.a running
[ 26] [ZP] Extra Item: Frost 1.2 deprkid zp_frost_awp.am debug
[ 27] [ CSO ] VIP 0.1 Opo4uMapy zpd_vip_cso.amx running
[ 28] Camera Changer 1.3 Bl0ck Camera_Changer. running
[ 29] ZP Skull-T9 1.0 Code Edo edit fo AMXX_SkullT9.am running
[ 30] unknown unknown unknown zp_frost_menuts bad load
[ 31] [ZP] Extra Item: Rose 1.0 deprkid rosem4.amxx running
[ 32] [ZP] Extra M4 Rose 1.0 deprkid / xUnic zp_m4a1_jewelry running
[ 33] [ZP] Extra Item: Snipe 1.0 x[L]eoNNN zp_extra_SLG.am running
[ 34] [ZP] Extra: Dual Infin 1.0 Crock / =) (Popr azp_weapon_infi running
[ 35] Ultimate Gore 1.6 JTP10181 zpsh_advance_am running
[ 36] [ZP] Extra Items: dbar 1.0 NET zpsh_extra_dbar running
Автор плагина
NET
Версия плагина
1.0
Исходный код
/*-----------------------------------------=[Take Damage]=-------------------------------------------*/
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{

if(is_user_alive(attacker) && get_user_weapon(attacker) == CSW_XM1014 && g_dbar[attacker])
{
SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmgmultiplier));
}
if((get_user_weapon(attacker) == CSW_XM1014) && g_dbar[attacker])
{
g_iDmg[attacker] += (floatround(damage) * get_pcvar_num(cvar_dmgmultiplier))
}

return HAM_IGNORED
}
/*-----------------------------------------=[World Model]=-------------------------------------------*/
Не могу понять в чем ошибка, помогите
 

Вложения

Сообщения
1,097
Реакции
61
Помог
11 раз(а)
iaws, в первой проверке присуствует проверка на жив ли атакующий, а тут?
Код:
if((get_user_weapon(attacker) == CSW_XM1014) && g_dbar[attacker])
    {
        g_iDmg[attacker] += (floatround(damage) * get_pcvar_num(cvar_dmgmultiplier))
    }
 
Сообщения
868
Реакции
535
Помог
13 раз(а)
лучше сделать вот так
Код:
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{

    if(is_user_alive(attacker) && get_user_weapon(attacker) == CSW_XM1014 && g_dbar[attacker])
    {
        new Float:flNewDamage = damage * get_pcvar_float(cvar_dmgmultiplier);
        SetHamParamFloat(4, flNewDamage);
        g_iDmg[attacker] += flNewDamage;
    }

    return HAM_IGNORED
}
 

ssx

Сообщения
300
Реакции
86
BalbuR, А если атакер гранатой нанесёт урон при этом у него на момент нанесения урона будет CSW_XM1014 в руках ?
 
Сообщения
868
Реакции
535
Помог
13 раз(а)
ssx, ну дач в этом случае стоит проверку на инфликтора добавить
 
Сообщения
18
Реакции
0
BalbuR, по типу такого?
Код:
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
    // Проверка инфликтора (оружие, нанесшее урон)
    if (is_valid_ent(inflictor))
    {
        // Получаем ID оружия
        new iWeapon = get_entity_classnum(inflictor); 

        // Проверяем, является ли инфликтор дробовиком XM1014
        if(iWeapon == CSW_XM1014)
        {
          // Проверяем, жив ли атакующий
           if(is_user_alive(attacker))
           {
              // Проверяем, активирован ли специальный режим (g_dbar[attacker])
               if(g_dbar[attacker]) 
               {
                new Float:flNewDamage = damage * get_pcvar_float(cvar_dmgmultiplier);
                SetHamParamFloat(4, flNewDamage);
                g_iDmg[attacker] += flNewDamage;
               }
           }
        }
    }


    return HAM_IGNORED
}
 
Сообщения
868
Реакции
535
Помог
13 раз(а)
при атаке с огнестрела iInflictor всегда равен игроку

if (iInflictor == iAttacker) { // чел выстрелил
}
 
Сообщения
18
Реакции
0
BalbuR, если я тебя правильно понял, и мои мозги верно инфу прогрузили, то должно быть так?

Код:
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
    // Получаем ID инфликтора и атакующего
    new iInflictor = inflictor;
    new iAttacker = attacker;

    // Проверяем, что inflictor и attacker являются игроками и не равны
    if(is_user_alive(attacker) && is_valid_ent(inflictor))
    {
        if (iInflictor == iAttacker) { // чел выстрелил
            // Получаем ID оружия
            new iWeapon = get_entity_classnum(inflictor);
            
            // Проверяем, является ли инфликтор дробовиком XM1014
            if (iWeapon == CSW_XM1014)
            {

                // Проверяем, активирован ли специальный режим (g_dbar[attacker])
                if(g_dbar[attacker])
                {
                new Float:flNewDamage = damage * get_pcvar_float(cvar_dmgmultiplier);
                SetHamParamFloat(4, flNewDamage);
                g_iDmg[attacker] += flNewDamage;
                }
            }
         }
    }


    return HAM_IGNORED
}
 
Сообщения
1,097
Реакции
61
Помог
11 раз(а)
midnightfury,
Код:
new iInflictor = inflictor;
new iAttacker = attacker;
Это лишнее, вторым и третьим аргументом передаются уже эти индексы, это проверка, что указали выше делается для того чтобы, инфликтор _ приченитель, небыла хае граната например
 

ssx

Сообщения
300
Реакции
86
Какие обязательные проверки на валидность нужны для TakeDamage/TraceAttack? к примеру:
Код:
public TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
    if (attacker == 0 || attacker > _maxPlayers)
        return HAM_IGNORED;
 
Сообщения
18
Реакции
0
ssx, из своей наработки скину, что я использую
Код:
victim (цель) :
1) victim == 0 || victim > _maxPlayers
2) !is_valid_ent(victim)
3) is_player(victim) && is_bot(victim) — это если хочешь различить ботов и игроков.
надеюсь на меня хейт не опрокинется :D
 

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

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