Raised This Month: $ Target: $400
 0% 

damage_item error


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
proffs
Senior Member
Join Date: Jul 2013
Old 10-22-2013 , 15:19   damage_item error
Reply With Quote #1

I am using the original PLugin: https://forums.alliedmods.net/showthread.php?t=66472

And i am getting this error.

Code:
L 10/22/2013 - 21:14:08: [AMXX] Displaying debug trace (plugin "weaponphys.amxx")
L 10/22/2013 - 21:14:08: [AMXX] Run time error 10: native error (native "pev")
L 10/22/2013 - 21:14:08: [AMXX]    [0] 23432.attach::damage_item (line 286)
L 10/22/2013 - 21:14:08: [FAKEMETA] Invalid entity
L 10/22/2013 - 21:14:08: [AMXX] Displaying debug trace (plugin "weaponphys.amxx")
L 10/22/2013 - 21:14:08: [AMXX] Run time error 10: native error (native "pev")
L 10/22/2013 - 21:14:08: [AMXX]    [0] 23432.attach::damage_item (line 286)
L 10/22/2013 - 21:14:08: [FAKEMETA] Invalid entity
L 10/22/2013 - 21:14:08: [AMXX] Displaying debug trace (plugin "weaponphys.amxx")
L 10/22/2013 - 21:14:08: [AMXX] Run time error 10: native error (native "pev")
L 10/22/2013 - 21:14:08: [AMXX]    [0] 23432.attach::damage_item (line 286)
L 10/22/2013 - 21:14:08: [FAKEMETA] Invalid entity
L 10/22/2013 - 21:14:08: [AMXX] Displaying debug trace (plugin "weaponphys.amxx")
L 10/22/2013 - 21:14:08: [AMXX] Run time error 10: native error (native "pev")
L 10/22/2013 - 21:14:08: [AMXX]    [0] 23432.attach::damage_item (line 286)
L 10/22/2013 - 21:14:08: [FAKEMETA] Invalid entity
L 10/22/2013 - 21:14:08: [AMXX] Displaying debug trace (plugin "weaponphys.amxx")
L 10/22/2013 - 21:14:08: [AMXX] Run time error 10: native error (native "pev")
L 10/22/2013 - 21:14:08: [AMXX]    [0] 23432.attach::damage_item (line 286)

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <xs>

#if AMXX_VERSION_NUM < 180

    #define HAM_IGNORED 1
    #define HAM_HANDLED 2
    #define Ham_Spawn Ham:0
    #define Ham_TraceAttack Ham:8
    #define Ham_TakeDamage Ham:9
    #define Ham_Touch Ham:42
    
    
native HamHook:RegisterHam(Ham:function, const EntityClass[], const Callback[], Post=0)
    
native SetHamParamFloat(whichFloat:value)
    
native DisableHamForward(HamHook:fwd)
    
native EnableHamForward(HamHook:fwd)

#else

    #include <hamsandwich>

#endif

#define PLUGIN "Weapon Physics"
#define VERSION "2.1"
#define AUTHOR "Nomexous"

/*

Version 1.0
 - Initial release.

Version 2.0
 - Added. Ability to compile on amxmodx.org's online compiler.
 - Added. Menu for enabling/disabling the plugin.
 - Added. Ability for weapons to be moved when shot.
 - Added. Sparks when weapon hits a wall while moving above a certain speed.
 - Added. Hooking of custom classes.
 - Fixed. Looping bounce sound when touching dead bodies in DoD.
 
Version 2.1
 - Fixed. Custom item spawn debug message removed.
 - Fixed. Non-visible entities no longer react to explosions (e.g. armoury_entities that have been picked up).
 - Changed. Shooting of weapons now off by default.
 - Added. Menu option for weapon clatter.

*/

#define BOUNCE "items/weapondrop1.wav"
#define RIC "debris/metal6.wav"

// Persistant items that don't disappear when picked up.
new const persistant[][] = { "armoury_entity" }

// Dropped items.
new const classes[][] = { "weaponbox""item_thighpack""weapon_shield" }

// The base is what the entity is created as, e.g. ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")).
// Put all of them here. Make sure that this custom entity can take damage, otherwise it won't work!
new const custom_base[][] = { "info_target" }
// What the entity's classname is changed to after it's created, e.g. set_pev(ent, pev_classname, "fakeweapon")
new const custom_classname[][] = { "fakeweapon" }

#define HOOK_COUNT 4 * (sizeof persistant + sizeof classes + sizeof custom_base)

new HamHook:hamhooks[HOOK_COUNT]
new 
traceline_fid 0

new custom_countshootweapons_pcvarphysics_pcvarclatter_sound_pcvar

new Float:multiplier 15.0

public plugin_precache()
{
    
custom_count sizeof custom_classname
    precache_sound
(BOUNCE)
    
precache_sound(RIC)
    
    
physics_pcvar register_cvar("weapon_physics_enabled""1")
    
shootweapons_pcvar register_cvar("weapon_physics_shoot_weapons""0")
    
clatter_sound_pcvar register_cvar("weapon_physics_weapons_clatter""1")
    
    
do_ham_hooks()
}

public 
do_ham_hooks()
{
    new 
count 0
    
    
for (new isizeof persistanti++)
    {
        
hamhooks[count++] = RegisterHam(Ham_Spawnpersistant[i], "spawn_persistant_item"1)
        
hamhooks[count++] = RegisterHam(Ham_Touchpersistant[i], "touch_item")
        
hamhooks[count++] = RegisterHam(Ham_TakeDamagepersistant[i], "damage_item")
        
hamhooks[count++] = RegisterHam(Ham_TraceAttackpersistant[i], "shoot_item")
    }
    
    for (new 
xsizeof classesx++)
    {
        
hamhooks[count++] = RegisterHam(Ham_Spawnclasses[x], "spawn_item"1)
        
hamhooks[count++] = RegisterHam(Ham_Touchclasses[x], "touch_item")
        
hamhooks[count++] = RegisterHam(Ham_TakeDamageclasses[x], "damage_item")
        
hamhooks[count++] = RegisterHam(Ham_TraceAttackclasses[x], "shoot_item")
    }
    
    for (new 
nsizeof custom_basen++)
    {
        
hamhooks[count++] = RegisterHam(Ham_Spawncustom_base[n], "spawn_custom_item"1)
        
hamhooks[count++] = RegisterHam(Ham_Touchcustom_base[n], "touch_custom_item")
        
hamhooks[count++] = RegisterHam(Ham_TakeDamagecustom_base[n], "damage_custom_item")
        
hamhooks[count++] = RegisterHam(Ham_TraceAttackcustom_base[n], "shoot_item")
    }
}

public 
update_hooks_and_forwards()
{
    if (
get_pcvar_num(physics_pcvar))
    {
        for (new 
isizeof hamhooksi++)
        {
            
EnableHamForward(hamhooks[i])
        }
    }
    else
    {
        for (new 
isizeof hamhooksi++)
        {
            
DisableHamForward(hamhooks[i])
        }
    }
    
    if (
get_pcvar_num(shootweapons_pcvar) && get_pcvar_num(physics_pcvar) && !traceline_fid)
    {
        
traceline_fid register_forward(FM_TraceLine"fw_traceline")
    }
    
    if ((!
get_pcvar_num(shootweapons_pcvar) || !get_pcvar_num(physics_pcvar)) && traceline_fid)
    {
        
unregister_forward(FM_TraceLinetraceline_fid)
        
traceline_fid 0
    
}
}

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_event("HLTV""restart""a""1=0""2=0")
    
    
update_hooks_and_forwards()
    
    
register_clcmd("amx_weapon_physics_menu""conjure_menu"ADMIN_SLAY"Shows weapon physics menu.")
    
    
// This multiplier controls how fast the grenade will propel items. Originally, I wanted it to just be proportional to
    // the damage, but CZ and CS has different grenade strengths. Add your own here.
    
new mods[][] = { "cstrike""czero" }
    new 
Float:mult[] = { 22.0,  17.0 }
    
    new 
modname[10]
    
get_modname(modname9)
    
    for (new 
isizeof modsi++)
    {
        if (
equal(modnamemods[i]))
        {
            
multiplier mult[i]
        }
    }
}

public 
conjure_menu(idlevelcid)
{
    if (
cmd_access(idlevelcid1))
    {
        
wpm(id)
    }
    return 
PLUGIN_HANDLED
}

public 
wpm(id)
{
    static 
wpmenu
    
    wpmenu 
menu_create("Weapon Physics""menu_h")
    
    
get_pcvar_num(physics_pcvar) ? menu_additem(wpmenu"Weapon physics: \yEnabled""1") : menu_additem(wpmenu"Weapon phyics: \rDisabled""1")
    
get_pcvar_num(shootweapons_pcvar) ? menu_additem(wpmenu"Shoot weapons: \yEnabled""2") : menu_additem(wpmenu"Shoot weapons: \rDisabled""2")
    
get_pcvar_num(clatter_sound_pcvar) ? menu_additem(wpmenu"Weapons clatter: \yEnabled""3") : menu_additem(wpmenu"Weapons clatter: \rDisabled""3")
    
    
menu_display(idwpmenu0)
    return 
PLUGIN_HANDLED
}

public 
menu_h(idmenuitem)
{
    switch (
item)
    {
        case 
0:
        {
            
set_pcvar_num(physics_pcvar, !get_pcvar_num(physics_pcvar))
        }
        
        case 
1:
        {
            
set_pcvar_num(shootweapons_pcvar, !get_pcvar_num(shootweapons_pcvar))
        }
        
        case 
2:
        {
            
set_pcvar_num(clatter_sound_pcvar, !get_pcvar_num(clatter_sound_pcvar))
        }
        
        default:
        {
            
update_hooks_and_forwards()
            
menu_destroy(menu)
            return 
PLUGIN_HANDLED
        
}
    }
    
    
menu_destroy(menu)
    
wpm(id)
    return 
PLUGIN_HANDLED
}

public 
restart()
{
    for (new 
isizeof persistanti++)
    {
        new 
o
        
while ((engfunc(EngFunc_FindEntityByStringo"classname"persistant[i])))
        {
            static 
Float:origin[3], Float:angles[3]
            
pev(opev_vuser1origin)
            
pev(opev_vuser2angles)
            
set_pev(opev_anglesangles)
            
set_pev(opev_avelocityFloat:{0.00.00.0})
            
engfunc(EngFunc_SetOriginoorigin)
            
engfunc(EngFunc_DropToFlooro)
        }
    }
}

public 
spawn_item(ent)
{
    
set_pev(entpev_movetypeMOVETYPE_BOUNCE)
    
set_pev(entpev_takedamageDAMAGE_YES)
    
set_pev(entpev_health100.0)
    
    return 
HAM_IGNORED
}

public 
spawn_persistant_item(ent)
{
    
set_pev(entpev_movetypeMOVETYPE_BOUNCE)
    
set_pev(entpev_takedamageDAMAGE_YES)
    
set_pev(entpev_health100.0)
    
    new 
Float:origin[3], Float:angles[3]
    
pev(entpev_originorigin)
    
pev(entpev_anglesangles)
    
set_pev(entpev_vuser1origin)
    
set_pev(entpev_vuser2angles)
    
    return 
HAM_IGNORED
}

public 
spawn_custom_item(ent)
{
    if (
is_custom_ent(ent))
    {
        return 
spawn_item(ent)
    }
    return 
HAM_IGNORED
}

public 
damage_item(entinflictorattackerFloat:damagedamagebits)
{
    if (
pev(entpev_effects) & EF_NODRAW) return HAM_IGNORED
    
    
static Float:ent_v[3], Float:ent_o[3], Float:inflictor_o[3], Float:temp[3]
    
pev(entpev_velocityent_v)
    
pev(entpev_originent_o)
    
pev(inflictorpev_origininflictor_o)
    
xs_vec_sub(ent_oinflictor_otemp)
    
xs_vec_normalize(temptemp)
    
xs_vec_mul_scalar(tempdamagetemp)
    
xs_vec_mul_scalar(tempmultipliertemp)
    
xs_vec_add(ent_vtempent_v)
    
set_pev(entpev_velocityent_v)
    
    
// Set a random yaw. I would've set random pitch and roll, but then the weapons don't land flat, even with my Lie Flat plugin.
    
static Float:av[3]
    
//av[0] = random_float(-1000.0, 1000.0)
    
av[1] = random_float(-1000.01000.0)
    
//av[2] = random_float(-1000.0, 1000.0)
    
set_pev(entpev_avelocityav)
    
    
SetHamParamFloat(40.0)
    return 
HAM_HANDLED
}

public 
damage_custom_item(entinflictorattackerFloat:damagedamagebits)
{
    if (
is_custom_ent(ent))
    {
        static 
Float:ent_v[3], Float:ent_o[3], Float:inflictor_o[3], Float:temp[3]
        
pev(entpev_velocityent_v)
        
pev(entpev_originent_o)
        
pev(inflictorpev_origininflictor_o)
        
xs_vec_sub(ent_oinflictor_otemp)
        
xs_vec_normalize(temptemp)
        
xs_vec_mul_scalar(tempdamagetemp)
        
xs_vec_mul_scalar(tempmultipliertemp)
        
xs_vec_add(ent_vtempent_v)
        
set_pev(entpev_velocityent_v)
        
        
// Set a random yaw. I would've set random pitch and roll, but then the weapons don't land flat, even with my Lie Flat plugin.
        
static Float:av[3]
        
av[1] = random_float(-1000.01000.0)
        
set_pev(entpev_avelocityav)
        
        
SetHamParamFloat(40.0)
        return 
HAM_HANDLED
    
}
    return 
HAM_IGNORED
}

public 
touch_item(enttouched)
{
    if (
pev(touchedpev_solid) < SOLID_BBOX) return HAM_IGNORED
    
    
if (<= touched <= 32) return HAM_IGNORED // Prevents bugginess when someone drops a gun (or in DoD, when a gun gets stuck inside a dead body).
    
    
static Float:v[3]
    
pev(entpev_velocityv)
    
    if (
xs_vec_len(v) > 700.0)
    {
        static 
Float:origin[3]
        
pev(entpev_originorigin)
        
origin[0] += random_float(-10.010.0)
        
origin[1] += random_float(-10.010.0)
        
origin[2] += random_float(-10.010.0)
        
draw_spark(origin)
    }
    
    
xs_vec_mul_scalar(v0.4v)
    
set_pev(entpev_velocityv)
    
    if (
get_pcvar_num(clatter_sound_pcvar))
    {
        
engfunc(EngFunc_EmitSoundentCHAN_WEAPONBOUNCE0.25ATTN_STATIC0PITCH_NORM)
    }
    
    return 
HAM_IGNORED
}

public 
touch_custom_item(enttouched)
{
    if (
is_custom_ent(ent))
    {
        return 
touch_item(enttouched)
    }
    return 
HAM_IGNORED
}

public 
shoot_item(entattackerFloat:damageFloat:direction[3], tracedamagebits)
{
    static 
Float:endpoint[3]
    
get_tr2(traceTR_vecEndPosendpoint)
    
draw_spark(endpoint)
    
    static 
Float:velocity[3]
    
pev(entpev_velocityvelocity)
    
    
xs_vec_mul_scalar(directiondamagedirection)
    
xs_vec_mul_scalar(directionmultiplierdirection)
    
xs_vec_add(directionvelocityvelocity)
    
set_pev(entpev_velocityvelocity)
    
    
engfunc(EngFunc_EmitSoundentCHAN_ITEMRIC0.5ATTN_STATIC0PITCH_NORM)
    
    return 
HAM_IGNORED
}

public 
fw_traceline(Float:start[3], Float:end[3], conditionsidtrace)
{
    
// Spectators don't need to run this.
    
if (!is_user_alive(id)) return FMRES_IGNORED
    
    
// If we hit a player, don't bother searching for an item nearby.
    
if (is_user_alive(get_tr2(traceTR_pHit))) return FMRES_IGNORED
    
    
static Float:endpt[3], tr 0i
    
    get_tr2
(traceTR_vecEndPosendpt)
    
    
0
    
    
while ((engfunc(EngFunc_FindEntityInSphereiendpt20.0)))
    {
        if (
is_shootable_ent(i))
        {
            
engfunc(EngFunc_TraceModelstartendHULL_POINTitr)
        
            if (
pev_valid(get_tr2(trTR_pHit)))
            {
                
get_tr2(trTR_vecEndPosendpt)
                
set_tr2(traceTR_vecEndPosendpt)
                
                
set_tr2(traceTR_pHiti)
                
                return 
FMRES_IGNORED
            
}
        }
    }
    
    return 
FMRES_IGNORED
}

public 
is_shootable_ent(ent)
{
    static 
classname[32]
    
pev(entpev_classnameclassname31)
    
    for (new 
isizeof classesi++)
    {
        if (
equal(classnameclasses[i]))
        {
            return 
true
        
}
    }
    
    for (new 
isizeof persistanti++)
    {
        if (
equal(classnamepersistant[i]))
        {
            return 
true
        
}
    }
    
    for (new 
isizeof custom_classnamei++)
    {
        if (
equal(classnamecustom_classname[i]))
        {
            return 
true
        
}
    }
    
    return 
false
}

public 
is_custom_ent(ent)
{
    static 
classname[40]
    
pev(entpev_classnameclassname39)
    
    for (new 
icustom_counti++)
    {
        if (
equal(classnamecustom_classname[i]))
        {
            return 
true
        
}
    }
    
    return 
false
}

stock draw_spark(Float:origin[3])
{
    
message_begin(MSG_ALLSVC_TEMPENTITY)
    
write_byte(TE_SPARKS)
    
engfunc(EngFunc_WriteCoordorigin[0])
    
engfunc(EngFunc_WriteCoordorigin[1])
    
engfunc(EngFunc_WriteCoordorigin[2])
    
message_end()    

proffs is offline
Black Rose
Veteran Member
Join Date: Feb 2011
Location: Stockholm, Sweden
Old 10-23-2013 , 16:11   Re: damage_item error
Reply With Quote #2

As always with the "Invalid entity" error, a simple check of pev_valid() or similar functions would suffice.
__________________
Black Rose is offline
proffs
Senior Member
Join Date: Jul 2013
Old 10-23-2013 , 16:32   Re: damage_item error
Reply With Quote #3

Quote:
Originally Posted by Black Rose View Post
As always with the "Invalid entity" error, a simple check of pev_valid() or similar functions would suffice.
Can you do it? and post on the official plugin thread?
proffs is offline
wickedd
Veteran Member
Join Date: Nov 2009
Old 10-23-2013 , 22:55   Re: damage_item error
Reply With Quote #4

Quote:
Originally Posted by proffs View Post
Can you do it?
Why don't you tried to do it?
Quote:
Originally Posted by proffs View Post
and post on the official plugin thread?
Why didn't you post your problem there? Once again, this is NOT your personal request forum.
__________________
Just buy the fucking game!!!!
I hate No-Steamers and lazy ass people.
wickedd is offline
proffs
Senior Member
Join Date: Jul 2013
Old 10-24-2013 , 15:16   Re: damage_item error
Reply With Quote #5

Quote:
Originally Posted by wickedd View Post
Why don't you tried to do it?

Why didn't you post your problem there? Once again, this is NOT your personal request forum.
Because the Author is inactive and you should shut up, every time i post something you are flaming and yelling some shits.

Stop post useless posts and start to help. Seriously..
proffs is offline
wickedd
Veteran Member
Join Date: Nov 2009
Old 10-25-2013 , 18:05   Re: damage_item error
Reply With Quote #6

So what if the author is inactive? Post your damn problem in the plugin thread. The scripting help forum
is for people who want to learn how to script, it's NOT for fulfilling your request.
__________________
Just buy the fucking game!!!!
I hate No-Steamers and lazy ass people.
wickedd is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 23:13.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode