Raised This Month: $ Target: $400
 0% 

Fix plugin which use RoundEnd LogEvent


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
FromTheFuture
Senior Member
Join Date: Jan 2013
Old 05-10-2013 , 09:18   Fix plugin which use RoundEnd LogEvent
Reply With Quote #1

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <work>
#include <client_data>
#include <cstrike>

#define PLUGIN "OptimizeTeams"
#define VERSION "1.0"
#define AUTHOR "FromTheFuture"

#define MAXLIMIT 40.0
#define MINLIMIT 30.0

#define PLLIMIT 1
#define PLMAXLIMIT 2

#define MAXPLS 32
#define CT 2
#define T 1

new boolg_iWasTransfered[33];

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_logevent("EvREnd"2"1=Round_End")
    
set_cvar_num("mp_autoteambalance"0);
}

public 
EvREnd()
{
    new 
    
iWinnerTeamiTFragsiTDeathsiCTFragsiCTDeaths
    
FloatfTPercentFloatfCTPercentFloatfCalcLimit,
    
iTCountiCTCountFloatflLimit MINLIMIT;

    for (new 
id 1id <= MAXPLSid++)
    {
        if(
is_user_connected(id))
        {
            
            if(
cd_get_user_team(id) == 1)
            {
                
iTFrags += get_real_frags(id);
                
iTDeaths  += get_real_deaths(id);
                
iTCount++;
            }
            else
            if(
cd_get_user_team(id) == 2)
            {
                
iCTFrags += get_real_frags(id);
                
iCTDeaths += get_real_deaths(id);
                
iCTCount++;
            }
        }
    }
    
    
iCTFrags Invert(iCTFrags);
    
iTFrags Invert(iTFrags);
    
iTDeaths Invert(iTDeaths);
    
iCTDeaths Invert(iCTDeaths);
    
    
fTPercent floatiTDeaths iTFrags ) * 100;
    
fCTPercent floatiCTDeaths iCTFrags ) * 100;
    
    if ( 
fTPercent fCTPercent )
    {
        
fCalcLimit fTPercent fCTPercent;
        
iWinnerTeam CT;
    }
    
    else
    if ( 
fTPercent fCTPercent)
    {
        
fCalcLimit fCTPercent fTPercent;
        
iWinnerTeam T;
    }
    else
        return;

    if( 
iCTCount iTCount >= PLLIMIT)
    {
            if( 
iWinnerTeam == )
            {    if( 
iCTCount iTCount >= PLMAXLIMIT
                return;
                else
                
flLimit MAXLIMIT;
            }
    }
    else
    if( 
iTCount iCTCount >= PLLIMIT)
    {
            if( 
iWinnerTeam == CT )
            {
                if( 
iTCount iCTCount >= PLMAXLIMIT)
                return;
                else
                
flLimit MAXLIMIT;
            }
    }

    if (
fCalcLimit >= flLimit)
        
TransferFromTeam(iWinnerTeam);
}

public 
client_disconnect(id)
{
    
g_iWasTransfered[id] = false;
}

TransferFromTeam(iWinnerTeam)
{
    new 
iMaxFragsiIDplayeriIDPrev
    
    for (new 
id 1id <= MAXPLSid++)
    {
        if(
is_user_connected(id))
        {
            if(
cd_get_user_team(id) == iWinnerTeam && !g_iWasTransfered[id])
            {
                if(
iMaxFrags get_real_frags(id))
                {
                    
iMaxFrags get_real_frags(id);
                    
iIDPrev iIDplayer;
                    
iIDplayer id;
                }
            }
        }
    }
    
    if(
iIDPrev
        
iIDplayer iIDPrev
    
    if(
is_user_connected(iIDplayer))
    {
            if(
is_user_alive(iIDplayer)) 
                
user_silentkill(iIDplayer);

            
cs_set_user_team(iIDplayeriWinnerTeam == CS_TEAM_CT CS_TEAM_T);
            
g_iWasTransfered[iIDplayer] = true;
            
ShowMessage(iIDplayer);
    }
}

ShowMessage(id)
{
    new 
szName[32];
    
cd_get_user_name(idszName31);
    
client_print(0print_chat"%s was transferred to different team."szName )
}

/* 0/0 = Error. */
Invert(value)
{
    return 
value <= value;

This plugin for team balance.
I don't know why, but sometimes in RoundEnd, function "TransferFromTeam" called many many times and lot of players was transfer to spectators.
Help me to fix it, please.
It's problem can be called because of pausecfg.amxx?
FromTheFuture 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 10:49.


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