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

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

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

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

нужно переделать плагин semiclip

, inside
Статус пользователя kupuk96
сообщение 5.2.2011, 12:01
Сообщение #1


Стаж: 15 лет

Сообщений: 456
Благодарностей: 139
Полезность: 554

привет всем.
помогите переделать плагин semiclip так, чтобы когда игрок застрял в другом игроке его ударяло(slap) и он отлетал. (видел сегодня на одном сервере)
или может быть уже есть такой плагин...
teamsemiclip.sma
Код
#include <amxmodx>
#include <fakemeta>

#pragma semicolon 1

#define DISTANCE 120
#define TIME 20.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;
}


Отредактировал: kupuk96, - 5.2.2011, 22:14
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя aleshqa
сообщение 12.2.2011, 22:37
Сообщение #2


Стаж: 15 лет

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

Ап, ищу тоже помощь.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Doogle
сообщение 12.2.2011, 23:18
Сообщение #3


Стаж: 15 лет

Сообщений: 345
Благодарностей: 93
Полезность: 75

Это надо не переделывать, а ставить дополнительный плагин.
Существует поиск и разделы, в которых много людей просили помощи по этому баяну. И в которых я выкладывал раз по 10 все необходимое.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Senjkee
сообщение 12.2.2011, 23:39
Сообщение #4


Стаж: 16 лет

Сообщений: 187
Благодарностей: 17
Полезность: 7

Переделывай :)
Код
public task_sc_wait ( id )
{
    if ( task_exists ( id ) )
        remove_task ( id )

    if ( is_semiclip ( id ) )
    {
        if ( ++g_duration[id] > 20 )
            user_slap ( id, 0 )

        set_task ( 0.2, "task_sc_wait", id )
    }

    else
        set_solid ( id )

    return PLUGIN_CONTINUE


Отредактировал: Senjkee, - 12.2.2011, 23:54
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя aleshqa
сообщение 13.2.2011, 2:53
Сообщение #5


Стаж: 15 лет

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

Цитата(Doogle @ 13.2.2011, 0:18) *
Это надо не переделывать, а ставить дополнительный плагин.
Существует поиск и разделы, в которых много людей просили помощи по этому баяну. И в которых я выкладывал раз по 10 все необходимое.


Прежде чем отписаться, я юзаю поиск. К сожалению, я не нашёл, со всеми бывает. Можно ссылочку?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Senjkee
сообщение 13.2.2011, 21:19
Сообщение #6


Стаж: 16 лет

Сообщений: 187
Благодарностей: 17
Полезность: 7

Цитата(aleshqa1488 @ 13.2.2011, 3:53) *
Прежде чем отписаться, я юзаю поиск. К сожалению, я не нашёл, со всеми бывает. Можно ссылочку?


Готовый плагин есть только от UFPS но его найти ты наврятли сможешь !
А вставить функцию не так и сложно ! Допили то что дали и вуоля твой плагин :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя aleshqa
сообщение 13.2.2011, 22:30
Сообщение #7


Стаж: 15 лет

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

Если не сложно, сможешь в этот впилить?

CODE
#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;
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Senjkee
сообщение 14.2.2011, 20:57
Сообщение #8


Стаж: 16 лет

Сообщений: 187
Благодарностей: 17
Полезность: 7

В пм скинул :) Сюда не сливай автор не хочет сливать свои исходники в общее пользование!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя aleshqa
сообщение 14.2.2011, 22:08
Сообщение #9


Стаж: 15 лет

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

Спасибо огромное. На своём сайте выложил благодарности.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vvs.escudo
сообщение 15.2.2011, 5:37
Сообщение #10
Стаж: 15 лет

Сообщений: 120
Благодарностей: 14
Полезность: 98

на amx-x этот исходник лежит в общем доступе,юзайте поиск
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STEKk
сообщение 15.2.2011, 10:21
Сообщение #11
Стаж: 15 лет

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

Так где мне взять этот плагин??? я с самого начала следил за этой темой!!! киньте в личку ок?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Senjkee
сообщение 15.2.2011, 17:33
Сообщение #12


Стаж: 16 лет

Сообщений: 187
Благодарностей: 17
Полезность: 7

Цитата(STEKk @ 15.2.2011, 11:21) *
Так где мне взять этот плагин??? я с самого начала следил за этой темой!!! киньте в личку ок?


okey man:)

Цитата(vvs.escudo @ 15.2.2011, 6:37) *
на amx-x этот исходник лежит в общем доступе,юзайте поиск


Там лик на сайт с платным регом :) А дальше кот в мешке:)

Отредактировал: Senjkee, - 16.2.2011, 17:01
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя ViP.Predator
сообщение 16.2.2011, 8:47
Сообщение #13


Стаж: 16 лет

Сообщений: 127
Благодарностей: 89
Полезность: 516

Цитата(Senjkee @ 15.2.2011, 18:33) *
9 исходников ! Всё остальное от пользователей.Надеюсь у c-s.net.ua в платном разделе такого подарка нет :)

Мой Вам совет прикрыть лавочку.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AnDrOiD
сообщение 10.8.2011, 10:29
Сообщение #14


Стаж: 18 лет

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

Senjkee,
aleshqa1488,
Поделитесь плиз результатом того что получилось :)
если не хотите давать исходник, то хотябы сам плагин где #define TIME 15.0
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя H@ROS
сообщение 10.8.2011, 14:18
Сообщение #15


Стаж: 14 лет

Сообщений: 102
Благодарностей: 17
Полезность: 134

Хех парни, да такими темпами вы все плагины UFPS в паблик сольёте. Как надоело говорить одно и то же...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Factor
сообщение 1.10.2011, 20:02
Сообщение #16


Стаж: 14 лет

Сообщений: 388
Благодарностей: 57
Полезность: 142

Вообще-то это дополнительный плагин, кстати вот он,Прикрепленный файл  stuck.rar ( 7,67 килобайт ) Кол-во скачиваний: 24


Отредактировал: Factor, - 1.10.2011, 20:11
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
cs-portal
сообщение 7.10.2011, 17:25
Сообщение #17
Стаж: 16 лет

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

зачем юзать дополн плагин о боже
вам же уже дали подсказку
хукнуть расстояние или если игрок прозрачный сделать сравнение команд -= своя или враг затем slap_user

google
http://forums.alliedmods.net/showthread.php?t=76016

Отредактировал: cs-portal, - 7.10.2011, 17:27
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: