0.6: Убран хардкод: set_task заменён на set_task_ex и get_players на get_players_ex (спасибо ).
0.5.1: Исправлена ошибка с set_task при старте карты.
0.5:
#define UPDATE_INTERVAL заменён на квар gamename_wins_update_interval: период обновления данных в gamename.
Добавлено автоматические создание и загрузка конфигурационного файла с кварами: "amxmodx/configs/plugins/gamename_wins.cfg".
0.3:
Изменён метод подсчёта количества игроков. Так же, обновление количества игроков теперь происходит раз в 10 секунд, можно уменьшить число в UPDATE_INTERVAL.
Добавлен квар gamename_wins_mode.
0 - подсчитывает всех живых и не живых игроков.
1 - подсчитывает только живых игроков.
0.2: Переделано на более лучший метод с полным использованием ReAPI, таким образом, убран fakemeta. Спасибо fantom и wopox1337.
0.1: Релиз.
Требования:
AMX Mod X 1.8.3 или выше.
ReAPI.
Отображает в названии игры количество террористов, КТ (в зависимости от квара gamename_wins_mode всех игроков -0- или же только живых -1-) и победы обеих команд. <количество КТ> CT « <победы КТ>:<победы Т> » T <количество Т>
Конфигурационный файл с кварами создаётся и загружается автоматически: "amxmodx/configs/plugins/gamename_wins.cfg".
Настройки в конфигурационном файле:
gamename_wins_mode принимает значение 0 или 1. Если 0, то подсчитывает всех игроков. Если 1, то подсчитывает только живых игроков.
gamename_wins_update_interval отвечает за каждые сколько секунд будут обновляться данные.
georgeml, почитал ваши посты. Как вы, однако, любите вонять во всех темах. Вспомните, когда на этом форуме вообще в последний раз был опубликован хоть какой-нибудь плагин? То, что ТС вносит частичку правильного коммьюнити, которым оно было года 3-4 назад, когда здесь просили и получали помощь по плагинам, заслуживает хотя бы молчаливого одобрения.
eat1k, Не принимайте близко.. Срывает голову, когда встречаются извращения Код:
/* * Author contact: or: * - Official resource topic on Russian forum: * - Official resource topic on English forum: * - Official resource topic on Spanish forum: * * Changelog: * - 0.6: set_task changed to set_task_ex and get_players to get_players_ex (thanks to iceeedr) * - 0.5.1: Fixed an issue regarding set_task when map starts. * - 0.5: * - CVar gamename_wins_update_interval instead of #define UPDATE_INTERVAL. * - Added automatic creation and execution of a configuration file with CVars: "amxmodx/configs/plugins/gamename_wins.cfg". * - 0.3: * - Changed the method of counting the number of players. Moreover, the update of the number of players now occurs every 10 seconds, you can reduce the number in UPDATE_INTERVAL. * - Added CVar gamename_wins_mode. * - 0: counting all players (alive and dead). * - 1: counting only alive players. * - 0.2: Redone to a better method with full use of ReAPI, so fakemeta is removed. Thanks to fantom and wopox1337. * - 0.1: Release. */
public plugin_init() { register_plugin("GameName Wins", "0.6", "w0w"); RegisterHookChain(RG_RoundEnd, "func_SetGameDesc", true);
//чем не угодил register_cvar ? Хочется функций от АМХ > 182. Запомним... new pCvar = create_cvar("gamename_wins_mode", "0", FCVAR_NONE, "Counting all players (0) or alive only (1)", true, 0.0, true, 1.0); bind_pcvar_num(pCvar, g_iCvarMode);
//Этот квар будет меняться в процессе игры? Сомнительно.. g_pCvarInterval = create_cvar("gamename_wins_update_interval", "10.0", FCVAR_NONE, "Period of info updates", true, 0.1); hook_cvar_change(g_pCvarInterval, "CallBack_CvarChange"); //Отвратительно неудобно и непривычно для многих. Прописать 2 квара в amxx.cfg- проще простого AutoExecConfig(true, "gamename_wins");
func_SetGameDesc(); // тут нет игроков. Поверьте (или проверьте, если не верите) set_task_ex(get_pcvar_float(g_pCvarInterval), "func_SetGameDesc", TASK_INTERVAL, .flags = SetTask_Repeat); }
public func_SetGameDesc() { new iNumT, iNumCT; func_GetPlayersNum(iNumT, iNumCT); //Куда ветвимся? Какой в этом смысл, если ветка вызывается из одной функции
new szText[64]; formatex(szText, charsmax(szText), "%d CT « %d:%d » T %d", iNumCT, get_member_game(m_iNumCTWins), get_member_game(m_iNumTerroristWins), iNumT);
set_member_game(m_GameDesc, szText); }
func_GetPlayersNum(&iCountT = 0, &iCountCT = 0) { new iPlayers[MAX_PLAYERS], iPlayerCount; //В plugin_init Вы полюбили АМХ последних версий.. помним. //Тогда, зачем эти телодвижения, если есть get_playersnum_ex? Если по нелогичным причинам не "нравится" сразу получать количесво игроков, то можно было и без iPlayerCount обойтись. //Что помешало записать сразу в iCountT get_players_ex(iPlayers, iPlayerCount, g_iCvarMode == 0 ? GetPlayers_MatchTeam : (GetPlayers_ExcludeDead|GetPlayers_MatchTeam), "TERRORIST"); iCountT = iPlayerCount;
georgeml, хорошо - уже прогресс а не пустые слова. Зачем использовать register_cvar когда есть более продвинутый create_cvar? Да, любой из двух кваров может меняться во время игры. Ничего что может быть сперва неудобно использовать конфиги в amxmodx/configs/plugins, пора привыкнуть при переходе на AMXX >= 1.8.3 использовать нормальные конфиги а не писать квары отдельно.
func_SetGameDesc(); // тут нет игроков. Поверьте (или проверьте, если не верите) К чему это? И так понятно что не будет игроков при старте карты, как раз по этой причине и устанавливается.
//Куда ветвимся? Какой в этом смысл, если ветка вызывается из одной функции Да, есть смысл заменить, раньше был другой код, поэтому не изменилось. Про get_playersnum_ex и правда, не заметил как-то что есть такое, спасибо. change_task тоже полезно в этом случае, спасибо за предложения.