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

ЛС в броне и аксессуарах на Interlude-HF5 клиентах

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

lAoKhxAwtX8.jpg?size=246x238&quality=96&BQcMU-SH988.jpg?size=198x280&quality=96& 

 

Чтобы научить клиент Интерлюда видеть ЛСы там, где их быть не должно, нужно немного подшаманить в скриптах Interface.U.

На примере Бижутерии и Головных уборов: для начала ищем в Interface\Classes\ToolTip:
 

Спойлер


        // 3. ACCESSARY
        case ITEM_ACCESSARY:
            bLargeWidth = true;
            
            //Slot Type
            if (Len(SlotString)>0)
                AddTooltipItemOption(0, SlotString, false, true, false);
            
            //Masical Defense
            AddTooltipItemOption(99, String(GetMagicalDefense(Item.CrystalType, Item.Enchanted, Item.MagicalDefense)), true, true, false);
            
            //Weight
            AddTooltipItemOption(52, String(Item.Weight), true, true, false);
        break;

 


Здесь нам нужно сделать вывод ЛСов, аналогично ITEM_WEAPON, получится что-то такое:

Спойлер


        // 3. ACCESSARY

        case ITEM_ACCESSARY:

            bLargeWidth = true;

           

            if (Item.RefineryOp1 != 0 || Item.RefineryOp2 != 0)

            {

                //???

                AddTooltipItemBlank(12);

               

                //"[????]"

                AddTooltipItemOption(1490, "", true, false, false);

                SetTooltipItemColor(255, 255, 255, 0);

               

                //??? ??

                if (Item.RefineryOp2 != 0)

                {

                    Quality = class'UIDATA_REFINERYOPTION'.static.GetQuality( Item.RefineryOp2 );

                    GetRefineryColor(Quality, ColorR, ColorG, ColorB);

                }

               

                if (Item.RefineryOp1 != 0)

                {

                    strDesc1 = "";

                    strDesc2 = "";

                    strDesc3 = "";

                    if (class'UIDATA_REFINERYOPTION'.static.GetOptionDescription( Item.RefineryOp1, strDesc1, strDesc2, strDesc3 ))

                    {  

                        if (Len(strDesc1)>0)

                        {

                            AddTooltipItemOption(0, strDesc1, false, true, false);

                            SetTooltipItemColor(ColorR, ColorG, ColorB, 0);

                        }

                        if (Len(strDesc2)>0)

                        {

                            AddTooltipItemOption(0, strDesc2, false, true, false);

                            SetTooltipItemColor(ColorR, ColorG, ColorB, 0);

                        }

                        if (Len(strDesc3)>0)

                        {

                            AddTooltipItemOption(0, strDesc3, false, true, false);

                            SetTooltipItemColor(ColorR, ColorG, ColorB, 0);

                        }

                    }

                }  

               

                if (Item.RefineryOp2 != 0)

                {

                    strDesc1 = "";

                    strDesc2 = "";

                    strDesc3 = "";

                    if (class'UIDATA_REFINERYOPTION'.static.GetOptionDescription( Item.RefineryOp2, strDesc1, strDesc2, strDesc3 ))

                    {

                        if (Len(strDesc1)>0)

                        {

                            AddTooltipItemOption(0, strDesc1, false, true, false);

                            SetTooltipItemColor(ColorR, ColorG, ColorB, 0);

                           

                        }

                        if (Len(strDesc2)>0)

                        {

                            AddTooltipItemOption(0, strDesc2, false, true, false);

                            SetTooltipItemColor(ColorR, ColorG, ColorB, 0);

                        }

                        if (Len(strDesc3)>0)

                        {

                            AddTooltipItemOption(0, strDesc3, false, true, false);

                            SetTooltipItemColor(ColorR, ColorG, ColorB, 0);

                        }

                    }

                }

               

                //"??/?? ??"

                AddTooltipItemOption(1491, "", true, false, false);

                SetTooltipItemColor(ColorR, ColorG, ColorB, 0);

               

                //???

                if (Len(Item.Description)>0)

                {

                    AddTooltipItemBlank(12);

                }

            }

            //Slot Type

            if (Len(SlotString)>0)

                AddTooltipItemOption(0, SlotString, false, true, false);

           

            //Masical Defense

            AddTooltipItemOption(99, String(GetMagicalDefense(Item.CrystalType, Item.Enchanted, Item.MagicalDefense)), true, true, false);

           

            //Weight

            AddTooltipItemOption(52, String(Item.Weight), true, true, false);

        break;[/CODE]

 

После этих изменений клиент начнет видеть ЛСы в биже и шапках, аналогичное можно проделать и для ITEM_ARMOR, чтобы ЛСы отображались и в броне.

Со стороны же сервера нужно в первую очередь разрешить аугументацию не только оружия. На примере PW Soft, делается это вот здесь:

pwsoft\src\net\sf\l2j\gameserver\model\L2ItemInstance

Ищем public boolean canBeAugmented() и заменяем на нужное нам условие, на примере возможности вставки ЛС в бижу и шапки, например вот так:
 

Спойлер


        if (getItem().getItemGrade() < L2Item.CRYSTAL_C || (getItem().getType2() != L2Item.TYPE2_WEAPON && getItem().getType2() != L2Item.TYPE2_ACCESSORY)) {

            return false;

        }

 


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

Разумеется, дальше Вам нужно будет настроить какие ЛСы и куда вставляются, при какие условия вставки и снятия ЛСа и тд, но это уже совсем другая история, цель была указать где это делается в клиенте, ибо на стороне сервера все зависит от сборки.

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

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


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

Привет, пытаюсь найти 

ITEM_ACCESSARY: в Interface\Classes\ToolTip: 

Но ничего такого нет. Может я делаю что-то не так или не там ищу? Сборка под интерлюд.

image.thumb.png.03df4fbd24d50d4caf975f39c02e3bb1.png

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


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

Вопрос решили в привате, если кто-то столкнется с таким же, то во-первых: был не дефолтный интерфейс, во-вторых: нужные строки таки нашлись, проблема заключалась в ошибках после декомпила, которые не позволили по поиску найти нужные блоки. 
 

Спойлер

584 строка - аксессуары.
Пример отображения ЛСа выдирать с 462 строки.

image.png.dfc448c7155816d61454d9617555b5be.png

image.thumb.png.7f7e359c58065fc86d2716167f5500ef.png

 

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

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


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

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

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

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

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

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

Войти

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

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

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

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

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