/* CSB Server Adverts — rotating chat/HUD announcements for CS 1.6. * * Copyright (C) 2026 counter-strike-boost.com * Based on the classic AMX Mod X adverts pattern (GPL). * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 3 of the License, or (at your * option) any later version. */ #include #include #define PLUGIN "CSB Server Adverts" #define VERSION "1.0.0" #define AUTHOR "daemon666" #define MAX_ADVERTS 32 #define MAX_ADVERT_LEN 192 new g_Adverts[MAX_ADVERTS][MAX_ADVERT_LEN] new g_AdvertCount new g_Current new g_pInterval new g_pEnabled new g_pPrefix public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) g_pEnabled = register_cvar("csb_adverts_enabled", "1") g_pInterval = register_cvar("csb_adverts_interval", "90.0") g_pPrefix = register_cvar("csb_adverts_prefix", "[INFO]") register_clcmd("say /adverts", "cmd_list_adverts", ADMIN_CFG) load_adverts() new Float:interval = get_pcvar_float(g_pInterval) if (interval < 10.0) interval = 10.0 set_task(interval, "task_advert", 0, "", 0, "b") } /* Reads addons/amxmodx/configs/csb_adverts.ini — one message per line, * ';' and '//' start a comment. Colour codes: !g green, !t team, !y yellow. */ load_adverts() { new path[128] get_configsdir(path, charsmax(path)) format(path, charsmax(path), "%s/csb_adverts.ini", path) g_AdvertCount = 0 new file = fopen(path, "rt") if (!file) { log_amx("[CSB Adverts] Config not found: %s — no adverts loaded.", path) return } new line[MAX_ADVERT_LEN] while (!feof(file) && g_AdvertCount < MAX_ADVERTS) { fgets(file, line, charsmax(line)) trim(line) if (!line[0] || line[0] == ';' || (line[0] == '/' && line[1] == '/')) continue copy(g_Adverts[g_AdvertCount], charsmax(g_Adverts[]), line) g_AdvertCount++ } fclose(file) log_amx("[CSB Adverts] Loaded %d advert(s).", g_AdvertCount) } public task_advert() { if (!get_pcvar_num(g_pEnabled) || !g_AdvertCount) return if (!get_playersnum()) return new prefix[32] get_pcvar_string(g_pPrefix, prefix, charsmax(prefix)) new msg[MAX_ADVERT_LEN + 40] formatex(msg, charsmax(msg), "^x04%s^x01 %s", prefix, g_Adverts[g_Current]) client_print_color(0, print_team_default, msg) g_Current = (g_Current + 1) % g_AdvertCount } public cmd_list_adverts(id, level, cid) { if (!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED console_print(id, "[CSB Adverts] %d advert(s) loaded:", g_AdvertCount) for (new i = 0; i < g_AdvertCount; i++) console_print(id, " %d. %s", i + 1, g_Adverts[i]) return PLUGIN_HANDLED }