Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: david_BS en 12 Mayo 2012, 03:56 am



Título: STL: Uso de vector para administrar vectores 3D (para juegos)
Publicado por: david_BS en 12 Mayo 2012, 03:56 am
Buenas, tengo un código que había usado hace bastante tiempo para la administración de un grupo de vectores que usaba para un funcionalidad especial en mi hack de Counter-Strike. Quisiera comentar que los vectores 3D, cuando hablamos de videojuegos 3D, se refiere a un vector que contiene tres datos los cuales son las dimensiones del mundo ("world") dentro del videojuego mismo. Estas dimensiones son las mismas en un juego 3D que en la realidad, y estas son x, y, z.
Algo rápido que encontré:
http://en.wikipedia.org/wiki/Cartesian_coordinate_system
(http://upload.wikimedia.org/wikipedia/commons/thumb/6/69/Coord_system_CA_0.svg/240px-Coord_system_CA_0.svg.png)

Entonces, esa funcionalidad que había mencionado antes, se llama "Aimbot", y se trata de conseguir ciertos vectores que determinen la posición deseada para poder apuntar al enemigo. El tema no es como hacer el aimbot porque ya está hecho hace rato y el código lo publiqué hace tiempo también..
Pero quería postear por separado el código con el cual tenía un manejo de esos vectores particulares que les decía.

También les dejo el proyecto:
http://www.mediafire.com/?qs2wha3b0qdajbg

EDITADO:
Código:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
// UTN FRGP TSP
// BS
// mail: david_bs@live.com
// web: Etalking.Com.Ar
// 2012
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <windows.h>
#include <stdio.h>
#include <fstream.h>
#include <vector>

using namespace std;

struct vec
{
float h;
float f;
float r;
};

#define VEC_INDEX_MAX 32
vector<vec> Vecs[VEC_INDEX_MAX];

#define VECS 6

Como en todo sistema de administración básico, tenemos funciones de agregar, borrar y listar.
Código:
void func_vec_add(int index, float x, float y, float z)
{
vec v;
v.h = z;
v.f = x;
v.r = y;  
if(index<=VECS){
Vecs[index].push_back(v);
}
}

void func_vec_clear(int index)
{
    if(index == -1){
       for(int i=0;i<=VECS;i++)
  Vecs[i].clear();
    }
else if(index>=0&&index<=VECS){
            Vecs[index].clear();
    }
}

void func_vec_list(int index)
{
cout << "\n";

if(index == -1){

int cantidad=0;

for(int i=0;i<=VECS;i++)
for(vector<vec>::iterator si = Vecs[i].begin(); si != Vecs[i].end();++si)
{
cantidad++;
printf("Height: %f Forward: %f Right: %f\n",si->h,si->f,si->r);
}

if(cantidad==0)
cout << "no hay elementos !" << endl;
}

else
{
if(index<=VECS){
  for(vector<vec>::iterator si = Vecs[index].begin(); si != Vecs[index].end();++si)
  {
printf("Height: %f Forward: %f Right: %f\n",si->h,si->f,si->r);
  }
}
}
}

Esta función main es sólo para pruebas..
Código:
int main(){

func_vec_add(0, 100, 200, 0.61f);
func_vec_add(1, 100, 200, 0.98f);
func_vec_add(2, 100, 200, 0.59f);
func_vec_add(3, 100, 200, 0.15f);
func_vec_add(4, 100, 200, 0.00f);
        func_vec_add(5, 100, 500, 1.00f);
func_vec_add(6, 100, 900, 2.00f);

//func_vec_list(0);
func_vec_list(-1);

func_vec_clear(-1);

func_vec_list(-1);

cin.get();
return 0;
}

si quieren ver un aimbot de vectores para el Counter-Strike en acción (o mejor dicho, implementado), vean:
http://foro.elhacker.net/programacion_cc/hurricane_linea_i_ii_y_iii-t360899.0.html


Título: Re: STL: Uso de vector para administrar vectores 3D (para juegos)
Publicado por: exel en 12 Mayo 2012, 17:28 pm
 La idea acerca del uso de funciones es la portabilidad en la mayor medida de lo posible. En este caso las funciones que muestras dependen estrictamente de seis instancias de una clase llamada vector. Por otro lado, noto que el dominio de valores posibles para index es mayor al realmente valido en func_vec_add y func_vec_list.

 Con respecto a las librerias, para el ejemplo que muestras no necesitas las librerias string, fstream.h y windows.h

 Solo son pequeños detalles que yo no dejaria pasar por alto. Lejos de eso, interesante ilustracion.

 Saludos


Título: Re: STL: Uso de vector para administrar vectores 3D (para juegos)
Publicado por: anonimo12121 en 12 Mayo 2012, 17:55 pm
Una pregunta, y si se usara el hack para que el proyectil vaya directo a la cabeza en vez de apuntar? xd sería autoshot xD. tu solo tendrías que pulsar el botón de disparar y el proyectil aparecería directamente en el ojo del enemigo xD.


Título: Re: STL: Uso de vector para administrar vectores 3D (para juegos)
Publicado por: david_BS en 12 Mayo 2012, 19:13 pm
La idea acerca del uso de funciones es la portabilidad en la mayor medida de lo posible. En este caso las funciones que muestras dependen estrictamente de seis instancias de una clase llamada vector. Por otro lado, noto que el dominio de valores posibles para index es mayor al realmente valido en func_vec_add y func_vec_list.

 Con respecto a las librerias, para el ejemplo que muestras no necesitas las librerias string, fstream.h y windows.h

 Solo son pequeños detalles que yo no dejaria pasar por alto. Lejos de eso, interesante ilustracion.

 Saludos

claro, las librerías que están por demás es debido a que utilicé el mismo proyecto en visual studio para diferentes objetivos, inclusive el main, es decir es obvio que esas librerías no se utilizan pero es algo que venía quedando de antes...

lo de las 6 instancias te cuento que es porque en el proyecto de mi hack,  yo tomo en cuenta solamente 6 posibles vectores para apuntar a un objetivo, y estos son:

1) enemigo parado y quieto
2) enemigo parado y corriendo
3) enemigo agachado
4) enemigo agachado y moviéndose
5) enemigo saltando
6) enemigo caminando

sin orden de prioridad ya que se trata de una selección dependiendo el estado del enemigo. y debo decir que este no es el código original de mi hack sino que fue cambiado ligeramente para mostrarlo aparte.

gracias por los comentarios.

Una pregunta, y si se usara el hack para que el proyectil vaya directo a la cabeza en vez de apuntar? xd sería autoshot xD. tu solo tendrías que pulsar el botón de disparar y el proyectil aparecería directamente en el ojo del enemigo xD.

eso sería autoshoot XD

gracias por comentar.