Плагин dhud_advert.amxx

dmitriimail

Новичок
Сообщения
50
Решения
2
Реакции
2
Log:
L 02/23/2020 - 22:16:31: Start of error session.
L 02/23/2020 - 22:16:31: Info (map "cs_mansion") (file "addons/amxmodx/logs/error_20200223.log")
L 02/23/2020 - 22:16:31: replace() buffer not big enough (93>=87)
L 02/23/2020 - 22:16:31: [AMXX] Run time error 10 (plugin "dhud_advert.amxx") (native "replace") - debug not enabled!
L 02/23/2020 - 22:16:31: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
исходник:
#include <amxmodx>
#include <dhudmessage>

#define INTERVAL 10.0 //Интервал между сообщениями (Время показа одного сообщения).
//#define DEATH_PLAYERS //Раскомментируйте, если хотите показывать сообщения только мертвым игрокам.

new Array:g_apMessages, g_iCounter, g_iArraySize, g_pcvar_hostname;

public plugin_init()
{
register_plugin("DHUD Advert.", "2.0", "DUKKHAZ0R");

g_pcvar_hostname = get_cvar_pointer("hostname");
g_apMessages = ArrayCreate(128);
}

public plugin_cfg()
{
new szFile[] = "addons/amxmodx/configs/dhud_advert.ini";

new szHostname[64], szIP[32];
get_user_ip(0, szIP, charsmax(szIP));
get_pcvar_string(g_pcvar_hostname, szHostname, 63);

new fp, szLine[256];

fp = fopen(szFile, "rt");

if(!fp)
set_fail_state("Enable to open ^"addons/amxmodx/configs/dhud_advert.ini^"");

while(!feof(fp))
{
fgets(fp, szLine, charsmax(szLine));

if(szLine[0] && szLine[0] != ';' && strlen(szLine) < 128)
{
replace_all(szLine, charsmax(szLine), "%ip%", szIP);
replace_all(szLine, charsmax(szLine), "%hostname%", szHostname);
replace_all(szLine, charsmax(szLine), "%new%", "^n");

ArrayPushArray(g_apMessages, szLine);
}
}
g_iArraySize = ArraySize(g_apMessages);
fclose(fp);

set_task(12.0, "ShowAdvert", .flags="b");
}

public ShowAdvert()
{
static i, apPlayers[32], iPlayers;
#if defined DEATH_PLAYERS
get_players(apPlayers, iPlayers, "bch");
#else
get_players(apPlayers, iPlayers, "ch");
#endif

static szMessage[128], szName[32];
ArrayGetString(g_apMessages, g_iCounter, szMessage, charsmax(szMessage));

set_dhudmessage(random_num(1, 255), random_num(1, 255), random_num(1, 255), -1.0, 0.15, 0, 2.0, INTERVAL, 0.1, 0.1, false);

for(i = 0; i < iPlayers; i++)
{
replace_all(szMessage, charsmax(szMessage), szName, "%name%");
get_user_name(apPlayers, szName, charsmax(szName));
replace_all(szMessage, charsmax(szMessage), "%name%", szName);

show_dhudmessage(apPlayers, szMessage);
}

if(++g_iCounter >= g_iArraySize)
g_iCounter = 0;
}

Может кто сталкивался??
 
@dmitriimail,
у вас в сообщении скорее всего есть переменные
Код:
replace_all(szLine, charsmax(szLine), "%ip%", szIP);
replace_all(szLine, charsmax(szLine), "%hostname%", szHostname);
replace_all(szLine, charsmax(szLine), "%new%", "^n");
тем самым конечное сообщение все-таки длинное
 
Сверху
Назад