Обновление плагина Aura

fallen1994

Участник
Сообщения
2,357
Реакции
538
Есть такой плагин Aura, автор которого Sidex.
Плагин очень хороший, но функций в нем мало, хотелось бы добавить парочку.

  • Добавить установку скорости(Опционально)
  • Сделать так что бы ХП добавлялось не сразу, а к примеру секунд через 5 (для дм полезно, или сделать так, что бы при отключения СпавнПротект, хп возвращалось)
  • Было бы не плохо еще добавить невидимость (Опционально)

Было бы очень не плохо это реализовать, так же как и исправили Kill Bonus
Плагин тоже будет популярен :)

C-подобный:
#include <sourcemod>
#include <sdktools>
#include <clientprefs>

#define MAXCLIENTS 256

new Handle:Timers[MAXCLIENTS+1];
new Handle:AuraCookie;
new String:AuraCookieStr[64];

new g_BeamSprite;
new g_HaloSprite;

public Plugin:myinfo =
{
    name = "Aura",
    author = "SideX",
    description = "Setup Aura on clients",
    version = "0.1",
    url = "http://www.yourserv.ru/"
}

public OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
    
    AuraCookie = RegClientCookie("aura", "AURA", CookieAccess_Public);
    RegConsoleCmd("glow_toggle", Command_Toggle);
    RegConsoleCmd("glow_color", Command_Color);
    RegConsoleCmd("glow_getcolor", Command_GetColor);
}

public OnClientPutInServer(client)
{
    SetClientCookie(client, AuraCookie, "1");
}

public OnMapStart()
{
    g_BeamSprite = PrecacheModel("materials/sprites/laser.vmt");
    g_HaloSprite = PrecacheModel("materials/sprites/halo01.vmt");
}

public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new String:SteamId[64];
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    
    GetClientAuthString(client, SteamId, sizeof(SteamId));
    GetClientCookie(client, AuraCookie, AuraCookieStr, sizeof(AuraCookieStr));
    if (ReadSteamIdFile(SteamId))
    {
        if (StringToInt(AuraCookieStr) == 1 && Timers[client] == INVALID_HANDLE)
        {
            Timers[client] = CreateTimer(0.05, Timer_Beacon, client, TIMER_REPEAT);
            PrintToChat(client, "\x05[Аура] \x04Аура включена. Вы можете выключить ее с помощью glow_toggle.");
        }
        
        SetEntityHealth(client, GetClientHealth(client) + GetAddHealth(SteamId));
    }
}

public Action:Command_Toggle(client, args)
{
    new String:SteamId[64];
    GetClientAuthString(client, SteamId, sizeof(SteamId));
    if (ReadSteamIdFile(SteamId))
    {
        GetClientCookie(client, AuraCookie, AuraCookieStr, sizeof(AuraCookieStr));
        if (StringToInt(AuraCookieStr) == 1)
        {
            SetClientCookie(client, AuraCookie, "0");
            CloseHandle(Timers[client]);
            Timers[client] = INVALID_HANDLE;
            PrintToChat(client, "\x05[Аура] \x04Аура выключена. Вы можете включить ее обратно с помощью glow_toggle.");
        }
        else
        {
            SetClientCookie(client, AuraCookie, "1");
            Timers[client] = CreateTimer(0.05, Timer_Beacon, client, TIMER_REPEAT);
            PrintToChat(client, "\x05[Аура] \x04Аура включена. Вы можете выключить ее с помощью glow_toggle.");
        }
    }
    else
    {
        PrintToConsole(client, "You're can't use aura.");
        return Plugin_Handled;
    }
    
    return Plugin_Handled;
}

public Action:Command_Color(client, args)
{
    if (args != 4)
    {
        PrintToConsole(client, "Incorrect usage! Usage: glow_color r g b a, where r g b - color, a - alpha.");
        return Plugin_Handled;
    }
    
    new String:Arg1[32], String:Arg2[32], String:Arg3[32], String:Arg4[32];
    GetCmdArg(1, Arg1, sizeof(Arg1));
    GetCmdArg(2, Arg2, sizeof(Arg2));
    GetCmdArg(3, Arg3, sizeof(Arg3));
    GetCmdArg(4, Arg4, sizeof(Arg4));
    new String:SteamId[64];
    GetClientAuthString(client, SteamId, sizeof(SteamId));
    if (ReadSteamIdFile(SteamId))
    {
        new String:file[255];
        BuildPath(Path_SM, file, 255, "configs/aura/steamid.txt");
        new Handle:kv = CreateKeyValues("SteamId");
        FileToKeyValues(kv, file);
        KvJumpToKey(kv, SteamId);
        KvSetString(kv, "r", Arg1);
        KvSetString(kv, "g", Arg2);
        KvSetString(kv, "b", Arg3);
        KvSetString(kv, "a", Arg4);
        KvRewind(kv);
        KeyValuesToFile(kv, file);
        PrintToConsole(client, "Aura color change successful");
        PrintToChat(client, "\x05[Аура] \x04Цвет ауры успешно изменен.");
        CloseHandle(kv);
    }
    else
    {
        PrintToConsole(client, "You're can't use aura.");
        return Plugin_Handled;
    }
    
    return Plugin_Handled;
}

public Action:Command_GetColor(client, args)
{
    new String:SteamId[64];
    GetClientAuthString(client, SteamId, sizeof(SteamId));
    if (ReadSteamIdFile(SteamId))
    {
        new r, g, b, a;
        new String:file[255];
        BuildPath(Path_SM, file, 255, "configs/aura/steamid.txt");
        new Handle:kv = CreateKeyValues("SteamId");
        FileToKeyValues(kv, file);
        KvJumpToKey(kv, SteamId);
        r = KvGetNum(kv, "r");
        g = KvGetNum(kv, "g");
        b = KvGetNum(kv, "b");
        a = KvGetNum(kv, "a");
        PrintToConsole(client, "Your aura color: %d %d %d %d", r, g, b, a);
        PrintToChat(client, "\x05[Аура] \x04Ваш цвет ауры: %d %d %d %d", r, g, b, a);
        CloseHandle(kv);
    }
    else
    {
        PrintToConsole(client, "You're can't use aura.");
        return Plugin_Handled;
    }
    
    return Plugin_Handled;
}

public OnClientDisconnect(client)
{
    CloseHandle(Timers[client]);
    Timers[client] = INVALID_HANDLE;
}

bool:ReadSteamIdFile(String:SteamId[])
{
    new String:file[255];
    BuildPath(Path_SM, file, 255, "configs/aura/steamid.txt");
    new Handle:kv = CreateKeyValues("SteamId");
    FileToKeyValues(kv, file);
    if (KvGotoFirstSubKey(kv))
    {
        do
        {
            new String:buffer[256];
            KvGetSectionName(kv, buffer, sizeof(buffer));
            if (StrEqual(SteamId, buffer))
            return true;
        }
        while (KvGotoNextKey(kv));
        CloseHandle(kv);
        return false;
    }
    return false;
}

GetAddHealth(String:SteamId[])
{
    new health;
    new String:file[255];
    BuildPath(Path_SM, file, 255, "configs/aura/steamid.txt");
    new Handle:kv = CreateKeyValues("SteamId");
    FileToKeyValues(kv, file);
    KvJumpToKey(kv, SteamId);
    health = KvGetNum(kv, "hp");
    CloseHandle(kv);
    return health;
}

ReadColor(String:SteamId[])
{
    new color[4];
    new r, g, b, a;
    new String:file[255];
    BuildPath(Path_SM, file, 255, "configs/aura/steamid.txt");
    new Handle:kv = CreateKeyValues("SteamId");
    FileToKeyValues(kv, file);
    KvJumpToKey(kv, SteamId);
    r = KvGetNum(kv, "r");
    g = KvGetNum(kv, "g");
    b = KvGetNum(kv, "b");
    a = KvGetNum(kv, "a");
    CloseHandle(kv);
    color[0] = r;
    color[1] = g;
    color[2] = b;
    color[3] = a;
    return color;
}

public Action:Timer_Beacon(Handle:timer, any:client)
{
    new String:SteamId[64];
    GetClientAuthString(client, SteamId, sizeof(SteamId));
    if (IsPlayerAlive(client))
    SetupBeacon(client, ReadColor(SteamId));
}

SetupBeacon(client, color[4])
{
    new Float:vec[3];
    GetClientAbsOrigin(client, vec);
    vec[2] += 10;
    TE_SetupBeamRingPoint(vec, 50.0, 60.0, g_BeamSprite, g_HaloSprite, 0, 15, 0.1, 10.0, 0.0, color, 10, 0);
    TE_SendToAll();
}
 

semjef

semjef.ru
Сообщения
993
Реакции
444
на данный момент работаю над этим)
правда всё берётся из мускул-базы... для меня это более удобно т.к. несколько серверов))
надеюсь в ближайшее время доделаю)
скоро выложу где всё готово только под свечение... хп не даёт пока( скорость поставить быстро...
 

fallen1994

Участник
Сообщения
2,357
Реакции
538
Up
мейби кто нибудь сделает кому не жалко? :)
 
Сверху Снизу