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

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

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

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

semiclip

, Поправить чтобы при наведении на игрока отображался ник
Статус пользователя WarDeN4ik
сообщение 23.8.2014, 20:44
Сообщение #1


Стаж: 12 лет

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

Здравствуйте!
Есть небольшая проблемка с плагином semiclip.amxx
Сам работает как мне нужно, т.е. игроки одной команды могут проходить сквозь друг друга.
Но при наведении на игрока своей команды перестал отображаться ник, а при наведении на противника отображает.
Админам не удобно наказывать, приходится заходить в наблюдатели и смотреть кто это.
Помогите поправить!
Скрытый текст

Код
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#define PLUGIN "Semiclip"
#define VERSION "1.31"
#define AUTHOR "skyjur"

new bool:plrSolid[33]
new bool:plrRestore[33]
new plrTeam[33]

new maxplayers

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_forward(FM_PlayerPreThink, "preThink")
    register_forward(FM_PlayerPostThink, "postThink")
    
    register_forward(FM_AddToFullPack, "addToFullPack", 1)
    
    maxplayers = get_maxplayers()
}

public addToFullPack(es, e, ent, host, hostflags, player, pSet)
{
    if(player)
    {
        if(plrSolid[host] && plrSolid[ent] && plrTeam[host] == plrTeam[ent])
        {
            set_es(es, ES_Solid, SOLID_NOT)
            set_es(es, ES_RenderMode, kRenderTransAlpha)
            set_es(es, ES_RenderAmt, 230)
        }
    }
}

FirstThink()
{
    for(new i = 1; i <= maxplayers; i++)
    {
        if(!is_user_alive(i))
        {
            plrSolid[i] = false
            continue
        }
        
        plrTeam[i] = get_user_team(i)
        plrSolid[i] = pev(i, pev_solid) == SOLID_SLIDEBOX ? true : false
    }
}

public preThink(id)
{
    static i, LastThink
    
    if(LastThink > id)
    {
        FirstThink()
    }
    LastThink = id

    
    if(!plrSolid[id]) return
    
    for(i = 1; i <= maxplayers; i++)
    {
        if(!plrSolid[i] || id == i) continue
        
        if(plrTeam[i] == plrTeam[id])
        {
            set_pev(i, pev_solid, SOLID_NOT)
            plrRestore[i] = true
        }
    }
}

public postThink(id)
{
    static i
    
    for(i = 1; i <= maxplayers; i++)
    {
        if(plrRestore[i])
        {
            set_pev(i, pev_solid, SOLID_SLIDEBOX)
            plrRestore[i] = false
        }
    }
}


Отредактировал: WarDeN4ik, - 23.8.2014, 20:48
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя pist0nchik
сообщение 23.8.2014, 20:49
Сообщение #2


Стаж: 12 лет

Сообщений: 403
Благодарностей: 437
Полезность: 545

отписал твою аську.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 23.8.2014, 20:53
Сообщение #3
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

использовать FM_AddToFullPack для semiclip чистейшей воды извращение


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MATPAC
сообщение 23.8.2014, 20:54
Сообщение #4


Стаж: 12 лет

Сообщений: 117
Благодарностей: 21
Полезность: 131

Какой версии сам плагин?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя WarDeN4ik
сообщение 23.8.2014, 21:02
Сообщение #5


Стаж: 12 лет

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

Цитата(MATPAC @ 23.8.2014, 22:54) *
Какой версии сам плагин?

Под спойлером же
#define PLUGIN "Semiclip"
#define VERSION "1.31"
#define AUTHOR "skyjur"

Цитата(csnet @ 23.8.2014, 22:53) *
использовать FM_AddToFullPack для semiclip чистейшей воды извращение

В скриптинге не шарю, но работает вполне норм, мод Пушки+Лазеры от миррора
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя WarDeN4ik
сообщение 23.8.2014, 21:23
Сообщение #6


Стаж: 12 лет

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

Кстати долго искал подходящий, какие то не работали, в т.ч. модуль, от других почему то экран темнел со временем у всех, то прозрачность сильная.
А этот то что надо, только вот небольшой выше описаный баг.

Отредактировал: WarDeN4ik, - 23.8.2014, 21:24
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя WarDeN4ik
сообщение 24.8.2014, 10:06
Сообщение #7


Стаж: 12 лет

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

Ну может есть плагин который по фиксит баг?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Gig142
сообщение 24.8.2014, 10:14
Сообщение #8
Стаж: 12 лет

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

Цитата(WarDeN4ik @ 24.8.2014, 14:06) *
Ну может есть плагин который по фиксит баг?

У меня тоже пушки + лазеры этот стоит, вроде устраивает.
Код:
#include <amxmodx>
#include <fakemeta>

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[6]
new distance

public plugin_init()
{
register_plugin("Semiclip", "0.2", "Realution")

g_iCvar[0] = register_cvar("semiclip_enabled", "1") // Прохождение сквозь игроков: 1 - включено, 0 - выключено
g_iCvar[1] = register_cvar("semiclip_team", "1") // Возможность прохождения: 1 - только через тиммейтов, 0 - через всех
g_iCvar[2] = register_cvar("semiclip_transparency", "85") // Процент прозрачности 0 - меньше, 100 - больше
g_iCvar[3] = register_cvar("semiclip_button", "1") // Способ прохождения: 1 - только при нажатии на Е, 0 - всегда
g_iCvar[5] = register_cvar("semiclip_distance", "120") // Дистанция для включения прохождения(прозрачности)

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()

distance = get_pcvar_num(g_iCvar[5])
}

public fwdPlayerPreThink(plr)
{
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

if (get_pcvar_num(g_iCvar[3]) && !(pev(plr, pev_button) & IN_USE))
return FMRES_IGNORED

set_pev(id, pev_solid, SOLID_NOT)
g_bHasSemiclip[id] = true // here
}
}
}
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
}
}
return FMRES_IGNORED
}

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

if (get_pcvar_num(g_iCvar[3]) && !(pev(host, pev_button) & IN_USE))
return FMRES_IGNORED

set_es(es_handle, ES_Solid, SOLID_NOT)

if (get_pcvar_num(g_iCvar[2]))
{
new transparency = get_pcvar_num(g_iCvar[2])
set_es(es_handle, ES_RenderMode, kRenderTransAlpha)
set_es(es_handle, ES_RenderAmt, transparency)
}
}
}
return FMRES_IGNORED
}

public fwdClientCommand(plr)
{
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
}
}

Прикрепленные файлы:
Прикрепленный файл  semiclip.sma ( 4,02 килобайт ) Кол-во скачиваний: 43
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: