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

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

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

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

AntiBlock

Статус пользователя WOODYM4N
сообщение 22.3.2014, 21:05
Сообщение #1
Стаж: 12 лет

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

Плагин Антиблок. Мужики можно ли сделать, что бы показывало инфо ,в тот момент когда можно проходить через игроков?


Исходник
#include <amxmodx>
#include <fakemeta>

#define TASKID 367280

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

new g_Time
new g_Work

new const Float:size[][3] =
{
{0.0, 1.0, 0.0}, {0.0, -1.0, 0.0}, {1.0, 0.0, 0.0}, {-1.0, 0.0, 0.0}, {0.0, 0.0, 1.0}, {0.0, 0.0, -1.0}, {-1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}, {1.0, -1.0, 1.0}, {1.0, 1.0, -1.0}, {-1.0, -1.0, 1.0}, {1.0, -1.0, -1.0}, {-1.0, 1.0, -1.0}, {-1.0, -1.0, -1.0},
{0.0, 2.0, 0.0}, {0.0, -2.0, 0.0}, {2.0, 0.0, 0.0}, {-2.0, 0.0, 0.0}, {0.0, 0.0, 2.0}, {0.0, 0.0, -2.0}, {-2.0, 2.0, 2.0}, {2.0, 2.0, 2.0}, {2.0, -2.0, 2.0}, {2.0, 2.0, -2.0}, {-2.0, -2.0, 2.0}, {2.0, -2.0, -2.0}, {-2.0, 2.0, -2.0}, {-2.0, -2.0, -2.0},
{0.0, 3.0, 0.0}, {0.0, -3.0, 0.0}, {3.0, 0.0, 0.0}, {-3.0, 0.0, 0.0}, {0.0, 0.0, 3.0}, {0.0, 0.0, -3.0}, {-3.0, 3.0, 3.0}, {3.0, 3.0, 3.0}, {3.0, -3.0, 3.0}, {3.0, 3.0, -3.0}, {-3.0, -3.0, 3.0}, {3.0, -3.0, -3.0}, {-3.0, 3.0, -3.0}, {-3.0, -3.0, -3.0},
{0.0, 4.0, 0.0}, {0.0, -4.0, 0.0}, {4.0, 0.0, 0.0}, {-4.0, 0.0, 0.0}, {0.0, 0.0, 4.0}, {0.0, 0.0, -4.0}, {-4.0, 4.0, 4.0}, {4.0, 4.0, 4.0}, {4.0, -4.0, 4.0}, {4.0, 4.0, -4.0}, {-4.0, -4.0, 4.0}, {4.0, -4.0, -4.0}, {-4.0, 4.0, -4.0}, {-4.0, -4.0, -4.0},
{0.0, 5.0, 0.0}, {0.0, -5.0, 0.0}, {5.0, 0.0, 0.0}, {-5.0, 0.0, 0.0}, {0.0, 0.0, 5.0}, {0.0, 0.0, -5.0}, {-5.0, 5.0, 5.0}, {5.0, 5.0, 5.0}, {5.0, -5.0, 5.0}, {5.0, 5.0, -5.0}, {-5.0, -5.0, 5.0}, {5.0, -5.0, -5.0}, {-5.0, 5.0, -5.0}, {-5.0, -5.0, -5.0}
}

public plugin_init()
{
register_plugin("AntiBlock", "1.2", "pic")

g_Time = register_cvar("antiblock_time", "5.0")

register_forward(FM_PlayerPreThink, "fwdPlayerPreThink")
register_forward(FM_PlayerPostThink, "fwdPlayerPostThink")
register_forward(FM_AddToFullPack, "fwdAddToFullPack_Post", 1)

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

public event_round_start()
{
if (task_exists(TASKID))
remove_task(TASKID)

g_Work = true
set_task(get_pcvar_float(g_Time), "reset_state", TASKID)
}

public reset_state()
{
g_Work = false
checkstuck
}

public checkstuck()
{
static players[32], num, player
get_players(players, num, "ach")
static Float:origin[3]
static Float:mins[3]
static Float:vec[3]
static o,i
for(i=0; i<num; i++)
{
player = players[i]
pev(player, pev_origin, origin)
if (!is_hull_vacant(origin, player))
{
pev(player, pev_mins, mins)
for (o=0; o < sizeof size; ++o)
{
vec[0] = origin[0] - mins[0] * size[o][0]
vec[1] = origin[1] - mins[1] * size[o][1]
vec[2] = origin[2] - mins[2] * size[o][2]
if (is_user_alive(player) && is_hull_vacant(vec, player))
{
engfunc(EngFunc_SetOrigin, player, vec)
o = sizeof size
}
}
}
}
}

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

static i, players[32], num, player, last_think
get_players(players, num, "ach")

if(last_think > plr)
{
for(i=0; i<num; i++)
{
player = players[i]
if(is_user_alive(player))
{
g_bSolid[player] = pev(player, pev_solid) == SOLID_SLIDEBOX ? true : false
pev(player, pev_origin, g_fOrigin[player])
}
else
g_bSolid[player] = false
}
}
last_think = plr
if(g_bSolid[plr])
{
for(i=0; i<num; i++)
{
player = players[i]
if(g_bSolid[player] && player != plr && get_user_team(player) == get_user_team(plr))
{
set_pev(player, pev_solid, SOLID_NOT)
g_bHasSemiclip[player] = true
}
}
}
return FMRES_IGNORED
}

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

static i, players[32], num, player
get_players(players, num, "ach")

for(i=0; i<num; i++)
{
player = players[i]
if(g_bHasSemiclip[player])
{
set_pev(player, pev_solid, SOLID_SLIDEBOX)
g_bHasSemiclip[player] = false
}
}
}

public fwdAddToFullPack_Post(es_handle, e, ent, host, hostflags, player, pset)
{
if(player && g_Work)
{
if(g_bSolid[host] && g_bSolid[ent])
set_es(es_handle, ES_Solid, SOLID_NOT)
}
return FMRES_IGNORED
}

public plugin_end()
{
if(task_exists(TASKID))
remove_task(TASKID)

g_Work = false
}

stock bool:is_hull_vacant(const Float:origin[3],id)
{
static tr
engfunc(EngFunc_TraceHull, origin, origin, 0, pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN, id, tr)
if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen))
return true

return false
}

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Adidasman
сообщение 22.3.2014, 21:14
Сообщение #2


Стаж: 12 лет

Сообщений: 305
Благодарностей: 186
Полезность: 859

Цитата(WOODYM4N @ 23.3.2014, 1:05) *
Плагин Антиблок. Мужики можно ли сделать, что бы показывало инфо ,в тот момент когда можно проходить через игроков?


Исходник
#include <amxmodx>
#include <fakemeta>

#define TASKID 367280

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

new g_Time
new g_Work

new const Float:size[][3] =
{
{0.0, 1.0, 0.0}, {0.0, -1.0, 0.0}, {1.0, 0.0, 0.0}, {-1.0, 0.0, 0.0}, {0.0, 0.0, 1.0}, {0.0, 0.0, -1.0}, {-1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}, {1.0, -1.0, 1.0}, {1.0, 1.0, -1.0}, {-1.0, -1.0, 1.0}, {1.0, -1.0, -1.0}, {-1.0, 1.0, -1.0}, {-1.0, -1.0, -1.0},
{0.0, 2.0, 0.0}, {0.0, -2.0, 0.0}, {2.0, 0.0, 0.0}, {-2.0, 0.0, 0.0}, {0.0, 0.0, 2.0}, {0.0, 0.0, -2.0}, {-2.0, 2.0, 2.0}, {2.0, 2.0, 2.0}, {2.0, -2.0, 2.0}, {2.0, 2.0, -2.0}, {-2.0, -2.0, 2.0}, {2.0, -2.0, -2.0}, {-2.0, 2.0, -2.0}, {-2.0, -2.0, -2.0},
{0.0, 3.0, 0.0}, {0.0, -3.0, 0.0}, {3.0, 0.0, 0.0}, {-3.0, 0.0, 0.0}, {0.0, 0.0, 3.0}, {0.0, 0.0, -3.0}, {-3.0, 3.0, 3.0}, {3.0, 3.0, 3.0}, {3.0, -3.0, 3.0}, {3.0, 3.0, -3.0}, {-3.0, -3.0, 3.0}, {3.0, -3.0, -3.0}, {-3.0, 3.0, -3.0}, {-3.0, -3.0, -3.0},
{0.0, 4.0, 0.0}, {0.0, -4.0, 0.0}, {4.0, 0.0, 0.0}, {-4.0, 0.0, 0.0}, {0.0, 0.0, 4.0}, {0.0, 0.0, -4.0}, {-4.0, 4.0, 4.0}, {4.0, 4.0, 4.0}, {4.0, -4.0, 4.0}, {4.0, 4.0, -4.0}, {-4.0, -4.0, 4.0}, {4.0, -4.0, -4.0}, {-4.0, 4.0, -4.0}, {-4.0, -4.0, -4.0},
{0.0, 5.0, 0.0}, {0.0, -5.0, 0.0}, {5.0, 0.0, 0.0}, {-5.0, 0.0, 0.0}, {0.0, 0.0, 5.0}, {0.0, 0.0, -5.0}, {-5.0, 5.0, 5.0}, {5.0, 5.0, 5.0}, {5.0, -5.0, 5.0}, {5.0, 5.0, -5.0}, {-5.0, -5.0, 5.0}, {5.0, -5.0, -5.0}, {-5.0, 5.0, -5.0}, {-5.0, -5.0, -5.0}
}

public plugin_init()
{
register_plugin("AntiBlock", "1.2", "pic")

g_Time = register_cvar("antiblock_time", "5.0")

register_forward(FM_PlayerPreThink, "fwdPlayerPreThink")
register_forward(FM_PlayerPostThink, "fwdPlayerPostThink")
register_forward(FM_AddToFullPack, "fwdAddToFullPack_Post", 1)

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

public event_round_start()
{
if (task_exists(TASKID))
remove_task(TASKID)

g_Work = true
set_task(get_pcvar_float(g_Time), "reset_state", TASKID)
}

public reset_state()
{
g_Work = false
checkstuck
}

public checkstuck()
{
static players[32], num, player
get_players(players, num, "ach")
static Float:origin[3]
static Float:mins[3]
static Float:vec[3]
static o,i
for(i=0; i<num; i++)
{
player = players[i]
pev(player, pev_origin, origin)
if (!is_hull_vacant(origin, player))
{
pev(player, pev_mins, mins)
for (o=0; o < sizeof size; ++o)
{
vec[0] = origin[0] - mins[0] * size[o][0]
vec[1] = origin[1] - mins[1] * size[o][1]
vec[2] = origin[2] - mins[2] * size[o][2]
if (is_user_alive(player) && is_hull_vacant(vec, player))
{
engfunc(EngFunc_SetOrigin, player, vec)
o = sizeof size
}
}
}
}
}

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

static i, players[32], num, player, last_think
get_players(players, num, "ach")

if(last_think > plr)
{
for(i=0; i<num; i++)
{
player = players[i]
if(is_user_alive(player))
{
g_bSolid[player] = pev(player, pev_solid) == SOLID_SLIDEBOX ? true : false
pev(player, pev_origin, g_fOrigin[player])
}
else
g_bSolid[player] = false
}
}
last_think = plr
if(g_bSolid[plr])
{
for(i=0; i<num; i++)
{
player = players[i]
if(g_bSolid[player] && player != plr && get_user_team(player) == get_user_team(plr))
{
set_pev(player, pev_solid, SOLID_NOT)
g_bHasSemiclip[player] = true
}
}
}
return FMRES_IGNORED
}

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

static i, players[32], num, player
get_players(players, num, "ach")

for(i=0; i<num; i++)
{
player = players[i]
if(g_bHasSemiclip[player])
{
set_pev(player, pev_solid, SOLID_SLIDEBOX)
g_bHasSemiclip[player] = false
}
}
}

public fwdAddToFullPack_Post(es_handle, e, ent, host, hostflags, player, pset)
{
if(player && g_Work)
{
if(g_bSolid[host] && g_bSolid[ent])
set_es(es_handle, ES_Solid, SOLID_NOT)
}
return FMRES_IGNORED
}

public plugin_end()
{
if(task_exists(TASKID))
remove_task(TASKID)

g_Work = false
}

stock bool:is_hull_vacant(const Float:origin[3],id)
{
static tr
engfunc(EngFunc_TraceHull, origin, origin, 0, pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN, id, tr)
if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen))
return true

return false
}



теоретически нет. у модельки свойство прозрачное.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя WOODYM4N
сообщение 22.3.2014, 21:18
Сообщение #3
Стаж: 12 лет

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

Цитата(Adidasman @ 22.3.2014, 21:14) *
теоретически нет. у модельки свойство прозрачное.

здесь они не прозрачные
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Adidasman
сообщение 22.3.2014, 21:42
Сообщение #4


Стаж: 12 лет

Сообщений: 305
Благодарностей: 186
Полезность: 859

Цитата(WOODYM4N @ 23.3.2014, 1:18) *
здесь они не прозрачные


хотя глянул исход вижу что меняет свойство модели на период проходимости. (как бы функция поэтому и не работает при наведении прицела на модель якобы нету объекта)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя WOODYM4N
сообщение 23.3.2014, 12:35
Сообщение #5
Стаж: 12 лет

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

Цитата(Adidasman @ 22.3.2014, 21:42) *
хотя глянул исход вижу что меняет свойство модели на период проходимости. (как бы функция поэтому и не работает при наведении прицела на модель якобы нету объекта)

и что никак нельзя сделать? Я просто видел на каком то сервере, там работало всё, но не могу его найти...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 23.3.2014, 22:17
Сообщение #6


Стаж: 13 лет

Сообщений: 227
Благодарностей: 262
Полезность: 977

Могу сделать (не бесплатно), если интересует, пиши в ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: