Реклама: Новые сервера Lineage 2

Написание GM-Shop на Multisell

4 августа 2009
Написание GM-Shop на Multisell

Есть у нас на форуме старая статья о выполнении этого магазина, но она уже устарела и многие при создании «GM-Shop» сталкивались с проблемами, так как структура «.XML» за это время немного поменялась. Сейчас мы рассмотрим все шаги создания нашего магазина для серверов L2jServer замечательной игры Lineage 2 .

Первым делом нужно выбрать нужного нам NPC, который выступит в роли продавца брони, оружия и бижутерии. Конечно, я не буду наполнять магазин по завязку всяким оружием, это сделаете вы, а я лишь покажу, как это нужно делать. Я выбрал для своего магазина NPC «Andromeda», конечно вы можете выбрать любого другого.
Вот запрос на создание нашего NPC:

INSERT INTO `npc` VALUE(50000, 31324, "Okay", 1, "Supermarket", 1, "NPC.a_casino_FDarkElf", 8, 23, 70, "female", " L2Merchant", 40, 3862, 1493, 11.85, 2.78, 40, 43, 30, 21, 20, 10, 0, 0, 1314, 470, 780, 382, 278, 0, 333, 316, 0, 0, 50, 120, "NULL", 0, 1, 0, "LAST_HIT", 0, 0, 0, "fighter", "false");


Этим запросом мы создадим NPC с именем «Okay», который вы сможете сразу же заспавнить в любом удобном месте, введя в чат команду «//spawn 50000». Для выполнения этих действий нам не нужно выключать сервер, а просто ввести команду «//reload npc» для считывания таблицы NPC. Что вышло у меня смотрим на рисунке ниже.



Как вы заметили, NPC при попытке заговорить с ним выдает нам пустое окно с надписью о том, что файл диалога не найден. Пример на рисунке ниже.



На рисунке мы отчетливо видим, где нужно создать файл, а так же имя этого файла. Давайте создадим файл 50000.htm. Для этого дела можно использовать простой блокнот, но я как всегда выбрал Notepad++. Текст нашего диалога следующий:

<html><body>Okay - Supermarket<br>
Приветствую тебя странник!<br>
У меня есть для тебя дивные товары, которые я продаю по очень низким ценам. Благодаря этому, меня знают как лучшего продавца во всей округе.<br>
Чего желаешь купить?</body></html>


Этот текст сохраняем в кодировке UTF-8 и с именем файла 50000.htm и помещаем его в каталог gs/data/html/merchant/ теперь перегрузите диалоги командой «//reload htm» и обратитесь к нашему NPC, который понемногу становится GM-Shop. Как вы видите, теперь у NPC есть диалог, пример смотрим на рисунке.



И так, нам осталось лишь создать multisell в котором будут указаны наши товары и их цены. Для его написания вам потребуется блокнот или любой другой текстовый редактор. Как я говорил, описывать полный список всего оружия не буду, а лишь приведу пример того, как его добавлять. Создайте файл 50000.xml и напишите в нем следующий текст:

<?xml version='1.0' encoding='utf-8'?>
<list>
<item id="1">
<ingredient id="57" count="50000">
<production id="125" count="1">
</item>
</list>


После этого сохраните файл 50000.xml в каталог gs/data/multisell/. Все, можно тестировать ваш первый GM-Shop, но у нас ведь нет ссылки на «товар» с диалога продавца, откройте файл 50000.htm (тот, что мы создавали ранее) и впишите снизу следующий текст:

<br><a action="bypass -h npc_%objectId%_multisell 50000">Мечи</a>


Вот, теперь-то вы видите, что мы обращаемся к нашему «товару», который находится в 50000.xml. Не забудьте перегрузить диалоги командой «//reload htm». После этого, при обращении к NPC в диалоге будет ссылка на «Мечи» (он у нас там один). Я вам для примера того, как добавить больше мечей дописал multisell до следующего состояния:

<?xml version='1.0' encoding='utf-8'?>
<list>
<item id="1">
<ingredient id="57" count="50000">
<production id="125" count="1">
</item>
<item id="2">
<ingredient id="57" count="10000">
<ingredient id="125" count="1">
<production id="126" count="1">
</item>
<item id="3">
<ingredient id="57" count="55000">
<production id="127" count="1">
<production id="1463" count="1000">
</item>
</list>


Теперь немного пояснений. Первый меч id, которого 125 (в теге <item id=1></item>) у нас продается за 50000 аден. Второй мечь id, которого 126 мы продаем за 10000 аден, но помимо самих аден, мы требуем меч с id 125, который продается выше. Так можно создать, например обмен устаревшего оружия на более новое, мощное и т.д. Пример требований ко второму оружию смотрим на рисунке ниже.



В третьем примере, мы видим продажу меча с id 127 за 55000 аден, но помимо самого меча, мы получаем еще и Soul Shots D Grade в количестве 1000 штук, которые подходят к нашему оружию. Пример того что мы получим, смотрите на рисунке ниже.



Вот и все, дальше можете создавать свои списки оружия, предметов и т.д. Правда хочется еще раз вернуться к multisell и пояснить некоторые детали. Я вам ниже приведу, теги и их атрибуты, которые вы сможете использовать при создании Gm-Shop для ваших серверов.

• item id= - это номер нашего предмета в списке. Каждый предмет, должен иметь свой id.
• ingredient – это то, что мы требуем взамен нашему предмету.
• production – это то, что мы получаем взамен ingredient.
• id – предмет который мы продаем и который мы требуем.
• count – количество предметов которые мы получаем или отдаем.


Два последних атрибута применимы к тегам «ingredient» и «production». Также у многих возникают проблемы, типа создал multisell, а GM-Shop продает совершенно другие вещи. Это от того, что вы пропустили закрывающий слеш одно из тегов «>». Бывает, что вы создали multisell, видите список товаров, а при покупке любого из них вы покупаете только тот, что первый в списке. Эта ошибка из-за не внимательности, я же написал, что каждый новый предмет должен иметь свой id, пример:

<item id="1">Первый предмет</item>
<item id="2">Второй предмет</item>


Если редактируете multisell (50000.xml), то для этого не нужно перезагружать сервер, а просто введите команду «//reload multisell». Что- что, но команды вы должны знать, так что запоминайте, они вам еще не раз понадобятся.

Для написания мануала я использовал сборку сервера L2jServer и клиент Lineage 2 Gracia Part 2. Если у вас остались вопросы, пожалуйста, задавайте их, я с удовольствием на них отвечу. Скачать готовый GM-Shop для сервера Lineage 2, можно с нашего сайта.


Автор статьи: Мостовой Юрий

Огромная просьба к посетителям, пожалуйста, не копируйте статью, просто поделитесь ссылкой на форуме, сайте или блоге если считаете что и вашим посетителям она будет интересна.