No Damage witch zeus Vip

caxa77798

Участник
Сообщения
8
Реакции
2
Операционная система
Windows
не знаю есть ли плагин для vip что бы по тебе не проходил урон от зевса или просто 0 наносил именно игроку у которого в вип группе есть иммунитет от зевса
 

danil253467

💘Italo-Disco One Love💘
Сообщения
114
Реакции
68
PHP:
#include <vip_core>
#include <sdkhooks>

#define IMMUNITY    "ZeusImmunity"

public void OnPluginStart()
{
    if(VIP_IsVIPLoaded())
    {
        VIP_OnVIPLoaded();
    }
}

public void VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(IMMUNITY, BOOL);
}

public void OnClientPutInServer(int client)
{
    if(!IsFakeClient(client)) SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}

Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &weapon, float damageForce[3], float damagePosition[3], int damagecustom)
{
    if(attacker <= 0 || attacker > MaxClients) return Plugin_Continue;
   
    int iTaser = GetEntPropEnt(attacker, Prop_Send, "m_hActiveWeapon");
    if(IsValidEntity(iTaser))
    {
        char sWeapon[24];
        GetEntityClassname(iTaser, sWeapon, sizeof(sWeapon));
       
        if(!strcmp(sWeapon, "weapon_taser"))
        {
            if(VIP_IsClientFeatureUse(victim, IMMUNITY))
            {
                damage = 0.0;
                return Plugin_Changed;
            }
        }
    }
    return Plugin_Continue;
}

public void OnPluginEnd()
{
    if(CanTestFeatures() && GetFeatureStatus(FeatureType_Native, "VIP_UnregisterFeature") == FeatureStatus_Available)
    {
        VIP_UnregisterFeature(IMMUNITY);
    }
}

В файл addons/sourcemod/translations/vip_modules.phrases.txt:
PHP:
"ZeusImmunity"
{
    "en"    "Zeus Immunity"
    "ru"    "Иммунитет от Зевса"
}
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,826
Реакции
5,263
@danil253467, и что, оружие правильно определяется?
Емнип, раньше был баг у функции, что weapon всегда было равно 0. Не помню от версии SM зависело или от игры. И без понятия исправлено ли вообще.
Сообщения автоматически склеены:

И ещё в OnTakeDamage() нет смысла проверять индекс жертвы: хук автоматически снимается с игрока при его дисконнекте и вешаеть ты его должен только на валидных игроков (поэтому я бы добавил проверку является ли зашедший игрок ботом, т.к. у ботов випок не бывает, как правило).

Вообще бы я тип урона и совпадение attacker и inflictor проверял бы сначала, а не класс оружия. У тазера тип должен отличаться от всех прочих. А attacker и inflictor должны отличатся при использовании гранат.
Сообщения автоматически склеены:

Ещё не хватает действий при выгрузке випки (нужно вырубать проверки или хотя бы игнорировать события получения урона) или самого плагина (нужно фичу убирать из списка).

Ну и я бы ещё добавил цикл по игрокам, чтобы навесить на них хук, когда плагин загружается посреди игры, а не смене карты.
 
Последнее редактирование:

caxa77798

Участник
Сообщения
8
Реакции
2
PHP:
#include <vip_core>
#include <sdkhooks>

#define IMMUNITY    "ZeusImmunity"

public void OnPluginStart()
{
    if(VIP_IsVIPLoaded())
    {
        VIP_OnVIPLoaded();
    }
}

public void VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(IMMUNITY, BOOL);
}

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

Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &weapon, float damageForce[3], float damagePosition[3], int damagecustom)
{
    if(victim <= 0 || victim > MaxClients || attacker <= 0 || attacker > MaxClients) return Plugin_Continue;
   
    if(IsValidEntity(weapon))
    {
        char sWeapon[24];
        GetEntityClassname(weapon, sWeapon, sizeof(sWeapon));
       
        if(!strcmp(sWeapon, "weapon_zeus"))
        {
            if(VIP_IsClientFeatureUse(victim, IMMUNITY))
            {
                damage = 0.0;
                return Plugin_Changed;
            }
        }
    }
    return Plugin_Continue;
}

В файл addons/sourcemod/translations/vip_modules.phrases.txt:
PHP:
"ZeusImmunity"
{
    "en"    "Zeus Immunity"
    "ru"    "Иммунитет от Зевса"
}
а что в групы вип прописать? "ZeusImmunity" "1"?
Сообщения автоматически склеены:

PHP:
#include <vip_core>
#include <sdkhooks>

#define IMMUNITY    "ZeusImmunity"

public void OnPluginStart()
{
    if(VIP_IsVIPLoaded())
    {
        VIP_OnVIPLoaded();
    }
}

public void VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(IMMUNITY, BOOL);
}

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

Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &weapon, float damageForce[3], float damagePosition[3], int damagecustom)
{
    if(victim <= 0 || victim > MaxClients || attacker <= 0 || attacker > MaxClients) return Plugin_Continue;
   
    if(IsValidEntity(weapon))
    {
        char sWeapon[24];
        GetEntityClassname(weapon, sWeapon, sizeof(sWeapon));
       
        if(!strcmp(sWeapon, "weapon_zeus"))
        {
            if(VIP_IsClientFeatureUse(victim, IMMUNITY))
            {
                damage = 0.0;
                return Plugin_Changed;
            }
        }
    }
    return Plugin_Continue;
}

В файл addons/sourcemod/translations/vip_modules.phrases.txt:
PHP:
"ZeusImmunity"
{
    "en"    "Zeus Immunity"
    "ru"    "Иммунитет от Зевса"
}
не работает не показывает в вип
 
Последнее редактирование:
Сверху Снизу