Raised This Month: $51 Target: $400
 12% 

Combining 2 plugins problem.


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
tomy77
New Member
Join Date: Jun 2014
Old 06-09-2021 , 02:26   Combining 2 plugins problem.
Reply With Quote #1

Hello everybody, how are you?
This is the situation: I want to combine 2 diferent plugins. I have made it succesfully, but in game just only 1 of them works. Depending on what I write on the "plugin_init" part, it works the one or the other, but never both of the plugins.
Here the plugins:
jb_trainer:
PHP Code:
#include <amxmodx>
#include <fakemeta>
//#include <colorchat> // if using reklam (what can be enabled by REKLAM_TIME in config) - this line must be activated

// =============================== CONFIG START ===============================
#define DISTANCE_BELOW 0.031250 // distance under ground on what you still can walk and do jb (total vertical available distance for jb is 2.0 units) [not suggesting to change this - it's just for information]
#define REKLAM_TIME 0 // time in seconds for reklaming "say /jbtrainer to enable/disable..." (value lower or equal 0 - reklam off) (I'm suggesting to use this in case disabled connect enabler and with value about 180.0 [3 minutes]) (enable colorchat.inc if using this)
#define MOD_NAME "[XJ]" // mod name when something is printed in chat

#define CONNECT_ENABLER // comment this to auto-disable jb trainer when client connects
#define USE_CUSTOM_SOUND // comment this to use vox "ow my god" sound (vox may not sound so good as you think) (sound is played only on challenge 100% or harder)

// ================================ CONFIG END ================================

#define PLUGIN_NAME    "Jb Trainer"
#define PLUGIN_VERSION    "1.5"
#define PLUGIN_AUTHOR    "Numb"

#if !defined _colorchat_included

/* part from colorchat.inc */

enum
{
    
proprint_console 0,
    
proprint_center,
    
proprint_chat,
};

ProPrint(idtype, const msg[], {Float,Sql,Result,_}:...)
{
    if( 
id!=&& !is_user_connected(id) )
        return 
0;
    
    new 
message[192];
    
vformat(message192msg4);
    
    if( 
id==)
    {
        new 
players[32], num;
        
get_players(playersnum);
        for( new 
ii<numi++ )
            
engfunc(EngFunc_ClientPrintfplayers[i], clamp(type02), message);
    }
    else
        
engfunc(EngFunc_ClientPrintfidclamp(type02), message);
    
    return 
1;
}

#endif

new g_iClientThinkNum[10][33];
new 
g_iClientThinks[33];
new 
bool:g_bJbStatsEnabled[33];
new 
bool:g_bJbBelow[33];

new 
g_iButton[33][2];
new 
g_iKeyTiming[33][2];
new 
bool:g_bInDmgFall[33];
new 
Float:g_fHadChance[33];
new 
Float:g_fUnhookableDistance;
new 
bool:g_bUnkownCondition;

new 
g_iOldButtonsg_iButtons;

#if defined USE_CUSTOM_SOUND
public plugin_precache()
    
precache_sound("misc/mod_excellent.wav");
#endif

public plugin_init()
{
    
register_plugin(PLUGIN_NAMEPLUGIN_VERSIONPLUGIN_AUTHOR);
    
    
register_clcmd("say /jbtrainer""clcmd_jbtrainer"ADMIN_ALL" - enables/disables jumpbug training statistics");
    
    
register_forward(FM_PlayerPreThink,  "FM_PlayerPreThink_Pre",   0);
    
register_forward(FM_PlayerPostThink"FM_PlayerPostThink_Post"1);
    
#if REKLAM_TIME > 0
    
set_task(minfloat(float(REKLAM_TIME), 60.0), "plugin_reklam"0""0"b");
#endif
}

#if REKLAM_TIME > 0
Float:minfloat(Float:ValueFloat:MinAllowed)
{
    if( 
MinAllowed>=Value )
        return 
MinAllowed;
    
    return 
Value;
}

public 
plugin_reklam()
    
ColorChat(0TEAM_COLOR"%s ^x01Type ^"^x04/jbtrainer^x01^" to enable/disable jumpbug training statistics."MOD_NAME);
#endif

public client_putinserver(iPlrId)
{
#if defined CONNECT_ENABLER
    
g_bJbStatsEnabled[iPlrId] = true;
#else
    
g_bJbStatsEnabled[iPlrId] = false;
#endif
    
g_iClientThinks[iPlrId] = 0;
    
set_task(0.1"set_client_tasks", (iPlrId*-1), ""0"a"10);
}

public 
client_disconnect(iPlrId)
{
    if( 
task_exists((iPlrId*-1)) )
        
remove_task((iPlrId*-1));
    
    for( new 
iTemp=1iTemp<11iTemp++ )
    {
        if( 
task_exists((iPlrId*iTemp)) )
            
remove_task((iPlrId*iTemp));
        else
            break;
    }
}

public 
set_client_tasks(iTaskId)
{
    new 
iParam[2], iPlrId = (iTaskId*-1);
    
iParam[0] = iPlrId;
    for( new 
iTemp=1iTemp<11iTemp++ )
    {
        if( !
task_exists((iPlrId*iTemp)) )
        {
            
iParam[1] = (iTemp-1);
            
g_iClientThinkNum[iParam[1]][iPlrId] = 0;
            
set_task(1.0"refresh_client_data", (iPlrId*iTemp), iParam2"b");
            break;
        }
    }
}

public 
clcmd_jbtrainer(iPlrId)
{
    if( 
g_bJbStatsEnabled[iPlrId] )
        
g_bJbStatsEnabled[iPlrId] = false;
    else
        
g_bJbStatsEnabled[iPlrId] = true;
    
    
client_print(iPlrIdprint_chat"%s Jump-Bug training statistics are now %sabled."MOD_NAME, (g_bJbStatsEnabled[iPlrId]?"en":"dis"));
    
client_print(iPlrIdprint_chat"%s To %sable them back type ^"/jbtrainer^"."MOD_NAME, (g_bJbStatsEnabled[iPlrId]?"dis":"en"));
}

public 
refresh_client_data(iParam[2])
{
    
g_iClientThinks[iParam[0]] = g_iClientThinkNum[iParam[1]][iParam[0]];
    
g_iClientThinkNum[iParam[1]][iParam[0]] = 0;
    
    static 
s_iPings_iUserChecks[33];
    
get_user_ping(iParam[0], s_iPings_iUserChecks[0]);
    
    if( 
s_iPing<=100 )
        
s_iUserChecks[iParam[0]] = 2;
    else
        
s_iUserChecks[iParam[0]]++;
    
    if( 
s_iUserChecks[iParam[0]]<// if use has ping higher than 100 we are showing statistics two times slower cuz we dont want him to lag like hell
        
return;
    else
        
s_iUserChecks[iParam[0]] = 0;
    
    if( 
is_user_alive(iParam[0]) )
        
show_data(iParam[0], iParam[0]);
    else if( 
is_specmode_valid(pev(iParam[0], pev_iuser1)) )
        
show_data(iParam[0], pev(iParam[0], pev_iuser2));
}

show_data(iSpectatoriJumpBugger)
{
    static 
Float:s_fVelocity[3];
    
pev(iJumpBuggerpev_velocitys_fVelocity);
    
    
s_fVelocity[2] *= -1.0;
        
    if( 
g_bJbStatsEnabled[iSpectator] && g_bInDmgFall[iJumpBugger] && !is_user_bot(iSpectator) )
    {
        
            
    }
    
    return 
1;
}

is_specmode_valid(iSpecMode)
    return ( 
iSpecMode==|| iSpecMode==|| iSpecMode==// || iSpecMode==6 );

/*
message_begin(MSG_ONE, get_user_msgid("TextMsg"), {0,0,0}, iPlrId);
write_byte(print_center);
write_string("#Spec_Mode1"); // "Locked Chase Camera" iuser1 = 1
write_string("#Spec_Mode2"); // "Free Chase Camera"   iuser1 = 2
write_string("#Spec_Mode3"); // "Free Look"           iuser1 = 3
write_string("#Spec_Mode4"); // "First Person"        iuser1 = 4
write_string("#Spec_Mode5"); // "Free Map OverView"   iuser1 = 5
write_string("#Spec_Mode6"); // "Chase Map Overview"  iuser1 = 6
message_end()
*/

public FM_PlayerPreThink_Pre(iPlrId)
{
    
g_iClientThinkNum[0][iPlrId]++;
    
g_iClientThinkNum[1][iPlrId]++;
    
g_iClientThinkNum[2][iPlrId]++;
    
g_iClientThinkNum[3][iPlrId]++;
    
g_iClientThinkNum[4][iPlrId]++;
    
g_iClientThinkNum[5][iPlrId]++;
    
g_iClientThinkNum[6][iPlrId]++;
    
g_iClientThinkNum[7][iPlrId]++;
    
g_iClientThinkNum[8][iPlrId]++;
    
g_iClientThinkNum[9][iPlrId]++;
    
    static 
Float:s_fClientOldSpeed[33];
    
    if( !
is_user_alive(iPlrId) || pev(iPlrIdpev_flags)&FL_ONGROUND || pev(iPlrIdpev_waterlevel)>=)
    {
        
g_fHadChance[0] = s_fClientOldSpeed[iPlrId];
        
s_fClientOldSpeed[iPlrId] = 0.0;
        
        if( 
g_bInDmgFall[iPlrId] )

        
        
g_iButton[iPlrId][0] = 0;
        
g_iButton[iPlrId][1] = 0;
        
        
g_bInDmgFall[iPlrId] = false;
        
g_fHadChance[iPlrId] = 0.0;
        
        
g_iKeyTiming[iPlrId][0] = 0;
        
g_iKeyTiming[iPlrId][1] = 0;
        
        return 
FMRES_IGNORED;
    }
    
    
g_iOldButtons pev(iPlrIdpev_oldbuttons);
    
g_iButtons pev(iPlrIdpev_button);
    
    if( 
g_iButton[iPlrId][0]<=)
    {
        if( 
g_iOldButtons&IN_DUCK && !(g_iButtons&IN_DUCK) )
        {
            
g_iKeyTiming[iPlrId][0] = -1;
            
g_iButton[iPlrId][0] = 1;
        }
    }
    if( 
g_iButton[iPlrId][0] )
        
g_iKeyTiming[iPlrId][0]++;
    if( 
g_iButtons&IN_DUCK )
        
g_iButton[iPlrId][0] = -1;
    
    if( 
g_iButton[iPlrId][1]<=)
    {
        if( !(
g_iOldButtons&IN_JUMP) && g_iButtons&IN_JUMP )
        {
            
g_iKeyTiming[iPlrId][1] = -1;
            
g_iButton[iPlrId][1] = 1;
        }
    }
    if( 
g_iButton[iPlrId][1] )
        
g_iKeyTiming[iPlrId][1]++;
    if( !(
g_iButtons&IN_JUMP) )
        
g_iButton[iPlrId][1] = -1;
    
    static 
Float:s_fVelocity[3];
    
pev(iPlrIdpev_velocitys_fVelocity);
    
    if( 
s_fVelocity[2]<=-500.0 )
    {
        
g_bInDmgFall[iPlrId] = true;
        
        if( 
pev(iPlrIdpev_flags)&FL_DUCKING )
        {
            static 
Float:s_fOrigin[3], Float:s_fOrigin2[3], Float:s_fUserOrigin[3];
            
pev(iPlrIdpev_origins_fOrigin);
            
s_fUserOrigin s_fOrigin;
            
            
g_fHadChance[0] = (36.0-2.0+DISTANCE_BELOW); //36.03125;
            
s_fOrigin2 s_fOrigin;
            
s_fOrigin2[2] -= (g_fHadChance[0]*2.0);
            
engfunc(EngFunc_TraceLines_fOrigins_fOrigin2DONT_IGNORE_MONSTERSiPlrId0);
            
s_fOrigin2[2] += g_fHadChance[0];
            
get_tr2(0TR_flFractions_fUserOrigin[0]);
            if( 
s_fUserOrigin[0]<=0.5 )
            {
                
get_tr2(0TR_vecEndPoss_fOrigin);
                
s_fOrigin[0] = (s_fOrigin[2]-s_fOrigin2[2]);
                
s_fOrigin[1] = (s_fOrigin2[2]-s_fOrigin[2]);
                
                if( 
s_fOrigin[0]<=(2.0-DISTANCE_BELOW) && s_fOrigin[0]>=0.0 )
                {
                    
g_bJbBelow[iPlrId] = false;
                    
g_fHadChance[iPlrId] = s_fOrigin[0];
                    
g_fHadChance[0] = (s_fVelocity[2]*-1.0);
                }
                else if( 
s_fOrigin[1]<=DISTANCE_BELOW && s_fOrigin[1]>=0.0 )
                {
                    
g_bJbBelow[iPlrId] = true;
                    
g_fHadChance[iPlrId] = s_fOrigin[1];
                    
g_fHadChance[0] = (s_fVelocity[2]*-1.0);
                }
                
/*else
                {
                    g_fHadChance[0] = s_fClientOldSpeed[iPlrId];
                    s_fClientOldSpeed[iPlrId] = 0.0;
                    
                    if( g_iButton[iPlrId][0] && g_iKeyTiming[iPlrId][0] )
                        g_iKeyTiming[iPlrId][0]--;
                    else
                        g_iButton[iPlrId][0] = 0;
                    
                    if( g_iButton[iPlrId][1] && g_iKeyTiming[iPlrId][1] )
                        g_iKeyTiming[iPlrId][1]--;
                    else
                        g_iButton[iPlrId][1] = 0;
                    
                    jb_failed(iPlrId, ((g_fHadChance[iPlrId]!=0.0)?false:true));
                    
                    g_bInDmgFall[iPlrId] = false;
                    g_fHadChance[iPlrId] = 0.0;
                    
                    g_iKeyTiming[iPlrId][0] = 0;
                    g_iKeyTiming[iPlrId][1] = 0;
                    
                    g_iButton[iPlrId][0] = 0;
                    g_iButton[iPlrId][1] = 0;
                    
                    return FMRES_IGNORED;
                }*/
            
}
            
            if( 
g_fHadChance[iPlrId]==0.0 )
            {
                if( 
s_fUserOrigin[0]!=1.0 )
                {
                    
g_bUnkownCondition false;
                    
get_tr2(0TR_vecEndPoss_fOrigin);
                    
g_fUnhookableDistance = (s_fUserOrigin[2]-s_fOrigin[2]-36.0);
                }
                else
                    
g_bUnkownCondition true;
            }
            else
                
g_bUnkownCondition false;
        }
        
        
g_fHadChance[0] = s_fClientOldSpeed[iPlrId] = (s_fVelocity[2]*-1.0);
    }
    else
    {
        
g_fHadChance[0] = s_fClientOldSpeed[iPlrId];
        
s_fClientOldSpeed[iPlrId] = 0.0;
        
        if( 
g_bInDmgFall[iPlrId] )
        {
            if( 
g_iButton[iPlrId][0] && g_iKeyTiming[iPlrId][0] )
                
g_iKeyTiming[iPlrId][0]--;
            else
                
g_iButton[iPlrId][0] = 0;
            
            if( 
g_iButton[iPlrId][1] && g_iKeyTiming[iPlrId][1] )
                
g_iKeyTiming[iPlrId][1]--;
            else
                
g_iButton[iPlrId][1] = 0;
            

        }
        
        
g_bInDmgFall[iPlrId] = false;
        
g_fHadChance[iPlrId] = 0.0;
        
        
g_iKeyTiming[iPlrId][0] = 0;
        
g_iKeyTiming[iPlrId][1] = 0;
        
        
g_iButton[iPlrId][0] = 0;
        
g_iButton[iPlrId][1] = 0;
    }
    
    return 
FMRES_IGNORED;
}

public 
FM_PlayerPostThink_Post(iPlrId)
{
    if( !
g_bInDmgFall[iPlrId] || g_iOldButtons&IN_JUMP || !(g_iButtons&IN_JUMP) || !is_user_alive(iPlrId) )
        return 
FMRES_IGNORED;
    
    
g_iKeyTiming[iPlrId][1] = 0;
    
    if( 
g_iOldButtons&IN_DUCK && !g_iKeyTiming[iPlrId][0] )
    {
        if( !(
pev(iPlrIdpev_flags)&FL_DUCKING) )
        {
            static 
Float:s_fVelocity[3];
            
pev(iPlrIdpev_velocitys_fVelocity);
            
            if( 
s_fVelocity[2]>0.0 )
            {
                if( 
g_fHadChance[iPlrId]==0.0 )
                {
                    
g_fHadChance[iPlrId] = floatabs(g_fUnhookableDistance);
                    
g_bJbBelow[iPlrId] = ((g_fUnhookableDistance<0.0)?true:false);
                }
                
made_jb(iPlrId);
            }
        }
    }
    
    return 
FMRES_IGNORED;
}

made_jb(iPlrId)
{
    new 
iPlayers[32], iPlayersNumiConsoleMessage[5][128];
    if( !
g_bUnkownCondition )
        
formatex(iConsoleMessage[0], 128"%f units %s the ground!"g_fHadChance[iPlrId], (g_bJbBelow[iPlrId]?"below":"above"));
    else
        
copy(iConsoleMessage[0], 128"with unknown condition!");
    
formatex(iConsoleMessage[1], 128"Ability: %.2f", (200.0/(g_fHadChance[0]/float(g_iClientThinks[iPlrId]))));
    
formatex(iConsoleMessage[2], 128"Challenge: %.2f", (g_fHadChance[0]/20.0));
    
formatex(iConsoleMessage[3], 128"Fall Speed: %.2fu/s"g_fHadChance[0]);
    
formatex(iConsoleMessage[4], 128"Engine: %ifps"g_iClientThinks[iPlrId]);
    
get_players(iPlayersiPlayersNum"bch");
    
iPlayers[iPlayersNum] = iPlrId;
    
iPlayersNum++;
    
set_hudmessage(2551270, -1.00.4520.55.00.011.03);
    for( new 
iTempiTemp<iPlayersNumiTemp++ )
    {
        if( !
g_bJbStatsEnabled[iPlayers[iTemp]] )
            continue;
        
        if( 
iPlrId!=iPlayers[iTemp] && (!is_specmode_valid(pev(iPlayers[iTemp], pev_iuser1)) || pev(iPlayers[iTemp], pev_iuser2)!=iPlrId) )
            continue;
        
        
show_hudmessage(iPlayers[iTemp], "Successful Jump-Bug was made^n%s^n%s%%^n%s%%^n%s^n%s"iConsoleMessage[0], iConsoleMessage[1], iConsoleMessage[2], iConsoleMessage[3], iConsoleMessage[4]);
        
ProPrint(iPlayers[iTemp], proprint_center" ");
        
        
//ProPrint(iPlayers[iTemp], proprint_center, "Successful Jump-Bug was made^n%s^nMore information in console", iConsoleMessage[0]);
        
console_print(iPlayers[iTemp], "%s""Successful Jump-Bug was made");
        
console_print(iPlayers[iTemp], "%s"iConsoleMessage[0]);
        
console_print(iPlayers[iTemp], "%s%%%%"iConsoleMessage[1]);
        
console_print(iPlayers[iTemp], "%s%%%%"iConsoleMessage[2]);
        
console_print(iPlayers[iTemp], "%s"iConsoleMessage[3]);
        
console_print(iPlayers[iTemp], "%s"iConsoleMessage[4]);
        
console_print(iPlayers[iTemp], "");
        
        if( 
g_fHadChance[0]>=2000.0 )
        {
#if defined USE_CUSTOM_SOUND
            
client_cmd(iPlayers[iTemp], "spk misc/mod_excellent");
#else
            
client_cmd(iPlayers[iTemp], "spk ^"vox/override(e15micro(e30got^"");
#endif
        
}
    }
    
    
g_iButton[iPlrId][0] = 0;
    
g_iButton[iPlrId][1] = 0;
    
    
g_bInDmgFall[iPlrId] = false;
    
g_fHadChance[iPlrId] = 0.0;
    
    
g_iKeyTiming[iPlrId][0] = 0;
    
g_iKeyTiming[iPlrId][1] = 0;
    
    return 
1;


xPaw plugin:
PHP Code:
#include < amxmodx >
#include < fakemeta >
#include < hamsandwich >

//#define USE_CONNOR_COLOR_NATIVE // Uncomment this line to use ConnorMcLeod's ChatColor
#define USE_SOUNDS // Uncomment this if you want to hear sounds

new const PREFIX[ ] = "[XJ]"// Change to your own if you want to

#if defined USE_CONNOR_COLOR_NATIVE
    #include < chatcolor >
#else
    #include < colorchat >
    
    #define Red RED
    #define DontChange GREEN
    #define client_print_color ColorChat
#endif

new g_iForwardJB;
new 
g_iForward;
new 
g_pGravity;
new 
g_iEdgebugs33 ];
new 
g_iFrameTime33 ][ ];

new 
bool:g_bEdgeBug33 ];
new 
bool:g_bFalling33 ];
new 
Float:g_flJumpOff33 ];
new 
Float:g_flTouchedVelocity33 ];

new 
bool:g_bInDmgFall33 ], g_iOldButtonsg_iButtons;

public 
plugin_init( )
{
    new const 
VERSION[ ] = "2.2 [+JB]";
    
    
register_plugin"EdgeBug Stats"VERSION"xPaw" );
    
    
set_pcvar_stringregister_cvar"edgebug_stats"VERSIONFCVAR_SERVER FCVAR_SPONLY ), VERSION );
    
    
register_forwardFM_CmdStart"FwdCmdStart" );
    
    
RegisterHamHam_Player_PostThink"player""FwdHamPlayerPostThink_Post"true );
    
RegisterHamHam_Player_PreThink"player""FwdHamPlayerPreThink" );
    
RegisterHamHam_Touch"player""FwdHamPlayerTouch" );
    
RegisterHamHam_Touch"trigger_teleport""FwdHamTeleportTouch" );
    
    
g_pGravity get_cvar_pointer"sv_gravity" );
    
g_iForward CreateMultiForward"kz_edgebug"ET_IGNOREFP_CELLFP_CELLFP_CELLFP_CELLFP_CELL );
    
g_iForwardJB CreateMultiForward"kz_jumpbug"ET_IGNOREFP_CELLFP_CELLFP_CELLFP_CELL );
}

#if defined USE_SOUNDS
public plugin_precache( )
{
    
precache_sound"jumpstats/excellent.wav" );
    
precache_sound"jumpstats/godlike.wav" );
    
precache_sound"jumpstats/holyshit.wav" );
}
#endif

public client_putinserverid )
{
    
Clearid );
}

public 
FwdCmdStart( const id, const iHandle )
{
    
g_iFrameTimeid ][ ] = g_iFrameTimeid ][ ];
    
g_iFrameTimeid ][ ] = get_uciHandleUC_Msec );
}

public 
FwdHamPlayerPreThink( const id )
{
    if( !
is_user_aliveid ) )
    {
        return;
    }
    else if( 
pevidpev_waterlevel ) > )
    {
        
g_bInDmgFallid ] = false;
        
Clearid );
        return;
    }
    
    static 
iFlags;
    
iFlags pevidpev_flags );
    
    if( ~
iFlags FL_ONGROUND )
    {
        
g_iButtons    pevidpev_button );
        
g_iOldButtons pevidpev_oldbuttons );
        
        new 
Float:flFallVelocity;
        
pevidpev_flFallVelocityflFallVelocity );
        
        
g_bInDmgFallid ] = bool:( flFallVelocity >= 500.0 );
    }
    else
    {
        
g_bInDmgFallid ] = false;
    }
    
    if( !
g_bFallingid ] && ~iFlags FL_ONGROUND )
    {
        
g_bFallingid ] = true;
        
        new 
Float:vAbsMin];
        
pevidpev_absminvAbsMin );
        
        
g_flJumpOffid ] = vAbsMin] + 1.0;
    }
    
    if( 
g_bFallingid ] )
    {
        if( 
iFlags FL_ONGROUND )
        {
            
Clearid );
            return;
        }
        
        if( 
g_bEdgeBugid ] )
        {
            
g_bEdgeBugid ] = false;
            
            new 
Float:vVelocity];
            
pevidpev_velocityvVelocity );
            
            new 
iEngineFps    floatround/ ( g_iFrameTimeid ][ ] * 0.001 ) );
            new 
iPossibleGain 2000 iEngineFps;
            
            new 
Float:flGravityFloat:flSvGravity get_pcvar_floatg_pGravity );
            
pevidpev_gravityflGravity );
            
            if( 
floatabsvVelocity] ) <= iPossibleGain
            
&&  floatabsg_flTouchedVelocityid ] ) > iPossibleGain
            
&&  floatabsvVelocity] + flSvGravity flGravity 0.001 0.5 g_iFrameTimeid ][ ] ) < 0.00009 )
            {
                new 
Float:vOrigin], Float:flFallVelocity;
                
pevidpev_flFallVelocityflFallVelocity );
                
pevidpev_absminvOrigin );
                
                
vOrigin] += 1.0;
                
                new 
iDistance floatround( ( g_flJumpOffid ] - vOrigin] ), floatround_floor );
                
                if( 
iDistance 17 )
                {
                    
Clearid );
                    return;
                }
                
                
PrintMessageidiDistancefloatroundflFallVelocity ), iEngineFps );
                
                
g_flJumpOffid ] = vOrigin];
            }
        }
    }
}

public 
FwdHamPlayerPostThink_Post( const id )
{
    if( !
g_bInDmgFallid ] || g_iOldButtons IN_JUMP || ~g_iButtons IN_JUMP )
    {
        return;
    }
    
    if( !
is_user_aliveid ) )
    {
        
g_bInDmgFallid ] = false;
        return;
    }
    
    if( 
g_iOldButtons IN_DUCK && ~pevidpev_flags ) & FL_DUCKING )
    {
        new 
Float:vOrigin];
        
pevidpev_velocityvOrigin );
        
        if( 
vOrigin] > 0.0 )
        {
            
g_bInDmgFallid ] = false;
            
            if( 
pevidpev_waterlevel ) > )
            {
                
client_printidprint_chat"[JB] Wtf? Water?" );
                return;
            }
            
            new 
Float:flFallVelocity;
            
pevidpev_flFallVelocityflFallVelocity );
            
            if( 
flFallVelocity 0.0 )
            {
                
client_printidprint_chat"[JB] Wtf?" );
                return;
            }
            
            
pevidpev_absminvOrigin );
            
            
vOrigin] += 1.0;
            
            new 
iDistance  floatround( ( g_flJumpOffid ] - vOrigin] ), floatround_floor ),
                
iEngineFps floatround/ ( g_iFrameTimeid ][ ] * 0.001 ) );
            
            
PrintMessageJBidiDistancefloatroundflFallVelocity ), iEngineFps );
            
            
g_flJumpOffid ] = vOrigin];
        }
    }
}

public 
FwdHamPlayerTouch( const id, const iEntity )
{
    if( !
g_bFallingid ] )
    {
        return;
    }
    
    static 
Float:vVelocity];
    
pevidpev_velocityvVelocity );
    
    if( 
vVelocity] >= 0.0 )
    {
        return;
    }
    
    static 
Float:vOrigin];
    
pevidpev_originvOrigin );
    
    new 
Float:flMagic floatabsvOrigin] - floatroundvOrigin], floatround_tozero ) );
    
    if( 
flMagic == 0.03125 || flMagic == 0.96875 // Lt.Rat is watching you !
    
{
        
g_bEdgeBugid ]          = true;
        
g_flTouchedVelocityid ] = vVelocity];
    }
}

public 
FwdHamTeleportTouch( const iEntity, const id )
{
    if( 
<= id <= 32 // g_iMaxPlayers ..
    
{
        
Clearid );
    }
}

Clear( const id )
{
    
g_bEdgeBugid ]  = false;
    
g_bFallingid ]  = false;
    
g_iEdgebugsid ] = 0;
}

PrintMessage( const id, const iDistance, const iSpeed, const iEngineFps )
{
    
g_iEdgebugsid ]++;
    
    new 
szTag10 ], szMessage256 ];
    
    switch( 
g_iEdgebugsid ] )
    {
        case 
1: { }
        case 
2szTag "Double ";
        case 
3szTag "Triple ";
        default: 
formatexszTag9"%ix "g_iEdgebugsid ] );
    }
    
    
engclient_printidengprint_console"^nSuccessful %sEdgeBug was made! Fall Distance: %i units. Fall Speed: %i u/s. Engine FPS: %i^n"szTagiDistanceiSpeediEngineFps );
    
    
formatexszMessage255"Successful %sEdgeBug was made!^nFall Distance: %i units^nFall Speed: %i u/s^nEngine FPS: %i"szTagiDistanceiSpeediEngineFps );
    
    
set_hudmessage2551270, -1.00.6506.06.00.70.7);
    
show_hudmessageidszMessage );
    
    
// Print stats to spectators
    
new iPlayers32 ], iNumiSpec;
    
get_playersiPlayersiNum"bch" );
    
    for( new 
iiNumi++ )
    {
        
iSpec iPlayers];
        
        if( 
iSpec == pevidpev_iuser2 ) )
        {
            
show_hudmessageiSpecszMessage );
        }
    }
    
    
ExecuteForwardg_iForwardiNumidiDistanceiSpeediEngineFpsg_iEdgebugsid ] );
    
    if( 
iSpeed 500 )
    {
        return;
    }
    
    new 
szName32 ];
    
get_user_nameidszName31 );
    
    
client_print_color0iDistance >= 2500 Red DontChange"%s %s did %sEdgeBug! Fall distance is %i units with %i u/s."PREFIXszNameszTagiDistanceiSpeed );
    
#if defined USE_SOUNDS
    
if( iDistance >= 2500 )
        
client_cmd0"spk ^"%s^""g_iEdgebugsid ] > "jumpstats/holyshit.wav" "jumpstats/godlike.wav" );
#endif
}

PrintMessageJB( const id, const iDistance, const iSpeed, const iEngineFps )
{
    new 
szMessage256 ];
    
    
engclient_printidengprint_console"^nFall Distance: %i units"iDistance );
    
    
formatexszMessage255"^nFall Distance: %i units"iDistance );
    
    
set_hudmessage2551270, -1.00.6506.06.00.70.7);
    
show_hudmessageidszMessage );
    
    
// Print stats to spectators
    
new iPlayers32 ], iNumiSpec;
    
get_playersiPlayersiNum"bch" );
    
    for( new 
iiNumi++ )
    {
        
iSpec iPlayers];
        
        if( 
iSpec == pevidpev_iuser2 ) )
        {
            
show_hudmessageiSpecszMessage );
        }
    }
    
    
ExecuteForwardg_iForwardJBiNumidiDistanceiSpeediEngineFps );
    
    if( 
iDistance 500 )
    {
        return;
    }
    
    new 
szName32 ];
    
get_user_nameidszName31 );
    
    
client_print_color0Red"%s %s did JumpBug! Fall distance: %i units."PREFIXszNameiDistanceiSpeed );
    
#if defined USE_SOUNDS
    
if( iDistance >= 1500 )
        
client_cmd0"spk ^"jumpstats/excellent.wav^"" );
#endif

And here is what I made:
PHP Code:
#include <amxmodx>
#include <fakemeta>
//#include <colorchat> // if using reklam (what can be enabled by REKLAM_TIME in config) - this line must be activated
#include < hamsandwich >

// =============================== CONFIG START ===============================
#define DISTANCE_BELOW 0.031250 // distance under ground on what you still can walk and do jb (total vertical available distance for jb is 2.0 units) [not suggesting to change this - it's just for information]
#define REKLAM_TIME 0 // time in seconds for reklaming "say /jbtrainer to enable/disable..." (value lower or equal 0 - reklam off) (I'm suggesting to use this in case disabled connect enabler and with value about 180.0 [3 minutes]) (enable colorchat.inc if using this)
#define MOD_NAME "[XJ]" // mod name when something is printed in chat

#define CONNECT_ENABLER // comment this to auto-disable jb trainer when client connects
#define USE_CUSTOM_SOUND // comment this to use vox "ow my god" sound (vox may not sound so good as you think) (sound is played only on challenge 100% or harder)



new const PREFIX[ ] = "[XJ]"// Change to your own if you want to

#if defined USE_CONNOR_COLOR_NATIVE
    #include < chatcolor >
#else
    #include < colorchat >
    
    #define Red RED
    #define DontChange GREEN
    #define client_print_color ColorChat
#endif


// ================================ CONFIG END ================================

#define PLUGIN_NAME    "Jb Trainer"
#define PLUGIN_VERSION    "1.5"
#define PLUGIN_AUTHOR    "Numb"

#if defined _colorchat_included

/* part from colorchat.inc */

enum
{
    
proprint_console 0,
    
proprint_center,
    
proprint_chat,
};

ProPrint(idtype, const msg[], {Float,Sql,Result,_}:...)
{
    if( 
id!=&& !is_user_connected(id) )
        return 
0;
    
    new 
message[192];
    
vformat(message192msg4);
    
    if( 
id==)
    {
        new 
players[32], num;
        
get_players(playersnum);
        for( new 
ii<numi++ )
            
engfunc(EngFunc_ClientPrintfplayers[i], clamp(type02), message);
    }
    else
        
engfunc(EngFunc_ClientPrintfidclamp(type02), message);
    
    return 
1;
}

#endif

new g_iClientThinkNum[10][33];
new 
g_iClientThinks[33];
new 
bool:g_bJbStatsEnabled[33];
new 
bool:g_bJbBelow[33];

new 
g_iButton[33][2];
new 
g_iKeyTiming[33][2];
new 
bool:g_bInDmgFall[33];
new 
Float:g_fHadChance[33];
new 
Float:g_fUnhookableDistance;
new 
bool:g_bUnkownConditiong_iOldButtonsg_iButtons;

new 
g_iForwardJB;
new 
g_iForward;
new 
g_pGravity;
new 
g_iEdgebugs33 ];
new 
g_iFrameTime33 ][ ];

new 
bool:g_bEdgeBug33 ];
new 
bool:g_bFalling33 ];
new 
Float:g_flJumpOff33 ];
new 
Float:g_flTouchedVelocity33 ];




#if defined USE_CUSTOM_SOUND
public plugin_precache()
    
precache_sound("misc/mod_excellent.wav");
#endif

public plugin_init()
{
    new const 
VERSION[ ] = "2.2 [+JB]";
    
register_plugin(PLUGIN_NAMEPLUGIN_VERSIONPLUGIN_AUTHOR);
    
register_plugin"Jb Trainer""1.5""NumB" );
    
register_plugin"EdgeBug Stats"VERSION"xPaw" );
    
    
register_clcmd("say /jbtrainer""clcmd_jbtrainer"ADMIN_ALL" - enables/disables jumpbug training statistics");
    
    
register_forward(FM_PlayerPreThink,  "FM_PlayerPreThink_Pre",   0);
    
register_forward(FM_PlayerPostThink"FM_PlayerPostThink_Post"1);
    
register_forwardFM_CmdStart"FwdCmdStart" );
    
RegisterHamHam_Player_PostThink"player""FwdHamPlayerPostThink_Post"true );
    
RegisterHamHam_Player_PreThink"player""FwdHamPlayerPreThink" );
    
RegisterHamHam_Touch"player""FwdHamPlayerTouch" );
    
RegisterHamHam_Touch"trigger_teleport""FwdHamTeleportTouch" );
    
    
    
    
set_pcvar_stringregister_cvar"edgebug_stats"VERSIONFCVAR_SERVER FCVAR_SPONLY ), VERSION );
    
    

    
    
    
g_pGravity get_cvar_pointer"sv_gravity" );
    
g_iForward CreateMultiForward"kz_edgebug"ET_IGNOREFP_CELLFP_CELLFP_CELLFP_CELLFP_CELL );
    
g_iForwardJB CreateMultiForward"kz_jumpbug"ET_IGNOREFP_CELLFP_CELLFP_CELLFP_CELL );
    
    
        
#if REKLAM_TIME > 0
    
set_task(minfloat(float(REKLAM_TIME), 60.0), "plugin_reklam"0""0"b");
#endif

}

#if REKLAM_TIME > 0
Float:minfloat(Float:ValueFloat:MinAllowed)
{
    if( 
MinAllowed>=Value )
        return 
MinAllowed;
    
    return 
Value;
}

public 
plugin_reklam()
    
ColorChat(0TEAM_COLOR"%s ^x01Type ^"^x04/jbtrainer^x01^" to enable/disable jumpbug training statistics."MOD_NAME);
#endif

public client_putinserver(iPlrId)
{
new const 
id 
Clear
id );
    
#if defined CONNECT_ENABLER
    
g_bJbStatsEnabled[iPlrId] = true;
#else
    
g_bJbStatsEnabled[iPlrId] = false;
#endif
    
g_iClientThinks[iPlrId] = 0;
    
set_task(0.1"set_client_tasks", (iPlrId*-1), ""0"a"10);

}

public 
client_disconnect(iPlrId)
{
    if( 
task_exists((iPlrId*-1)) )
        
remove_task((iPlrId*-1));
    
    for( new 
iTemp=1iTemp<11iTemp++ )
    {
        if( 
task_exists((iPlrId*iTemp)) )
            
remove_task((iPlrId*iTemp));
        else
            break;
    }
}

public 
set_client_tasks(iTaskId)
{
    new 
iParam[2], iPlrId = (iTaskId*-1);
    
iParam[0] = iPlrId;
    for( new 
iTemp=1iTemp<11iTemp++ )
    {
        if( !
task_exists((iPlrId*iTemp)) )
        {
            
iParam[1] = (iTemp-1);
            
g_iClientThinkNum[iParam[1]][iPlrId] = 0;
            
set_task(1.0"refresh_client_data", (iPlrId*iTemp), iParam2"b");
            break;
        }
    }
}

public 
clcmd_jbtrainer(iPlrId)
{
    if( 
g_bJbStatsEnabled[iPlrId] )
        
g_bJbStatsEnabled[iPlrId] = false;
    else
        
g_bJbStatsEnabled[iPlrId] = true;
    
    
client_print(iPlrIdprint_chat"%s Jump-Bug training statistics are now %sabled."MOD_NAME, (g_bJbStatsEnabled[iPlrId]?"en":"dis"));
    
client_print(iPlrIdprint_chat"%s To %sable them back type ^"/jbtrainer^"."MOD_NAME, (g_bJbStatsEnabled[iPlrId]?"dis":"en"));
}

public 
refresh_client_data(iParam[2])
{
    
g_iClientThinks[iParam[0]] = g_iClientThinkNum[iParam[1]][iParam[0]];
    
g_iClientThinkNum[iParam[1]][iParam[0]] = 0;
    
    static 
s_iPings_iUserChecks[33];
    
get_user_ping(iParam[0], s_iPings_iUserChecks[0]);
    
    if( 
s_iPing<=100 )
        
s_iUserChecks[iParam[0]] = 2;
    else
        
s_iUserChecks[iParam[0]]++;
    
    if( 
s_iUserChecks[iParam[0]]<// if use has ping higher than 100 we are showing statistics two times slower cuz we dont want him to lag like hell
        
return;
    else
        
s_iUserChecks[iParam[0]] = 0;
    
    if( 
is_user_alive(iParam[0]) )
        
show_data(iParam[0], iParam[0]);
    else if( 
is_specmode_valid(pev(iParam[0], pev_iuser1)) )
        
show_data(iParam[0], pev(iParam[0], pev_iuser2));
}

show_data(iSpectatoriJumpBugger)
{
    static 
Float:s_fVelocity[3];
    
pev(iJumpBuggerpev_velocitys_fVelocity);
    
    
s_fVelocity[2] *= -1.0;
        
    if( 
g_bJbStatsEnabled[iSpectator] && g_bInDmgFall[iJumpBugger] && !is_user_bot(iSpectator) )
    {
        
            
    }
    
    return 
1;
}

is_specmode_valid(iSpecMode)
    return ( 
iSpecMode==|| iSpecMode==|| iSpecMode==// || iSpecMode==6 );

/*
message_begin(MSG_ONE, get_user_msgid("TextMsg"), {0,0,0}, iPlrId);
write_byte(print_center);
write_string("#Spec_Mode1"); // "Locked Chase Camera" iuser1 = 1
write_string("#Spec_Mode2"); // "Free Chase Camera"   iuser1 = 2
write_string("#Spec_Mode3"); // "Free Look"           iuser1 = 3
write_string("#Spec_Mode4"); // "First Person"        iuser1 = 4
write_string("#Spec_Mode5"); // "Free Map OverView"   iuser1 = 5
write_string("#Spec_Mode6"); // "Chase Map Overview"  iuser1 = 6
message_end()
*/

public FM_PlayerPreThink_Pre(iPlrId)
{
    
g_iClientThinkNum[0][iPlrId]++;
    
g_iClientThinkNum[1][iPlrId]++;
    
g_iClientThinkNum[2][iPlrId]++;
    
g_iClientThinkNum[3][iPlrId]++;
    
g_iClientThinkNum[4][iPlrId]++;
    
g_iClientThinkNum[5][iPlrId]++;
    
g_iClientThinkNum[6][iPlrId]++;
    
g_iClientThinkNum[7][iPlrId]++;
    
g_iClientThinkNum[8][iPlrId]++;
    
g_iClientThinkNum[9][iPlrId]++;
    
    static 
Float:s_fClientOldSpeed[33];
    
    if( !
is_user_alive(iPlrId) || pev(iPlrIdpev_flags)&FL_ONGROUND || pev(iPlrIdpev_waterlevel)>=)
    {
        
g_fHadChance[0] = s_fClientOldSpeed[iPlrId];
        
s_fClientOldSpeed[iPlrId] = 0.0;
        
        if( 
g_bInDmgFall[iPlrId] )

        
        
g_iButton[iPlrId][0] = 0;
        
g_iButton[iPlrId][1] = 0;
        
        
g_bInDmgFall[iPlrId] = false;
        
g_fHadChance[iPlrId] = 0.0;
        
        
g_iKeyTiming[iPlrId][0] = 0;
        
g_iKeyTiming[iPlrId][1] = 0;
        
        return 
FMRES_IGNORED;
    }
    
    
g_iOldButtons pev(iPlrIdpev_oldbuttons);
    
g_iButtons pev(iPlrIdpev_button);
    
    if( 
g_iButton[iPlrId][0]<=)
    {
        if( 
g_iOldButtons&IN_DUCK && !(g_iButtons&IN_DUCK) )
        {
            
g_iKeyTiming[iPlrId][0] = -1;
            
g_iButton[iPlrId][0] = 1;
        }
    }
    if( 
g_iButton[iPlrId][0] )
        
g_iKeyTiming[iPlrId][0]++;
    if( 
g_iButtons&IN_DUCK )
        
g_iButton[iPlrId][0] = -1;
    
    if( 
g_iButton[iPlrId][1]<=)
    {
        if( !(
g_iOldButtons&IN_JUMP) && g_iButtons&IN_JUMP )
        {
            
g_iKeyTiming[iPlrId][1] = -1;
            
g_iButton[iPlrId][1] = 1;
        }
    }
    if( 
g_iButton[iPlrId][1] )
        
g_iKeyTiming[iPlrId][1]++;
    if( !(
g_iButtons&IN_JUMP) )
        
g_iButton[iPlrId][1] = -1;
    
    static 
Float:s_fVelocity[3];
    
pev(iPlrIdpev_velocitys_fVelocity);
    
    if( 
s_fVelocity[2]<=-500.0 )
    {
        
g_bInDmgFall[iPlrId] = true;
        
        if( 
pev(iPlrIdpev_flags)&FL_DUCKING )
        {
            static 
Float:s_fOrigin[3], Float:s_fOrigin2[3], Float:s_fUserOrigin[3];
            
pev(iPlrIdpev_origins_fOrigin);
            
s_fUserOrigin s_fOrigin;
            
            
g_fHadChance[0] = (36.0-2.0+DISTANCE_BELOW); //36.03125;
            
s_fOrigin2 s_fOrigin;
            
s_fOrigin2[2] -= (g_fHadChance[0]*2.0);
            
engfunc(EngFunc_TraceLines_fOrigins_fOrigin2DONT_IGNORE_MONSTERSiPlrId0);
            
s_fOrigin2[2] += g_fHadChance[0];
            
get_tr2(0TR_flFractions_fUserOrigin[0]);
            if( 
s_fUserOrigin[0]<=0.5 )
            {
                
get_tr2(0TR_vecEndPoss_fOrigin);
                
s_fOrigin[0] = (s_fOrigin[2]-s_fOrigin2[2]);
                
s_fOrigin[1] = (s_fOrigin2[2]-s_fOrigin[2]);
                
                if( 
s_fOrigin[0]<=(2.0-DISTANCE_BELOW) && s_fOrigin[0]>=0.0 )
                {
                    
g_bJbBelow[iPlrId] = false;
                    
g_fHadChance[iPlrId] = s_fOrigin[0];
                    
g_fHadChance[0] = (s_fVelocity[2]*-1.0);
                }
                else if( 
s_fOrigin[1]<=DISTANCE_BELOW && s_fOrigin[1]>=0.0 )
                {
                    
g_bJbBelow[iPlrId] = true;
                    
g_fHadChance[iPlrId] = s_fOrigin[1];
                    
g_fHadChance[0] = (s_fVelocity[2]*-1.0);
                }
                
/*else
                {
                    g_fHadChance[0] = s_fClientOldSpeed[iPlrId];
                    s_fClientOldSpeed[iPlrId] = 0.0;
                    
                    if( g_iButton[iPlrId][0] && g_iKeyTiming[iPlrId][0] )
                        g_iKeyTiming[iPlrId][0]--;
                    else
                        g_iButton[iPlrId][0] = 0;
                    
                    if( g_iButton[iPlrId][1] && g_iKeyTiming[iPlrId][1] )
                        g_iKeyTiming[iPlrId][1]--;
                    else
                        g_iButton[iPlrId][1] = 0;
                    
                    jb_failed(iPlrId, ((g_fHadChance[iPlrId]!=0.0)?false:true));
                    
                    g_bInDmgFall[iPlrId] = false;
                    g_fHadChance[iPlrId] = 0.0;
                    
                    g_iKeyTiming[iPlrId][0] = 0;
                    g_iKeyTiming[iPlrId][1] = 0;
                    
                    g_iButton[iPlrId][0] = 0;
                    g_iButton[iPlrId][1] = 0;
                    
                    return FMRES_IGNORED;
                }*/
            
}
            
            if( 
g_fHadChance[iPlrId]==0.0 )
            {
                if( 
s_fUserOrigin[0]!=1.0 )
                {
                    
g_bUnkownCondition false;
                    
get_tr2(0TR_vecEndPoss_fOrigin);
                    
g_fUnhookableDistance = (s_fUserOrigin[2]-s_fOrigin[2]-36.0);
                }
                else
                    
g_bUnkownCondition true;
            }
            else
                
g_bUnkownCondition false;
        }
        
        
g_fHadChance[0] = s_fClientOldSpeed[iPlrId] = (s_fVelocity[2]*-1.0);
    }
    else
    {
        
g_fHadChance[0] = s_fClientOldSpeed[iPlrId];
        
s_fClientOldSpeed[iPlrId] = 0.0;
        
        if( 
g_bInDmgFall[iPlrId] )
        {
            if( 
g_iButton[iPlrId][0] && g_iKeyTiming[iPlrId][0] )
                
g_iKeyTiming[iPlrId][0]--;
            else
                
g_iButton[iPlrId][0] = 0;
            
            if( 
g_iButton[iPlrId][1] && g_iKeyTiming[iPlrId][1] )
                
g_iKeyTiming[iPlrId][1]--;
            else
                
g_iButton[iPlrId][1] = 0;
            

        }
        
        
g_bInDmgFall[iPlrId] = false;
        
g_fHadChance[iPlrId] = 0.0;
        
        
g_iKeyTiming[iPlrId][0] = 0;
        
g_iKeyTiming[iPlrId][1] = 0;
        
        
g_iButton[iPlrId][0] = 0;
        
g_iButton[iPlrId][1] = 0;
    }
    
    return 
FMRES_IGNORED;
}

public 
FM_PlayerPostThink_Post(iPlrId)
{
    if( !
g_bInDmgFall[iPlrId] || g_iOldButtons&IN_JUMP || !(g_iButtons&IN_JUMP) || !is_user_alive(iPlrId) )
        return 
FMRES_IGNORED;
    
    
g_iKeyTiming[iPlrId][1] = 0;
    
    if( 
g_iOldButtons&IN_DUCK && !g_iKeyTiming[iPlrId][0] )
    {
        if( !(
pev(iPlrIdpev_flags)&FL_DUCKING) )
        {
            static 
Float:s_fVelocity[3];
            
pev(iPlrIdpev_velocitys_fVelocity);
            
            if( 
s_fVelocity[2]>0.0 )
            {
                if( 
g_fHadChance[iPlrId]==0.0 )
                {
                    
g_fHadChance[iPlrId] = floatabs(g_fUnhookableDistance);
                    
g_bJbBelow[iPlrId] = ((g_fUnhookableDistance<0.0)?true:false);
                }
                
made_jb(iPlrId);
            }
        }
    }
    
    return 
FMRES_IGNORED;
}

made_jb(iPlrId)
{
    new 
iPlayers[32], iPlayersNumiConsoleMessage[5][128];
    if( !
g_bUnkownCondition )
        
formatex(iConsoleMessage[0], 128"%f units %s the ground!"g_fHadChance[iPlrId], (g_bJbBelow[iPlrId]?"below":"above"));
    else
        
copy(iConsoleMessage[0], 128"with unknown condition!");
    
formatex(iConsoleMessage[1], 128"Ability: %.2f", (200.0/(g_fHadChance[0]/float(g_iClientThinks[iPlrId]))));
    
formatex(iConsoleMessage[2], 128"Challenge: %.2f", (g_fHadChance[0]/20.0));
    
formatex(iConsoleMessage[3], 128"Fall Speed: %.2fu/s"g_fHadChance[0]);
    
formatex(iConsoleMessage[4], 128"Engine: %ifps"g_iClientThinks[iPlrId]);
    
get_players(iPlayersiPlayersNum"bch");
    
iPlayers[iPlayersNum] = iPlrId;
    
iPlayersNum++;
    
set_hudmessage(2551270, -1.00.4520.55.00.011.03);
    for( new 
iTempiTemp<iPlayersNumiTemp++ )
    {
        if( !
g_bJbStatsEnabled[iPlayers[iTemp]] )
            continue;
        
        if( 
iPlrId!=iPlayers[iTemp] && (!is_specmode_valid(pev(iPlayers[iTemp], pev_iuser1)) || pev(iPlayers[iTemp], pev_iuser2)!=iPlrId) )
            continue;
        
        
show_hudmessage(iPlayers[iTemp], "Successful Jump-Bug was made^n%s^n%s%%^n%s%%^n%s^n%s"iConsoleMessage[0], iConsoleMessage[1], iConsoleMessage[2], iConsoleMessage[3], iConsoleMessage[4]);
        
ProPrint(iPlayers[iTemp], proprint_center" ");
        
        
//ProPrint(iPlayers[iTemp], proprint_center, "Successful Jump-Bug was made^n%s^nMore information in console", iConsoleMessage[0]);
        
console_print(iPlayers[iTemp], "%s""Successful Jump-Bug was made");
        
console_print(iPlayers[iTemp], "%s"iConsoleMessage[0]);
        
console_print(iPlayers[iTemp], "%s%%%%"iConsoleMessage[1]);
        
console_print(iPlayers[iTemp], "%s%%%%"iConsoleMessage[2]);
        
console_print(iPlayers[iTemp], "%s"iConsoleMessage[3]);
        
console_print(iPlayers[iTemp], "%s"iConsoleMessage[4]);
        
console_print(iPlayers[iTemp], "");
        
        if( 
g_fHadChance[0]>=2000.0 )
        {
#if defined USE_CUSTOM_SOUND
            
client_cmd(iPlayers[iTemp], "spk misc/mod_excellent");
#else
            
client_cmd(iPlayers[iTemp], "spk ^"vox/override(e15micro(e30got^"");
#endif
        
}
    }
    
    
g_iButton[iPlrId][0] = 0;
    
g_iButton[iPlrId][1] = 0;
    
    
g_bInDmgFall[iPlrId] = false;
    
g_fHadChance[iPlrId] = 0.0;
    
    
g_iKeyTiming[iPlrId][0] = 0;
    
g_iKeyTiming[iPlrId][1] = 0;
    
    return 
1;
}














public 
FwdCmdStart( const id, const iHandle )
{
    
g_iFrameTimeid ][ ] = g_iFrameTimeid ][ ];
    
g_iFrameTimeid ][ ] = get_uciHandleUC_Msec );
}

public 
FwdHamPlayerPreThink( const id )
{
    if( !
is_user_aliveid ) )
    {
        return;
    }
    else if( 
pevidpev_waterlevel ) > )
    {
        
g_bInDmgFallid ] = false;
        
Clearid );
        return;
    }
    
    static 
iFlags;
    
iFlags pevidpev_flags );
    
    if( ~
iFlags FL_ONGROUND )
    {
        
g_iButtons    pevidpev_button );
        
g_iOldButtons pevidpev_oldbuttons );
        
        new 
Float:flFallVelocity;
        
pevidpev_flFallVelocityflFallVelocity );
        
        
g_bInDmgFallid ] = bool:( flFallVelocity >= 500.0 );
    }
    else
    {
        
g_bInDmgFallid ] = false;
    }
    
    if( !
g_bFallingid ] && ~iFlags FL_ONGROUND )
    {
        
g_bFallingid ] = true;
        
        new 
Float:vAbsMin];
        
pevidpev_absminvAbsMin );
        
        
g_flJumpOffid ] = vAbsMin] + 1.0;
    }
    
    if( 
g_bFallingid ] )
    {
        if( 
iFlags FL_ONGROUND )
        {
            
Clearid );
            return;
        }
        
        if( 
g_bEdgeBugid ] )
        {
            
g_bEdgeBugid ] = false;
            
            new 
Float:vVelocity];
            
pevidpev_velocityvVelocity );
            
            new 
iEngineFps    floatround/ ( g_iFrameTimeid ][ ] * 0.001 ) );
            new 
iPossibleGain 2000 iEngineFps;
            
            new 
Float:flGravityFloat:flSvGravity get_pcvar_floatg_pGravity );
            
pevidpev_gravityflGravity );
            
            if( 
floatabsvVelocity] ) <= iPossibleGain
            
&&  floatabsg_flTouchedVelocityid ] ) > iPossibleGain
            
&&  floatabsvVelocity] + flSvGravity flGravity 0.001 0.5 g_iFrameTimeid ][ ] ) < 0.00009 )
            {
                new 
Float:vOrigin], Float:flFallVelocity;
                
pevidpev_flFallVelocityflFallVelocity );
                
pevidpev_absminvOrigin );
                
                
vOrigin] += 1.0;
                
                new 
iDistance floatround( ( g_flJumpOffid ] - vOrigin] ), floatround_floor );
                
                if( 
iDistance 17 )
                {
                    
Clearid );
                    return;
                }
                
                
PrintMessageidiDistancefloatroundflFallVelocity ), iEngineFps );
                
                
g_flJumpOffid ] = vOrigin];
            }
        }
    }
}

public 
FwdHamPlayerPostThink_Post( const id )
{
    if( !
g_bInDmgFallid ] || g_iOldButtons IN_JUMP || ~g_iButtons IN_JUMP )
    {
        return;
    }
    
    if( !
is_user_aliveid ) )
    {
        
g_bInDmgFallid ] = false;
        return;
    }
    
    if( 
g_iOldButtons IN_DUCK && ~pevidpev_flags ) & FL_DUCKING )
    {
        new 
Float:vOrigin];
        
pevidpev_velocityvOrigin );
        
        if( 
vOrigin] > 0.0 )
        {
            
g_bInDmgFallid ] = false;
            
            if( 
pevidpev_waterlevel ) > )
            {
                
client_printidprint_chat"[JB] Wtf? Water?" );
                return;
            }
            
            new 
Float:flFallVelocity;
            
pevidpev_flFallVelocityflFallVelocity );
            
            if( 
flFallVelocity 0.0 )
            {
                
client_printidprint_chat"[JB] Wtf?" );
                return;
            }
            
            
pevidpev_absminvOrigin );
            
            
vOrigin] += 1.0;
            
            new 
iDistance  floatround( ( g_flJumpOffid ] - vOrigin] ), floatround_floor ),
                
iEngineFps floatround/ ( g_iFrameTimeid ][ ] * 0.001 ) );
            
            
PrintMessageJBidiDistancefloatroundflFallVelocity ), iEngineFps );
            
            
g_flJumpOffid ] = vOrigin];
        }
    }
}

public 
FwdHamPlayerTouch( const id, const iEntity )
{
    if( !
g_bFallingid ] )
    {
        return;
    }
    
    static 
Float:vVelocity];
    
pevidpev_velocityvVelocity );
    
    if( 
vVelocity] >= 0.0 )
    {
        return;
    }
    
    static 
Float:vOrigin];
    
pevidpev_originvOrigin );
    
    new 
Float:flMagic floatabsvOrigin] - floatroundvOrigin], floatround_tozero ) );
    
    if( 
flMagic == 0.03125 || flMagic == 0.96875 // Lt.Rat is watching you !
    
{
        
g_bEdgeBugid ]          = true;
        
g_flTouchedVelocityid ] = vVelocity];
    }
}

public 
FwdHamTeleportTouch( const iEntity, const id )
{
    if( 
<= id <= 32 // g_iMaxPlayers ..
    
{
        
Clearid );
    }
}

Clear( const id )
{
    
g_bEdgeBugid ]  = false;
    
g_bFallingid ]  = false;
    
g_iEdgebugsid ] = 0;
}

PrintMessage( const id, const iDistance, const iSpeed, const iEngineFps )
{
    
g_iEdgebugsid ]++;
    
    new 
szTag10 ], szMessage256 ];
    
    switch( 
g_iEdgebugsid ] )
    {
        case 
1: { }
        case 
2szTag "Double ";
        case 
3szTag "Triple ";
        default: 
formatexszTag9"%ix "g_iEdgebugsid ] );
    }
    
    
engclient_printidengprint_console"^nSuccessful %sEdgeBug was made! Fall Distance: %i units. Fall Speed: %i u/s. Engine FPS: %i^n"szTagiDistanceiSpeediEngineFps );
    
    
formatexszMessage255"Successful %sEdgeBug was made!^nFall Distance: %i units^nFall Speed: %i u/s^nEngine FPS: %i"szTagiDistanceiSpeediEngineFps );
    
    
set_hudmessage2551270, -1.00.6506.06.00.70.7);
    
show_hudmessageidszMessage );
    
    
// Print stats to spectators
    
new iPlayers32 ], iNumiSpec;
    
get_playersiPlayersiNum"bch" );
    
    for( new 
iiNumi++ )
    {
        
iSpec iPlayers];
        
        if( 
iSpec == pevidpev_iuser2 ) )
        {
            
show_hudmessageiSpecszMessage );
        }
    }
    
    
ExecuteForwardg_iForwardiNumidiDistanceiSpeediEngineFpsg_iEdgebugsid ] );
    
    if( 
iSpeed 500 )
    {
        return;
    }
    
    new 
szName32 ];
    
get_user_nameidszName31 );
    
    
client_print_color0iDistance >= 2500 Red DontChange"%s %s did %sEdgeBug! Fall distance is %i units with %i u/s."PREFIXszNameszTagiDistanceiSpeed );
    
#if defined USE_SOUNDS
    
if( iDistance >= 2500 )
        
client_cmd0"spk ^"%s^""g_iEdgebugsid ] > "jumpstats/holyshit.wav" "jumpstats/godlike.wav" );
#endif
}

PrintMessageJB( const id, const iDistance, const iSpeed, const iEngineFps )
{
    new 
szMessage256 ];
    
    
    
    
    
    
set_hudmessage2551270, -1.00.6506.06.00.70.7);
    
show_hudmessageidszMessage );
    
    
// Print stats to spectators
    
new iPlayers32 ], iNumiSpec;
    
get_playersiPlayersiNum"bch" );
    
    for( new 
iiNumi++ )
    {
        
iSpec iPlayers];
        
        if( 
iSpec == pevidpev_iuser2 ) )
        {
            
show_hudmessageiSpecszMessage );
        }
    }
    
    
ExecuteForwardg_iForwardJBiNumidiDistanceiSpeediEngineFps );
    
    if( 
iDistance 500 )
    {
        return;
    }
    
    new 
szName32 ];
    
get_user_nameidszName31 );
    
    
client_print_color0Red"%s %s did JumpBug! Fall distance: %i units."PREFIXszNameiDistanceiSpeed );
    
#if defined USE_SOUNDS
    
if( iDistance >= 1500 )
        
client_cmd0"spk ^"jumpstats/excellent.wav^"" );
#endif

I think the problem is on the "plugin_init" part, but im not sure. I cant make both of the plugins work.
Can someone help me? Thanks!!

Last edited by tomy77; 06-09-2021 at 02:33. Reason: Wrong sma uploaded en the php code
tomy77 is offline
Old 06-10-2021, 03:39
Oylsister
This message has been deleted by DarkDeviL. Reason: Report, don't reply.
Reply



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 19:19.


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