Выложу сюда и сами ГМшопы и мануал по созданию и программы для создания.
Итак, ГМшопы бывают 2-х типов: на мультиселах и на байлистах. (еще можно сделать на квестах, но это тупо и геморно)
>>>>>>>>>ГМшопы на мультиселах - это ГМшопы, основанные на файлах xml в папке multisell, в котором хранятся данные о товарах и ценах.
>>>>>>>>>ГМшопы на байлистах - это ГМшопы, основанные на БД, в частности таблицах *buylist.
Преимущества и недостатки обоих типов:
+ ГМшопы на мультиселах хороши тем, что в них можно производить обмен любых товаров на любые товары. Т.е. вы сможете например продавать оружие за
заточки, письма, ресурсы и т.д. Так же можно совмещать такие ресурсы, т.е. брать несколько предметов у игрока и выдавать взамен нечто. Плюс ко всему игрок может выбрать сколько предметов ему надо.
- В них нельзя продавать заточенные предметы. В общем виде ГМшоп на мультиселах выглядит так:
+ ГМшопы на байлистах хороши тем, что позволяют игроку основательно закупиться и годятся для продажи мелких дешевых ресурсов
- Плохи они тем, что взять за товар можно только адену. В общем виде ГМшоп на байлистах выглядит так:
Наиболее удобным и простым в работе является ГМшоп на мультиселах. Его основной компонент - файл ***.xml с общей структурой:
Код:
<?xml version='1.0' encoding='utf-8'?>
<list>
<item id="1"> <---- где 1 это номер в списке Shop'a
<ingredient id="57" count="1000"/> <---- 57 - id адены, сюда можно вписать любой ингридиент, который вам нужен
<ingredient id="хх" count="хх"/> <---- можно добавить несколько ингридиентов
<ingredient id="хх" count="хх"/> <---- можно добавить несколько ингридиентов
<production id="5575" count="1"/> <---- а это то, что игрок получит взамен, 5575 - ИД древней адены, 1 - количество
</item>
</list>
Все, что заключено в тэги <list></list> - это сам ГМшоп, Все, что заключено в тэги <item></item> - это описание конкретного продукта на продажу.
Примечание. <item id="1"> - эти ИД надо расставлять по порядку. Можно начинать с любого, пропускать, но у вас должно быть допустим так: 25, 40, 66. А не 55, 45, 101.
Вот пример мультисела, написанного именно так, тут продаются заточки:
Но это можно не писать руками. Есть несколько программ, которые позволяют быстро и удобно создавать мультиселы и редактировать их
Вот например самая удобная из известных мне программ Lineage II - Multisell Manager.[B]
ССЫЛКИ НА ПРОГРАММУ:
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
Установка и запуск программы:
1. Распаковываем архив в любое удобное место.
2. Вносим из файла item_icon.sql данные в вашу БД (Execute Batch File).
3. Правим файл options.ini
4. Запускаем программу.
В ней есть с основных секции: слева Список ИД из вашей базы, можно искать как по названию, так и по ИД, по цетру как будет выглядеть ваш мультиселл, справа - установление цены на товар. Все операции совершаются перетаскиваем.
Теперь о байлистах. Программы для их редактирования есть только для ПТС, а значит нужно составлять вручную SQL запросы.
Они основаны на данных БД, в частности на 2 таблицах merchant_buylists, merchant_shopids.
ГДЕ:
item_id - ИД предмета
price - цена
shop_id - ИД магазина (из merchant_shopids)
order - порядок в байлисте
--------следующие 4 пунтка могут и не быть в БД
count - количество предмета в магазине (-1 для неограниченного)
current_count - настроящее кол-во в магазине, сейчас (-1 для неограниченного)
time - время продажи (сколько времени тогровать предметом) - обычно 0
save_timer - сколько осталось торговать - обычно 0.
Пример SQL запроса на вставку в байлист 3 итемов Harvester
Код:
INSERT INTO `merchant_buylists` (`item_id`,`price`,`shop_id`,`order`,`count`,`currentCount`, time, savetimer) VALUES
(5125,575,335103,1,-1,-1,0,0),
(5125,575,335145,1,-1,-1,0,0),
(5125,575,335187,1,-1,-1,0,0),
Аналогично составляются запросы и для остальных предметов.
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Таблица merchant_shopids состоит всего из 2-х колонок:
Здесь происходит привязка магазина (shop_id) к конкретному НПЦ (npcId). Но об этом ниже.
ГМшоп должен быть у НПЦ. Здесь каждый волен выбирать ЛЮБОГО НПЦ, который ему понравится: НПЦ обычный, МОБ, ГВАРД, РЕЙДБОСС - кто угодно может быть вашим ГМшопом
1 ЧАСТЬ. СОЗДАНИЕ СВОЕГО УНИКАЛЬНОГО НПЦ
Для этого нам потребуется выбрать, какого НПЦ мы хотим. Мы можем найти его в таблице npc по имени, либо же подойти в нему в игре и нажать на него мышкой, предварительно зажав Shift. Там и увидим в окне, которое откроется, ИД нашего будущего НПЦ.
Теперь нам нужно превратить его в НПЦ для торговли. Для этого пользуемся простым шаблоном:
Код:
INSERT INTO `npc` (`id`,`idTemplate`,`name`,`serverSideName`,`title`,`serverSideTitle`,`class`,`collision_radius`,`collision_height`,`level`,`sex`,`type`,`attackrange`,`hp`,`mp`,`hpreg`,`mpreg`,`str`,`con`,
`dex`,`int`,`wit`,`men`,`exp`,`sp`,`patk`,`pdef`,`matk`,`mdef`,`atkspd`,`aggro`,`matkspd`,`rhand`,`lhand`,`armor`,`walkspd`,`runspd`,`faction_id`,`faction_range`,`isUndead`,
`absorb_level`,`absorb_type`) VALUES
(12077,12077,'Wolf',0,'',0,'Monster.pet_wolf',13.00,11.50,15,'male','L2Pet',40,195,164,3.95,1.21,40,43,30,21,20,25,0,0,9,19,3,17,282,0,333,0,0,0,26,137
,NULL,0,0,0,'LAST_HIT');
Тут нам нужно указать несколько важных вещей:
ИД НПЦ основы, т.е. как будет выглядеть наш НПЦ, его имя и титул.
Изменять будем значения
idTemplate - номер того НПЦ, которого мы выбрали как ГМшоп
name - имя НОВОГО нпц
title - титул НОВОГО НПЦ
class - класс нового НПЦ (копируем этот класс из строки БД, откуда взяли старого НПЦ)
Примечание Чтобы имя и титул брались сервером из базы, а не из клиента, нужно поставить значения "1" для полей serverSideName и serverSideTitle
В итоге наш запрос принимает такой вид:
Код:
INSERT INTO `npc` (`id`,`idTemplate`,`name`,`serverSideName`,`title`,`serverSideTitle`,`class`,`collision_radius`,`collision_height`,`level`,`sex`,`type`,`attackrange`,`hp`,`mp`,`hpreg`,`mpreg`,
`str`,`con`,`dex`,`int`,`wit`,`men`,`exp`,`sp`,`patk`,`pdef`,`matk`,`mdef`,`atkspd`,`aggro`,`matkspd`,`rhand`,`lhand`,`armor`,`walkspd`,`runspd`,`faction_id`,`faction_range`,`isUndead`,
`absorb_level`,`absorb_type`) VALUES
('',29022,'GMSHOP',1,'THE BEST',1,'Monster.zaken',13.00,11.50,15,'male','L2Merchant',40,195,164,3.95,1.21,40,43,30,21,20,25,0,0,9,19,3,17,282,0,333,0,0,0,26,137
,NULL,0,0,0,'LAST_HIT');
ВАЖНО! Для любого торговца в поле type нужно указать L2Merchant, иначе работать НЕ БУДЕТ!!
ВАЖНО! Чтобы ваш НПЦ не был наполовину под землей тщательно скопируйте данные полей collision_radius, collision_height от старого НПЦ
2 ЧАСТЬ. ПРВЯЗКА HTML К НПЦ
Теперь нам нужно, чтобы НПЦ показывал при его активации определенное окно, где будет наш ГМшоп.
Делается это так: нужно создать файл html с названием ИД ВАШЕГО НОВОГО НПЦ, т.е. если ваш новый НПЦ имеет в базе ИД 25897, то файл должен быть 25897.html. Внутри этого файла может быть что угодно, приведу пример: