От доста време не съм правил плъгини за тази игра но днес реших да направя една актуализация на един мой стар плъгин 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;
}