Tabla de líderes
Contenido popular
Showing content with the highest reputation on 02/02/11 en Mensajes
-
[Tutorial] Manipulacion de Vectores
Morte and 5 others reaccionó a meTaLiCroSS por un tema
ATENCION: Para entender y comprender este tutorial debes saber al menos que es un Vector y una Entidad comun. Estoy mas aburrido que jugando CS con bots, asi que decidi hacer un tutorial, con el block de notas, el cual te podra enseñar algo de manipulacion de vectores. Digo de antemano, si sos novato, no te recomiendo ver esto dado que podras confundirte mucho. 1. Obtener vector de velocidad entre 2 puntos. Aqui un pequeño code, con todo explicado, el cual te da a mostrar, como puedo obtener una direccion entre 2 puntos (ya sea para hacer una especie de knockback, un empujon de una explosion, etc. Una demostracion en una imagen: La cruz azul, es un player, mirando para el lugar que sea La cruz roja, es el punto al cual nosotros queremos obtener una direccion La cruz negra, es un player que esta metido en la nada caminando por ahi matando cts (we) El siguiente codigo explica como hacer que el pibe de cruz negra sea empujado a la direccion entre la cruz azul y roja: // Demos por ejemplo: // vecOrigin es el vector de la Cruz Azul // vecTarget es el vector del lugar al cual queremos obtener una direccion #include // aqui necesitaremos XS, para facilitarnos los calculos que haremos con los vectores. new Float:vecDirection[3] // creamos un vector, el cual contendra la direccion entre estas 2 cruces xs_vec_sub(vecTarget, vecOrigin, vecDirection) // Aqui van las explicaciones de math: // xs_vec_sub hace que 2 vectores se resten, sacando el resultado en el tercer parametro. // La sintaxis es la siguiente: // (VECTOR AL CUAL QUEREMOS OBTENER LA DIRECCION) RESTADO POR (VECTOR DE PARTIDA) // Asi restandolos, obtenemos un vector, el cual se puede de manipular de varias formas. // Explicaciones extras: // El vector de direccion que obtuvimos, si se lo sumamos a vecOrigin, nos dara la posicion de vecTarget, ya que de ahi lo restamos // Para el que sabe de los vectores de velocidad, el vector vecDirection lo podemos considerar como un vector de "velocidad", // Si nosotros le seteamos la velocidad a una entidad, el vector vecDirection, saldra disparado a la direccion ya especificada (la direccion entre la cruz azul y la roja) // La incognita en este caso es...: cual fuerte sera ese empujon que recibira la entidad? // "La fuerza con la que sera empujado esta entidad X, sera equivalente a la distancia entre la Cruz Azul y la Roja" eso hay que tenerlo claro. // La distancia la podemos medir con xs_vec_len, pueden hacer logs en su consola para que noten que es verdad. // Que pasa si nosotros queremos cambiar la fuerza del vector, pero sin necesidad de modificar su direccion/angulo de vista? // Continuamos el code con esto: xs_vec_normalize(vecDirection, vecDirection) // xs_vec_normalize hara que cualquier vector de velocidad, CUALQUIERA, haga reducir su fuerza al valor minimo (0.000000001). // Tal como lo dice la funcion, "normalisa" un vector. De esta forma, podemos resetear la velocidad de un vector sin modificar su direccion. // Pero..., el valor es el minimo, como hago para setearle la fuerza que yo quiera? // Continuamos el code con esto: xs_vec_mul_scalar(vecDirection, 500.0, vecDirection) // xs_vec_mul_scalar hara que un vector, se auto-multiplique en el valor puesto en el segundo parametro, que es 500. (como Float) // Si despues de ejecutar esta funcion, logeamos en consola su intensidad con xs_vec_len, nos devolvera 500, dado que los vectores del HL Engine fueron diseñados asi, quien sabe porque magicamente ocurrira, es uno de los muchos misterios de la matematica. // Ahora, la fuerza/potencia/intensidad del vector de velocidad, sera 500. // Finalmente, ya tenemos el vector preparado. // Este empujara a cualquier entidad, a la distancia entre "la cruz azul y la roja" con una potencia de 500 centimetros. // Ahora, vamos a setearle la velocidad a la cruz negra: entity_set_vector(IdDelPlayerDeLaCruzNegra, EV_VEC_velocity, vecDirection) // Los entvars de velocidad de la entidad fueron modificados al vector fabricado. // El resultado, pueden verlo en un dibujo mostrado justo abajo de esta linea: Finalmente, ese seria el resultado. El player de la cruz negra sera lanzado a los calculos ya dichos repetidas veces. 2. Obtener el angulo requerido para mirar a un cierto punto Para esto, usaremos como base el minitut del punto 1. Aqui explicaremos, de una forma facilisima, como hacer que unos angulos miren directamente a una coordenada cualquiera. Simplemente, 4 lineas: // vecOrigin es el vector de la posicion del jugador // vecTarget es la posicion a la cual queremos mirar new Float:vecAngles[3] // El vector que guardara los angulos xs_vec_sub(vecTarget, vecOrigin, vecAngles) // la direccion de el player al punto que queremos obtener xs_vec_normalize(vecAngles, vecAngles) // reseteamos el vector de velocidad a su valor minimo vector_to_angle(vecAngles, vecAngles) // Aqui es la parte interesante. // vector_to_angle, les hara todo el trabajo, de transformar el vector de direccion, en un angulo, *cosa que no son lo mismo* // Ya tenemos los angulos recien salidos del horno, ahora, debemos aplicarlo a la entidad // Si es a un Player: entity_set_vector(IdDelPlayer, EV_VEC_v_angle, vecAngles) // Modificamos el entvar "v_angle" el cual da a saber los angulos "de vista" entity_set_int(IdDelPlayer, EV_INT_fixangles, 1) // Esto es requerido en los players al momento de cambiar sus angulos. Esto hara que para el proximo frame, se actualizen los nuevos angulos. // Si es a una Entidad (<32) entity_set_vector(IdDeLaEntidad, EV_VEC_angles, vecAngles) // Modificamos el entvar "angles" el cual da a saber los angulos ordinarios de una entidad comun, tanto como a un player.Ahora estoy cansado, mañana continuo con esto. Cualquier pregunta sera respondida, es un tema que manejo bien .6 puntos -
[Tutorial] Contraseña con botones
Gasti reaccionó a Sr.Retry.- por un tema
Hola, a pedido de Topline explico como crear una contraseña con botones, estilo surf_ninja. Bueno para no hacerlo tan largo voy a hacerlo de 6 botones. 1 | 2 | 3 | 4 | 5 | 6. La contraseña va a ser 4632 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Vamos a empezar con los botones. Les voy a poner nombres fáciles, y en target hay que ponerle en todos la misma entidad, MENOS el primer número de la contraseña. Botones: Botón 1: Name: but1 Target: reset Botón 2: Name: but2 Target: reset Botón 3: Name: but3 Target: reset Botón 4: Name: but4 Target: level2 <-- Botón 5: Name: but5 Target: reset Botón 6: Name: but6 Target: reset Okey, ya tenemos los botones, ahora vamos a agregar los milagrosos trigger_changetarget, que hacen que podamos cambiarle el target a una entidad. A los changetarget los vamos a dividir en 3 sets. Los que provocan que se conecten todas los botones (set 1) Los que hacen que no podamos tocar el mismo botón (set 2) Los que hacen que no se pueda saltear botones (set 3) Trigger_Changetarget Set 1: Changetarget 1: Name: level2 <-- Lo que habíamos puesto en el botón 4. Target: but6 <-- Esto afecta al botón 6 y le asigna un nuevo target: New Target: level3 Changetarget 2: Name: level3 Target: but3 <-- El botón que le sigue al 6 en la contraseña. New Target: level4 Changetarget 3: Name: level4 Target: but2 New Target: level5 Con esto terminamos el set 1. Trigger_Changetarget Set 2: Changetarget 1: Name: level3 Target: but6 New Target: reset Pausa: Seguro tienen una duda... ¿Para que es esto? Esto hace que desde el "level3" no se pueda volver a activar el botón 6, y que se resetee. Porque sino podríamos presionar el 6 tantas veces como uno quiera y es lo mismo. 4632 = 466666632 = 4666666666666666632. Changetarget 2: Name: level4 Target: but3 New Target: reset Changetarget 3: Name: level5 Target: but2 New Target: reset Trigger_Changetarget Set 3: Changetarget 1: Name: reset Target: but6 New Target: reset Changetarget 2: Name: reset Target: but3 New Target: reset Changetarget 3: Name: reset Target: but2 New Target: reset Tenemos todo listo, fijense que los changetargets siempre afectan a los numeros de la contraseña (menos el primero). 4 - 632 en este caso. El paso final es crear un multi_manager con el nombre del último "level" multi_manager Name: level5 Apretan "SmartEdit" Click en "add" Atributo: (nombre de la entidad a activar) Value: 0 Apretan "SmartEdit" otra vez Click en "add" Atributo: reset Value: 0.1 Con eso tienen la contraseña lista, bueno com lo hize medio apurado no me salio muy bien, además que estoy medio dormido xD.1 punto -
Proximamente tendriamos que pactar un par de cosas con P'erita y ya lo mandamos.1 punto
-
[Pedido] Prefabs originales de Valve Hammer Editor
_ZodraK_1709396373 reaccionó a Intoxx por un tema
http://www.mediafire.com/?ggkqv1ufcg0va4v Prefabs originales y algun qe otro mas1 punto -
ee un trigger_hurt creo, solo que donde pones el damage, lo pones negativo, osea, -10, te daria 10 de hp1 punto
-
1 punto
-
Bueno, en este tutorial les vengo a enseñar a hacer camaras como las que aparecen en el mapa cs_assault. Como veran, yo tengo mi mapa terminado, con una habitacion con una ventana y una pantalla adentro, luces y un spawn para cada equipo. Bueno, empecemos. Agarramos la herramienta de creacion de entidades (el foco) y hacemos una entidad “trigger_camera” donde queramos que la camara este colocada. Vamos a las propiedades de la entidad y cambiamos lo siguiente: Name: cam_01 Target: pov_01 Ahora hacemos una entidad “info_target” en la direccion que queramos que la camara vea. Es decir, se veria algo como esto: A esta entidad “info_target” le cambiamos algunas propiedades... Name: pov_01(esto significa que tiene que concordar con el valor de la propiedad Target del trigger_camera) Ya tenemos nuestra camara lista, ahora necesitamos algo que nos permita ver por ella. Ahora hacemos un monitor/pantalla/lo-que-sea y teniendolo seleccionado, presionamos CTRL+T. Esto transforma al solido en una entidad. Escogemos la entidad “func_button” y cambiamos las propiedades.. Target: cam_01(debe coincidir con el valor de la propiedad Name del trigger_camera) Ahora, estando en las propiedades del func_button, vamos a la pestaña FLAGS y tildamos “Don’t Move”. Ya tenemos nuestra camara hecha! Disfruten!1 punto
Esta tabla de líderes esta establecida para Argentina - Buenos Aires/GMT-03:00

