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

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

Создание магазина состоит из 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:
Для продажи скила так будет правильно?
<skill id="1">
<ingredient id="4037" count="100" enchant="0"/>
<production id="1418" count="1" enchant="0"/>
</skill>
 
Last edited:
Для продажи скила так будет праквильно?
<skill id="1">
<ingredient id="4037" count="100" enchant="0"/>
<production id="1418" count="1" enchant="0"/>
</item>
Скиллы продавать можно у рыбака (fish merchant или как там)
 
Скиллы продавать можно у рыбака (fish merchant или как там)
Здравствуйте, добавил в xml древо скилов рыбака все скили которые хотел npc 40032, столкнулся с тем что на саб классе не показывает эти скилы для приобретения, только на основном классе
 
Здравствуйте, добавил в xml древо скилов рыбака все скили которые хотел npc 40032, столкнулся с тем что на саб классе не показывает эти скилы для приобретения, только на основном классе
У себя на бета сервере делал, завтра зайду - проверю
 
Здравствуйте, добавил в xml древо скилов рыбака все скили которые хотел npc 40032, столкнулся с тем что на саб классе не показывает эти скилы для приобретения, только на основном классе
У меня все ок и на основе и на сабах
 
Вы у нпс 40032 реализовали? В конфиге NPC что то меняли?
НПС 40032
<npc id="40032" name="Rebirth Master" title=" ">
<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="2444.468" />
<set name="baseHpRate" value="1" />
<set name="baseHpReg" value="7.5" />
<set name="baseINT" value="21" />
<set name="baseMAtk" value="780" />
<set name="baseMAtkSpd" value="500" />
<set name="baseMDef" value="382" />
<set name="baseMEN" value="20" />
<set name="baseMpMax" value="1345.8" />
<set name="baseMpReg" value="2.7" />
<set name="basePAtk" value="1303" />
<set name="basePAtkSpd" value="253" />
<set name="basePDef" value="471" />
<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="30" />
<set name="collision_height" value="23.5"/>
<set name="collision_radius" value="8.0"/>
<set name="level" value="70" />
<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="displayId" value="31582"/>
<set name="type" value="MultiClassMaster" />
<skills>
<skill id="4416" level="14" /> <!--Humans-->
</skills>
<teach_classes>
<class id="0"/>
<class id="1"/>
<class id="2"/>
<class id="3"/>
<class id="4"/>
<class id="5"/>
<class id="6"/>
<class id="7"/>
<class id="8"/>
<class id="9"/>
<class id="10"/>
<class id="11"/>
<class id="12"/>
<class id="13"/>
<class id="14"/>
<class id="15"/>
<class id="16"/>
<class id="17"/>
<class id="18"/>
<class id="19"/>
<class id="20"/>
<class id="21"/>
<class id="22"/>
<class id="23"/>
<class id="24"/>
<class id="25"/>
<class id="26"/>
<class id="27"/>
<class id="28"/>
<class id="29"/>
<class id="30"/>
<class id="31"/>
<class id="32"/>
<class id="33"/>
<class id="34"/>
<class id="35"/>
<class id="36"/>
<class id="37"/>
<class id="38"/>
<class id="39"/>
<class id="40"/>
<class id="41"/>
<class id="42"/>
<class id="43"/>
<class id="44"/>
<class id="45"/>
<class id="46"/>
<class id="47"/>
<class id="48"/>
<class id="49"/>
<class id="50"/>
<class id="51"/>
<class id="52"/>
<class id="53"/>
<class id="54"/>
<class id="55"/>
<class id="56"/>
<class id="57"/>
<class id="88"/>
<class id="89"/>
<class id="90"/>
<class id="91"/>
<class id="92"/>
<class id="93"/>
<class id="94"/>
<class id="95"/>
<class id="96"/>
<class id="97"/>
<class id="98"/>
<class id="99"/>
<class id="100"/>
<class id="101"/>
<class id="102"/>
<class id="103"/>
<class id="104"/>
<class id="105"/>
<class id="106"/>
<class id="107"/>
<class id="108"/>
<class id="109"/>
<class id="110"/>
<class id="111"/>
<class id="112"/>
<class id="113"/>
<class id="114"/>
<class id="115"/>
<class id="116"/>
<class id="117"/>
<class id="118"/>
</teach_classes>
<attributes>
<defence attribute="fire" value="150" />
<defence attribute="water" value="150" />
<defence attribute="wind" value="150" />
<defence attribute="earth" value="150" />
<defence attribute="holy" value="150" />
<defence attribute="unholy" value="150" />
</attributes>
</npc>
Диалог multi_second_class.htm
Code:
Изучение скилов второй профессии

[npc_%objectId%_SkillList|Изучить умения]

[npc_%objectId%_FishingSkillList|Изучить умения рыбака]
Конфиги не скажу, так как не помню
 
Подскажите где можно взять код на вставку и удаление красок, что бы я их вставил в ГМ шоп.
Или же как найти НПС-а по ид , в зборке? (спизжу код у стандартного что краски ставит)
 
Подскажите где можно взять код на вставку и удаление красок, что бы я их вставил в ГМ шоп.
Или же как найти НПС-а по ид , в зборке? (спизжу код у стандартного что краски ставит)
Зайди в игру и подойди к dye-нпс, в систем чате будет указан путь в сборке - там и подсмотри
 
нашел тут недокументированные приколы, оно работает?)
View attachment 4151
View attachment 4152
как видишь работает. Я уже делал пример с плащом. Опять же, формула атрибутов по ИТ, очень плохая идея тыкать его в шмотки
Вот пример
Code:
    <armor id="21583" name="Festival's Cloak - True Black">
        <set name="freightable" value="true"/>
        <set name="crystal_type" value="NONE"/>
        <set name="icon" value="BranchSys2.Icon.7anni_cloack_i00"/>
        <set name="price" value="0"/>
        <set name="type" value="NONE"/>
        <set name="weight" value="220"/>
        <set name="dropable" value="false"/>
        <set name="tradeable" value="false"/>
        <equip>
            <slot id="BACK"/>
        </equip>
        <attributes>
            <attribute element="fire" value="7"/>
            <attribute element="water" value="7"/>
            <attribute element="wind" value="7"/>
            <attribute element="earth" value="7"/>
            <attribute element="holy" value="7"/>
            <attribute element="unholy" value="7"/>
        </attributes>
        <for>
            <add stat="pDef" order="0x10" value="25"/>
            <enchant stat="pDef" order="0x0C" value="0"/>
            <enchant stat="maxHp" order="0x80" value="0"/>
        </for>
    </armor>

Тоже самое можно делать с другими предметами которые можно надеть.
 
Back
Top