View Single Post
Author Message
manicogaming
AlliedModders Donor
Join Date: Aug 2014
Old 02-01-2021 , 12:54   [CS:GO] What makes this function lag the server?
Reply With Quote #1

When using this function in OnPlayerRunCmd it makes the server fps drop to 10 in some maps, what could be the cause of it?

Also these functions are SDKCalls:
  • LookupBone -> CBaseAnimating::LookupBone
  • GetBonePosition -> CBaseAnimating::GetBonePosition
  • BotIsVisible -> CCSBot::IsVisible

PHP Code:
float[] SelectBestTargetPos(int clientint &iBestEnemy)
{
    
float fMyPos[3];
    
GetClientAbsOrigin(clientfMyPos);
    
    
float fTargetPos[3];
    
float fClosestDistance 999999999999999.0;
    
    
int iActiveWeapon GetEntPropEnt(clientProp_Send"m_hActiveWeapon");
    
int iDefIndex;
    if (
iActiveWeapon != -1)
    {
        
iDefIndex GetEntProp(iActiveWeaponProp_Send"m_iItemDefinitionIndex");
    }
    
    for (
int i 1<= MaxClientsi++)
    {
        if (
== client)
            continue;
        
        if (!
IsClientInGame(i))
            continue;
        
        if (!
IsPlayerAlive(i))
            continue;
        
        if (
GetEntProp(iProp_Send"m_bGunGameImmunity"))
            continue;
        
        if (
GetClientTeam(i) == GetClientTeam(client))
            continue;
        
        if (!
IsTargetInSightRange(clienti))
            continue;
        
        
int iBone LookupBone(i"head_0");
        if (
iBone 0)
            continue;
        
        
float fHead[3], fBad[3];
        
GetBonePosition(iiBonefHeadfBad);
        
        
fHead[2] += 2.0;
        
        if (
BotIsVisible(clientfHeadfalse, -1))
        {
            
g_bIsHeadVisible[client] = true;
        }
        else
        {
            
bool bVisibleOther false;
            
            
//Head wasn't visible, check other bones.
            
for (int b 0<= sizeof(g_szBoneNames) - 1b++)
            {
                
iBone LookupBone(ig_szBoneNames[b]);
                if (
iBone 0)
                    continue;
                
                
GetBonePosition(iiBonefHeadfBad);
                
                if (
BotIsVisible(clientfHeadfalse, -1))
                {
                    
g_bIsHeadVisible[client] = false;
                    
bVisibleOther true;
                    break;
                }
            }
            
            if (!
bVisibleOther)
                continue;
        }
        
        
float fEnemyPos[3];
        
GetClientAbsOrigin(ifEnemyPos);
        
        
float fDistance GetVectorDistance(fEnemyPosfMyPostrue);
        if (
fDistance fClosestDistance)
        {
            
fClosestDistance fDistance;
            
fTargetPos fHead;
            
            
iBestEnemy i;
            
            if (
iDefIndex == || iDefIndex == 11 || iDefIndex == 38 || iDefIndex == 40)
            {
                
g_bCanAttack[client] = true;
            }
            else
            {
                
CreateTimer(0.18Timer_AttackGetClientUserId(client));
            }
        }
    }
    
    return 
fTargetPos;

__________________
manicogaming is offline