Убийство с одного удара ножа

Сообщения
20
Реакции
4
Помог
2 раз(а)
Плагин всем игрокам устанавливает скорость выше, если в руках нож.
Независимо от кол-ва хп у противника, при нанесении ему удара с ножа, тот умирает.
Подскажите как сделать так, чтобы при ЛКМ был стандартный урон, а при ПКМ убивал сразу.
 

Вложения

Сообщения
1,536
Реакции
2,319
Помог
39 раз(а)
Reeps, и что вы ищите, раз тему создали в разделе поиска?
 
Сообщения
579
Реакции
338
Предупреждения
1
Помог
9 раз(а)
Попробуй, я не проверял xD

Код:
/* code secondattack by Knife Secondary Attack Modification by Safety1st */
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

/* EDIT ME */
const Float:Knife_Speed = 350.0
/* EDIT ME */

const m_pActiveItem = 373
const m_pPlayer = 41
const m_flNextSecondaryAttack = 47
const linux_diff_player = 5
const linux_diff_weapon = 4
const SAFE_PDATA = 2
const Float:knife_rate_after_secondattack = 1.1

new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame

public plugin_init()
{
    register_plugin("[AMXX] Knife Bonus", "", "steelzorrr (for dev-cs)")

    RegisterHam(Ham_Player_ResetMaxSpeed, "player", "CBasePlayer_ResetMaxSpeed_Post", .Post = true)
    RegisterHam(Ham_TakeDamage, "player", "CBasePlayer_TakeDamage_Post", .Post = true)
}

public CBasePlayer_ResetMaxSpeed_Post(iPlayer)
{
    if(!is_user_connected(iPlayer)) return HAM_IGNORED
    static iEnt; iEnt = get_pdata_cbase(iPlayer, m_pActiveItem, linux_diff_player)
    if(pev_valid(iEnt) != SAFE_PDATA || get_user_weapon(iPlayer) != CSW_KNIFE) return HAM_IGNORED

    set_pev(iPlayer, pev_maxspeed, Knife_Speed)
    return HAM_IGNORED
}

public CBasePlayer_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:flDamage, iBitsDamage)
{
    if(!is_user_connected(iVictim) || !is_user_connected(iAttacker) || iVictim == iAttacker) return HAM_IGNORED
    if(!(pev(iAttacker, pev_button) & IN_ATTACK2)) return HAM_IGNORED
    static iEnt; iEnt = get_pdata_cbase(iAttacker, m_pActiveItem, linux_diff_weapon)
    if(get_user_weapon(iAttacker) != CSW_KNIFE && get_pdata_float(iEnt, m_flNextSecondaryAttack, linux_diff_weapon) != knife_rate_after_secondattack) return HAM_IGNORED
    ExecuteHamB(Ham_Killed, iVictim, iAttacker, 2)

    return HAM_IGNORED
}
 
Сообщения
2,143
Реакции
1,223
Помог
44 раз(а)
Можно так попробовать. Не тестировал вообще.
Код:
#include <amxmodx>
#include <reapi>

new Float:g_fKnifeSpeed = 320.0

public plugin_init() {
    register_event("CurWeapon", "ResetSpeed", "be")
    RegisterHookChain(RG_CBasePlayer_TakeDamage, "TakeDamage_Pre", false);
}

public TakeDamage_Pre(pevVictim, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType) {
    if(!is_user_connected(pevVictim) || !is_user_connected(pevAttacker) || pevVictim == pevAttacker) return HC_CONTINUE;
    if(get_user_weapon(pevAttacker) == CSW_KNIFE && get_entvar(pevAttacker, var_button) & IN_ATTACK2) SetHookChainArg(4, ATYPE_FLOAT, 500.0);
    // Не, ну можно заюзать еще - user_kill(pevVictim, 0) вместо SetHookChainArg(4, ATYPE_FLOAT, 500)
    // Но кому на паблике необходимо дохренище HP, чтобы с уроном в 500 единиц не убить? Этого будет достаточно :D
    return HC_CONTINUE;
}

public ResetSpeed(id) {
    switch(get_user_weapon(id)) {
        case CSW_KNIFE: rg_set_user_maxspeed(id, g_fKnifeSpeed);
        default: rg_set_user_maxspeed(id, -1.0);
    }
    return PLUGIN_CONTINUE;
}

stock rg_set_user_maxspeed(const player, Float:speed = -1.0) {
    if(speed != -1.0) set_entvar(player, var_maxspeed, Float:speed);
    else rg_reset_maxspeed(player);
}
 
Последнее редактирование:
Сообщения
20
Реакции
4
Помог
2 раз(а)
Спасибо, за помощь!
steelzzz, работает, но странно, скорость одна и не меняется на любом оружии. Если убить в спину с пкм, почему-то дает 2 фрага.
Minni, увы, не работает.
 
Сообщения
576
Реакции
1,003
Помог
18 раз(а)
Minni, не лучший выбор CurWeapon для выставления скорости.
И никто не учитывает гранату.
 
Сообщения
579
Реакции
338
Предупреждения
1
Помог
9 раз(а)
Reeps, окей, поправлю
15 Янв 2018
Код:
/* code secondattack by Knife Secondary Attack Modification by Safety1st */
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

/* EDIT ME */
const Float:Knife_Speed = 350.0
/* EDIT ME */

const m_pActiveItem = 373
const m_pPlayer = 41
const m_flNextSecondaryAttack = 47
const linux_diff_player = 5
const linux_diff_weapon = 4
const SAFE_PDATA = 2
const Float:knife_rate_after_secondattack = 1.1

new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame

public plugin_init()
{
    register_plugin("[AMXX] Knife Bonus", "", "steelzorrr (for dev-cs)")

    RegisterHam(Ham_Player_ResetMaxSpeed, "player", "CBasePlayer_ResetMaxSpeed_Pre", .Post = false)
    RegisterHam(Ham_TakeDamage, "player", "CBasePlayer_TakeDamage_Post", .Post = true)
}

public CBasePlayer_ResetMaxSpeed_Pre(iPlayer)
{
    if(!is_user_alive(iPlayer)) return HAM_IGNORED
    static iEnt; iEnt = get_pdata_cbase(iPlayer, m_pActiveItem, linux_diff_player)
    if(pev_valid(iEnt) != SAFE_PDATA) return HAM_IGNORED
    if(get_user_weapon(iPlayer) == CSW_KNIFE) set_pev(iPlayer, pev_maxspeed, Knife_Speed)
    //else set_pev(iPlayer, pev_maxspeed, -1.0) // ??
    return HAM_IGNORED
}

public CBasePlayer_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:flDamage, iBitsDamage)
{
    if(!is_user_connected(iAttacker) || iVictim == iAttacker) return HAM_IGNORED
    if(!(pev(iAttacker, pev_button) & IN_ATTACK2)) return HAM_IGNORED
    if(iBitsDamage & DMG_GRENADE) return HAM_IGNORED
    static iEnt; iEnt = get_pdata_cbase(iAttacker, m_pActiveItem, linux_diff_weapon)
    if(get_user_weapon(iAttacker) != CSW_KNIFE && get_pdata_float(iEnt, m_flNextSecondaryAttack, linux_diff_weapon) != knife_rate_after_secondattack) return HAM_IGNORED
    ExecuteHamB(Ham_Killed, iVictim, iAttacker, 2)

    return HAM_HANDLED
}
Попробуй
 
Последнее редактирование:
Сообщения
576
Реакции
1,003
Помог
18 раз(а)
Minni, кидаешь гранату, достаешь нож и зажимаешь ПКМ, какой результат?
 
Сообщения
20
Реакции
4
Помог
2 раз(а)
Большое спасибо, всем кто откликнулся. Не ожидал помощи после других популярных форумов.
Плагин помог переделать Radius.
 

Вложения

Сообщения
579
Реакции
338
Предупреждения
1
Помог
9 раз(а)
Reeps, Мы тебе пытались помочь. Ты просил чтоб сразу убивало, а в данном плагине реализовано, что урон просто умножается в 2 раза, если в руках нож
 
Сообщения
20
Реакции
4
Помог
2 раз(а)
steelzzz, в конечном итоге игрок умирает сразу. К одному решению ведут несколько дорог.
Sonyx, в решении нет CurWeapon.
Mistrick, что произойдет?
 
Сообщения
957
Реакции
1,184
Помог
52 раз(а)
Reeps, киньте гранату и достаньте нож до ее взрыва, вы поймете)
 
Сообщения
20
Реакции
4
Помог
2 раз(а)
Sonyx, кинул и до взрыва достал нож, даже кликал лкм и пкм. Ничего не произошло, кроме взрыва гранаты.
 

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

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