Page 1 of 1

Event DeathMsg

Posted: 22 Jul 2013, 23:12
by munir
Descriere: In acest tutorial v`om invata ce face DeathMsg si la ce se foloseste el.

1. Cum se foloseste:

I. Introducerea lui in plugin_init
public plugin_init( )
{
register_event( "DeathMsg", "eDeathMsg", "a" );
}
In codul de mai sus, observam ca sunt 3 argumente.
1. "DeathMsg"
2. "eDeathMsg" - Numele publicului unde se executa event`ul.
3. "a" - Flag`ul
La flag, avem:

Code: Select all

"a" - global event.
"b" - specified.
"c" - send only once when repeated to other players.
"d" - call if is send to dead player.
"e" - to alive. 
In cazul nostru, avem flag`ul a care vine de la event global.
II. Cum il folosim in pluginuri.
Un exemplu simplu, sa zicem ca vrem dupa ce moare un jucator, sa ii de`a kick. (mai simplu, victima.)

Code: Select all

#include < amxmodx >

public plugin_init( )
{
	register_event( "DeathMsg", "eDeathMsg", "a" );
}
public eDeathMsg( )
{
	new v_Victim = read_data( 2 ); // Victima.
	server_cmd( "kick #%d", get_user_userid( v_Victim ) ); // Luam ID`ul jucatorului care tocmai a murit(victimei), si ii da`m kick.
}
Daca vreti sa aflati atacatorul, arma, si daca a fost headshot / sau nu victimei, aveti nevoie de:

Code: Select all

new v_Victim = read_data( 2 ); // Victima.
new tAttacker = read_data( 1 ) // Atacatorul
new tAttackerName[ 32 ];
get_user_name( tAttacker, tAttackerName, 31 ); // Aflam numele atacatorului
new tGun[ 32 ];
read_data( 4, tGun, sizeof( tGun ) -1 ); // Arma cu care a fost ucisa victima
new h_Headshot = read_data( 3 ); // OnlyHeadshot
Exemplu de plugin:
#include < amxmodx >

public plugin_init( )
{
register_event( "DeathMsg", "eDeathMsg", "a" );
}
public eDeathMsg( )
{
new v_Victim = read_data( 2 ); // Victima.
new tAttacker = read_data( 1 ) // Atacatorul
new tGun[ 32 ];
read_data( 4, tGun, sizeof( tGun ) -1 ); // Arma cu care a fost ucisa victima
new tAttackerName[ 32 ];
get_user_name( tAttacker, tAttackerName, 31 ); // Aflam numele atacatorului
new h_Headshot = read_data( 3 ); // OnlyHeadshot
client_print( v_Victim, print_chat, "Atacatorul: %s | Arma: %s | HitPlace: %s", tAttackerName, tGun, h_Headshot );

}

Re: Event DeathMsg

Posted: 27 Aug 2013, 16:15
by Cosmin
Bine explicat bravo

Re: Event DeathMsg

Posted: 03 Sep 2013, 02:17
by FaTzZu
Ai uitat de faptul ca acesta nu are parametrii :)

Re: Event DeathMsg

Posted: 04 Sep 2013, 22:42
by Samo
Tot observ chestiile astea :

Code: Select all

%s 
#%d
Ce sunt ele si la ce se folosesc?
@Sunt foarte , foarte incepator :))

Re: Event DeathMsg

Posted: 04 Sep 2013, 22:46
by munir
Samo wrote:Tot observ chestiile astea :

Code: Select all

%s 
#%d
Ce sunt ele si la ce se folosesc?
@Sunt foarte , foarte incepator :))
%s - string.
%d - integer. (retine un numar intreg)
http://www.extreamcs.com/forum/pluginur ... 07580.html

Re: Event DeathMsg

Posted: 17 Nov 2013, 09:11
by LordOfNothing
Sincer e inutil acum putem folosi Ham_Killed e mult mai codat si aflam victima si atacatorul mult mai usor ..

Code: Select all

public Hook_Ham_Killed(attacker,victim,shouldgib)
{

 // code !
}

Re: Event DeathMsg

Posted: 17 Nov 2013, 09:51
by KronoS eXtream
LordOfNothing wrote:Sincer e inutil acum putem folosi Ham_Killed e mult mai codat si aflam victima si atacatorul mult mai usor ..

Code: Select all

public Hook_Ham_Killed(attacker,victim,shouldgib)
{

 // code !
}
Sunt cazuri in care esti fortat sa folosesti DeathMsg, in loc de Ham_Killed.Pe langa asta, DeathMsg nu are nevoie de un modul in plus pentru a putea fi folosit.

Re: Event DeathMsg

Posted: 04 Jun 2017, 18:47
by Fuffy
Ca adaugire, modul corect de a inregistra deathmsg este asa:

Code: Select all

register_event( "DeathMsg" , "my_func", "be", "1!0", "4!world" );
Flag-urile 'be' - sa trimitem doar jucatorilor in viata ( scoateti 'e' daca aveti nevoie sa luati si id-ul victimei ).

4!world - verificam daca modelul armei nu e world - daca nu exista arma ( s-a sinucs, s-a aruncat de la distanta mare sau si-a schimbat echipa ) , atunci cand nu exista nici-o arma deathmsg returneaza string-ul 'world' verificam daca 4 nu e world, mai trebuie doar sa faceti un handle in functie ca sa verificati daca nu s-a sinucis singur cu o grenada.