#04 — Уроки по La2 — Создание ГМ шопа

Краткое содержание

В видео подробно объясняется создание и редактирование магазинов в игре Lineage с использованием GameShop. Рассматриваются два типа магазинов: Merchant и Buylist, их особенности и способы настройки через HTML, XML и SQL файлы. Представлены примеры создания NPC-магазина, настройки диалогов и загрузки данных в базу. Также даны советы по решению ошибок при установке SQL-файлов из интернета.

[00:10] Всем привет! В предыдущем видео мы с вами разобрались, как работает виртуальный HTTP-сервер, открыли необходимые порты на серверной машине и создали своего первого админа. А в этом видео мы подробно разберем, что же такое GameShop, какие типы магазинов бывают в Lineage, как создавать и редактировать новые магазины и что же делать, если вы скачали GameShop из интернета, а при установке SQL-файла вам выдает ошибку.

[00:37] Итак, начнем! Для начала немного теории. В Lineage есть два типа магазинов. Merchant и Buylist. Merchant по своей сути является не магазином, а обменником. То есть в этом типе магазинов игроку предлагают получить необходимый ему предмет в обмен на что-то.

[00:58] Это может быть как просто адена, так и совокупность адены с другими предметами, или же просто любой другой предмет. Или предметы. То есть несколько предметов любого типа, даже квестовые. С байлистами все несколько иначе. В данном типе магазинов игрок покупает предмет только за адену. И цена этого предмета берется из базы данных, а не выставляется где-то в отдельном файле, как в первом случае.

[01:26] Я уже подготовился к этому уроку, поэтому у меня уже есть три файла. Это наш HTML-диалог, это наш XML-файл, в котором мы будем создавать непосредственно сам магазин, и SQL-файл нашего NPC. В HTML-диалоге прописывается код кнопок, выставляются картинки и прочее-прочее.

[01:46] В общем, это то, что видит игрок при обращении к NPS. В XML-файлах прописывается код непосредственно самого магазина. То есть тут мы прописываем ID тех предметов, которые будут продаваться, а также их цену. Закрепим теорию на практике. Сначала нам нужно создать НПС, который будет являться нашей физической оболочкой магазина.

[02:10] То есть тот НПС, к которому будет обращаться игрок, чтобы что-то приобрести.

[02:15] Я предлагаю сделать это просто, подойти к любому первому попавшемуся НПС, и для практики нам этого будет более чем достаточно. Через Shift-click появляется вот такая вот панель. И мы видим вот здесь вот Template ID. Это ID нашего NPS. 3-3-0-3. Вот я уже выбрал этого NPS.

[02:36] Объясняю. Первое, это номер ID, по которому спавнится данный NPS. Второе, это его физическая оболочка, его текстуры. Это ID шкурки нашего NPS. Это ее имя. Мы ее переименуем. Напишем GameShop. Здесь обязательно нужно поставить циферку 1, чтобы система знала, что сейчас нужно писать новое имя.

[02:58] Здесь трейдер предлагает так и оставить. У нас здесь уже есть L2 Merchant. Если вы взяли текстуру любого другого NPS, будь то какой-нибудь MOP, либо просто другой NPS, не связанный с магазином, у него здесь будет написано «Другой класс». вам вместо того другого класса обязательно нужно поставить L2 Merchant.

[03:19] Таким образом система определяет, что данный НПС является магазином. На этом все. Нажимаем Ctrl-A, Ctrl-C, копируем. Переходим в базу данных, нажимаем на нашей базе правой кнопкой и здесь выбираем слово «Консоль». Вставляем, нажимаем Enter и вот он говорит о том, что данный NPS уже существует и мы пытаемся его продублировать.

[03:43] Это все потому, что мы не изменили здесь его ID. Нам нужно создать нового НПС с номером 9006. Ваш НПС может быть с абсолютно любым другим номером. Главное, чтобы этот номер не совпадал с уже существующими НПС. Все, новый НПС создан.

[04:04] Теперь нужно сделать для него диалог с именем, равнозначным тому ID НПС, которого вы только что создали. То есть мы создали 9006 и HTML файл должен называться 9006. Внутри мы пишем любой текст, который вы хотите, чтобы видели игроки, и кнопки.

[04:24] Есть два типа кнопок. Текстовая ссылка и непосредственно сама кнопка, которая имеет возможность настраивать текстуры кнопки и ее размер. Вот эта вот команда обращается к мультиселлу при нажатии данной кнопки. Наш мультиселл это 6 девяток, я его уже создал, вот он.

[04:44] Мультиселл изнутри выглядит следующим образом. Непосредственно сам синтаксис создания мультиселла и синтаксис создания магазинов. Здесь в этом теге прописывается ID, ID этого предмета. Все предметы в мультиселлах должны идти строго по очереди. Если у вас будет вот так вот, то есть 1, 2, 2, то в магазине отобразится три разных предмета.

[05:10] Но при покупке вот этого вот предмета, игрок получит предмет с вот этим ID. Все предметы, которые вы продаете в мультиселе, должны быть пронумерованы последовательно сверху вниз по увеличению. 1, 2, 3 и так далее. Что же мы здесь видим? Здесь есть тег Production. Это ID того продукта, который будет продаваться в этом мультиселе под тегом Item ID.

[05:36] То есть 8680 это ID оружия. Ингредиенты, за которые будет покупаться данное оружие, прописываются в бесконечном порядке. То есть здесь их может быть очень много, с разными ID и с разным количеством. Это уже на ваше усмотрение. Когда игрок подойдет и выберет покупку вот этого предмета, справа у него высветится количество нужных ингредиентов для покупки данного оружия.

[06:04] Собственно, на этом все. Мы копируем HTML файл. Переходим в «Game». Дата. HTML. И вот здесь ищем папочку Merchant. Вставляем наш магазин именно в эту папку. Дальше копируем наш XML файл. Переходим в Game.

[06:26] Дата. И вот здесь вот Multisale. Вставляем. Переходим в игру. Заходим на нашего админа, выбираем команду Reload. И нужно перезагрузить сначала NPS-лист. То есть так как мы создали нового NPS, система еще о нем не знает, и нам нужно перезагрузить этот список, чтобы система знала про нового NPS.

[06:50] Перезагружаем Multisale по той же самой причине и HTML-диалоги. Все перезагрузили, пишем команду Reload. Паван 9, 1, 2, 3, 6. Создается МПС с нашим названием, с титулом трейдер. Обращаемся к ней. Тут мы видим собственно тот текст, который мы написали.

[07:12] И собственно вот о чем я говорил. Вот кнопка, вот просто ссылка. Но она ведет к одному и тому же. Мы создали магазин типа Merchant, из которых в основном состоят все GM-шопы. Потому что удобно в том плане, что предмет не обязательно покупать именно за ADEN, можно покупать и за любой другой предмет, в частности, те же самые Coin of Luck, когда мы создаем магазин донаторских вещей.

[07:43] Следующий тип магазинов называется buy list. Это магазины вот такого вот типа. То есть, когда открывается вот такое вот окошко, и мы можем купить что-то только за адену. Это достаточно распространенный тип магазинов в Lineage. Вы с ними часто сталкивались, но мало кто знает о том, как создавать либо редактировать данный тип магазинов.

[08:09] В базе данных данный тип магазинов обозначен вот такими вот двумя таблицами. Merchant Buy List и Merchant Shop ID. Таблица Merchant Shop ID состоит, собственно, из двух столбцов. Это Shop ID и NPS ID. Объясню. Вот, к примеру, данный NPS имеет ID 303.15.

[08:30] Отфильтруем 303.15. мы отфильтровали данного НПС. То есть у данного НПС есть два магазина. Магазин с ID 68 и магазин с ID 500. Объясняю. Вот здесь написано «Купить расходный материал». Нажимаем и попадаем вот в такое вот окошко с расходным материалом.

[08:53] Если мы откроем Merchant Buy List, это непосредственно сам магазин, то что мы видим внутри окошка, вот это вот, когда мы нажимаем на «Диалог». Переходим в Merchant Buy List и фильтруем уже по Shop ID 68. Вот этот список, это то, что находится вот по этой ссылке.

[09:16] Это стрелы, эликсиры, ну и различные расходные материалы, которые можно купить за адену у данного НПС. Как же редактировать данный вид магазина?

[09:28] Все очень просто.

[09:30] Для начала нам нужно найти, где находится HTML-диалог данного NPC. Переходим в наш сервер, Game, Data. html и вот здесь в поиске пишем 303 15 и вот здесь снизу написано game дата html мерчант то есть данный магазин находится в той же самой папке мерчант где находится html диалоги магазинов собственно непосредственно мерчант но есть одна большая разница это разница вот в этой вот кодировки если мы брали магазин который относится к мерчант через мультиселла то у нас вот здесь было написано мультиселл и айди этого мультиселла то у buy листов здесь написан buy и айди этого магазина непосредственно Как же правильно настраивать данный тип магазинов?

[10:29] Для начала нужно зайти в базу данных и обе эти таблицы Merchant, Buy List и Shop ID. Нажимаем правой кнопкой и появляется такое меню и здесь нажимаем Dump SQL File. Выбираем нужную нам папочку и нажимаем сохранить. Он сохраняет нам вот такие вот файлики с расширением SQL. То есть это SQL-запрос на создание таблиц, необходимых для магазина.

[10:54] Здесь мы, собственно, видим весь список наших магазинов. Удаляем лишнее. Оставляем ID нашего магазина. Здесь прописываем. 501 то есть это будет айди нашего нового магазина а это один ps все мы создали магазин сойди 501 теперь открываем мерчант боялись и удаляем все лишнее и по аналогии вот с этой вот таблицей пишем первое это и темой Это ID и тема, который будет у нас продаваться.

[11:35] Здесь мы можем прописать все, что угодно. Например, 4037. Это coin of love. 8. Это price. То есть цена в ADN. Здесь мы напишем 1 миллион. Здесь Shop ID, это ID нашего магазина, который будет продавать это.

[11:57] То есть мы для вот этого НПС создали вот этот вот 501 магазин. И вот здесь вот нужно написать 501. Дальше идет ордер. Это как будут располагаться все и темы. То есть от нуля и последовательно дальше. Вот так как он у нас будет первый, он у нас будет один.

[12:19] Вот эти вот цифры мы не меняем. Нажимаем сохранить. Здесь мы пишем 501. Здесь пишем тестовый магазин. Сохраняем. Копируем наш байлист. переходим как уже мы делали в консоль ошибок нету все создалось хорошо shop.id копируем переходим все создалось хорошо теперь во-первых перезагрузим html диалог Появилась надпись «Тестовый магазин».

[12:58] И перезагрузим байлист. Теперь при обращении в тестовый магазин мы видим, что монета удачи продается за 1 миллион 300 тысяч аден. Почему 1 миллион 300 тысяч, при том, что мы написали цену в 1 миллион? Дополнительная цена является непосредственно НДС в данной игре.

[13:19] Вот так создаются магазины типа байлист. И, как обещал, в конце расскажу, что же делать, если вы скачали GameShop из интернета, но у вас при заливке SQL-файла выдает ошибку. Эта ошибка появляется потому, что все базы данных, именно синтаксис баз данных у многих серверов разный.

[13:40] Это очень легко проверить. Для этого нам нужно узнать синтаксис вашей таблицы и сравнить его с синтаксисом той самой таблицы, которую заливаете вы. Визуально они могут даже быть похожи. Но разница может быть просто в одну колоночку. Программист одного сервера просто изменил колонку, удалил ее или добавил новую, и поэтому у вас может возникать ошибка.

[14:04] Для этого просто берете и нажимаете «Dump Scale File», заливаете его куда вам хочется. Допустим, вот это есть ваш SQL файл, который заливается в базу данных с ошибками. Из этого файла нам нужен будет только ID NPS. Копируем его и через поиск находим нужного нам NPS, копируем строчку и все.

[14:29] А на этом все. Подписывайтесь на канал, ставьте лайки, не забывайте комментировать и помните, главное в жизни это двигаться к цели, насколько бы недостижимой она вам не казалась.

Дневник Разработчика