AMX MOD X
Пятница, 26.04.2024, 07:02:54



Приветствую Вас Гость | RSS
[ Главная ] [ AddToFullPack - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » AddToFullPack (как работать с этой функцией)
AddToFullPack
DaTaДата: Среда, 26.03.2008, 22:28:32 | Сообщение # 1
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
VEN говорил, что можно ловить вызов этой функции fakemet'ой и запрещать отправлять нужным игрокам нужные ентити(состояния энтити?), т.е. у игрока фактически не будет ее видно
вот заголовок с hlsdk(/hlsdk/multiplayer/dlls/client.cpp):
Code
/*
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
*/
int AddToFullPack( struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, unsigned char *pSet )

дальше идет саи код функции, строка 935

Так как я не знаю английского и плохо знаю С++, я не смог понять что она делает и как ней манипулировать с fakemeta, растолкуйте мне, что она делает и что с ней можно делать, пожалуйста :)

 
VENДата: Среда, 26.03.2008, 23:47:07 | Сообщение # 2
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
По сути - отсылает на определенного клиента состояние определенной entity.
Если кратко, то можно использовать как "обман" определенных клиентов.
Например, не показать какую-либо entity определенному клиенту или еще как-то видоизменить ее.
Что возможно менять, см. в fakemeta.inc EntityState enum.
На официальном форуме есть куча примеров, самый популяный - скрытие entity (effects EF_NODARW flag).
 
DaTaДата: Четверг, 27.03.2008, 01:51:25 | Сообщение # 3
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
спс за информацию
а можно еще узнать о аргументах функции?
Вот мои догадки:
struct entity_state_s *state, - структура, которая характеризует состояние энтити
int e, - ?
edict_t *ent, - отправляемая энтити
edict_t *host, - принимающий клиент(игрок)
int hostflags, - ?
int player, - ?
unsigned char *pSet - ?

И еще, на AM утверждают, что нужно регистрировать хук в пост версии, почему?

 
VENДата: Четверг, 27.03.2008, 22:30:06 | Сообщение # 4
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Для эффективного запрещения отсылки состояния entity - в pre (для возможности подавления вызова функции). Для изменения значений членов структуры - в post, иначе они будут перезаписаны во время вызова функции (после pre, перед post).

e - в случае с AMX Mod X значение == ent
hostflags - если значение & 1, и ent flags & FL_SKIPLOCALHOST, и ent owner == host, структура передана не будет
player - если значение == 1, значит, ent - это player, иначе - 0
pSet - PAS/PVS фильтр для CheckVisibility проверки - позволяет передавать структуру entity в случае, если задананные PAS/PVS для нее досягаемы

 
DaTaДата: Четверг, 27.03.2008, 23:59:09 | Сообщение # 5
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
благодарю за полезную информацию :)
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » AddToFullPack (как работать с этой функцией)
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024