AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Solved Detect distance between Players (https://forums.alliedmods.net/showthread.php?t=316757)

Saint Sinner 06-08-2019 15:55

Detect distance between Players
 
I want to detect distance between Id and another players...But something is wrong here

Code:

public client_PreThink(id)
{
    new Float:myOrigin[ 3 ], Float:hisOrigin[ 3 ];
   
    new Float:fDistance 

    pev( id, pev_origin, myOrigin )

    for(new i = 1 ; i <= maxplayers; i++)
    {
        pev(i, pev_origin, hisOrigin)
        fDistance = get_distance_f( myOrigin, hisOrigin)

        if( fDistance <= 62.0)
        {
            client_print(id , print_center, "Distance to entity: %.2f", fDistance )
        }

    }
}


E1_531G 06-08-2019 15:58

Re: Detect distance between Players
 
You do not check if player (variable with name i ) is connected.

CrazY. 06-08-2019 16:21

Re: Detect distance between Players
 
Code:

if (i == id) continue;

Natsheh 06-08-2019 16:45

Re: Detect distance between Players
 
PHP Code:

public client_PreThink(id)
{
    if(!
is_user_alive(id)) return;
    static 
Float:myOrigin], Float:hisOrigin], players[32], szName[32], playeripnumFloat:fDistance;
    
pevidpev_originmyOrigin )

    
get_players(playerspnum"ah");
    for(
pnumi++)
    {
        
player players[i];

        if(
player == id) continue;
        
pev(playerpev_originhisOrigin)
        
fDistance get_distance_fmyOriginhisOrigin)

        if( 
fDistance <= 62.0)
        {
            
get_user_name(playerszName31);
            
client_print(id print_center"Distance to player entity(%s): %.2f"szNamefDistance)
        }

    }


using static instead of new much better in a forward called each fps.

Saint Sinner 06-11-2019 08:43

Re: Detect distance between Players
 
Now i have this error...I want to disable distance if player in my team

L 06/11/2019 - 14:29:47: [AMXX] Displaying debug trace (plugin "head.amxx", version "1.0")
L 06/11/2019 - 14:29:47: [AMXX] Run time error 10: native error (native "cs_get_user_team")
L 06/11/2019 - 14:29:47: [AMXX] [0] head.sma::client_PreThink (line 51)

this line : if (cs_get_user_team(id) == cs_get_user_team(i))

Code:

public client_PreThink(id)
{
    if(!is_user_alive(id)) return 1;

    static Float:myOrigin[ 3 ], Float:hisOrigin[ 3 ], Float:fDistance, szName[32]

    if( get_pcvar_num(active) )
    {
        pev( id, pev_origin, myOrigin )

        for(new i = 1 ; i <= maxplayers; i++)
        {
            if (i == id) continue;

            if (cs_get_user_team(id) == cs_get_user_team(i))
            {
                return PLUGIN_CONTINUE
            }

            if (is_user_connected(i))
            {
                pev(i, pev_origin, hisOrigin)
                fDistance = get_distance_f( myOrigin, hisOrigin)

                get_user_name(id, szName, charsmax(szName))

                if(equal(szName, "Headshoot"))
                {
                    if( fDistance <= get_pcvar_num(Attack_Distance))
                    {
                        if( get_pcvar_num(stab))
                        {
                            HeadShoot[ id ] = true;
                        }
                        else if( get_pcvar_num(slash))
                        {
                            HeadShoot[ id ] = true;
                        }
                    }
                }
            }
        }
    }
    return PLUGIN_HANDLED
}


JocAnis 06-11-2019 09:13

Re: Detect distance between Players
 
put is_user_connected( i ) before checking his team? even better put is_user_alive there

also if you are using returns PLUGIN_HANDLED and PLUGIN_CONTINUE, then no 'need' for return 1/0

Natsheh 06-11-2019 09:39

Re: Detect distance between Players
 
No don't put anything use get_players instead and what are you trying to achieve? There might be another (better)way without the need of use prethink

Saint Sinner 06-11-2019 10:13

Re: Detect distance between Players
 
I want to detect distance for example

If i am TERO detect CT distance
If i am CT detect TERO distance

How can do that?

Code:

#include <amxmodx>
#include <fakemeta>
#include <engine>


public client_PreThink(id)
{
    if(!is_user_alive(id)) return;
    static Float:myOrigin[ 3 ], Float:hisOrigin[ 3 ], players[32], szName[32], player, i, pnum, fDistance;
    pev( id, pev_origin, myOrigin )

    get_players(players, pnum, "ah");
    for(i = 0 ; i < pnum; i++)
    {
        player = players[i];

        if(player == id) continue;
        pev(player, pev_origin, hisOrigin)
        fDistance = get_distance_f( myOrigin, hisOrigin)

        if( fDistance <= 62.0)
        {
            get_user_name(player, szName, 31);
            client_print(id , print_center, "Distance to player entity(%s): %.2f", szName, fDistance)
        }

    }
}


Natsheh 06-11-2019 10:30

Re: Detect distance between Players
 
PHP Code:

#include <amxmodx>
#include <fakemeta>
#include <engine>


public client_PreThink(id)
{
    if(!
is_user_alive(id)) return;
    static 
Float:myOrigin], Float:hisOrigin], players[32], szName[32], playeripnumFloat:fDistance;
    
pevidpev_originmyOrigin );
    
get_players(playerspnum"ahe"get_user_team(id) == "CT":"TERRORIST");
    for(
pnumi++)
    {
        
player players[i];

        
pev(playerpev_originhisOrigin)
        
fDistance get_distance_fmyOriginhisOrigin)

        if( 
fDistance <= 62.0)
        {
            
get_user_name(playerszName31);
            
client_print(id print_center"Distance to player entity(%s): %.2f"szNamefDistance)
        }

    }


Here you go..

I forgot to add the Float tag to fDistance in previous code.

Saint Sinner 06-11-2019 11:36

Re: Detect distance between Players
 
thanks


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

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