AMX MOD X
Среда, 05.02.2025, 23:35:02



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

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

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
Weapon Touch Details
VENДата: Четверг, 04.01.2007, 19:52:00 | Сообщение # 1
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Некоторые кодеры испытывают проблемы при определении следующих деталей при соприкосновении игрока с оружием:
- WeaponBoxToucherClientIndex
- WeaponBoxOwnerClientIndex
- WeaponIndex
- WeaponName
- WeaponBoxEntityIndex
- WeaponEntityIndex

Данный плагин показывает, как можно получить вышеприведенные детали.

Примечание: weaponbox entity - не является "оружием", это entity-"коробка", которая "содержит" weapon_* entity, т.е. настоящую weapon entity.

Прикрепления: 46808383.zip (1.3 Kb)


Сообщение отредактировал VEN - Пятница, 05.01.2007, 00:24:19
 
slogicДата: Четверг, 04.01.2007, 23:58:26 | Сообщение # 2
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Code
    // is weapon not on the ground?
  if (!(pev(ent, pev_flags) & FL_ONGROUND))
   return FMRES_IGNORED

Это ненадежный код. У меня были случаи, когда объект был вроде бы на земле (короче не двигался по вертикали), но флаг не был установлен. В частности такое возникает, если объект лежит на решетке. Так что самый надежный способ - проверить скорость объекта по вертикали (координату Z).
 
VENДата: Пятница, 05.01.2007, 00:43:31 | Сообщение # 3
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
А что насчет pfnEntIsOnFloor?

Добавлено (2007-01-05, 0:06 Am)
---------------------------------------------
Насчет скорости - не будет работать для entities с MOVETYPE_NONE, например.

Добавлено (2007-01-05, 0:43 Am)
---------------------------------------------
Quote
Это ненадежный код
В общем, изменил на pfnEntIsOnFloor метод - посмотришь по возможности, насколько он надежен. На breakable решетке не смог протестить, т.к. entity на ней не задерживается, brush решетки - не знаю, на каких картах есть (по крайней мере, мелкие горизонтальные).

 
slogicДата: Пятница, 05.01.2007, 00:46:23 | Сообщение # 4
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Тоже пробовал. О чем может идти речь, если, используя функцию EngFunc_DropToFloor, объект оказывался ПОД решеткой, хотя если придать ему свободное падение, то он останавливался на решетке.

Quote (VEN)
Насчет скорости - не будет работать для entities с MOVETYPE_NONE, например.

А ты уверен, что в этом случае FL_ONGROUND вообще будет когда-либо установлен? К счастью для объектов, которым не чужда физика, такой тип движения никогда не будет установлен.

 
VENДата: Пятница, 05.01.2007, 01:05:28 | Сообщение # 5
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Quote
О чем может идти речь, если, используя функцию EngFunc_DropToFloor, объект оказывался ПОД решеткой, хотя если придать ему свободное падение, то он останавливался на решетке.
Очень странное поведение...

Quote
А ты уверен, что в этом случае FL_ONGROUND вообще будет когда-либо установлен?
Ну, возможно, будет установлен, если такую entity поместить например в solid brush. Хотя, не уверен, и это, действительно, не важно...

Добавлено (2007-01-05, 1:05 Am)
---------------------------------------------
Кстати, было подозрение на "банальность" pfnEntIsOnFloor, т.е. на использование того же FL_ONGROUND флага, но тест показал, что функция "умней".

Вердикт: MustUse.

 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2025