Вопрос: [ZP] Addon Knifes | Задержка ATTACK2 перед уроном

Сообщения
418
Реакции
-7
Предупреждения
8
Есть такая тема, можно же как-то накинуть на определённый нож задержку перед самим уроном, т.е нажал ПКМ и урон прошёл не сразу, а через заданное кол-во времени через get_gametime() подскажите как оформить

C++:
public fw_WeaponSecondaryAttack(knife)
{
static iPlayer
iPlayer = get_pdata_cbase(knife, m_pPlayer, 4)

if(zp_get_user_zombie(iPlayer) || !g_has_hammer_fire[iPlayer])
return HAM_IGNORED

if(pev(iPlayer,pev_button) & IN_ATTACK2)
{
UTIL_SendWeaponAnim(MSG_ONE, iPlayer, WEAPON_ANIM_STAB)
set_player_nextattack(iPlayer, WEAPON_ANIM_STAB_TIME)
}
else
{
UTIL_SendWeaponAnim(MSG_ONE, iPlayer, WEAPON_ANIM_SLASH)
set_player_nextattack(iPlayer, WEAPON_ANIM_SLASH_TIME)
}
set_pdata_float(iPlayer, m_flNextAttack, 0.5, 5)
set_pdata_int(knife, m_iWeaponState, true, 4)

return HAM_SUPERCEDE
}
public fw_ItemPostFrame(knife)
{
static iPlayer
iPlayer = get_pdata_cbase(knife, m_pPlayer, 4)

if(zp_get_user_zombie(iPlayer) || !g_has_hammer_fire[iPlayer])
return HAM_IGNORED

if(!get_pdata_int(knife, m_iWeaponState, 4))
return HAM_IGNORED

static Float:flTime
flTime = WEAPON_ANIM_STAB_TIME

if(is_user_connected(iPlayer))
{
new FmHook_EmitSound_Pre = register_forward(FM_EmitSound, "CEntity__EmitSound", false);
EnableHamForward(g_HamHook_SendWeaponAnim_Pre)
ExecuteHamB(Ham_Weapon_SecondaryAttack, knife)
DisableHamForward(g_HamHook_SendWeaponAnim_Pre)
unregister_forward(FM_EmitSound, FmHook_EmitSound_Pre, false)

emit_sound(iPlayer, CHAN_ITEM, hammer_fire_sounds[5], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

set_pdata_int(knife, m_iWeaponState, false, 4)
set_pdata_float(knife, m_flNextSecondaryAttack, flTime, 4)
set_pdata_float(knife, m_flTimeWeaponIdle, flTime, 4)
}
return HAM_IGNORED
}
Пробовал так, но анимация удара есть, задержка есть, но сам удар отсутствует (+ дабл анимация)
19 Апр 2023
Вот как это выглядит

19 Апр 2023
Буду сверх благодарен, если поможете с ножами)😊
 
Сообщения
418
Реакции
-7
Предупреждения
8
@Code_0xABC,как? есть пример какой-нибудь? я с set_task'ом не совсем шарю
 
Сообщения
418
Реакции
-7
Предупреждения
8
@Code_0xABC,Если я правильно понял, то у этого set_task должен быть флаг a?
 
Сообщения
75
Реакции
82
Помог
6 раз(а)
Такое делается путем имитации атаки в ручную через заданное время и блокировкой оригинальной функции
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Хоть так set_task (Float:time, const function[]);
И научись уже делать отступы в коде
 
Сообщения
418
Реакции
-7
Предупреждения
8
Так.. set_task... куда его писать? плагин ножей сложный для меня.. хелп
19 Апр 2023
@Code_0xABC,это я Шифт+таб фулл код случайно сделал xD
19 Апр 2023
Code_0xABC кусок кода хоть сам правильный?
 
Сообщения
855
Реакции
532
Помог
13 раз(а)
Логика следующая
1) Записываешь статус что атака была начата (в какой-нибудь пев или iWeaponState мембер, если знаешь что такое биты) в PrimaryAttack, записываешь время начала атаки, после блокируешь атаку в PrimaryAttack проверкой на бит/статус
2) в PostFrame оружия проверяешь бит и время начала атаки, сравниваешь время атаки + время задержки против текущего времени и если оно подошло к концу вызываешь атаку вручную (или же пишешь свой тип атаки) ExecuteHamB(Ham_Weapon_PrimaryAttack, iWeapon); Снимаешь бит/статус атаки и время ее начала. Можешь еще добавить время эффекта пост атаки (будет говорить о том, что след.атаку нельзя провести пока не закончится анимация)
3) Желательно не использовать flNextAttack оффсет на игроке, т.к. он блокирует работу PostFrame оружия (только там где это действительно необходимо)
4) Снимаешь статус/бит атаки и время на deploy/holster
 
Сообщения
1,055
Реакции
212
Предупреждения
9
Помог
6 раз(а)
BalbuR, напиши ему в трёх словах что делать
 
Сообщения
418
Реакции
-7
Предупреждения
8
Хм
Логика следующая
1) Записываешь статус что атака была начата (в какой-нибудь пев или iWeaponState мембер, если знаешь что такое биты) в PrimaryAttack, записываешь время начала атаки, после блокируешь атаку в PrimaryAttack проверкой на бит/статус
2) в PostFrame оружия проверяешь бит и время начала атаки, сравниваешь время атаки + время задержки против текущего времени и если оно подошло к концу вызываешь атаку вручную (или же пишешь свой тип атаки) ExecuteHamB(Ham_Weapon_PrimaryAttack, iWeapon); Снимаешь бит/статус атаки и время ее начала. Можешь еще добавить время эффекта пост атаки (будет говорить о том, что след.атаку нельзя провести пока не закончится анимация)
3) Желательно не использовать flNextAttack оффсет на игроке, т.к. он блокирует работу PostFrame оружия (только там где это действительно необходимо)
4) Снимаешь статус/бит атаки и время на deploy/holster
Хм, более менее понял, попробую после дел
 
Сообщения
855
Реакции
532
Помог
13 раз(а)
BalbuR, напиши ему в трёх словах что делать
в трех словах он не поймет
если хочет сам что-то сделать, пусть пробует - более менее я ему расписал. Ошибки, которые сделает, он в любом случае сюда писать будет
 
Сообщения
594
Реакции
350
Предупреждения
1
Помог
9 раз(а)
Берёшь и ищешь двух режимный хаммер и смотришь как там сделано
 
Сообщения
418
Реакции
-7
Предупреждения
8
@steelzzz,находил, не особо понял, там база кода немного не сходится с плагином ножей.. да и там TraceAttack нету Ham_Secondary
 
Сообщения
594
Реакции
350
Предупреждения
1
Помог
9 раз(а)
RedGamer, ну раз не понял, иди в раздел заказов, все там есть просто ты не понимаешь и пытаешься усилиями пользователей сляпать абы какие плагины, нежели чем заказать плагин у нормального скриптера.
 
Сообщения
594
Реакции
350
Предупреждения
1
Помог
9 раз(а)
RedGamer, ищи другой, без тасков и прочего дерьма
 
Сообщения
418
Реакции
-7
Предупреждения
8
@steelzzz,вопрос к тебе, при нажатии ПКМ дабл анимация проходит, что это может быть?
20 Апр 2023
@steelzzz,нету жаль..
 
Сообщения
418
Реакции
-7
Предупреждения
8
Вопрос: Чтобы изменить SecondaryAttack нужно ещё вызывать свой PrimaryAttack или же необязательно?
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу