Баг цветных сообщений join_info

-=Batista=-

Просвященный
Сообщения
304
Реакции
88
Имеется плагин join info. Переделал сообщение, добавил цветность. Но есть проблема: когда город не определяется, то заместо города плагин пишет код цвета. Как этого избежать? Более желательно, чтобы писало город "не определен" в том случае, если город не определился

521bab703159.png


Приложено два исходника: через morecolors и обычным способом, желательно подправить именно обычный
 

Вложения

  • join_info_morecolors.sp
    2 КБ · Просмотры: 17
  • join_info.sp
    2.1 КБ · Просмотры: 23

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Мда, код веселый...
Сделай так например:
PHP:
public OnSocketReceive(Handle:socket, String:receiveData[], const dataSize, any:id)
{
	new position = StrContains(receiveData, "IP Location: ", false);
	new posorg = StrContains(receiveData, "Organization: ", false);
	if (position < 1 || posorg < 1)
		return;

	decl String:info[2][65], String:org[1][100];
	if (ExplodeString(receiveData[position + 13], " ", info, 2, 65) > 1 && ExplodeString(receiveData[posorg + 14], ")", org, 1, 65) > 0)
	{
		CloseHandle(socket);

		new client;
		if ((client = GetClientOfUserId(id)) < 1)
			return;

		decl String:steamid[30];
		if (!GetClientAuthString(client, steamid, 30)) strcopy(steamid, 30, "steamid: -");
		TrimString(info[0]);
		if(info[0][0]=0)
			strcopy(info[0],65,"город не определен");
		else
			format(info[0],65,"из города \x0700FFFF%s",info[0]);
		PrintToChatAll("\x07DC143C[my-ring.ru]: \x0700FF00зашел игрок \x0700FFFF%N, \x0700FF00%s", client, info[0]);
	}
}
Хотя в принципе можно еще упростить.. Да и GeoIP же есть в SM, зачем отдельно придумывать?
 

-=Batista=-

Просвященный
Сообщения
304
Реакции
88
Мда, код веселый...
Сделай так например:
PHP:
public OnSocketReceive(Handle:socket, String:receiveData[], const dataSize, any:id)
{
	new position = StrContains(receiveData, "IP Location: ", false);
	new posorg = StrContains(receiveData, "Organization: ", false);
	if (position < 1 || posorg < 1)
		return;

	decl String:info[2][65], String:org[1][100];
	if (ExplodeString(receiveData[position + 13], " ", info, 2, 65) > 1 && ExplodeString(receiveData[posorg + 14], ")", org, 1, 65) > 0)
	{
		CloseHandle(socket);

		new client;
		if ((client = GetClientOfUserId(id)) < 1)
			return;

		decl String:steamid[30];
		if (!GetClientAuthString(client, steamid, 30)) strcopy(steamid, 30, "steamid: -");
		TrimString(info[0]);
		if(info[0][0]=0)
			strcopy(info[0],65,"город не определен");
		else
			format(info[0],65,"из города \x0700FFFF%s",info[0]);
		PrintToChatAll("\x07DC143C[my-ring.ru]: \x0700FF00зашел игрок \x0700FFFF%N, \x0700FF00%s", client, info[0]);
	}
}
Хотя в принципе можно еще упростить.. Да и GeoIP же есть в SM, зачем отдельно придумывать?

Код этот не мой, поэтому ничего сказать по этому поводу не могу. А выбрал этот плагин, т.к. он наименее громоздкий

Добавлено через 16 минут

Твой вариант мне наиболее подойдет) Завтра ближе к вечеру проверю. Спасибо! :P
 
Последнее редактирование:

Похожие темы

Ответы
233
Просмотры
82К
Сверху Снизу