Alternativas para crear una entidad laser
#1
Muy buenas, espero que esten bien.

Como dice en el titulo, estoy tratando de buscar una forma de crear una entidad laser, sin embargo, lo que busco obtener es que dicho laser se actualice constantemente y que se mueva dependiendo de donde este un jugador y una entidad en especifico, por ejemplo, la forma que yo tengo es que desde un punto se creen varias entidades cuadradas y que se dirigan hacia un jugador:

Código PHP:
public crear_laser(taskid) {
    static 
id
    id 
taskid-TASK_HT
    g_numero
[id]++
    if (
g_numero[id] >= 500g_numero[id] = 0
    
static FloatfvAngle[3], FloatfAngle[3], FloatfOrigin[3]
    
pev(g_entidad[id], pev_originfOrigin)
    
pev(g_entidad[id], pev_anglesfAngle)
    
pev(g_entidad[id], pev_v_anglefvAngle)
    
g_ent_laser[id][g_numero[id]] = engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"func_wall"))
    
set_pev(g_ent_laser[id][g_numero[id]], pev_classname"ent_laser")
    
engfunc(EngFunc_SetOriging_ent_laser[id][g_numero[id]], fOrigin)
    
engfunc(EngFunc_SetSizeg_ent_laser[id][g_numero[id]], Float:{-20.0, -20.0, -5.0}, Float:{20.01.05.0})
    
set_pev(g_ent_laser[id][g_numero[id]], pev_anglesfAngle)
    
set_pev(g_ent_laser[id][g_numero[id]], pev_solid1)
    
set_pev(g_ent_laser[id][g_numero[id]], pev_movetype5)
    
set_pev(g_ent_laser[id][g_numero[id]], pev_ownerid)
    static 
FloatUserPos[3], FloatVelocity[3], FloatfForward[3]
    
pev(idpev_originUserPos)
    
entity_set_aim(g_ent_laser[id][g_numero[id]], UserPos0)
    
pev(g_ent_laser[id][g_numero[id]], pev_anglesfvAngle)
    
engfunc(EngFunc_MakeVectorsfvAngle)
    
global_get(glb_v_forwardfForward)
    
Velocity[0] = fForward[0] * 4000.0
    Velocity
[1] = fForward[1] * 4000.0
    Velocity
[2] = fForward[2] * 4000.0
    set_pev
(g_ent_laser[id][g_numero[id]], pev_velocityVelocity)
    return 
0


Lo que se hace en el code, es que se obtiene el origin de una entidad en el mapa, y que desde ahi, se dirigan varias entidades con forma de cuadrado hacia el origin de un jugador.

Lamentablemente esta forma es impractica ya que consume demasiado procesador del servidor, puesto que las genero de la siguiente forma:
Código PHP:
set_task(1.0"crear_laser"id+TASK_HT__"b"
Es decir, cada 1 segundo se crea un cuadrado que se dirige de una entidad hacia el jugador.

A alguien se le ocurre alguna otra forma de poder hacer este laser?
Muchas gracias.
Responder
#2
Cada segundo estás creando una entidad por cada player? Y si te estás encargando de borrar cada entidad que generas?

Creo que si describes mejor tu idea de lo que quieres hacer sería más fácil que te ayuden con algún método
Responder
#3
(30/08/2022, 09:53 PM)GabsHp escribió: Cada segundo estás creando una entidad por cada player? Y si te estás encargando de borrar cada entidad que generas?

Creo que si describes mejor tu idea de lo que quieres hacer sería más fácil que te ayuden con algún método

Si, borro cada entidad que se crea cuando toca al player.

Lo que busco lograr es crear un laser entre un jugador y una entidad, y que dicho laser sea una entidad, es casi el mismo concepto de crear una mina laser, pero este se actualizara dependiendo de la ubicacion del jugador.
Responder
#4
ref. https://amxmodx-es.com/Thread-STOCK-crea...4#pid25464
Responder
#5
(30/08/2022, 11:32 PM)mlibre escribió: ref. https://amxmodx-es.com/Thread-STOCK-crea...4#pid25464

Eso es lo que quiero lograr pero los dos puntos de donde sale y llega el laser se mueven, como podria hacerlo para que funcione asi? ya que en este stock el env_laser esta en un origin estatico.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)