Raised This Month: $ Target: $400
 0% 

Kills per round


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
muh
New Member
Join Date: Oct 2014
Old 10-12-2014 , 09:26   Kills per round
Reply With Quote #1

Hello
I want to make a plugin that prints a chat message at the end of a round with the total number of kills a player ever made on a server. My first attempt was to use get_user_stats, but if I use it at the end of a round I am not able to get the current number of kills. So I thought I could remember this number and add to this number every round the number of kills a player made. I tried it with get_user_frags, but this also includes teamkills, defuse a bomb, etc. I only want to know how many enemies a player killed in 1 round. How can I get this number? Or is there any other solution how I can get the total number of kills a player ever made on a server at the end of every round?
muh is offline
HamletEagle
AMX Mod X Plugin Approver
Join Date: Sep 2013
Location: Romania
Old 10-12-2014 , 09:36   Re: Kills per round
Reply With Quote #2

Create a variable like playerKills[ 33 ] and hook the death event, increase the counter and print it when you need.
__________________

Last edited by HamletEagle; 10-12-2014 at 09:36.
HamletEagle is offline
HENNESSY
Member
Join Date: Sep 2013
Location: Russian Federation, Bela
Old 10-12-2014 , 09:42   Re: Kills per round
Reply With Quote #3

Here you go (not tested)

PHP Code:
#include < amxmodx >

new g_iKills33 ];
new 
g_iMaxPlayers;

public 
plugin_init( )
{
    
register_logevent"LogEvent_RoundEnd"2"1=Round_End" );
    
register_logevent"LogEvent_RoundStart"2"1=Round_Start" );
    
    
register_event"DeathMsg""Event_DeathMsg""a" );
    
    
g_iMaxPlayers get_maxplayers( );
}

public 
LogEvent_RoundEnd( )
{
    new 
iBest 0;
    
    for( new 
1<= g_iMaxPlayers; ++)
    {
        if( !
is_user_connected) )
            continue;
            
        if( 
g_iKills] > g_iKillsiBest ] )
        {
            
iBest i;
        }
    }
    
    new 
szName32 ];
    
get_user_nameiBestszNamecharsmaxszName ) );
    
    
client_print0print_chat"%s did the most kills this round."szName );
}

public 
LogEvent_RoundStart( )
{
    
arraysetg_iKills032 );
}

public 
Event_DeathMsg( )
{
    new 
iKiller read_data);
    new 
iVictim read_data);
    
    if( 
iKiller == iVictim || get_user_teamiKiller ) == get_user_teamiVictim ) )
        return;
    
    ++
g_iKillsiKiller ];


Last edited by HENNESSY; 10-12-2014 at 09:46. Reason: Didn't read half of his post
HENNESSY is offline
Shlomi
Junior Member
Join Date: Oct 2013
Old 10-12-2014 , 15:18   Re: Kills per round
Reply With Quote #4

Quote:
Originally Posted by HENNESSY View Post
Here you go (not tested)

PHP Code:
#include < amxmodx >

new g_iKills33 ];
new 
g_iMaxPlayers;

public 
plugin_init( )
{
    
register_logevent"LogEvent_RoundEnd"2"1=Round_End" );
    
register_logevent"LogEvent_RoundStart"2"1=Round_Start" );
    
    
register_event"DeathMsg""Event_DeathMsg""a" );
    
    
g_iMaxPlayers get_maxplayers( );
}

public 
LogEvent_RoundEnd( )
{
    new 
iBest 0;
    
    for( new 
1<= g_iMaxPlayers; ++)
    {
        if( !
is_user_connected) )
            continue;
            
        if( 
g_iKills] > g_iKillsiBest ] )
        {
            
iBest i;
        }
    }
    
    new 
szName32 ];
    
get_user_nameiBestszNamecharsmaxszName ) );
    
    
client_print0print_chat"%s did the most kills this round."szName );
}

public 
LogEvent_RoundStart( )
{
    
arraysetg_iKills032 );
}

