Style C4 Timer

Одобрените от нас плъгини. Моля, докладвайте ако забележите бъг с някой от плъгините в този раздел.
Отговори
Потребителски аватар

Автор на темата
OciXCrom™ MKD
Администратор
Администратор
Мнения: 4220
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 29 пъти
Получена благодарност: 251 пъти
Години: 21
Контакти:

Style C4 Timer

Мнение от OciXCrom™ MKD » 07 окт 2016, 16:27

Изображение

Style C4 Timer
Описание
  • C4 таймер, който показва времето до експлозия по малко различен начин. Можете да избирате между няколко различни стилове, включвайки и обикновения, т.е. отброяване до 0. Таймерът също така сменя цвета си през определено време, като по подразбиране започва със зелен цвят, на 10 секунди става жълт, а на 5 става червен.
Списък с cvar-ове
  • * Имайте предвид, че кваровете за цветове и позиция на екрана са активни само когато плъгинът ползва HUD или DHUD съобщения.
  • c4timer_style <по подразбиране: "1"> -- Стил на таймера (вижте стиловете по-долу).
  • c4timer_random <по подразбиране: "0"> -- Дали таймерът да има произволни цветове (ако е включено, долните два cvar-а ще бъдат блокирани).
  • c4timer_yellow <по подразбиране: "10"> -- На колко секунди таймерът да става жълт.
  • c4timer_red <по подразбиране: "5"> -- На колко секунди таймерът да става червен.
  • c4timer_xpos <по подразбиране: "-1.0"> -- X позиция на екрана.
  • c4timer_ypos <по подразбиране: "0.80"> -- Y позиция на екрана.
  • c4timer_type <по подразбиране: "0"> -- Вид на съобщението (0 = HUD; 1 = DHUD; 2 = CENTER)
Стилове (c4timer_style "0/1/2/3/4...")

Изображение
  • * Имайте предвид, че списъка на снимката не е комплектен след последните ъпдейти на плъгина. Нови стилове може да се добавят във файла configs/C4Styles.ini:
  • Стил 0:
    • C4: 10
  • Стил 1:
    • [ | | | | | - - - - - - - - - - ]
  • Стил 2:
    • oooooooooo
  • Стил 3:
    • | > > > > o > > > > > > > > > > |
  • Стил 4:
    • | > > > > C4 > > > > > > > > > > |
  • Стил 5:
    • [ + + + + + - - - - - - - - - - ]
  • Стил 6:
    • [ - - - - > - - - - - - - - - - ]
Снимки

Изображение

Изображение

Изображение

Изображение

Клип (с HUD съобщения)



* Цъкни тук за да видиш всички сървъри, които използват този плъгин.

Допълнителна информация и линк за теглене

Изображение
Изображение
Изображение

Потребителски аватар

Автор на темата
OciXCrom™ MKD
Администратор
Администратор
Мнения: 4220
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 29 пъти
Получена благодарност: 251 пъти
Години: 21
Контакти:

Re: Style C4 Timer

Мнение от OciXCrom™ MKD » 29 дек 2016, 16:15

Update 2.0 @ 29.12.2016
  • Добавен е квар за смяна на вида на съобщението: c4timer_type (0 = HUD; 1 = DHUD; 2 = CENTER)
  • Добавени са нови стилове.
  • Оптимизация на кода.

Потребителски аватар

Stoyan VK Support
Потребител
Потребител
Мнения: 11
Регистриран: 17 апр 2017, 19:27
Местоположение: Sofia, Bulgaria
Години: 20
Контакти:

Re: Style C4 Timer

Мнение от Stoyan VK Support » 17 апр 2017, 20:21

Ще може ли да ми направиш частта със звуците?

Потребителски аватар

Автор на темата
OciXCrom™ MKD
Администратор
Администратор
Мнения: 4220
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 29 пъти
Получена благодарност: 251 пъти
Години: 21
Контакти:

Re: Style C4 Timer

Мнение от OciXCrom™ MKD » 17 апр 2017, 20:28

Update v2.1 @ 23.01.2017
  • Стиловете вече не се намират в .sma файла. Можете да ги променяте и да добавяте нови такива от файла configs/C4Styles.ini.
  • Вече можете да ползвате %n% за да преместите съобщението на нов ред. Отнася се за (D)HUD съобщения
Stoyan VK написа:Ще може ли да ми направиш частта със звуците?

Код: Избери всички

#include <amxmodx>
#include <amxmisc>
#include <csx>

#if AMXX_VERSION_NUM < 183
    #include <dhudmessage>
#endif

#define PLUGIN_VERSION "2.1 [cdown edit]"
#define SYM_NEWLINE "%n%"
#define CDOWN_SOUND "sound/countdown.mp3"

