Перейти к содержанию
Авторизация  
MrKirill1232

Помощь в скрипте цвета титулов

Рекомендуемые сообщения

Сборка Prelude Of War v3 - Tenkai 

Написал скрипт для того, чтобы менять цвет титула, но иногда присваивается неправильный цвет.

Привязал его к итему, html ниже

Спойлер

<table border=0 cellpadding=0 cellspacing=10><tr>
<td align="center"><a action="bypass -h ChangeColorTitle 009900"><font color="009900">%Зеленый%</font></a></td><!-- зеленый --> <!-- зеленый -->
<td align="center"><a action="bypass -h ChangeColorTitle FF8000"><font color="FF8000">%Оранжевый%</font></a></td><!-- синий --> <!-- оранжевый -->
</tr><tr>
<td align="center"><a action="bypass -h ChangeColorTitle 000000"><font color="000000">%Черный%</font></a></td><!-- черный --> <!-- черный -->
<td align="center"><a action="bypass -h ChangeColorTitle 00FFFF"><font color="00FFFF">%Голубой%</font></a></td><!-- золотой --> <!-- голубой -->
</tr><tr>
<td align="center"><a action="bypass -h ChangeColorTitle FF0000"><font color="FF0000">%Синий%</font></a></td><!-- красный --> <!-- синий --> 
<td align="center"><a action="bypass -h ChangeColorTitle ffff00"><font color="ffff00">%Светлоголубой%</font></a></td><!-- оранжевый --> <!-- синенький? -->
</tr><tr>
<td align="center"><a action="bypass -h ChangeColorTitle 80FF80"><font color="80FF80">%Лаймовый%</font></a></td><!-- лаймовый --> <!-- лаймовый -->
<td align="center"><a action="bypass -h ChangeColorTitle AAAAAA"><font color="AAAAAA">%Серый%</font></a></td><!-- серый --> <!-- серый -->
</tr><tr>
<td align="center"><a action="bypass -h ChangeColorTitle 65535"><font color="ffff00">%Золотой%</font></a></td><!-- голубой --> <!-- золотой --> 
<td align="center"><a action="bypass -h ChangeColorTitle FB8F8F"><font color="FB8F8F">%Розовый%</font></a></td><!-- фиолетовый --> <!-- розовый -->
</tr><tr>
<td align="center"><a action="bypass -h ChangeColorTitle 0099ff"><font color="0099ff">%Красный%</font></a></td><!-- красный --> <!-- синий --> 
</tr><tr>
<td valign="top" align="center" width="200" height=1>
										<edit var="color" type="numer" width="200" height="12" length="25">
									</td>
<td valign="top" align="center" width="20">
										<button value="Change" action="bypass -h ChangeColorTitle $color" width=64 height=22 back="l2ui_ch3.chatting_tab1" fore="l2ui_ch3.chatting_tab2">
						
									</td>
</tr></table>

 

final String colorId = command.split(" ")[1].trim();
final String colorId1 = colorId.substring(0, colorId.length() / 2);
final String colorId2 = colorId.substring(colorId.length() / 2);

final String newTitleColorHex = (colorId2 + colorId1);
int newTitleColorDecimal=Integer.parseInt(newTitleColorHex,16);

player.getAppearance().setTitleColor(newTitleColorDecimal);
Спойлер

 

Буду благодарен если поясните в чем проблема.
--
Скрипт отрабатывает правильно, но выводит цвета неправильно или сервер или сам клиент.
К примеру - 0099ff - синий в hex (самое последнее значение в html), после скрипта он записывается как 10481673 в БД, что является перевернутым 9FF009, но в игре отображается как 08EC9A (584858).

Изменено пользователем MrKirill1232

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему прям так перекручивает цвет не скажу, но титулы выводятся не как RGB,а как GBR (как, наверное, и все в клиенте). 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
38 минут назад, Rolo сказал:

Почему прям так перекручивает цвет не скажу, но титулы выводятся не как RGB,а как GBR (как, наверное, и все в клиенте). 

теперь другая половина цветов не работает :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
59 минут назад, Rolo сказал:

Почему прям так перекручивает цвет не скажу, но титулы выводятся не как RGB,а как GBR (как, наверное, и все в клиенте). 

Спасибо что указали куда копать.

Оказывается для титулов нужно указывать BGR, сейчас все работет нормально.

final String colorId = command.split(" ")[1].trim();
//									  70DB93 RGB
final String colorId1 = colorId.substring(0, colorId.length() / 3); 	//70
final String colorId2 = colorId.substring(colorId.length() / 3);	//DB93
final String colorId3 = colorId2.substring(colorId2.length() / 2);	//93
final String colorId4 = colorId2.substring(0, colorId2.length() / 2);	//DB

final String newTitleColorHex = (colorId3 + colorId4 + colorId1);

int newTitleColorDecimal=Integer.parseInt(newTitleColorHex,16);

player.getAppearance().setTitleColor(newTitleColorDecimal);

 

Изменено пользователем MrKirill1232

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, MrKirill1232 сказал:

Спасибо что указали куда копать.

Оказывается для титулов нужно указывать BGR, сейчас все работет нормально.


final String colorId = command.split(" ")[1].trim();
//																		  70DB93 RGB
final String colorId1 = colorId.substring(0, colorId.length() / 3); 	//70
final String colorId2 = colorId.substring(colorId.length() / 3);		//DB93

final String colorId3 = colorId2.substring(colorId2.length() / 2);		//93

final String colorId4 = colorId2.substring(0, colorId2.length() / 2);	//DB

final String newTitleColorHex = (colorId3 + colorId4 + colorId1);

int newTitleColorDecimal=Integer.parseInt(newTitleColorHex,16);

player.getAppearance().setTitleColor(newTitleColorDecimal);

 

Черт, мой косяк, буквы местами перепутал, клиент действительно использует везде именно BGR. Главное, что решилась проблема. ) 

Изменено пользователем Rolo
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

как вариант, для работы с строкой цвета из 6 символов

	/**
	 * Конвертирует значение цвета из формата RGB в формат BRG
	 */
	public final static String rgb2bgr(final String color)
	{
		if (color.length() != 6)
			return color;

		return color.substring(4, 6) + color.substring(2, 4) + color.substring(0, 2);
	}

на вход подается хекс значение в виде строки RGB, обратно отдается хекс в виде BGR

Изменено пользователем Gaikotsu
  • Haha 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 08.04.2021 в 15:57, Gaikotsu сказал:

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

как вариант, для работы с строкой цвета из 6 символов


	/**
	 * Конвертирует значение цвета из формата RGB в формат BRG
	 */
	public final static String rgb2bgr(final String color)
	{
		if (color.length() != 6)
			return color;

		return color.substring(4, 6) + color.substring(2, 4) + color.substring(0, 2);
	}

на вход подается хекс значение в виде строки RGB, обратно отдается хекс в виде BGR

А что так можно было чтоли ?!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
16 часов назад, MrKirill1232 сказал:

А что так можно было чтоли ?!

А почему нет?

Если подразумевается и кажется что каждое изменение строки изменяет оригинальную строку, то советую почитать про особенности типа String в яве.

Изменено пользователем Gaikotsu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, Gaikotsu сказал:

А почему нет?

Если подразумевается и кажется что каждое изменение строки изменяет оригинальную строку, то советую почитать про особенности типа String в яве.

Просто я пытался как-то понять как это работает, но вот сейчас прям совсем прозрел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...