Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   Скупка итемов у игроков (https://forum.zone-game.info/showthread.php?t=43357)

ntking 18.10.2018 14:45

Скупка итемов у игроков
 
Собственно решил на сервере поставить скупку определенных итемов (например ресурсов) по определенной цене, а не по той, что предлагают в магазинах. (Как вариант просто изменить базовую цену, и тогда можно будет сдавать эти итемы хоть в магазин по необходимой цене, но я не иду таким путем).
Естественно для этого можно и нужно использовать multisell. Но мне не нравится следующее: в окне мультиселла отображаются "production", т.е. адена, а мне надо, чтобы отображались "ingredient", т.е. то, что покупает (меняет) NPC у игрока, сдаваемые предметы.
Как вариант использовать в "production" нулевое количество сдаваемого ингридиента, но тогда появляется баг: после сдачи всех ингредиентов в сумке он остается с нулевым количеством. Ну вот к примеру, NPC хочет покупать у игроков стебли:
Код:

<!-- Stem -->
<item id="1">
        <ingredient id="1864" count="1"/>
        <production id="57" count="100"/>
</item>

в окне скупки будут отображаться аденки. Если сделать так:
Код:

<item id="1">
        <ingredient id="1864" count="1"/>
        <production id="1864" count="0"/>
        <production id="57" count="100"/>
</item>

В окне скупки будут отображаться стебли, но при полной сдаче стеблей - в сумке останутся стебли с количеством "0". После рестарта персонажа сервер конечно их удалит из сумки, но до этого момента нулевое количество будет в сумке занимать слот.

Теперь собственно сам вопрос: есть ли простое решение, чтобы вместо "production" в окне мультиселла отображался "ingredient", без вмешательства в код сервера (что-то вроде добавить в item флаг "showingredient", по умолчанию "false", но если "true" отображать "ingredient").

P.S. Сборка L2Phoenix.

flopix 18.10.2018 19:56

Re: Скупка итемов у игроков
 
Игроки будут путаться так как все привыкли что в списке отображается получаемый предмет.

Если есть исходники то доработать обработку покупки RequestMultiSellChoose.java
Чтобы при production.count = 0 не выдавать этот предмет.

ntking 19.10.2018 12:27

Re: Скупка итемов у игроков
 
Цитата:

Сообщение от flopix (Сообщение 432645)
Игроки будут путаться так как все привыкли что в списке отображается получаемый предмет.

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

Сообщение от flopix (Сообщение 432645)
Если есть исходники то доработать обработку покупки RequestMultiSellChoose.java
Чтобы при production.count = 0 не выдавать этот предмет.

Исходники есть, но сервер скомпилирован с огромными изменениями/исправлениями от тех исходников, что у меня. Эти изменения терять нельзя, поэтому по сути у меня нет доступа к текущей версии кода.
Я нашел то, о чем Вы имели ввиду:
Код:

else if(ItemTemplates.getInstance().getTemplate(in.getItemId()).isStackable())
                                {
                                        L2ItemInstance product = ItemTemplates.getInstance().createItem(in.getItemId());
                                        double total = in.getItemCount() * _amount;

                                        product.setCount((long) total);
                                        activeChar.sendPacket(SystemMessage.obtainItems(product));
                    inv.addItem(product);
                                }

То бишь выдача стыкуемого товара. Здесь бы и стоило применить условие: не выдавать продукцию с нулевым количеством. Но такой возможности у меня нет(


Текущее время: 16:24. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot