Remove Entity (Camara)
#1
hola me sale este error en el plugin de la camara:

Cita:L 09/22/2022 - 17:39:37: [AMXX] Displaying debug trace (plugin "Camara_new.amxx", version "0.0.1")
L 09/22/2022 - 17:39:37: [AMXX] Run time error 10: native error (native "remove_entity")
L 09/22/2022 - 17:39:37: [AMXX] [0] Camara_new.sma::client_disconnected (line 58)

Código PHP:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>

#define VERSION "0.0.1"

#define MAX_PLAYERS    32

#define    m_flWait        42

#define USE_TOGGLE 3

new g_iCam[MAX_PLAYERS+1]
new 
g_iMaxPlayers

public plugin_init()
{
    
register_plugin("Camera View"VERSION"ConnorMcLeod")

    
register_clcmd("say /cam""cam")
    
register_think("trigger_camera""Camera_Think")
    
g_iMaxPlayers get_maxplayers()
}

public 
camid )
{
    if( !
is_user_alive(id) )
    {
        return
    }
    new 
iEnt g_iCam[id]
    if( !
is_valid_ent(iEnt) )
    {
        
iEnt create_entity("trigger_camera")

        
entity_set_int(iEntEV_INT_spawnflagsSF_CAMERA_PLAYER_TARGET|SF_CAMERA_PLAYER_POSITION)

        
DispatchSpawn(iEnt)
        
set_pdata_float(iEntm_flWait999999.04)

        
g_iCam[id] = iEnt
    
}

    
ExecuteHamHam_UseiEntididUSE_TOGGLE1.0)

    
entity_set_int(idEV_INT_flagsentity_get_int(idEV_INT_flags) & ~FL_FROZEN)
    
cs_reset_user_maxspeed(id)
}

public 
client_disconnected(id)
{
    new 
iEnt g_iCam[id]
    if( !
is_valid_ent(iEnt) )
    {
        
g_iCam[id] = 0
        remove_entity
(iEnt)
    }
}

cs_reset_user_maxspeed(id)
{
    new 
Float:flMaxSpeed;
    switch ( 
get_user_weapon(id) )
    {
        case 
CSW_SG550CSW_AWPCSW_G3SG1 flMaxSpeed 210.0;
        case 
CSW_M249 flMaxSpeed 220.0;
        case 
CSW_AK47 flMaxSpeed 221.0;
        case 
CSW_M3CSW_M4A1 flMaxSpeed 230.0;
        case 
CSW_SG552 flMaxSpeed 235.0;
        case 
CSW_XM1014CSW_AUGCSW_GALILCSW_FAMAS flMaxSpeed 240.0;
        case 
CSW_P90 flMaxSpeed 245.0;
        case 
CSW_SCOUT flMaxSpeed 260.0;
        default : 
flMaxSpeed 250.0;
    }
    
set_user_maxspeed(idflMaxSpeed);
}

get_cam_owner(iEnt)
{
    static 
id
    
for(id 1id<=g_iMaxPlayersid++)
    {
        if( 
g_iCam[id] == iEnt )
        {
            return 
id
        
}
    }
    return 
0
}

public 
Camera_Think(entid)
{
    new 
id get_cam_owner(entid);
    if( !
id )
    {
        return
    }

    static 
Float:origin[3], Float:angle[3], Float:vBack[3];
    
entity_get_vectoridEV_VEC_originorigin );
    
entity_get_vectoridEV_VEC_v_angleangle );

    
angle_vectorangleANGLEVECTOR_FORWARDvBack );

    
origin[2] += 20.0//So we're closer to the eyes.

    //Move back to see ourself (150 units)
    
origin[0] += (-vBack[0] * 150.0);
    
origin[1] += (-vBack[1] * 150.0);
    
origin[2] += (-vBack[2] * 150.0);

    
entity_set_originentidorigin );
    
entity_set_vectorentidEV_VEC_anglesangle );  

    
entity_set_float(entidEV_FL_nextthinkget_gametime())

Responder
#2
prueba removiendo ! del if
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#3
Código:
public client_disconnected(id)
{
    new iEnt = g_iCam[id]
    if( !is_valid_ent(iEnt) )
    {
        g_iCam[id] = 0
        remove_entity(iEnt)
    }
}
==>

Código:
public client_disconnected(id)
{
    if(is_valid_ent(g_iCam[id]))
    {
        remove_entity( g_iCam[id] );
        g_iCam[id] = 0;
    }
}
Para que entiendas tus errores:

1 - Estas creando la variable iEnt innecesariamente cuando podrias llamar a g_iCam[id] directamente
2 - La condicion que estas usando es equivocada, estas preguntando si la entidad no es valida, si no es valida obviamente te lanzara un error al remover una entidad que no existe..

Hay muchas correciones que hacerle al codigo, mañana te lo envio reparado, actualmente son las 3:40 en mi pais, Saludos!
Responder
#4
Código PHP:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <xs>

new __int_Cam[33] = 0;
 
public 
plugin_init()
{
    register_plugin"Camera_Mode""1.0""XSlayer" ); 
    register_think"Camera_Think""PCameraThink" );
    register_clcmd"say /cam""Change_Mode" );
}
public 
client_disconnected(Client)
{
    if(__int_Cam[Client])
    {
         remove_entity__int_Cam[Client] );
         __int_Cam[Client] = 0;
    }
}
public 
Change_ModeClient )
{
    if(!is_user_alive(Client)) { return 0; }
 
    if(!__int_Cam[Client])
    {
        __int_Cam[Client] = create_entity"info_target" );
 
        entity_set_string__int_Cam[Client], EV_SZ_classname"Camera_Think" );
        entity_set_float__int_Cam[Client], EV_FL_nextthinkget_gametime() + 0.1 );
   
        entity_set_int
__int_Cam[Client], EV_INT_spawnflagsSF_CAMERA_PLAYER_TARGET|SF_CAMERA_PLAYER_POSITION );
        entity_set_int__int_Cam[Client], EV_INT_iuser1Client );

        DispatchSpawn(__int_Cam[Client]);

        set_pdata_float__int_Cam[Client], 42999999.0);

    }
    ExecuteHamHam_Use__int_Cam[Client], ClientClient31.0 );

    entity_set_int(ClientEV_INT_flagsentity_get_int(ClientEV_INT_flags) & ~FL_FROZEN)
    cs_reset_user_maxspeed(Client)

    return 1;
}
public 
PCamera_Think__int_Entity )
{
    if(is_valid_ent(__int_Entity))
    {
        static __int_Owner;
        __int_Owner entity_get_intClientEV_INT_iuser1 );

        static Float:__fl_v_Angles[3], Float:__fl_Origin[3], Float:__fl_End[3];
        static Float:__fl_v_AnglesF[3];

        entity_get_vectorClientEV_VEC_v_angle__fl_v_AnglesF );
        
entity_get_vectorClientEV_VEC_origin__fl_Origin );

        
__fl_Origin[2] += 20.0;

        angle_vector(__fl_v_AnglesFANGLEVECTOR_FORWARD__fl_v_Angles);
        xs_vec_mul_scalar(__fl_v_Angles, -150.0__fl_v_Angles);
        xs_vec_add(__fl_Origin__fl_v_Angles__fl_End); 

        entity_set_origin__int_Entity__fl_End );
        entity_set_vector__int_EntityEV_VEC_angles__fl_v_AnglesF );
        entity_set_float__int_EntityEV_FL_nextthinkget_gametime() + 0.1 );  
    
}
}
stock cs_reset_user_maxspeed(Client)
{
    new Float:flMaxSpeed;
    switch ( get_user_weapon(Client) )
    {
        case CSW_SG550CSW_AWPCSW_G3SG1 flMaxSpeed 210.0;
        case CSW_M249 flMaxSpeed 220.0;
        case CSW_AK47 flMaxSpeed 221.0;
        case CSW_M3CSW_M4A1 flMaxSpeed 230.0;
        case CSW_SG552 flMaxSpeed 235.0;
        case CSW_XM1014CSW_AUGCSW_GALILCSW_FAMAS flMaxSpeed 240.0;
        case CSW_P90 flMaxSpeed 245.0;
        case CSW_SCOUT flMaxSpeed 260.0;
        default : flMaxSpeed 250.0;
    }
    set_user_maxspeed(ClientflMaxSpeed);

Aca esta!
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)