Knife kill

Knife kill 1.0.1

Нет прав для скачивания
Сообщения
264
Реакции
132
Помог
13 раз(а)
Сообщения
1,557
Реакции
1,566
Помог
2 раз(а)
"Кабан - Хрюкай" 😀 - поставил Лайк не глядя
 
Сообщения
31
Реакции
2
murlemur, Такой бы только без моделей и с одним звуком кабан хрюкай?)
 
Сообщения
264
Реакции
132
Помог
13 раз(а)
YURBAS,

Код:
#include <amxmodx>
#include <reapi>
 
new const KILL_SOUND[] = "ks/knifekill_masiana.wav";
 
public plugin_precache() {
    precache_sound(KILL_SOUND);
}
 
public plugin_init()
{
   register_plugin("Knife kill sound", "1.0.0", "***");
   RegisterHookChain(RG_CSGameRules_DeathNotice, "CSGameRules_DeathNotice", true);
}   
 
public CSGameRules_DeathNotice(const iVictim, const iKiller, pevInflictor){
    if(iVictim == iKiller || !is_user_connected(iKiller) || !rg_is_player_can_takedamage(iVictim, iKiller)) {
        return HC_CONTINUE;
    }
 
    if(iKiller == pevInflictor && WeaponIdType:get_member(get_member(iKiller, m_pActiveItem), m_iId) == WEAPON_KNIFE) {
            rg_send_audio(0, KILL_SOUND, PITCH_NORM);
    }
 
    return HC_CONTINUE;
}
 
Сообщения
31
Реакции
2
murlemur, первый раунд разминочный на ножах, можно со второго сделать? А так все четко работает.
 
Сообщения
397
Реакции
221
Помог
13 раз(а)
murlemur,

Код:
- if (get_member_game(m_iNumCTWins) + get_member_game(m_iNumTerroristWins) == 0)
+ if(get_member_game(m_iTotalRoundsPlayed) == 0)
Шило на мыло, но всё же
 
Сообщения
397
Реакции
221
Помог
13 раз(а)
murlemur, а зачем тут проверять может ли атакующий нанести урон жертве, если жертва уже мертва?
Да и проверку на гранату бы сделать. Игрок может кинуть гранату, взять в руки нож и проверка пройдёт успешно ибо убить убили, и в руках держим нож
10 Окт 2022
Код:
#include <amxmodx>
#include <reapi>
 
new const KILL_SOUND[] = "ks/knifekill_masiana.wav";
 
public plugin_precache() {
    precache_sound(KILL_SOUND);
}
 
public plugin_init()
{
   register_plugin("Knife kill sound", "1.0.0", "***");
   
   RegisterHookChain(RG_CBasePlayer_Killed,"CBasePlayer_Killed_Post", .post = true)
   /* RegisterHookChain(RG_CSGameRules_DeathNotice, "CSGameRules_DeathNotice", true); */
}   
public CBasePlayer_Killed_Post(const pVictim,const pAttacker) {
    if(!is_user_connected(pAttacker))
        return HC_CONTINUE;
    
    if(get_member(pVictim,m_bKilledByGrenade))
        return HC_CONTINUE;
    
    new iActiveItem = get_member(pAttacker,m_pActiveItem);
    if(is_nullent(iActiveItem))
        return HC_CONTINUE;
    
    new WeaponIdType:iWeaponId = get_member(iActiveItem,m_iId);
    if(iWeaponId != WEAPON_KNIFE)
        return HC_CONTINUE;
    
    rg_send_audio(0,KILL_SOUND,PITCH_NORM);
    return HC_CONTINUE;
}
/* 
public CSGameRules_DeathNotice(const iVictim, const iKiller, pevInflictor){
    if(iVictim == iKiller || !is_user_connected(iKiller) || !rg_is_player_can_takedamage(iVictim, iKiller)) {
        return HC_CONTINUE;
    }
 
    if(iKiller == pevInflictor && WeaponIdType:get_member(get_member(iKiller, m_pActiveItem), m_iId) == WEAPON_KNIFE) {
            
    }
 
    return HC_CONTINUE;
} */
 

Download all Attachments

Сообщения
333
Реакции
290
Помог
9 раз(а)
и проверка пройдёт успешно ибо убить убили, и в руках держим нож
Не пройдет, потому что с гранатой iKiller != pevInflictor

а зачем тут проверять может ли атакующий нанести урон жертве
А зачем?..:
  • менять события.. Чем не угодил RG_CSGameRules_DeathNotice
  • проверять присутствие киллера на сервере, если звук воспроизводится всем. Если киллера нет, убийство не считается разве?
 
Последнее редактирование:
  • Нравится
Реакции: b0t.
Сообщения
397
Реакции
221
Помог
13 раз(а)
zhorzh78, с проверкой на коннект стормозил.
Добавил её, чтобы не было так, что игрок кинул гранату и вышел с сервера. Сейчас пересмотрел код и понял, что до нахождения активного предмета у атакующего проверил был би убита жертва с гранаты.

P.S.
Ответа зачем проверять может ли атакующий нанести урон жертве когда та мертва я так и не получил :)
 
Сообщения
333
Реакции
290
Помог
9 раз(а)
Ответа зачем проверять может ли атакующий нанести урон жертве когда та мертва я так и не получил :)
Скорее всего, Ctrl+C Ctrl+V


:crazy:
C++:
#include <amxmodx>
#include <reapi>

new const KILL_SOUND[] = "ks/knifekill_masiana.wav";

public plugin_precache()
{
    precache_sound(KILL_SOUND);
}

public plugin_init()
{
   register_event("DeathMsg", "OnDeathMsgKnife", "a", "4=knife");
}  

public OnDeathMsgKnife()
{
    rg_send_audio(0, KILL_SOUND, PITCH_NORM);
}
 
Сообщения
397
Реакции
221
Помог
13 раз(а)
zhorzh78, благодарю за поправку. Узнал немного больше в ходе диалога
 
Сообщения
15
Реакции
-3
Кто то может вырезать здесь что бы не было этого звука. Что бы только моделька. Потому что у меня уже плагин уже стоит и там в плагине два звука и нож и граната.
 
Сообщения
3,047
Реакции
1,739
Помог
80 раз(а)
Shumakov,
C++:
#include <amxmodx>
#include <fakemeta>
#include <reapi>

#define EnableAfterFirstRound   // если у вас нету разминки на ножах то можно закоментить

new const ENTITY_MODEL[][] =
{
    "models/item_relaxcs/piglet.mdl",
    "models/item_relaxcs/cutesheep.mdl",
    "models/item_relaxcs/rxghost.mdl"
}

new const ENTITY_CLASSNAME[] = "ghost";
const Float: ENTITY_LIFETIME = 1.7;
const Float: ENTITY_SPEED = 40.0;

public plugin_precache() {
    for(new i = 0; i < sizeof(ENTITY_MODEL); i++)
            precache_model(ENTITY_MODEL[i]);
}

public plugin_init()
{
    register_plugin("Knife kill", "1.0.0", "MurLemur");
    RegisterHookChain(RG_CSGameRules_DeathNotice, "CSGameRules_DeathNotice", true);
}   

public CSGameRules_DeathNotice(const iVictim, const iKiller, pevInflictor){
    if (pevInflictor<1)
        ghost_effect(2,iVictim,iVictim)

    #if defined EnableAfterFirstRound
    if (get_member_game(m_iNumCTWins) + get_member_game(m_iNumTerroristWins) == 0)
        return HC_CONTINUE
    #endif
    
    if(iVictim == iKiller || !is_user_connected(iKiller))
        return HC_CONTINUE

    if(iKiller == pevInflictor && FClassnameIs(get_member(iKiller, m_pActiveItem),"weapon_knife") || FClassnameIs(pevInflictor, "weapon_knife") ) {
        
        new cur_type = random_num(0,1);
        ghost_effect(cur_type,pevInflictor,iVictim)

    }

    return HC_CONTINUE;
}

public ghost_effect(cur_type,pevInflictor,iVictim)
{
        new Float: vecOrigin[3];
        new Float: vecVelocity[3];

        vecVelocity[2] = ENTITY_SPEED;
        get_entvar(iVictim, var_origin, vecOrigin);
        new Float: vecAngles[ 3 ];
        get_entvar( pevInflictor, var_angles, vecAngles );

        new iEntity = rg_create_entity("info_target", false);

        if(is_nullent(iEntity))
            return
        
        vecOrigin[2] = vecOrigin[2]-30.0;
        if (pevInflictor!=iVictim)
        {
            vecAngles[0] *= -1;
            vecAngles[1] += 180;
        }
        
        engfunc(EngFunc_SetModel, iEntity, ENTITY_MODEL[cur_type]);
        engfunc(EngFunc_SetSize, iEntity, {-10.0, -10.0, -10.0}, {10.0, 10.0, 10.0});

        set_entvar(iEntity, var_origin, vecOrigin);
        set_entvar(iEntity, var_classname, ENTITY_CLASSNAME);
        set_entvar(iEntity, var_movetype, MOVETYPE_NOCLIP);
        set_entvar(iEntity, var_solid, SOLID_NOT);
        set_entvar(iEntity, var_velocity, vecVelocity);
        set_entvar(iEntity, var_angles, vecAngles);
        
        new Float: vecAVelocity[3];
        vecAVelocity[1] = random_float(-50.0, 50.0);
        set_entvar(iEntity, var_avelocity, vecAVelocity);
        
        set_entvar(iEntity, var_nextthink, get_gametime() + ENTITY_LIFETIME);

        SetThink(iEntity, "@EGhost_Think");
}

@EGhost_Think(iEntity)
{
    set_entvar(iEntity, var_flags, FL_KILLME);
}
 
Сообщения
15
Реакции
-3
@Алексеич,благодарю.
23 Окт 2022
Алексеич, Я могу эти две строки удалить? Хочу одну модельку прост оставить 1666478597421.png
 

Вложения

Сообщения
75
Реакции
82
Помог
6 раз(а)
Shumakov,
Код:
#include <amxmodx>
#include <fakemeta>
#include <reapi>

#define EnableAfterFirstRound   // если у вас нету разминки на ножах то можно закоментить

new const ENTITY_MODEL[] =    "models/item_relaxcs/piglet.mdl";

new const ENTITY_CLASSNAME[] = "ghost";
const Float: ENTITY_LIFETIME = 1.7;
const Float: ENTITY_SPEED = 40.0;

public plugin_precache() {
    precache_model(ENTITY_MODEL);
}

public plugin_init()
{
    register_plugin("Knife kill", "1.0.0", "MurLemur");
    RegisterHookChain(RG_CSGameRules_DeathNotice, "CSGameRules_DeathNotice", true);
}   

public CSGameRules_DeathNotice(const iVictim, const iKiller, pevInflictor){
    #if defined EnableAfterFirstRound
    if (get_member_game(m_iNumCTWins) + get_member_game(m_iNumTerroristWins) == 0)
        return HC_CONTINUE
    #endif
    
    if(iVictim == iKiller || !is_user_connected(iKiller))
        return HC_CONTINUE

    if(iKiller == pevInflictor && FClassnameIs(get_member(iKiller, m_pActiveItem),"weapon_knife") || FClassnameIs(pevInflictor, "weapon_knife") ) {
        ghost_effect(pevInflictor,iVictim)
    }

    return HC_CONTINUE;
}

public ghost_effect(pevInflictor,iVictim)
{
        new Float: vecOrigin[3];
        new Float: vecVelocity[3];

        vecVelocity[2] = ENTITY_SPEED;
        get_entvar(iVictim, var_origin, vecOrigin);
        new Float: vecAngles[ 3 ];
        get_entvar( pevInflictor, var_angles, vecAngles );

        new iEntity = rg_create_entity("info_target", false);

        if(is_nullent(iEntity))
            return
        
        vecOrigin[2] = vecOrigin[2]-30.0;
        if (pevInflictor!=iVictim)
        {
            vecAngles[0] *= -1;
            vecAngles[1] += 180;
        }
        
        engfunc(EngFunc_SetModel, iEntity, ENTITY_MODEL);
        engfunc(EngFunc_SetSize, iEntity, {-10.0, -10.0, -10.0}, {10.0, 10.0, 10.0});

        set_entvar(iEntity, var_origin, vecOrigin);
        set_entvar(iEntity, var_classname, ENTITY_CLASSNAME);
        set_entvar(iEntity, var_movetype, MOVETYPE_NOCLIP);
        set_entvar(iEntity, var_solid, SOLID_NOT);
        set_entvar(iEntity, var_velocity, vecVelocity);
        set_entvar(iEntity, var_angles, vecAngles);
        
        new Float: vecAVelocity[3];
        vecAVelocity[1] = random_float(-50.0, 50.0);
        set_entvar(iEntity, var_avelocity, vecAVelocity);
        
        set_entvar(iEntity, var_nextthink, get_gametime() + ENTITY_LIFETIME);

        SetThink(iEntity, "@EGhost_Think");
}

@EGhost_Think(iEntity)
{
    set_entvar(iEntity, var_flags, FL_KILLME);
}
 
Сообщения
17
Реакции
-1
Кто может вырезать только модели а звуки оставить буду очень благодарен.
 
Сообщения
3,047
Реакции
1,739
Помог
80 раз(а)
MENTOP, выше почитай, там в одном примере вырезали звуки, во втором модели. объедини их
 
  • Нравится
Реакции: Arni
Сообщения
17
Реакции
-1
Алексеич, в первом вырезали модели и зву. Мне звуки нужны 2 я пробивал сам но не получается.
 

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

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