MrKirill1232 20 Опубликовано 6 апреля, 2021 (изменено) Сборка 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). Изменено 6 апреля, 2021 пользователем MrKirill1232 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Rolo 279 Опубликовано 6 апреля, 2021 Почему прям так перекручивает цвет не скажу, но титулы выводятся не как RGB,а как GBR (как, наверное, и все в клиенте). 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MrKirill1232 20 Опубликовано 6 апреля, 2021 38 минут назад, Rolo сказал: Почему прям так перекручивает цвет не скажу, но титулы выводятся не как RGB,а как GBR (как, наверное, и все в клиенте). теперь другая половина цветов не работает Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MrKirill1232 20 Опубликовано 6 апреля, 2021 (изменено) 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); Изменено 6 апреля, 2021 пользователем MrKirill1232 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Rolo 279 Опубликовано 6 апреля, 2021 (изменено) 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. Главное, что решилась проблема. ) Изменено 6 апреля, 2021 пользователем Rolo 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 8 апреля, 2021 (изменено) непонятно только зачем столько переменных заводить, если можно обойтись одной как вариант, для работы с строкой цвета из 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 Изменено 8 апреля, 2021 пользователем Gaikotsu 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MrKirill1232 20 Опубликовано 9 апреля, 2021 В 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 А что так можно было чтоли ?! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 10 апреля, 2021 (изменено) 16 часов назад, MrKirill1232 сказал: А что так можно было чтоли ?! А почему нет? Если подразумевается и кажется что каждое изменение строки изменяет оригинальную строку, то советую почитать про особенности типа String в яве. Изменено 10 апреля, 2021 пользователем Gaikotsu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MrKirill1232 20 Опубликовано 10 апреля, 2021 2 минуты назад, Gaikotsu сказал: А почему нет? Если подразумевается и кажется что каждое изменение строки изменяет оригинальную строку, то советую почитать про особенности типа String в яве. Просто я пытался как-то понять как это работает, но вот сейчас прям совсем прозрел. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты