WallHacks & Anti-WallHacks (Información & Funcionamiento)
#1
Descripción:

El WallHack es un tipo de Cheat, el cual, mediante la alteración del renderizado del juego, nos permite aplicar diferentes efectos, tanto al mapa como a las entidades, como permitiéndonos ver a través de las paredes, aplicar efectos al texturizado del render, entre otras cosas ...

Tipos de WallHacks & sus códigos:

Mediante el render del OpenGL del juego, es posible aplicar las siguientes ejecuciones de códigos para obtener diferentes efectos.
Nota: No voy a explicar TODOS los códigos existentes, porque en verdad que son infinitos los efectos que se pueden hacer, pero detallaré los más usados.

Método #1: (XQZ)

Èste es el más utilizado por Cheaters debido a lo simple que es, cabe destacar que este método tuvo muchas maneras de aplicarse en el juego, tanto con el hookeo de una función de OpenGL, como un parcheo en memoria del juego (como lo hacia el WallHack.sys del Cheat para sXe 7.7 que se cargaba con el programa OSR Loader).

El código es el siguiente:

Código PHP:
//Esto se hace mediante el hookeo a una función de OpenGL32.dll
//Esto funciona para CUALQUIER JUEGO que utilice el OpenGL como renderizado...

void WINAPI Hook_glBegin GLenum mode//Función hookeada de Opengl32.dll
{
    if ( 
mode == GL_TRIANGLE_STRIP || mode == GL_TRIANGLE_FAN //Si se va a renderizar un player (entidad) ...
        
glDisable GL_DEPTH_TEST ); //No hacer NINGUNA comparación de profundidad ...
        
    
else if ( mode != GL_QUADS && mode != GL_LINES //Caso contrario, si se va a renderizar una parte del mapa ...
        
glEnable GL_DEPTH_TEST ); //Hacer comparación de profundidad y actualizar el depth buffer ...


El efecto en el juego es el siguiente:

[Imagen: kXnjLzD.png]

Método #2: (Asus)

Otro de los más utilizados por Cheaters, este es generalmente el mismo que el anterior, pero con la diferencia que se le cambia el Alpha al texturizado del mapa, permitiendo ver a través de las paredes con más complejidad ...

El código es el siguiente:

Código PHP:
//Esto se hace mediante el hookeo a una función de OpenGL32.dll
//Esto funciona para CUALQUIER JUEGO que utilice el OpenGL como renderizado...

void WINAPI Hook_glBegin GLenum mode//Función hookeada de Opengl32.dll
{
    if ( ! ( 
mode == GL_TRIANGLE_STRIP || mode==GL_TRIANGLE_FAN || mode == GL_QUADS ) ) //Si se va a renderizar una parte del mapa ...
    
{
        static 
float col[4];
        
glGetFloatv (GL_CURRENT_COLORcol ); //Obtener color actual ...
        
glDisable GL_DEPTH_TEST ); //No hacer NINGUNA comparación de profundidad ...
        
glEnable GL_BLEND ); //Activar esta extensión para poder cambiar el Alpha a continuación ...
        
glBlendFunc GL_ONE_MINUS_SRC_ALPHAGL_SRC_ALPHA_SATURATE ); //Especificamos la computación del blending ...
        
glColor4f col[0], col[1], col[2], 0.667f ); //Aplicar el color y el Alpha (sería el último valor, pero alterado, 0.667) ...
    
}
    else
    {
        if ( 
mode == GL_TRIANGLES || mode == GL_TRIANGLE_STRIP || mode == GL_TRIANGLE_FAN //Si se va a renderizar un player (entidad) ...
        
{
            
glEnable GL_DEPTH_TEST ); //Hacer comparación de profundidad y actualizar el depth buffer ...
            
glDisable GL_BLEND ); //Desactivar esta extensión, cosa de no aplicar el efecto a los players o entidades ...
        
}
    }


El efecto es el siguiente:

[Imagen: vTxmtpZ.png]


Métodos de Anti-WallHacks y sus códigos:

Para contrarrestar este tipo de Cheat, en el año 2002 se creó el método definitivo (por ser sólo vía servidor) que hoy en día la mayoría de servidores utilizan, y éste es el método por TraceLine y AddToFullPack ...

Este método consiste en, dentro de AddToFullPack, hacer varios TraceLine desde la vista de un jugador, hacia la posición de un rival, y si TraceLine devuelve un Fraction indicando que hay una pared enfrente de la visión del jugador, automáticamente se cancela el envío de datos de la entidad del rival en AddToFullPack, haciendo que TODOS los WallHacks queden inservibles.

El Anti-Cheat CSGuard para cs 1.4 fué el primero en crearlo, y luego vinieron las mejoras y las optimizaciones por partes de otros Anti-Cheats (caso HLGuard, sXe-Injected, WHBlocker, UAC Anti-Cheat, etc) ...

El código que pueden utilizar es el siguiente (únicamente cómo referencia, ya que NO está completo):

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

static Float:offset_y[][] = { {-17.0, -8.5, -8.5,-17.0 }, { 17.0,  8.5,  8.517.0 } } //Esto son vectores para checkear diferentes puntos de la entidad (de pie) ...
static Float:offset_z[][] = { {-34.0,-17.017.034.0 }, {-17.0, -8.517.034.0 } } //Lo mismo que lo anterior pero si está agachada ...

public plugin_init ( )
{
    
register_forward FM_AddToFullPack"Fw_AddToFullPack"//Registramos ...
}

public 
Fw_AddToFullPack ( const es, const e, const ent, const host, const flags, const player, const set )
{
    if ( 
player //Si es un jugador ...
    
{
        if ( 
host != ent //Si la entidad "no soy yo" ..
        
{
            if ( !
is_entity_visible hostentset ) ) //Checkear si es visible la entidad con respecto "a mi" ...
            
{
                
//Ningún punto de la entidad es visible, por lo tanto no enviar datos de la entidad ...
                
forward_return FMV_CELL)
                return 
FMRES_SUPERCEDE
            
}
        }
    }

    return 
FMRES_IGNORED
}

stock is_entity_visible ( const id, const entity, const set )
{
    static 
Float:p_origin[3], Float:e_origin[3], Float:v_plane[3], Float:v_temp[3], duckij

    
if ( !engfunc EngFunc_CheckVisibilityentityset ) ) //Primero se checkea si la entidad está en mi PVS ...
        
return false //No está en mi PVS, no enviar ningún dato de la entidad ...

    
entity_get_vector idEV_VEC_originp_origin //Obtener mi posición y guardarla en la variable p_origin ...
    
entity_get_vector entityEV_VEC_origine_origin //Obtener la posición de la entidad y guardarla en la variable e_origin ...

    
entity_get_vector idEV_VEC_view_ofsv_temp //Obtener mis ángulos de vista ...
    
xs_vec_add p_originv_tempp_origin //Y sumarlos a mi origen (posición) ...

    
entity_get_vector entityEV_VEC_view_ofsv_temp //Obtener ángulos de vista de la entidad ...
    
xs_vec_add e_originv_tempv_temp //Y sumarlos a su origen (posición) ...

    
if ( is_point_visible p_originv_tempid ) ) //Si mi vista (posición+angulos) puede ver al rival (su posición + sus angulos) ...
        
return true //No hacer ningún checkeo siguiente (ya que la entidad es visible), esto optimiza bastante ...

    
xs_vec_sub e_originp_originv_plane //Vamos a obtener el plano de la entidad, restamos MI posición y la del rival = plano ...
    
xs_vec_normalize v_planev_plane //Normalizar ...

    
vector_to_angle v_planev_plane //Convertir los vectores del plano a vectores angulares ...
    
angle_vector v_planeANGLEVECTOR_RIGHTv_plane //Obtener los vectores angulares (RIGHT) del plano angular ...

    
duck = !! ( entity_get_int idEV_INT_button ) & IN_DUCK //Si la entidad está agachada, setear TRUE esta variable ...

    
for ( i++ )
    {
        for ( 
j++ )
        {
            
v_temp[0] = e_origin[0] + v_plane[0] * offset_y[i][j]
            
v_temp[1] = e_origin[1] + v_plane[1] * offset_y[i][j]
            
v_temp[2] = e_origin[2] + v_plane[2] * offset_y[i][j] + offset_z[duck][j]

            if ( 
is_point_visible p_originv_tempid ) ) //Si algún punto es visible ...
                
return true //Devolver TRUE y no hacer nada más porque YA estoy viendo un algún punto ...
        
}
    }

    return 
false //No se pudo ver ningún punto, devolver FALSE y bloquear el envío de los datos de la entidad ...
}

stock is_point_visible ( const Float:start[3], const Float:point[3], const ignore_ent )
{
    static 
Float:fraction

    engfunc 
EngFunc_TraceLinestartpointIGNORE_MONSTERS IGNORE_GLASSignore_ent)

    
get_tr2 0TR_flFractionfraction )

    return ( 
fraction == 1.0 //Devolver únicamente si no hay ningún impacto en el trace ...


El efecto es el siguiente:


Bypass de la protección:

A pesar de poder bloquear los WallHacks desde el Servidor, aún existen otras formas de poder ver información a través de las paredes mediante los datos del sonido de los jugadores.
En otro Thread analizaremos un poco más lo que son los SoundHacks y los métodos para bloquearos...

Nota: @Neeeeeeeeeel.- avisame si hay algo que no va dentro del post ...
Si alguien no comprende alguna parte de algún código, siéntase libre de preguntar ...
Cualquiera que quiera aportar nuevas ideas a ésto, ¡va a ser bienvenido! ...
[Discord]: Rainnegan#7610

Código PHP:
new MySQL[][] = { "cincoya_datasplu""ahorateneslapw123""cincoya.net" 
Responder
#2
Buena información!

Ya que creaste el tema, hablo desde el poco conocimiento que tengo, cuando yo cree mi primer WH (sin ningún anti-cheat en el servidor), en simples pasos, lo que hice fue obtener la posición de los jugadores, y luego con la ViewMatrix y un pequeño trozo de código agarrado de otros sitios (World2Screen), poder plasmar esas coodernadas 3D en mi pantalla, y con una app externa, dibujar un overlay de fondo que se encuntra arriba de la app del HL.

Asumo que vos me entenderás lo que hice si estás más metido en el tema.
Volviendo a la pregunta, es posible evitar esto desde el lado servidor, o si o si requiere de una aplicación corriendo en el cliente para dificultar cosas.

PD: Datos sobre la ViewMatrix por si a alguien le interesa.
http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/the-view-matrix
https://www.3dgep.com/understanding-the-view-matrix/
Responder
#3
Si seria posible que también hablaras un poco de aquellos cheats que pueden filtrar el sma que dejaste Approved
[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
#4
(02/11/2018, 08:04 PM)KISKE escribió: Asumo que vos me entenderás lo que hice si estás más metido en el tema.

Muy genial la idea, algo similar hacen algunos Cheats de CS:GO, y los nuevos de ahora lo que hacen es enviar desde los datos al juego -> a la pantalla del Overlay del Cheat.
De esta manera, si alguien está transmitiendo algo por Twitch, lo que el espectador ve es un juego limpio, pero en realidad el jugador está viendo otra cosa xd

(02/11/2018, 08:04 PM)KISKE escribió: Volviendo a la pregunta, es posible evitar esto desde el lado servidor, o si o si requiere de una aplicación corriendo en el cliente para dificultar cosas.

Creo yo que la manera de evitarlo es simplemente no enviar esos datos (desde el lado servidor), ya que sino, si te vas a la parte cliente, podrías hacer chequeos de Handles, análisis de Ventanas, etc, y ahí lo detectas al Cheat.

(02/11/2018, 08:13 PM)OsweRRR escribió: Si seria posible que también hablaras un poco de aquellos cheats que pueden filtrar el sma que dejaste Approved

Apenas termino el Thread de SpeedHack, me pongo a hablar de SoundHack también, dame tiempo xd
[Discord]: Rainnegan#7610

Código PHP:
new MySQL[][] = { "cincoya_datasplu""ahorateneslapw123""cincoya.net" 
Responder
#5
el anti-wallhack funciona bien pero hay un detalle, al ser visible nuevamente el jugador el "EspHack" se activa

[Imagen: QGH96Zo.jpg]

se puede añadir este complemento:

Código PHP:
register_forward(FM_AddToFullPack"pfw_atfp"1)
//...
public pfw_atfp(eseenthostflagsplayerset)
{
    if( !
player // if isn't player or is a bot don't check (save CPU)
        
return FMRES_IGNORED

    set_es
(esES_SolidSOLID_NOT)    // Bug players EspHack
    
    
return FMRES_IGNORED


esto solo funciona si el jugador es asesinado y "respawn" en mods dm, ctf...
Responder
#6
(03/11/2018, 07:15 PM)mlibre escribió:
el anti-wallhack funciona bien pero hay un detalle, al ser visible nuevamente el jugador el "EspHack" se activa

[Imagen: QGH96Zo.jpg]

se puede añadir este complemento:

Código PHP:
register_forward(FM_AddToFullPack"pfw_atfp"1)
//...
public pfw_atfp(eseenthostflagsplayerset)
{
    if( !
player // if isn't player or is a bot don't check (save CPU)
        
return FMRES_IGNORED

    set_es
(esES_SolidSOLID_NOT)    // Bug players EspHack
    
    
return FMRES_IGNORED


esto solo funciona si el jugador es asesinado y "respawn" en mods dm, ctf...

Este método es el mismo que utiliza el Anti-Cheat CSGuard (desde el año 2002), y básicamente pasa por lo siguiente:

En los códigos de los Cheats, te encuentras con una verificación que le hacen a las entidades de Players para ver si están vivos o no lo están.
De estar vivos, entonces son sólidas, y en caso de no estarlos, dejan de ser sólidas, haciendo que el ESP funcione correctamente.

Código PHP:
//Función del client.dll HUD_AddEntity
//Utilizada para el agregado de entidades a la pantalla

int HUD_AddEntity int typestruct cl_entity_s *ent, const char *modelname )
{
    
//1) Si la entidad no es nula.
    //2) Si la entidad es un jugador.
    //3) Si la entidad no es un espectador.
    //4) Si la entidad es sólida. (Acá es en donde se produce el fallo).

    
if ( ent && ent->player && !ent->curstate.spectator && ent->curstate.solid )
    {
        
//Aplicar funciones del Cheat
    
}

[Discord]: Rainnegan#7610

Código PHP:
new MySQL[][] = { "cincoya_datasplu""ahorateneslapw123""cincoya.net" 
Responder
#7
este efecto de "AntiWallHack" tiene una gran desventaja para jugadores con ping superior a los 90.

¿Cual?

Prefire: Al momento que un jugador enfrente a otro, el jugador contrario no vera una transicion, si no que vera una "teletransportacion" hacia el centro de su vista.
WHBlocker tiene una variable que se puede configurar para evitar ese problema.
Al momento de aplicar ese "WB" hay que transmitir la entidad antes de verla

Hay un par de contra mas que no recuerdo, si me acuerdo la comento
Competitive/Face it Pick Up Game (PUG) servidor de prueba: 45.77.94.109:27016 Click para Entrar
[Imagen: b_350_20_5A6C3E_383F2D_D2E1B5_2E3226.png]

(14/08/2015, 10:15 PM)Sugisaki escribió: "El mundo es caotico, irracional e injusto. No tiene ningun significado"
Palabras que desde hace mucho tiempo he buscado para describir, ¿Que es el mundo?
Crab

Código PHP:
if(ayuda && free)
{
    exit();

Responder
#8
(04/11/2018, 10:30 AM)Sugisaki escribió: este efecto de "AntiWallHack" tiene una gran desventaja para jugadores con ping superior a los 90.

¿Cual?

Prefire: Al momento que un jugador enfrente a otro, el jugador contrario no vera una transicion, si no que vera una "teletransportacion" hacia el centro de su vista.
WHBlocker tiene una variable que se puede configurar para evitar ese problema.
Al momento de aplicar ese "WB" hay que transmitir la entidad antes de verla

Sería predicción de movimiento para evitar el player-popping.
Cual es la CVAR que el WHBlocker tiene?


S2
[Discord]: Rainnegan#7610

Código PHP:
new MySQL[][] = { "cincoya_datasplu""ahorateneslapw123""cincoya.net" 
Responder
#9
Buena data. Todo bien con el post.
[Imagen: paypalqr.png]
Responder
#10
(04/11/2018, 10:30 AM)Sugisaki escribió:
este efecto de "AntiWallHack" tiene una gran desventaja para jugadores con ping superior a los 90.

¿Cual?

Prefire: Al momento que un jugador enfrente a otro, el jugador contrario no vera una transicion, si no que vera una "teletransportacion" hacia el centro de su vista.
WHBlocker tiene una variable que se puede configurar para evitar ese problema.
Al momento de aplicar ese "WB" hay que transmitir la entidad antes de verla

Hay un par de contra mas que no recuerdo, si me acuerdo la comento

creo que te refieres al leve retardo de unos segundos en reaparecer el model "lo he notado" parece arreglarse con estos ajustes

Código:
smooth = 1
smoothout = 1
Responder
#11
(05/11/2018, 05:20 PM)mlibre escribió:
(04/11/2018, 10:30 AM)Sugisaki escribió:
este efecto de "AntiWallHack" tiene una gran desventaja para jugadores con ping superior a los 90.

¿Cual?

Prefire: Al momento que un jugador enfrente a otro, el jugador contrario no vera una transicion, si no que vera una "teletransportacion" hacia el centro de su vista.
WHBlocker tiene una variable que se puede configurar para evitar ese problema.
Al momento de aplicar ese "WB" hay que transmitir la entidad antes de verla

Hay un par de contra mas que no recuerdo, si me acuerdo la comento

creo que te refieres al leve retardo de unos segundos en reaparecer el model "lo he notado" parece arreglarse con estos ajustes

Código:
smooth = 1
smoothout = 1

Entonces lo que se haces es multiplicar la velocidad, y agregársela al origen de la entidad, de esa manera la posición estaría más adelantada o más atrasada y se evitaría el riesgo de que aparezcan de la nada.
Cabe destacar que el código que puse es sólo conceptual, no le puse checkeo de FOV, de entidades que no son players, predicciones, ni nada, es sólo lo básico.
[Discord]: Rainnegan#7610

Código PHP:
new MySQL[][] = { "cincoya_datasplu""ahorateneslapw123""cincoya.net" 
Responder
#12
Estaba pensando en una forma de optimizar el calculo utilizando zonas, si se hace manualmente funciona muy bien, pero no puedo pensar en la forma de calcular las zonas automaticamente de manera eficiente.
Tengo una forma, pero no es para nada viable, tardaría minutos en terminar de calcular.
Responder
#13
(05/11/2018, 09:06 PM)Destro escribió: Estaba pensando en una forma de optimizar el calculo utilizando zonas, si se hace manualmente funciona muy bien, pero no puedo pensar en la forma de calcular las zonas automaticamente de manera eficiente.
Tengo una forma, pero no es para nada viable, tardaría minutos en terminar de calcular.

No entendí bien el tema de las zonas, me explicas?
Y sobre lo que dije antes sobre las predicciones, usaría lo siguiente:

Código tomado del UAC Anti-Cheat:

Código PHP:
stock get_origin_predicted ( const idFloat:Origin[3] )
{
    static 
Float:Velocity[3]
    
    
entity_get_vector idEV_VEC_originOrigin )
    
entity_get_vector idEV_VEC_velocityVelocity )
        
    if ( ( 
Velocity[0] != 0.0 ) || ( Velocity[1] != 0.0 ) || ( Velocity[2] != 0.0 ) )
    {
        
VectorMul Velocity0.075Velocity //Factor de multiplicación para la predicción ...
        
VectorAdd OriginVelocityOrigin )
    }

[Discord]: Rainnegan#7610

Código PHP:
new MySQL[][] = { "cincoya_datasplu""ahorateneslapw123""cincoya.net" 
Responder
#14
(05/11/2018, 11:44 PM)Cr3470r escribió: No entendí bien el tema de las zonas, me explicas?
Creas diferentes zonas en el map, cuando jugadores estén dentro de X zona ya sabes que no pueden ver a los que estén en Y zona, así te ahorras un montón de tracelines.

Mas fácil de entender: En de_inferno, si el jugador esta en base CT, no puede ver a los que están en base TT Genius Genius
lo difícil es calculas las zonas automaticamente
Responder
#15
(06/11/2018, 12:40 AM)Destro escribió:
(05/11/2018, 11:44 PM)Cr3470r escribió: No entendí bien el tema de las zonas, me explicas?
Creas diferentes zonas en el map, cuando jugadores estén dentro de X zona ya sabes que no pueden ver a los que estén en Y zona, así te ahorras un montón de tracelines.

Mas fácil de entender: En de_inferno, si el jugador esta en base CT, no puede ver a los que están en base TT Genius Genius
lo difícil es calculas las zonas automaticamente

Eso ya lo hace el plugin de por sí:

Código PHP:
if ( !engfunc EngFunc_CheckVisibilityentityset ) ) //Primero se checkea si la entidad está en mi PVS ...
        
return false //No está en mi PVS, no enviar ningún dato de la entidad ... 

Más optimizado que esto no creo que se pueda, probé todos los métodos existentes e inclusive hice un cacheo de entidades para que AddToFullPack se llame en cada entidad cada "x" milisegundos, en pocas palabras el orden es el siguiente:

1) Se chequea el cacheo de la entidad, si pasaron más de "x" milisegundos ->
2) Se chequea que la Entidad esté en el PVS, si lo está ->
3) Se chequea el FOV del player, si la entidad está en el FOV ->
4) Se chequea el primer punto inicial de la entidad (origin+viewofs), si el punto es visible ->
5) Se chequea el Weapon View Point, si el punto del arma es visible ->
6) Se chequea los vectores restantes (ya sean stand o duck).

Quiero destacar que el UAC chequea tanto a rivales como a los Teams, porque viendo a los de tu Team a través de las paredes, te podes dar una idea en donde muere o en donde apuntan y con eso ya tendrías ventaja y también funciona tanto para jugadores vivos como muertos (lo que me costó un huevo de codear).
[Discord]: Rainnegan#7610

Código PHP:
new MySQL[][] = { "cincoya_datasplu""ahorateneslapw123""cincoya.net" 
Responder
#16
@Edit
Recién veo lo que hace CheckVisibility en rehlds, es exactamente lo que decía jaja
Responder
#17
lo que se puede es hacer una entidad adjuntandola al player y haciendola mas ancha (dependiendo de una variable) la cual si se ve un punto hace al player visible aunque este no se este viendo realmente, lo que pasara es que primero se vera la entidad antes que el player salga, o modificando algunos parametros de min y max en el addtofullpack

(05/11/2018, 07:39 PM)Cr3470r escribió:
(05/11/2018, 05:20 PM)mlibre escribió:
(04/11/2018, 10:30 AM)Sugisaki escribió:
este efecto de "AntiWallHack" tiene una gran desventaja para jugadores con ping superior a los 90.

¿Cual?

Prefire: Al momento que un jugador enfrente a otro, el jugador contrario no vera una transicion, si no que vera una "teletransportacion" hacia el centro de su vista.
WHBlocker tiene una variable que se puede configurar para evitar ese problema.
Al momento de aplicar ese "WB" hay que transmitir la entidad antes de verla

Hay un par de contra mas que no recuerdo, si me acuerdo la comento

creo que te refieres al leve retardo de unos segundos en reaparecer el model "lo he notado" parece arreglarse con estos ajustes

Código:
smooth = 1
smoothout = 1

Entonces lo que se haces es multiplicar la velocidad, y agregársela al origen de la entidad, de esa manera la posición estaría más adelantada o más atrasada y se evitaría el riesgo de que aparezcan de la nada.
Cabe destacar que el código que puse es sólo conceptual, no le puse checkeo de FOV, de entidades que no son players, predicciones, ni nada, es sólo lo básico.

la variable es "barrel"

Competitive/Face it Pick Up Game (PUG) servidor de prueba: 45.77.94.109:27016 Click para Entrar
[Imagen: b_350_20_5A6C3E_383F2D_D2E1B5_2E3226.png]

(14/08/2015, 10:15 PM)Sugisaki escribió: "El mundo es caotico, irracional e injusto. No tiene ningun significado"
Palabras que desde hace mucho tiempo he buscado para describir, ¿Que es el mundo?
Crab

Código PHP:
if(ayuda && free)
{
    exit();

Responder
#18
(06/11/2018, 04:27 PM)Sugisaki escribió: lo que se puede es hacer una entidad adjuntandola al player y haciendola mas ancha (dependiendo de una variable) la cual si se ve un punto hace al player visible aunque este no se este viendo realmente, lo que pasara es que primero se vera la entidad antes que el player salga, o modificando algunos parametros de min y max en el addtofullpack

Esto sería en cuanto a la predicción, pero sobre lo de "haciendola más ancha", supongo que eso sería para adelantar un poco más los puntos a chequear.
No sirvió el code que puse antes que computa el factor de velocidad y lo agrega al origen de la entidad?

(06/11/2018, 04:27 PM)Sugisaki escribió: la variable es "barrel"


El código del Wallhack Blocker de OT tiene justamente esta función (yo no la adjunté al código conceptual que puse en el post porque no lo vi realmente necesario ya que sólo es conceptual jaja).
[Discord]: Rainnegan#7610

Código PHP:
new MySQL[][] = { "cincoya_datasplu""ahorateneslapw123""cincoya.net" 
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)