AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Combining 2 plugins problem. (https://forums.alliedmods.net/showthread.php?t=332924)

tomy77 06-09-2021 02:26

Combining 2 plugins problem.
 
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!!


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

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