Как создать ГМшоп

Deazer

Разработчик
Staff member
#1
В данной статье я попытаюсь подробно рассказать Вам о том, как сделать магазин (ГМ-шоп) для своего сервера.

Создание магазина состоит из 3-х частей, а именно:

1 Часть – XML часть (Непосредственно сами мультиселлы)
2 Часть – HTML часть (Диалог НПЦ)
3 Часть – XML (Реализация самого НПЦ)

Для начала нам нужно зайти в папку Multisell, которая находится в папке data (data находится в папке gameserver). В данной папке создаем текстовый документ (Блокнот) и вставляем в него данный код:


XML:
<?xml version='1.0' encoding='utf-8'?>
<list>

   <item id="1">
   <ingredient id="57" count="12300000" enchant="0"/>
   <production id="6680" count="1" enchant="0"/>
   </item>

   <item id="2">
   <ingredient id="57" count="12300000" enchant="0"/>
   <production id="6681" count="1" enchant="0"/>
   </item>

   <item id="3">
   <ingredient id="57" count="12300000" enchant="0"/>
   <production id="6682" count="1" enchant="0"/>
   </item>
          
</list>
Это только для примера. Данный код Вы должны переделать для себя, сейчас я постараюсь рассказать что к чему.

?xml version=»1.0″ encoding=»utf-8″? — данная строка обязательно должна быть вверху каждого XML файла
item id=»1″ — ID предмета
ingredient id=»12300000″ – это то за что будет покупать игрок предметы, в нашем случаи это Адена (ID Adena – 57)
count=»123″ – цена покупаемого предмета, так как у нас Адена, игроку придётся отдать за покупку предмета 123 Адены
enchant=»0″ – Заточка предмета
production id=»6680″ – предмет который получит игрок, в нашем случаи это Draconic Тело
count=»1″ – количество получаемого предмета
enchant=»0″ – Заточка предмета

Переделываем под себя и сохраняем данный текстовый документ. Переименовываем файл в название которого еще нет в папке Multisell, например 13333, переименовываем файл в 13333.xml. На этом Xml часть наконец-то заканчивается.

Теперь начнем рассматривать 2 часть – HTML

Заходим в папку html она находится в GameServer ->data -> html -> находим нужный нам диалог или добавляем свой самостоятельно.
Теперь о том как прикреплять свой мультиселл к диалогу НПЦ, для примера берем наш созданный мультиселл 13333 который мы уже создали выше
Можно сделать упрощенной строкой:
[npc_%objectId%_multisell 13333|Просмотреть список]
Можно сделать в HTML виде:
<a action="bypass -h npc_%objectId%_multisell 13333">Просмотреть список</a>

Как вы видите мы указываем в формате нужный нам id npc_%objectId%_multisell 13333

Теперь начнем рассматривать 3 часть – XML Npc

Местонахождение GameServer ->data -> npc -> 40000-40099.xml

Берем для примера готового НПЦ уже созданного c id 40013:

XML:
<npc id="40013" name="Item Mall" title="Merchant">
        <set name="aggroRange" value="0" />
        <set name="ai_type" value="CharacterAI" />
        <set name="baseAtkRange" value="40" />
        <set name="baseCON" value="43" />
        <set name="baseCritRate" value="40" />
        <set name="baseDEX" value="30" />
        <set name="baseHpMax" value="3290.113" />
        <set name="baseHpRate" value="1" />
        <set name="baseHpReg" value="8.5" />
        <set name="baseINT" value="21" />
        <set name="baseMAtk" value="1242" />
        <set name="baseMAtkSpd" value="333" />
        <set name="baseMDef" value="469" />
        <set name="baseMEN" value="20" />
        <set name="baseMpMax" value="1674.8" />
        <set name="baseMpReg" value="3" />
        <set name="basePAtk" value="1952" />
        <set name="basePAtkSpd" value="278" />
        <set name="basePDef" value="577" />
        <set name="baseRunSpd" value="120" />
        <set name="baseSTR" value="40" />
        <set name="baseShldDef" value="0" />
        <set name="baseShldRate" value="0" />
        <set name="baseWIT" value="20" />
        <set name="baseWalkSpd" value="75" />
        <set name="collision_height" value="23.0" />
        <set name="collision_radius" value="8.0" />
        <set name="level" value="80" />
        <set name="rewardExp" value="0" />
        <set name="rewardRp" value="0" />
        <set name="rewardSp" value="0" />
        <set name="shots" value="NONE" />
        <set name="texture" value="" />
        <set name="type" value="Merchant" /> <!-- Тип НПЦ обозначающий его принадлежность к торговцам -->
        <set name="displayId" value="13298"/> <!-- Внешний вид который будет использовать НПЦ -->
        <set name="htm_root" value="mods/gmshop/" /> <!-- Откуда будет брать НПЦ свой диалог-->
        <attributes>
            <defence attribute="fire" value="20" />
            <defence attribute="water" value="20" />
            <defence attribute="wind" value="20" />
            <defence attribute="earth" value="20" />
            <defence attribute="holy" value="20" />
            <defence attribute="unholy" value="20" />
        </attributes>
    </npc>
 
Last edited:

lmdevil30

Новичок
#2
Добрый вечер! Не могу решить одну проблему помогите!
Вот мультисел в ГМшопе
Не могу обменять точенный сет на +6 или любая другая заточка. Пишет недостаточно предметов. и не отображает заточку как видите на скрине.
Screenshot_3.png
XML:
  <config showall="true" notax="false" ignoreprice="false" keepenchanted="true" />
  <item id="1">
    <ingredient id="6373" count="1" enchant="0"/>
    <ingredient id="6374" count="1" enchant="0"/>
    <ingredient id="6378" count="1" enchant="0"/>
    <ingredient id="6375" count="1" enchant="0"/>
    <ingredient id="6376" count="1" enchant="0"/>
    <ingredient id="4037" count="25" enchant="0"/>
    <production id="9416" count="1" enchant="0"/>
    <production id="9421" count="1" enchant="0"/>
    <production id="9422" count="1" enchant="0"/>
    <production id="9423" count="1" enchant="0"/>
    <production id="9424" count="1" enchant="0"/>
  </item>
Но если выставить параметр <config showall="false" у меня черти что показывает в гмшопе, но за то могу обменять броню +6 на +6 сет.
Screenshot_4.png
 

lmdevil30

Новичок
#6
Он покажет все совпадающие элементы для трейда
А можно ли как-то подправить это в конфигах или еще где нибудь, что бы при значение showall="true" передавалась заточка брони?
Потому что такое отображение, это полный бред. Мне надо показать человеку весь товар в мультиселе а не то что ему доступно.
 

OurLastnight

Пользователь
#7
А можно ли как-то подправить это в конфигах или еще где нибудь, что бы при значение showall="true" передавалась заточка брони?
Потому что такое отображение, это полный бред. Мне надо показать человеку весь товар в мультиселе а не то что ему доступно.
Это 2 разных конфига и их индивидуально нужно настраивать.
 

Deazer

Разработчик
Staff member
#8
А можно ли как-то подправить это в конфигах или еще где нибудь, что бы при значение showall="true" передавалась заточка брони?
Потому что такое отображение, это полный бред. Мне надо показать человеку весь товар в мультиселе а не то что ему доступно.
Это недоступно при дополнение заточкой в обмене
 
Top