Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Небольшой баг в speclist

, Наблюдатели в игре
Статус пользователя Bologercs
сообщение 3.11.2014, 11:12
Сообщение #1


Стаж: 12 лет
Город: Москва

Сообщений: 110
Благодарностей: 125
Полезность: 1318

Собственно сам баг




Это обычный плагин, который показывает список наблюдателей за игроком. Баг заключается в следующем:
Я заметил, что игроки, у которых есть в нике ~ или [] или что-то в этом роде не переносятся на новую строчку, а получается так, что они сливаются в одну строчку с Наблюдают за %s:^n и ^n уже здесь не работает.

Помогите пожалуйста исправить. Искал уже исправленный плагин, ни к какому результату это не привело.

Исходник:
speclist.sma
Код:
#include <amxmodx>
#include <fakemeta>

#pragma semicolon 1

#define RED 64
#define GREEN 64
#define BLUE 64
#define UPDATEINTERVAL 1.0

// Comment below if you do not want /speclist showing up on chat
#define ECHOCMD

// Admin flag used for immunity
#define FLAG ADMIN_IMMUNITY

new const PLUGIN[] = "SpecList";
new const VERSION[] = "1.2a";
new const AUTHOR[] = "FatalisDK";

new gMaxPlayers;
new gCvarOn;
new gCvarImmunity;
new bool:gOnOff[33] = { true, ... };

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);

register_cvar(PLUGIN, VERSION, FCVAR_SERVER, 0.0);
gCvarOn = register_cvar("amx_speclist", "1", 0, 0.0);
gCvarImmunity = register_cvar("amx_speclist_immunity", "1", 0, 0.0);

register_clcmd("say /speclist", "cmdSpecList", -1, "");


gMaxPlayers = get_maxplayers();

set_task(UPDATEINTERVAL, "tskShowSpec", 123094, "", 0, "b", 0);
}

public cmdSpecList(id)
{
if( gOnOff[id] )
{
client_print_color(id, print_chat, "!g[D-S] !tТы больше !gне будешь !tвидеть кто наблюдает за тобой.!n");
gOnOff[id] = false;
}
else
{
client_print_color(id, print_chat, "!g[D-S] !tТеперь ты !gувидишь !tкто наблюдает за тобой.!n");
gOnOff[id] = true;
}

#if defined ECHOCMD
return PLUGIN_CONTINUE;
#else
return PLUGIN_HANDLED;
#endif
}

public tskShowSpec()
{
if( !get_pcvar_num(gCvarOn) )
{
return PLUGIN_CONTINUE;
}

static szHud[1102];//32*33+45
static szName[34];
static bool:send;

// FRUITLOOOOOOOOOOOOPS!
for( new alive = 1; alive <= gMaxPlayers; alive++ )
{
new bool:sendTo[33];
send = false;

if( !is_user_alive(alive) )
{
continue;
}

sendTo[alive] = true;

get_user_name(alive, szName, 32);
format(szHud, 45, "Наблюдают за %s:^n", szName);

for( new dead = 1; dead <= gMaxPlayers; dead++ )
{
if( is_user_connected(dead) )
{
if( is_user_alive(dead)
|| is_user_bot(dead) )
{
continue;
}

if( pev(dead, pev_iuser2) == alive )
{
if( !(get_pcvar_num(gCvarImmunity)&&get_user_flags(dead, 0)&FLAG) )
{
get_user_name(dead, szName, 32);
add(szName, 33, "^n", 0);
add(szHud, 1101, szName, 0);
send = true;
}

sendTo[dead] = true;

}
}
}

if( send == true )
{
for( new i = 1; i <= gMaxPlayers; i++ )
{
if( sendTo[i] == true
&& gOnOff[i] == true )
{
set_hudmessage(RED, GREEN, BLUE,
0.75, 0.15, 0, 0.0, UPDATEINTERVAL + 0.1, 0.0, 0.0, -1);

show_hudmessage(i, szHud);
}
}
}
}

return PLUGIN_CONTINUE;
}

public client_connect(id)
{
gOnOff[id] = true;
}

public client_disconnect(id)
{
gOnOff[id] = true;
}

stock client_print_color(id, type, const text[], any:...)
{
if(type == print_chat)
{
new g_iMsgidSayText;
g_iMsgidSayText = get_user_msgid("SayText");

new szMsg[191], iPlayers[32], iCount = 1;
vformat(szMsg, charsmax(szMsg), text, 3);

replace_all(szMsg, charsmax(szMsg), "!g","^x04");
replace_all(szMsg, charsmax(szMsg), "!n","^x01");
replace_all(szMsg, charsmax(szMsg), "!t","^x03");

if(id)
iPlayers[0] = id;
else
get_players(iPlayers, iCount, "ch");

for(new i = 0 ; i < iCount ; i++)
{
if(!is_user_connected(iPlayers[i]))
continue;

message_begin(MSG_ONE_UNRELIABLE, g_iMsgidSayText, _, iPlayers[i]);
write_byte(iPlayers[i]);
write_string(szMsg);
message_end();
}
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
shel
сообщение 3.11.2014, 13:07
Сообщение #2
Стаж: 12 лет

Сообщений: 79
Благодарностей: 7
Полезность: 0

А вам что зря делали 2 отступа? Не понимаю таких как вы...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bologercs
сообщение 3.11.2014, 13:10
Сообщение #3


Стаж: 12 лет
Город: Москва

Сообщений: 110
Благодарностей: 125
Полезность: 1318

Цитата(shel @ 3.11.2014, 13:07) *
А вам что зря делали 2 отступа? Не понимаю таких как вы...


Если бы я еще понял, что Вы сказали, то было бы вообще замечательно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
shel
сообщение 3.11.2014, 13:44
Сообщение #4
Стаж: 12 лет

Сообщений: 79
Благодарностей: 7
Полезность: 0

Наблюдают за %s:^n ========> Наблюдают за %s:^n^n яснее?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 3.11.2014, 13:48
Сообщение #5


Стаж: 13 лет

Сообщений: 227
Благодарностей: 262
Полезность: 977

Код:
static szHud[1102];//32*33+45
===>
Код:
static szHud[512];

Код:
format(szHud, 45, "Наблюдают за %s:^n", szName);
===>
Код:
format(szHud, charsmax(szHud), "Наблюдают за %s:^n", szName);
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Bologercs
сообщение 3.11.2014, 14:11
Сообщение #6


Стаж: 12 лет
Город: Москва

Сообщений: 110
Благодарностей: 125
Полезность: 1318

Цитата(shel @ 3.11.2014, 13:44) *
Наблюдают за %s:^n ========> Наблюдают за %s:^n^n яснее?


Пробовал, тут не в этом проблема, все равно некоторые ники перед ":" вставляются.

Цитата(Stimul1 @ 3.11.2014, 13:48) *
Код:
static szHud[1102];//32*33+45
===>
Код:
static szHud[512];

Код:
format(szHud, 45, "Наблюдают за %s:^n", szName);
===>
Код:
format(szHud, charsmax(szHud), "Наблюдают за %s:^n", szName);


Все работает! :) Благодарю!

Отредактировал: Bologercs, - 3.11.2014, 16:10
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: