Connecting Music (v2.0 & v3.0)

Тук е мястото да представите плъгин(и), написани от вас!
Post Reply
User avatar
1MP4C7
Екип Заявки
Екип Заявки
Posts: 75
Joined: 02 Jun 2012, 17:27
CS Nick: 1MP4C7
Favorite version: CS: Global Offensive
Location: NL
Contact:

Connecting Music (v2.0 & v3.0)

Post by 1MP4C7 »

Здравейте на всички!
От доста време не съм правил плъгини за тази игра но днес реших да направя една актуализация на един мой стар плъгин ConnectingMusic

- Плъгинът е актуализиран до версия "2.0" както до версия "3.0" от които вие ще решите коя версия да използвате при положение че няма кой знае какви промени но ето ги и тях:

v2.0
- Cvar, наречен "музика", се регистрира и се настройва на музикалния файл по подразбиране. Това позволява на администраторите на сървъра лесно да променят музикалния файл, без да променят кода на приставката.
- Добавя се команда "amx_setmusic" за промяна на музикалния файл. Само играчи с ниво на достъп 2 или по-високо могат да го използват.
- Функцията plugin_precache сега използва cvar за предварително кеширане на музикалния файл, което го прави по-динамичен.
- Добавена е функция client_print за уведомяване на потребителите, когато музикалният файл бъде променен.
- Към функцията set_music_file се добавя проверка за администраторско ниво на достъп, за да се ограничи кой може да изпълни командата.
- Функцията set_music_file вече съхранява предварително новия музикален файл след промяната му.
- Функцията client_cmd сега използва функцията get_cvar_string за възпроизвеждане на музикалния файл.

Code: Select all

#include <amxmodx>

public plugin_init() 
{
    register_plugin("ConnectingMusic","2.0","1MP4C7")

    // Register the "music" cvar
    register_cvar("music", "sound/ServerMusic/music.mp3")

    // Add a command to change the music file
    register_clcmd("amx_setmusic", "set_music_file")
}

public plugin_precache() 
{
    // Precache the music file from the "music" cvar
    precache_generic(get_cvar_string("music"))
}

public client_connect(id) 
{
    // Play the music file
    client_cmd(id, "mp3 play %s", get_cvar_string("music"))
    return PLUGIN_CONTINUE
}

public set_music_file(id, level, cid)
{
    if(!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED;
    new file[128];
    get_arg(file, 128);
    set_cvar_string("music", file);
    precache_generic(file);
    client_print(id, print_chat, "[ConnectingMusic] Music file has been set to %s", file);
    return PLUGIN_HANDLED;
}
Тази подобрена версия позволява на администратора на сървъра да променя музикалния файл, без да променя кода на приставката, а също така ограничава достъпа до командата само до оторизирани потребители.

v3.0
- Плъгинът е актуализиран до версия "3.0", за да отрази направените промени.
- Променливата g_musicFile е дефинирана като глобална променлива, така че да може да бъде достъпна във всяка функция.
- Функцията register_cvar е актуализирана, за да включва флага FCVAR_SERVER, така че cvar да може да се променя само от сървърни команди.
- Функцията register_clcmd е актуализирана, за да включва флага ADMIN_LEVEL_A, така че командата да може да се изпълнява само от играчи с ниво на достъп A или по-високо.
- Функцията get_cvar_string се извиква във функцията plugin_init, за да получи текущата стойност на cvar "music" и да я съхрани в променливата g_musicFile.
- Функцията precache_generic се извиква във функцията plugin_init за предварително кеширане на музикалния файл.
- Функцията client_cmd е актуализирана, за да използва променливата g_musicFile, вместо да извиква отново get_cvar_string.
- Функцията set_music_file е актуализирана, за да използва функцията strcopy за актуализиране на променливата g_musicFile с новия музикален файл.

Code: Select all

#include <amxmodx>

new g_musicFile[128];

public plugin_init() 
{
    register_plugin("ConnectingMusic","3.0","1MP4C7")

    // Register the "music" cvar
    register_cvar("music", "sound/ServerMusic/music.mp3", FCVAR_SERVER)

    // Add a command to change the music file
    register_clcmd("amx_setmusic", "set_music_file", ADMIN_LEVEL_A)

    // Get the current value of the "music" cvar
    get_cvar_string("music", g_musicFile, sizeof(g_musicFile));

    // Precache the music file
    precache_generic(g_musicFile);
}

public client_connect(id) 
{
    // Play the music file
    client_cmd(id, "mp3 play %s", g_musicFile);
    return PLUGIN_CONTINUE
}

public set_music_file(id, level, cid)
{
    if(!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED;
    new file[128];
    get_arg(file, 128);
    set_cvar_string("music", file);
    strcopy(g_musicFile, sizeof(g_musicFile), file);
    precache_generic(file);
    client_print(id, print_chat, "[ConnectingMusic] Music file has been set to %s", file);
    return PLUGIN_HANDLED;
}
Тази актуализирана версия на кода използва най-добри практики, като например използване на глобални променливи и модерни функции като флага FCVAR_SERVER, флага ADMIN_LEVEL_A и функцията strcopy, за да направи кода по-ефективен и сигурен.
Post Reply

Return to “Ваши плъгини”