Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Выставить флаг плагину

, Проверка на флаг
Статус пользователя alexey97
сообщение 22.6.2015, 9:34
Сообщение #1
Стаж: 10 лет

Сообщений: 2
Благодарностей: 1
Полезность: 0

Нужно добавить проверку в плагин bullet pogo, например на флаг ADMIN_BAN, заранее спасибо за помощь)
Код:

#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <hamsandwich>
#include <xs>

new const Version[] = "0.1";

new const g_GunEvents[][] =
{
"events/awp.sc",
"events/g3sg1.sc",
"events/ak47.sc",
"events/scout.sc",
"events/m249.sc",
"events/m4a1.sc",
"events/sg552.sc",
"events/aug.sc",
"events/sg550.sc",
"events/m3.sc",
"events/xm1014.sc",
"events/usp.sc",
"events/mac10.sc",
"events/ump45.sc",
"events/fiveseven.sc",
"events/p90.sc",
"events/deagle.sc",
"events/p228.sc",
"events/glock18.sc",
"events/mp5n.sc",
"events/tmp.sc",
"events/elite_left.sc",
"events/elite_right.sc",
"events/galil.sc",
"events/famas.sc"
};

new g_GunEventBits;
new g_FMPrecacheEvent;
new g_iMaxPlayers;

new g_pStrength;
new g_pFallDamage;
new g_pPogoPlayer;

new g_TouchGroundEnt;
new g_bIsPogo;

#define IsPlayer(%1) (1<=%1<=g_iMaxPlayers)
#define IsPogo(%1) (g_bIsPogo & (1<<(%1 & 31)))
#define SetPogo(%1) (g_bIsPogo |= (1<<(%1 & 31)))
#define RemovePogo(%1) (g_bIsPogo &= ~(1<<(%1 & 31)))

public plugin_init()
{
register_plugin( "Bullet Pogo" , Version , "bugsy" );

g_pStrength = register_cvar( "bp_strength" , "375.0" );
g_pFallDamage = register_cvar( "bp_falldamage" , "0" );
g_pPogoPlayer = register_cvar( "bp_pogoplayer" , "0" );

register_forward( FM_CmdStart , "fw_FMCmdStart" , 1 );
unregister_forward( FM_PrecacheEvent , g_FMPrecacheEvent , 1 );
register_forward( FM_PlaybackEvent , "fw_FMPlaybackEvent" );

RegisterHam( Ham_TakeDamage , "player" , "fw_HamTakeDamage" );

g_TouchGroundEnt = create_entity( "info_target" );
entity_set_string( g_TouchGroundEnt , EV_SZ_classname , "touchground_entity" );
register_think( "touchground_entity" , "fw_Think" );

g_iMaxPlayers = get_maxplayers();
}

public plugin_precache()
{
g_FMPrecacheEvent = register_forward( FM_PrecacheEvent , "fw_FMPrecacheEvent" , 1 );
}

public fw_FMPrecacheEvent( Type , const szName[] )
{
for ( new i = 0 ; i < sizeof( g_GunEvents ) ; ++i )
{
if ( equal( g_GunEvents[ i ] , szName ) )
{
g_GunEventBits |= ( 1 << get_orig_retval() );
return FMRES_HANDLED;
}
}

return FMRES_IGNORED;
}

public fw_FMPlaybackEvent( Flags , Invoker , EventID )
{
if ( !( g_GunEventBits & ( 1 << EventID ) ) || !IsPlayer( Invoker ) )
return FMRES_IGNORED;

static Float:fVelocity[ 3 ];
static iOrigin[ 3 ] , Float:fOrigin[ 3 ];
static iAimOrigin[ 3 ] , Float:fAimOrigin[ 3 ];
static idAiming , iBody;

if ( !get_pcvar_num( g_pPogoPlayer ) )
{
get_user_aiming( Invoker , idAiming , iBody );

if ( IsPlayer( idAiming ) )
return FMRES_IGNORED;
}

get_user_origin( Invoker , iOrigin );
get_user_origin( Invoker , iAimOrigin , 3 );

IVecFVec( iOrigin , fOrigin );
IVecFVec( iAimOrigin , fAimOrigin );

if ( -80.0 >= GetAngleOrigins( fOrigin , fAimOrigin ) >= -90.0 )
{
pev( Invoker , pev_velocity , fVelocity );
fVelocity[ 2 ] = get_pcvar_float( g_pStrength );
set_pev( Invoker , pev_velocity , fVelocity );

SetPogo( Invoker );

entity_set_float( g_TouchGroundEnt , EV_FL_nextthink , get_gametime() + 0.25 );

return FMRES_IGNORED;
}

return FMRES_HANDLED;
}

public fw_HamTakeDamage( Victim , Inflictor , Attacker , Float:fDamage , BitDamage )
{
return ( IsPogo( Victim ) && ( BitDamage & DMG_FALL ) && !get_pcvar_num( g_pFallDamage ) ) ? HAM_SUPERCEDE : HAM_IGNORED;
}

public fw_Think( Entity )
{
if( Entity != g_TouchGroundEnt )
return FMRES_IGNORED;

static id;

for ( id = 1 ; id <= g_iMaxPlayers ; id++ )
if ( IsPogo( id ) && ( ( pev( id , pev_flags ) & FL_ONGROUND ) || !is_user_alive( id ) ) )
RemovePogo( id );

if ( g_bIsPogo )
entity_set_float( g_TouchGroundEnt , EV_FL_nextthink , get_gametime() + 0.25 );

return FMRES_IGNORED;
}

Float: GetAngleOrigins( const Float:fOrigin1[ 3 ] , const Float:fOrigin2[ 3 ] )
{
new Float:fVector[ 3 ] , Float:fAngle[ 3 ];

xs_vec_sub( fOrigin2 , fOrigin1 , fVector );
vector_to_angle( fVector , fAngle );

return ( ( fAngle[ 0 ] > 90.0 ) ? -( 360.0 - fAngle[ 0 ] ) : fAngle[ 0 ] );
}


Причина: используйте [pawn][/pawn] //andrewz
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Shkrest
сообщение 18.3.2016, 5:37
Сообщение #2
Стаж: 13 лет

Сообщений: 173
Благодарностей: 5
Полезность: < 0

alexey97, У меня лично ругается на
Код
RegisterHam( Ham_TakeDamage , "player" , "fw_HamTakeDamage" );

А так там вроде в конфиге есть выставление флага?!

Вот ошибка может кто поймет
Cкрытый текст
Код
L 03/18/2016 - 06:16:29: Start of error session.
L 03/18/2016 - 06:16:29: Info (map "de_dust") (file "addons/amxmodx/logs/error_20160318.log")
L 03/18/2016 - 06:16:29: [HAMSANDWICH] Failed to retrieve vtable for "player", hook for "fw_HamTakeDamage" not active.
L 03/18/2016 - 06:16:29: [AMXX] Displaying debug trace (plugin "tol.amxx")
L 03/18/2016 - 06:16:29: [AMXX] Run time error 10: native error (native "RegisterHam")
L 03/18/2016 - 06:16:29: [AMXX]    [0] tol.sma::plugin_init (line 70)

Код
// Флаг игрока, у которого всегда работает bulletpogo
// 0 - pogo у всех
pogo_flag "a"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: