[TUT] Como crear entidades [ENGINE]
#26
solo te dare un ejemplo no lo testee pero deberia darte una idea de como hacerla

Código PHP:
#include <amxmodx>
#include <engine>

/* C Style */
#pragma semicolon 1

public plugin_init( )
{
    
register_clcmd"say /do""LanzarEntidadExplosiva" );

    
register_think"FlyingEnt""CBaseEntity_Think" ); // Registramos la fordward que no dara a saber cuando nuestra entidad piensa
}

public 
LanzarEntidadExplosiva( const iIndex )
{
    
// Variable estatica para obtener el index de la entidad creada y setearle las configuraciones    
    
static iEnt;    
        
    
// SI cuando creamos la entidad esta es valida
    
if( is_valid_ent( ( iEnt create_entity"info_target" ) ) ) )
    {
        static 
Float:vecUtil]; // variable estatica tipo Float (decimal) para obtener vectores

        // obtenemos los vectores dela posicion en la cual estas
        
entity_get_vectoriIndexEV_VEC_originvecUtil ); 

        
// seteamos la posicion de nuestra entidad con los valores antes obtenidos
        
entity_set_originiEntvecUtil );

        
// seteamos que tu seas el dueño de esta entidad...
        
entity_set_edictiEntEV_ENT_owneriIndex );

        
// obtenemos la velocidad en la direccion que el jugador apunta y le multiplicamos 1000 en velocidad 
        
velocity_by_aimiIndex1000vecUtil );

        
// seteamos la velocidad obtenida 
        
entity_set_vectoriEntEV_VEC_velocityvecUtil );

        
// seteamos un tipo de movimiento que atraviese las paredes
        // info: Este movetype no tiene colision por ende no podras chequear si colisiona con alguna entidad
        
entity_set_intiEntEV_INT_movetypeMOVETYPE_NOCLIP );

        
// seteamos el solido a BBOX (tipo bloque)
        
entity_set_intiEntEV_INT_solidSOLID_BBOX );

        
// le seteamos un nombre que va caracterizar nuesta entidad de las demas
        
entity_set_stringiEntEV_SZ_classname"FlyingEnt" );

        
// Seteamos en tiempo en que setea en este caso la entidad piensa cada 0.2 segundos
        
entity_set_floatiEntEV_FL_nextthinkget_gametime( ) + 0.2 );
    }
}


public 
CBaseEntity_Think( const iEnt )
{
    
// Esta entidad no es valida ?
    
if(!is_valid_entiEnt ))
        return;

    static 
iDistance// variable estatica para medir la distancia entre el Owner (Dueño de la entidad) y la Entidad
    
static iOwner// variable estatica para obtener el owner(Dueño de la entidad)

    
iOwner entity_get_edictiEntEV_ENT_owner ); // obtenemos el owner(Dueño de la entidad)
    
iDistance get_entity_distanceiOwneriEnt ); // Distancia entre Owner y Entidad

    
if( iDistance >= 700 // si la distancia entre estos es mayor o igual a 700
    
{
        
ExplosioniEnt ); // Explosion
        
remove_entityiEnt );    // Removemos la entidad
    
}

    
entity_set_floatiEntEV_FL_nextthinkget_gametime( ) + 0.5 );    // si no ha explotado aun seteamos que piense cada 0.5 segundos mas
}

public 
Explosion(const iObject)
{
    
// esto te lo explique al principio
    
static iEnt;
    
iEnt create_entity("env_explosion");

    if(!
iEnt// Entidad no tiene index ?
        
return 0// retornamos 0;

    
static Float:vecOrigin[3]; 
    
entity_get_vector(iObjectEV_VEC_originvecOrigin); // obtener origin

    
entity_set_vector(iEntEV_VEC_originvecOrigin); // Setear origin

    // Este es el Key Value de la entidad env_explosion que es la magnitud modifica el numero en el string( cadena de texto )
    
DispatchKeyValue(iEnt"iMagnitude""200"); 

    
// le indicamos que cuando la entidad que explota aparesca esta no pueda infligir daño
    
entity_set_int(iEntEV_INT_spawnflagsSF_ENVEXPLOSION_NODAMAGE);

    
// Spawneamos (Revivimos o hacemos aparecer) la entidad
    
DispatchSpawn(iEnt);

    
// Forzamos el uso de la entidad para que explote
    
force_use(iEntiEnt);

    
// la removemos ya que lo la usamos 
    // no tengo claro si es necesario hacer esto puesto que no se si esta al explotar se elimina automatica mente
    
remove_entity(iEnt);

    
// return 1;
    
return 1;

~Digito ergo sum~
Responder
#27
(14/12/2016, 09:51 PM)cl0ver escribió: Bien el tutorial aunque algunas cosas no las explicas bien ni cada funcion como deberia he intentado crear una entidad que se lanze desde el jugador y que explote si esta muy lejos y que pueda atravesar paredes. Gracias

En este tutorial esta lo basico tenés que ir armando, yo posteo esto por si alguien le ayuda, no me interesa si esta completo o no, porque esto que posteo es lo que me artaba de buscar y me costaba conseguir.

Lo tuyo es porque sos noob Whatever

Simplemente haces una entidad, lo adheris al prethink del jugador o haces un task con 0.000001 asi es mas fluido, tomas el origin del jugador y lo pones en la entidad.
Responder
#28
Oh god whyBueno Gracias a los 2 ire a probar...
Responder
#29
Quede arruinado con este tutorial, iré mejor a amxx-eng Dafuq

EDIT; Hay cosas que no entiendo, siquiera se por donde iniciar Oh god why
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

(18/11/2014, 05:47 PM)Neeeeeeeeeel.- escribió: Por qué necesitan una guía para todo? Meté mano y que salga lo que salga... es la mejor forma de aprender.

(16/05/2016, 11:08 PM)kikizon2 escribió: No cabe duda que tienen mierda en vez de cerebro, par de pendejos v:
Responder
#30
remove_entity_name is a good choice to remove all entities with the same name, only a hint.
Responder
#31
entonces como detecto que la entidad ya murió?

Código PHP:
if(!g_reg
    { 
        
RegisterHamFromEntity(Ham_TakeDamageent"fw_takedmg"1
        
RegisterHamFromEntity(Ham_Thinkent"fw_think"
        
g_reg 
    


un plugin que baje tiene eso, pero luego de leer los comentarios de metal quisiera saber como le detecto la muerta a la entidad
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#32
(17/02/2019, 03:19 PM)Hypnotize escribió: entonces como detecto que la entidad ya murió?

Código PHP:
if(!g_reg
    { 
        
RegisterHamFromEntity(Ham_TakeDamageent"fw_takedmg"1
        
RegisterHamFromEntity(Ham_Thinkent"fw_think"
        
g_reg 
    


un plugin que baje tiene eso, pero luego de leer los comentarios de metal quisiera saber como le detecto la muerta a la entidad

y fijate...

Agarra el ent y chequeas la vida de la entidad, si querés que vea pasame el code completo, no vas a pretender que haga magia.
Responder
#33
a perdón ya lo había logrado, gracias igual
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)