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

Тема в разделе "Запросы", создана пользователем fallen1994, 2 дек 2011.

  1. fallen1994

    fallen1994

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

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

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

    Код:
    #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();
    }
     
  2. semjef

    semjef semjef.ru

    Сообщения:
    1.031
    Симпатии:
    473
    на данный момент работаю над этим)
    правда всё берётся из мускул-базы... для меня это более удобно т.к. несколько серверов))
    надеюсь в ближайшее время доделаю)
    скоро выложу где всё готово только под свечение... хп не даёт пока( скорость поставить быстро...
     
  3. fallen1994

    fallen1994

    Сообщения:
    2.347
    Симпатии:
    544
    Up
    мейби кто нибудь сделает кому не жалко? :)