LR убийство прострелом в CSS

lar1ch

Участник
Сообщения
106
Реакции
57
Пытаюсь исправить в Модуль плагина - [Levels Ranks] Module - Unusual Kills очки за убийство прострелом, используя Modern Event Hooks.
При убийстве игрока проверяю сколько препятствий прошла пуля
C-подобный:
public void Event_Death(Event event, const char[] name, bool dontBroadcast)
{
    g_iPenetrated = event.GetInt("penetrated");
}
После этого в OnPlayerKilled(Event hEvent, int& iExpGive)
C-подобный:
if(g_iEngine == Engine_CSS && g_iPenetrated > 0)
{
    iUKFlags |= UnusualKill_Penetrated;
}
Но бонус за убийство прострелом засчитывается только после следующего убийства (причем не важно прострелом или нет), скорее всего потому что OnPlayerKilled(Event hEvent, int& iExpGive) выполняется раньше, чем
C-подобный:
HookEvent("player_death", Event_Death);
в OnPluginStart()
Как можно это исправить?
 

tonline_kms65_1

Участник
Сообщения
565
Реакции
225
Пытаюсь исправить в Модуль плагина - [Levels Ranks] Module - Unusual Kills очки за убийство прострелом, используя Modern Event Hooks.
При убийстве игрока проверяю сколько препятствий прошла пуля
C-подобный:
public void Event_Death(Event event, const char[] name, bool dontBroadcast)
{
    g_iPenetrated = event.GetInt("penetrated");
}
После этого в OnPlayerKilled(Event hEvent, int& iExpGive)
C-подобный:
if(g_iEngine == Engine_CSS && g_iPenetrated > 0)
{
    iUKFlags |= UnusualKill_Penetrated;
}
Но бонус за убийство прострелом засчитывается только после следующего убийства (причем не важно прострелом или нет), скорее всего потому что OnPlayerKilled(Event hEvent, int& iExpGive) выполняется раньше, чем
C-подобный:
HookEvent("player_death", Event_Death);
в OnPluginStart()
Как можно это исправить?
Мне интересно, вот этот кусок кода ты написал, а ты вообще понял что он делает? По какому принципу работает?
Я, если не понимаю принципа работы, стараюсь не использовать такие вот "непонятно что". Что бы не получилась "мартышка и очки".
 

tonline_kms65_1

Участник
Сообщения
565
Реакции
225
Ты смотрел исходный код?! Почему-то у меня большие сомнения в этом возникают.
Это как в юнити, подключают кучу неизвестных библиотек, смотрят - заработало, да ну нах. и погнали. А что, почему и как - да по барабану. Работает и ладно.

Если-бы я делал такую шляпу, я бы делал так:
- трассировка по линии выстрела в бесконечность(в пределах коробки(мира))
- получаю координаты первого препятствия(твердое) по линии трассировки, проверяю что это не ENT(игрок).
- получаю след. препятствие(твердое), но уже ENT(игрок). Если по линии трассировки стоят несколько ENT-игроков - всех их в массив.
- теперь получаем дистанции до полученных игроков и препятствий и видим кто или что ближе, кто или что дальше.

Все просто. Какой там OnPlayerKilled(), зачем он тебе, ты же не знаешь как оно работает. Это не конструктор лего, здесь думать нужно, хоть немного.
К чему я это все написал - я сомневаюсь что кто-то за тебя станет думать.
 
  • Ха-ха-ха
Реакции: NaN

NaN

FPE_INTDIV_TRAP
Сообщения
1,513
Реакции
1,487
Ты смотрел исходный код?! Почему-то у меня большие сомнения в этом возникают.
Это как в юнити, подключают кучу неизвестных библиотек, смотрят - заработало, да ну нах. и погнали. А что, почему и как - да по барабану. Работает и ладно.

Если-бы я делал такую шляпу, я бы делал так:
- трассировка по линии выстрела в бесконечность(в пределах коробки(мира))
- получаю координаты первого препятствия(твердое) по линии трассировки, проверяю что это не ENT(игрок).
- получаю след. препятствие(твердое), но уже ENT(игрок). Если по линии трассировки стоят несколько ENT-игроков - всех их в массив.
- теперь получаем дистанции до полученных игроков и препятствий и видим кто или что ближе, кто или что дальше.

Все просто. Какой там OnPlayerKilled(), зачем он тебе, ты же не знаешь как оно работает. Это не конструктор лего, здесь думать нужно, хоть немного.
К чему я это все написал - я сомневаюсь что кто-то за тебя станет думать.
Оффтоп
ну вы навертели костылей. Вместо использования очевидных решений пилить такие велосипеды - браво.
1603247930776.png


Пытаюсь исправить в Модуль плагина - [Levels Ranks] Module - Unusual Kills очки за убийство прострелом, используя Modern Event Hooks.
При убийстве игрока проверяю сколько препятствий прошла пуля
C-подобный:
public void Event_Death(Event event, const char[] name, bool dontBroadcast)
{
    g_iPenetrated = event.GetInt("penetrated");
}
После этого в OnPlayerKilled(Event hEvent, int& iExpGive)
C-подобный:
if(g_iEngine == Engine_CSS && g_iPenetrated > 0)
{
    iUKFlags |= UnusualKill_Penetrated;
}
Но бонус за убийство прострелом засчитывается только после следующего убийства (причем не важно прострелом или нет), скорее всего потому что OnPlayerKilled(Event hEvent, int& iExpGive) выполняется раньше, чем
C-подобный:
HookEvent("player_death", Event_Death);
в OnPluginStart()
Как можно это исправить?
код покажите весь целиком
 

tonline_kms65_1

Участник
Сообщения
565
Реакции
225
Мое лицо, когда я прочитал это
1603248179130.png

ну вы навертели костылей. Вместо использования очевидных решений пилить такие велосипеды - браво.
Я же не знаю какое у тебя лицо в реале, поэтому не удивляюсь. Может так оно и есть.

То-же самое и к тебе - зачем думать? Что то, где то увидел, а как оно работает, зачем оно так работает, да пофигу.
Уважай чужие решения, нет гарантии что исходник этой шляпы не работает по моему-же принципу. Ну или докажи что моё предложение не работоспособно.
Можешь свои предложить, если они у тебя есть конечно. Я никогда не стану пользоваться какой-то, якобы кем-то проверенной, функцией или чем подобным, пока сам не смогу убедиться в её работоспособности. Вообще удивился - костыли, ты не туда применил это понятие.

Речь, вообще, не об этом была, человек не зная как работает эта функция(или что там), пытается решить проблему за чужой счет. Короче тяпнул код, а как он работает не знает, вот в этом и сегодняшняя проблема, и проблема не только его а многих. Я выше уже писал на примере Юньки.
 

NaN

FPE_INTDIV_TRAP
Сообщения
1,513
Реакции
1,487
Я же не знаю какое у тебя лицо в реале, поэтому не удивляюсь. Может так оно и есть.

То-же самое и к тебе - зачем думать? Что то, где то увидел, а как оно работает, зачем оно так работает, да пофигу.
Уважай чужие решения, нет гарантии что исходник этой шляпы не работает по моему-же принципу. Ну или докажи что моё предложение не работоспособно.
Можешь свои предложить, если они у тебя есть конечно. Я никогда не стану пользоваться какой-то, якобы кем-то проверенной, функцией или чем подобным, пока сам не смогу убедиться в её работоспособности. Вообще удивился - костыли, ты не туда применил это понятие.

Речь, вообще, не об этом была, человек не зная как работает эта функция(или что там), пытается решить проблему за чужой счет. Короче тяпнул код, а как он работает не знает, вот в этом и сегодняшняя проблема, и проблема не только его а многих. Я выше уже писал на примере Юньки.
ты предлагаешь человеку, который не смог разобраться с предоставленным апи влезать в дебри с трассировками и прочим дремучим лесом

даже если оно было сделано по этому принципу, зачем его воспроизводить если можно использовать уже готовое решение?
Мы же не изобретаем библиотеку STL/STD в C++ когда начинаем новый проект.
 

tonline_kms65_1

Участник
Сообщения
565
Реакции
225
ты предлагаешь человеку, который не смог разобраться с предоставленным апи влезать в дебри с трассировками и прочим дремучим лесом

даже если оно было сделано по этому принципу, зачем его воспроизводить если можно использовать уже готовое решение?
Мы же не изобретаем библиотеку STL в C++ когда начинаем новый проект.
А по другому как? Я не представляю.
Насчет библиотек - да, там валом их, на все случаи жизни есть, но все же знают что нет ничего универсального, всегда приходится корректировать для каждого случая.

Я его просто спросил - знает он работу этой функции или нет, хотя бы в документации смотрел-нет.
А судя по всему нет. Вот и получается, что пытается на чужом горбу въехать в рай.
Я бы, в принципе, и не обратил внимания на этот пост, прошел бы дальше, просто само описание вопроса удивило.

Насчет лица - без обид, сорри.
 
Последнее редактирование:

lar1ch

Участник
Сообщения
106
Реакции
57
Если-бы я делал такую шляпу, я бы делал так:
- трассировка по линии выстрела в бесконечность(в пределах коробки(мира))
- получаю координаты первого препятствия(твердое) по линии трассировки, проверяю что это не ENT(игрок).
- получаю след. препятствие(твердое), но уже ENT(игрок). Если по линии трассировки стоят несколько ENT-игроков - всех их в массив.
- теперь получаем дистанции до полученных игроков и препятствий и видим кто или что ближе, кто или что дальше.
Для чего мне всё это, если это делает Modern Event Hooks
C-подобный:
event.GetInt("penetrated")
И прекрасно с этим справляется
@NaN, только у меня CSS, а вы скрин события player_death с CS:GO скинули
 

Вложения

  • levelsranks_unusualkills.sp
    16.6 КБ · Просмотры: 8

NaN

FPE_INTDIV_TRAP
Сообщения
1,513
Реакции
1,487
Для чего мне всё это, если это делает Modern Event Hooks
C-подобный:
event.GetInt("penetrated")
И прекрасно с этим справляется
@NaN, только у меня CSS, а вы скрин события player_death с CS:GO скинули
Modern Event Hooks как раз таки бекпортит события из ксго в ксс
 
Сверху Снизу