AMXX / REAPI как сделать игрока невидимым для другого игрока

Сообщения
1,570
Реакции
652
Помог
5 раз(а)
Как сделать игрока невидимым только для определенного игрока.

Только через fullpack ? Может кто пример написать?
 
Сообщения
1,570
Реакции
652
Помог
5 раз(а)
Nordic Warrior, первая ссылка там ничего нет по этому поводу вообще, а вторая ссылка там тоже не написано как сделать игрока невидимым для другого)
 
Сообщения
1,570
Реакции
652
Помог
5 раз(а)
Нашел что-то тут BLOG "Моё хобби" или "как я трачу свободное время" , примерно понял но только не понял кто такой host и кто такой ent
4 Июл 2021
Ну вот пример кода FULLPACK который я еще не протестировал

C++:
public AddToFullPack_Pre(es_handle, e, ent, host, hostflags, bool: player, pSet) {
    if(!player || host > MAX_PLAYERS || ent > MAX_PLAYERS || GOD_SEEKER_DISABLE_VISIBILITY[host] != 4 || !GOD_SEEKER_BAD_USERS[ent] )
        return;
    
    set_es(es_handle, ES_RenderAmt, 1);
    set_es(es_handle, ES_RenderFx, kRenderFxNone);
    set_es(es_handle, ES_RenderMode, kRenderTransAlpha);
}
host это игрок который невидимый а ent игрок которому отправляется информация ?


будет работать? :)
 
Сообщения
78
Реакции
65
karaulov,
AddToFullPack Return 1 if the entity state has been filled in for the ent and the entity will be propagated to the client, 0 otherwise state is the server maintained copy of the state info that is transmitted to the client a MOD could alter values copied into state to send the "host" a different look for a particular entity update, etc. e and ent are the entity that is being added to the update, if 1 is returned host is the player's edict of the player whom we are sending the update to player is 1 if the ent/e is a player and 0 otherwise pSet is either the PAS or PVS that we previous set up. We can use it to ask the engine to filter the entity against the PAS or PVS. we could also use the pas/ pvs that we set in SetupVisibility, if we wanted to. Caching the value is valid in that case, but still only for the current frame
источник
А пример можешь посмотреть в плагинах которые реализуют invis меню (когда для повышения фпс можно скрыть всех игроков).
Вот пример из моего плагина
Код:
public FM_client_AddToFullPack_Post(es, e, ent, host, hostflags, player, pSet)
{
    if( player )
    {
        if(gViewInvisible[host])
        {
            set_es(es, ES_RenderMode, kRenderTransTexture)
            set_es(es, ES_RenderAmt, 0)
            set_es(es, ES_Origin, { 999999999.0, 999999999.0, 999999999.0 } )
        }
    }
    else if( gWaterInvisible[host] && gWaterEntity[ent] )
    {
        set_es(es, ES_Effects, get_es( es, ES_Effects ) | EF_NODRAW )
    }
  
    return FMRES_IGNORED
}
 
Сообщения
1,570
Реакции
652
Помог
5 раз(а)
Lopol2010,

первая часть не только делает модель прозрачной а и еще перемещает в кудато далеко далеко?)))

А вторая часть кода просто делает модель невидимой?

ну я уже вроде бы разобрался как это работает) кажись в плагине работает как надо.
 
Сообщения
1,570
Реакции
652
Помог
5 раз(а)
ну в моем случае наоборот надо что бы игрок на месте был) ну ладно спасибо уже нашел вариант решения в другой теме)
 

Garey

ninjaCow
Сообщения
422
Реакции
1,056
Помог
10 раз(а)
karaulov, не посылай в fullpack вообще игрока и всё
Код:
forward_return(FMV_CELL,0)
return FMRES_SUPERCEDE
Хук пре очевидно
 
Сообщения
1,570
Реакции
652
Помог
5 раз(а)
Garey, ну мне надо что бы он был там) в том то и дело, если его не будет то его с читом никто не увидит же )

Код:
register_forward(FM_AddToFullPack, "AddToFullPack_Pre", ._post = true);
...
public AddToFullPack_Pre(es_handle, e, ent, host, hostflags, bool: player, pSet) {
    if(!player || host > MAX_PLAYERS || ent > MAX_PLAYERS || GOD_SEEKER_DISABLE_VISIBILITY[ent] != 4 || !GOD_SEEKER_BAD_USERS[host] )
        return;
   
    set_es(es_handle, ES_RenderAmt, 0);
    set_es(es_handle, ES_RenderFx, kRenderFxNone);
    set_es(es_handle, ES_RenderMode, kRenderTransAlpha);
}
А имеет значение в PRE или в POST редактировать данные?
 

Garey

ninjaCow
Сообщения
422
Реакции
1,056
Помог
10 раз(а)
karaulov, тогда в пост надо если хочешь передать данные после добавления энитити в лист для отправки.
register_forward(FM_AddToFullPack, "AddToFullPack_Pre", ._post = true);
найс нейминг
 
Сообщения
1,570
Реакции
652
Помог
5 раз(а)
Garey, да скопипастил чужой код незаметно но переименовать забыл)
 

Garey

ninjaCow
Сообщения
422
Реакции
1,056
Помог
10 раз(а)
karaulov, проверка на host > MAX_PLAYERS || ent > MAX_PLAYERS - лишняя host всегда будет игроком (мы не посылаем инфу о энтитях - энтитям оО). И если player == true то ent это игрок.
 
Сообщения
1,570
Реакции
652
Помог
5 раз(а)
Garey, ну перестраховался на всякий) ну да чем меньше ненужных проверок тем лучше)
4 Июл 2021
Это я делал костыль для прозрачной модели, ведь у тех кто использует cl_minmodels надо было тоже сделать игрока прозрачным, хотя бы как-то)
 
Сообщения
3,582
Реакции
1,570
Помог
137 раз(а)
karaulov, как cl_minmodels влияет на прозрачность?
 
Сообщения
1,570
Реакции
652
Помог
5 раз(а)
Nordic Warrior, ну я же сделал прозрачную модель как один из видов невидимости в плагине, а у тех кто с cl_minmodels - модель обычная а не прозрачная((( пришлось придумать костыль)
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу