Hacer que detecte si se agacho
#1
Hola buenas estoy ocupado este plugin la verdad que me costo adaptarlo por el mysql que no se ningun carajo jaja resulta que el bot funciona excelente pero me gustaría que cuando grabe la ruta el bot muestre si el jugador se agacho la verdad nose como se hace o si el plugin ya trae alguna función para hacerlo que muestre eso que digo espero alguien me eche una manito con eso porfavor  Cutecry  acudo a ustedes ya que son unos crack en esto.


dejo el código para que lo vean  Cutecry

Código PHP:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <engine>
#include <kzarg>

new const g_szRecordEntity[ ] = "EntityRecorder";
new const 
g_iTaskLoadBot 8883;
new Array:
g_aPlayerOrigin[33], Array:g_aPlayerAngles[33], Array:g_aPlayerButtons[33]
new Array:
g_aPlayerForwardMove[33], Array:g_aPlayerSideMove[33], Array:g_aPlayerUpMove[33]
new Array:
g_aPlayerVelocity[33], Array:g_aPlayerTime[33]

new 
Float:g_fForwardMove[33], Float:g_fSideMove[33], Float:g_fUpMove[33], Float:g_fBotTime

new g_iBotIndexg_szBotName[MAX_NAME_LENGTH], g_iCurrentFrame;
enum FWrite FW_NONE 0FW_DELETESOURCE = ( << ), FW_CANOVERRIDE = ( << ) }

public 
plugin_init()
{
    register_forward(FM_CmdStart"OnCmdStart")
    register_think(g_szRecordEntity"OnRecordThink");
 
}
public 
plugin_natives( )
{
    register_library"ReplayBOT" );
 
    register_native"GetReplayBotIndex""Native_GetReplayBotIndex" );
    register_native"GetBotVelocityX""Native_GetBotVelocityX" );
    register_native"GetBotVelocityY""Native_GetBotVelocityY" );
    register_native"GetBotVelocityZ""Native_GetBotVelocityZ" );
    register_native"GetBotTime""Native_GetBotTime" );
    register_native"GetBotButtons""Native_GetBotButtons" );
}
public 
plugin_precache( )
{
    new iEnt cs_create_entity"info_target" );
    assert iEntassert
 
    entity_set_string
(iEntEV_SZ_classnameg_szRecordEntity)
 
    set_peviEntpev_nextthinkget_gametime( ) + 0.009 );
 
    for( new 033i++ )
    {
        g_aPlayerOrigin] = ArrayCreate);
        g_aPlayerAngles] = ArrayCreate);
        g_aPlayerButtons] = ArrayCreate( );
        g_aPlayerForwardMove] = ArrayCreate( );
        g_aPlayerSideMove] = ArrayCreate( );
        g_aPlayerUpMove] = ArrayCreate( );
        g_aPlayerVelocity] = ArrayCreate);
        g_aPlayerTime] = ArrayCreate( );
    }
 
    new szConfigsDir64 ], szBotPath256 ], szMapName32 ];
 
    get_localinfo"amxx_configsdir"szConfigsDircharsmaxszConfigsDir ) );
 
    get_mapnameszMapNamecharsmaxszMapName ) );
 
    formatexszBotPathcharsmaxszBotPath ), "%s/kz/BotRepeater/%s.ini"szConfigsDirszMapName );
 
    if( file_existsszBotPath ) )
    {
        new hFile fopenszBotPath"r" );
 
        new szLine386 ], szOriginX20 ], szOriginY20 ], szOriginZ20 ], szAngleX20 ], szAngleY20 ], szAngleZ20 ], 
                            szButtons20 ], szForward20 ], szSide20 ], szUp20 ], szVelocityX20 ], szVelocityY20 ], szVelocityZ20 ];
 
        new Float:fOrigin], Float:fAngles], biButtonsFloat:fForwardMoveFloat:fSideMoveFloat:fUpMoveFloat:fVelocity], iTime;
 
        new szAccount32 ], szTime20 ];
 
        fgetshFileszLinecharsmaxszLine ) );
 
        parseszLineszAccountcharsmaxszAccount ), szTimecharsmaxszTime ) );
 
        //GetNickFromAccount( szAccount, g_szBotName, charsmax( g_szBotName ) );
        formatex(g_szBotNamecharsmaxg_szBotName ), szAccount);
        //get_user_name( iEnt, g_szBotName, charsmax( g_szBotName ) );
        g_fBotTime str_to_floatszTime );
    
        
while( !feofhFile ) )
        {
            fgetshFileszLinecharsmaxszLine ) );
 
            parseszLineszOriginXcharsmaxszOriginX ), szOriginYcharsmaxszOriginY ), szOriginZcharsmaxszOriginZ ),
                          szAngleXcharsmaxszAngleX ), szAngleYcharsmaxszAngleY ), szAngleZcharsmaxszAngleZ ),
                          szButtonscharsmaxszButtons ), szForwardcharsmaxszForward ), szSidecharsmaxszSide ), szUpcharsmaxszUp ), 
                          szVelocityXcharsmaxszVelocityX ), szVelocityYcharsmaxszVelocityY ), szVelocityZcharsmaxszVelocityZ ),
                          szTimecharsmaxszTime )
                );
 
            fOrigin] = str_to_floatszOriginX );
            fOrigin] = str_to_floatszOriginY );
            fOrigin] = str_to_floatszOriginZ );
 
            fAngles] = str_to_floatszAngleX );
            fAngles] = str_to_floatszAngleY );
            fAngles] = str_to_floatszAngleZ );
 
            fVelocity] = str_to_floatszVelocityX );
            fVelocity] = str_to_floatszVelocityY );
            fVelocity] = str_to_floatszVelocityZ );
 
            biButtons str_to_numszButtons );
 
            fForwardMove str_to_floatszForward );
            fSideMove str_to_floatszSide );
            fUpMove str_to_floatszUp );
 
            iTime str_to_numszTime );
 
            ArrayPushArrayg_aPlayerOrigin], fOrigin );
            ArrayPushArrayg_aPlayerAngles], fAngles );
            ArrayPushArrayg_aPlayerVelocity], fVelocity );
            
            ArrayPushCell
g_aPlayerButtons], biButtons );
            ArrayPushCellg_aPlayerForwardMove], fForwardMove );
            ArrayPushCellg_aPlayerSideMove], fSideMove );
            ArrayPushCellg_aPlayerUpMove], fUpMove );
            ArrayPushCellg_aPlayerTime], iTime );
        }
 
        fclosehFile );
 
        log_amx"Información del bot cargada. Total de lineas de archivo: %i"ArraySizeg_aPlayerOrigin] ) );
 
        set_task5.0"LoadBot"g_iTaskLoadBot );
    }
}
public 
kz_startclimbiClient ) {
    ArrayClearg_aPlayerOriginiClient ] );
    ArrayClearg_aPlayerAnglesiClient ] );
    ArrayClearg_aPlayerButtonsiClient ] );
    ArrayClearg_aPlayerForwardMoveiClient ] );
    ArrayClearg_aPlayerSideMoveiClient ] );
    ArrayClearg_aPlayerUpMoveiClient ] );
    ArrayClearg_aPlayerVelocityiClient ] );
    ArrayClearg_aPlayerTimeiClient ] );
}
SaveRuniClientFloat:fTime )
{
    new szConfigsDir64 ], szBotPath256 ], szMapName32 ], szAccount32 ], szLine386 ], hFile;
 
    get_user_nameiClientszAccountcharsmaxszAccount ) );
    //get_user_name(id,g_playername[id],charsmax(g_playername[]))
 
    get_localinfo"amxx_configsdir"szConfigsDircharsmaxszConfigsDir ) );
 
    get_mapnameszMapNamecharsmaxszMapName ) );
 
    formatexszBotPathcharsmaxszBotPath ), "%s/kz/BotRepeater/%s.ini"szConfigsDirszMapName );
 
    if( file_existsszBotPath ) )
    {
        delete_fileszBotPath );
    }
 
    if( g_iBotIndex )
    {
        server_cmd"kick #%i"get_user_useridg_iBotIndex ) );
 
        ArrayClearg_aPlayerOrigin] );
        ArrayClearg_aPlayerAngles] );
        ArrayClearg_aPlayerButtons] );
        ArrayClearg_aPlayerForwardMove] );
        ArrayClearg_aPlayerSideMove] );
        ArrayClearg_aPlayerUpMove] );
        ArrayClearg_aPlayerVelocity] );
        ArrayClearg_aPlayerTime] );
 
        g_iBotIndex 0;
    }
 
    hFile fopenszBotPath"a+" );
 
    if( hFile )
    {
        new iSize ArraySizeg_aPlayerOriginiClient ] );
 
        new Float:fOrigin], Float:fAngles], biButtonsFloat:fForwardMoveFloat:fSideMoveFloat:fUpMoveFloat:fVelocity], iTime;
 
        formatexszLinecharsmaxszLine ), "^"%s^" ^"%f^"^n"szAccountfTime );
 
        fputshFileszLine );
 
        get_user_name(iClientg_szBotNamecharsmaxg_szBotName ) )
 
        //GetNickFromAccount( szAccount, g_szBotName, charsmax( g_szBotName ) );
 
        g_fBotTime fTime;
 
        for( new 0iSizei++ )
        {
            ArrayGetArrayg_aPlayerOriginiClient ], ifOrigin );
            ArrayGetArrayg_aPlayerAnglesiClient ], ifAngles );
            ArrayGetArrayg_aPlayerVelocityiClient ], ifVelocity );
 
            biButtons ArrayGetCellg_aPlayerButtonsiClient ], );
            fForwardMove ArrayGetCellg_aPlayerForwardMoveiClient ], );
            fSideMove ArrayGetCellg_aPlayerSideMoveiClient ], );
            fUpMove ArrayGetCellg_aPlayerUpMoveiClient ], );
 
            iTime ArrayGetCellg_aPlayerTimeiClient ], );
 
            formatexszLinecharsmaxszLine ), "^"%f^" ^"%f^" ^"%f^" ^"%f^" ^"%f^" ^"%f^" ^"%i^" ^"%f^" ^"%f^" ^"%f^" ^"%f^" ^"%f^" ^"%f^" ^"%i^"%s"fOrigin], fOrigin], fOrigin], fAngles], fAngles], fAngles], biButtonsfForwardMovefSideMovefUpMovefVelocity], fVelocity], fVelocity], iTime, ( == iSize "" "^n" ) );
 
            fputshFileszLine );
 
            ArrayPushArrayg_aPlayerOrigin], fOrigin );
            ArrayPushArrayg_aPlayerAngles], fAngles );
            ArrayPushArrayg_aPlayerVelocity], fVelocity );
 
            ArrayPushCellg_aPlayerButtons], biButtons );
            ArrayPushCellg_aPlayerForwardMove], fForwardMove );
            ArrayPushCellg_aPlayerSideMove], fSideMove );
            ArrayPushCellg_aPlayerUpMove], fUpMove );
            ArrayPushCellg_aPlayerTime], iTime );
        }
 
        fclosehFile );
 
        if( task_existsg_iTaskLoadBot ) )
            remove_taskg_iTaskLoadBot );
 
        set_task5.0"LoadBot"g_iTaskLoadBot );
    }
}
 
public 
LoadBot( )
{
    if( get_playersnum) == get_maxplayers( ) )
    {
        set_task30.0"LoadBot"g_iTaskLoadBot );
 
        return;
    }
 
    if( g_iBotIndex )
    {
        server_cmd"kick #%i"get_user_useridg_iBotIndex ) );
 
        g_iBotIndex 0;
    }
 
    new iMin floatroundg_fBotTimefloatround_floor ) / 60;
 
    new Float:iSec g_fBotTime - ( 60 iMin );
 
    formatexg_szBotNamecharsmaxg_szBotName ), "%s %s%i:%s%.5f"g_szBotNameiMin "" "0"iMiniSec "" "0"iSec );
 
    new iBot engfuncEngFunc_CreateFakeClientg_szBotName );
 
    if( iBot )
    {
        engfuncEngFunc_FreeEntPrivateDataiBot );
 
        set_user_infoiBot"model""gordon" );
        set_user_infoiBot"rate""3500" );
        set_user_infoiBot"cl_updaterate""30" );
        set_user_infoiBot"cl_lw""0" );
        set_user_infoiBot"cl_lc""0" );
        set_user_infoiBot"tracker""0" );
        set_user_infoiBot"cl_dlmax""128" );
        set_user_infoiBot"lefthand""1" );
        set_user_infoiBot"friends""0" );
        set_user_infoiBot"dm""0" );
        set_user_infoiBot"ah""1" );
        set_user_infoiBot"*bot""1" );
        set_user_infoiBot"_cl_autowepswitch""1" );
        set_user_infoiBot"_vgui_menu""0" );
        set_user_infoiBot"_vgui_menus""1" );
 
        new szRejectReason128 ];
 
        dllfuncDLLFunc_ClientConnectiBotg_szBotNameszRejectReason );
 
        if( !is_user_connectediBot ) )
            return;
 
        dllfuncDLLFunc_ClientPutInServeriBot );
 
        set_peviBotpev_spawnflagspeviBotpev_spawnflags ) | FL_FAKECLIENT );
        set_peviBotpev_flagspeviBotpev_flags ) | FL_FAKECLIENT );
 
        engclient_cmdiBot"jointeam""2" );
        engclient_cmdiBot"joinclass""2" );
 
        g_iBotIndex iBot// Salva o ID do bot ANTES de qualquer possibilidade de retorno
 
        if( cs_get_user_teamiBot ) == CS_TEAM_CT )
            ExecuteHamHam_CS_RoundRespawniBot );
 
        if( !is_user_aliveiBot ) )
            return;
 
        give_itemiBot"weapon_knife" );
 
        set_user_godmodeiBot);
        cs_set_user_model(iBot"vip")
    }
}
public 
OnRecordThinkiEnt )
{
    if( !pev_validiEnt ) )
        return PLUGIN_CONTINUE;
 
    static iPlayers32 ], iNumiClient;
 
    get_playersiPlayersiNum"a" );
 
    for( new 0iNumi++ )
    {
        iClient iPlayers];
 
        if( iClient == g_iBotIndex )
        {
            g_iCurrentFrame++;
 
            if( g_iCurrentFrame ArraySizeg_aPlayerOrigin] ) )
            {
                static Float:fOrigin], Float:fAngles], biButtonsFloat:fForwardMoveFloat:fSideMoveFloat:fUpMoveFloat:fVelocity];
 
                ArrayGetArrayg_aPlayerOrigin], g_iCurrentFramefOrigin );
                ArrayGetArrayg_aPlayerAngles], g_iCurrentFramefAngles );
                ArrayGetArrayg_aPlayerVelocity], g_iCurrentFramefVelocity );
 
                biButtons ArrayGetCellg_aPlayerButtons], g_iCurrentFrame );
                fForwardMove ArrayGetCellg_aPlayerForwardMove], g_iCurrentFrame );
                fSideMove ArrayGetCellg_aPlayerSideMove], g_iCurrentFrame );
                fUpMove ArrayGetCellg_aPlayerUpMove], g_iCurrentFrame );
 
                set_peviClientpev_v_anglefAngles );
 
                fAngles] /= -3.0;
 
                biButtons &= ~IN_USE;
                biButtons &= ~IN_ATTACK;
                biButtons &= ~IN_ATTACK2;
 
                set_peviClientpev_movetypeMOVETYPE_NOCLIP );
                set_peviClientpev_solidSOLID_NOT );
                set_peviClientpev_anglesfAngles );
                set_peviClientpev_originfOrigin );
                set_peviClientpev_velocityfVelocity );
 
                set_peviClientpev_buttonbiButtons );
                set_peviClientpev_fixangle);
 
                engfuncEngFunc_RunPlayerMoveiClientfAnglesfForwardMovefSideMovefUpMovebiButtons010 );
 
                if( peviClientpev_flags ) & FL_ONGROUND )
                {
                    if( biButtons IN_DUCK && IsMovingbiButtons ) )
                        set_peviClientpev_gaitsequence);
                    else if( biButtons IN_DUCK )
                        set_peviClientpev_gaitsequence);
                    else
                        set_peviClientpev_gaitsequence);
 
                    if( biButtons IN_JUMP )
                        set_peviClientpev_gaitsequence);
                    else
                        set_peviClientpev_gaitsequence);
                }
                else
                {
                    if( biButtons IN_JUMP )
                        set_peviClientpev_gaitsequence);
                    else if( biButtons IN_DUCK )
                        set_peviClientpev_gaitsequence);
                    else
                        set_peviClientpev_gaitsequence);
                }
            }
            else
                g_iCurrentFrame 0;
        }
        else
        {
                    if( kz_get_user_statusiClient ) )
                    {
                        static Float:fOrigin], Float:fAngles], biButtonsFloat:fVelocity];
 
                        peviClientpev_originfOrigin );
                        peviClientpev_v_anglefAngles );
                        peviClientpev_buttonbiButtons );
                        peviClientpev_velocityfVelocity );
 
                        ArrayPushArrayg_aPlayerOriginiClient ], fOrigin );
                        ArrayPushArrayg_aPlayerAnglesiClient ], fAngles );
                        ArrayPushArrayg_aPlayerVelocityiClient ], fVelocity );
                        ArrayPushCellg_aPlayerButtonsiClient ], biButtons );
                        ArrayPushCellg_aPlayerForwardMoveiClient ], g_fForwardMoveiClient ] );
                        ArrayPushCellg_aPlayerSideMoveiClient ], g_fSideMoveiClient ] );
                        ArrayPushCellg_aPlayerUpMoveiClient ], g_fUpMoveiClient ] );
                        ArrayPushCellg_aPlayerTimeiClient ], kz_get_user_roundtimeiClient ) ); // Mudar isso para o float que eu criei se formatar
                    }
                    /*else if( g_bPreRun[ iClient ] && !kz_get_user_status( ) ) // Record PreRun
                    {
                    
                    }*/
                }
    }
 
    set_peviEntpev_nextthinkget_gametime( ) + 0.009 );
 
    return PLUGIN_CONTINUE;
}
 
public 
OnCmdStartiClientiUcHandleriSeed )
{
    if( !is_user_aliveiClient ) )
        return FMRES_IGNORED;
    
    
if( !kz_get_user_statusiClient ) )
        return FMRES_IGNORED;
 
    static Float:fForwardMoveFloat:fSideMoveFloat:fUpMove;
 
    get_uciUcHandlerUC_ForwardMovefForwardMove );
    get_uciUcHandlerUC_SideMovefSideMove );
    get_uciUcHandlerUC_UpMovefUpMove );
 
    g_fForwardMoveiClient ] = fForwardMove;
    g_fSideMoveiClient ] = fSideMove;
    g_fUpMoveiClient ] = fUpMove;
 
    return FMRES_IGNORED;
}
 
public 
OnDeleteProiClientszMap32 ], bool:bIsPro // Procurar pelo BotRepeater na pasta atual e na pasta OldRuns
{
    if( !bIsPro )
        return;
    
    
new szConfigsDir64 ], szFilePath192 ];
 
    get_localinfo"amxx_configsdir"szConfigsDircharsmaxszConfigsDir ) );
 
    formatexszFilePathcharsmaxszFilePath ), "%s/kz/BotRepeater/%s.ini"szConfigsDirszMap );
 
    if( !file_existsszFilePath ) )
        return;
 
    new szCurMap32 ]; 
    
    get_mapname
szCurMapcharsmaxszCurMap ) );
 
    if( delete_fileszFilePath ) == )
    {
        if( equaliszMapszCurMap ) && g_iBotIndex )
        {
            server_cmd"kick #%i"get_user_useridg_iBotIndex ) );
 
            ArrayClearg_aPlayerOrigin] );
            ArrayClearg_aPlayerAngles] );
            ArrayClearg_aPlayerButtons] );
            ArrayClearg_aPlayerForwardMove] );
            ArrayClearg_aPlayerSideMove] );
            ArrayClearg_aPlayerUpMove] );
            ArrayClearg_aPlayerVelocity] );
            ArrayClearg_aPlayerTime] );
 
            g_iBotIndex 0;
        }
 
        console_printiClient"[ BmX Pro BOT ] Bot do mapa %s tambem foi removido."szMap );
    }
}
public 
plugin_end( )
{
    for( new 033i++ )
    {
        ArrayDestroyg_aPlayerOrigin] );
        ArrayDestroyg_aPlayerAngles] );
        ArrayDestroyg_aPlayerButtons] );
        ArrayDestroyg_aPlayerForwardMove] );
        ArrayDestroyg_aPlayerSideMove] );
        ArrayDestroyg_aPlayerUpMove] );
        ArrayDestroyg_aPlayerVelocity] );
        ArrayDestroyg_aPlayerTime] );
    }
}
 
bool:IsMovingbiButtons )
{
    if( biButtons IN_FORWARD || biButtons IN_BACK || biButtons IN_LEFT || biButtons IN_RIGHT )
        return true;
 
    return false;
}
stock fcopyread_path256 ], dest_path256 ], FWrite:flags FW_NONE )
{
    new fp_read fopenread_path"rb" );
 
    if( !fp_read )
    {
        fclosefp_read )
 
        return 0;
    }
 
    if( file_existsdest_path ) && !( flags FW_CANOVERRIDE ) )
        return 0;
 
    new fp_write fopendest_path"wb" );
 
    static buffer256 ];
    static readsize;
 
    fseekfp_read0SEEK_END );
 
    new fsize ftellfp_read );
 
    fseekfp_read0SEEK_SET );
 
    for( new 0fsizej+= 256 )
    {
        readsize fread_blocksfp_readbuffer256BLOCK_CHAR );
        fwrite_blocksfp_writebufferreadsizeBLOCK_CHAR );
    }
 
    fclosefp_read );
    fclosefp_write );
 
    if( flags FW_DELETESOURCE )
        delete_fileread_path );
 
    return 1;
}
public 
Native_GetReplayBotIndex(iPluginiParams) {
    return g_iBotIndex;
}
public 
Float:Native_GetBotVelocityX(iPluginiParams) {
    if(!g_iBotIndex)
        return 0.0;
 
    new Float:fVelocity[3];
 
    ArrayGetArray(g_aPlayerVelocity[0], g_iCurrentFramefVelocity);
 
    return fVelocity[0];
}
public 
Float:Native_GetBotVelocityY(iPluginiParams) {
    if(!g_iBotIndex)
        return 0.0;
 
    new Float:fVelocity[3];
 
    ArrayGetArray(g_aPlayerVelocity[0], g_iCurrentFramefVelocity);
 
    return fVelocity[1];
}
public 
Float:Native_GetBotVelocityZ(iPluginiParams) {
    if(!g_iBotIndex)
        return 0.0;
 
    new Float:fVelocity[3];
 
    ArrayGetArrayg_aPlayerVelocity[], g_iCurrentFramefVelocity);
 
    return fVelocity[2];
}
public 
Native_GetBotButtons(iPluginiParams) {
    if(!g_iBotIndex)
        return 0;
 
    return ArrayGetCell(g_aPlayerButtons[0], g_iCurrentFrame)
}
public 
Native_GetBotTime(iPluginiParams) {
    if(!g_iBotIndex)
        return 0;
 
    return ArrayGetCell(g_aPlayerTime[0], g_iCurrentFrame);

Responder
#2
creo que esto obtiene lo que buscas

Native_GetBotButtons
Responder
#3
(28/12/2020, 01:35 PM)Kiltr0 escribió: creo que esto obtiene lo que buscas

Native_GetBotButtons

Ya pero como la utilizo para que cuando vea la ruta del bot muestre el movimiento de agachar ?

Ya que siempre cuando uno termina el mapa el bot lo muestra que lo paso parado.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)