|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
env_explosion
|
|
slogic | Дата: Среда, 28.03.2007, 11:21:23 | Сообщение # 1 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| С пом. HAM модуля переопределил owner на рельного игрока. Думал может в этом случае отправит DeathMsg если кого-то убьет при use. Нифига не получилось. Получается в CS (по сравнению с HLDM) намеренно отключили для этого объекта отправку DeathMsg? Может еще есть какие идеи?
|
|
| |
VEN | Дата: Среда, 28.03.2007, 13:38:43 | Сообщение # 2 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Quote | С пом. HAM модуля переопределил owner на рельного игрока | Т.е. attacker (потому как, чтобы переопределить owner, дополнительный модуль не требуется)? Quote | Получается в CS (по сравнению с HLDM) намеренно отключили для этого объекта отправку DeathMsg? | Объект тут не причем. Все дело в dmg type. Если ты заметил, при сметри от C4 grenade, ситуация такая же. dmg type в этих случаях DMG_BLAST. Вот если изменить его, например наCode | #define DMG_CSHEGREN (1<<24) | DeathMsg уже будет отправляться. Также будет присваиваться +1 death для каждой victim. Причем, если изменить attacker, количество фрагов будет присваиваться также, как если бы это был взрыв от гранаты. Если victim == attacker || teammate: -1 frag (за каждую victim). Если victim != attacker || teammate: +1 frag (за каждую victim). Кстати, для установленной C4 (classname grenade) attacker'a (attacker = owner) форсировать не нужно (как в случае с env_explosion) - это будет C4 owner. В остальном ситуация очень схожа с вышеописанной. P.S.: Я считаю, что в свете вышеизложенного, твой deathmsg fix плагин может перейти на более "качественную ступень".
Сообщение отредактировал VEN - Среда, 28.03.2007, 13:47:50 |
|
| |
slogic | Дата: Среда, 28.03.2007, 16:04:52 | Сообщение # 3 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Quote (VEN) | Т.е. attacker (потому как, чтобы переопределить owner, дополнительный модуль не требуется)? | Внутри вызова forward_use я выставил owner env_explosion на игрока, а также сделал вызов (оба ваиранта пробовал) 1) hs_use(ent, g_iClientUsingTank[i], i, use_type, use_value) 2) hs_use(ent, i, i, use_type, use_value) заблокировав оригинальный use. где g_iClientUsingTank[i] - содержит ID сущности, которую юзает игрок. Оказывается, проблема была не во владельце. Спсибо за инфу. Я такой зависимости не уловил. Как-то не догадался dmg_type менять. Да и повода не было.
Сообщение отредактировал slogic - Среда, 28.03.2007, 16:06:00 |
|
| |
slogic | Дата: Воскресенье, 01.04.2007, 00:51:21 | Сообщение # 4 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| VEN, а откуда у тебя появился DMG_CSHEGREN (1<<24)? Я доделал свой test_event_DeathMsg.sma (добавил с запасом флагов), убил себя гранатой. dmg_flags был равен 0, т.е. DMG_GENERIC.
|
|
| |
VEN | Дата: Воскресенье, 01.04.2007, 12:20:50 | Сообщение # 5 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| А ты все из Damage event dmg flag'и выдергиваешь? Я думал, уже ученый в этой области. Юзай "бутерброд", чтобы узнать реальный dmg type, а не тот, который передается клиенту для отображения иконок.
|
|
| |
slogic | Дата: Понедельник, 02.04.2007, 13:25:47 | Сообщение # 6 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Quote (VEN) | P.S.: Я считаю, что в свете вышеизложенного, твой deathmsg fix плагин может перейти на более "качественную ступень". | Если не использовать ham модуль для перехвата takedamage, то мне как раз выгоднее испольовать текущий DeathMsg Fix, т.к. он нормализует порядок (в контексте естественной очереди событий, а не как это должно быть в игре) Damage и DeathMsg. Ведь некоторые признаки классфикации повреждения я могу почерпнуть только из Damage события. Т.о. когда DeathMsg уже вызвано, уже поздно что-то делать. Если его блокиорвать, и отсылать после того какая классифицировал тип повреждения, это очень рискованно и плагин должен быть надежен на 99,9% как минимум. Хотя takedamage я еще не применял. Может все изменится когда пойму его "изюминку". Quote (VEN) | Я думал, уже ученый в этой области. | Просто у меня нет такой любви как у тебя к исследованиям. Меня это утомляет. А потом начинает раздражать, когда результат выходит в незапланированные сроки.
|
|
| |
slogic | Дата: Среда, 04.04.2007, 22:53:56 | Сообщение # 7 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Ну вот, плагинчик Blast Damage Patch - корректно исправляет отсутствие посылки DeathMsg у env_explosion. Буквально пара строк кода =) И работает идеально, последовательность событий, опять же - корректная. Функционал придется внедрить в Score Tank Kill, т.к. иначе очень неудобно получится заменять/исправлять атакующего в DeathMsg. Кстати, плагин DeathMsg Fix получается универсальным средством, но менее корректным, хотя и абсолютно бесконфликтным если, например, использовать параллельно с тем же Blast Damage Patch.
Сообщение отредактировал slogic - Среда, 04.04.2007, 22:55:58 |
|
| |
VEN | Дата: Четверг, 05.04.2007, 11:41:34 | Сообщение # 8 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| hs_takedamage(victim, inflictor, attacker, dmg, (dmg_type & ~DMG_BLAST) | DMG_HEGRENADE)
|
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |