Half-Life и Adrenaline Gamer форум
http://www.aghl.ru/forum/

Как отловить стандартную гранату hl 1, ее взрыв и урон?
http://www.aghl.ru/forum/viewtopic.php?f=20&t=3315
Страница 1 из 2

Автор:  russia [ 09 авг 2023, 23:37 ]
Заголовок сообщения:  Как отловить стандартную гранату hl 1, ее взрыв и урон?

Привет всем

подскажите как можно определить брошенную стандартную гранату? Она вообще имеет класснейм?

и как отловить взрыв и урон от этой гранаты (заменить ей скриптом визуализацию и сам взрыв)? Провбовал менять ее мощь через скиллы, не реагирует, стабильно около 120 бъет...

Автор:  MayroN [ 10 авг 2023, 01:30 ]
Заголовок сообщения:  Re: Как отловить стандартную гранату hl 1, ее взрыв и урон?

Код:
"ARgrenade", HLW_HANDGRENADE

Автор:  russia [ 11 авг 2023, 18:34 ]
Заголовок сообщения:  Re: Как отловить стандартную гранату hl 1, ее взрыв и урон?

можно более подробный код?

важно именно отловить взрыв и задать ему свой кусок кода (изменить его dmg, задать спрайт и добавить осколки - это я все сам сделаю, главное знать куда вставлять код)

Автор:  russia [ 13 авг 2023, 03:53 ]
Заголовок сообщения:  Re: Как отловить стандартную гранату hl 1, ее взрыв и урон?

MayroN писал(а):
Код:
"ARgrenade", HLW_HANDGRENADE

К слову
RegisterHam ( Ham_TakeDamage, "HLW_HANDGRENADE", "func_handgrenade")

НЕ срабатывает

Автор:  Safety1st [ 18 авг 2023, 23:27 ]
Заголовок сообщения:  Re: Как отловить стандартную гранату hl 1, ее взрыв и урон?

Ловить Ham_TakeDamage надо также на класс player, а уже там сначала проверять на inflictor и если они не равен > MAXPLAYERS, смотреть hl_get_weapon_id(entity) == HLW_HANDGRENADE.

Автор:  russia [ 19 авг 2023, 03:35 ]
Заголовок сообщения:  Re: Как отловить стандартную гранату hl 1, ее взрыв и урон?

Safety1st писал(а):
Ловить Ham_TakeDamage надо также на класс player, а уже там сначала проверять на inflictor и если они не равен > MAXPLAYERS, смотреть hl_get_weapon_id(entity) == HLW_HANDGRENADE.

Код:
RegisterHam ( Ham_TakeDamage, "player", "fw_grenade",0);

public fw_grenade(victim, inflicator, attacker, Float:damage){
   new iMonster_name[32];
   entity_get_string( inflicator, EV_SZ_classname,iMonster_name, 12);
        client_print(0, print_chat, "%s", iMonster_name) // знаем теперь что ее класснейм "grenade", но ни как не HLW_HANDGRENADE

   if(equal(iMonster_name,"grenade",11)){
      SetHamParamFloat(4, damage / 2)
   
      if(is_user_connected(victim)){
         new Float:vecangle[3]
         vecangle[0] = random_float(-1*damage,damage)
         vecangle[1] = random_float(-1*damage,damage)
         set_pev(victim,pev_punchangle,vecangle)
         client_cmd(victim, "spk /SpecialForce/contusion");
      }
   }
   
}

Порезали урон в двое и тряханули экран игроку

Момент второй, как отловить сам момент взрыва?

Пробовал через think

Код:
         if (!pev_valid(entity)) return HAM_IGNORED;

         client_print(0, print_chat, "%f", pev(entity, pev_dmgtime)) // проверяем чему равен pev_dmgtime

         if (pev(entity, pev_dmgtime) == 0.0)

но pev_dmgtime всегда равен 0.0, как я понял способ для КС, не для ХЛ

Автор:  MayroN [ 26 авг 2023, 02:28 ]
Заголовок сообщения:  Re: Как отловить стандартную гранату hl 1, ее взрыв и урон?

Цитата:
Момент второй, как отловить сам момент взрыва?

Метод не достаточно хорош,но - работает )

Код:
public plugin_init()
{
   register_message(SVC_TEMPENTITY,"grenade")
}

public grenade(ent)
{
   while((ent = find_ent_by_class(ent,"grenade")))
   {
      if(get_msg_arg_int(1) != TE_EXPLOSION || pev_valid(ent) == 0)
      return PLUGIN_CONTINUE

      New_Explode_Sprites(ent,get_pcvar_num(Explode_Cvars[2]))

            new Float:origin[3]
            pev(ent, pev_origin, origin);

           message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
           write_byte(TE_BREAKMODEL)
           write_coord_f(origin[0])
           write_coord_f(origin[1])
           write_coord_f(origin[2] += 3.0)    
           write_coord_f(16.0)
           write_coord_f(16.0)
           write_coord_f(16.0)
           write_coord(random_num(-70, 70))
           write_coord(random_num(-70, 70))
           write_coord(0)
           write_byte(10)
           write_short(g_rain_gibs)
           write_byte(20)
           write_byte(100)
           write_byte(0x40)
           message_end()
   }
   return PLUGIN_CONTINUE
}

Вот видео
https://www.youtube.com/watch?v=xHzsuJp1A4I

Автор:  Safety1st [ 28 авг 2023, 08:02 ]
Заголовок сообщения:  Re: Как отловить стандартную гранату hl 1, ее взрыв и урон?

Жаль только, что TE_EXPLOSION вызывается для apache, osprey и crossbow :D

Автор:  MayroN [ 28 авг 2023, 22:22 ]
Заголовок сообщения:  Re: Как отловить стандартную гранату hl 1, ее взрыв и урон?

Из за такого метода я и отказался юзать для кс это

Вот на взрыв бомбы в конце раунда

Мессаги грены действуют такие же при взрыве в конце раунда,как и у бомбы

Более того,если раунд закончился и бомба не была установлена и кидать грены,то вообще взрывов нет от гранат

+ к этому всему,если есть кастомные взрывы обьектов ( походу оно будет всё подменять,где есть TE_EXPLOSION )

Автор:  Safety1st [ 21 сен 2023, 01:28 ]
Заголовок сообщения:  Re: Как отловить стандартную гранату hl 1, ее взрыв и урон?

 У меня на тестовом сервере с последними версиями HL, BugfixedHL и AMXX нормально работает:

Страница 1 из 2 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/