Иконка ресурса

Flash Bang Damage 1.0

SenatoR

Участник
Сообщения
773
Реакции
344
  • Автор ресурса
  • #1
Простой плагин, который добавляет немного реалистичности в игру :)
Оффтоп
 
Последнее редактирование модератором:

NagarD

Участник
Сообщения
411
Реакции
184
Парня жаль, совсем юный ещё..
 

NagarD

Участник
Сообщения
411
Реакции
184
☆★☆БАТЯ☆★☆™, Оффтоп
 

acik_traiks

Что нибудь напишем?)
Сообщения
770
Реакции
627
SenatoR, Оффтоп или что то другое делает?
 

R1KO

fuck society
Сообщения
9,460
Реакции
7,798
  • Команда форума
  • #8
acik, наносит урон
 

SenatoR

Участник
Сообщения
773
Реакции
344
  • Автор ресурса
  • #9
acik, В кс нельзя оторвать руку, плагин просто наносит урон.
 

fallen1994

Участник
Сообщения
2,357
Реакции
538
каким видом наносится урон? По площади или при попадании в тело? и каков урон и радуис ?
 

SenatoR

Участник
Сообщения
773
Реакции
344
  • Автор ресурса
  • #11
каким видом наносится урон? По площади или при попадании в тело? и каков урон и радуис ?

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

fallen1994

Участник
Сообщения
2,357
Реакции
538
Плагин работает не очень хорошо.
Во первых, наносит урон союзникам по команде.
Во вторых, не идет отображение в ShowDamage
В третьих, урон наносится не понятным образом, хотел потестить убивает ли флешка, поставил урон 500, радиус 30, 2 флешки и не убило никого. WTF?
В общем сносит ли урон врагу я так и не понял, а когда кидаю под себя, вроде сносит, но по разному.
 

BloodyAngel

Участник
Сообщения
72
Реакции
54
C++:
#pragma semicolon 1
#pragma newdecls required
 
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

#define PLUGIN_VERSION "1.0"
#define CVAR_FLAGS FCVAR_NOTIFY

public Plugin myinfo =
{
    name = "Flash Bang Damage",
    author = "[RUS] SenatoR",
    description = "наносит урон если рядом взорвалась флешка",
    version = PLUGIN_VERSION
}

ConVar FlashBangDamageEnable, FlashBangDamageAllTeams, FlashBangDamage, FlashBangDamageRadius;
float fFlashBangDamage = 0.0, fFlashBangDamageRadius = 0.0;
bool bHooked = false, bFlashBangDamageAllTeams = false;

public void OnPluginStart()
{
    CreateConVar("sm_flashbangdmg_version", PLUGIN_VERSION,    "Версия плагина", CVAR_FLAGS|FCVAR_DONTRECORD);
    FlashBangDamageEnable = CreateConVar("sm_flashbangdmg_enable", "1",  "Вкл./выкл плагин", CVAR_FLAGS, true, 0.0, true, 1.0);
    FlashBangDamageAllTeams = CreateConVar("sm_flashbangdmg_all_teams", "1",  "Наносить ли урон товарищам по команде?", CVAR_FLAGS, true, 0.0, false);
    FlashBangDamage = CreateConVar("sm_flashbangdmg", "20",  "Урон от флешки", CVAR_FLAGS, true, 0.0, false);
    FlashBangDamageRadius = CreateConVar("sm_flashbangdmg_radius", "20", "Радиус от флешки в котором игроки получат урон", CVAR_FLAGS, true, 0.0, false);

    AutoExecConfig(true, "FlashBangDamage");

    FlashBangDamageEnable.AddChangeHook(OnConVarEnableChanged);
    FlashBangDamageAllTeams.AddChangeHook(OnConVarsChanged);
    FlashBangDamage.AddChangeHook(OnConVarsChanged);
    FlashBangDamageRadius.AddChangeHook(OnConVarsChanged);
}

public void OnConfigsExecuted()
{
    IsAllowed();
}

void OnConVarEnableChanged(ConVar cvar, const char[] oldVal, const char[] newVal)
{
    IsAllowed();
}

void OnConVarsChanged(ConVar convar, const char[] oValue, const char[] nValue)
{
    if(convar == FlashBangDamageAllTeams)
    {
        bFlashBangDamageAllTeams = convar.BoolValue;
    }
    else if(convar == FlashBangDamage)
    {
        fFlashBangDamage = convar.FloatValue;
    }
    else if(convar == FlashBangDamageRadius)
    {
        fFlashBangDamageRadius = convar.FloatValue;
    }
}

void IsAllowed()
{
    bool bPluginOn = FlashBangDamageEnable.BoolValue;
    if(!bHooked && bPluginOn)
    {
        bHooked = true;
        OnConVarsChanged(FlashBangDamageAllTeams, "", "");
        OnConVarsChanged(FlashBangDamage, "", "");
        OnConVarsChanged(FlashBangDamageRadius, "", "");
        HookEvent("flashbang_detonate", OnFlashBangDetonate);
    }
    else if(bHooked && !bPluginOn)
    {
        bHooked = false;
        UnhookEvent("flashbang_detonate", OnFlashBangDetonate);
    }
}

void OnFlashBangDetonate(Event event, const char[] name, bool dontBroadcast)
{
    int attacker = GetClientOfUserId(event.GetInt("userid"));
    if(attacker > 0 && IsClientInGame(attacker) && GetClientTeam(attacker) > 1)
    {
        float fPositionDetonade[3], fVec1[3];
        fPositionDetonade[0] = event.GetFloat("x");
        fPositionDetonade[1] = event.GetFloat("y");
        fPositionDetonade[2] = event.GetFloat("z");

        for (int i = 1; i <= MaxClients; i++)
        {
            if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) > 1 && ((!bFlashBangDamageAllTeams && i != GetClientTeam(attacker)) || bFlashBangDamageAllTeams))
            {
                GetClientAbsOrigin(i, fVec1);
                if (GetVectorDistance(fPositionDetonade, fVec1) <= fFlashBangDamageRadius)
                {
                    SDKHooks_TakeDamage(i, attacker, attacker, fFlashBangDamage, DMG_GENERIC);
                }
            }
        }
    }
}
 
Последнее редактирование:
Сверху Снизу