enum
{
    RED = 0,
    GREEN,
    BLUE
}

enum
{
    HUD = 0,
    DHUD,
    CENTER
}

enum _:RegisteredCvars
{
    CVAR_STYLE,
    CVAR_RANDOM,
    CVAR_YELLOW,
    CVAR_RED,
    CVAR_XPOS,
    CVAR_YPOS,
    CVAR_TYPE,
    CVAR_ORIGINAL
}

enum _:CvarValues
{
    CV_STYLE,
    bool:CV_RANDOM,
    CV_YELLOW,
    CV_RED,
    Float:CV_XPOS,
    Float:CV_YPOS,
    CV_TYPE,
    CV_ORIGINAL
}

enum _:Styles
{
    Begin[64],
    Add[20],
    End[20],
    ReplaceSymbol[20],
    ReplaceWith[20],
    bool:DoReplace
}

new g_eRegisteredCvars[RegisteredCvars]
new g_eCvarValues[CvarValues]
new g_eTimer[Styles]
new Array:g_aStyles
 
new g_szTimer[128], g_iCurrentTimer, g_iMessage
new bool:g_bPlanted
new g_iStyles
 
public plugin_init()
{
    register_plugin("Style C4 Timer", PLUGIN_VERSION, "OciXCrom")
    register_cvar("StyleC4Timer", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
    register_logevent("RemoveTimer", 2, "1=Round_Start")
    register_logevent("RemoveTimer", 2, "1=Round_End")
    register_logevent("RemoveTimer", 2, "1&Restart_Round_")
    g_aStyles = ArrayCreate(Styles)
    
    g_eRegisteredCvars[CVAR_STYLE]             =         register_cvar("c4timer_style", "1")
    g_eRegisteredCvars[CVAR_RANDOM]            =         register_cvar("c4timer_random", "0")
    g_eRegisteredCvars[CVAR_YELLOW]         =         register_cvar("c4timer_yellow", "10")
    g_eRegisteredCvars[CVAR_RED]             =         register_cvar("c4timer_red", "5")
    g_eRegisteredCvars[CVAR_XPOS]             =         register_cvar("c4timer_xpos", "-1.0")
    g_eRegisteredCvars[CVAR_YPOS]             =         register_cvar("c4timer_ypos", "0.80")
    g_eRegisteredCvars[CVAR_TYPE]             =         register_cvar("c4timer_type", "0")
    g_eRegisteredCvars[CVAR_ORIGINAL]        =         get_cvar_pointer("mp_c4timer")
    
    g_iMessage = CreateHudSyncObj()
    ReadFile()
}

public plugin_precache()
    precache_generic(CDOWN_SOUND)

public plugin_end()
    ArrayDestroy(g_aStyles)

ReadFile()
{
    new szConfigsName[256], szFilename[256]
    get_configsdir(szConfigsName, charsmax(szConfigsName))
    formatex(szFilename, charsmax(szFilename), "%s/C4Styles.ini", szConfigsName)
    new iFilePointer = fopen(szFilename, "rt")
    
    if(iFilePointer)
    {
        new szData[96], szKey[32], szValue[64]
        new eStyle[Styles]
        
        while(!feof(iFilePointer))
        {
            fgets(iFilePointer, szData, charsmax(szData))
            trim(szData)
            
            switch(szData[0])
            {
                case EOS, ';': continue
                case '{': g_iStyles++
                case '}':
                {
                    eStyle[DoReplace] = !is_blank(eStyle[Add])
                    ArrayPushArray(g_aStyles, eStyle)
                    
                    eStyle[Begin][0] = EOS
                    eStyle[Add][0] = EOS
                    eStyle[End][0] = EOS
                    eStyle[ReplaceSymbol][0] = EOS
                    eStyle[ReplaceWith][0] = EOS
                }
                default:
                {
                    replace_all(szData, charsmax(szData), SYM_NEWLINE, "^n")
                    strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), ':')
                    trim(szKey); trim(szValue); remove_quotes(szValue)
                    
                    if(equali(szKey, "begin"))
                        copy(eStyle[Begin], charsmax(eStyle[Begin]), szValue)
                    else if(equali(szKey, "add"))
                        copy(eStyle[Add], charsmax(eStyle[Add]), szValue)
                    else if(equali(szKey, "end"))
                        copy(eStyle[End], charsmax(eStyle[End]), szValue)
                    else if(equali(szKey, "replace symbol"))
                        copy(eStyle[ReplaceSymbol], charsmax(eStyle[ReplaceSymbol]), szValue)
                    else if(equali(szKey, "replace with"))
                        copy(eStyle[ReplaceWith], charsmax(eStyle[ReplaceWith]), szValue)
                }
            }
        }
        
        fclose(iFilePointer)
    }
}
 
public bomb_planted()
{
    CheckCvars()
    g_bPlanted = true
    g_iCurrentTimer = g_eCvarValues[CV_ORIGINAL]
    FormTimer()
    DisplayTimer()
}
 
public bomb_defused()
    RemoveTimer()
 
public bomb_explode()
    RemoveTimer()

CheckCvars()
{
    g_eCvarValues[CV_STYLE]         =         clamp(get_pcvar_num(g_eRegisteredCvars[CVAR_STYLE]), 0, g_iStyles)
    g_eCvarValues[CV_RANDOM]         =         bool:get_pcvar_num(g_eRegisteredCvars[CVAR_RANDOM])
    g_eCvarValues[CV_YELLOW]         =         get_pcvar_num(g_eRegisteredCvars[CVAR_YELLOW])
    g_eCvarValues[CV_RED]             =         get_pcvar_num(g_eRegisteredCvars[CVAR_RED])
    g_eCvarValues[CV_XPOS]             =        _:get_pcvar_float(g_eRegisteredCvars[CVAR_XPOS])
    g_eCvarValues[CV_YPOS]             =         _:get_pcvar_float(g_eRegisteredCvars[CVAR_YPOS])
    g_eCvarValues[CV_TYPE]             =         get_pcvar_num(g_eRegisteredCvars[CVAR_TYPE])
    g_eCvarValues[CV_ORIGINAL]         =         get_pcvar_num(g_eRegisteredCvars[CVAR_ORIGINAL])
    
    ArrayGetArray(g_aStyles, g_eCvarValues[CV_STYLE], g_eTimer)
}

FormTimer()
{
    ClearTimer()
    
    if(g_eTimer[DoReplace])
    {
        AddToTimer(g_eTimer[Begin])
        
        for(new i; i < g_iCurrentTimer; i++)
            AddToTimer(g_eTimer[Add])
            
        AddToTimer(g_eTimer[End])
    }
    else
        formatex(g_szTimer, charsmax(g_szTimer), g_eTimer[Begin], g_iCurrentTimer)
}

UpdateTimer()
{
    if(g_eTimer[DoReplace])
        ReplaceInTimer(g_eTimer[ReplaceSymbol], g_eTimer[ReplaceWith])
    else
        formatex(g_szTimer, charsmax(g_szTimer), g_eTimer[Begin], g_iCurrentTimer)
}

ClearTimer()
    g_szTimer[0] = EOS
    
AddToTimer(const szString[])
    add(g_szTimer, charsmax(g_szTimer), szString)
    
ReplaceInTimer(const szString[], const szString2[])
    replace(g_szTimer, charsmax(g_szTimer), szString, szString2)
    
public DisplayTimer()
{   
    if(g_bPlanted)
    {    
        if(g_iCurrentTimer >= 0)
        {
            if(g_iCurrentTimer == 10)
                client_cmd(0, "mp3 play %s", CDOWN_SOUND)
            
            switch(g_eCvarValues[CV_TYPE])
            {
                case HUD:
                {
                    new iColor[3]; GetColors(iColor)
                    set_hudmessage(iColor[0], iColor[1], iColor[2], g_eCvarValues[CV_XPOS], g_eCvarValues[CV_YPOS], 0, 1.0, 1.0, 0.01, 0.01)
                    ShowSyncHudMsg(0, g_iMessage, g_szTimer, g_iCurrentTimer)
                }
                case DHUD:
                {
                    new iColor[3]; GetColors(iColor)
                    set_dhudmessage(iColor[0], iColor[1], iColor[2], g_eCvarValues[CV_XPOS], g_eCvarValues[CV_YPOS], 0, 1.0, 1.0, 0.01, 0.01)
                    show_dhudmessage(0, g_szTimer, g_iCurrentTimer)
                }
                case CENTER: client_print(0, print_center, g_szTimer, g_iCurrentTimer)
            }
            
            g_iCurrentTimer--
            
            UpdateTimer()
            set_task(1.0, "DisplayTimer")
        }
    }
}

public RemoveTimer()
{
    if(g_bPlanted)
    {
        g_bPlanted = false
        g_iCurrentTimer = -1
    }
}

GetColors(iColor[3])
{
    if(g_eCvarValues[CV_RANDOM])
    {
        for(new i; i < BLUE; i++)
            iColor[i] = random(256)
    }
    else
    {
        if(g_iCurrentTimer > g_eCvarValues[CV_YELLOW]) iColor[GREEN] = 100
        else if(g_iCurrentTimer > g_eCvarValues[CV_RED])
        {
            iColor[RED] = 255
            iColor[GREEN] = 255
        }
        else iColor[RED] = 255
    }
}

bool:is_blank(szString[])
    return szString[0] == EOS

Отговори

Върни се в “Одобрени плъгини”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 1 гост