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

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

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

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

Функция Вывод длинной (>128 символов) строки в чат.

SHOROOP

Изучающий
Пользователь
Регистрация
23 Июн 2013
Сообщения
129
Лучшие ответы
0
Репутация
56
Доброго времени суток.

Для собственных нужд необходима была отправка в чат сообщений длиной более 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;
}
Для наглядности - скриншот. Не стоит обращать внимания на то, что он снят на адаптации мультиплеера - функции будут корректно работать, даже если использовать 0.3a-ветку SA:MP.

Использовать - точно так же, как и SendClientMessage/SendClientMessageToAll. Синтаксис полностью совместим.

Вопросы, замечания и пожелания принимаются в этой теме.
 
Последнее редактирование модератором:
Сверху Снизу