Доброго времени суток.
Для собственных нужд необходима была отправка в чат сообщений длиной более 128 символов, без обрыва строки на середине и с корректным переносом. Имеющиеся реализации не устроили - перенос был оформлен не совсем корректно, да и выглядеть будет некошерно.
Реализовал собственное решение, полностью совместимое с синтаксисом стандартных SendClientMessage/SendClientMessageToAll.
forward SendClientMessageEx (playerid, color, const message[]);
forward SendClientMessageToAllEx (color, const message[]);
public SendClientMessageEx (playerid, color, const message[])
{
new length = strlen(message);
new outstr[128];
new trim;
if (length > 127)
{
for (new i = 127; i>=0; i--)
{
trim = i;
if (message == ' ') break;
}
if (trim < 64) trim = 127;
strmid (outstr, message, 0, trim, 128);
SendClientMessage (playerid, color, outstr);
strmid (outstr, message, trim, length, 128);
SendClientMessage (playerid, color, outstr);
}
else SendClientMessage (playerid, color, message);
return 1;
}
public SendClientMessageToAllEx (color, const message[])
{
new length = strlen(message);
new outstr[128];
new trim;
if (length > 127)
{
for (new i = 127; i>=0; i--)
{
trim = i;
if (message == ' ') break;
}
if (trim < 64) trim = 127;
strmid (outstr, message, 0, trim, 128);
SendClientMessageToAll (color, outstr);
strmid (outstr, message, trim, length, 128);
SendClientMessageToAll (color, outstr);
}
else SendClientMessageToAll (color, message);
return 1;
}
Использовать - точно так же, как и SendClientMessage/SendClientMessageToAll. Синтаксис полностью совместим.
Вопросы, замечания и пожелания принимаются в этой теме.
Для собственных нужд необходима была отправка в чат сообщений длиной более 128 символов, без обрыва строки на середине и с корректным переносом. Имеющиеся реализации не устроили - перенос был оформлен не совсем корректно, да и выглядеть будет некошерно.
Реализовал собственное решение, полностью совместимое с синтаксисом стандартных SendClientMessage/SendClientMessageToAll.
forward SendClientMessageEx (playerid, color, const message[]);
forward SendClientMessageToAllEx (color, const message[]);
public SendClientMessageEx (playerid, color, const message[])
{
new length = strlen(message);
new outstr[128];
new trim;
if (length > 127)
{
for (new i = 127; i>=0; i--)
{
trim = i;
if (message == ' ') break;
}
if (trim < 64) trim = 127;
strmid (outstr, message, 0, trim, 128);
SendClientMessage (playerid, color, outstr);
strmid (outstr, message, trim, length, 128);
SendClientMessage (playerid, color, outstr);
}
else SendClientMessage (playerid, color, message);
return 1;
}
public SendClientMessageToAllEx (color, const message[])
{
new length = strlen(message);
new outstr[128];
new trim;
if (length > 127)
{
for (new i = 127; i>=0; i--)
{
trim = i;
if (message == ' ') break;
}
if (trim < 64) trim = 127;
strmid (outstr, message, 0, trim, 128);
SendClientMessageToAll (color, outstr);
strmid (outstr, message, trim, length, 128);
SendClientMessageToAll (color, outstr);
}
else SendClientMessageToAll (color, message);
return 1;
}
Использовать - точно так же, как и SendClientMessage/SendClientMessageToAll. Синтаксис полностью совместим.
Вопросы, замечания и пожелания принимаются в этой теме.
Последнее редактирование модератором: