Как работать с баффером и делать Премиум баффы

Deazer

Head Developer
Staff member
Data Location:
NPC id по умолчанию - 40010
Диалоги- gameserver\data\html-en\mods\buffer
XML схема с баффами, уровнями, наборами и стоимостью - gameserver\data\buff_templates.xml

Теперь рассмотрим сам buff_templates.xml формат:

Пример:

Code:
<template menuId="200" target="BUFF_PLAYER">
<consume>
<item id="57" amount="200000" />
</consume>
<produce>
<skill id="1068" level="3" />
<skill id="1040" level="3" />
<skill id="1086" level="2" />
<skill id="1204" level="2" />
<skill id="1077" level="3" />
<skill id="1242" level="2" />
<skill id="1268" level="4" />
</produce>
</template>

menuId - ID on which we address a buffer
target - whom buff, BUFF_PLAYER or BUFF_PET
consume - id and quantity of items.
produce - here is stored buff or schemes of buffs.
Example:
Code:
<consume>
<item id="57" amount="200000" /> снимаем 200000 adena
<item id="4037" amount="0" /> для премиума при 0 просто проверяем наличие предмета в инвентаре
</consume>
Если мы хотим снимать предметы от определенного уровня то:
Code:
<consume>
<item id="57" amount="200000" from_level="20"/> Таким образом чар до 20того будет баффатся бесплатно
</consume>
Если мы хотим баффать сет чарам с минимальным уровнем к примеру от 51:
Code:
<template menuId="126" target="BUFF_PLAYER" minLevel="51">
    <consume>
        <item id="57" amount="200000" />
    </consume>
    <produce>
        <skill id="1068" level="3" />
        <skill id="1040" level="3" />
        <skill id="1086" level="2" />
    </produce>
</template>

Так же вы можете использовать несколько предметов в листе из которых будет вбираться первый из существующих в инвентаре - удобно для премиум аккаунтов с разной длительностью.
Пример:
Code:
  <consume anyFirst="true">
  <item id="6673" amount="0" />
  <item id="4037" amount="0" />
  </consume>

Проверка на наличие премиум аккаунта у игрока:
Code:
<template menuId="124" target="BUFF_PLAYER">
    <consume>
        <item id="57" amount="600000" is_premium_required="true"/>
    </consume>
    <produce>
        <skill id="1068" level="3" />
        <skill id="1040" level="3" />
        <skill id="1086" level="2" />
        <skill id="1204" level="2" />
        <skill id="1077" level="3" />
        <skill id="1242" level="2" />
        <skill id="1268" level="4" />
    </produce>
</template>

produce - здесь указываются сами баффы и их уровни
Example:
Code:
<produce>
<skill id="1068" level="1" />
</produce>

Множество баффов

Code:
<produce>
<skill id="1068" level="3" />
<skill id="1040" level="3" />
<skill id="1086" level="2" />
<skill id="1204" level="2" />
<skill id="1077" level="3" />
<skill id="1242" level="2" />
<skill id="1268" level="4" />
</produce>

Пример для добавления в XML и диалога:

2. Кнопка, с которой мы добавляем диалог
<a action="bypass -h scripts_services.Buffer:act ask=200&reply=1">Fighter 1 lvl</a>

Теперь подробно:
ask=200 - Это menuId к Баффу с XML или сету баффов
&reply=1 - на какую страничку будет возврат. В нашем случаи будет возвращено на 1.htm
_____________________________________________________________
<template menuId="200" target="BUFF_PLAYER">
<consume>
<item id="57" amount="200000" />
</consume>
<produce>
<skill id="1068" level="3" />
<skill id="1040" level="3" />
<skill id="1086" level="2" />
<skill id="1204" level="2" />
<skill id="1077" level="3" />
<skill id="1242" level="2" />
<skill id="1268" level="4" />
</produce>
</template>
 
Last edited:
UP! Обновлен баффер - полностью удален из SQL, перенесен в XML.
Структура по формату и виду аналогична !
Подготовьте свои кастомные баффы и т.д. в XML файле перед обновлением.
 
А возможно настройка таким образом,чтобы бафались определенные наборы при наличии в инвентаре предмета,но с тем учетом ,чтобы он не исчезал.
 
Подскажите как увеличить время баффов который дает (ньюби баффер) !?
 
или руками в data/skills или конфигом
# Модификатор времени баффов. Пример: 1024-3600;1025-3600 (Время в секундах)
SkillDurationMod =
 
или руками в data/skills или конфигом
# Модификатор времени баффов. Пример: 1024-3600;1025-3600 (Время в секундах)
SkillDurationMod =
То есть если в конфиге править, то он не будет влиять на баф дающийся игром (играющим к примеру за сапорта) !?
 
по моему там вообще свои ID, так что конечно не будет влиять
 
как сделать так что бы проверяло сначала на премиум затем если премиума нет расходовало итемы?
вот так не работает
Code:
        <consume anyFirst="true">
            <item id="57" amount="1" is_premium_required="true"/>
            <item id="6673" amount="1"/>
        </consume>
 
Вопрос следующего плана: как будет выглядеть строка добавления к диалогу, если мы создали нпц по адресу .../mods/club/40039
Диалог с баффом (прикладываю изображение) находится по адресу .../mods/club/40039-4
При нажатии на [Invigor] никакой реакции, или нужно конкретно добавлять именно в папку /script/
<td align=center><a action="bypass -h scripts_services.Buffer:act ask=99925&reply=4">Invigor</a></td>
 
Вопрос следующего плана: как будет выглядеть строка добавления к диалогу, если мы создали нпц по адресу .../mods/club/40039
Диалог с баффом (прикладываю изображение) находится по адресу .../mods/club/40039-4
При нажатии на [Invigor] никакой реакции, или нужно конкретно добавлять именно в папку /script/
<td align=center><a action="bypass -h scripts_services.Buffer:act ask=99925&reply=4">Invigor</a></td>
Вам нужно настроить шаблон получения эффекта в buff_templates.xml
В вашем случае:

XML:
    <template menuId="99925" target="BUFF_PLAYER"> <!-- ask=99925 -->
        <consume>
            <item id="57" amount="0" />
        </consume>
        <produce>
            <skill id="1032" level="3" /> <!-- Invigor Level 3 -->
        </produce>
    </template>
 
Вам нужно настроить шаблон получения эффекта в buff_templates.xml
В вашем случае:

XML:
    <template menuId="99925" target="BUFF_PLAYER"> <!-- ask=99925 -->
        <consume>
            <item id="57" amount="0" />
        </consume>
        <produce>
            <skill id="1032" level="3" /> <!-- Invigor Level 3 -->
        </produce>
    </template>
В buff_templates.xml я настроил в первую очередь. Ситуация в том, что НПЦ который должен давать бафф находится по адресу /mods/club/40039 . От этого и возникающий вопрос,почему он не дает баффа? Возможно в данной строке нужно заменить что-то "bypass -h scripts_services.Buffer:act ask=99925&reply=4"
В вышеизложенном мануале речь идет о нпц, диалоги которого лежат по адресу gameserver\data\html-en\mods\buffer , в мое же случае gameserver\data\html-ru\mods\club
 
В buff_templates.xml я настроил в первую очередь. Ситуация в том, что НПЦ который должен давать бафф находится по адресу /mods/club/40039 . От этого и возникающий вопрос,почему он не дает баффа? Возможно в данной строке нужно заменить что-то "bypass -h scripts_services.Buffer:act ask=99925&reply=4"
В вышеизложенном мануале речь идет о нпц, диалоги которого лежат по адресу gameserver\data\html-en\mods\buffer , в мое же случае gameserver\data\html-ru\mods\club
Для начала, чтоб он вообще реагировал на данный байпас нужен тип нпц: <set name="type" value="NpcBuffer" />
У вас такой?
 
Для начала, чтоб он вообще реагировал на данный байпас нужен тип нпц: <set name="type" value="NpcBuffer" />
У вас такой?
Спасибо, разобрался. Проблема была именно в <set name="type" value="NpcBuffer" /> !
 
Code:
<template menuId="126" target="BUFF_PLAYER" minLevel="51">
В данном реализовано давать бафф с 51 лвла.
Есть ли реализация до какого лвла выдавать бафф?
Пробовал подставить maxLevel="51" - ошибка
 
Code:
<template menuId="126" target="BUFF_PLAYER" minLevel="51">
В данном реализовано давать бафф с 51 лвла.
Есть ли реализация до какого лвла выдавать бафф?
Пробовал подставить maxLevel="51" - ошибка
<item id="57" amount="200000" from_level="20"/> Таким образом чар до 20того будет баффатся бесплатно
 
Back
Top