30/08/2022, 09:39 PM
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:
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:
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.
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] >= 500) g_numero[id] = 0
static Float: fvAngle[3], Float: fAngle[3], Float: fOrigin[3]
pev(g_entidad[id], pev_origin, fOrigin)
pev(g_entidad[id], pev_angles, fAngle)
pev(g_entidad[id], pev_v_angle, fvAngle)
g_ent_laser[id][g_numero[id]] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "func_wall"))
set_pev(g_ent_laser[id][g_numero[id]], pev_classname, "ent_laser")
engfunc(EngFunc_SetOrigin, g_ent_laser[id][g_numero[id]], fOrigin)
engfunc(EngFunc_SetSize, g_ent_laser[id][g_numero[id]], Float:{-20.0, -20.0, -5.0}, Float:{20.0, 1.0, 5.0})
set_pev(g_ent_laser[id][g_numero[id]], pev_angles, fAngle)
set_pev(g_ent_laser[id][g_numero[id]], pev_solid, 1)
set_pev(g_ent_laser[id][g_numero[id]], pev_movetype, 5)
set_pev(g_ent_laser[id][g_numero[id]], pev_owner, id)
static Float: UserPos[3], Float: Velocity[3], Float: fForward[3]
pev(id, pev_origin, UserPos)
entity_set_aim(g_ent_laser[id][g_numero[id]], UserPos, 0)
pev(g_ent_laser[id][g_numero[id]], pev_angles, fvAngle)
engfunc(EngFunc_MakeVectors, fvAngle)
global_get(glb_v_forward, fForward)
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_velocity, Velocity)
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")
A alguien se le ocurre alguna otra forma de poder hacer este laser?
Muchas gracias.