public 
Event_DeathMsg( )
{
    new 
iKiller read_data);
    new 
iVictim read_data);
    
    if( 
iKiller == iVictim || get_user_teamiKiller ) == get_user_teamiVictim ) )
        return;
    
    ++
g_iKillsiKiller ];

you can avoid hooking new round and reset your array when the round ends, after you printed what you've wanted.
Shlomi is offline
HENNESSY
Member
Join Date: Sep 2013
Location: Russian Federation, Bela
Old 10-13-2014 , 14:58   Re: Kills per round
Reply With Quote #5

Quote:
Originally Posted by Shlomi View Post
you can avoid hooking new round and reset your array when the round ends, after you printed what you've wanted.
When admin restarts the round the event isn't called.

Last edited by HENNESSY; 10-13-2014 at 14:58.
HENNESSY is offline
muh
New Member
Join Date: Oct 2014
Old 10-12-2014 , 19:49   Re: Kills per round
Reply With Quote #6

Quote:
Originally Posted by HENNESSY View Post
Here you go (not tested)

PHP Code:
#include < amxmodx >

new g_iKills33 ];
new 
g_iMaxPlayers;

public 
plugin_init( )
{
    
register_logevent"LogEvent_RoundEnd"2"1=Round_End" );
    
register_logevent"LogEvent_RoundStart"2"1=Round_Start" );
    
    
register_event"DeathMsg""Event_DeathMsg""a" );
    
    
g_iMaxPlayers get_maxplayers( );
}

public 
LogEvent_RoundEnd( )
{
    new 
iBest 0;
    
    for( new 
1<= g_iMaxPlayers; ++)
    {
        if( !
is_user_connected) )
            continue;
            
        if( 
g_iKills] > g_iKillsiBest ] )
        {
            
iBest i;
        }
    }
    
    new 
szName32 ];
    
get_user_nameiBestszNamecharsmaxszName ) );
    
    
client_print0print_chat"%s did the most kills this round."szName );
}

public 
LogEvent_RoundStart( )
{
    
arraysetg_iKills032 );
}

public 
Event_DeathMsg( )
{
    new 
iKiller read_data);
    new 
iVictim read_data);
    
    if( 
iKiller == iVictim || get_user_teamiKiller ) == get_user_teamiVictim ) )
        return;
    
    ++
g_iKillsiKiller ];

Well, that's not exactly what I wanted to do, but nevertheless it was very useful. Thanks!

Last edited by muh; 10-12-2014 at 19:51.
muh is offline
RateX
Veteran Member
Join Date: Jun 2012
Location: 0o. SEA .o0
Old 10-12-2014 , 09:48   Re: Kills per round
Reply With Quote #7

PHP Code:
arrayset 
Never seen this one before. Nice way to avoid looping.
PHP Code:
for( new 1<= g_iMaxPlayers; ++
This has been discussed many times, use get_players() instead.
RateX is offline
HENNESSY
Member
Join Date: Sep 2013
Location: Russian Federation, Bela
Old 10-12-2014 , 10:13   Re: Kills per round
Reply With Quote #8

Quote:
Originally Posted by RateX View Post
PHP Code:
arrayset 
Never seen this one before. Nice way to avoid looping.
PHP Code:
for( new 1<= g_iMaxPlayers; ++
This has been discussed many times, use get_players() instead.
what is the difference between my way to get_players( )?
HENNESSY is offline
HamletEagle
AMX Mod X Plugin Approver
Join Date: Sep 2013
Location: Romania
Old 10-12-2014 , 10:04   Re: Kills per round
Reply With Quote #9

arrayset is a loop too, but runs on a faster layer, cause it's from a module.
__________________
HamletEagle is offline
HamletEagle
AMX Mod X Plugin Approver
Join Date: Sep 2013
Location: Romania
Old 10-12-2014 , 10:25   Re: Kills per round
Reply With Quote #10

You way is much more slower and is not a good way. get_players exists for a reason, it also let you specify flags to filter the search.
__________________
HamletEagle is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 17:44.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode