Half-Life и Adrenaline Gamer форум

Всё об игре в Халф-Лайф и АГ
Текущее время: 29 мар 2024, 02:23

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: bubblemod hornetgun port (kinda)
СообщениеДобавлено: 03 дек 2012, 14:36 
Не в сети
Зарегистрирован:
12 апр 2011, 14:58
Последнее посещение:
12 янв 2014, 06:02
Сообщения: 50
Hello all, I need help with this code. The aim origin seems a bit off. Can anyone fix it? And the other thing is how do i block the default hornetgun fire sound? Tried to hook forward fm_emitsound but it seems the sounds aren't registered there. Also, from bmod's hornetgun.cpp, there's a "MOMMASPLAT" sprite however I can't find it anywhere in the sprites folder.

Код:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <engine>

#define IsPlayer(%1) (1 <= %1 <= get_maxplayers())

new const m_pPlayer = 28
new const m_flNextSecondaryAttack = 36

new const LINUX_OFFSET_WEAPONS = 4
new const LINUX_OFFSET_AMMO = 5

new const OFFSET_AMMO_HORNETGUN = 321

new iZapBeamSpr, m_sGlowSpr, splat

public plugin_init()
{
   register_plugin("[BMOD] Weapon: Hornetgun", "1.0", "Rango")

   RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_hornetgun", "Hornetgun_SecondaryAttack_Pre", 0)
}

public plugin_precache()
{
   iZapBeamSpr = precache_model("sprites/lgtning.spr")
   m_sGlowSpr = precache_model("sprites/glow04.spr")
   splat = precache_model("sprites/mommaspit.spr")

   precache_sound("leech/leech_bite1.wav")
   precache_sound("weapons/electro4.wav")
}

public Hornetgun_SecondaryAttack_Pre(const hornetgun)
{
   new player = get_pdata_cbase(hornetgun, m_pPlayer, LINUX_OFFSET_WEAPONS)
   new HornetAmmo = get_pdata_int(player, OFFSET_AMMO_HORNETGUN, LINUX_OFFSET_AMMO)

   if(HornetAmmo >= 4)
   {
      new Float:fAimOrigin[3]
      new Float:fPlayerOrigin[3]
      new Float:fAimVector[3]

      pev(player, pev_v_angle, fAimVector)

      angle_vector(fAimVector, ANGLEVECTOR_FORWARD, fAimVector)

      pev(player, pev_origin, fPlayerOrigin)

      fAimVector[0] = fAimVector[0] * 9999.0 + fPlayerOrigin[0]
      fAimVector[1] = fAimVector[1] * 9999.0 + fPlayerOrigin[1]
      fAimVector[2] = fAimVector[2] * 9999.0 + fPlayerOrigin[2]

      new iTr = create_tr2()
      engfunc(EngFunc_TraceLine, fPlayerOrigin, fAimVector, DONT_IGNORE_MONSTERS, player, iTr)
      get_tr2(iTr, TR_vecEndPos, fAimOrigin)
      free_tr2(iTr)

      message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
      write_byte(TE_BEAMPOINTS)
      engfunc(EngFunc_WriteCoord, fPlayerOrigin[0])
      engfunc(EngFunc_WriteCoord, fPlayerOrigin[1])
      engfunc(EngFunc_WriteCoord, fPlayerOrigin[2])
      engfunc(EngFunc_WriteCoord, fAimOrigin[0])
      engfunc(EngFunc_WriteCoord, fAimOrigin[1])
      engfunc(EngFunc_WriteCoord, fAimOrigin[2])
      write_short(iZapBeamSpr) // sprite index
      write_byte(0) // Starting frame
      write_byte(0) // framerate * 0.1
      write_byte(3) // life * 0.1
      write_byte(200) // width
      write_byte(2) // noise
      write_byte(220) // color r, g, b
      write_byte(220) // color r, g, b
      write_byte(255) // color r, g, b
      write_byte(255) // brightness
      write_byte(0) // scroll speed
      message_end()

      message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
      write_byte(TE_WORLDDECAL)
      engfunc(EngFunc_WriteCoord, fAimOrigin[0])
      engfunc(EngFunc_WriteCoord, fAimOrigin[1])
      engfunc(EngFunc_WriteCoord, fAimOrigin[2])
      write_byte(splat)
      message_end()

      message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
      write_byte(TE_SPRITETRAIL)
      engfunc(EngFunc_WriteCoord, fPlayerOrigin[0])
      engfunc(EngFunc_WriteCoord, fPlayerOrigin[1])
      engfunc(EngFunc_WriteCoord, fPlayerOrigin[2])
      engfunc(EngFunc_WriteCoord, fAimOrigin[0])
      engfunc(EngFunc_WriteCoord, fAimOrigin[1])
      engfunc(EngFunc_WriteCoord, fAimOrigin[2])
      write_short(m_sGlowSpr) // model
      write_byte(20) // count
      write_byte(10) // life * 10
      write_byte(random_num(1, 2)) // size * 10
      write_byte(10) // amplitude * 0.1
      write_byte(0) // speed * 100
      message_end()

      engfunc(EngFunc_EmitAmbientSound, player, fAimOrigin, "weapons/electro4.wav", 0.5, ATTN_NORM, 0, random_num(140, 160))
      set_pdata_float(hornetgun, m_flNextSecondaryAttack, 1.0, LINUX_OFFSET_WEAPONS)

      UTIL_PlayWeaponAnimation(player, 5)
      set_pdata_int(player, OFFSET_AMMO_HORNETGUN, HornetAmmo - 4, LINUX_OFFSET_AMMO)

      return HAM_SUPERCEDE
   }

   return HAM_SUPERCEDE
}

stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
   set_pev(Player, pev_weaponanim, Sequence)

   message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
   write_byte(Sequence)
   write_byte(pev(Player, pev_body))
   message_end()
}



Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: bubblemod hornetgun port (kinda)
СообщениеДобавлено: 03 дек 2012, 23:56 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
26 мар 2024, 21:42
Сообщения: 6864
Hi. I didn't get what you wish to achieve. Replace secondary attack?
And what is wrong?


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: bubblemod hornetgun port (kinda)
СообщениеДобавлено: 04 дек 2012, 00:23 
Не в сети
Зарегистрирован:
12 апр 2011, 14:58
Последнее посещение:
12 янв 2014, 06:02
Сообщения: 50
Yes, secondary attack will emit a freeze-ray and will freeze the victim

What's wrong:
- The aim origin is a little bit below crosshair
- I have return supercede the forward but he default fire sound (ag_fire1.wav, ag_fire2.wav and ag_fire3.wav) are still playing
- If the ray hit brush entity or something other than player entity, it should make a decal, named 'MOMMASPLAT', however I can't find it anywhere inside sprites folder


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: bubblemod hornetgun port (kinda)
СообщениеДобавлено: 05 дек 2012, 21:30 
Не в сети
Зарегистрирован:
12 апр 2011, 14:58
Последнее посещение:
12 янв 2014, 06:02
Сообщения: 50
bump. I really need this to be working. Kord or lev or anyone?


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: bubblemod hornetgun port (kinda)
СообщениеДобавлено: 05 дек 2012, 22:17 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
26 мар 2024, 21:42
Сообщения: 6864
Sorry, I am not very interested in.
Rango писал(а):
The aim origin is a little bit below crosshair
Try to inspect some similar plugins. I think there is a function to get a point by aim.

As far as I looked thru BMOD code, there is a cvar to switch type of secondary (and primary) attack: bm_hornet_mod. May be you just need to set it to 1 to get what you wants.

Also if you will override SecondaryAttack you may miss Recharge function:
Код:
void CHgun::OldSecondaryAttack( void )
{
   Recharge();
So you will not get more ammo while shooting.

Rango писал(а):
If the ray hit brush entity or something other than player entity, it should make a decal, named 'MOMMASPLAT', however I can't find it anywhere inside sprites folder
May be it should came with BMOD. Or you can google for it.


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: bubblemod hornetgun port (kinda)
СообщениеДобавлено: 05 дек 2012, 22:51 
Не в сети
Зарегистрирован:
12 апр 2011, 14:58
Последнее посещение:
12 янв 2014, 06:02
Сообщения: 50
1. Thanks, I've got the aim working perfectly, using v_forward, v_right and v_up
2. I'm not using bubblemod, that's why I'm trying to add "freezeray" to the default hornetgun.
3. No wonder the ammo won't reload. I didn't know that, thanks.
4. Bubblemod doesn't come with extra resources. I think I'll just pick another sprite.


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: bubblemod hornetgun port (kinda)
СообщениеДобавлено: 05 дек 2012, 23:43 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
26 мар 2024, 21:42
Сообщения: 6864
Rango писал(а):
3. No wonder the ammo won't reload. I didn't know that, thanks.
If you need ammo reloading, I suggest you to trick game dll by setting ammo to -1 in Pre and _adding_ ammo+1 back in Post SecondaryAttack.
Код:
void CHgun::SecondaryAttack( void )
{
   Reload();

   if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
   {
      return;
   }
In this way you don't need to supercede.


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: bubblemod hornetgun port (kinda)
СообщениеДобавлено: 06 дек 2012, 15:12 
Не в сети
Зарегистрирован:
12 апр 2011, 14:58
Последнее посещение:
12 янв 2014, 06:02
Сообщения: 50
Then it won't block the hornet from being fired. Is there any way to create our own 'recharge' or trigger the default 'recharge' function?


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: bubblemod hornetgun port (kinda)
СообщениеДобавлено: 06 дек 2012, 15:17 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
26 мар 2024, 21:42
Сообщения: 6864
Rango писал(а):
Is there any way to create our own 'recharge' or trigger the default 'recharge' function?
Answer is in previous post.


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: bubblemod hornetgun port (kinda)
СообщениеДобавлено: 06 дек 2012, 15:42 
Не в сети
Зарегистрирован:
12 апр 2011, 14:58
Последнее посещение:
12 янв 2014, 06:02
Сообщения: 50
But if I don't supercede secondary attack, then it will shoot freeze ray and also the default hornet..right?

I've seen some plugins make a function CBASE something. Can we do it here?


Вернуться к началу
 Профиль 
  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB