Ищу плагин Only Headsot для TF2

E

error505

Пожалуйста, помогите найти плагин, что бы за снайпера, можно было убивать ТОЛЬКО в голову.
Видел такой плагин на StrikeArena(не реклама) сервере. При попадании в тело, пишет MISS!
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #2
Простейший OnlyHeadshot для TF2. Вешает кондишн Бонка для имитации эффекта "MISS!"
PHP:
#include <tf2_stocks>
#include <sdkhooks>

#pragma newdecls required

public Plugin myinfo = {
    description = "Only HeadShot for TF2",
    version     = "1.0",
    author      = "CrazyHackGUT aka Kruzya",
    name        = "[TF2] Only HeadShot",
    url         = "https://kruzefag.ru/"
};

public void OnPluginStart() {
    for (int i; ++i <= MaxClients;) {
        if (!IsClientInGame(i))
            continue;

        OnClientPutInServer(i);
    }
}

public void OnClientPutInServer(int iClient) {
    SDKHook(iClient, SDKHook_OnTakeDamage, OnTakeDamage);
}

public Action OnTakeDamage(int iVictim, int &iAttacker, int &iInflictor, float &fDamage, int &iDamageType, int &iWeapon, float fDamageForce[3], float fDamagePosition[3], int iDamageCustom) {
    if (iAttacker == iVictim || iDamageCustom == TF_CUSTOM_HEADSHOT || TF2_IsPlayerInCondition(iVictim, TFCond_Bonked) || iAttacker < 1 || iAttacker > MaxClients || TF2_GetPlayerClass(iAttacker) != TFClass_Sniper) {
        return Plugin_Continue;
    }

    TF2_AddCondition(iVictim, TFCond_Bonked, TFCondDuration_Infinite, 0);
    RequestFrame(OnNeedRemoveCondition, GetClientUserId(iVictim));

    return Plugin_Continue;
}

public void OnNeedRemoveCondition(int iClient) {
    if (!(iClient = GetClientOfUserId(iClient)))
        return;

    TF2_RemoveCondition(iClient, TFCond_Bonked);
}

@R1KO, в TF2 не TF2Player. Там CTFPlayer.
 

Вложения

  • TF2_OnlyHS.smx
    5.3 КБ · Просмотры: 10
Последнее редактирование:
E

error505

Простейший OnlyHeadshot для TF2. Вешает кондишн Бонка для имитации эффекта "MISS!"
PHP:
#include <tf2_stocks>
#include <sdkhooks>

#pragma newdecls required

public Plugin myinfo = {
    description = "Only HeadShot for TF2",
    version     = "1.0",
    author      = "CrazyHackGUT aka Kruzya",
    name        = "[TF2] Only HeadShot",
    url         = "https://kruzefag.ru/"
};

public void OnPluginStart() {
    for (int i; ++i <= MaxClients;) {
        if (!IsClientInGame(i))
            continue;

        OnClientPutInServer(i);
    }
}

public void OnClientPutInServer(int iClient) {
    SDKHook(iClient, SDKHook_OnTakeDamage, OnTakeDamage);
}

public Action OnTakeDamage(int iVictim, int &iAttacker, int &iInflictor, float &fDamage, int &iDamageType, int &iWeapon, float fDamageForce[3], float fDamagePosition[3], int iDamageCustom) {
    if (iAttacker == iVictim || iDamageCustom == TF_CUSTOM_HEADSHOT || TF2_IsPlayerInCondition(iVictim, TFCond_Bonked) || iAttacker < 1 || iAttacker > MaxClients || TF2_GetPlayerClass(iAttacker) != TFClass_Sniper) {
        return Plugin_Continue;
    }

    TF2_AddCondition(iVictim, TFCond_Bonked, TFCondDuration_Infinite, 0);
    RequestFrame(OnNeedRemoveCondition, GetClientUserId(iVictim));

    return Plugin_Continue;
}

public void OnNeedRemoveCondition(int iClient) {
    if (!(iClient = GetClientOfUserId(iClient)))
        return;

    TF2_RemoveCondition(iClient, TFCond_Bonked);
}

@R1KO, в TF2 не TF2Player. Там CTFPlayer.


Спасибо за плагин.
--- Добавлено позже ---
Простейший OnlyHeadshot для TF2. Вешает кондишн Бонка для имитации эффекта "MISS!"
PHP:
#include <tf2_stocks>
#include <sdkhooks>

#pragma newdecls required

public Plugin myinfo = {
    description = "Only HeadShot for TF2",
    version     = "1.0",
    author      = "CrazyHackGUT aka Kruzya",
    name        = "[TF2] Only HeadShot",
    url         = "https://kruzefag.ru/"
};

public void OnPluginStart() {
    for (int i; ++i <= MaxClients;) {
        if (!IsClientInGame(i))
            continue;

        OnClientPutInServer(i);
    }
}

public void OnClientPutInServer(int iClient) {
    SDKHook(iClient, SDKHook_OnTakeDamage, OnTakeDamage);
}

public Action OnTakeDamage(int iVictim, int &iAttacker, int &iInflictor, float &fDamage, int &iDamageType, int &iWeapon, float fDamageForce[3], float fDamagePosition[3], int iDamageCustom) {
    if (iAttacker == iVictim || iDamageCustom == TF_CUSTOM_HEADSHOT || TF2_IsPlayerInCondition(iVictim, TFCond_Bonked) || iAttacker < 1 || iAttacker > MaxClients || TF2_GetPlayerClass(iAttacker) != TFClass_Sniper) {
        return Plugin_Continue;
    }

    TF2_AddCondition(iVictim, TFCond_Bonked, TFCondDuration_Infinite, 0);
    RequestFrame(OnNeedRemoveCondition, GetClientUserId(iVictim));

    return Plugin_Continue;
}

public void OnNeedRemoveCondition(int iClient) {
    if (!(iClient = GetClientOfUserId(iClient)))
        return;

    TF2_RemoveCondition(iClient, TFCond_Bonked);
}

@R1KO, в TF2 не TF2Player. Там CTFPlayer.
Хэды работают, но вот только при нанесении урона Кукри по снайперку с винтовкой, пишет MISS. Можно это исправить как либо?
 
Последнее редактирование модератором:

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #4
@error505, попробуйте.
PHP:
#include <tf2_stocks>
#include <sdkhooks>

#pragma newdecls required

public Plugin myinfo = {
    description = "Only HeadShot for TF2",
    version     = "1.0",
    author      = "CrazyHackGUT aka Kruzya",
    name        = "[TF2] Only HeadShot",
    url         = "https://kruzefag.ru/"
};

public void OnPluginStart() {
    for (int i; ++i <= MaxClients;) {
        if (!IsClientInGame(i))
            continue;

        OnClientPutInServer(i);
    }
}

public void OnClientPutInServer(int iClient) {
    SDKHook(iClient, SDKHook_OnTakeDamage, OnTakeDamage);
}

public Action OnTakeDamage(int iVictim, int &iAttacker, int &iInflictor, float &fDamage, int &iDamageType, int &iWeapon, float fDamageForce[3], float fDamagePosition[3], int iDamageCustom) {
    if (iAttacker == iVictim || iDamageCustom == TF_CUSTOM_HEADSHOT || TF2_IsPlayerInCondition(iVictim, TFCond_Bonked) || iAttacker < 1 || iAttacker > MaxClients || TF2_GetPlayerClass(iAttacker) != TFClass_Sniper || !UTIL_IsActiveWeapon(iAttacker, TFWeaponSlot_Primary)) {
        return Plugin_Continue;
    }

    TF2_AddCondition(iVictim, TFCond_Bonked, TFCondDuration_Infinite, 0);
    RequestFrame(OnNeedRemoveCondition, GetClientUserId(iVictim));

    return Plugin_Continue;
}

public void OnNeedRemoveCondition(int iClient) {
    if (!(iClient = GetClientOfUserId(iClient)))
        return;

    TF2_RemoveCondition(iClient, TFCond_Bonked);
}

bool UTIL_IsActiveWeapon(int iClient, int iWeaponSlot) {
    int iActiveWeapon = GetEntPropEnt(iClient, Prop_Send, "m_hActiveWeapon");
    int iWeapon = GetPlayerWeaponSlot(iClient, iWeaponSlot);

    return ((iActiveWeapon > MaxClients && iWeapon != -1) ? (iActiveWeapon == iWeapon) : false);
}
 

Вложения

  • TF2_OnlyHS.smx
    5.6 КБ · Просмотры: 12
E

error505

Простейший OnlyHeadshot для TF2. Вешает кондишн Бонка для имитации эффекта "MISS!"
PHP:
#include <tf2_stocks>
#include <sdkhooks>

#pragma newdecls required

public Plugin myinfo = {
    description = "Only HeadShot for TF2",
    version     = "1.0",
    author      = "CrazyHackGUT aka Kruzya",
    name        = "[TF2] Only HeadShot",
    url         = "https://kruzefag.ru/"
};

public void OnPluginStart() {
    for (int i; ++i <= MaxClients;) {
        if (!IsClientInGame(i))
            continue;

        OnClientPutInServer(i);
    }
}

public void OnClientPutInServer(int iClient) {
    SDKHook(iClient, SDKHook_OnTakeDamage, OnTakeDamage);
}

public Action OnTakeDamage(int iVictim, int &iAttacker, int &iInflictor, float &fDamage, int &iDamageType, int &iWeapon, float fDamageForce[3], float fDamagePosition[3], int iDamageCustom) {
    if (iAttacker == iVictim || iDamageCustom == TF_CUSTOM_HEADSHOT || TF2_IsPlayerInCondition(iVictim, TFCond_Bonked) || iAttacker < 1 || iAttacker > MaxClients || TF2_GetPlayerClass(iAttacker) != TFClass_Sniper) {
        return Plugin_Continue;
    }

    TF2_AddCondition(iVictim, TFCond_Bonked, TFCondDuration_Infinite, 0);
    RequestFrame(OnNeedRemoveCondition, GetClientUserId(iVictim));

    return Plugin_Continue;
}

public void OnNeedRemoveCondition(int iClient) {
    if (!(iClient = GetClientOfUserId(iClient)))
        return;

    TF2_RemoveCondition(iClient, TFCond_Bonked);
}

@R1KO, в TF2 не TF2Player. Там CTFPlayer.
Cf
@error505, попробуйте.
PHP:
#include <tf2_stocks>
#include <sdkhooks>

#pragma newdecls required

public Plugin myinfo = {
    description = "Only HeadShot for TF2",
    version     = "1.0",
    author      = "CrazyHackGUT aka Kruzya",
    name        = "[TF2] Only HeadShot",
    url         = "https://kruzefag.ru/"
};

public void OnPluginStart() {
    for (int i; ++i <= MaxClients;) {
        if (!IsClientInGame(i))
            continue;

        OnClientPutInServer(i);
    }
}

public void OnClientPutInServer(int iClient) {
    SDKHook(iClient, SDKHook_OnTakeDamage, OnTakeDamage);
}

public Action OnTakeDamage(int iVictim, int &iAttacker, int &iInflictor, float &fDamage, int &iDamageType, int &iWeapon, float fDamageForce[3], float fDamagePosition[3], int iDamageCustom) {
    if (iAttacker == iVictim || iDamageCustom == TF_CUSTOM_HEADSHOT || TF2_IsPlayerInCondition(iVictim, TFCond_Bonked) || iAttacker < 1 || iAttacker > MaxClients || TF2_GetPlayerClass(iAttacker) != TFClass_Sniper || !UTIL_IsActiveWeapon(iAttacker, TFWeaponSlot_Primary)) {
        return Plugin_Continue;
    }

    TF2_AddCondition(iVictim, TFCond_Bonked, TFCondDuration_Infinite, 0);
    RequestFrame(OnNeedRemoveCondition, GetClientUserId(iVictim));

    return Plugin_Continue;
}

public void OnNeedRemoveCondition(int iClient) {
    if (!(iClient = GetClientOfUserId(iClient)))
        return;

    TF2_RemoveCondition(iClient, TFCond_Bonked);
}

bool UTIL_IsActiveWeapon(int iClient, int iWeaponSlot) {
    int iActiveWeapon = GetEntPropEnt(iClient, Prop_Send, "m_hActiveWeapon");
    int iWeapon = GetPlayerWeaponSlot(iClient, iWeaponSlot);

    return ((iActiveWeapon > MaxClients && iWeapon != -1) ? (iActiveWeapon == iWeapon) : false);
}

Все заработало. Спасибо!
 
Сверху Снизу