Ir al contenido

[TUT] DeathMsg


Oops!

Posts recomendados

REGISTRAR MUERTE DE UN PLAYER

 

Un tutorial simple para registrar la muerte de un player. Hay otras formas de hacerlo, pero para empezar creo que esta es la más fácil.

Spoiler
register_event(const event[],const function[],const flags[],const cond[]="", ... )

@param 1: nombre del "event"; en nuestro caso es "DeathMsg"

@param 2: nombre de la función que va a ser llamada cuando se produzca una muerte

@param 3: son los atributos del event a registrar. Los flags son estos:

* "a" - se envía a todos los players
* "b" - se envía a un solo player
* "c" - se envía a varios players, pero no a todos
* "d" - se envía sólo a los players muertos
* "e" - se envía sólo a los players vivos

@param 4: son las condiciones del event, que sirven para "filtrar" información antes de que se llame a la función (ver ejemplo debajo)

Los ... significan que puede haber más de una condición.

Ahora, yendo específicamente al event de muerte, se usaría así:

Spoiler
register_event("DeathMsg", "death", "a") //en este caso no ponemos condiciones

 

Para poner condiciones, primero tenemos que conocer los parámetros del event "DeathMsg" Acá https://wiki.alliedmods.net/Half-life_1_game_events] podés ver todos los events y sus parámetros):

Spoiler
@param 1: KillerID (id del atacante; integer). Puede ser un player o no. En el caso último, la id = 0 (cuando muere por una caída, ácido, fuego, tocar una entidad "trigger_hurt" como en los mapas deathrun_, etc.)

@param 2: VictimID (id de la víctima; integer).

@param 3: IsHeadshot (integer). Si muere de headshot es 1, si no 0.
  
@param 4: TruncatedWeaponName (nombre de la entidad que causó la muerte, string). "Entidad" es gralmente un arma, pero también puede ser "worldspawn" o "trigger_hurt", "vehicle" cuando lo "pisás" con un vehículo, etc (en dichos casos @param 1 = 0)

 

 

Ejemplo: hagamos que cuando un player mate a otro de headshot, aparezca un mensaje informándolo (obvio que ya existe esto, pero es para saber cómo usar la función).

Code:

Spoiler
#include <amxmodx>

public plugin_init()
{
  	register_event("DeathMsg", "death", "a", "1>0", "3=1", "4!grenade") //aca se registra el event de muerte
}

public death() //aca indicamos lo que va a pasar
{
  	new killer, victim, vname[32], kname[32]
  	killer = read_data(1)
  	victim = read_data(2)
  	get_user_name(killer, kname, 31)
  	get_user_name(victim, vname, 31)
  	
  	client_print(0, print_chat, "[sv] %s mató a %s de un tiro en la cabeza", kname, vname)
}  
  	

Paso a explicar:

1- En el register_event, usamos la flag "a", porque lo que hace este event es mostrar el hud que aparece arriba a la derecha cuando muere alguien, y eso es algo que TODOS ven, y por lo tanto la flag no se puede cambiar.

2- También usamos 3 condiciones:

"1>0" : el 1er parámetro tiene que ser mayor a 0. Es decir, el atacante tiene que ser un player; si no la función no se ejecuta.

"3=1" : el 3er parámetro (IsHeadshot) tiene que ser igual a 1. Si no es headshot, vale 0 y no se ejecuta la función.

"4!grenade" : el nombre del arma tiene que ser distinto a "grenade", que es el nombre de la HE, ya que no se puede hacer headshot con una HE...

3- Dentro de la función death( ) creamos 4 variables: dos integers y dos arrays.

La función read_data( ) devuelve el valor del parámetro en cuestión. En este caso, read_data(1) devuelve la id del atacante.

4- get_user_name( ) se usa para obtener el nombre del usuario, en este caso tanto del atacante como de la víctima.

@param 1: id del usuario

@param 2: nombre de la variable que guarda el nombre 

@param 3: la cantidad de slots del array; 31 porque es la cantidad máxima de caracteres que puede tener un name. (los slots se cuentan de 0 al 31)

5- client_print se usa para enviar un mensaje por chat:

@param 1: id del usuario. Cuando está en 0 se envía a todos.   

@param 2: tipo de chat, "print_chat" es el chat donde todos escribimos. Hay otros tipos, como "print_center", que aparece en el medio (como cuando activás el burst de la famas o la glock)

@param 3: el mensaje que querés enviar. Los %s son reemplazados por palabras (conjunto de strings)

@param 4 y 5: para que los %s sean reemplazados cuando entrás al juego, tenés que especificar la(s) variable(s) que contienen esa información.

 

Espero haber sido claro, cualquier cosa avisar.

Enlace al comentario
Compartir en otros sitios

  • 2 semanas después...
  • Respuestas 1
  • Creado
  • Última respuesta

Top posteadores en este tema

Días populares

Invitado
Este tema se encuentra cerrado a nuevas respuestas.
  • Navegando Recientemente   0 miembros

    • No hay usuarios registrados viendo esta página
×
×
  • Crear nuevo...