Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок Вывод длинной (>128 символов) строки в чат (SendClientMessageEx/SendClientMessageToAl

Статус
В этой теме нельзя размещать новые ответы.
Вывод длинной (>128 символов) строки в чат (SendClientMessageEx/SendClientMessageToAl

Доброго времени суток.

Для собственных нужд необходима была отправка в чат сообщений длиной более 128 символов, без обрыва строки на середине и с корректным переносом. Имеющиеся реализации не устроили - перенос был оформлен не совсем корректно, да и выглядеть будет некошерно.
Реализовал собственное решение, полностью совместимое с синтаксисом стандартных SendClientMessage/SendClientMessageToAll.

PHP:
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[i] == ' ') 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[i] == ' ') 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. Синтаксис полностью совместим.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу