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

Сообщения
382
Реакции
-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
Буду сверх благодарен, если поможете с ножами)😊
 
Сообщения
382
Реакции
-8
@Code_0xABC,как? есть пример какой-нибудь? я с set_task'ом не совсем шарю
 
Сообщения
382
Реакции
-8
@Code_0xABC,Если я правильно понял, то у этого set_task должен быть флаг a?
 
Сообщения
68
Реакции
79
Помог
3 раз(а)
Такое делается путем имитации атаки в ручную через заданное время и блокировкой оригинальной функции
 
Сообщения
959
Реакции
51
Помог
10 раз(а)
Хоть так set_task (Float:time, const function[]);
И научись уже делать отступы в коде
 
Сообщения
382
Реакции
-8
Так.. set_task... куда его писать? плагин ножей сложный для меня.. хелп
19 Апр 2023
@Code_0xABC,это я Шифт+таб фулл код случайно сделал xD
19 Апр 2023
Code_0xABC кусок кода хоть сам правильный?
 
Сообщения
705
Реакции
475
Помог
10 раз(а)
Логика следующая
1) Записываешь статус что атака была начата (в какой-нибудь пев или iWeaponState мембер, если знаешь что такое биты) в PrimaryAttack, записываешь время начала атаки, после блокируешь атаку в PrimaryAttack проверкой на бит/статус
2) в PostFrame оружия проверяешь бит и время начала атаки, сравниваешь время атаки + время задержки против текущего времени и если оно подошло к концу вызываешь атаку вручную (или же пишешь свой тип атаки) ExecuteHamB(Ham_Weapon_PrimaryAttack, iWeapon); Снимаешь бит/статус атаки и время ее начала. Можешь еще добавить время эффекта пост атаки (будет говорить о том, что след.атаку нельзя провести пока не закончится анимация)
3) Желательно не использовать flNextAttack оффсет на игроке, т.к. он блокирует работу PostFrame оружия (только там где это действительно необходимо)
4) Снимаешь статус/бит атаки и время на deploy/holster
 
Сообщения
936
Реакции
187
Помог
4 раз(а)
BalbuR, напиши ему в трёх словах что делать
 
Сообщения
382
Реакции
-8
Хм
Логика следующая
1) Записываешь статус что атака была начата (в какой-нибудь пев или iWeaponState мембер, если знаешь что такое биты) в PrimaryAttack, записываешь время начала атаки, после блокируешь атаку в PrimaryAttack проверкой на бит/статус
2) в PostFrame оружия проверяешь бит и время начала атаки, сравниваешь время атаки + время задержки против текущего времени и если оно подошло к концу вызываешь атаку вручную (или же пишешь свой тип атаки) ExecuteHamB(Ham_Weapon_PrimaryAttack, iWeapon); Снимаешь бит/статус атаки и время ее начала. Можешь еще добавить время эффекта пост атаки (будет говорить о том, что след.атаку нельзя провести пока не закончится анимация)
3) Желательно не использовать flNextAttack оффсет на игроке, т.к. он блокирует работу PostFrame оружия (только там где это действительно необходимо)
4) Снимаешь статус/бит атаки и время на deploy/holster
Хм, более менее понял, попробую после дел
 
Сообщения
705
Реакции
475
Помог
10 раз(а)
BalbuR, напиши ему в трёх словах что делать
в трех словах он не поймет
если хочет сам что-то сделать, пусть пробует - более менее я ему расписал. Ошибки, которые сделает, он в любом случае сюда писать будет
 
Сообщения
580
Реакции
338
Предупреждения
1
Помог
9 раз(а)
Берёшь и ищешь двух режимный хаммер и смотришь как там сделано
 
Сообщения
382
Реакции
-8
@steelzzz,находил, не особо понял, там база кода немного не сходится с плагином ножей.. да и там TraceAttack нету Ham_Secondary
 
Сообщения
580
Реакции
338
Предупреждения
1
Помог
9 раз(а)
RedGamer, ну раз не понял, иди в раздел заказов, все там есть просто ты не понимаешь и пытаешься усилиями пользователей сляпать абы какие плагины, нежели чем заказать плагин у нормального скриптера.
 
Сообщения
580
Реакции
338
Предупреждения
1
Помог
9 раз(а)
RedGamer, ищи другой, без тасков и прочего дерьма
 
Сообщения
382
Реакции
-8
@steelzzz,вопрос к тебе, при нажатии ПКМ дабл анимация проходит, что это может быть?
20 Апр 2023
@steelzzz,нету жаль..
 
Сообщения
382
Реакции
-8
Вопрос: Чтобы изменить SecondaryAttack нужно ещё вызывать свой PrimaryAttack или же необязательно?
 

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

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