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

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

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

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

> Правила раздела

Перед созданием новой темы убедитесь, не искал ли кто-нибудь подобный плагин до вас, для этого следует воспользоваться поиском.

Все вновь созданные темы, с названием типа "Помогите найти", "А что это за плагин", "Ищу плагин", "Нужен плагин", "Подскажите пожалуйста название плагина" - будут удалены.
При создании темы постарайтесь максимально понятно сформулировать её заголовок так, чтобы он соответствовал функциям плагина который Вы ищите. В том случае, если Вам не удается сформулировать мысль и правильно расписать всё в теме, воспользуйтесь графическим редактором, к примеру Paint, что бы примерно изобразить функции нужного Вам плагина.

Плагин, проходить сквозь игроков!

, Помогите!
Статус пользователя proosti
сообщение 1.12.2012, 15:52
Сообщение #1
Стаж: 13 лет

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

Ребят, подскажите пожалуйста, не могу найти плагин, проходить сквозь игроков в начале раунда, чтобы не только через игроков одной и тойже команды как у тебя(КТ, ТЕРЫ)
Для зомби сервера чтобы.
Спасибо!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Hnt
сообщение 1.12.2012, 15:54
Сообщение #2


Стаж: 18 лет

Сообщений: 810
Благодарностей: 198
Полезность: 494

Скрытый текст
Код
#include <amxmodx>
#include <fakemeta>
#include <zombieplague>

#define DISTANCE 120

new g_iTeam[33];
new bool:g_bSolid[33];
new bool:g_bHasSemiclip[33];
new Float:g_fOrigin[33][3];

new bool:g_bSemiclipEnabled;

new g_iForwardId[3];
new g_iMaxPlayers;
new g_iCvar[3];

public plugin_init( )
{
    register_plugin( "(Team-)Semiclip", "1.2", "SchlumPF*" );
    
    g_iCvar[0] = register_cvar( "semiclip_enabled", "1" );
    g_iCvar[1] = register_cvar( "semiclip_teamclip", "0" );
    g_iCvar[2] = register_cvar( "semiclip_transparancy", "1" );
    
    register_forward( FM_ClientCommand, "fwdClientCommand" );
    
    if( get_pcvar_num( g_iCvar[0] ) )
    {
        g_iForwardId[0] = register_forward( FM_PlayerPreThink, "fwdPlayerPreThink" );
        g_iForwardId[1] = register_forward( FM_PlayerPostThink, "fwdPlayerPostThink" );
        g_iForwardId[2] = register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 );
        
        g_bSemiclipEnabled = true;
    }
    else
        g_bSemiclipEnabled = false;
    
    g_iMaxPlayers = get_maxplayers( );
}

public fwdPlayerPreThink( plr )
{
    static id, last_think;

    if( last_think > plr )
    {
        for( id = 1; id <= g_iMaxPlayers; id++ )
        {
            if ( is_user_alive( id ) && zp_get_user_zombie( id ) )
            {
                if( get_pcvar_num( g_iCvar[1] ) )
                    g_iTeam[id] = get_user_team( id );
                
                g_bSolid[id] = pev( id, pev_solid ) == SOLID_SLIDEBOX ? true : false;
                pev( id, pev_origin, g_fOrigin[id] );
            }
            else
                g_bSolid[id] = false;
        }
    }

    last_think = plr;

    if( g_bSolid[plr] )
    {
        for( id = 1; id <= g_iMaxPlayers; id++ )
        {
            if( g_bSolid[id] && get_distance_f( g_fOrigin[plr], g_fOrigin[id] ) <= DISTANCE && id != plr )
            {
                if( get_pcvar_num( g_iCvar[1] ) && g_iTeam[plr] != g_iTeam[id] )
                    return FMRES_IGNORED;
    
                set_pev( id, pev_solid, SOLID_NOT );
                g_bHasSemiclip[id] = true;
            }
        }
    }

    return FMRES_IGNORED;
}

public fwdPlayerPostThink( plr )
{
    static id;

    for( id = 1; id <= g_iMaxPlayers; id++ )
    {
        if( g_bHasSemiclip[id] )
        {
            set_pev( id, pev_solid, SOLID_SLIDEBOX );
            g_bHasSemiclip[id] = false;
        }
    }
}

public fwdAddToFullPack_Post( es_handle, e, ent, host, hostflags, player, pset )
{
    if( player )
    {
        if( g_bSolid[host] && g_bSolid[ent] && get_distance_f( g_fOrigin[host], g_fOrigin[ent] ) <= DISTANCE )
        {
            if( get_pcvar_num( g_iCvar[1] ) && g_iTeam[host] != g_iTeam[ent] )
                return FMRES_IGNORED;
                
            set_es( es_handle, ES_Solid, SOLID_NOT ); // makes semiclip flawless
            
            if( get_pcvar_num( g_iCvar[2] ) == 1 )
            {
                set_es( es_handle, ES_RenderMode, kRenderTransAlpha );
                set_es( es_handle, ES_RenderAmt, 85 );
            }
            else if( get_pcvar_num( g_iCvar[2] ) == 2 )
            {
                set_es( es_handle, ES_Effects, EF_NODRAW );
                set_es( es_handle, ES_Solid, SOLID_NOT );
            }
        }
    }
    
    return FMRES_IGNORED;
}

// is there a better way to detect changings of g_iCvar[0]?
public fwdClientCommand( plr )
{
    // use the forwards just when needed, for good performance
    if( !get_pcvar_num( g_iCvar[0] ) && g_bSemiclipEnabled )
    {
        unregister_forward( FM_PlayerPreThink, g_iForwardId[0] );
        unregister_forward( FM_PlayerPostThink, g_iForwardId[1] );
        unregister_forward( FM_AddToFullPack, g_iForwardId[2], 1 );
        
        g_bSemiclipEnabled = false;
    }
    else if( get_pcvar_num( g_iCvar[0] ) && !g_bSemiclipEnabled )
    {
        g_iForwardId[0] = register_forward( FM_PlayerPreThink, "fwdPlayerPreThink" );
        g_iForwardId[1] = register_forward( FM_PlayerPostThink, "fwdPlayerPostThink" );
        g_iForwardId[2] = register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 );
        
        g_bSemiclipEnabled = true;
    }
}


Отредактировал: Hnt, - 1.12.2012, 18:17
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя proosti
сообщение 1.12.2012, 17:33
Сообщение #3
Стаж: 13 лет

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

Цитата(Hnt @ 1.12.2012, 17:54) *
Скрытый текст
Код
#include <amxmodx>
#include <fakemeta>

#pragma semicolon 1

#define DISTANCE 120
#define TIME 10.0

new g_iTeam[33];
new bool:g_bSolid[33];
new bool:g_bHasSemiclip[33];
new Float:g_fOrigin[33][3];

new bool:g_bSemiclipEnabled;

new g_iForwardId[3];
new g_iMaxPlayers;
new g_iCvar[3];
new g_Work;

public plugin_init( )
{
register_plugin( "(Team-)Semiclip", "1.2", "SchlumPF*/Empower" );

g_iCvar[0] = register_cvar( "semiclip_enabled", "1" );
g_iCvar[1] = register_cvar( "semiclip_teamclip", "0" );
g_iCvar[2] = register_cvar( "semiclip_transparancy", "1" );

register_forward( FM_ClientCommand, "fwdClientCommand" );

if( get_pcvar_num( g_iCvar[0] ) )
{
g_iForwardId[0] = register_forward( FM_PlayerPreThink, "fwdPlayerPreThink" );
g_iForwardId[1] = register_forward( FM_PlayerPostThink, "fwdPlayerPostThink" );
g_iForwardId[2] = register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 );

g_bSemiclipEnabled = true;
}
else
g_bSemiclipEnabled = false;

g_iMaxPlayers = get_maxplayers( );

register_event("HLTV", "event_round_start", "a", "1=0", "2=0");
}

public event_round_start()
{
g_Work = true;
set_task(TIME,"reset_state");
}

public reset_state()
g_Work = false;

public fwdPlayerPreThink( plr )
{
if(!g_Work)
return FMRES_IGNORED;

static id, last_think;

if( last_think > plr)
{
for( id = 1; id <= g_iMaxPlayers; id++ )
{
if( is_user_alive( id ) )
{
if( get_pcvar_num( g_iCvar[1] ) )
g_iTeam[id] = get_user_team( id );

g_bSolid[id] = pev( id, pev_solid ) == SOLID_SLIDEBOX ? true : false;
pev( id, pev_origin, g_fOrigin[id] );
}
else
g_bSolid[id] = false;
}
}

last_think = plr;

if( g_bSolid[plr] )
{
for( id = 1; id <= g_iMaxPlayers; id++ )
{
if( g_bSolid[id] && get_distance_f( g_fOrigin[plr], g_fOrigin[id] ) <= DISTANCE && id != plr )
{
if( get_pcvar_num( g_iCvar[1] ) && g_iTeam[plr] != g_iTeam[id] )
return FMRES_IGNORED;

set_pev( id, pev_solid, SOLID_NOT );
g_bHasSemiclip[id] = true;
}
}
}

return FMRES_IGNORED;
}

public fwdPlayerPostThink( plr )
{
if(!g_Work)
return;

static id;

for( id = 1; id <= g_iMaxPlayers; id++ )
{
if( g_bHasSemiclip[id] )
{
set_pev( id, pev_solid, SOLID_SLIDEBOX );
g_bHasSemiclip[id] = false;
}
}
}

public fwdAddToFullPack_Post( es_handle, e, ent, host, hostflags, player, pset )
{
if( player && g_Work)
{
if( g_bSolid[host] && g_bSolid[ent] && get_distance_f( g_fOrigin[host], g_fOrigin[ent] ) <= DISTANCE )
{
if( get_pcvar_num( g_iCvar[1] ) && g_iTeam[host] != g_iTeam[ent] )
return FMRES_IGNORED;

set_es( es_handle, ES_Solid, SOLID_NOT ); // makes semiclip flawless

if( get_pcvar_num( g_iCvar[2] ) == 1 )
{
set_es( es_handle, ES_RenderMode, kRenderTransAlpha );
set_es( es_handle, ES_RenderAmt, 85 );
}
else if( get_pcvar_num( g_iCvar[2] ) == 2 )
{
set_es( es_handle, ES_Effects, EF_NODRAW );
set_es( es_handle, ES_Solid, SOLID_NOT );
}
}
}

return FMRES_IGNORED;
}

// is there a better way to detect changings of g_iCvar[0]?
public fwdClientCommand( plr )
{
// use the forwards just when needed, for good performance
if( !get_pcvar_num( g_iCvar[0] ) && g_bSemiclipEnabled )
{
unregister_forward( FM_PlayerPreThink, g_iForwardId[0] );
unregister_forward( FM_PlayerPostThink, g_iForwardId[1] );
unregister_forward( FM_AddToFullPack, g_iForwardId[2], 1 );

g_bSemiclipEnabled = false;
}
else if( get_pcvar_num( g_iCvar[0] ) && !g_bSemiclipEnabled )
{
g_iForwardId[0] = register_forward( FM_PlayerPreThink, "fwdPlayerPreThink" );
g_iForwardId[1] = register_forward( FM_PlayerPostThink, "fwdPlayerPostThink" );
g_iForwardId[2] = register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 );

g_bSemiclipEnabled = true;
}
}


Благодарен)


И еще вопросик, это плагин Только на некоторое время или на весь раунд?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
WMP
сообщение 3.12.2012, 15:02
Сообщение #4
Стаж: 13 лет

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

По умолчанию, там стоит 10 секунд. Если выставить 0, то будет всегда.
#define TIME 10.0 => 0
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: