View Single Post
JusTGo
Veteran Member
Join Date: Mar 2013
Old 11-20-2018 , 18:26   Re: Nade Semiclip v2.4
Reply With Quote #20

Quote:
Originally Posted by Lenilson View Post
Hello, in reHLDS this plugin has stopped working, and shows the error that I will leave below.

L 11/17/2018 - 13:42:51: [AMXX] Displaying debug trace (plugin "nade_semiclip.amxx", version "2.4")
L 11/17/2018 - 13:42:51: [AMXX] Run time error 10: native error (native "get_pdata_int")
L 11/17/2018 - 13:42:51: [AMXX] [0] nade_semiclip.sma::SetModel (line 69)
Not sure about the problem, test this updated plugin and see if every thing is working correctly :

PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Nade Semiclip"
#define VERSION "2.5"
#define AUTHOR "JustGo"

#define OFFSET_TEAM    114
#define is_user_valid(%1) (1 <= %1 <= g_MaxPlayers)
#define fm_get_user_team(%1)    get_pdata_int(%1,OFFSET_TEAM)
#define is_grenade_c4(%1)    (get_pdata_int(%1, 96) & (1<<8)) // 96 is the C4 offset

#define SEMI_CLIP_DISTANCE 100.0

new cvar_nade_semiclipg_nade_semiclip
new g_MaxPlayers

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
    
RegisterHam(Ham_Think"grenade""Think_Grenade")
    
    
register_forward(FM_SetModel"SetModel")
    
register_forward(FM_ShouldCollide"ShouldCollide")
    
    
cvar_nade_semiclip register_cvar"nade_semiclip""1" )

    
g_MaxPlayers get_maxplayers();
}

public 
event_round_start()
{
    
g_nade_semiclip get_pcvar_numcvar_nade_semiclip )
}

// Grenade Think Forward
public Think_Grenade(entity)
{
    if(!
g_nade_semiclip)
        return 
HAM_IGNORED
    
    
if(!pev_valid(entity))
        return 
HAM_IGNORED
    
    
if(is_grenade_c4(entity))
        return 
HAM_IGNORED
    
    
static Float:dmgtime
    pev
(entitypev_dmgtimedmgtime)
    
    if(
dmgtime <= get_gametime())
        
set_pev(entitypev_owner,pev(entity,pev_iuser2)); // fix for other plugin that gets flasher name or stuff like that.
    
    
return HAM_IGNORED;
}

public 
SetModel(iEntity, const Model[])
{
    if(!
g_nade_semiclip)
        return 
FMRES_IGNORED
        
    
if(!is_grenade(iEntity))
        return 
FMRES_IGNORED
        
    
static idid pev(iEntitypev_owner)

    if(!
is_user_valid(id))
        return 
FMRES_IGNORED

    
if(!pev(iEntity,pev_iuser2))  
    {
        
set_pev(iEntity,pev_iuser2,id//remeber the real nade owner
        
set_pev(iEntity,pev_iuser1,fm_get_user_team(id)) // remeber the nade owner team
    
}
        
    return 
FMRES_IGNORED
}

public 
ShouldCollide(playerindexentindex)
{
    if(!
g_nade_semiclip)
        return 
FMRES_IGNORED
        
    
if(!is_user_alive(playerindex) || !is_grenade(entindex))
        return 
FMRES_IGNORED
        
    
// Get damage time of grenade
    
static Float:dmgtime
    pev
(entindexpev_dmgtimedmgtime)
        
    if(
dmgtime <= get_gametime())
        return 
FMRES_IGNORED
    
    
if(close_enough(playerindex,entindex))
    {        
        if(
g_nade_semiclip == && (fm_get_user_teamplayerindex ) != pev(entindex,pev_iuser1)))
            return 
FMRES_IGNORED
        
        set_pev
(entindex,pev_owner,playerindex)
    }

    return 
FMRES_IGNORED
}

is_grenade(iEntity)
{
    if( !
pev_valid(iEntity) )
        return 
0
    
    
static class[9
    
pev(iEntitypev_classname, class, charsmax(class)) 
    if( !
equal(class, "grenade") )
        return 
0
    
    
if (is_grenade_c4(iEntity))
        return 
0
    
    
return 1
}

public 
bool:close_enough(ent1ent2)
{
    static 
Float:origin[3], Float:origin2[3]
    
    
pev(ent1pev_originorigin )
    
pev(ent2pev_originorigin2 )
    
    if( 
get_distance_foriginorigin2 ) <= SEMI_CLIP_DISTANCE )
        return 
true

    
return false    

__________________
JusTGo is offline