AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting (https://forums.alliedmods.net/forumdisplay.php?f=107)
-   -   Solved [TF2][HELP] How to detect market garden (https://forums.alliedmods.net/showthread.php?t=331670)

J0BL3SS 04-01-2021 05:29

[TF2][HELP] How to detect market garden
 
Im trying to detect market garden via SDKHooks. The code I made works in a sketchy way, sometimes it can detect it, but sometimes even if it does not detect it at all, but its still counts a market garden.

Code:

public Action Hook_OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &weapon, float damageForce[3], float damagePosition[3], int damagecustom)
{
    if(IsValidClient(victim) && IsValidClient(attacker) && victim != attacker)
    {
           
        if(GetEntProp(weapon, Prop_Send, "m_iItemDefinitionIndex") == 416)
        {
                if(TF2_IsPlayerInCondition(attacker, TFCond_BlastJumping))
                {
                        // its a market garden, do things
                }
                else if(damagetype & DMG_CRIT || damagetype == DMG_CRIT)
                {
                        // its a market garden, do things
                }
        }
    }
    return Plugin_Continue;
}


PC Gamer 04-03-2021 03:10

Re: [TF2][HELP] How to detect market garden
 
You'll need to provide more information on what you are trying to accomplish.

When do you want to check for the Market Garden? When it is equipped? When it is the active weapon? When it does damage? When somebody dies?

If the player has a Market Garden, then what?

The code you provided only detects when a player actively using the Market Garden does damage while rocket jumping OR when the player does critical damage with the Market Garden.

StrikeR14 04-04-2021 15:59

Re: [TF2][HELP] How to detect market garden
 
I'd use:

PHP Code:

bool InMarketAir[MAXPLAYERS+1];

public 
void OnPluginStart()
{
      
HookEvent("rocket_jump"RocketJumpedEventHookMode_Pre);
      
HookEvent("rocket_jump_landed"RocketJumpLandedEventHookMode_Post);
}

...

public 
Action RocketJumped(Handle event, const char[] namebool dontBroadcast)
{
    
InMarketAir[GetClientOfUserId(GetEventInt(event"userid"))] = true;
    return 
Plugin_Continue;
}

public 
Action RocketJumpLanded(Handle event, const char[] namebool dontBroadcast)
{
    
InMarketAir[GetClientOfUserId(GetEventInt(event"userid"))] = false;
    return 
Plugin_Continue;



On your SDK TakeDamage event, use if (InMarketAir[attacker]) with your m_iItemDefinitionIndex checks.

ThatKidWhoGames 04-04-2021 18:38

Re: [TF2][HELP] How to detect market garden
 
Quote:

Originally Posted by StrikeR14 (Post 2743015)
I'd use:

PHP Code:

bool InMarketAir[MAXPLAYERS+1];

public 
void OnPluginStart()
{
      
HookEvent("rocket_jump"RocketJumpedEventHookMode_Pre);
      
HookEvent("rocket_jump_landed"RocketJumpLandedEventHookMode_Post);
}

...

public 
Action RocketJumped(Handle event, const char[] namebool dontBroadcast)
{
    
InMarketAir[GetClientOfUserId(GetEventInt(event"userid"))] = true;
    return 
Plugin_Continue;
}

public 
Action RocketJumpLanded(Handle event, const char[] namebool dontBroadcast)
{
    
InMarketAir[GetClientOfUserId(GetEventInt(event"userid"))] = false;
    return 
Plugin_Continue;



On your SDK TakeDamage event, use if (InMarketAir[attacker]) with your m_iItemDefinitionIndex checks.

Not saying it won’t work, however, they already attempted to check if they were in the condition that is applied while rocket jumping.

StrikeR14 04-05-2021 17:26

Re: [TF2][HELP] How to detect market garden
 
Quote:

Originally Posted by ThatKidWhoGames (Post 2743024)
Not saying it won’t work, however, they already attempted to check if they were in the condition that is applied while rocket jumping.

True, but I've been using this snippet for a couple of years without any of the troubles the author stated.

J0BL3SS 05-02-2021 04:10

Re: [TF2][HELP] How to detect market garden
 
Quote:

Originally Posted by StrikeR14 (Post 2743015)
I'd use:

PHP Code:

bool InMarketAir[MAXPLAYERS+1];

public 
void OnPluginStart()
{
      
HookEvent("rocket_jump"RocketJumpedEventHookMode_Pre);
      
HookEvent("rocket_jump_landed"RocketJumpLandedEventHookMode_Post);
}

...

public 
Action RocketJumped(Handle event, const char[] namebool dontBroadcast)
{
    
InMarketAir[GetClientOfUserId(GetEventInt(event"userid"))] = true;
    return 
Plugin_Continue;
}

public 
Action RocketJumpLanded(Handle event, const char[] namebool dontBroadcast)
{
    
InMarketAir[GetClientOfUserId(GetEventInt(event"userid"))] = false;
    return 
Plugin_Continue;



On your SDK TakeDamage event, use if (InMarketAir[attacker]) with your m_iItemDefinitionIndex checks.

Used this to detect rocket jump, thanks it works very accurate now


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

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