Jump to content
This Topic
Conéctate para seguir esto  
Oops!

[TUT] DeathMsg

Recommended Posts

2 posts en este tema

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.

Compartir este post


Enlace al post
Compartir en otros sitios

Registra una cuenta o conéctate para comentar

Debes ser un miembro de la comunidad para dejar un comentario

Conéctate para seguir esto  

×